From a1d4537ba21dbce42331a9a335690cb9c6a572b0 Mon Sep 17 00:00:00 2001
From: Brian Weaver <weaver.299@osu.edu>
Date: Tue, 24 Nov 2020 11:39:26 -0500
Subject: [PATCH] Composer package/plugin updates for composer2 (details below)

- update drush to 9.7.2
- update cweagans/composer-patches ^1.7
- oomphinc/composer-installers-extender ^2.0
- update composer/installers ^1.9
---
 composer.json                                 |    7 +-
 composer.lock                                 |  480 ++-
 .../drupal-code-generator/composer.json       |    2 +-
 .../src/ApplicationFactory.php                |    7 +-
 .../src/Command/Drupal_7/Hook.php             |    2 +-
 .../src/Command/Drupal_8/Hook.php             |    2 +-
 .../src/Command/Drupal_8/PhpStormMetadata.php |   72 +
 .../src/Command/Drupal_8/Project.php          |  236 +-
 .../Drupal_8/Service/EventSubscriber.php      |   10 +-
 .../Command/Drupal_8/Service/Middleware.php   |   12 +-
 .../Drupal_8/Service/RouteSubscriber.php      |   12 +-
 .../src/Helper/Renderer.php                   |    8 +-
 .../drupal-code-generator/src/bootstrap.php   |   38 +-
 .../templates/d8/_field/type.twig             |    2 +-
 .../drush/Commands/PolicyCommands.php.twig    |    4 +-
 .../d8/_project/drush/drush.yml.twig          |    3 -
 .../_project/drush/sites/self.site.yml.twig   |    2 +-
 .../templates/d8/_project/phpunit.xml.twig    |   45 +
 .../composer/create_required_files.php.twig   |   58 -
 .../d8/_project/scripts/sync-site.sh.twig     |   17 +-
 .../d8/_project/tests/behat/behat.yml.twig    |   42 -
 .../behat/bootstrap/BaseContext.php.twig      |   14 -
 .../behat/bootstrap/ExampleContext.php.twig   |    8 -
 .../features/example/user_forms.feature.twig  |   11 -
 .../_project/tests/behat/local.behat.yml.twig |   12 -
 .../_project/tests/src/HomePageTest.php.twig  |   20 +
 .../configuration-entity/model.info.yml.twig  |    1 +
 .../module/content-entity/model.info.yml.twig |    1 +
 .../src/Entity/Example.php.twig               |    4 +-
 .../templates/d8/phpstorm-meta.twig           |   81 +
 .../templates/d8/plugin/_ckeditor/dialog.twig |    7 +-
 .../templates/d8/plugin/_ckeditor/plugin.twig |    3 +-
 .../templates/d8/plugin/rest-resource.twig    |   48 +-
 .../templates/d8/service/logger.twig          |    6 +-
 .../templates/d8/test/browser.twig            |    5 +
 .../templates/d8/test/webdriver.twig          |    5 +
 .../templates/d8/yml/module-info.twig         |    1 +
 .../templates/d8/yml/theme-info.twig          |    1 +
 vendor/composer/autoload_classmap.php         |   39 +-
 vendor/composer/autoload_psr4.php             |    2 -
 vendor/composer/autoload_static.php           |   49 +-
 vendor/composer/installed.json                |  520 ++-
 .../.scenarios.lock/finder5/.gitignore        |    1 +
 .../.scenarios.lock/finder5/composer.json     |   62 +
 .../.scenarios.lock/finder5/composer.lock     | 3037 ++++++++++++++
 .../annotated-command/.scenarios.lock/install |   14 +-
 .../.scenarios.lock/phpunit4/composer.json    |    4 +-
 .../.scenarios.lock/phpunit4/composer.lock    |  212 +-
 .../.scenarios.lock/symfony2/composer.json    |    4 +-
 .../.scenarios.lock/symfony4/composer.json    |    4 +-
 .../.scenarios.lock/symfony4/composer.lock    | 1023 +++--
 .../annotated-command/CHANGELOG.md            |    4 +
 .../consolidation/annotated-command/LICENSE   |   16 +-
 .../consolidation/annotated-command/README.md |    2 +-
 .../annotated-command/composer.json           |   14 +-
 .../annotated-command/composer.lock           |  507 ++-
 .../.scenarios.lock/finder5/.gitignore        |    1 +
 .../.scenarios.lock/finder5/composer.json     |   66 +
 .../.scenarios.lock/finder5/composer.lock     | 2938 ++++++++++++++
 .../output-formatters/.scenarios.lock/install |   14 +-
 .../.scenarios.lock/symfony2/composer.json    |    2 +-
 .../.scenarios.lock/symfony3/composer.lock    |  359 +-
 .../.scenarios.lock/symfony4/composer.json    |    2 +-
 .../.scenarios.lock/symfony4/composer.lock    | 1026 +++--
 .../output-formatters/CHANGELOG.md            |    4 +
 .../consolidation/output-formatters/LICENSE   |   12 +-
 .../output-formatters/composer.json           |   12 +-
 .../output-formatters/composer.lock           |  361 +-
 .../robo/.scenarios.lock/finder5/.gitignore   |    1 +
 .../.scenarios.lock/finder5/composer.json     |   87 +
 .../.scenarios.lock/finder5/composer.lock     | 3588 +++++++++++++++++
 .../robo/.scenarios.lock/install              |   14 +-
 .../.scenarios.lock/symfony2/composer.json    |   38 +-
 .../.scenarios.lock/symfony4/composer.json    |   38 +-
 .../.scenarios.lock/symfony4/composer.lock    | 1999 ++++-----
 vendor/consolidation/robo/CHANGELOG.md        |   36 +-
 vendor/consolidation/robo/CONTRIBUTING.md     |    4 +
 vendor/consolidation/robo/LICENSE             |   30 +-
 vendor/consolidation/robo/README.md           |   26 +-
 vendor/consolidation/robo/RoboFile.php        |   17 +-
 vendor/consolidation/robo/codeception.yml     |    2 +-
 vendor/consolidation/robo/composer.json       |   53 +-
 vendor/consolidation/robo/composer.lock       | 1796 +++------
 .../robo/{phpunit.xml => phpunit.xml.dist}    |    9 +
 vendor/consolidation/robo/src/Application.php |    6 +-
 .../ClassDiscoveryInterface.php               |    4 +-
 .../RelativeNamespaceDiscovery.php            |   20 +-
 .../robo/src/Collection/CallableTask.php      |    6 +-
 .../robo/src/Collection/Collection.php        |   67 +-
 .../robo/src/Collection/CollectionBuilder.php |  107 +-
 .../src/Collection/CollectionInterface.php    |   37 +-
 .../src/Collection/CollectionProcessHook.php  |    3 +-
 .../robo/src/Collection/CompletionWrapper.php |    2 +-
 .../robo/src/Collection/Element.php           |   14 +-
 .../Collection/NestedCollectionInterface.php  |    1 +
 .../robo/src/Collection/TaskForEach.php       |    5 +-
 .../robo/src/Collection/Temporary.php         |    6 +
 .../robo/src/Collection/loadTasks.php         |    1 +
 .../robo/src/Common/CommandArguments.php      |    9 +-
 .../robo/src/Common/CommandReceiver.php       |    1 +
 .../robo/src/Common/ConfigAwareTrait.php      |    8 +-
 .../robo/src/Common/DynamicParams.php         |    3 +-
 .../robo/src/Common/ExecCommand.php           |    4 +
 .../robo/src/Common/ExecOneCommand.php        |    1 +
 .../robo/src/Common/ExecTrait.php             |   74 +-
 vendor/consolidation/robo/src/Common/IO.php   |   10 +-
 .../robo/src/Common/InflectionTrait.php       |    1 +
 .../robo/src/Common/OutputAdapter.php         |   10 +
 .../robo/src/Common/ProcessExecutor.php       |   11 +-
 .../robo/src/Common/ProcessUtils.php          |   14 +-
 .../robo/src/Common/ProgressIndicator.php     |    1 +
 .../Common/ProgressIndicatorAwareTrait.php    |    6 +-
 .../src/Common/ResourceExistenceChecker.php   |   13 +-
 .../consolidation/robo/src/Common/TaskIO.php  |    8 +-
 .../robo/src/Common/TimeKeeper.php            |    8 +-
 .../consolidation/robo/src/Common/Timer.php   |    1 +
 .../src/Common/VerbosityThresholdTrait.php    |   30 +-
 vendor/consolidation/robo/src/Config.php      |    1 +
 .../consolidation/robo/src/Config/Config.php  |    5 +
 .../GlobalOptionDefaultValuesInterface.php    |    1 +
 .../robo/src/Contract/CommandInterface.php    |    1 +
 .../robo/src/Contract/CompletionInterface.php |    1 +
 .../robo/src/Contract/IOAwareInterface.php    |    2 +-
 .../robo/src/Contract/InflectionInterface.php |    1 +
 .../src/Contract/OutputAdapterInterface.php   |   10 +
 .../robo/src/Contract/PrintedInterface.php    |    1 +
 .../ProgressIndicatorAwareInterface.php       |    1 +
 .../robo/src/Contract/RollbackInterface.php   |    1 +
 .../robo/src/Contract/SimulatedInterface.php  |    1 +
 .../robo/src/Contract/TaskInterface.php       |    1 +
 .../Contract/VerbosityThresholdInterface.php  |   30 +
 .../src/Contract/WrappedTaskInterface.php     |    1 +
 .../src/Exception/AbortTasksException.php     |    1 +
 .../robo/src/Exception/TaskException.php      |    8 +
 .../robo/src/Exception/TaskExitException.php  |    9 +
 .../robo/src/GlobalOptionsEventListener.php   |   19 +-
 .../consolidation/robo/src/LoadAllTasks.php   |    1 +
 .../robo/src/Log/ResultPrinter.php            |    4 +-
 .../robo/src/Log/RoboLogLevel.php             |    1 +
 .../robo/src/Log/RoboLogStyle.php             |    1 +
 .../consolidation/robo/src/Log/RoboLogger.php |    2 +-
 vendor/consolidation/robo/src/Result.php      |   18 +-
 vendor/consolidation/robo/src/ResultData.php  |    5 +-
 vendor/consolidation/robo/src/Robo.php        |   28 +-
 vendor/consolidation/robo/src/Runner.php      |   55 +-
 .../consolidation/robo/src/State/Consumer.php |    3 +-
 vendor/consolidation/robo/src/State/Data.php  |   13 +-
 .../robo/src/State/StateAwareInterface.php    |   12 +-
 .../robo/src/State/StateAwareTrait.php        |   21 +-
 .../robo/src/Symfony/SymfonyStyleInjector.php |   16 +
 .../robo/src/Task/ApiGen/ApiGen.php           |  116 +-
 .../robo/src/Task/ApiGen/loadTasks.php        |    3 +-
 .../robo/src/Task/Archive/Extract.php         |    2 +-
 .../robo/src/Task/Archive/Pack.php            |   39 +-
 .../robo/src/Task/Archive/loadTasks.php       |    9 +-
 .../robo/src/Task/Assets/ImageMinify.php      |   41 +-
 .../robo/src/Task/Assets/Less.php             |    1 +
 .../robo/src/Task/Assets/Minify.php           |   12 +-
 .../robo/src/Task/Assets/Scss.php             |   29 +-
 .../robo/src/Task/Assets/loadTasks.php        |   15 +-
 .../consolidation/robo/src/Task/Base/Exec.php |    6 +-
 .../robo/src/Task/Base/ExecStack.php          |    1 +
 .../robo/src/Task/Base/ParallelExec.php       |    3 +-
 .../robo/src/Task/Base/SymfonyCommand.php     |    1 +
 .../robo/src/Task/Base/Watch.php              |   19 +
 .../robo/src/Task/Base/loadShortcuts.php      |    1 +
 .../robo/src/Task/Base/loadTasks.php          |   14 +-
 .../consolidation/robo/src/Task/BaseTask.php  |    6 +-
 .../robo/src/Task/Bower/Base.php              |    8 +
 .../robo/src/Task/Bower/Install.php           |    1 +
 .../robo/src/Task/Bower/Update.php            |    1 +
 .../robo/src/Task/Bower/loadTasks.php         |    5 +-
 .../robo/src/Task/CommandStack.php            |    7 +-
 .../robo/src/Task/Composer/Base.php           |   24 +-
 .../robo/src/Task/Composer/Config.php         |   20 +-
 .../robo/src/Task/Composer/CreateProject.php  |   35 +
 .../robo/src/Task/Composer/DumpAutoload.php   |    3 +
 .../robo/src/Task/Composer/Init.php           |   21 +
 .../robo/src/Task/Composer/Install.php        |    1 +
 .../robo/src/Task/Composer/Remove.php         |   11 +
 .../src/Task/Composer/RequireDependency.php   |    5 +
 .../robo/src/Task/Composer/Update.php         |    1 +
 .../robo/src/Task/Composer/Validate.php       |   11 +
 .../robo/src/Task/Composer/loadTasks.php      |   19 +-
 .../robo/src/Task/Development/Changelog.php   |    5 +-
 .../Task/Development/GenerateMarkdownDoc.php  |    3 +-
 .../src/Task/Development/GenerateTask.php     |    1 +
 .../robo/src/Task/Development/GitHub.php      |    5 +-
 .../src/Task/Development/GitHubRelease.php    |    1 +
 .../robo/src/Task/Development/OpenBrowser.php |    3 +-
 .../robo/src/Task/Development/PackPhar.php    |    3 +-
 .../robo/src/Task/Development/PhpServer.php   |    1 +
 .../robo/src/Task/Development/SemVer.php      |   23 +-
 .../robo/src/Task/Development/loadTasks.php   |   17 +-
 .../robo/src/Task/Docker/Base.php             |    1 +
 .../robo/src/Task/Docker/Build.php            |    1 +
 .../robo/src/Task/Docker/Commit.php           |    3 +-
 .../robo/src/Task/Docker/Exec.php             |    5 +-
 .../robo/src/Task/Docker/Pull.php             |    1 +
 .../robo/src/Task/Docker/Remove.php           |    1 +
 .../robo/src/Task/Docker/Result.php           |    1 +
 .../robo/src/Task/Docker/Run.php              |    6 +-
 .../robo/src/Task/Docker/Start.php            |    1 +
 .../robo/src/Task/Docker/Stop.php             |    1 +
 .../robo/src/Task/Docker/loadTasks.php        |   17 +-
 .../robo/src/Task/File/Concat.php             |    5 +-
 .../robo/src/Task/File/Replace.php            |    1 +
 .../robo/src/Task/File/Write.php              |   27 +-
 .../robo/src/Task/File/loadTasks.php          |    9 +-
 .../robo/src/Task/Filesystem/BaseDir.php      |    1 +
 .../robo/src/Task/Filesystem/CleanDir.php     |    1 +
 .../robo/src/Task/Filesystem/CopyDir.php      |   13 +
 .../robo/src/Task/Filesystem/DeleteDir.php    |    1 +
 .../src/Task/Filesystem/FilesystemStack.php   |    1 +
 .../robo/src/Task/Filesystem/FlattenDir.php   |   10 +-
 .../robo/src/Task/Filesystem/MirrorDir.php    |    1 +
 .../src/Task/Filesystem/loadShortcuts.php     |    1 +
 .../robo/src/Task/Filesystem/loadTasks.php    |   17 +-
 .../consolidation/robo/src/Task/Gulp/Run.php  |    1 +
 .../robo/src/Task/Gulp/loadTasks.php          |    3 +-
 .../consolidation/robo/src/Task/Npm/Base.php  |    1 +
 .../robo/src/Task/Npm/Install.php             |    3 +-
 .../robo/src/Task/Npm/Update.php              |    3 +-
 .../robo/src/Task/Npm/loadTasks.php           |    5 +-
 .../robo/src/Task/Remote/Rsync.php            |    3 +
 .../robo/src/Task/Remote/loadTasks.php        |    5 +-
 .../consolidation/robo/src/Task/Simulator.php |    7 +-
 .../robo/src/Task/StackBasedTask.php          |    5 +-
 .../robo/src/Task/Testing/Atoum.php           |   10 +-
 .../robo/src/Task/Testing/Behat.php           |    8 +-
 .../robo/src/Task/Testing/Codecept.php        |    3 +-
 .../robo/src/Task/Testing/PHPUnit.php         |   14 +-
 .../robo/src/Task/Testing/Phpspec.php         |   41 +-
 .../robo/src/Task/Testing/loadTasks.php       |   17 +-
 .../robo/src/Task/Vcs/GitStack.php            |    2 +
 .../robo/src/Task/Vcs/HgStack.php             |    1 +
 .../robo/src/Task/Vcs/SvnStack.php            |    5 +-
 .../robo/src/Task/Vcs/loadShortcuts.php       |    1 +
 .../robo/src/Task/Vcs/loadTasks.php           |    7 +-
 .../consolidation/robo/src/TaskAccessor.php   |    1 +
 vendor/consolidation/robo/src/TaskInfo.php    |    1 +
 vendor/consolidation/robo/src/Tasks.php       |    1 +
 vendor/consolidation/self-update/VERSION      |    2 +-
 .../consolidation/self-update/composer.json   |    9 +-
 .../consolidation/self-update/composer.lock   |  307 +-
 .../site-alias/.scenarios.lock/install        |   14 +-
 .../.scenarios.lock/phpunit5/composer.json    |    7 +-
 .../.scenarios.lock/phpunit5/composer.lock    |  513 ++-
 vendor/consolidation/site-alias/.travis.yml   |    6 +-
 vendor/consolidation/site-alias/CHANGELOG.md  |    5 +
 vendor/consolidation/site-alias/LICENSE       |    2 +-
 vendor/consolidation/site-alias/README.md     |    2 +-
 vendor/consolidation/site-alias/VERSION       |    2 +-
 vendor/consolidation/site-alias/appveyor.yml  |    6 +-
 vendor/consolidation/site-alias/composer.json |   11 +-
 vendor/consolidation/site-alias/composer.lock | 1438 ++++---
 .../consolidation/site-process/CHANGELOG.md   |    8 +
 vendor/consolidation/site-process/README.md   |    2 +-
 vendor/consolidation/site-process/VERSION     |    2 +-
 .../consolidation/site-process/appveyor.yml   |    7 +-
 .../site-process/src/ProcessBase.php          |   10 +-
 .../site-process/src/SiteProcess.php          |   21 +
 .../site-process/tests/SiteProcessTest.php    |   13 +-
 vendor/cweagans/composer-patches/README.md    |   19 +-
 .../cweagans/composer-patches/composer.json   |    4 +-
 .../cweagans/composer-patches/composer.lock   | 1360 ++++++-
 .../cweagans/composer-patches/src/Patches.php |   36 +-
 vendor/dnoegel/php-xdg-base-dir/.gitignore    |    1 -
 vendor/dnoegel/php-xdg-base-dir/README.md     |   17 +-
 vendor/dnoegel/php-xdg-base-dir/composer.json |    4 +-
 .../dnoegel/php-xdg-base-dir/phpunit.xml.dist |   24 -
 vendor/dnoegel/php-xdg-base-dir/src/Xdg.php   |   21 +-
 .../php-xdg-base-dir/tests/XdgTest.php        |  116 -
 .../drush/.scenarios.lock/php5/composer.json  |    2 +-
 .../drush/.scenarios.lock/php5/composer.lock  |  185 +-
 vendor/drush/drush/.travis.yml                |    1 +
 vendor/drush/drush/composer.json              |    2 +-
 vendor/drush/drush/composer.lock              |   14 +-
 vendor/drush/drush/drush.info                 |    2 +-
 .../Commands/SiteAliasAlterCommands.php       |   13 +
 .../drush/examples/Commands/art/sandwich.txt  |   48 +-
 vendor/drush/drush/examples/example.drush.yml |    8 +-
 vendor/drush/drush/examples/example.site.yml  |   35 +-
 vendor/drush/drush/includes/drush.inc         |    2 +-
 vendor/drush/drush/src/Boot/DrupalBoot8.php   |    2 +-
 .../drush/src/Commands/core/EditCommands.php  |    2 +-
 .../drush/src/Commands/core/LoginCommands.php |   19 +-
 .../drush/src/Commands/core/RsyncCommands.php |    7 +-
 .../src/Commands/core/SiteInstallCommands.php |    2 +-
 .../drush/src/Commands/core/SshCommands.php   |    8 +-
 .../src/Commands/sql/SqlSyncCommands.php      |    4 +-
 .../Drupal/Commands/core/DrupalCommands.php   |    5 +-
 .../Drupal/Commands/core/QueueCommands.php    |    6 +-
 .../drush/src/Runtime/ShutdownHandler.php     |    2 +-
 .../php-console-color/.gitignore              |    3 -
 .../php-console-color/.travis.yml             |   24 -
 .../jakub-onderka/php-console-color/LICENSE   |   27 -
 .../jakub-onderka/php-console-color/README.md |   10 -
 .../jakub-onderka/php-console-color/build.xml |   93 -
 .../php-console-color/composer.json           |   23 -
 .../php-console-color/example.php             |   38 -
 .../php-console-color/phpunit.xml             |   16 -
 .../php-console-color/src/ConsoleColor.php    |  287 --
 .../src/InvalidStyleException.php             |   10 -
 .../tests/ConsoleColorTest.php                |  184 -
 .../php-console-highlighter/.gitignore        |    4 -
 .../php-console-highlighter/.travis.yml       |   22 -
 .../php-console-highlighter/README.md         |   42 -
 .../php-console-highlighter/build.xml         |   93 -
 .../php-console-highlighter/composer.json     |   28 -
 .../examples/snippet.php                      |   10 -
 .../examples/whole_file.php                   |   10 -
 .../examples/whole_file_line_numbers.php      |   10 -
 .../php-console-highlighter/phpunit.xml       |   15 -
 .../src/Highlighter.php                       |  263 --
 .../tests/HigligterTest.php                   |  274 --
 vendor/nikic/php-parser/.gitignore            |    4 -
 vendor/nikic/php-parser/.travis.yml           |   31 -
 vendor/nikic/php-parser/CHANGELOG.md          |  659 ---
 vendor/nikic/php-parser/LICENSE               |   44 +-
 vendor/nikic/php-parser/README.md             |    4 +-
 vendor/nikic/php-parser/UPGRADE-1.0.md        |  121 -
 vendor/nikic/php-parser/UPGRADE-2.0.md        |   74 -
 vendor/nikic/php-parser/UPGRADE-3.0.md        |  160 -
 vendor/nikic/php-parser/UPGRADE-4.0.md        |   77 -
 vendor/nikic/php-parser/composer.json         |    5 +-
 .../php-parser/doc/0_Introduction.markdown    |   80 -
 .../doc/2_Usage_of_basic_components.markdown  |  516 ---
 vendor/nikic/php-parser/doc/README.md         |   46 -
 .../doc/component/AST_builders.markdown       |  138 -
 .../Constant_expression_evaluation.markdown   |  115 -
 .../doc/component/Error_handling.markdown     |   75 -
 .../php-parser/doc/component/FAQ.markdown     |   68 -
 .../component/JSON_representation.markdown    |  131 -
 .../php-parser/doc/component/Lexer.markdown   |  159 -
 .../doc/component/Name_resolution.markdown    |   87 -
 .../doc/component/Performance.markdown        |   65 -
 .../doc/component/Pretty_printing.markdown    |   96 -
 .../doc/component/Walking_the_AST.markdown    |  337 --
 vendor/nikic/php-parser/grammar/README.md     |   10 +-
 vendor/nikic/php-parser/grammar/php5.y        |   38 +-
 vendor/nikic/php-parser/grammar/php7.y        |  332 +-
 .../php-parser/grammar/rebuildParsers.php     |   48 +-
 vendor/nikic/php-parser/grammar/tokens.y      |   15 +-
 .../lib/PhpParser/Builder/Param.php           |    6 +-
 .../lib/PhpParser/BuilderHelpers.php          |   22 +-
 .../php-parser/lib/PhpParser/Comment.php      |   98 +-
 .../Internal/PrintableNewAnonClassNode.php    |   10 +-
 .../lib/PhpParser/Internal/TokenStream.php    |   31 +-
 .../php-parser/lib/PhpParser/JsonDecoder.php  |    4 +-
 .../nikic/php-parser/lib/PhpParser/Lexer.php  |  217 +-
 .../lib/PhpParser/Lexer/Emulative.php         |  178 +-
 .../Lexer/TokenEmulator/AttributeEmulator.php |   56 +
 .../CoaleseEqualTokenEmulator.php             |   29 +-
 .../FlexibleDocStringEmulator.php             |   76 +
 .../Lexer/TokenEmulator/FnTokenEmulator.php   |   59 +-
 .../Lexer/TokenEmulator/KeywordEmulator.php   |   60 +
 .../TokenEmulator/MatchTokenEmulator.php      |   23 +
 .../TokenEmulator/NullsafeTokenEmulator.php   |   67 +
 .../NumericLiteralSeparatorEmulator.php       |  105 +
 .../Lexer/TokenEmulator/ReverseEmulator.php   |   36 +
 .../Lexer/TokenEmulator/TokenEmulator.php     |   25 +
 .../TokenEmulator/TokenEmulatorInterface.php  |   17 -
 .../nikic/php-parser/lib/PhpParser/Node.php   |    2 -
 .../php-parser/lib/PhpParser/Node/Arg.php     |   11 +-
 .../lib/PhpParser/Node/Attribute.php          |   34 +
 .../lib/PhpParser/Node/AttributeGroup.php     |   29 +
 .../php-parser/lib/PhpParser/Node/Const_.php  |    2 +-
 .../lib/PhpParser/Node/Expr/Array_.php        |    4 +-
 .../lib/PhpParser/Node/Expr/ArrowFunction.php |   12 +-
 .../lib/PhpParser/Node/Expr/Closure.php       |   14 +-
 .../lib/PhpParser/Node/Expr/Match_.php        |   31 +
 .../Node/Expr/NullsafeMethodCall.php          |   40 +
 .../Node/Expr/NullsafePropertyFetch.php       |   35 +
 .../lib/PhpParser/Node/Expr/Throw_.php        |   30 +
 .../lib/PhpParser/Node/FunctionLike.php       |   13 +-
 .../lib/PhpParser/Node/MatchArm.php           |   31 +
 .../php-parser/lib/PhpParser/Node/Name.php    |    2 +-
 .../php-parser/lib/PhpParser/Node/Param.php   |   29 +-
 .../lib/PhpParser/Node/Scalar/DNumber.php     |    2 +
 .../lib/PhpParser/Node/Scalar/LNumber.php     |    2 +
 .../lib/PhpParser/Node/Scalar/String_.php     |    4 +-
 .../lib/PhpParser/Node/Stmt/Catch_.php        |   14 +-
 .../lib/PhpParser/Node/Stmt/ClassConst.php    |   21 +-
 .../lib/PhpParser/Node/Stmt/ClassLike.php     |   61 +
 .../lib/PhpParser/Node/Stmt/ClassMethod.php   |   16 +-
 .../lib/PhpParser/Node/Stmt/Class_.php        |   14 +-
 .../lib/PhpParser/Node/Stmt/Function_.php     |   14 +-
 .../lib/PhpParser/Node/Stmt/Interface_.php    |   10 +-
 .../lib/PhpParser/Node/Stmt/Property.php      |   19 +-
 .../lib/PhpParser/Node/Stmt/Throw_.php        |    2 +-
 .../lib/PhpParser/Node/Stmt/Trait_.php        |    8 +-
 .../lib/PhpParser/Node/Stmt/TryCatch.php      |    4 +-
 .../lib/PhpParser/Node/UnionType.php          |   30 +
 .../php-parser/lib/PhpParser/NodeAbstract.php |   33 +-
 .../PhpParser/NodeVisitor/NameResolver.php    |   31 +-
 .../NodeVisitor/NodeConnectingVisitor.php     |   52 +
 .../NodeVisitor/ParentConnectingVisitor.php   |   41 +
 .../php-parser/lib/PhpParser/Parser/Php5.php  | 1461 ++++---
 .../php-parser/lib/PhpParser/Parser/Php7.php  | 2381 ++++++-----
 .../lib/PhpParser/Parser/Tokens.php           |  228 +-
 .../lib/PhpParser/ParserAbstract.php          |   42 +-
 .../lib/PhpParser/PrettyPrinter/Standard.php  |  123 +-
 .../lib/PhpParser/PrettyPrinterAbstract.php   |  120 +-
 vendor/nikic/php-parser/phpunit.xml.dist      |   20 -
 .../test/PhpParser/Builder/ClassTest.php      |  153 -
 .../test/PhpParser/Builder/FunctionTest.php   |  114 -
 .../test/PhpParser/Builder/InterfaceTest.php  |  102 -
 .../test/PhpParser/Builder/MethodTest.php     |  162 -
 .../test/PhpParser/Builder/NamespaceTest.php  |   46 -
 .../test/PhpParser/Builder/ParamTest.php      |  166 -
 .../test/PhpParser/Builder/PropertyTest.php   |  147 -
 .../test/PhpParser/Builder/TraitTest.php      |   46 -
 .../Builder/TraitUseAdaptationTest.php        |  106 -
 .../test/PhpParser/Builder/TraitUseTest.php   |   52 -
 .../test/PhpParser/Builder/UseTest.php        |   36 -
 .../test/PhpParser/BuilderFactoryTest.php     |  327 --
 .../test/PhpParser/CodeParsingTest.php        |  119 -
 .../test/PhpParser/CodeTestAbstract.php       |   26 -
 .../test/PhpParser/CodeTestParser.php         |   68 -
 .../php-parser/test/PhpParser/CommentTest.php |   74 -
 .../test/PhpParser/ConstExprEvaluatorTest.php |  130 -
 .../PhpParser/ErrorHandler/CollectingTest.php |   23 -
 .../PhpParser/ErrorHandler/ThrowingTest.php   |   15 -
 .../php-parser/test/PhpParser/ErrorTest.php   |  104 -
 .../test/PhpParser/Internal/DifferTest.php    |   65 -
 .../test/PhpParser/JsonDecoderTest.php        |   43 -
 .../test/PhpParser/Lexer/EmulativeTest.php    |  210 -
 .../php-parser/test/PhpParser/LexerTest.php   |  263 --
 .../test/PhpParser/NameContextTest.php        |   65 -
 .../test/PhpParser/Node/IdentifierTest.php    |   29 -
 .../test/PhpParser/Node/NameTest.php          |  157 -
 .../PhpParser/Node/Scalar/MagicConstTest.php  |   26 -
 .../test/PhpParser/Node/Scalar/StringTest.php |   61 -
 .../PhpParser/Node/Stmt/ClassConstTest.php    |   34 -
 .../PhpParser/Node/Stmt/ClassMethodTest.php   |  123 -
 .../test/PhpParser/Node/Stmt/ClassTest.php    |   59 -
 .../PhpParser/Node/Stmt/InterfaceTest.php     |   26 -
 .../test/PhpParser/Node/Stmt/PropertyTest.php |   44 -
 .../test/PhpParser/NodeAbstractTest.php       |  325 --
 .../test/PhpParser/NodeDumperTest.php         |  106 -
 .../test/PhpParser/NodeFinderTest.php         |   59 -
 .../test/PhpParser/NodeTraverserTest.php      |  344 --
 .../NodeVisitor/FindingVisitorTest.php        |   53 -
 .../NodeVisitor/FirstFindingVisitorTest.php   |   38 -
 .../NodeVisitor/NameResolverTest.php          |  505 ---
 .../test/PhpParser/Parser/MultipleTest.php    |   94 -
 .../test/PhpParser/Parser/Php5Test.php        |   13 -
 .../test/PhpParser/Parser/Php7Test.php        |   13 -
 .../test/PhpParser/ParserFactoryTest.php      |   36 -
 .../php-parser/test/PhpParser/ParserTest.php  |  183 -
 .../test/PhpParser/PrettyPrinterTest.php      |  307 --
 vendor/nikic/php-parser/test/bootstrap.php    |   31 -
 .../addingPropertyType.test                   |   39 -
 .../code/formatPreservation/anonClasses.test  |   28 -
 .../code/formatPreservation/array_spread.test |   29 -
 .../formatPreservation/arrow_function.test    |   97 -
 .../test/code/formatPreservation/basic.test   |  190 -
 .../formatPreservation/blockConversion.test   |   29 -
 .../code/formatPreservation/comments.test     |   52 -
 .../emptyListInsertion.test                   |  110 -
 .../test/code/formatPreservation/fixup.test   |   67 -
 .../code/formatPreservation/inlineHtml.test   |   54 -
 .../insertionOfNullable.test                  |  176 -
 .../formatPreservation/listInsertion.test     |  309 --
 .../listInsertionIndentation.test             |   17 -
 .../code/formatPreservation/listRemoval.test  |   41 -
 .../formatPreservation/modifierChange.test    |   33 -
 .../formatPreservation/nopCommentAtEnd.test   |   11 -
 .../formatPreservation/removalViaNull.test    |  194 -
 .../removingPropertyType.test                 |   22 -
 .../code/formatPreservation/traitAlias.test   |   19 -
 .../test/code/parser/blockComments.test       |   36 -
 .../test/code/parser/commentAtEndOfClass.test |   38 -
 .../php-parser/test/code/parser/comments.test |  108 -
 .../code/parser/errorHandling/eofError.test   |   36 -
 .../parser/errorHandling/lexerErrors.test     |  140 -
 .../code/parser/errorHandling/recovery.test   | 1417 -------
 .../test/code/parser/expr/arrayDef.test       |  173 -
 .../code/parser/expr/arrayDestructuring.test  |  164 -
 .../test/code/parser/expr/arraySpread.test    |  432 --
 .../test/code/parser/expr/arrow_function.test |  145 -
 .../test/code/parser/expr/assign.test         |  381 --
 .../test/code/parser/expr/assignNewByRef.test |   43 -
 .../test/code/parser/expr/cast.test           |   94 -
 .../test/code/parser/expr/clone.test          |   15 -
 .../test/code/parser/expr/closure.test        |  176 -
 .../test/code/parser/expr/comparison.test     |  129 -
 .../test/code/parser/expr/constant_expr.test  |  694 ----
 .../test/code/parser/expr/errorSuppress.test  |   14 -
 .../test/code/parser/expr/exit.test           |   46 -
 .../code/parser/expr/fetchAndCall/args.test   |  109 -
 .../parser/expr/fetchAndCall/constFetch.test  |   43 -
 .../expr/fetchAndCall/constantDeref.test      |  265 --
 .../parser/expr/fetchAndCall/funcCall.test    |  158 -
 .../parser/expr/fetchAndCall/newDeref.test    |   82 -
 .../expr/fetchAndCall/objectAccess.test       |  184 -
 .../expr/fetchAndCall/simpleArrayAccess.test  |   72 -
 .../parser/expr/fetchAndCall/staticCall.test  |  214 -
 .../fetchAndCall/staticPropertyFetch.test     |  113 -
 .../test/code/parser/expr/includeAndEval.test |   50 -
 .../test/code/parser/expr/issetAndEmpty.test  |   88 -
 .../test/code/parser/expr/listReferences.test |   92 -
 .../test/code/parser/expr/listWithKeys.test   |   84 -
 .../test/code/parser/expr/logic.test          |  190 -
 .../test/code/parser/expr/math.test           |  313 --
 .../php-parser/test/code/parser/expr/new.test |  187 -
 .../code/parser/expr/newWithoutClass.test     |   25 -
 .../test/code/parser/expr/print.test          |   14 -
 .../test/code/parser/expr/shellExec.test      |   56 -
 .../code/parser/expr/ternaryAndCoalesce.test  |  174 -
 .../test/code/parser/expr/trailingCommas.test |  140 -
 .../expr/uvs/globalNonSimpleVarError.test     |   27 -
 .../code/parser/expr/uvs/indirectCall.test    |  511 ---
 .../test/code/parser/expr/uvs/isset.test      |   87 -
 .../test/code/parser/expr/uvs/misc.test       |  129 -
 .../test/code/parser/expr/uvs/new.test        |  119 -
 .../code/parser/expr/uvs/staticProperty.test  |  123 -
 .../test/code/parser/expr/variable.test       |   67 -
 .../test/code/parser/nopPositions.test        |   13 -
 .../code/parser/scalar/constantString.test    |   86 -
 .../test/code/parser/scalar/docString.test    |  115 -
 .../code/parser/scalar/docStringNewlines.test |   77 -
 .../parser/scalar/encapsedNegVarOffset.test   |   82 -
 .../code/parser/scalar/encapsedString.test    |  344 --
 .../code/parser/scalar/flexibleDocString.test |  361 --
 .../scalar/flexibleDocStringErrors.test       |  117 -
 .../test/code/parser/scalar/float.test        |  108 -
 .../test/code/parser/scalar/int.test          |   61 -
 .../test/code/parser/scalar/invalidOctal.test |   26 -
 .../test/code/parser/scalar/magicConst.test   |   47 -
 .../code/parser/scalar/unicodeEscape.test     |   26 -
 .../test/code/parser/semiReserved.test        |  490 ---
 .../code/parser/stmt/blocklessStatement.test  |  130 -
 .../test/code/parser/stmt/class/abstract.test |   45 -
 .../code/parser/stmt/class/anonymous.test     |  214 -
 .../code/parser/stmt/class/conditional.test   |   35 -
 .../stmt/class/constModifierErrors.test       |  137 -
 .../parser/stmt/class/constModifiers.test     |   77 -
 .../test/code/parser/stmt/class/final.test    |   19 -
 .../parser/stmt/class/implicitPublic.test     |  110 -
 .../code/parser/stmt/class/interface.test     |   40 -
 .../test/code/parser/stmt/class/modifier.test |  254 --
 .../test/code/parser/stmt/class/name.test     |  266 --
 .../code/parser/stmt/class/php4Style.test     |   59 -
 .../code/parser/stmt/class/propertyTypes.test |   70 -
 .../test/code/parser/stmt/class/simple.test   |  185 -
 .../code/parser/stmt/class/staticMethod.test  |  175 -
 .../test/code/parser/stmt/class/trait.test    |  188 -
 .../test/code/parser/stmt/const.test          |   48 -
 .../test/code/parser/stmt/controlFlow.test    |   59 -
 .../test/code/parser/stmt/declare.test        |   70 -
 .../test/code/parser/stmt/echo.test           |   32 -
 .../function/builtinTypeDeclarations.test     |   87 -
 .../test/code/parser/stmt/function/byRef.test |   49 -
 .../parser/stmt/function/conditional.test     |   35 -
 .../parser/stmt/function/defaultValues.test   |  173 -
 .../parser/stmt/function/nullableTypes.test   |   55 -
 .../parser/stmt/function/returnTypes.test     |   64 -
 .../parser/stmt/function/specialVars.test     |   57 -
 .../stmt/function/typeDeclarations.test       |   63 -
 .../code/parser/stmt/function/variadic.test   |  134 -
 .../stmt/function/variadicDefaultValue.test   |   31 -
 .../code/parser/stmt/generator/basic.test     |  319 --
 .../stmt/generator/yieldPrecedence.test       |  253 --
 .../stmt/generator/yieldUnaryPrecedence.test  |   56 -
 .../test/code/parser/stmt/haltCompiler.test   |   61 -
 .../stmt/haltCompilerInvalidSyntax.test       |    6 -
 .../code/parser/stmt/haltCompilerOffset.test  |   36 -
 .../stmt/haltCompilerOutermostScope.test      |    8 -
 .../test/code/parser/stmt/hashbang.test       |   26 -
 .../php-parser/test/code/parser/stmt/if.test  |  103 -
 .../test/code/parser/stmt/inlineHTML.test     |   33 -
 .../test/code/parser/stmt/loop/do.test        |   17 -
 .../test/code/parser/stmt/loop/for.test       |  110 -
 .../test/code/parser/stmt/loop/foreach.test   |  168 -
 .../test/code/parser/stmt/loop/while.test     |   25 -
 .../test/code/parser/stmt/multiCatch.test     |   75 -
 .../code/parser/stmt/namespace/alias.test     |  178 -
 .../code/parser/stmt/namespace/braced.test    |   46 -
 .../stmt/namespace/commentAfterNamespace.test |   22 -
 .../code/parser/stmt/namespace/groupUse.test  |  188 -
 .../parser/stmt/namespace/groupUseErrors.test |  113 -
 .../stmt/namespace/groupUsePositions.test     |   28 -
 .../stmt/namespace/groupUseTrailingComma.test |   47 -
 .../parser/stmt/namespace/invalidName.test    |   87 -
 .../test/code/parser/stmt/namespace/mix.test  |  103 -
 .../test/code/parser/stmt/namespace/name.test |   50 -
 .../code/parser/stmt/namespace/nested.test    |   30 -
 .../code/parser/stmt/namespace/notBraced.test |   49 -
 .../stmt/namespace/nsAfterHashbang.test       |   22 -
 .../parser/stmt/namespace/outsideStmt.test    |   60 -
 .../stmt/namespace/outsideStmtInvalid.test    |  109 -
 .../test/code/parser/stmt/switch.test         |   81 -
 .../test/code/parser/stmt/tryCatch.test       |  144 -
 .../code/parser/stmt/tryWithoutCatch.test     |   29 -
 .../test/code/parser/stmt/unset.test          |   26 -
 .../test/code/prettyPrinter/comments.test     |   67 -
 .../prettyPrinter/commentsInCommaList.test    |   53 -
 .../prettyPrinter/expr/anonymousClass.test    |   27 -
 .../expr/arrayDestructuring.test              |   14 -
 .../code/prettyPrinter/expr/arraySpread.test  |    8 -
 .../prettyPrinter/expr/arrow_function.test    |   18 -
 .../test/code/prettyPrinter/expr/call.test    |   13 -
 .../test/code/prettyPrinter/expr/closure.test |   18 -
 .../prettyPrinter/expr/constant_deref.test    |   13 -
 .../code/prettyPrinter/expr/docStrings.test   |   86 -
 .../test/code/prettyPrinter/expr/include.test |    7 -
 .../code/prettyPrinter/expr/intrinsics.test   |   29 -
 .../test/code/prettyPrinter/expr/list.test    |   19 -
 .../code/prettyPrinter/expr/literals.test     |  158 -
 .../test/code/prettyPrinter/expr/numbers.test |   35 -
 .../code/prettyPrinter/expr/operators.test    |  151 -
 .../code/prettyPrinter/expr/parentheses.test  |   86 -
 .../prettyPrinter/expr/shortArraySyntax.test  |   11 -
 .../prettyPrinter/expr/stringEscaping.test    |   23 -
 .../test/code/prettyPrinter/expr/uvs.test     |   23 -
 .../code/prettyPrinter/expr/variables.test    |   73 -
 .../test/code/prettyPrinter/expr/yield.test   |   46 -
 .../inlineHTMLandPHPtest.file-test            |   58 -
 .../code/prettyPrinter/nestedInlineHTML.test  |   16 -
 .../prettyPrinter/onlyInlineHTML.file-test    |   19 -
 .../test/code/prettyPrinter/onlyPHP.file-test |   16 -
 .../test/code/prettyPrinter/stmt/alias.test   |   20 -
 .../prettyPrinter/stmt/break_continue.test    |   13 -
 .../test/code/prettyPrinter/stmt/class.test   |   53 -
 .../code/prettyPrinter/stmt/class_const.test  |   20 -
 .../test/code/prettyPrinter/stmt/const.test   |   11 -
 .../test/code/prettyPrinter/stmt/declare.test |   17 -
 .../code/prettyPrinter/stmt/do_while.test     |   10 -
 .../test/code/prettyPrinter/stmt/for.test     |   28 -
 .../test/code/prettyPrinter/stmt/foreach.test |   28 -
 .../stmt/function_signatures.test             |   43 -
 .../stmt/global_static_variables.test         |   11 -
 .../test/code/prettyPrinter/stmt/goto.test    |    9 -
 .../code/prettyPrinter/stmt/groupUse.test     |   16 -
 .../prettyPrinter/stmt/haltCompiler.file-test |   27 -
 .../test/code/prettyPrinter/stmt/if.test      |   16 -
 .../code/prettyPrinter/stmt/multiCatch.test   |   19 -
 .../code/prettyPrinter/stmt/namespaces.test   |   50 -
 .../prettyPrinter/stmt/nullable_types.test    |   11 -
 .../code/prettyPrinter/stmt/properties.test   |   20 -
 .../test/code/prettyPrinter/stmt/switch.test  |   37 -
 .../test/code/prettyPrinter/stmt/throw.test   |    7 -
 .../code/prettyPrinter/stmt/traitUse.test     |   25 -
 .../code/prettyPrinter/stmt/tryCatch.test     |   24 -
 .../test/code/prettyPrinter/stmt/while.test   |   10 -
 vendor/nikic/php-parser/test/updateTests.php  |   32 -
 .../nikic/php-parser/test_old/run-php-src.sh  |    4 -
 vendor/nikic/php-parser/test_old/run.php      |  271 --
 .../.editorconfig                             |   18 +
 .../composer-installers-extender/.travis.yml  |   20 +
 .../composer-installers-extender/CHANGELOG.md |   55 +
 .../composer-installers-extender/LICENSE      |   21 +
 .../composer-installers-extender/README.md    |  100 +-
 .../composer.json                             |   78 +-
 .../composer-installers-extender/phpcs.xml    |   22 +
 .../composer-installers-extender/phpunit.xml  |   27 +
 .../src/Installer.php                         |   35 -
 .../src/InstallerHelper.php                   |   15 -
 .../src/Installers/CustomInstaller.php        |   18 +
 .../src/Installers/Installer.php              |   53 +
 .../src/Plugin.php                            |   32 +-
 .../src/Installers/CustomInstallerTest.php    |   18 +
 .../tests/src/Installers/InstallerTest.php    |  117 +
 .../tests/src/PluginTest.php                  |   55 +
 .../quicksilver-pushback}/LICENSE             |    5 +-
 .../quicksilver-pushback/README.md            |   41 +
 .../quicksilver-pushback/composer.json        |    9 +
 .../quicksilver-pushback/lean-repo-utils.php  |   64 +
 .../push-back-to-github.php                   |  231 ++
 vendor/psy/psysh/.editorconfig                |   15 -
 vendor/psy/psysh/.github/CONTRIBUTING.md      |    9 -
 vendor/psy/psysh/.gitignore                   |    9 -
 vendor/psy/psysh/.phan/config.php             |    6 -
 vendor/psy/psysh/.php_cs                      |   32 -
 vendor/psy/psysh/.styleci.yml                 |   29 -
 vendor/psy/psysh/.travis.yml                  |   44 -
 vendor/psy/psysh/Makefile                     |   95 -
 vendor/psy/psysh/README.md                    |    1 +
 vendor/psy/psysh/bin/build-stub               |   22 -
 vendor/psy/psysh/bin/psysh                    |   38 +-
 vendor/psy/psysh/box.json.dist                |   12 -
 vendor/psy/psysh/composer.json                |   16 +-
 vendor/psy/psysh/phpunit.xml.dist             |   12 -
 vendor/psy/psysh/src/CodeCleaner.php          |   26 +-
 .../src/CodeCleaner/AbstractClassPass.php     |    6 +-
 .../CodeCleaner/AssignThisVariablePass.php    |    4 +-
 .../CallTimePassByReferencePass.php           |    4 +-
 .../psysh/src/CodeCleaner/CalledClassPass.php |    2 +-
 .../psysh/src/CodeCleaner/CodeCleanerPass.php |    2 +-
 .../CodeCleaner/EmptyArrayDimFetchPass.php    |   50 +
 vendor/psy/psysh/src/CodeCleaner/ExitPass.php |    5 +-
 .../psysh/src/CodeCleaner/FinalClassPass.php  |    4 +-
 .../src/CodeCleaner/FunctionContextPass.php   |    2 +-
 .../FunctionReturnInWriteContextPass.php      |   17 +-
 .../src/CodeCleaner/ImplicitReturnPass.php    |    2 +-
 .../psysh/src/CodeCleaner/InstanceOfPass.php  |   12 +-
 .../src/CodeCleaner/LabelContextPass.php      |   91 +
 .../src/CodeCleaner/LeavePsyshAlonePass.php   |    2 +-
 .../psysh/src/CodeCleaner/LegacyEmptyPass.php |   73 -
 vendor/psy/psysh/src/CodeCleaner/ListPass.php |    2 +-
 .../psysh/src/CodeCleaner/LoopContextPass.php |    2 +-
 .../src/CodeCleaner/MagicConstantsPass.php    |    4 +-
 .../src/CodeCleaner/NamespaceAwarePass.php    |    2 +-
 .../psysh/src/CodeCleaner/NamespacePass.php   |    4 +-
 .../psysh/src/CodeCleaner/NoReturnValue.php   |    6 +-
 .../CodeCleaner/PassableByReferencePass.php   |    8 +-
 .../psy/psysh/src/CodeCleaner/RequirePass.php |    5 +-
 .../psysh/src/CodeCleaner/ReturnTypePass.php  |  118 +
 .../psysh/src/CodeCleaner/StrictTypesPass.php |    4 +-
 .../src/CodeCleaner/UseStatementPass.php      |   44 +-
 .../src/CodeCleaner/ValidClassNamePass.php    |   12 +-
 .../src/CodeCleaner/ValidConstantPass.php     |    2 +-
 .../src/CodeCleaner/ValidConstructorPass.php  |    2 +-
 .../src/CodeCleaner/ValidFunctionNamePass.php |    2 +-
 .../psy/psysh/src/Command/BufferCommand.php   |    4 +-
 vendor/psy/psysh/src/Command/ClearCommand.php |    4 +-
 vendor/psy/psysh/src/Command/Command.php      |   23 +-
 vendor/psy/psysh/src/Command/DocCommand.php   |  132 +-
 vendor/psy/psysh/src/Command/DumpCommand.php  |    4 +-
 vendor/psy/psysh/src/Command/EditCommand.php  |    9 +-
 vendor/psy/psysh/src/Command/ExitCommand.php  |    2 +-
 vendor/psy/psysh/src/Command/HelpCommand.php  |   15 +-
 .../psy/psysh/src/Command/HistoryCommand.php  |    6 +-
 vendor/psy/psysh/src/Command/ListCommand.php  |   28 +-
 .../ListCommand/ClassConstantEnumerator.php   |   13 +-
 .../Command/ListCommand/ClassEnumerator.php   |   44 +-
 .../ListCommand/ConstantEnumerator.php        |   81 +-
 .../src/Command/ListCommand/Enumerator.php    |   14 +-
 .../ListCommand/FunctionEnumerator.php        |   48 +-
 .../ListCommand/GlobalVariableEnumerator.php  |    8 +-
 .../ListCommand/InterfaceEnumerator.php       |   89 -
 .../Command/ListCommand/MethodEnumerator.php  |   15 +-
 .../ListCommand/PropertyEnumerator.php        |   16 +-
 .../Command/ListCommand/TraitEnumerator.php   |   89 -
 .../ListCommand/VariableEnumerator.php        |    8 +-
 vendor/psy/psysh/src/Command/ParseCommand.php |    8 +-
 .../psysh/src/Command/PsyVersionCommand.php   |    4 +-
 .../psysh/src/Command/ReflectingCommand.php   |   48 +-
 vendor/psy/psysh/src/Command/ShowCommand.php  |   51 +-
 vendor/psy/psysh/src/Command/SudoCommand.php  |    6 +-
 .../psy/psysh/src/Command/ThrowUpCommand.php  |   28 +-
 .../psy/psysh/src/Command/TimeitCommand.php   |    4 +-
 .../Command/TimeitCommand/TimeitVisitor.php   |   19 +-
 vendor/psy/psysh/src/Command/TraceCommand.php |   80 +-
 .../psy/psysh/src/Command/WhereamiCommand.php |   59 +-
 vendor/psy/psysh/src/Command/WtfCommand.php   |   15 +-
 vendor/psy/psysh/src/ConfigPaths.php          |   51 +-
 vendor/psy/psysh/src/Configuration.php        |  548 ++-
 vendor/psy/psysh/src/ConsoleColorFactory.php  |   51 +-
 vendor/psy/psysh/src/Context.php              |    8 +-
 vendor/psy/psysh/src/ContextAware.php         |    2 +-
 .../psysh/src/Exception/BreakException.php    |    2 +-
 .../src/Exception/DeprecatedException.php     |    2 +-
 .../psysh/src/Exception/ErrorException.php    |   16 +-
 vendor/psy/psysh/src/Exception/Exception.php  |    2 +-
 .../src/Exception/FatalErrorException.php     |   14 +-
 .../src/Exception/ParseErrorException.php     |    2 +-
 .../psysh/src/Exception/RuntimeException.php  |    8 +-
 .../psysh/src/Exception/ThrowUpException.php  |    2 +-
 .../src/Exception/TypeErrorException.php      |    2 +-
 .../Exception/UnexpectedTargetException.php   |   37 +
 vendor/psy/psysh/src/ExecutionClosure.php     |   45 +-
 vendor/psy/psysh/src/ExecutionLoop.php        |   67 -
 .../src/ExecutionLoop/AbstractListener.php    |    2 +-
 .../psy/psysh/src/ExecutionLoop/Listener.php  |    2 +-
 .../psysh/src/ExecutionLoop/ProcessForker.php |   73 +-
 .../src/ExecutionLoop/RunkitReloader.php      |    2 +-
 vendor/psy/psysh/src/ExecutionLoopClosure.php |   10 +-
 .../psy/psysh/src/Formatter/CodeFormatter.php |  297 +-
 .../psysh/src/Formatter/DocblockFormatter.php |   12 +-
 vendor/psy/psysh/src/Formatter/Formatter.php  |   12 +-
 .../src/Formatter/ReflectorFormatter.php      |   25 +
 .../src/Formatter/SignatureFormatter.php      |   10 +-
 .../psysh/src/Formatter/TraceFormatter.php    |  116 +
 vendor/psy/psysh/src/Input/CodeArgument.php   |    2 +-
 vendor/psy/psysh/src/Input/FilterOptions.php  |   16 +-
 vendor/psy/psysh/src/Input/ShellInput.php     |   10 +-
 vendor/psy/psysh/src/Input/SilentInput.php    |    2 +-
 vendor/psy/psysh/src/Output/OutputPager.php   |    2 +-
 vendor/psy/psysh/src/Output/PassthruPager.php |    2 +-
 .../psy/psysh/src/Output/ProcOutputPager.php  |    5 +-
 vendor/psy/psysh/src/Output/ShellOutput.php   |   18 +-
 vendor/psy/psysh/src/ParserFactory.php        |    6 +-
 vendor/psy/psysh/src/Readline/GNUReadline.php |    7 +-
 vendor/psy/psysh/src/Readline/HoaConsole.php  |   20 +-
 vendor/psy/psysh/src/Readline/Libedit.php     |   26 +-
 vendor/psy/psysh/src/Readline/Readline.php    |    4 +-
 vendor/psy/psysh/src/Readline/Transient.php   |    2 +-
 .../Reflection/ReflectionClassConstant.php    |    6 +-
 .../src/Reflection/ReflectionConstant.php     |    2 +-
 .../src/Reflection/ReflectionConstant_.php    |    4 +-
 .../ReflectionLanguageConstruct.php           |    2 +-
 .../ReflectionLanguageConstructParameter.php  |    2 +-
 .../src/Reflection/ReflectionNamespace.php    |   60 +
 vendor/psy/psysh/src/Shell.php                |  275 +-
 vendor/psy/psysh/src/Sudo.php                 |    2 +-
 vendor/psy/psysh/src/Sudo/SudoVisitor.php     |   11 +-
 .../psysh/src/TabCompletion/AutoCompleter.php |    2 +-
 .../Matcher/AbstractContextAwareMatcher.php   |    2 +-
 .../AbstractDefaultParametersMatcher.php      |    2 +-
 .../TabCompletion/Matcher/AbstractMatcher.php |    4 +-
 .../Matcher/ClassAttributesMatcher.php        |    2 +-
 .../ClassMethodDefaultParametersMatcher.php   |    2 +-
 .../Matcher/ClassMethodsMatcher.php           |    2 +-
 .../Matcher/ClassNamesMatcher.php             |    4 +-
 .../TabCompletion/Matcher/CommandsMatcher.php |    2 +-
 .../Matcher/ConstantsMatcher.php              |    2 +-
 .../FunctionDefaultParametersMatcher.php      |    2 +-
 .../Matcher/FunctionsMatcher.php              |    2 +-
 .../TabCompletion/Matcher/KeywordsMatcher.php |    2 +-
 .../Matcher/MongoClientMatcher.php            |    2 +-
 .../Matcher/MongoDatabaseMatcher.php          |    2 +-
 .../Matcher/ObjectAttributesMatcher.php       |    2 +-
 .../ObjectMethodDefaultParametersMatcher.php  |    2 +-
 .../Matcher/ObjectMethodsMatcher.php          |    2 +-
 .../Matcher/VariablesMatcher.php              |    2 +-
 vendor/psy/psysh/src/Util/Docblock.php        |    7 +-
 vendor/psy/psysh/src/Util/Json.php            |    2 +-
 vendor/psy/psysh/src/Util/Mirror.php          |   75 +-
 vendor/psy/psysh/src/Util/Str.php             |    2 +-
 vendor/psy/psysh/src/VarDumper/Cloner.php     |    2 +-
 vendor/psy/psysh/src/VarDumper/Dumper.php     |    2 +-
 vendor/psy/psysh/src/VarDumper/Presenter.php  |    2 +-
 .../psysh/src/VarDumper/PresenterAware.php    |    2 +-
 .../psy/psysh/src/VersionUpdater/Checker.php  |    2 +-
 .../src/VersionUpdater/GitHubChecker.php      |    2 +-
 .../src/VersionUpdater/IntervalChecker.php    |    2 +-
 .../psysh/src/VersionUpdater/NoopChecker.php  |    2 +-
 vendor/psy/psysh/src/functions.php            |  138 +-
 vendor/psy/psysh/test/ClassWithSecrets.php    |   37 -
 .../CodeCleaner/AbstractClassPassTest.php     |   57 -
 .../AssignThisVariablePassTest.php            |   58 -
 .../CallTimePassByReferencePassTest.php       |   59 -
 .../test/CodeCleaner/CalledClassPassTest.php  |   90 -
 .../test/CodeCleaner/CodeCleanerTestCase.php  |   41 -
 .../psysh/test/CodeCleaner/ExitPassTest.php   |   59 -
 .../test/CodeCleaner/FinalClassPassTest.php   |   65 -
 .../Fixtures/ClassWithCallStatic.php          |   20 -
 .../CodeCleaner/Fixtures/ClassWithStatic.php  |   20 -
 .../CodeCleaner/Fixtures/TraitWithStatic.php  |   20 -
 .../CodeCleaner/FunctionContextPassTest.php   |   56 -
 .../FunctionReturnInWriteContextPassTest.php  |   91 -
 .../CodeCleaner/ImplicitReturnPassTest.php    |  112 -
 .../test/CodeCleaner/InstanceOfPassTest.php   |   72 -
 .../CodeCleaner/LeavePsyshAlonePassTest.php   |   69 -
 .../test/CodeCleaner/LegacyEmptyPassTest.php  |   76 -
 .../psysh/test/CodeCleaner/ListPassTest.php   |  115 -
 .../test/CodeCleaner/LoopContextPassTest.php  |  108 -
 .../CodeCleaner/MagicConstantsPassTest.php    |   39 -
 .../test/CodeCleaner/NamespacePassTest.php    |   59 -
 .../test/CodeCleaner/NoReturnValueTest.php    |   32 -
 .../PassableByReferencePassTest.php           |  104 -
 .../test/CodeCleaner/RequirePassTest.php      |   93 -
 .../test/CodeCleaner/StrictTypesPassTest.php  |   52 -
 .../test/CodeCleaner/UseStatementPassTest.php |  102 -
 .../CodeCleaner/ValidClassNamePassTest.php    |  325 --
 .../CodeCleaner/ValidConstantPassTest.php     |   65 -
 .../CodeCleaner/ValidConstructorPassTest.php  |   93 -
 .../CodeCleaner/ValidFunctionNamePassTest.php |  180 -
 vendor/psy/psysh/test/CodeCleanerTest.php     |  131 -
 .../psysh/test/Command/ExitCommandTest.php    |   29 -
 .../psysh/test/Command/ThrowUpCommandTest.php |   89 -
 .../TimeitCommand/TimeitVisitorTest.php       |   52 -
 vendor/psy/psysh/test/ConfigurationTest.php   |  256 --
 .../psysh/test/ConsoleColorFactoryTest.php    |   51 -
 vendor/psy/psysh/test/ContextTest.php         |  325 --
 .../test/Exception/BreakExceptionTest.php     |   42 -
 .../test/Exception/ErrorExceptionTest.php     |  125 -
 .../Exception/FatalErrorExceptionTest.php     |   51 -
 .../Exception/ParseErrorExceptionTest.php     |   42 -
 .../test/Exception/RuntimeExceptionTest.php   |   30 -
 .../test/Exception/ThrowUpExceptionTest.php   |   66 -
 .../test/Exception/TypeErrorExceptionTest.php |   52 -
 vendor/psy/psysh/test/FakeShell.php           |   29 -
 .../test/Formatter/CodeFormatterTest.php      |  129 -
 .../test/Formatter/DocblockFormatterTest.php  |   63 -
 .../test/Formatter/Fixtures/BoringTrait.php   |   20 -
 .../test/Formatter/Fixtures/SomeClass.php     |   30 -
 .../test/Formatter/SignatureFormatterTest.php |   95 -
 .../psy/psysh/test/Input/CodeArgumentTest.php |   52 -
 .../psysh/test/Input/FilterOptionsTest.php    |  105 -
 .../psy/psysh/test/Input/ShellInputTest.php   |  254 --
 vendor/psy/psysh/test/ParserTestCase.php      |   97 -
 .../psysh/test/Readline/GNUReadlineTest.php   |   80 -
 .../psysh/test/Readline/HoaConsoleTest.php    |   31 -
 .../psy/psysh/test/Readline/LibeditTest.php   |  128 -
 .../psy/psysh/test/Readline/TransientTest.php |   76 -
 .../ReflectionClassConstantTest.php           |   81 -
 .../Reflection/ReflectionConstantBCTest.php   |   26 -
 .../Reflection/ReflectionConstantTest.php     |  114 -
 ...flectionLanguageConstructParameterTest.php |   64 -
 .../ReflectionLanguageConstructTest.php       |  102 -
 vendor/psy/psysh/test/ShellTest.php           |  442 --
 .../psy/psysh/test/Sudo/SudoVisitorTest.php   |  142 -
 vendor/psy/psysh/test/SudoTest.php            |   80 -
 .../test/TabCompletion/AutoCompleterTest.php  |  145 -
 .../psysh/test/TabCompletion/StaticSample.php |   27 -
 vendor/psy/psysh/test/Util/DocblockTest.php   |  100 -
 vendor/psy/psysh/test/Util/MirrorTest.php     |   86 -
 vendor/psy/psysh/test/Util/StrTest.php        |   31 -
 .../test/VersionUpdater/GitHubCheckerTest.php |   82 -
 .../test/VersionUpdater/NoopCheckerTest.php   |   25 -
 vendor/psy/psysh/test/fixtures/config.php     |   20 -
 .../fixtures/default/.config/psysh/config.php |    1 -
 .../default/.config/psysh/psysh_history       |    0
 .../.local/share/psysh/php_manual.sqlite      |    0
 vendor/psy/psysh/test/fixtures/empty.php      |   12 -
 .../psysh/test/fixtures/legacy/.psysh/history |    0
 .../fixtures/legacy/.psysh/php_manual.sqlite  |    0
 .../psysh/test/fixtures/legacy/.psysh/rc.php  |    1 -
 .../test/fixtures/mixed/.psysh/config.php     |    1 -
 .../test/fixtures/mixed/.psysh/psysh_history  |    0
 .../psysh/test/fixtures/mixed/.psysh/rc.php   |    1 -
 .../psysh/test/fixtures/project/.psysh.php    |   17 -
 .../psysh/test/fixtures/unvis_fixtures.json   |    1 -
 .../psysh/test/tools/gen_unvis_fixtures.py    |   94 -
 vendor/psy/psysh/test/tools/vis.py            |  126 -
 vendor/psy/psysh/vendor-bin/box/composer.json |    7 -
 vendor/psy/psysh/vendor-bin/box/composer.lock | 2524 ------------
 vendor/symfony/filesystem/Filesystem.php      |   20 +-
 vendor/symfony/filesystem/LockHandler.php     |    6 +-
 .../filesystem/Tests/FilesystemTest.php       |   50 +-
 .../filesystem/Tests/FilesystemTestCase.php   |    2 +-
 vendor/symfony/filesystem/composer.json       |    7 +-
 vendor/symfony/finder/Finder.php              |   17 +-
 .../Iterator/DepthRangeFilterIterator.php     |    4 +-
 .../ExcludeDirectoryFilterIterator.php        |    2 +-
 .../Iterator/RecursiveDirectoryIterator.php   |    6 +-
 .../finder/Iterator/SortableIterator.php      |   10 +-
 vendor/symfony/finder/LICENSE                 |    2 +-
 vendor/symfony/finder/Tests/FinderTest.php    |   22 +-
 .../Iterator/CustomFilterIteratorTest.php     |    4 +-
 .../Iterator/DepthRangeFilterIteratorTest.php |    4 +-
 .../Tests/Iterator/FilterIteratorTest.php     |    4 +-
 .../Tests/Iterator/IteratorTestCase.php       |   13 +-
 .../Tests/Iterator/SortableIteratorTest.php   |    6 +-
 vendor/symfony/finder/composer.json           |    7 +-
 .../symfony/var-dumper/Caster/AmqpCaster.php  |   36 +-
 vendor/symfony/var-dumper/Caster/Caster.php   |   52 +-
 .../symfony/var-dumper/Caster/DOMCaster.php   |   70 +-
 .../symfony/var-dumper/Caster/DateCaster.php  |   12 +-
 .../var-dumper/Caster/ExceptionCaster.php     |   30 +-
 .../symfony/var-dumper/Caster/MongoCaster.php |    2 +-
 .../symfony/var-dumper/Caster/PgSqlCaster.php |   54 +-
 .../var-dumper/Caster/ReflectionCaster.php    |   12 +-
 .../var-dumper/Caster/ResourceCaster.php      |    5 +
 .../symfony/var-dumper/Caster/SplCaster.php   |   47 +-
 .../var-dumper/Caster/XmlResourceCaster.php   |   44 +-
 .../var-dumper/Cloner/AbstractCloner.php      |   14 +-
 vendor/symfony/var-dumper/Cloner/Data.php     |   26 +-
 .../var-dumper/Cloner/DumperInterface.php     |   18 +-
 vendor/symfony/var-dumper/Cloner/Stub.php     |    2 +-
 .../symfony/var-dumper/Cloner/VarCloner.php   |   44 +-
 .../var-dumper/Dumper/AbstractDumper.php      |   16 +-
 .../symfony/var-dumper/Dumper/CliDumper.php   |   10 +-
 .../symfony/var-dumper/Dumper/HtmlDumper.php  |   14 +-
 vendor/symfony/var-dumper/LICENSE             |    2 +-
 .../var-dumper/Test/VarDumperTestTrait.php    |    9 +-
 .../var-dumper/Tests/Caster/CasterTest.php    |    2 +-
 .../Tests/Caster/DateCasterTest.php           |   43 +-
 .../Tests/Caster/ExceptionCasterTest.php      |    7 +-
 .../var-dumper/Tests/Caster/PdoCasterTest.php |    3 +-
 .../Tests/Caster/ReflectionCasterTest.php     |    6 +-
 .../var-dumper/Tests/Caster/SplCasterTest.php |   43 +-
 .../var-dumper/Tests/Cloner/DataTest.php      |    2 +-
 .../var-dumper/Tests/Cloner/VarClonerTest.php |   78 +-
 .../var-dumper/Tests/Dumper/CliDumperTest.php |   55 +-
 .../var-dumper/Tests/Dumper/FunctionsTest.php |    4 +-
 .../Tests/Dumper/HtmlDumperTest.php           |    4 +-
 .../Tests/Fixtures/DateTimeChild.php          |    8 +
 .../var-dumper/Tests/Fixtures/Php74.php       |   14 +
 vendor/symfony/var-dumper/composer.json       |    7 +-
 vendor/webflo/drupal-finder/.travis.yml       |    1 -
 vendor/webflo/drupal-finder/LICENSE.txt       |  339 ++
 vendor/webflo/drupal-finder/composer.json     |    8 +-
 .../webflo/drupal-finder/src/DrupalFinder.php |    9 +-
 .../drupal-finder/tests/Drupal8FinderTest.php |   56 +
 979 files changed, 27515 insertions(+), 49070 deletions(-)
 create mode 100644 vendor/chi-teck/drupal-code-generator/src/Command/Drupal_8/PhpStormMetadata.php
 delete mode 100644 vendor/chi-teck/drupal-code-generator/templates/d8/_project/drush/drush.yml.twig
 create mode 100644 vendor/chi-teck/drupal-code-generator/templates/d8/_project/phpunit.xml.twig
 delete mode 100755 vendor/chi-teck/drupal-code-generator/templates/d8/_project/scripts/composer/create_required_files.php.twig
 delete mode 100644 vendor/chi-teck/drupal-code-generator/templates/d8/_project/tests/behat/behat.yml.twig
 delete mode 100644 vendor/chi-teck/drupal-code-generator/templates/d8/_project/tests/behat/bootstrap/BaseContext.php.twig
 delete mode 100644 vendor/chi-teck/drupal-code-generator/templates/d8/_project/tests/behat/bootstrap/ExampleContext.php.twig
 delete mode 100644 vendor/chi-teck/drupal-code-generator/templates/d8/_project/tests/behat/features/example/user_forms.feature.twig
 delete mode 100644 vendor/chi-teck/drupal-code-generator/templates/d8/_project/tests/behat/local.behat.yml.twig
 create mode 100644 vendor/chi-teck/drupal-code-generator/templates/d8/_project/tests/src/HomePageTest.php.twig
 create mode 100644 vendor/chi-teck/drupal-code-generator/templates/d8/phpstorm-meta.twig
 create mode 100644 vendor/consolidation/annotated-command/.scenarios.lock/finder5/.gitignore
 create mode 100644 vendor/consolidation/annotated-command/.scenarios.lock/finder5/composer.json
 create mode 100644 vendor/consolidation/annotated-command/.scenarios.lock/finder5/composer.lock
 mode change 100644 => 100755 vendor/consolidation/annotated-command/.scenarios.lock/install
 create mode 100644 vendor/consolidation/output-formatters/.scenarios.lock/finder5/.gitignore
 create mode 100644 vendor/consolidation/output-formatters/.scenarios.lock/finder5/composer.json
 create mode 100644 vendor/consolidation/output-formatters/.scenarios.lock/finder5/composer.lock
 mode change 100644 => 100755 vendor/consolidation/output-formatters/.scenarios.lock/install
 create mode 100644 vendor/consolidation/robo/.scenarios.lock/finder5/.gitignore
 create mode 100644 vendor/consolidation/robo/.scenarios.lock/finder5/composer.json
 create mode 100644 vendor/consolidation/robo/.scenarios.lock/finder5/composer.lock
 rename vendor/consolidation/robo/{phpunit.xml => phpunit.xml.dist} (77%)
 create mode 100644 vendor/consolidation/robo/src/Symfony/SymfonyStyleInjector.php
 delete mode 100644 vendor/dnoegel/php-xdg-base-dir/.gitignore
 delete mode 100644 vendor/dnoegel/php-xdg-base-dir/phpunit.xml.dist
 delete mode 100644 vendor/dnoegel/php-xdg-base-dir/tests/XdgTest.php
 delete mode 100644 vendor/jakub-onderka/php-console-color/.gitignore
 delete mode 100644 vendor/jakub-onderka/php-console-color/.travis.yml
 delete mode 100644 vendor/jakub-onderka/php-console-color/LICENSE
 delete mode 100644 vendor/jakub-onderka/php-console-color/README.md
 delete mode 100644 vendor/jakub-onderka/php-console-color/build.xml
 delete mode 100644 vendor/jakub-onderka/php-console-color/composer.json
 delete mode 100644 vendor/jakub-onderka/php-console-color/example.php
 delete mode 100644 vendor/jakub-onderka/php-console-color/phpunit.xml
 delete mode 100644 vendor/jakub-onderka/php-console-color/src/ConsoleColor.php
 delete mode 100644 vendor/jakub-onderka/php-console-color/src/InvalidStyleException.php
 delete mode 100644 vendor/jakub-onderka/php-console-color/tests/ConsoleColorTest.php
 delete mode 100644 vendor/jakub-onderka/php-console-highlighter/.gitignore
 delete mode 100644 vendor/jakub-onderka/php-console-highlighter/.travis.yml
 delete mode 100644 vendor/jakub-onderka/php-console-highlighter/README.md
 delete mode 100644 vendor/jakub-onderka/php-console-highlighter/build.xml
 delete mode 100644 vendor/jakub-onderka/php-console-highlighter/composer.json
 delete mode 100644 vendor/jakub-onderka/php-console-highlighter/examples/snippet.php
 delete mode 100644 vendor/jakub-onderka/php-console-highlighter/examples/whole_file.php
 delete mode 100644 vendor/jakub-onderka/php-console-highlighter/examples/whole_file_line_numbers.php
 delete mode 100644 vendor/jakub-onderka/php-console-highlighter/phpunit.xml
 delete mode 100644 vendor/jakub-onderka/php-console-highlighter/src/Highlighter.php
 delete mode 100644 vendor/jakub-onderka/php-console-highlighter/tests/HigligterTest.php
 delete mode 100644 vendor/nikic/php-parser/.gitignore
 delete mode 100644 vendor/nikic/php-parser/.travis.yml
 delete mode 100644 vendor/nikic/php-parser/CHANGELOG.md
 delete mode 100644 vendor/nikic/php-parser/UPGRADE-1.0.md
 delete mode 100644 vendor/nikic/php-parser/UPGRADE-2.0.md
 delete mode 100644 vendor/nikic/php-parser/UPGRADE-3.0.md
 delete mode 100644 vendor/nikic/php-parser/UPGRADE-4.0.md
 delete mode 100644 vendor/nikic/php-parser/doc/0_Introduction.markdown
 delete mode 100644 vendor/nikic/php-parser/doc/2_Usage_of_basic_components.markdown
 delete mode 100644 vendor/nikic/php-parser/doc/README.md
 delete mode 100644 vendor/nikic/php-parser/doc/component/AST_builders.markdown
 delete mode 100644 vendor/nikic/php-parser/doc/component/Constant_expression_evaluation.markdown
 delete mode 100644 vendor/nikic/php-parser/doc/component/Error_handling.markdown
 delete mode 100644 vendor/nikic/php-parser/doc/component/FAQ.markdown
 delete mode 100644 vendor/nikic/php-parser/doc/component/JSON_representation.markdown
 delete mode 100644 vendor/nikic/php-parser/doc/component/Lexer.markdown
 delete mode 100644 vendor/nikic/php-parser/doc/component/Name_resolution.markdown
 delete mode 100644 vendor/nikic/php-parser/doc/component/Performance.markdown
 delete mode 100644 vendor/nikic/php-parser/doc/component/Pretty_printing.markdown
 delete mode 100644 vendor/nikic/php-parser/doc/component/Walking_the_AST.markdown
 create mode 100644 vendor/nikic/php-parser/lib/PhpParser/Lexer/TokenEmulator/AttributeEmulator.php
 create mode 100644 vendor/nikic/php-parser/lib/PhpParser/Lexer/TokenEmulator/FlexibleDocStringEmulator.php
 create mode 100644 vendor/nikic/php-parser/lib/PhpParser/Lexer/TokenEmulator/KeywordEmulator.php
 create mode 100644 vendor/nikic/php-parser/lib/PhpParser/Lexer/TokenEmulator/MatchTokenEmulator.php
 create mode 100644 vendor/nikic/php-parser/lib/PhpParser/Lexer/TokenEmulator/NullsafeTokenEmulator.php
 create mode 100644 vendor/nikic/php-parser/lib/PhpParser/Lexer/TokenEmulator/NumericLiteralSeparatorEmulator.php
 create mode 100644 vendor/nikic/php-parser/lib/PhpParser/Lexer/TokenEmulator/ReverseEmulator.php
 create mode 100644 vendor/nikic/php-parser/lib/PhpParser/Lexer/TokenEmulator/TokenEmulator.php
 delete mode 100644 vendor/nikic/php-parser/lib/PhpParser/Lexer/TokenEmulator/TokenEmulatorInterface.php
 create mode 100644 vendor/nikic/php-parser/lib/PhpParser/Node/Attribute.php
 create mode 100644 vendor/nikic/php-parser/lib/PhpParser/Node/AttributeGroup.php
 create mode 100644 vendor/nikic/php-parser/lib/PhpParser/Node/Expr/Match_.php
 create mode 100644 vendor/nikic/php-parser/lib/PhpParser/Node/Expr/NullsafeMethodCall.php
 create mode 100644 vendor/nikic/php-parser/lib/PhpParser/Node/Expr/NullsafePropertyFetch.php
 create mode 100644 vendor/nikic/php-parser/lib/PhpParser/Node/Expr/Throw_.php
 create mode 100644 vendor/nikic/php-parser/lib/PhpParser/Node/MatchArm.php
 create mode 100644 vendor/nikic/php-parser/lib/PhpParser/Node/UnionType.php
 create mode 100644 vendor/nikic/php-parser/lib/PhpParser/NodeVisitor/NodeConnectingVisitor.php
 create mode 100644 vendor/nikic/php-parser/lib/PhpParser/NodeVisitor/ParentConnectingVisitor.php
 delete mode 100644 vendor/nikic/php-parser/phpunit.xml.dist
 delete mode 100644 vendor/nikic/php-parser/test/PhpParser/Builder/ClassTest.php
 delete mode 100644 vendor/nikic/php-parser/test/PhpParser/Builder/FunctionTest.php
 delete mode 100644 vendor/nikic/php-parser/test/PhpParser/Builder/InterfaceTest.php
 delete mode 100644 vendor/nikic/php-parser/test/PhpParser/Builder/MethodTest.php
 delete mode 100644 vendor/nikic/php-parser/test/PhpParser/Builder/NamespaceTest.php
 delete mode 100644 vendor/nikic/php-parser/test/PhpParser/Builder/ParamTest.php
 delete mode 100644 vendor/nikic/php-parser/test/PhpParser/Builder/PropertyTest.php
 delete mode 100644 vendor/nikic/php-parser/test/PhpParser/Builder/TraitTest.php
 delete mode 100644 vendor/nikic/php-parser/test/PhpParser/Builder/TraitUseAdaptationTest.php
 delete mode 100644 vendor/nikic/php-parser/test/PhpParser/Builder/TraitUseTest.php
 delete mode 100644 vendor/nikic/php-parser/test/PhpParser/Builder/UseTest.php
 delete mode 100644 vendor/nikic/php-parser/test/PhpParser/BuilderFactoryTest.php
 delete mode 100644 vendor/nikic/php-parser/test/PhpParser/CodeParsingTest.php
 delete mode 100644 vendor/nikic/php-parser/test/PhpParser/CodeTestAbstract.php
 delete mode 100644 vendor/nikic/php-parser/test/PhpParser/CodeTestParser.php
 delete mode 100644 vendor/nikic/php-parser/test/PhpParser/CommentTest.php
 delete mode 100644 vendor/nikic/php-parser/test/PhpParser/ConstExprEvaluatorTest.php
 delete mode 100644 vendor/nikic/php-parser/test/PhpParser/ErrorHandler/CollectingTest.php
 delete mode 100644 vendor/nikic/php-parser/test/PhpParser/ErrorHandler/ThrowingTest.php
 delete mode 100644 vendor/nikic/php-parser/test/PhpParser/ErrorTest.php
 delete mode 100644 vendor/nikic/php-parser/test/PhpParser/Internal/DifferTest.php
 delete mode 100644 vendor/nikic/php-parser/test/PhpParser/JsonDecoderTest.php
 delete mode 100644 vendor/nikic/php-parser/test/PhpParser/Lexer/EmulativeTest.php
 delete mode 100644 vendor/nikic/php-parser/test/PhpParser/LexerTest.php
 delete mode 100644 vendor/nikic/php-parser/test/PhpParser/NameContextTest.php
 delete mode 100644 vendor/nikic/php-parser/test/PhpParser/Node/IdentifierTest.php
 delete mode 100644 vendor/nikic/php-parser/test/PhpParser/Node/NameTest.php
 delete mode 100644 vendor/nikic/php-parser/test/PhpParser/Node/Scalar/MagicConstTest.php
 delete mode 100644 vendor/nikic/php-parser/test/PhpParser/Node/Scalar/StringTest.php
 delete mode 100644 vendor/nikic/php-parser/test/PhpParser/Node/Stmt/ClassConstTest.php
 delete mode 100644 vendor/nikic/php-parser/test/PhpParser/Node/Stmt/ClassMethodTest.php
 delete mode 100644 vendor/nikic/php-parser/test/PhpParser/Node/Stmt/ClassTest.php
 delete mode 100644 vendor/nikic/php-parser/test/PhpParser/Node/Stmt/InterfaceTest.php
 delete mode 100644 vendor/nikic/php-parser/test/PhpParser/Node/Stmt/PropertyTest.php
 delete mode 100644 vendor/nikic/php-parser/test/PhpParser/NodeAbstractTest.php
 delete mode 100644 vendor/nikic/php-parser/test/PhpParser/NodeDumperTest.php
 delete mode 100644 vendor/nikic/php-parser/test/PhpParser/NodeFinderTest.php
 delete mode 100644 vendor/nikic/php-parser/test/PhpParser/NodeTraverserTest.php
 delete mode 100644 vendor/nikic/php-parser/test/PhpParser/NodeVisitor/FindingVisitorTest.php
 delete mode 100644 vendor/nikic/php-parser/test/PhpParser/NodeVisitor/FirstFindingVisitorTest.php
 delete mode 100644 vendor/nikic/php-parser/test/PhpParser/NodeVisitor/NameResolverTest.php
 delete mode 100644 vendor/nikic/php-parser/test/PhpParser/Parser/MultipleTest.php
 delete mode 100644 vendor/nikic/php-parser/test/PhpParser/Parser/Php5Test.php
 delete mode 100644 vendor/nikic/php-parser/test/PhpParser/Parser/Php7Test.php
 delete mode 100644 vendor/nikic/php-parser/test/PhpParser/ParserFactoryTest.php
 delete mode 100644 vendor/nikic/php-parser/test/PhpParser/ParserTest.php
 delete mode 100644 vendor/nikic/php-parser/test/PhpParser/PrettyPrinterTest.php
 delete mode 100644 vendor/nikic/php-parser/test/bootstrap.php
 delete mode 100644 vendor/nikic/php-parser/test/code/formatPreservation/addingPropertyType.test
 delete mode 100644 vendor/nikic/php-parser/test/code/formatPreservation/anonClasses.test
 delete mode 100644 vendor/nikic/php-parser/test/code/formatPreservation/array_spread.test
 delete mode 100644 vendor/nikic/php-parser/test/code/formatPreservation/arrow_function.test
 delete mode 100644 vendor/nikic/php-parser/test/code/formatPreservation/basic.test
 delete mode 100644 vendor/nikic/php-parser/test/code/formatPreservation/blockConversion.test
 delete mode 100644 vendor/nikic/php-parser/test/code/formatPreservation/comments.test
 delete mode 100644 vendor/nikic/php-parser/test/code/formatPreservation/emptyListInsertion.test
 delete mode 100644 vendor/nikic/php-parser/test/code/formatPreservation/fixup.test
 delete mode 100644 vendor/nikic/php-parser/test/code/formatPreservation/inlineHtml.test
 delete mode 100644 vendor/nikic/php-parser/test/code/formatPreservation/insertionOfNullable.test
 delete mode 100644 vendor/nikic/php-parser/test/code/formatPreservation/listInsertion.test
 delete mode 100644 vendor/nikic/php-parser/test/code/formatPreservation/listInsertionIndentation.test
 delete mode 100644 vendor/nikic/php-parser/test/code/formatPreservation/listRemoval.test
 delete mode 100644 vendor/nikic/php-parser/test/code/formatPreservation/modifierChange.test
 delete mode 100644 vendor/nikic/php-parser/test/code/formatPreservation/nopCommentAtEnd.test
 delete mode 100644 vendor/nikic/php-parser/test/code/formatPreservation/removalViaNull.test
 delete mode 100644 vendor/nikic/php-parser/test/code/formatPreservation/removingPropertyType.test
 delete mode 100644 vendor/nikic/php-parser/test/code/formatPreservation/traitAlias.test
 delete mode 100644 vendor/nikic/php-parser/test/code/parser/blockComments.test
 delete mode 100644 vendor/nikic/php-parser/test/code/parser/commentAtEndOfClass.test
 delete mode 100644 vendor/nikic/php-parser/test/code/parser/comments.test
 delete mode 100644 vendor/nikic/php-parser/test/code/parser/errorHandling/eofError.test
 delete mode 100644 vendor/nikic/php-parser/test/code/parser/errorHandling/lexerErrors.test
 delete mode 100644 vendor/nikic/php-parser/test/code/parser/errorHandling/recovery.test
 delete mode 100644 vendor/nikic/php-parser/test/code/parser/expr/arrayDef.test
 delete mode 100644 vendor/nikic/php-parser/test/code/parser/expr/arrayDestructuring.test
 delete mode 100644 vendor/nikic/php-parser/test/code/parser/expr/arraySpread.test
 delete mode 100644 vendor/nikic/php-parser/test/code/parser/expr/arrow_function.test
 delete mode 100644 vendor/nikic/php-parser/test/code/parser/expr/assign.test
 delete mode 100644 vendor/nikic/php-parser/test/code/parser/expr/assignNewByRef.test
 delete mode 100644 vendor/nikic/php-parser/test/code/parser/expr/cast.test
 delete mode 100644 vendor/nikic/php-parser/test/code/parser/expr/clone.test
 delete mode 100644 vendor/nikic/php-parser/test/code/parser/expr/closure.test
 delete mode 100644 vendor/nikic/php-parser/test/code/parser/expr/comparison.test
 delete mode 100644 vendor/nikic/php-parser/test/code/parser/expr/constant_expr.test
 delete mode 100644 vendor/nikic/php-parser/test/code/parser/expr/errorSuppress.test
 delete mode 100644 vendor/nikic/php-parser/test/code/parser/expr/exit.test
 delete mode 100644 vendor/nikic/php-parser/test/code/parser/expr/fetchAndCall/args.test
 delete mode 100644 vendor/nikic/php-parser/test/code/parser/expr/fetchAndCall/constFetch.test
 delete mode 100644 vendor/nikic/php-parser/test/code/parser/expr/fetchAndCall/constantDeref.test
 delete mode 100644 vendor/nikic/php-parser/test/code/parser/expr/fetchAndCall/funcCall.test
 delete mode 100644 vendor/nikic/php-parser/test/code/parser/expr/fetchAndCall/newDeref.test
 delete mode 100644 vendor/nikic/php-parser/test/code/parser/expr/fetchAndCall/objectAccess.test
 delete mode 100644 vendor/nikic/php-parser/test/code/parser/expr/fetchAndCall/simpleArrayAccess.test
 delete mode 100644 vendor/nikic/php-parser/test/code/parser/expr/fetchAndCall/staticCall.test
 delete mode 100644 vendor/nikic/php-parser/test/code/parser/expr/fetchAndCall/staticPropertyFetch.test
 delete mode 100644 vendor/nikic/php-parser/test/code/parser/expr/includeAndEval.test
 delete mode 100644 vendor/nikic/php-parser/test/code/parser/expr/issetAndEmpty.test
 delete mode 100644 vendor/nikic/php-parser/test/code/parser/expr/listReferences.test
 delete mode 100644 vendor/nikic/php-parser/test/code/parser/expr/listWithKeys.test
 delete mode 100644 vendor/nikic/php-parser/test/code/parser/expr/logic.test
 delete mode 100644 vendor/nikic/php-parser/test/code/parser/expr/math.test
 delete mode 100644 vendor/nikic/php-parser/test/code/parser/expr/new.test
 delete mode 100644 vendor/nikic/php-parser/test/code/parser/expr/newWithoutClass.test
 delete mode 100644 vendor/nikic/php-parser/test/code/parser/expr/print.test
 delete mode 100644 vendor/nikic/php-parser/test/code/parser/expr/shellExec.test
 delete mode 100644 vendor/nikic/php-parser/test/code/parser/expr/ternaryAndCoalesce.test
 delete mode 100644 vendor/nikic/php-parser/test/code/parser/expr/trailingCommas.test
 delete mode 100644 vendor/nikic/php-parser/test/code/parser/expr/uvs/globalNonSimpleVarError.test
 delete mode 100644 vendor/nikic/php-parser/test/code/parser/expr/uvs/indirectCall.test
 delete mode 100644 vendor/nikic/php-parser/test/code/parser/expr/uvs/isset.test
 delete mode 100644 vendor/nikic/php-parser/test/code/parser/expr/uvs/misc.test
 delete mode 100644 vendor/nikic/php-parser/test/code/parser/expr/uvs/new.test
 delete mode 100644 vendor/nikic/php-parser/test/code/parser/expr/uvs/staticProperty.test
 delete mode 100644 vendor/nikic/php-parser/test/code/parser/expr/variable.test
 delete mode 100644 vendor/nikic/php-parser/test/code/parser/nopPositions.test
 delete mode 100644 vendor/nikic/php-parser/test/code/parser/scalar/constantString.test
 delete mode 100644 vendor/nikic/php-parser/test/code/parser/scalar/docString.test
 delete mode 100644 vendor/nikic/php-parser/test/code/parser/scalar/docStringNewlines.test
 delete mode 100644 vendor/nikic/php-parser/test/code/parser/scalar/encapsedNegVarOffset.test
 delete mode 100644 vendor/nikic/php-parser/test/code/parser/scalar/encapsedString.test
 delete mode 100644 vendor/nikic/php-parser/test/code/parser/scalar/flexibleDocString.test
 delete mode 100644 vendor/nikic/php-parser/test/code/parser/scalar/flexibleDocStringErrors.test
 delete mode 100644 vendor/nikic/php-parser/test/code/parser/scalar/float.test
 delete mode 100644 vendor/nikic/php-parser/test/code/parser/scalar/int.test
 delete mode 100644 vendor/nikic/php-parser/test/code/parser/scalar/invalidOctal.test
 delete mode 100644 vendor/nikic/php-parser/test/code/parser/scalar/magicConst.test
 delete mode 100644 vendor/nikic/php-parser/test/code/parser/scalar/unicodeEscape.test
 delete mode 100644 vendor/nikic/php-parser/test/code/parser/semiReserved.test
 delete mode 100644 vendor/nikic/php-parser/test/code/parser/stmt/blocklessStatement.test
 delete mode 100644 vendor/nikic/php-parser/test/code/parser/stmt/class/abstract.test
 delete mode 100644 vendor/nikic/php-parser/test/code/parser/stmt/class/anonymous.test
 delete mode 100644 vendor/nikic/php-parser/test/code/parser/stmt/class/conditional.test
 delete mode 100644 vendor/nikic/php-parser/test/code/parser/stmt/class/constModifierErrors.test
 delete mode 100644 vendor/nikic/php-parser/test/code/parser/stmt/class/constModifiers.test
 delete mode 100644 vendor/nikic/php-parser/test/code/parser/stmt/class/final.test
 delete mode 100644 vendor/nikic/php-parser/test/code/parser/stmt/class/implicitPublic.test
 delete mode 100644 vendor/nikic/php-parser/test/code/parser/stmt/class/interface.test
 delete mode 100644 vendor/nikic/php-parser/test/code/parser/stmt/class/modifier.test
 delete mode 100644 vendor/nikic/php-parser/test/code/parser/stmt/class/name.test
 delete mode 100644 vendor/nikic/php-parser/test/code/parser/stmt/class/php4Style.test
 delete mode 100644 vendor/nikic/php-parser/test/code/parser/stmt/class/propertyTypes.test
 delete mode 100644 vendor/nikic/php-parser/test/code/parser/stmt/class/simple.test
 delete mode 100644 vendor/nikic/php-parser/test/code/parser/stmt/class/staticMethod.test
 delete mode 100644 vendor/nikic/php-parser/test/code/parser/stmt/class/trait.test
 delete mode 100644 vendor/nikic/php-parser/test/code/parser/stmt/const.test
 delete mode 100644 vendor/nikic/php-parser/test/code/parser/stmt/controlFlow.test
 delete mode 100644 vendor/nikic/php-parser/test/code/parser/stmt/declare.test
 delete mode 100644 vendor/nikic/php-parser/test/code/parser/stmt/echo.test
 delete mode 100644 vendor/nikic/php-parser/test/code/parser/stmt/function/builtinTypeDeclarations.test
 delete mode 100644 vendor/nikic/php-parser/test/code/parser/stmt/function/byRef.test
 delete mode 100644 vendor/nikic/php-parser/test/code/parser/stmt/function/conditional.test
 delete mode 100644 vendor/nikic/php-parser/test/code/parser/stmt/function/defaultValues.test
 delete mode 100644 vendor/nikic/php-parser/test/code/parser/stmt/function/nullableTypes.test
 delete mode 100644 vendor/nikic/php-parser/test/code/parser/stmt/function/returnTypes.test
 delete mode 100644 vendor/nikic/php-parser/test/code/parser/stmt/function/specialVars.test
 delete mode 100644 vendor/nikic/php-parser/test/code/parser/stmt/function/typeDeclarations.test
 delete mode 100644 vendor/nikic/php-parser/test/code/parser/stmt/function/variadic.test
 delete mode 100644 vendor/nikic/php-parser/test/code/parser/stmt/function/variadicDefaultValue.test
 delete mode 100644 vendor/nikic/php-parser/test/code/parser/stmt/generator/basic.test
 delete mode 100644 vendor/nikic/php-parser/test/code/parser/stmt/generator/yieldPrecedence.test
 delete mode 100644 vendor/nikic/php-parser/test/code/parser/stmt/generator/yieldUnaryPrecedence.test
 delete mode 100644 vendor/nikic/php-parser/test/code/parser/stmt/haltCompiler.test
 delete mode 100644 vendor/nikic/php-parser/test/code/parser/stmt/haltCompilerInvalidSyntax.test
 delete mode 100644 vendor/nikic/php-parser/test/code/parser/stmt/haltCompilerOffset.test
 delete mode 100644 vendor/nikic/php-parser/test/code/parser/stmt/haltCompilerOutermostScope.test
 delete mode 100644 vendor/nikic/php-parser/test/code/parser/stmt/hashbang.test
 delete mode 100644 vendor/nikic/php-parser/test/code/parser/stmt/if.test
 delete mode 100644 vendor/nikic/php-parser/test/code/parser/stmt/inlineHTML.test
 delete mode 100644 vendor/nikic/php-parser/test/code/parser/stmt/loop/do.test
 delete mode 100644 vendor/nikic/php-parser/test/code/parser/stmt/loop/for.test
 delete mode 100644 vendor/nikic/php-parser/test/code/parser/stmt/loop/foreach.test
 delete mode 100644 vendor/nikic/php-parser/test/code/parser/stmt/loop/while.test
 delete mode 100644 vendor/nikic/php-parser/test/code/parser/stmt/multiCatch.test
 delete mode 100644 vendor/nikic/php-parser/test/code/parser/stmt/namespace/alias.test
 delete mode 100644 vendor/nikic/php-parser/test/code/parser/stmt/namespace/braced.test
 delete mode 100644 vendor/nikic/php-parser/test/code/parser/stmt/namespace/commentAfterNamespace.test
 delete mode 100644 vendor/nikic/php-parser/test/code/parser/stmt/namespace/groupUse.test
 delete mode 100644 vendor/nikic/php-parser/test/code/parser/stmt/namespace/groupUseErrors.test
 delete mode 100644 vendor/nikic/php-parser/test/code/parser/stmt/namespace/groupUsePositions.test
 delete mode 100644 vendor/nikic/php-parser/test/code/parser/stmt/namespace/groupUseTrailingComma.test
 delete mode 100644 vendor/nikic/php-parser/test/code/parser/stmt/namespace/invalidName.test
 delete mode 100644 vendor/nikic/php-parser/test/code/parser/stmt/namespace/mix.test
 delete mode 100644 vendor/nikic/php-parser/test/code/parser/stmt/namespace/name.test
 delete mode 100644 vendor/nikic/php-parser/test/code/parser/stmt/namespace/nested.test
 delete mode 100644 vendor/nikic/php-parser/test/code/parser/stmt/namespace/notBraced.test
 delete mode 100644 vendor/nikic/php-parser/test/code/parser/stmt/namespace/nsAfterHashbang.test
 delete mode 100644 vendor/nikic/php-parser/test/code/parser/stmt/namespace/outsideStmt.test
 delete mode 100644 vendor/nikic/php-parser/test/code/parser/stmt/namespace/outsideStmtInvalid.test
 delete mode 100644 vendor/nikic/php-parser/test/code/parser/stmt/switch.test
 delete mode 100644 vendor/nikic/php-parser/test/code/parser/stmt/tryCatch.test
 delete mode 100644 vendor/nikic/php-parser/test/code/parser/stmt/tryWithoutCatch.test
 delete mode 100644 vendor/nikic/php-parser/test/code/parser/stmt/unset.test
 delete mode 100644 vendor/nikic/php-parser/test/code/prettyPrinter/comments.test
 delete mode 100644 vendor/nikic/php-parser/test/code/prettyPrinter/commentsInCommaList.test
 delete mode 100644 vendor/nikic/php-parser/test/code/prettyPrinter/expr/anonymousClass.test
 delete mode 100644 vendor/nikic/php-parser/test/code/prettyPrinter/expr/arrayDestructuring.test
 delete mode 100644 vendor/nikic/php-parser/test/code/prettyPrinter/expr/arraySpread.test
 delete mode 100644 vendor/nikic/php-parser/test/code/prettyPrinter/expr/arrow_function.test
 delete mode 100644 vendor/nikic/php-parser/test/code/prettyPrinter/expr/call.test
 delete mode 100644 vendor/nikic/php-parser/test/code/prettyPrinter/expr/closure.test
 delete mode 100644 vendor/nikic/php-parser/test/code/prettyPrinter/expr/constant_deref.test
 delete mode 100644 vendor/nikic/php-parser/test/code/prettyPrinter/expr/docStrings.test
 delete mode 100644 vendor/nikic/php-parser/test/code/prettyPrinter/expr/include.test
 delete mode 100644 vendor/nikic/php-parser/test/code/prettyPrinter/expr/intrinsics.test
 delete mode 100644 vendor/nikic/php-parser/test/code/prettyPrinter/expr/list.test
 delete mode 100644 vendor/nikic/php-parser/test/code/prettyPrinter/expr/literals.test
 delete mode 100644 vendor/nikic/php-parser/test/code/prettyPrinter/expr/numbers.test
 delete mode 100644 vendor/nikic/php-parser/test/code/prettyPrinter/expr/operators.test
 delete mode 100644 vendor/nikic/php-parser/test/code/prettyPrinter/expr/parentheses.test
 delete mode 100644 vendor/nikic/php-parser/test/code/prettyPrinter/expr/shortArraySyntax.test
 delete mode 100644 vendor/nikic/php-parser/test/code/prettyPrinter/expr/stringEscaping.test
 delete mode 100644 vendor/nikic/php-parser/test/code/prettyPrinter/expr/uvs.test
 delete mode 100644 vendor/nikic/php-parser/test/code/prettyPrinter/expr/variables.test
 delete mode 100644 vendor/nikic/php-parser/test/code/prettyPrinter/expr/yield.test
 delete mode 100644 vendor/nikic/php-parser/test/code/prettyPrinter/inlineHTMLandPHPtest.file-test
 delete mode 100644 vendor/nikic/php-parser/test/code/prettyPrinter/nestedInlineHTML.test
 delete mode 100644 vendor/nikic/php-parser/test/code/prettyPrinter/onlyInlineHTML.file-test
 delete mode 100644 vendor/nikic/php-parser/test/code/prettyPrinter/onlyPHP.file-test
 delete mode 100644 vendor/nikic/php-parser/test/code/prettyPrinter/stmt/alias.test
 delete mode 100644 vendor/nikic/php-parser/test/code/prettyPrinter/stmt/break_continue.test
 delete mode 100644 vendor/nikic/php-parser/test/code/prettyPrinter/stmt/class.test
 delete mode 100644 vendor/nikic/php-parser/test/code/prettyPrinter/stmt/class_const.test
 delete mode 100644 vendor/nikic/php-parser/test/code/prettyPrinter/stmt/const.test
 delete mode 100644 vendor/nikic/php-parser/test/code/prettyPrinter/stmt/declare.test
 delete mode 100644 vendor/nikic/php-parser/test/code/prettyPrinter/stmt/do_while.test
 delete mode 100644 vendor/nikic/php-parser/test/code/prettyPrinter/stmt/for.test
 delete mode 100644 vendor/nikic/php-parser/test/code/prettyPrinter/stmt/foreach.test
 delete mode 100644 vendor/nikic/php-parser/test/code/prettyPrinter/stmt/function_signatures.test
 delete mode 100644 vendor/nikic/php-parser/test/code/prettyPrinter/stmt/global_static_variables.test
 delete mode 100644 vendor/nikic/php-parser/test/code/prettyPrinter/stmt/goto.test
 delete mode 100644 vendor/nikic/php-parser/test/code/prettyPrinter/stmt/groupUse.test
 delete mode 100644 vendor/nikic/php-parser/test/code/prettyPrinter/stmt/haltCompiler.file-test
 delete mode 100644 vendor/nikic/php-parser/test/code/prettyPrinter/stmt/if.test
 delete mode 100644 vendor/nikic/php-parser/test/code/prettyPrinter/stmt/multiCatch.test
 delete mode 100644 vendor/nikic/php-parser/test/code/prettyPrinter/stmt/namespaces.test
 delete mode 100644 vendor/nikic/php-parser/test/code/prettyPrinter/stmt/nullable_types.test
 delete mode 100644 vendor/nikic/php-parser/test/code/prettyPrinter/stmt/properties.test
 delete mode 100644 vendor/nikic/php-parser/test/code/prettyPrinter/stmt/switch.test
 delete mode 100644 vendor/nikic/php-parser/test/code/prettyPrinter/stmt/throw.test
 delete mode 100644 vendor/nikic/php-parser/test/code/prettyPrinter/stmt/traitUse.test
 delete mode 100644 vendor/nikic/php-parser/test/code/prettyPrinter/stmt/tryCatch.test
 delete mode 100644 vendor/nikic/php-parser/test/code/prettyPrinter/stmt/while.test
 delete mode 100644 vendor/nikic/php-parser/test/updateTests.php
 delete mode 100755 vendor/nikic/php-parser/test_old/run-php-src.sh
 delete mode 100644 vendor/nikic/php-parser/test_old/run.php
 create mode 100644 vendor/oomphinc/composer-installers-extender/.editorconfig
 create mode 100644 vendor/oomphinc/composer-installers-extender/.travis.yml
 create mode 100644 vendor/oomphinc/composer-installers-extender/CHANGELOG.md
 create mode 100644 vendor/oomphinc/composer-installers-extender/LICENSE
 create mode 100644 vendor/oomphinc/composer-installers-extender/phpcs.xml
 create mode 100644 vendor/oomphinc/composer-installers-extender/phpunit.xml
 delete mode 100644 vendor/oomphinc/composer-installers-extender/src/Installer.php
 delete mode 100644 vendor/oomphinc/composer-installers-extender/src/InstallerHelper.php
 create mode 100644 vendor/oomphinc/composer-installers-extender/src/Installers/CustomInstaller.php
 create mode 100644 vendor/oomphinc/composer-installers-extender/src/Installers/Installer.php
 create mode 100644 vendor/oomphinc/composer-installers-extender/tests/src/Installers/CustomInstallerTest.php
 create mode 100644 vendor/oomphinc/composer-installers-extender/tests/src/Installers/InstallerTest.php
 create mode 100644 vendor/oomphinc/composer-installers-extender/tests/src/PluginTest.php
 rename vendor/{jakub-onderka/php-console-highlighter => pantheon-systems/quicksilver-pushback}/LICENSE (96%)
 create mode 100644 vendor/pantheon-systems/quicksilver-pushback/README.md
 create mode 100644 vendor/pantheon-systems/quicksilver-pushback/composer.json
 create mode 100644 vendor/pantheon-systems/quicksilver-pushback/lean-repo-utils.php
 create mode 100644 vendor/pantheon-systems/quicksilver-pushback/push-back-to-github.php
 delete mode 100644 vendor/psy/psysh/.editorconfig
 delete mode 100644 vendor/psy/psysh/.github/CONTRIBUTING.md
 delete mode 100644 vendor/psy/psysh/.gitignore
 delete mode 100644 vendor/psy/psysh/.php_cs
 delete mode 100644 vendor/psy/psysh/.styleci.yml
 delete mode 100644 vendor/psy/psysh/.travis.yml
 delete mode 100644 vendor/psy/psysh/Makefile
 delete mode 100755 vendor/psy/psysh/bin/build-stub
 delete mode 100644 vendor/psy/psysh/box.json.dist
 delete mode 100644 vendor/psy/psysh/phpunit.xml.dist
 create mode 100644 vendor/psy/psysh/src/CodeCleaner/EmptyArrayDimFetchPass.php
 create mode 100644 vendor/psy/psysh/src/CodeCleaner/LabelContextPass.php
 delete mode 100644 vendor/psy/psysh/src/CodeCleaner/LegacyEmptyPass.php
 create mode 100644 vendor/psy/psysh/src/CodeCleaner/ReturnTypePass.php
 delete mode 100644 vendor/psy/psysh/src/Command/ListCommand/InterfaceEnumerator.php
 delete mode 100644 vendor/psy/psysh/src/Command/ListCommand/TraitEnumerator.php
 create mode 100644 vendor/psy/psysh/src/Exception/UnexpectedTargetException.php
 delete mode 100644 vendor/psy/psysh/src/ExecutionLoop.php
 create mode 100644 vendor/psy/psysh/src/Formatter/ReflectorFormatter.php
 create mode 100644 vendor/psy/psysh/src/Formatter/TraceFormatter.php
 create mode 100644 vendor/psy/psysh/src/Reflection/ReflectionNamespace.php
 delete mode 100644 vendor/psy/psysh/test/ClassWithSecrets.php
 delete mode 100644 vendor/psy/psysh/test/CodeCleaner/AbstractClassPassTest.php
 delete mode 100644 vendor/psy/psysh/test/CodeCleaner/AssignThisVariablePassTest.php
 delete mode 100644 vendor/psy/psysh/test/CodeCleaner/CallTimePassByReferencePassTest.php
 delete mode 100644 vendor/psy/psysh/test/CodeCleaner/CalledClassPassTest.php
 delete mode 100644 vendor/psy/psysh/test/CodeCleaner/CodeCleanerTestCase.php
 delete mode 100644 vendor/psy/psysh/test/CodeCleaner/ExitPassTest.php
 delete mode 100644 vendor/psy/psysh/test/CodeCleaner/FinalClassPassTest.php
 delete mode 100644 vendor/psy/psysh/test/CodeCleaner/Fixtures/ClassWithCallStatic.php
 delete mode 100644 vendor/psy/psysh/test/CodeCleaner/Fixtures/ClassWithStatic.php
 delete mode 100644 vendor/psy/psysh/test/CodeCleaner/Fixtures/TraitWithStatic.php
 delete mode 100644 vendor/psy/psysh/test/CodeCleaner/FunctionContextPassTest.php
 delete mode 100644 vendor/psy/psysh/test/CodeCleaner/FunctionReturnInWriteContextPassTest.php
 delete mode 100644 vendor/psy/psysh/test/CodeCleaner/ImplicitReturnPassTest.php
 delete mode 100644 vendor/psy/psysh/test/CodeCleaner/InstanceOfPassTest.php
 delete mode 100644 vendor/psy/psysh/test/CodeCleaner/LeavePsyshAlonePassTest.php
 delete mode 100644 vendor/psy/psysh/test/CodeCleaner/LegacyEmptyPassTest.php
 delete mode 100644 vendor/psy/psysh/test/CodeCleaner/ListPassTest.php
 delete mode 100644 vendor/psy/psysh/test/CodeCleaner/LoopContextPassTest.php
 delete mode 100644 vendor/psy/psysh/test/CodeCleaner/MagicConstantsPassTest.php
 delete mode 100644 vendor/psy/psysh/test/CodeCleaner/NamespacePassTest.php
 delete mode 100644 vendor/psy/psysh/test/CodeCleaner/NoReturnValueTest.php
 delete mode 100644 vendor/psy/psysh/test/CodeCleaner/PassableByReferencePassTest.php
 delete mode 100644 vendor/psy/psysh/test/CodeCleaner/RequirePassTest.php
 delete mode 100644 vendor/psy/psysh/test/CodeCleaner/StrictTypesPassTest.php
 delete mode 100644 vendor/psy/psysh/test/CodeCleaner/UseStatementPassTest.php
 delete mode 100644 vendor/psy/psysh/test/CodeCleaner/ValidClassNamePassTest.php
 delete mode 100644 vendor/psy/psysh/test/CodeCleaner/ValidConstantPassTest.php
 delete mode 100644 vendor/psy/psysh/test/CodeCleaner/ValidConstructorPassTest.php
 delete mode 100644 vendor/psy/psysh/test/CodeCleaner/ValidFunctionNamePassTest.php
 delete mode 100644 vendor/psy/psysh/test/CodeCleanerTest.php
 delete mode 100644 vendor/psy/psysh/test/Command/ExitCommandTest.php
 delete mode 100644 vendor/psy/psysh/test/Command/ThrowUpCommandTest.php
 delete mode 100644 vendor/psy/psysh/test/Command/TimeitCommand/TimeitVisitorTest.php
 delete mode 100644 vendor/psy/psysh/test/ConfigurationTest.php
 delete mode 100644 vendor/psy/psysh/test/ConsoleColorFactoryTest.php
 delete mode 100644 vendor/psy/psysh/test/ContextTest.php
 delete mode 100644 vendor/psy/psysh/test/Exception/BreakExceptionTest.php
 delete mode 100644 vendor/psy/psysh/test/Exception/ErrorExceptionTest.php
 delete mode 100644 vendor/psy/psysh/test/Exception/FatalErrorExceptionTest.php
 delete mode 100644 vendor/psy/psysh/test/Exception/ParseErrorExceptionTest.php
 delete mode 100644 vendor/psy/psysh/test/Exception/RuntimeExceptionTest.php
 delete mode 100644 vendor/psy/psysh/test/Exception/ThrowUpExceptionTest.php
 delete mode 100644 vendor/psy/psysh/test/Exception/TypeErrorExceptionTest.php
 delete mode 100644 vendor/psy/psysh/test/FakeShell.php
 delete mode 100644 vendor/psy/psysh/test/Formatter/CodeFormatterTest.php
 delete mode 100644 vendor/psy/psysh/test/Formatter/DocblockFormatterTest.php
 delete mode 100644 vendor/psy/psysh/test/Formatter/Fixtures/BoringTrait.php
 delete mode 100644 vendor/psy/psysh/test/Formatter/Fixtures/SomeClass.php
 delete mode 100644 vendor/psy/psysh/test/Formatter/SignatureFormatterTest.php
 delete mode 100644 vendor/psy/psysh/test/Input/CodeArgumentTest.php
 delete mode 100644 vendor/psy/psysh/test/Input/FilterOptionsTest.php
 delete mode 100644 vendor/psy/psysh/test/Input/ShellInputTest.php
 delete mode 100644 vendor/psy/psysh/test/ParserTestCase.php
 delete mode 100644 vendor/psy/psysh/test/Readline/GNUReadlineTest.php
 delete mode 100644 vendor/psy/psysh/test/Readline/HoaConsoleTest.php
 delete mode 100644 vendor/psy/psysh/test/Readline/LibeditTest.php
 delete mode 100644 vendor/psy/psysh/test/Readline/TransientTest.php
 delete mode 100644 vendor/psy/psysh/test/Reflection/ReflectionClassConstantTest.php
 delete mode 100644 vendor/psy/psysh/test/Reflection/ReflectionConstantBCTest.php
 delete mode 100644 vendor/psy/psysh/test/Reflection/ReflectionConstantTest.php
 delete mode 100644 vendor/psy/psysh/test/Reflection/ReflectionLanguageConstructParameterTest.php
 delete mode 100644 vendor/psy/psysh/test/Reflection/ReflectionLanguageConstructTest.php
 delete mode 100644 vendor/psy/psysh/test/ShellTest.php
 delete mode 100644 vendor/psy/psysh/test/Sudo/SudoVisitorTest.php
 delete mode 100644 vendor/psy/psysh/test/SudoTest.php
 delete mode 100644 vendor/psy/psysh/test/TabCompletion/AutoCompleterTest.php
 delete mode 100644 vendor/psy/psysh/test/TabCompletion/StaticSample.php
 delete mode 100644 vendor/psy/psysh/test/Util/DocblockTest.php
 delete mode 100644 vendor/psy/psysh/test/Util/MirrorTest.php
 delete mode 100644 vendor/psy/psysh/test/Util/StrTest.php
 delete mode 100644 vendor/psy/psysh/test/VersionUpdater/GitHubCheckerTest.php
 delete mode 100644 vendor/psy/psysh/test/VersionUpdater/NoopCheckerTest.php
 delete mode 100644 vendor/psy/psysh/test/fixtures/config.php
 delete mode 100644 vendor/psy/psysh/test/fixtures/default/.config/psysh/config.php
 delete mode 100644 vendor/psy/psysh/test/fixtures/default/.config/psysh/psysh_history
 delete mode 100644 vendor/psy/psysh/test/fixtures/default/.local/share/psysh/php_manual.sqlite
 delete mode 100644 vendor/psy/psysh/test/fixtures/empty.php
 delete mode 100644 vendor/psy/psysh/test/fixtures/legacy/.psysh/history
 delete mode 100644 vendor/psy/psysh/test/fixtures/legacy/.psysh/php_manual.sqlite
 delete mode 100644 vendor/psy/psysh/test/fixtures/legacy/.psysh/rc.php
 delete mode 100644 vendor/psy/psysh/test/fixtures/mixed/.psysh/config.php
 delete mode 100644 vendor/psy/psysh/test/fixtures/mixed/.psysh/psysh_history
 delete mode 100644 vendor/psy/psysh/test/fixtures/mixed/.psysh/rc.php
 delete mode 100644 vendor/psy/psysh/test/fixtures/project/.psysh.php
 delete mode 100644 vendor/psy/psysh/test/fixtures/unvis_fixtures.json
 delete mode 100755 vendor/psy/psysh/test/tools/gen_unvis_fixtures.py
 delete mode 100644 vendor/psy/psysh/test/tools/vis.py
 delete mode 100644 vendor/psy/psysh/vendor-bin/box/composer.json
 delete mode 100644 vendor/psy/psysh/vendor-bin/box/composer.lock
 create mode 100644 vendor/symfony/var-dumper/Tests/Fixtures/DateTimeChild.php
 create mode 100644 vendor/symfony/var-dumper/Tests/Fixtures/Php74.php
 create mode 100644 vendor/webflo/drupal-finder/LICENSE.txt

diff --git a/composer.json b/composer.json
index ee5ee5f08f..57663a158d 100644
--- a/composer.json
+++ b/composer.json
@@ -81,7 +81,8 @@
         "php": ">=7.3",
         "browserstate/history.js": "1.8",
         "ckeditor/indentblock": "4.8.0",
-        "cweagans/composer-patches": "^1.0",
+        "composer/installers": "^1.9",
+        "cweagans/composer-patches": "^1.7",
         "desandro/imagesloaded": "4.1.4",
         "desandro/masonry": "4.2",
         "dimsemenov/magnific-popup": "1.1",
@@ -186,10 +187,10 @@
         "drupal/webform": "5.19",
         "drupal/webform_views": "5.0-alpha2",
         "drush-ops/behat-drush-endpoint": "0.0.5",
-        "drush/drush": "9.7.1",
+        "drush/drush": "9.7.2",
         "enyo/dropzone": "5.1.1",
         "gdsmith/jquery.easing": "1.4.1",
-        "oomphinc/composer-installers-extender": "1.1.2",
+        "oomphinc/composer-installers-extender": "2.0",
         "pantheon-systems/quicksilver-pushback": "1.0.1",
         "rvtraveller/qs-composer-installer": "1.1",
         "zaporylie/composer-drupal-optimizations": "1.1"
diff --git a/composer.lock b/composer.lock
index 43807b0c60..9a7c89264c 100644
--- a/composer.lock
+++ b/composer.lock
@@ -4,7 +4,7 @@
         "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",
         "This file is @generated automatically"
     ],
-    "content-hash": "4dc33938bdd0ec165eeb79efb4e6d9d3",
+    "content-hash": "dc4b94b862b277119bee8b3d4c29fdf5",
     "packages": [
         {
             "name": "alchemy/zippy",
@@ -134,16 +134,16 @@
         },
         {
             "name": "chi-teck/drupal-code-generator",
-            "version": "1.30.3",
+            "version": "1.32.1",
             "source": {
                 "type": "git",
                 "url": "https://github.com/Chi-teck/drupal-code-generator.git",
-                "reference": "1da9f06843b6bf2b0e7d28fea4b6c1d79aead197"
+                "reference": "8abba7131ed4c89c1e8fc6dca0d05a4b6d0b2749"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/Chi-teck/drupal-code-generator/zipball/1da9f06843b6bf2b0e7d28fea4b6c1d79aead197",
-                "reference": "1da9f06843b6bf2b0e7d28fea4b6c1d79aead197",
+                "url": "https://api.github.com/repos/Chi-teck/drupal-code-generator/zipball/8abba7131ed4c89c1e8fc6dca0d05a4b6d0b2749",
+                "reference": "8abba7131ed4c89c1e8fc6dca0d05a4b6d0b2749",
                 "shasum": ""
             },
             "require": {
@@ -151,7 +151,7 @@
                 "php": ">=5.5.9",
                 "symfony/console": "^3.4 || ^4.0",
                 "symfony/filesystem": "^2.7 || ^3.4 || ^4.0",
-                "twig/twig": "^1.38.2 || ^2.10"
+                "twig/twig": "^1.41 || ^2.12"
             },
             "bin": [
                 "bin/dcg"
@@ -175,7 +175,7 @@
                 "GPL-2.0-or-later"
             ],
             "description": "Drupal code generator",
-            "time": "2019-06-29T10:29:45+00:00"
+            "time": "2020-07-15T06:08:04+00:00"
         },
         {
             "name": "ckeditor/indentblock",
@@ -485,25 +485,25 @@
         },
         {
             "name": "consolidation/annotated-command",
-            "version": "2.12.0",
+            "version": "2.12.1",
             "source": {
                 "type": "git",
                 "url": "https://github.com/consolidation/annotated-command.git",
-                "reference": "512a2e54c98f3af377589de76c43b24652bcb789"
+                "reference": "0ee361762df2274f360c085e3239784a53f850b5"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/consolidation/annotated-command/zipball/512a2e54c98f3af377589de76c43b24652bcb789",
-                "reference": "512a2e54c98f3af377589de76c43b24652bcb789",
+                "url": "https://api.github.com/repos/consolidation/annotated-command/zipball/0ee361762df2274f360c085e3239784a53f850b5",
+                "reference": "0ee361762df2274f360c085e3239784a53f850b5",
                 "shasum": ""
             },
             "require": {
-                "consolidation/output-formatters": "^3.4",
+                "consolidation/output-formatters": "^3.5.1",
                 "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"
+                "symfony/finder": "^2.5|^3|^4|^5"
             },
             "require-dev": {
                 "g1a/composer-test-scenarios": "^3",
@@ -514,6 +514,16 @@
             "type": "library",
             "extra": {
                 "scenarios": {
+                    "finder5": {
+                        "require": {
+                            "symfony/finder": "^5"
+                        },
+                        "config": {
+                            "platform": {
+                                "php": "7.2.5"
+                            }
+                        }
+                    },
                     "symfony4": {
                         "require": {
                             "symfony/console": "^4.0"
@@ -577,7 +587,7 @@
                 }
             ],
             "description": "Initialize Symfony Console commands from annotated command class methods.",
-            "time": "2019-03-08T16:55:03+00:00"
+            "time": "2020-10-11T04:30:03+00:00"
         },
         {
             "name": "consolidation/config",
@@ -819,23 +829,23 @@
         },
         {
             "name": "consolidation/output-formatters",
-            "version": "3.5.0",
+            "version": "3.5.1",
             "source": {
                 "type": "git",
                 "url": "https://github.com/consolidation/output-formatters.git",
-                "reference": "99ec998ffb697e0eada5aacf81feebfb13023605"
+                "reference": "0d38f13051ef05c223a2bb8e962d668e24785196"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/consolidation/output-formatters/zipball/99ec998ffb697e0eada5aacf81feebfb13023605",
-                "reference": "99ec998ffb697e0eada5aacf81feebfb13023605",
+                "url": "https://api.github.com/repos/consolidation/output-formatters/zipball/0d38f13051ef05c223a2bb8e962d668e24785196",
+                "reference": "0d38f13051ef05c223a2bb8e962d668e24785196",
                 "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"
+                "symfony/finder": "^2.5|^3|^4|^5"
             },
             "require-dev": {
                 "g1a/composer-test-scenarios": "^3",
@@ -851,6 +861,16 @@
             "type": "library",
             "extra": {
                 "scenarios": {
+                    "finder5": {
+                        "require": {
+                            "symfony/finder": "^5"
+                        },
+                        "config": {
+                            "platform": {
+                                "php": "7.2.5"
+                            }
+                        }
+                    },
                     "symfony4": {
                         "require": {
                             "symfony/console": "^4.0"
@@ -916,54 +936,48 @@
                 }
             ],
             "description": "Format text by applying transformations provided by plug-in formatters.",
-            "time": "2019-05-30T23:16:01+00:00"
+            "time": "2020-10-11T04:15:32+00:00"
         },
         {
             "name": "consolidation/robo",
-            "version": "1.4.9",
+            "version": "1.4.13",
             "source": {
                 "type": "git",
                 "url": "https://github.com/consolidation/Robo.git",
-                "reference": "5c6b3840a45afda1cbffbb3bb1f94dd5f9f83345"
+                "reference": "fd28dcca1b935950ece26e63541fbdeeb09f7343"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/consolidation/Robo/zipball/5c6b3840a45afda1cbffbb3bb1f94dd5f9f83345",
-                "reference": "5c6b3840a45afda1cbffbb3bb1f94dd5f9f83345",
+                "url": "https://api.github.com/repos/consolidation/Robo/zipball/fd28dcca1b935950ece26e63541fbdeeb09f7343",
+                "reference": "fd28dcca1b935950ece26e63541fbdeeb09f7343",
                 "shasum": ""
             },
             "require": {
-                "consolidation/annotated-command": "^2.10.2",
-                "consolidation/config": "^1.2",
-                "consolidation/log": "~1",
-                "consolidation/output-formatters": "^3.1.13",
-                "consolidation/self-update": "^1",
-                "grasmash/yaml-expander": "^1.3",
-                "league/container": "^2.2",
+                "consolidation/annotated-command": "^2.12.1|^4.1",
+                "consolidation/config": "^1.2.1",
+                "consolidation/log": "^1.1.1|^2",
+                "consolidation/output-formatters": "^3.5.1|^4.1",
+                "consolidation/self-update": "^1.1.5",
+                "grasmash/yaml-expander": "^1.4",
+                "league/container": "^2.4.1",
                 "php": ">=5.5.0",
                 "symfony/console": "^2.8|^3|^4",
                 "symfony/event-dispatcher": "^2.5|^3|^4",
                 "symfony/filesystem": "^2.5|^3|^4",
-                "symfony/finder": "^2.5|^3|^4",
+                "symfony/finder": "^2.5|^3|^4|^5",
                 "symfony/process": "^2.5|^3|^4"
             },
             "replace": {
                 "codegyre/robo": "< 1.0"
             },
             "require-dev": {
-                "codeception/aspect-mock": "^1|^2.1.1",
-                "codeception/base": "^2.3.7",
-                "codeception/verify": "^0.3.2",
                 "g1a/composer-test-scenarios": "^3",
-                "goaop/framework": "~2.1.2",
-                "goaop/parser-reflection": "^1.1.0",
                 "natxet/cssmin": "3.0.4",
-                "nikic/php-parser": "^3.1.5",
-                "patchwork/jsqueeze": "~2",
+                "patchwork/jsqueeze": "^2",
                 "pear/archive_tar": "^1.4.4",
                 "php-coveralls/php-coveralls": "^1",
-                "phpunit/php-code-coverage": "~2|~4",
-                "squizlabs/php_codesniffer": "^2.8"
+                "phpunit/phpunit": "^5.7.27",
+                "squizlabs/php_codesniffer": "^3"
             },
             "suggest": {
                 "henrikbjorn/lurker": "For monitoring filesystem changes in taskWatch",
@@ -977,6 +991,16 @@
             "type": "library",
             "extra": {
                 "scenarios": {
+                    "finder5": {
+                        "require": {
+                            "symfony/finder": "^5"
+                        },
+                        "config": {
+                            "platform": {
+                                "php": "7.2.5"
+                            }
+                        }
+                    },
                     "symfony4": {
                         "require": {
                             "symfony/console": "^4"
@@ -991,8 +1015,11 @@
                         "require": {
                             "symfony/console": "^2.8"
                         },
+                        "require-dev": {
+                            "phpunit/phpunit": "^4.8.36"
+                        },
                         "remove": [
-                            "goaop/framework"
+                            "php-coveralls/php-coveralls"
                         ],
                         "config": {
                             "platform": {
@@ -1005,7 +1032,7 @@
                     }
                 },
                 "branch-alias": {
-                    "dev-master": "2.x-dev"
+                    "dev-master": "1.x-dev"
                 }
             },
             "autoload": {
@@ -1024,26 +1051,26 @@
                 }
             ],
             "description": "Modern task runner",
-            "time": "2019-03-19T18:07:19+00:00"
+            "time": "2020-10-11T04:51:34+00:00"
         },
         {
             "name": "consolidation/self-update",
-            "version": "1.1.5",
+            "version": "1.2.0",
             "source": {
                 "type": "git",
                 "url": "https://github.com/consolidation/self-update.git",
-                "reference": "a1c273b14ce334789825a09d06d4c87c0a02ad54"
+                "reference": "dba6b2c0708f20fa3ba8008a2353b637578849b4"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/consolidation/self-update/zipball/a1c273b14ce334789825a09d06d4c87c0a02ad54",
-                "reference": "a1c273b14ce334789825a09d06d4c87c0a02ad54",
+                "url": "https://api.github.com/repos/consolidation/self-update/zipball/dba6b2c0708f20fa3ba8008a2353b637578849b4",
+                "reference": "dba6b2c0708f20fa3ba8008a2353b637578849b4",
                 "shasum": ""
             },
             "require": {
                 "php": ">=5.5.0",
-                "symfony/console": "^2.8|^3|^4",
-                "symfony/filesystem": "^2.5|^3|^4"
+                "symfony/console": "^2.8|^3|^4|^5",
+                "symfony/filesystem": "^2.5|^3|^4|^5"
             },
             "bin": [
                 "scripts/release"
@@ -1064,46 +1091,45 @@
                 "MIT"
             ],
             "authors": [
-                {
-                    "name": "Greg Anderson",
-                    "email": "greg.1.anderson@greenknowe.org"
-                },
                 {
                     "name": "Alexander Menk",
                     "email": "menk@mestrona.net"
+                },
+                {
+                    "name": "Greg Anderson",
+                    "email": "greg.1.anderson@greenknowe.org"
                 }
             ],
             "description": "Provides a self:update command for Symfony Console applications.",
-            "time": "2018-10-28T01:52:03+00:00"
+            "time": "2020-04-13T02:49:20+00:00"
         },
         {
             "name": "consolidation/site-alias",
-            "version": "3.0.0",
+            "version": "3.0.1",
             "source": {
                 "type": "git",
                 "url": "https://github.com/consolidation/site-alias.git",
-                "reference": "8cfd3b6ab6d541086fc970bf850864293b284e6f"
+                "reference": "fd40a03f80f8fd4684b10bef8c8c4ec5a9a9bf26"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/consolidation/site-alias/zipball/8cfd3b6ab6d541086fc970bf850864293b284e6f",
-                "reference": "8cfd3b6ab6d541086fc970bf850864293b284e6f",
+                "url": "https://api.github.com/repos/consolidation/site-alias/zipball/fd40a03f80f8fd4684b10bef8c8c4ec5a9a9bf26",
+                "reference": "fd40a03f80f8fd4684b10bef8c8c4ec5a9a9bf26",
                 "shasum": ""
             },
             "require": {
-                "consolidation/config": "^1.2.1",
+                "consolidation/config": "^1.2.1|^2",
                 "php": ">=5.5.0"
             },
             "require-dev": {
-                "consolidation/robo": "^1.2.3",
+                "consolidation/robo": "^1.2.3|^2",
                 "g1a/composer-test-scenarios": "^3",
                 "knplabs/github-api": "^2.7",
-                "php-coveralls/php-coveralls": "^1",
+                "php-coveralls/php-coveralls": "^2.2",
                 "php-http/guzzle6-adapter": "^1.1",
                 "phpunit/phpunit": "^6",
                 "squizlabs/php_codesniffer": "^2.8",
-                "symfony/console": "^2.8|^3|^4",
-                "symfony/yaml": "~2.3|^3"
+                "symfony/yaml": "~2.3|^3|^4.4|^5"
             },
             "type": "library",
             "extra": {
@@ -1136,30 +1162,30 @@
                 "MIT"
             ],
             "authors": [
-                {
-                    "name": "Moshe Weitzman",
-                    "email": "weitzman@tejasa.com"
-                },
                 {
                     "name": "Greg Anderson",
                     "email": "greg.1.anderson@greenknowe.org"
+                },
+                {
+                    "name": "Moshe Weitzman",
+                    "email": "weitzman@tejasa.com"
                 }
             ],
             "description": "Manage alias records for local and remote sites.",
-            "time": "2019-03-12T17:31:48+00:00"
+            "time": "2020-05-28T00:33:41+00:00"
         },
         {
             "name": "consolidation/site-process",
-            "version": "2.0.3",
+            "version": "2.1.0",
             "source": {
                 "type": "git",
                 "url": "https://github.com/consolidation/site-process.git",
-                "reference": "e25265f4a48c13284ebb6f9e0906ecd415d451df"
+                "reference": "f3211fa4c60671c6f068184221f06f932556e443"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/consolidation/site-process/zipball/e25265f4a48c13284ebb6f9e0906ecd415d451df",
-                "reference": "e25265f4a48c13284ebb6f9e0906ecd415d451df",
+                "url": "https://api.github.com/repos/consolidation/site-process/zipball/f3211fa4c60671c6f068184221f06f932556e443",
+                "reference": "f3211fa4c60671c6f068184221f06f932556e443",
                 "shasum": ""
             },
             "require": {
@@ -1208,17 +1234,17 @@
                 "MIT"
             ],
             "authors": [
-                {
-                    "name": "Moshe Weitzman",
-                    "email": "weitzman@tejasa.com"
-                },
                 {
                     "name": "Greg Anderson",
                     "email": "greg.1.anderson@greenknowe.org"
+                },
+                {
+                    "name": "Moshe Weitzman",
+                    "email": "weitzman@tejasa.com"
                 }
             ],
             "description": "A thin wrapper around the Symfony Process Component that allows applications to use the Site Alias library to specify the target for a remote call.",
-            "time": "2019-06-04T22:23:52+00:00"
+            "time": "2019-09-10T17:56:24+00:00"
         },
         {
             "name": "container-interop/container-interop",
@@ -1254,24 +1280,24 @@
         },
         {
             "name": "cweagans/composer-patches",
-            "version": "1.6.5",
+            "version": "1.7.0",
             "source": {
                 "type": "git",
                 "url": "https://github.com/cweagans/composer-patches.git",
-                "reference": "2ec4f00ff5fb64de584c8c4aea53bf9053ecb0b3"
+                "reference": "ae02121445ad75f4eaff800cc532b5e6233e2ddf"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/cweagans/composer-patches/zipball/2ec4f00ff5fb64de584c8c4aea53bf9053ecb0b3",
-                "reference": "2ec4f00ff5fb64de584c8c4aea53bf9053ecb0b3",
+                "url": "https://api.github.com/repos/cweagans/composer-patches/zipball/ae02121445ad75f4eaff800cc532b5e6233e2ddf",
+                "reference": "ae02121445ad75f4eaff800cc532b5e6233e2ddf",
                 "shasum": ""
             },
             "require": {
-                "composer-plugin-api": "^1.0",
+                "composer-plugin-api": "^1.0 || ^2.0",
                 "php": ">=5.3.0"
             },
             "require-dev": {
-                "composer/composer": "~1.0",
+                "composer/composer": "~1.0 || ~2.0",
                 "phpunit/phpunit": "~4.6"
             },
             "type": "composer-plugin",
@@ -1294,7 +1320,7 @@
                 }
             ],
             "description": "Provides a way to patch Composer packages.",
-            "time": "2018-05-11T18:00:16+00:00"
+            "time": "2020-09-30T17:56:20+00:00"
         },
         {
             "name": "desandro/imagesloaded",
@@ -1508,25 +1534,25 @@
         },
         {
             "name": "dnoegel/php-xdg-base-dir",
-            "version": "0.1",
+            "version": "v0.1.1",
             "source": {
                 "type": "git",
                 "url": "https://github.com/dnoegel/php-xdg-base-dir.git",
-                "reference": "265b8593498b997dc2d31e75b89f053b5cc9621a"
+                "reference": "8f8a6e48c5ecb0f991c2fdcf5f154a47d85f9ffd"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/dnoegel/php-xdg-base-dir/zipball/265b8593498b997dc2d31e75b89f053b5cc9621a",
-                "reference": "265b8593498b997dc2d31e75b89f053b5cc9621a",
+                "url": "https://api.github.com/repos/dnoegel/php-xdg-base-dir/zipball/8f8a6e48c5ecb0f991c2fdcf5f154a47d85f9ffd",
+                "reference": "8f8a6e48c5ecb0f991c2fdcf5f154a47d85f9ffd",
                 "shasum": ""
             },
             "require": {
                 "php": ">=5.3.2"
             },
             "require-dev": {
-                "phpunit/phpunit": "@stable"
+                "phpunit/phpunit": "~7.0|~6.0|~5.0|~4.8.35"
             },
-            "type": "project",
+            "type": "library",
             "autoload": {
                 "psr-4": {
                     "XdgBaseDir\\": "src/"
@@ -1537,7 +1563,7 @@
                 "MIT"
             ],
             "description": "implementation of xdg base directory specification for php",
-            "time": "2014-10-24T07:27:01+00:00"
+            "time": "2019-12-04T15:06:13+00:00"
         },
         {
             "name": "doctrine/annotations",
@@ -8735,16 +8761,16 @@
         },
         {
             "name": "drush/drush",
-            "version": "9.7.1",
+            "version": "9.7.2",
             "source": {
                 "type": "git",
                 "url": "https://github.com/drush-ops/drush.git",
-                "reference": "6f9a8d235daec06fd6f47b2d84da675750566479"
+                "reference": "ab5e345a72c9187a7d770486a09691f6526826aa"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/drush-ops/drush/zipball/6f9a8d235daec06fd6f47b2d84da675750566479",
-                "reference": "6f9a8d235daec06fd6f47b2d84da675750566479",
+                "url": "https://api.github.com/repos/drush-ops/drush/zipball/ab5e345a72c9187a7d770486a09691f6526826aa",
+                "reference": "ab5e345a72c9187a7d770486a09691f6526826aa",
                 "shasum": ""
             },
             "require": {
@@ -8764,7 +8790,7 @@
                 "psr/log": "~1.0",
                 "psy/psysh": "~0.6",
                 "symfony/console": "^3.4",
-                "symfony/event-dispatcher": "^3.4",
+                "symfony/event-dispatcher": "^3.4 || ^4.0",
                 "symfony/finder": "^3.4 || ^4.0",
                 "symfony/process": "^3.4",
                 "symfony/var-dumper": "^3.4 || ^4.0",
@@ -8880,7 +8906,7 @@
             ],
             "description": "Drush is a command line shell and scripting interface for Drupal, a veritable Swiss Army knife designed to make life easier for those of us who spend some of our working hours hacking away at the command prompt.",
             "homepage": "http://www.drush.org",
-            "time": "2019-06-30T19:46:39+00:00"
+            "time": "2020-02-09T17:29:51+00:00"
         },
         {
             "name": "easyrdf/easyrdf",
@@ -9642,96 +9668,6 @@
             "abandoned": "simplesamlphp/twig-configurable-i18n",
             "time": "2019-06-07T11:03:28+00:00"
         },
-        {
-            "name": "jakub-onderka/php-console-color",
-            "version": "v0.2",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/JakubOnderka/PHP-Console-Color.git",
-                "reference": "d5deaecff52a0d61ccb613bb3804088da0307191"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/JakubOnderka/PHP-Console-Color/zipball/d5deaecff52a0d61ccb613bb3804088da0307191",
-                "reference": "d5deaecff52a0d61ccb613bb3804088da0307191",
-                "shasum": ""
-            },
-            "require": {
-                "php": ">=5.4.0"
-            },
-            "require-dev": {
-                "jakub-onderka/php-code-style": "1.0",
-                "jakub-onderka/php-parallel-lint": "1.0",
-                "jakub-onderka/php-var-dump-check": "0.*",
-                "phpunit/phpunit": "~4.3",
-                "squizlabs/php_codesniffer": "1.*"
-            },
-            "type": "library",
-            "autoload": {
-                "psr-4": {
-                    "JakubOnderka\\PhpConsoleColor\\": "src/"
-                }
-            },
-            "notification-url": "https://packagist.org/downloads/",
-            "license": [
-                "BSD-2-Clause"
-            ],
-            "authors": [
-                {
-                    "name": "Jakub Onderka",
-                    "email": "jakub.onderka@gmail.com"
-                }
-            ],
-            "abandoned": "php-parallel-lint/php-console-color",
-            "time": "2018-09-29T17:23:10+00:00"
-        },
-        {
-            "name": "jakub-onderka/php-console-highlighter",
-            "version": "v0.4",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/JakubOnderka/PHP-Console-Highlighter.git",
-                "reference": "9f7a229a69d52506914b4bc61bfdb199d90c5547"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/JakubOnderka/PHP-Console-Highlighter/zipball/9f7a229a69d52506914b4bc61bfdb199d90c5547",
-                "reference": "9f7a229a69d52506914b4bc61bfdb199d90c5547",
-                "shasum": ""
-            },
-            "require": {
-                "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": "~1.0",
-                "jakub-onderka/php-var-dump-check": "~0.1",
-                "phpunit/phpunit": "~4.0",
-                "squizlabs/php_codesniffer": "~1.5"
-            },
-            "type": "library",
-            "autoload": {
-                "psr-4": {
-                    "JakubOnderka\\PhpConsoleHighlighter\\": "src/"
-                }
-            },
-            "notification-url": "https://packagist.org/downloads/",
-            "license": [
-                "MIT"
-            ],
-            "authors": [
-                {
-                    "name": "Jakub Onderka",
-                    "email": "acci@acci.cz",
-                    "homepage": "http://www.acci.cz/"
-                }
-            ],
-            "description": "Highlight PHP code in terminal",
-            "abandoned": "php-parallel-lint/php-console-highlighter",
-            "time": "2018-09-29T18:48:56+00:00"
-        },
         {
             "name": "laminas/laminas-diactoros",
             "version": "1.8.7p2",
@@ -10241,16 +10177,16 @@
         },
         {
             "name": "nikic/php-parser",
-            "version": "v4.2.2",
+            "version": "v4.10.2",
             "source": {
                 "type": "git",
                 "url": "https://github.com/nikic/PHP-Parser.git",
-                "reference": "1bd73cc04c3843ad8d6b0bfc0956026a151fc420"
+                "reference": "658f1be311a230e0907f5dfe0213742aff0596de"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/1bd73cc04c3843ad8d6b0bfc0956026a151fc420",
-                "reference": "1bd73cc04c3843ad8d6b0bfc0956026a151fc420",
+                "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/658f1be311a230e0907f5dfe0213742aff0596de",
+                "reference": "658f1be311a230e0907f5dfe0213742aff0596de",
                 "shasum": ""
             },
             "require": {
@@ -10258,7 +10194,8 @@
                 "php": ">=7.0"
             },
             "require-dev": {
-                "phpunit/phpunit": "^6.5 || ^7.0"
+                "ircmaxell/php-yacc": "^0.0.7",
+                "phpunit/phpunit": "^6.5 || ^7.0 || ^8.0 || ^9.0"
             },
             "bin": [
                 "bin/php-parse"
@@ -10266,7 +10203,7 @@
             "type": "library",
             "extra": {
                 "branch-alias": {
-                    "dev-master": "4.2-dev"
+                    "dev-master": "4.9-dev"
                 }
             },
             "autoload": {
@@ -10288,25 +10225,31 @@
                 "parser",
                 "php"
             ],
-            "time": "2019-05-25T20:07:01+00:00"
+            "time": "2020-09-26T10:30:38+00:00"
         },
         {
             "name": "oomphinc/composer-installers-extender",
-            "version": "v1.1.2",
+            "version": "2.0.0",
             "source": {
                 "type": "git",
                 "url": "https://github.com/oomphinc/composer-installers-extender.git",
-                "reference": "ca1c4b16b0905c81d1e77e608f36a2eff1a56f56"
+                "reference": "8d3fe38a1723e0e91076920c8bb946b1696e28ca"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/oomphinc/composer-installers-extender/zipball/ca1c4b16b0905c81d1e77e608f36a2eff1a56f56",
-                "reference": "ca1c4b16b0905c81d1e77e608f36a2eff1a56f56",
+                "url": "https://api.github.com/repos/oomphinc/composer-installers-extender/zipball/8d3fe38a1723e0e91076920c8bb946b1696e28ca",
+                "reference": "8d3fe38a1723e0e91076920c8bb946b1696e28ca",
                 "shasum": ""
             },
             "require": {
-                "composer-plugin-api": "^1.0",
-                "composer/installers": "^1.0"
+                "composer-plugin-api": "^1.1 || ^2.0",
+                "composer/installers": "^1.0",
+                "php": ">=7.1"
+            },
+            "require-dev": {
+                "composer/composer": "^2.0",
+                "phpunit/phpunit": "^7.2",
+                "squizlabs/php_codesniffer": "^3.3"
             },
             "type": "composer-plugin",
             "extra": {
@@ -10326,11 +10269,16 @@
                     "name": "Stephen Beemsterboer",
                     "email": "stephen@oomphinc.com",
                     "homepage": "https://github.com/balbuf"
+                },
+                {
+                    "name": "Nathan Dentzau",
+                    "email": "nate@oomphinc.com",
+                    "homepage": "http://oomph.is/ndentzau"
                 }
             ],
             "description": "Extend the composer/installers plugin to accept any arbitrary package type.",
             "homepage": "http://www.oomphinc.com/",
-            "time": "2017-03-31T16:57:39+00:00"
+            "time": "2020-08-11T21:06:11+00:00"
         },
         {
             "name": "pantheon-systems/quicksilver-pushback",
@@ -10879,32 +10827,30 @@
         },
         {
             "name": "psy/psysh",
-            "version": "v0.9.9",
+            "version": "v0.10.4",
             "source": {
                 "type": "git",
                 "url": "https://github.com/bobthecow/psysh.git",
-                "reference": "9aaf29575bb8293206bb0420c1e1c87ff2ffa94e"
+                "reference": "a8aec1b2981ab66882a01cce36a49b6317dc3560"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/bobthecow/psysh/zipball/9aaf29575bb8293206bb0420c1e1c87ff2ffa94e",
-                "reference": "9aaf29575bb8293206bb0420c1e1c87ff2ffa94e",
+                "url": "https://api.github.com/repos/bobthecow/psysh/zipball/a8aec1b2981ab66882a01cce36a49b6317dc3560",
+                "reference": "a8aec1b2981ab66882a01cce36a49b6317dc3560",
                 "shasum": ""
             },
             "require": {
-                "dnoegel/php-xdg-base-dir": "0.1",
+                "dnoegel/php-xdg-base-dir": "0.1.*",
                 "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"
+                "nikic/php-parser": "~4.0|~3.0|~2.0|~1.3",
+                "php": "^8.0 || ^7.0 || ^5.5.9",
+                "symfony/console": "~5.0|~4.0|~3.0|^2.4.2|~2.3.10",
+                "symfony/var-dumper": "~5.0|~4.0|~3.0|~2.7"
             },
             "require-dev": {
                 "bamarni/composer-bin-plugin": "^1.2",
-                "hoa/console": "~2.15|~3.16",
-                "phpunit/phpunit": "~4.8.35|~5.0|~6.0|~7.0"
+                "hoa/console": "3.17.*"
             },
             "suggest": {
                 "ext-pcntl": "Enabling the PCNTL extension makes PsySH a lot happier :)",
@@ -10919,7 +10865,7 @@
             "type": "library",
             "extra": {
                 "branch-alias": {
-                    "dev-develop": "0.9.x-dev"
+                    "dev-master": "0.10.x-dev"
                 }
             },
             "autoload": {
@@ -10949,7 +10895,7 @@
                 "interactive",
                 "shell"
             ],
-            "time": "2018-10-13T15:16:03+00:00"
+            "time": "2020-05-03T19:32:03+00:00"
         },
         {
             "name": "ralouphie/getallheaders",
@@ -11865,16 +11811,16 @@
         },
         {
             "name": "symfony/filesystem",
-            "version": "v3.4.42",
+            "version": "v3.4.46",
             "source": {
                 "type": "git",
                 "url": "https://github.com/symfony/filesystem.git",
-                "reference": "0f625d0cb1e59c8c4ba61abb170125175218ff10"
+                "reference": "e58d7841cddfed6e846829040dca2cca0ebbbbb3"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/symfony/filesystem/zipball/0f625d0cb1e59c8c4ba61abb170125175218ff10",
-                "reference": "0f625d0cb1e59c8c4ba61abb170125175218ff10",
+                "url": "https://api.github.com/repos/symfony/filesystem/zipball/e58d7841cddfed6e846829040dca2cca0ebbbbb3",
+                "reference": "e58d7841cddfed6e846829040dca2cca0ebbbbb3",
                 "shasum": ""
             },
             "require": {
@@ -11882,11 +11828,6 @@
                 "symfony/polyfill-ctype": "~1.8"
             },
             "type": "library",
-            "extra": {
-                "branch-alias": {
-                    "dev-master": "3.4-dev"
-                }
-            },
             "autoload": {
                 "psr-4": {
                     "Symfony\\Component\\Filesystem\\": ""
@@ -11911,31 +11852,40 @@
             ],
             "description": "Symfony Filesystem Component",
             "homepage": "https://symfony.com",
-            "time": "2020-05-30T17:48:24+00:00"
+            "funding": [
+                {
+                    "url": "https://symfony.com/sponsor",
+                    "type": "custom"
+                },
+                {
+                    "url": "https://github.com/fabpot",
+                    "type": "github"
+                },
+                {
+                    "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+                    "type": "tidelift"
+                }
+            ],
+            "time": "2020-10-24T10:57:07+00:00"
         },
         {
             "name": "symfony/finder",
-            "version": "v3.4.28",
+            "version": "v3.4.46",
             "source": {
                 "type": "git",
                 "url": "https://github.com/symfony/finder.git",
-                "reference": "fa5d962a71f2169dfe1cbae217fa5a2799859f6c"
+                "reference": "4e1da3c110c52d868f8a9153b7de3ebc381fba78"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/symfony/finder/zipball/fa5d962a71f2169dfe1cbae217fa5a2799859f6c",
-                "reference": "fa5d962a71f2169dfe1cbae217fa5a2799859f6c",
+                "url": "https://api.github.com/repos/symfony/finder/zipball/4e1da3c110c52d868f8a9153b7de3ebc381fba78",
+                "reference": "4e1da3c110c52d868f8a9153b7de3ebc381fba78",
                 "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\\": ""
@@ -11960,7 +11910,21 @@
             ],
             "description": "Symfony Finder Component",
             "homepage": "https://symfony.com",
-            "time": "2019-05-24T12:25:55+00:00"
+            "funding": [
+                {
+                    "url": "https://symfony.com/sponsor",
+                    "type": "custom"
+                },
+                {
+                    "url": "https://github.com/fabpot",
+                    "type": "github"
+                },
+                {
+                    "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+                    "type": "tidelift"
+                }
+            ],
+            "time": "2020-10-24T10:57:07+00:00"
         },
         {
             "name": "symfony/http-foundation",
@@ -12991,16 +12955,16 @@
         },
         {
             "name": "symfony/var-dumper",
-            "version": "v3.4.28",
+            "version": "v3.4.46",
             "source": {
                 "type": "git",
                 "url": "https://github.com/symfony/var-dumper.git",
-                "reference": "ca5fef348a0440411bbca0f9ec14e9a11625bd6a"
+                "reference": "0719f6cf4633a38b2c1585140998579ce23b4b7d"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/symfony/var-dumper/zipball/ca5fef348a0440411bbca0f9ec14e9a11625bd6a",
-                "reference": "ca5fef348a0440411bbca0f9ec14e9a11625bd6a",
+                "url": "https://api.github.com/repos/symfony/var-dumper/zipball/0719f6cf4633a38b2c1585140998579ce23b4b7d",
+                "reference": "0719f6cf4633a38b2c1585140998579ce23b4b7d",
                 "shasum": ""
             },
             "require": {
@@ -13020,11 +12984,6 @@
                 "ext-symfony_debug": ""
             },
             "type": "library",
-            "extra": {
-                "branch-alias": {
-                    "dev-master": "3.4-dev"
-                }
-            },
             "autoload": {
                 "files": [
                     "Resources/functions/dump.php"
@@ -13056,7 +13015,21 @@
                 "debug",
                 "dump"
             ],
-            "time": "2019-05-01T09:52:10+00:00"
+            "funding": [
+                {
+                    "url": "https://symfony.com/sponsor",
+                    "type": "custom"
+                },
+                {
+                    "url": "https://github.com/fabpot",
+                    "type": "github"
+                },
+                {
+                    "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+                    "type": "tidelift"
+                }
+            ],
+            "time": "2020-10-24T10:57:07+00:00"
         },
         {
             "name": "symfony/yaml",
@@ -13289,18 +13262,21 @@
         },
         {
             "name": "webflo/drupal-finder",
-            "version": "1.1.0",
+            "version": "1.2.2",
             "source": {
                 "type": "git",
                 "url": "https://github.com/webflo/drupal-finder.git",
-                "reference": "8a7886c575d6eaa67a425dceccc84e735c0b9637"
+                "reference": "c8e5dbe65caef285fec8057a4c718a0d4138d1ee"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/webflo/drupal-finder/zipball/8a7886c575d6eaa67a425dceccc84e735c0b9637",
-                "reference": "8a7886c575d6eaa67a425dceccc84e735c0b9637",
+                "url": "https://api.github.com/repos/webflo/drupal-finder/zipball/c8e5dbe65caef285fec8057a4c718a0d4138d1ee",
+                "reference": "c8e5dbe65caef285fec8057a4c718a0d4138d1ee",
                 "shasum": ""
             },
+            "require": {
+                "ext-json": "*"
+            },
             "require-dev": {
                 "mikey179/vfsstream": "^1.6",
                 "phpunit/phpunit": "^4.8"
@@ -13313,7 +13289,7 @@
             },
             "notification-url": "https://packagist.org/downloads/",
             "license": [
-                "GPL-2.0+"
+                "GPL-2.0-or-later"
             ],
             "authors": [
                 {
@@ -13322,7 +13298,7 @@
                 }
             ],
             "description": "Helper class to locate a Drupal installation from a given path.",
-            "time": "2017-10-24T08:12:11+00:00"
+            "time": "2020-10-27T09:42:17+00:00"
         },
         {
             "name": "webmozart/assert",
diff --git a/vendor/chi-teck/drupal-code-generator/composer.json b/vendor/chi-teck/drupal-code-generator/composer.json
index 07a1cc5e8c..398db7c036 100644
--- a/vendor/chi-teck/drupal-code-generator/composer.json
+++ b/vendor/chi-teck/drupal-code-generator/composer.json
@@ -6,7 +6,7 @@
     "ext-json": "*",
     "symfony/console": "^3.4 || ^4.0",
     "symfony/filesystem": "^2.7 || ^3.4 || ^4.0",
-    "twig/twig": "^1.38.2 || ^2.10"
+    "twig/twig": "^1.41 || ^2.12"
   },
   "bin": [
     "bin/dcg"
diff --git a/vendor/chi-teck/drupal-code-generator/src/ApplicationFactory.php b/vendor/chi-teck/drupal-code-generator/src/ApplicationFactory.php
index 40c3f3f79f..f3160e4753 100644
--- a/vendor/chi-teck/drupal-code-generator/src/ApplicationFactory.php
+++ b/vendor/chi-teck/drupal-code-generator/src/ApplicationFactory.php
@@ -44,12 +44,7 @@ public static function create() {
     $helper_set = new HelperSet([
       new QuestionHelper(),
       new Dumper(new Filesystem()),
-      // We cannot reference the TwigEnvironment class with use statement
-      // because of a PHP bug.
-      // @see https://bugs.php.net/bug.php?id=66773
-      // @codingStandardsIgnoreStart
-      new Renderer(new \DrupalCodeGenerator\Twig\TwigEnvironment(new \Twig_Loader_Filesystem())),
-      // @codingStandardsIgnoreEnd
+      new Renderer(dcg_get_twig_environment(new \Twig_Loader_Filesystem())),
       new InputHandler(),
       new OutputHandler(),
     ]);
diff --git a/vendor/chi-teck/drupal-code-generator/src/Command/Drupal_7/Hook.php b/vendor/chi-teck/drupal-code-generator/src/Command/Drupal_7/Hook.php
index 2739fc32d0..98ad011556 100644
--- a/vendor/chi-teck/drupal-code-generator/src/Command/Drupal_7/Hook.php
+++ b/vendor/chi-teck/drupal-code-generator/src/Command/Drupal_7/Hook.php
@@ -24,7 +24,7 @@ protected function interact(InputInterface $input, OutputInterface $output) {
     $questions['hook_name'] = new Question('Hook name');
     $questions['hook_name']->setValidator(function ($value) {
       if (!in_array($value, $this->getSupportedHooks())) {
-        throw new \UnexpectedValueException('The value is not correct class name.');
+        throw new \UnexpectedValueException('The value is not correct hook name.');
       }
       return $value;
     });
diff --git a/vendor/chi-teck/drupal-code-generator/src/Command/Drupal_8/Hook.php b/vendor/chi-teck/drupal-code-generator/src/Command/Drupal_8/Hook.php
index 64dc1a6672..0d5bbd7782 100644
--- a/vendor/chi-teck/drupal-code-generator/src/Command/Drupal_8/Hook.php
+++ b/vendor/chi-teck/drupal-code-generator/src/Command/Drupal_8/Hook.php
@@ -25,7 +25,7 @@ protected function interact(InputInterface $input, OutputInterface $output) {
     $questions['hook_name'] = new Question('Hook name');
     $questions['hook_name']->setValidator(function ($value) {
       if (!in_array($value, $this->supportedHooks())) {
-        throw new \UnexpectedValueException('The value is not correct class name.');
+        throw new \UnexpectedValueException('The value is not correct hook name.');
       }
       return $value;
     });
diff --git a/vendor/chi-teck/drupal-code-generator/src/Command/Drupal_8/PhpStormMetadata.php b/vendor/chi-teck/drupal-code-generator/src/Command/Drupal_8/PhpStormMetadata.php
new file mode 100644
index 0000000000..f7b52125ff
--- /dev/null
+++ b/vendor/chi-teck/drupal-code-generator/src/Command/Drupal_8/PhpStormMetadata.php
@@ -0,0 +1,72 @@
+<?php
+
+namespace DrupalCodeGenerator\Command\Drupal_8;
+
+use DrupalCodeGenerator\Command\BaseGenerator;
+use Symfony\Component\Console\Input\InputInterface;
+use Symfony\Component\Console\Output\OutputInterface;
+
+/**
+ * Implements d8:phpstorm-metadata command.
+ */
+class PhpStormMetadata extends BaseGenerator {
+
+  protected $name = 'd8:phpstorm-metadata';
+  protected $description = 'Generates PhpStorm metadata';
+  protected $label = 'PhpStorm metadata';
+
+  /**
+   * {@inheritdoc}
+   */
+  protected function interact(InputInterface $input, OutputInterface $output) {
+
+    if (!class_exists('Drupal') || !\Drupal::hasContainer()) {
+      throw new \RuntimeException('Could not bootstrap Drupal to fetch metadata.');
+    }
+    $container = \Drupal::getContainer();
+
+    $vars = &$this->vars;
+
+    $service_definitions = $container
+      ->get('kernel')
+      ->getCachedContainerDefinition()['services'];
+    $service_definitions = array_map('unserialize', $service_definitions);
+
+    foreach ($service_definitions as $service_id => $service_definition) {
+      if ($service_definition['class']) {
+        $vars['services'][$service_id] = $service_definition['class'];
+      }
+    }
+
+    $entity_type_manager = $container->get('entity_type.manager');
+    $vars['storages'] = [];
+    $vars['view_builders'] = [];
+    $vars['list_builders'] = [];
+    $vars['access_controls'] = [];
+    $vars['entity_classes'] = [];
+    foreach ($entity_type_manager->getDefinitions() as $type => $definition) {
+      /** @var \Drupal\Core\Entity\EntityTypeInterface $definition  */
+      $vars['entity_classes'][] = $definition->getClass();
+      $vars['storages'][$type] = $definition->getStorageClass();
+      $vars['access_controls'][$type] = $definition->getAccessControlClass();
+      if ($definition->hasViewBuilderClass()) {
+        $vars['view_builders'][$type] = $definition->getViewBuilderClass();
+      }
+      if ($definition->hasListBuilderClass()) {
+        $vars['list_builders'][$type] = $definition->getListBuilderClass();
+      }
+    }
+
+    // Some classes does not have leading slash.
+    array_walk_recursive($vars, function (string &$class): void {
+      if ($class[0] != '\\') {
+        $class = '\\' . $class;
+      }
+    });
+
+    $this->addFile()
+      ->path('.phpstorm.meta.php')
+      ->template('d8/phpstorm-meta.twig');
+  }
+
+}
diff --git a/vendor/chi-teck/drupal-code-generator/src/Command/Drupal_8/Project.php b/vendor/chi-teck/drupal-code-generator/src/Command/Drupal_8/Project.php
index 21c59a7f43..6192361b1e 100644
--- a/vendor/chi-teck/drupal-code-generator/src/Command/Drupal_8/Project.php
+++ b/vendor/chi-teck/drupal-code-generator/src/Command/Drupal_8/Project.php
@@ -20,14 +20,33 @@ class Project extends BaseGenerator {
   protected $description = 'Generates a composer project';
   protected $alias = 'project';
 
-  const DRUPAL_DEFAULT_VERSION = '~8.7.0';
+  /**
+   * Array of packages to check versions for.
+   *
+   * The key is package name and the value is allowable major version.
+   */
+  const PACKAGES = [
+    'composer/installers' => '^1.8',
+    'cweagans/composer-patches' => '^1.6',
+    'drupal/core' => '^8.8',
+    'drupal/core-composer-scaffold' => '^8.8',
+    'drush/drush' => '^10.2',
+    'oomphinc/composer-installers-extender' => '^1.1',
+    'symfony/dotenv' => '^4.4',
+    'drupal/core-recommended' => '^8.8',
+    'drupal/core-dev' => '^8.8',
+    'zaporylie/composer-drupal-optimizations' => '^1.1',
+    'weitzman/drupal-test-traits' => '^1.3',
+  ];
 
   /**
    * {@inheritdoc}
    */
   protected function interact(InputInterface $input, OutputInterface $output) {
 
-    $name_validator = function ($value) {
+    $vars = &$this->vars;
+
+    $name_validator = function (?string $value): ?string {
       if (!preg_match('#[^/]+/[^/]+$#i', $value)) {
         throw new \UnexpectedValueException('The value is not correct project name.');
       }
@@ -69,78 +88,38 @@ protected function interact(InputInterface $input, OutputInterface $output) {
       'httpdocs',
       'html',
     ];
-    $questions['document_root'] = new Question('Document root directory, type single dot to use Composer root', 'docroot');
-    $questions['document_root']->setNormalizer(function ($value) {
-      return $value == '.' ? '' : $value;
-    });
+    $questions['document_root'] = new Question('Document root directory', 'docroot');
     $questions['document_root']->setAutocompleterValues($document_roots);
 
     $questions['php'] = new Question('PHP version', '>=' . PHP_MAJOR_VERSION . '.' . PHP_MINOR_VERSION);
-    $questions['drupal'] = new Question('Drupal version', self::DRUPAL_DEFAULT_VERSION);
-    $questions['drupal_core_strict'] = new ConfirmationQuestion('Would you like to get the same versions of Drupal core\'s dependencies as in Drupal core\'s composer.lock file?', FALSE);
 
-    $this->collectVars($input, $output, $questions);
+    $questions['drupal_core_recommended'] = new ConfirmationQuestion('Would you like to install recommended Drupal core dependencies?', FALSE);
+    $questions['drupal_core_dev'] = new ConfirmationQuestion('Would you like to install Drupal core development dependencies?', FALSE);
 
-    $sections = ['require', 'require-dev'];
+    $questions['drush'] = new ConfirmationQuestion('Would you like to install Drush?');
 
-    $questions['drush'] = new ConfirmationQuestion('Would you like to install Drush?', TRUE);
-    $vars = $this->collectVars($input, $output, $questions);
-    if ($vars['drush']) {
-      $questions['drush_installation'] = new Question('Drush installation (require|require-dev)', 'require');
-      $questions['drush_installation']->setValidator(Utils::getOptionsValidator($sections));
-      $questions['drush_installation']->setAutocompleterValues($sections);
-      $this->collectVars($input, $output, $questions);
-    }
-
-    $questions['drupal_console'] = new ConfirmationQuestion('Would you like to install Drupal Console?', !$vars['drush']);
-    $vars = $this->collectVars($input, $output, $questions);
-    if ($vars['drupal_console']) {
-      $questions['drupal_console_installation'] = new Question('Drupal Console installation (require|require-dev)', 'require-dev');
-      $questions['drupal_console_installation']->setValidator(Utils::getOptionsValidator($sections));
-      $questions['drupal_console_installation']->setAutocompleterValues($sections);
-      $this->collectVars($input, $output, $questions);
-    }
-
-    $questions['composer_patches'] = new ConfirmationQuestion('Would you like to install Composer patches plugin?', TRUE);
-    $questions['composer_merge'] = new ConfirmationQuestion('Would you like to install Composer merge plugin?', FALSE);
-    $questions['behat'] = new ConfirmationQuestion('Would you like to create Behat tests?', FALSE);
+    $questions['composer_patches'] = new ConfirmationQuestion('Would you like to install Composer patches plugin?');
     $questions['env'] = new ConfirmationQuestion('Would you like to load environment variables from .env files?', FALSE);
     $questions['asset_packagist'] = new ConfirmationQuestion('Would you like to add asset-packagist repository?', FALSE);
 
-    $vars = &$this->collectVars($input, $output, $questions);
+    $questions['tests'] = new ConfirmationQuestion('Would you like to create tests?', FALSE);
 
-    $vars['document_root_path'] = $vars['document_root'] ?
-      $vars['document_root'] . '/' : $vars['document_root'];
+    $this->collectVars($input, $output, $questions);
+    $vars['document_root_path'] = $vars['document_root'] . '/';
+    if ($vars['tests']) {
+      // @codingStandardsIgnoreStart
+      [$vendor, $short_name] = explode('/', $vars['name']);
+      $vars['namespace'] = Utils::camelize($vendor == $short_name ? $vendor : $vars['name']);
+      // @codingStandardsIgnoreEnd
+    }
 
-    $this->addFile('composer.json')
-      ->content(self::buildComposerJson($vars));
+    $this->addFile('composer.json')->content($this->buildComposerJson($vars));
 
     $this->addFile('.gitignore')
       ->template('d8/_project/gitignore.twig');
-
     $this->addFile('phpcs.xml')
       ->template('d8/_project/phpcs.xml.twig');
 
-    $this->addFile('scripts/composer/create_required_files.php')
-      ->template('d8/_project/scripts/composer/create_required_files.php.twig');
-
-    if ($vars['behat']) {
-      $this->addFile('tests/behat/behat.yml')
-        ->template('d8/_project/tests/behat/behat.yml.twig');
-
-      $this->addFile('tests/behat/local.behat.yml')
-        ->template('d8/_project/tests/behat/local.behat.yml.twig');
-
-      $this->addFile('tests/behat/bootstrap/BaseContext.php')
-        ->template('d8/_project/tests/behat/bootstrap/BaseContext.php.twig');
-
-      $this->addFile('tests/behat/bootstrap/ExampleContext.php')
-        ->template('d8/_project/tests/behat/bootstrap/ExampleContext.php.twig');
-
-      $this->addFile('tests/behat/features/example/user_forms.feature')
-        ->template('d8/_project/tests/behat/features/example/user_forms.feature.twig');
-    }
-
     if ($vars['env']) {
       $this->addFile('.env.example')
         ->template('d8/_project/env.example.twig');
@@ -153,8 +132,6 @@ protected function interact(InputInterface $input, OutputInterface $output) {
     }
 
     if ($vars['drush']) {
-      $this->addFile('drush/drush.yml')
-        ->template('d8/_project/drush/drush.yml.twig');
       $this->addFile('drush/Commands/PolicyCommands.php')
         ->template('d8/_project/drush/Commands/PolicyCommands.php.twig');
       $this->addFile('drush/sites/self.site.yml')
@@ -164,11 +141,18 @@ protected function interact(InputInterface $input, OutputInterface $output) {
         ->mode(0544);
     }
 
+    if ($vars['tests']) {
+      $this->addFile('phpunit.xml')
+        ->template('d8/_project/phpunit.xml.twig');
+      $this->addFile('tests/src/HomePageTest.php')
+        ->template('d8/_project/tests/src/HomePageTest.php.twig');
+    }
+
     $this->addFile('patches/.keep')->content('');
-    $this->addDirectory($vars['document_root_path'] . 'modules/contrib');
-    $this->addDirectory($vars['document_root_path'] . 'modules/custom');
-    $this->addDirectory($vars['document_root_path'] . 'modules/custom');
-    $this->addDirectory($vars['document_root_path'] . 'libraries');
+    $this->addDirectory('{document_root}/modules/contrib');
+    $this->addDirectory('{document_root}/modules/custom');
+    $this->addDirectory('{document_root}/themes/custom');
+    $this->addDirectory('{document_root}/libraries');
   }
 
   /**
@@ -196,14 +180,14 @@ protected function execute(InputInterface $input, OutputInterface $output) {
    * @return string
    *   Encoded JSON content.
    */
-  protected static function buildComposerJson(array $vars) {
+  protected function buildComposerJson(array $vars) {
 
     $document_root_path = $vars['document_root_path'];
 
     $composer_json = [];
 
     $composer_json['name'] = $vars['name'];
-    $composer_json['description'] = $vars['description'];
+    $composer_json['description'] = (string) $vars['description'];
     $composer_json['type'] = 'project';
     $composer_json['license'] = $vars['license'];
 
@@ -221,48 +205,41 @@ protected static function buildComposerJson(array $vars) {
     $require = [];
     $require_dev = [];
 
-    self::addPackage($require, 'drupal/core');
-    $require['drupal/core'] = $vars['drupal'];
-    self::addPackage($require, 'composer/installers');
-    self::addPackage($require, 'drupal-composer/drupal-scaffold');
-    self::addPackage($require, 'zaporylie/composer-drupal-optimizations');
-    $require_dev['webflo/drupal-core-require-dev'] = $vars['drupal'];
+    $this->addPackage($require, 'drupal/core-composer-scaffold');
+    $this->addPackage($require, 'zaporylie/composer-drupal-optimizations');
 
     if ($vars['asset_packagist']) {
-      self::addPackage($require, 'oomphinc/composer-installers-extender');
+      $this->addPackage($require, 'oomphinc/composer-installers-extender');
     }
 
-    if ($vars['drupal_core_strict']) {
-      $require['webflo/drupal-core-strict'] = $vars['drupal'];
+    if ($vars['drupal_core_recommended']) {
+      $this->addPackage($require, 'drupal/core-recommended');
     }
-
-    if ($vars['drush']) {
-      $vars['drush_installation'] == 'require'
-        ? self::addPackage($require, 'drush/drush')
-        : self::addPackage($require_dev, 'drush/drush');
+    else {
+      $this->addPackage($require, 'drupal/core');
+      $this->addPackage($require, 'composer/installers');
     }
 
-    if ($vars['drupal_console']) {
-      $vars['drupal_console_installation'] == 'require'
-        ? self::addPackage($require, 'drupal/console')
-        : self::addPackage($require_dev, 'drupal/console');
+    if ($vars['drupal_core_dev']) {
+      $this->addPackage($require_dev, 'drupal/core-dev');
     }
 
-    if ($vars['composer_patches']) {
-      self::addPackage($require, 'cweagans/composer-patches');
+    if ($vars['drush']) {
+      $this->addPackage($require, 'drush/drush');
     }
 
-    if ($vars['composer_merge']) {
-      self::addPackage($require, 'wikimedia/composer-merge-plugin');
+    if ($vars['composer_patches']) {
+      $this->addPackage($require, 'cweagans/composer-patches');
     }
 
-    if ($vars['behat']) {
-      // Behat and Mink drivers are Drupal core dev dependencies.
-      self::addPackage($require_dev, 'drupal/drupal-extension');
+    if ($vars['env']) {
+      $this->addPackage($require, 'symfony/dotenv');
+      $composer_json['autoload']['files'][] = 'load.environment.php';
     }
 
-    if ($vars['env']) {
-      self::addPackage($require, 'symfony/dotenv');
+    if ($vars['tests']) {
+      $this->addPackage($require_dev, 'weitzman/drupal-test-traits');
+      $composer_json['autoload-dev']['psr-4'][$vars['namespace'] . '\\Tests\\'] = 'tests/src';
     }
 
     $composer_json['require'] = [
@@ -275,17 +252,9 @@ protected static function buildComposerJson(array $vars) {
     $composer_json['require'] += $require;
 
     ksort($require_dev);
-    $composer_json['require-dev'] = $require_dev;
+    $composer_json['require-dev'] = (object) $require_dev;
 
-    // PHPUnit is core dev dependency.
-    $composer_json['scripts']['phpunit'] = 'phpunit --colors=always --configuration ' . $document_root_path . 'core ' . $document_root_path . 'modules/custom';
-    if ($vars['behat']) {
-      $composer_json['scripts']['behat'] = 'behat --colors --config=tests/behat/local.behat.yml';
-    }
     $composer_json['scripts']['phpcs'] = 'phpcs --standard=phpcs.xml';
-    $composer_json['scripts']['post-install-cmd'][] = '@php ./scripts/composer/create_required_files.php';
-    $composer_json['scripts']['post-update-cmd'][] = '@php ./scripts/composer/create_required_files.php';
-
     $composer_json['minimum-stability'] = 'dev';
     $composer_json['prefer-stable'] = TRUE;
 
@@ -294,14 +263,12 @@ protected static function buildComposerJson(array $vars) {
       'bin-dir' => 'bin',
     ];
 
-    if ($vars['env']) {
-      $composer_json['autoload']['files'][] = 'load.environment.php';
-    }
-
     if ($vars['composer_patches']) {
       $composer_json['extra']['composer-exit-on-patch-failure'] = TRUE;
     }
 
+    $composer_json['extra']['drupal-scaffold']['locations']['web-root'] = $vars['document_root_path'];
+
     if ($vars['asset_packagist']) {
       $composer_json['extra']['installer-types'] = [
         'bower-asset',
@@ -315,45 +282,12 @@ protected static function buildComposerJson(array $vars) {
       $document_root_path . 'themes/{$name}' => ['type:drupal-theme'],
       'drush/{$name}' => ['type:drupal-drush'],
     ];
+
     if ($vars['asset_packagist']) {
       $composer_json['extra']['installer-paths'][$document_root_path . 'libraries/{$name}'][] = 'type:bower-asset';
       $composer_json['extra']['installer-paths'][$document_root_path . 'libraries/{$name}'][] = 'type:npm-asset';
     }
 
-    $composer_json['extra']['drupal-scaffold']['excludes'] = [
-      '.csslintrc',
-      '.editorconfig',
-      '.eslintignore',
-      '.eslintrc.json',
-      '.gitattributes',
-      '.ht.router.php',
-      '.htaccess',
-      'robots.txt',
-      'update.php',
-      'web.config',
-    ];
-    // Initial files are created but never updated.
-    $composer_json['extra']['drupal-scaffold']['initial'] = [
-      '.htaccess' => '.htaccess',
-      'robots.txt' => 'robots.txt',
-    ];
-
-    // Move these files to Composer root.
-    if ($vars['document_root']) {
-      $composer_json['extra']['drupal-scaffold']['initial']['.editorconfig'] = '../.editorconfig';
-      $composer_json['extra']['drupal-scaffold']['initial']['.gitattributes'] = '../.gitattributes';
-    }
-    ksort($composer_json['extra']['drupal-scaffold']['initial']);
-
-    if ($vars['composer_merge']) {
-      $composer_json['extra']['merge-plugin'] = [
-        'include' => [
-          $document_root_path . 'modules/custom/*/composer.json',
-        ],
-        'recurse' => TRUE,
-      ];
-    }
-
     return json_encode($composer_json, JSON_PRETTY_PRINT | JSON_UNESCAPED_SLASHES) . "\n";
   }
 
@@ -364,26 +298,12 @@ protected static function buildComposerJson(array $vars) {
    *   Section for the package (require|require-dev)
    * @param string $package
    *   A package to be added.
-   *
-   * @todo Find a way to track versions automatically.
    */
-  protected static function addPackage(array &$section, $package) {
-    $versions = [
-      'composer/installers' => '^1.4',
-      'cweagans/composer-patches' => '^1.6',
-      'drupal-composer/drupal-scaffold' => '^2.5',
-      'drupal/console' => '^1.0',
-      'drupal/core' => self::DRUPAL_DEFAULT_VERSION,
-      'drupal/drupal-extension' => '^3.4',
-      'drush/drush' => '^9.6',
-      'oomphinc/composer-installers-extender' => '^1.1',
-      'symfony/dotenv' => '^3.4',
-      'webflo/drupal-core-require-dev' => self::DRUPAL_DEFAULT_VERSION,
-      'webflo/drupal-core-strict' => self::DRUPAL_DEFAULT_VERSION,
-      'wikimedia/composer-merge-plugin' => '^1.4',
-      'zaporylie/composer-drupal-optimizations' => '^1.1',
-    ];
-    $section[$package] = $versions[$package];
+  private function addPackage(array &$section, $package) {
+    if (!array_key_exists($package, self::PACKAGES)) {
+      throw new \InvalidArgumentException("Package $package is unknown.");
+    }
+    $section[$package] = self::PACKAGES[$package];
   }
 
 }
diff --git a/vendor/chi-teck/drupal-code-generator/src/Command/Drupal_8/Service/EventSubscriber.php b/vendor/chi-teck/drupal-code-generator/src/Command/Drupal_8/Service/EventSubscriber.php
index a83ed8016a..3f065576ac 100644
--- a/vendor/chi-teck/drupal-code-generator/src/Command/Drupal_8/Service/EventSubscriber.php
+++ b/vendor/chi-teck/drupal-code-generator/src/Command/Drupal_8/Service/EventSubscriber.php
@@ -6,6 +6,7 @@
 use DrupalCodeGenerator\Utils;
 use Symfony\Component\Console\Input\InputInterface;
 use Symfony\Component\Console\Output\OutputInterface;
+use Symfony\Component\Console\Question\Question;
 
 /**
  * Implements d8:service:event-subscriber command.
@@ -22,8 +23,13 @@ class EventSubscriber extends BaseGenerator {
   protected function interact(InputInterface $input, OutputInterface $output) {
     $questions = Utils::defaultQuestions();
 
-    $vars = &$this->collectVars($input, $output, $questions);
-    $vars['class'] = Utils::camelize($vars['machine_name']) . 'Subscriber';
+    $default_class = function ($vars) {
+      return Utils::camelize($vars['machine_name']) . 'Subscriber';
+    };
+    $questions['class'] = new Question('Class', $default_class);
+    $questions['class']->setValidator([Utils::class, 'validateClassName']);
+
+    $this->collectVars($input, $output, $questions);
 
     $this->addFile()
       ->path('src/EventSubscriber/{class}.php')
diff --git a/vendor/chi-teck/drupal-code-generator/src/Command/Drupal_8/Service/Middleware.php b/vendor/chi-teck/drupal-code-generator/src/Command/Drupal_8/Service/Middleware.php
index c51aac4cd3..efeff42888 100644
--- a/vendor/chi-teck/drupal-code-generator/src/Command/Drupal_8/Service/Middleware.php
+++ b/vendor/chi-teck/drupal-code-generator/src/Command/Drupal_8/Service/Middleware.php
@@ -6,6 +6,7 @@
 use DrupalCodeGenerator\Utils;
 use Symfony\Component\Console\Input\InputInterface;
 use Symfony\Component\Console\Output\OutputInterface;
+use Symfony\Component\Console\Question\Question;
 
 /**
  * Implements d8:service:middleware command.
@@ -20,9 +21,14 @@ class Middleware extends BaseGenerator {
    * {@inheritdoc}
    */
   protected function interact(InputInterface $input, OutputInterface $output) {
-    $questions = Utils::defaultQuestions();
-    $vars = &$this->collectVars($input, $output, $questions);
-    $vars['class'] = Utils::camelize($vars['machine_name']) . 'Middleware';
+    $questions = Utils::moduleQuestions();
+
+    $default_class = function ($vars) {
+      return Utils::camelize($vars['machine_name']) . 'Middleware';
+    };
+    $questions['class'] = new Question('Class', $default_class);
+    $questions['class']->setValidator([Utils::class, 'validateClassName']);
+    $this->collectVars($input, $output, $questions);
 
     $this->addFile()
       ->path('src/{class}.php')
diff --git a/vendor/chi-teck/drupal-code-generator/src/Command/Drupal_8/Service/RouteSubscriber.php b/vendor/chi-teck/drupal-code-generator/src/Command/Drupal_8/Service/RouteSubscriber.php
index 8382b555ec..bb99145d73 100644
--- a/vendor/chi-teck/drupal-code-generator/src/Command/Drupal_8/Service/RouteSubscriber.php
+++ b/vendor/chi-teck/drupal-code-generator/src/Command/Drupal_8/Service/RouteSubscriber.php
@@ -6,6 +6,7 @@
 use DrupalCodeGenerator\Utils;
 use Symfony\Component\Console\Input\InputInterface;
 use Symfony\Component\Console\Output\OutputInterface;
+use Symfony\Component\Console\Question\Question;
 
 /**
  * Implements d8:service:route-subscriber command.
@@ -20,10 +21,15 @@ class RouteSubscriber extends BaseGenerator {
    * {@inheritdoc}
    */
   protected function interact(InputInterface $input, OutputInterface $output) {
-    $questions = Utils::defaultQuestions();
+    $questions = Utils::moduleQuestions();
 
-    $vars = &$this->collectVars($input, $output, $questions);
-    $vars['class'] = Utils::camelize($vars['machine_name']) . 'RouteSubscriber';
+    $default_class = function ($vars) {
+      return Utils::camelize($vars['machine_name']) . 'RouteSubscriber';
+    };
+    $questions['class'] = new Question('Class', $default_class);
+    $questions['class']->setValidator([Utils::class, 'validateClassName']);
+
+    $this->collectVars($input, $output, $questions);
 
     $this->addFile()
       ->path('src/EventSubscriber/{class}.php')
diff --git a/vendor/chi-teck/drupal-code-generator/src/Helper/Renderer.php b/vendor/chi-teck/drupal-code-generator/src/Helper/Renderer.php
index a9256998b1..df81f21e2e 100644
--- a/vendor/chi-teck/drupal-code-generator/src/Helper/Renderer.php
+++ b/vendor/chi-teck/drupal-code-generator/src/Helper/Renderer.php
@@ -3,7 +3,7 @@
 namespace DrupalCodeGenerator\Helper;
 
 use Symfony\Component\Console\Helper\Helper;
-use Twig_Environment;
+use Twig\Environment;
 
 /**
  * Output dumper form generators.
@@ -13,17 +13,17 @@ class Renderer extends Helper {
   /**
    * The twig environment.
    *
-   * @var \Twig_Environment
+   * @var \Twig\Environment
    */
   protected $twig;
 
   /**
    * Constructs a generator command.
    *
-   * @param \Twig_Environment $twig
+   * @param \Twig\Environment $twig
    *   The twig environment.
    */
-  public function __construct(Twig_Environment $twig) {
+  public function __construct(Environment $twig) {
     $this->twig = $twig;
   }
 
diff --git a/vendor/chi-teck/drupal-code-generator/src/bootstrap.php b/vendor/chi-teck/drupal-code-generator/src/bootstrap.php
index 78f0049d8c..0cfb078a11 100644
--- a/vendor/chi-teck/drupal-code-generator/src/bootstrap.php
+++ b/vendor/chi-teck/drupal-code-generator/src/bootstrap.php
@@ -6,6 +6,9 @@
  */
 
 use DrupalCodeGenerator\ApplicationFactory;
+use DrupalCodeGenerator\Twig\Twig1Environment;
+use DrupalCodeGenerator\Twig\Twig2Environment;
+use Twig\Environment;
 
 /**
  * DCG root.
@@ -30,17 +33,40 @@ function dcg_create_application() {
   return ApplicationFactory::create();
 }
 
+/**
+ * Creates an Twig environment.
+ */
+function dcg_get_twig_environment($loader) {
+  switch (Environment::MAJOR_VERSION) {
+    case 1:
+      $environment = new Twig1Environment($loader);
+      break;
+
+    case 2:
+      $environment = new Twig2Environment($loader);
+      break;
+
+    default:
+      throw new \RuntimeException('Unsupported Twig version');
+  }
+  return $environment;
+}
+
 // Determine major Twig version.
-// Twig_Environment::MAJOR_VERSION is not suitable here because of
+// \Twig\Environment::MAJOR_VERSION is not suitable here because of
 // https://github.com/twigphp/Twig/pull/2945
 // Use this workaround as drupal/drupal is locked on Twig 1.38.
-list($twig_major_version) = sscanf(Twig_Environment::VERSION, '%d.%d.%d');
+list($twig_major_version) = sscanf(Environment::VERSION, '%d.%d.%d');
 
-// Twig_Environment::tokenize() signature has been changed in Twig 2, so that
-// it is not possible to maintain the same Twig_Environment sub-class for both
+// \Twig\Environment::tokenize() signature has been changed in Twig 2, so that
+// it is not possible to maintain the same \Twig\Environment sub-class for both
 // Twig versions.
 $twig_environment_class = sprintf('DrupalCodeGenerator\Twig\Twig%dEnvironment', $twig_major_version);
-class_alias($twig_environment_class, 'DrupalCodeGenerator\Twig\TwigEnvironment');
+if (!class_exists('DrupalCodeGenerator\Twig\TwigEnvironment')) {
+  class_alias($twig_environment_class, 'DrupalCodeGenerator\Twig\TwigEnvironment');
+}
 
 // Legacy TwigEnvironment class is still used in Drush.
-class_alias($twig_environment_class, 'DrupalCodeGenerator\TwigEnvironment');
+if (!class_exists('DrupalCodeGenerator\TwigEnvironment')) {
+  class_alias($twig_environment_class, 'DrupalCodeGenerator\TwigEnvironment');
+}
diff --git a/vendor/chi-teck/drupal-code-generator/templates/d8/_field/type.twig b/vendor/chi-teck/drupal-code-generator/templates/d8/_field/type.twig
index dee8d020d8..b00e5c3090 100644
--- a/vendor/chi-teck/drupal-code-generator/templates/d8/_field/type.twig
+++ b/vendor/chi-teck/drupal-code-generator/templates/d8/_field/type.twig
@@ -144,7 +144,7 @@ class {{ type_class }} extends FieldItemBase {
     $constraint_manager = \Drupal::typedDataManager()->getValidationConstraintManager();
     $constraints[] = $constraint_manager->create('ComplexData', $options);
 {% endif %}
-    // @todo Add more constrains here.
+    // @todo Add more constraints here.
     return $constraints;
   }
 
diff --git a/vendor/chi-teck/drupal-code-generator/templates/d8/_project/drush/Commands/PolicyCommands.php.twig b/vendor/chi-teck/drupal-code-generator/templates/d8/_project/drush/Commands/PolicyCommands.php.twig
index 5d0ace54de..c862f4fe48 100644
--- a/vendor/chi-teck/drupal-code-generator/templates/d8/_project/drush/Commands/PolicyCommands.php.twig
+++ b/vendor/chi-teck/drupal-code-generator/templates/d8/_project/drush/Commands/PolicyCommands.php.twig
@@ -19,7 +19,7 @@ class PolicyCommands extends DrushCommands {
   public function sqlSyncValidate(CommandData $commandData) {
     $target = $commandData->input()->getArgument('target');
     if ($target != '@local') {
-      throw new \Exception(dt('Per !file, you may never overwrite the production database.', ['!file' => __FILE__]));
+      throw new \Exception(dt('Per !file, you may never overwrite the remote database.', ['!file' => __FILE__]));
     }
   }
 
@@ -33,7 +33,7 @@ class PolicyCommands extends DrushCommands {
   public function rsyncValidate(CommandData $commandData) {
     $target = $commandData->input()->getArgument('target');
     if (strpos($target, '@prod') == 0) {
-      throw new \Exception(dt('Per !file, you may never rsync to the production site.', ['!file' => __FILE__]));
+      throw new \Exception(dt('Per !file, you may never rsync to the remote site.', ['!file' => __FILE__]));
     }
   }
 
diff --git a/vendor/chi-teck/drupal-code-generator/templates/d8/_project/drush/drush.yml.twig b/vendor/chi-teck/drupal-code-generator/templates/d8/_project/drush/drush.yml.twig
deleted file mode 100644
index ce1893c956..0000000000
--- a/vendor/chi-teck/drupal-code-generator/templates/d8/_project/drush/drush.yml.twig
+++ /dev/null
@@ -1,3 +0,0 @@
-# Running commands without a pseudo-terminal on remote server is safer.
-ssh:
-  tty: false
diff --git a/vendor/chi-teck/drupal-code-generator/templates/d8/_project/drush/sites/self.site.yml.twig b/vendor/chi-teck/drupal-code-generator/templates/d8/_project/drush/sites/self.site.yml.twig
index dd4f953d7a..8ce0e0f0b5 100644
--- a/vendor/chi-teck/drupal-code-generator/templates/d8/_project/drush/sites/self.site.yml.twig
+++ b/vendor/chi-teck/drupal-code-generator/templates/d8/_project/drush/sites/self.site.yml.twig
@@ -7,7 +7,7 @@ prod:
   uri: http://www.example.com
 
 stage:
-  host: stage.domain.com
+  host: stage.example.com
   user: stage-user
   root: /path/to/drupal
   uri: http://stage.example.com
diff --git a/vendor/chi-teck/drupal-code-generator/templates/d8/_project/phpunit.xml.twig b/vendor/chi-teck/drupal-code-generator/templates/d8/_project/phpunit.xml.twig
new file mode 100644
index 0000000000..1f3c0a21f8
--- /dev/null
+++ b/vendor/chi-teck/drupal-code-generator/templates/d8/_project/phpunit.xml.twig
@@ -0,0 +1,45 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!-- Copy the samples below into your own phpunit.xml file.-->
+
+<!-- Using this project's bootstrap file allows tests in `ExistingSite`,
+    `ExistingSiteSelenium2DriverTest`, and `ExistingSiteWebDriverTest`
+     to run alongside core's test types. -->
+<phpunit bootstrap="vendor/weitzman/drupal-test-traits/src/bootstrap-fast.php">
+    <php>
+        <env name="DTT_BASE_URL" value="http://example.com"/>
+        <env name="DTT_API_URL" value="http://localhost:9222"/>
+        <!-- <env name="DTT_MINK_DRIVER_ARGS" value='["chrome", { "chromeOptions" : { "w3c": false } }, "http://localhost:4444/wd/hub"]'/> -->
+        <env name="DTT_MINK_DRIVER_ARGS" value='["firefox", null, "http://localhost:4444/wd/hub"]'/>
+        <env name="DTT_API_OPTIONS" value='{"socketTimeout": 360, "domWaitTimeout": 3600000}' />
+        <!-- Example BROWSERTEST_OUTPUT_DIRECTORY value: /tmp
+             Specify a temporary directory for storing debug images and html documents.
+             These artifacts get copied to /sites/simpletest/browser_output by BrowserTestBase. -->
+        <env name="BROWSERTEST_OUTPUT_DIRECTORY" value=""/>
+        <!-- To disable deprecation testing completely uncomment the next line. -->
+        <!--<env name="SYMFONY_DEPRECATIONS_HELPER" value="disabled"/>-->
+        <!-- Specify the default directory screenshots should be placed. -->
+        <!--<env name="DTT_SCREENSHOT_REPORT_DIRECTORY" value=""/>-->
+    </php>
+
+    <testsuites>
+        <testsuite name="unit">
+            <directory>./{{ document_root_path }}modules/custom/*/tests/src/Unit</directory>
+            <!--<directory>./web/profiles/custom/*/tests/src/Unit</directory>-->
+        </testsuite>
+        <testsuite name="kernel">
+            <directory>./{{ document_root_path }}modules/custom/*/tests/src/Kernel</directory>
+            <!--<directory>./web/profiles/custom/*/tests/src/Kernel</directory>-->
+        </testsuite>
+        <testsuite name="existing-site">
+            <!-- Assumes tests are namespaced as \Drupal\Tests\custom_foo\ExistingSite. -->
+            <directory>./{{ document_root_path }}modules/custom/*/tests/src/ExistingSite</directory>
+            <!--<directory>./web/profiles/custom/*/tests/src/ExistingSite</directory>-->
+        </testsuite>
+        <testsuite name="existing-site-javascript">
+            <!-- Assumes tests are namespaced as \Drupal\Tests\custom_foo\ExistingSiteJavascript. -->
+            <directory>./{{ document_root_path }}modules/custom/*/tests/src/ExistingSiteJavascript</directory>
+            <!--<directory>./web/profiles/custom/*/tests/src/ExistingSiteJavascript</directory>-->
+        </testsuite>
+    </testsuites>
+</phpunit>
diff --git a/vendor/chi-teck/drupal-code-generator/templates/d8/_project/scripts/composer/create_required_files.php.twig b/vendor/chi-teck/drupal-code-generator/templates/d8/_project/scripts/composer/create_required_files.php.twig
deleted file mode 100755
index bf718dfead..0000000000
--- a/vendor/chi-teck/drupal-code-generator/templates/d8/_project/scripts/composer/create_required_files.php.twig
+++ /dev/null
@@ -1,58 +0,0 @@
-#!/usr/bin/env php
-<?php
-
-// -- settings.php file.
-$default_settings_file = './{{ document_root_path }}sites/default/default.settings.php';
-$settings_file = './{{ document_root_path }}sites/default/settings.php';
-
-if (!file_exists($settings_file) && file_exists($default_settings_file)) {
-  $content = file_get_contents($default_settings_file);
-
-{% if docrument_root %}
-  // Specify a directory for configuration data.
-  $current_code = '$config_directories = [];';
-  $new_code = <<<'EOS'
-$config_directories = [
-  CONFIG_SYNC_DIRECTORY => DRUPAL_ROOT . '/../config/sync',
-];
-EOS;
-  $content = str_replace($current_code, $new_code, $content);
-
-{% endif %}
-  // Allow local development configuration.
-  $current_code = <<<'EOS'
-#
-# if (file_exists($app_root . '/' . $site_path . '/settings.local.php')) {
-#   include $app_root . '/' . $site_path . '/settings.local.php';
-# }
-EOS;
-  $new_code = str_replace(["#\n", '# '], '', $current_code);
-  $content = str_replace($current_code, $new_code, $content);
-
-  if (!@file_put_contents($settings_file, $content)) {
-    file_put_contents('php://stderr', "Could not create $settings_file file.\n", FILE_APPEND);
-  }
-}
-
-// -- settings.local.php file.
-$example_local_settings_file = './{{ document_root_path }}sites/example.settings.local.php';
-$local_settings_file = './{{ document_root_path }}sites/default/settings.local.php';
-if (!file_exists($local_settings_file) && file_exists($example_local_settings_file)) {
-  if (@copy($example_local_settings_file, $local_settings_file)) {
-    chmod($settings_file, 0666);
-  }
-  else {
-    file_put_contents('php://stderr', "Could not create $local_settings_file file.\n", FILE_APPEND);
-  }
-}
-
-// -- files directory.
-$default_dir = './{{ document_root_path }}sites/default';
-$files_dir = $default_dir . '/files';
-if (file_exists($default_dir) && !file_exists($files_dir)) {
-  $original_umask = umask(0);
-  if (!@mkdir($files_dir, 0777)) {
-    file_put_contents('php://stderr', "Could not create $files_dir directory.\n", FILE_APPEND);
-  }
-  umask($original_umask);
-}
diff --git a/vendor/chi-teck/drupal-code-generator/templates/d8/_project/scripts/sync-site.sh.twig b/vendor/chi-teck/drupal-code-generator/templates/d8/_project/scripts/sync-site.sh.twig
index 22158b29d3..71093af4e6 100644
--- a/vendor/chi-teck/drupal-code-generator/templates/d8/_project/scripts/sync-site.sh.twig
+++ b/vendor/chi-teck/drupal-code-generator/templates/d8/_project/scripts/sync-site.sh.twig
@@ -7,18 +7,18 @@ set -e
 ROOT_DIR=$(dirname "$(readlink -f "$0")")/..
 
 function label {
-  echo -e "\n\e[1;47;44m "$@" \e[0m"
+  echo -e "\n\e[1;47;44m $* \e[0m"
 }
 
 function local_drush {
- $ROOT_DIR/vendor/drush/drush/drush --root $ROOT_DIR/{{ document_root_path }} $@
+ "$ROOT_DIR"/vendor/drush/drush/drush --root "$ROOT_DIR"/{{ document_root_path }} "$@"
 }
 
 SOURCE_ENVIRONMENT=$1
 
 # Source environment from which we copy the database and files.
-if [ -z "$SOURCE_ENVIRONMENT" ]; then
-  read -p "Source environment: " SOURCE_ENVIRONMENT
+if [[ -z $SOURCE_ENVIRONMENT ]]; then
+  read -r -p "Source environment: " SOURCE_ENVIRONMENT
 fi
 
 label 'Empty current database'
@@ -26,11 +26,12 @@ local_drush sql:drop -y
 
 label "Import database from $SOURCE_ENVIRONMENT"
 # @DCG gzip does not make much sense for small databases.
-local_drush @$SOURCE_ENVIRONMENT sql:dump --gzip | gunzip | local_drush sql:cli
+local_drush "@$SOURCE_ENVIRONMENT" sql:dump --gzip | gunzip | local_drush sql:cli
 
 label "Synchronize files with $SOURCE_ENVIRONMENT"
 # @DCG To save time and disk space consider using Stage File Proxy module.
-local_drush core:rsync -y @$SOURCE_ENVIRONMENT:sites/default/files/ $(realpath $ROOT_DIR/{{ document_root_path }}sites/default/files) || true
+TARGET_DIR=$(realpath "$ROOT_DIR"/{{ document_root_path }}sites/default/files)
+local_drush core:rsync -y "@$SOURCE_ENVIRONMENT:sites/default/files/" "$TARGET_DIR" || true
 
 label 'Apply DB updates'
 local_drush updatedb -y
@@ -53,9 +54,9 @@ local_drush watchdog:delete all -y
 label 'Warm cache'
 URL=$(local_drush core:status --field=uri)
 if [[ $URL == *"default"* ]]; then
-  echo -e "\n\e[91m"URL is not set. Skipping."\e[0m" >&2
+  echo -e "\n\e[91mURL is not set. Skipping.\e[0m" >&2
 else
-  curl -s -o /dev/null -w "URL: %{url_effective}\nStatus code: %{http_code}\nTime total: %{time_total} sec.\n" $URL
+  curl -s -o /dev/null -w "URL: %{url_effective}\nStatus code: %{http_code}\nTime total: %{time_total} sec.\n $URL"
 fi
 
 label 'Check site status'
diff --git a/vendor/chi-teck/drupal-code-generator/templates/d8/_project/tests/behat/behat.yml.twig b/vendor/chi-teck/drupal-code-generator/templates/d8/_project/tests/behat/behat.yml.twig
deleted file mode 100644
index 84d5829dc7..0000000000
--- a/vendor/chi-teck/drupal-code-generator/templates/d8/_project/tests/behat/behat.yml.twig
+++ /dev/null
@@ -1,42 +0,0 @@
-# Default Behat configuration.
-default:
-  autoload:
-    '': '%paths.base%/bootstrap'
-  suites:
-    example:
-      paths:
-        - '%paths.base%/features/example'
-      contexts:
-        - ExampleContext
-        - Drupal\DrupalExtension\Context\DrupalContext
-        - Drupal\DrupalExtension\Context\MessageContext
-      filters:
-        tags: ~@ignore
-  extensions:
-    Behat\MinkExtension:
-      base_url: 'PLACEHOLDER'
-      goutte:
-       # The below is necessary to avoid errors when using self-signed certs.
-        guzzle_parameters:
-          verify: false
-      sessions:
-        default:
-          selenium2:
-            wd_host: http://localhost:4444/wd/hub
-            browser: chrome
-    Drupal\DrupalExtension:
-      blackbox: ~
-      api_driver: 'drupal'
-{% if drush %}
-      drush:
-        alias: 'PLACEHOLDER'
-        binary: '%paths.base%/../../vendor/drush/drush/drush'
-{% endif %}
-      region_map:
-        header: '#header'
-        content: '#content'
-        footer: '#footer'
-      selectors:
-        message_selector: '.messages'
-        error_message_selector: '.messages.messages-error'
-        success_message_selector: '.messages.messages-status'
diff --git a/vendor/chi-teck/drupal-code-generator/templates/d8/_project/tests/behat/bootstrap/BaseContext.php.twig b/vendor/chi-teck/drupal-code-generator/templates/d8/_project/tests/behat/bootstrap/BaseContext.php.twig
deleted file mode 100644
index f5db0b722a..0000000000
--- a/vendor/chi-teck/drupal-code-generator/templates/d8/_project/tests/behat/bootstrap/BaseContext.php.twig
+++ /dev/null
@@ -1,14 +0,0 @@
-<?php
-
-use Drupal\DrupalExtension\Context\MinkContext;
-
-/**
- * Base class for Behat contexts.
- *
- * @DCG
- * Put there step definitions and helpers that need to be shared across multiple
- * Behat contexts.
- */
-abstract class BaseContext extends MinkContext {
-
-}
diff --git a/vendor/chi-teck/drupal-code-generator/templates/d8/_project/tests/behat/bootstrap/ExampleContext.php.twig b/vendor/chi-teck/drupal-code-generator/templates/d8/_project/tests/behat/bootstrap/ExampleContext.php.twig
deleted file mode 100644
index b8f50485e9..0000000000
--- a/vendor/chi-teck/drupal-code-generator/templates/d8/_project/tests/behat/bootstrap/ExampleContext.php.twig
+++ /dev/null
@@ -1,8 +0,0 @@
-<?php
-
-/**
- * Example context.
- */
-class ExampleContext extends BaseContext {
-
-}
diff --git a/vendor/chi-teck/drupal-code-generator/templates/d8/_project/tests/behat/features/example/user_forms.feature.twig b/vendor/chi-teck/drupal-code-generator/templates/d8/_project/tests/behat/features/example/user_forms.feature.twig
deleted file mode 100644
index aabe916404..0000000000
--- a/vendor/chi-teck/drupal-code-generator/templates/d8/_project/tests/behat/features/example/user_forms.feature.twig
+++ /dev/null
@@ -1,11 +0,0 @@
-Feature: User forms
-  I need to be able to use the most common areas of the site.
-
-  @javascript
-  Scenario: Registration
-    Given I am on "/user/register"
-    Then I should see "Create new account" in the "content" region
-    Then I fill in "Email address" with "test@example.com"
-    And I fill in "Username" with "test"
-    And I press "Create new account"
-    Then I should see the message "Thank you for applying for an account."
diff --git a/vendor/chi-teck/drupal-code-generator/templates/d8/_project/tests/behat/local.behat.yml.twig b/vendor/chi-teck/drupal-code-generator/templates/d8/_project/tests/behat/local.behat.yml.twig
deleted file mode 100644
index 930d8d3181..0000000000
--- a/vendor/chi-teck/drupal-code-generator/templates/d8/_project/tests/behat/local.behat.yml.twig
+++ /dev/null
@@ -1,12 +0,0 @@
-# Local overrides of Behat configuration.
-imports:
-  - behat.yml
-default:
-  extensions:
-    Behat\MinkExtension:
-      base_url: 'http://localhost'
-{% if drush %}
-    Drupal\DrupalExtension:
-      drush:
-        alias: 'local'
-{% endif %}
diff --git a/vendor/chi-teck/drupal-code-generator/templates/d8/_project/tests/src/HomePageTest.php.twig b/vendor/chi-teck/drupal-code-generator/templates/d8/_project/tests/src/HomePageTest.php.twig
new file mode 100644
index 0000000000..934f528f52
--- /dev/null
+++ b/vendor/chi-teck/drupal-code-generator/templates/d8/_project/tests/src/HomePageTest.php.twig
@@ -0,0 +1,20 @@
+<?php
+
+namespace {{ namespace }}\Tests;
+
+use weitzman\DrupalTestTraits\ExistingSiteBase;
+
+/**
+ * A test for home page.
+ */
+class HomePageTest extends ExistingSiteBase {
+
+  /**
+   * Test callback.
+   */
+  public function testHomePage() {
+    $this->drupalGet('');
+    $this->assertSession()->pageTextContains('Welcome');
+  }
+
+}
diff --git a/vendor/chi-teck/drupal-code-generator/templates/d8/module/configuration-entity/model.info.yml.twig b/vendor/chi-teck/drupal-code-generator/templates/d8/module/configuration-entity/model.info.yml.twig
index d5dc3b157a..c26300871b 100644
--- a/vendor/chi-teck/drupal-code-generator/templates/d8/module/configuration-entity/model.info.yml.twig
+++ b/vendor/chi-teck/drupal-code-generator/templates/d8/module/configuration-entity/model.info.yml.twig
@@ -3,6 +3,7 @@ type: module
 description: 'Provides {{ entity_type_label|article|lower }} configuration entity.'
 package: {{ package }}
 core: 8.x
+core_version_requirement: ^8 || ^9
 {% if dependencies %}
 dependencies:
 {% for dependency in dependencies %}
diff --git a/vendor/chi-teck/drupal-code-generator/templates/d8/module/content-entity/model.info.yml.twig b/vendor/chi-teck/drupal-code-generator/templates/d8/module/content-entity/model.info.yml.twig
index ec3a80036f..3e3c8e541d 100644
--- a/vendor/chi-teck/drupal-code-generator/templates/d8/module/content-entity/model.info.yml.twig
+++ b/vendor/chi-teck/drupal-code-generator/templates/d8/module/content-entity/model.info.yml.twig
@@ -3,6 +3,7 @@ type: module
 description: 'Provides {{ entity_type_label|article|lower }} entity.'
 package: {{ package }}
 core: 8.x
+core_version_requirement: ^8 || ^9
 {% if dependencies %}
 dependencies:
 {% for dependency in dependencies %}
diff --git a/vendor/chi-teck/drupal-code-generator/templates/d8/module/content-entity/src/Entity/Example.php.twig b/vendor/chi-teck/drupal-code-generator/templates/d8/module/content-entity/src/Entity/Example.php.twig
index 3f03e5ffc4..7484c58fe5 100644
--- a/vendor/chi-teck/drupal-code-generator/templates/d8/module/content-entity/src/Entity/Example.php.twig
+++ b/vendor/chi-teck/drupal-code-generator/templates/d8/module/content-entity/src/Entity/Example.php.twig
@@ -73,7 +73,9 @@ use Drupal\Core\Entity\EntityChangedTrait;
  *   admin_permission = "administer {{ entity_type_label|lower }} types",
 {% elseif fieldable %}
  *   admin_permission = "administer {{ entity_type_label|lower }}",
- {% endif %}
+{% else %}
+ *   admin_permission = "access {{ entity_type_label|lower }} overview",
+{% endif %}
  *   entity_keys = {
  *     "id" = "id",
 {% if revisionable %}
diff --git a/vendor/chi-teck/drupal-code-generator/templates/d8/phpstorm-meta.twig b/vendor/chi-teck/drupal-code-generator/templates/d8/phpstorm-meta.twig
new file mode 100644
index 0000000000..32dd7b256e
--- /dev/null
+++ b/vendor/chi-teck/drupal-code-generator/templates/d8/phpstorm-meta.twig
@@ -0,0 +1,81 @@
+<?php
+
+namespace PHPSTORM_META {
+
+  override(
+    \Drupal::service(0),
+    map([
+{% for service_id, class in services %}
+      '{{ service_id }}' => '{{ class }}',
+{% endfor %}
+    ])
+  );
+
+  override(
+    \Drupal\Core\Entity\EntityTypeManagerInterface::getStorage(0),
+    map([
+{% for entity_type_id, class in storages %}
+      '{{ entity_type_id }}' => '{{ class }}',
+{% endfor %}
+    ])
+  );
+
+  override(
+    \Drupal\Core\Entity\EntityTypeManagerInterface::getViewBuilder(0),
+    map([
+{% for entity_type_id, class in view_builders %}
+      '{{ entity_type_id }}' => '{{ class }}',
+{% endfor %}
+    ])
+  );
+
+  override(
+    \Drupal\Core\Entity\EntityTypeManagerInterface::getListBuilder(0),
+    map([
+{% for entity_type_id, class in list_builders %}
+      '{{ entity_type_id }}' => '{{ class }}',
+{% endfor %}
+    ])
+  );
+
+  override(
+    \Drupal\Core\Entity\EntityTypeManagerInterface::getAccessControlHandler(0),
+    map([
+{% for entity_type_id, class in access_controls %}
+     '{{ entity_type_id }}' => '{{ class }}',
+{% endfor %}
+    ])
+  );
+
+{% for class in entity_classes %}
+{# Using map() to work around PhpStorm bug. #}
+{# @see https://intellij-support.jetbrains.com/hc/en-us/community/posts/360001516519 #}
+  override({{ class }}::loadMultiple(), map(['' => '{{ class }}[]']));
+  override({{ class }}::load(), map(['' => '{{ class }}']));
+  override({{ class }}::create(), map(['' => '{{ class }}']));
+
+{% endfor %}
+  expectedReturnValues(
+    \Drupal\Core\Entity\EntityInterface::save(),
+    \SAVED_NEW,
+    \SAVED_UPDATED
+  );
+
+  expectedArguments(
+    \Drupal\Core\Entity\EntityViewBuilderInterface::view(),
+    2,
+    \Drupal\Core\Language\LanguageInterface::LANGCODE_NOT_SPECIFIED,
+    \Drupal\Core\Language\LanguageInterface::LANGCODE_NOT_APPLICABLE,
+    \Drupal\Core\Language\LanguageInterface::LANGCODE_DEFAULT,
+    \Drupal\Core\Language\LanguageInterface::LANGCODE_SITE_DEFAULT
+  );
+
+  expectedArguments(
+    \Drupal\Core\Messenger\MessengerInterface::addMessage(),
+    1,
+    \Drupal\Core\Messenger\MessengerInterface::TYPE_STATUS,
+    \Drupal\Core\Messenger\MessengerInterface::TYPE_WARNING,
+    \Drupal\Core\Messenger\MessengerInterface::TYPE_ERROR
+  );
+
+}
\ No newline at end of file
diff --git a/vendor/chi-teck/drupal-code-generator/templates/d8/plugin/_ckeditor/dialog.twig b/vendor/chi-teck/drupal-code-generator/templates/d8/plugin/_ckeditor/dialog.twig
index dfdbdc352d..00e4e1d153 100644
--- a/vendor/chi-teck/drupal-code-generator/templates/d8/plugin/_ckeditor/dialog.twig
+++ b/vendor/chi-teck/drupal-code-generator/templates/d8/plugin/_ckeditor/dialog.twig
@@ -2,12 +2,13 @@
  * @file
  * Defines dialog for {{ plugin_label }} CKEditor plugin.
  */
+
 (function (Drupal) {
 
   'use strict';
 
   // Dialog definition.
-  CKEDITOR.dialog.add('{{ command_name }}Dialog', function(editor) {
+  CKEDITOR.dialog.add('{{ command_name }}Dialog', function (editor) {
 
     return {
 
@@ -47,7 +48,7 @@
 
       // This method is invoked once a user clicks the OK button, confirming the
       // dialog.
-      onOk: function() {
+      onOk: function () {
 
         // The context of this function is the dialog object itself.
         // See http://docs.ckeditor.com/#!/api/CKEDITOR.dialog.
@@ -58,7 +59,7 @@
 
         // Set element attribute and text by getting the defined field values.
         abbr.setAttribute('title', dialog.getValueOf('tab-settings', 'title'));
-        abbr.setText( dialog.getValueOf('tab-settings', 'abbr'));
+        abbr.setText(dialog.getValueOf('tab-settings', 'abbr'));
 
         // Finally, insert the element into the editor at the caret position.
         editor.insertElement(abbr);
diff --git a/vendor/chi-teck/drupal-code-generator/templates/d8/plugin/_ckeditor/plugin.twig b/vendor/chi-teck/drupal-code-generator/templates/d8/plugin/_ckeditor/plugin.twig
index 663f104f72..64fbef46b5 100644
--- a/vendor/chi-teck/drupal-code-generator/templates/d8/plugin/_ckeditor/plugin.twig
+++ b/vendor/chi-teck/drupal-code-generator/templates/d8/plugin/_ckeditor/plugin.twig
@@ -8,6 +8,7 @@
  *
  * @see http://docs.ckeditor.com/#!/guide/plugin_sdk_sample_1
  */
+
 (function (Drupal) {
 
   'use strict';
@@ -18,7 +19,7 @@
     icons: '{{ short_plugin_id }}',
 
     // The plugin initialization logic goes inside this method.
-    init: function(editor) {
+    init: function (editor) {
 
       // Define an editor command that opens our dialog window.
       editor.addCommand('{{ command_name }}', new CKEDITOR.dialogCommand('{{ command_name }}Dialog'));
diff --git a/vendor/chi-teck/drupal-code-generator/templates/d8/plugin/rest-resource.twig b/vendor/chi-teck/drupal-code-generator/templates/d8/plugin/rest-resource.twig
index 6c20fa2403..b4dd3d35d6 100644
--- a/vendor/chi-teck/drupal-code-generator/templates/d8/plugin/rest-resource.twig
+++ b/vendor/chi-teck/drupal-code-generator/templates/d8/plugin/rest-resource.twig
@@ -97,18 +97,18 @@ class {{ class }} extends ResourceBase implements DependentPluginInterface {
   /**
    * Responds to POST requests and saves the new record.
    *
-   * @param mixed $record
+   * @param mixed $data
    *   Data to write into the database.
    *
    * @return \Drupal\rest\ModifiedResourceResponse
    *   The HTTP response object.
    */
-  public function post($record) {
+  public function post($data) {
 
-    $this->validate($record);
+    $this->validate($data);
 
     $id = $this->dbConnection->insert('{{ plugin_id }}')
-      ->fields($record)
+      ->fields($data)
       ->execute();
 
     $this->logger->notice('New {{ plugin_label|lower }} record has been created.');
@@ -124,40 +124,15 @@ class {{ class }} extends ResourceBase implements DependentPluginInterface {
    *
    * @param int $id
    *   The ID of the record.
-   * @param mixed $record
+   * @param mixed $data
    *   Data to write into the database.
    *
    * @return \Drupal\rest\ModifiedResourceResponse
    *   The HTTP response object.
    */
-  public function patch($id, $record) {
-    $this->validate($record);
-    return $this->updateRecord($id, $record);
-  }
-
-  /**
-   * Responds to entity PUT requests.
-   *
-   * @param int $id
-   *   The ID of the record.
-   * @param mixed $record
-   *   Data to write into the database.
-   *
-   * @return \Drupal\rest\ModifiedResourceResponse
-   *   The HTTP response object.
-   */
-  public function put($id, $record) {
-
-    $this->validate($record);
-
-    // Provide default values to make sure the record is completely replaced.
-    $record += [
-      'title' => '',
-      'description' => '',
-      'price' => 0,
-    ];
-
-    return $this->updateRecord($id, $record);
+  public function patch($id, $data) {
+    $this->validate($data);
+    return $this->updateRecord($id, $data);
   }
 
   /**
@@ -213,13 +188,6 @@ class {{ class }} extends ResourceBase implements DependentPluginInterface {
   public function routes() {
     $collection = parent::routes();
 
-    // ResourceBase class does not support PUT method by some reason.
-    $definition = $this->getPluginDefinition();
-    $canonical_path = $definition['uri_paths']['canonical'];
-    $route = $this->getBaseRoute($canonical_path, 'PUT');
-    $route->addRequirements(['_content_type_format' => implode('|', $this->serializerFormats)]);
-    $collection->add('{{ plugin_id }}.PUT', $route);
-
     // Take out BC routes added in base class.
     // @see https://www.drupal.org/node/2865645
     // @todo Remove this in Drupal 9.
diff --git a/vendor/chi-teck/drupal-code-generator/templates/d8/service/logger.twig b/vendor/chi-teck/drupal-code-generator/templates/d8/service/logger.twig
index 0747d11614..526e32ca71 100644
--- a/vendor/chi-teck/drupal-code-generator/templates/d8/service/logger.twig
+++ b/vendor/chi-teck/drupal-code-generator/templates/d8/service/logger.twig
@@ -73,11 +73,7 @@ class {{ class }} implements LoggerInterface {
       'uid' => $context['uid'],
     ];
 
-    file_put_contents(
-      $this->config->get('path.temporary') . '/drupal.log',
-      print_r($entry, TRUE),
-      FILE_APPEND
-    );
+    file_put_contents('temporary://drupal.log', print_r($entry, TRUE), FILE_APPEND);
   }
 
 }
diff --git a/vendor/chi-teck/drupal-code-generator/templates/d8/test/browser.twig b/vendor/chi-teck/drupal-code-generator/templates/d8/test/browser.twig
index 239e41da32..e0b83c93d1 100644
--- a/vendor/chi-teck/drupal-code-generator/templates/d8/test/browser.twig
+++ b/vendor/chi-teck/drupal-code-generator/templates/d8/test/browser.twig
@@ -11,6 +11,11 @@ use Drupal\Tests\BrowserTestBase;
  */
 class {{ class }} extends BrowserTestBase {
 
+  /**
+   * {@inheritdoc}
+   */
+  protected $defaultTheme = 'stable';
+
   /**
    * {@inheritdoc}
    */
diff --git a/vendor/chi-teck/drupal-code-generator/templates/d8/test/webdriver.twig b/vendor/chi-teck/drupal-code-generator/templates/d8/test/webdriver.twig
index 77e565b5bf..bf8e328603 100644
--- a/vendor/chi-teck/drupal-code-generator/templates/d8/test/webdriver.twig
+++ b/vendor/chi-teck/drupal-code-generator/templates/d8/test/webdriver.twig
@@ -11,6 +11,11 @@ use Drupal\FunctionalJavascriptTests\WebDriverTestBase;
  */
 class {{ class }} extends WebDriverTestBase {
 
+  /**
+   * {@inheritdoc}
+   */
+  protected $defaultTheme = 'stable';
+
   /**
    * {@inheritdoc}
    */
diff --git a/vendor/chi-teck/drupal-code-generator/templates/d8/yml/module-info.twig b/vendor/chi-teck/drupal-code-generator/templates/d8/yml/module-info.twig
index c4277eb466..7f5b1b3ae7 100644
--- a/vendor/chi-teck/drupal-code-generator/templates/d8/yml/module-info.twig
+++ b/vendor/chi-teck/drupal-code-generator/templates/d8/yml/module-info.twig
@@ -3,6 +3,7 @@ type: module
 description: {{ description }}
 package: {{ package }}
 core: 8.x
+core_version_requirement: ^8 || ^9
 {% if dependencies %}
 dependencies:
 {% for dependency in dependencies %}
diff --git a/vendor/chi-teck/drupal-code-generator/templates/d8/yml/theme-info.twig b/vendor/chi-teck/drupal-code-generator/templates/d8/yml/theme-info.twig
index e11ffdda05..7dbe556bff 100644
--- a/vendor/chi-teck/drupal-code-generator/templates/d8/yml/theme-info.twig
+++ b/vendor/chi-teck/drupal-code-generator/templates/d8/yml/theme-info.twig
@@ -4,6 +4,7 @@ base theme: {{ base_theme }}
 description: {{ description }}
 package: {{ package }}
 core: 8.x
+core_version_requirement: ^8 || ^9
 libraries:
   - {{ machine_name }}/global
 regions:
diff --git a/vendor/composer/autoload_classmap.php b/vendor/composer/autoload_classmap.php
index 3a07b91759..08c79e186c 100644
--- a/vendor/composer/autoload_classmap.php
+++ b/vendor/composer/autoload_classmap.php
@@ -664,6 +664,7 @@
     'DrupalCodeGenerator\\Command\\Drupal_8\\Module\\ConfigurationEntity' => $vendorDir . '/chi-teck/drupal-code-generator/src/Command/Drupal_8/Module/ConfigurationEntity.php',
     'DrupalCodeGenerator\\Command\\Drupal_8\\Module\\ContentEntity' => $vendorDir . '/chi-teck/drupal-code-generator/src/Command/Drupal_8/Module/ContentEntity.php',
     'DrupalCodeGenerator\\Command\\Drupal_8\\Module\\Standard' => $vendorDir . '/chi-teck/drupal-code-generator/src/Command/Drupal_8/Module/Standard.php',
+    'DrupalCodeGenerator\\Command\\Drupal_8\\PhpStormMetadata' => $vendorDir . '/chi-teck/drupal-code-generator/src/Command/Drupal_8/PhpStormMetadata.php',
     'DrupalCodeGenerator\\Command\\Drupal_8\\PluginManager' => $vendorDir . '/chi-teck/drupal-code-generator/src/Command/Drupal_8/PluginManager.php',
     'DrupalCodeGenerator\\Command\\Drupal_8\\Plugin\\Action' => $vendorDir . '/chi-teck/drupal-code-generator/src/Command/Drupal_8/Plugin/Action.php',
     'DrupalCodeGenerator\\Command\\Drupal_8\\Plugin\\Block' => $vendorDir . '/chi-teck/drupal-code-generator/src/Command/Drupal_8/Plugin/Block.php',
@@ -3259,9 +3260,6 @@
     '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/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',
     'Laminas\\Diactoros\\AbstractSerializer' => $vendorDir . '/laminas/laminas-diactoros/src/AbstractSerializer.php',
     'Laminas\\Diactoros\\CallbackStream' => $vendorDir . '/laminas/laminas-diactoros/src/CallbackStream.php',
     'Laminas\\Diactoros\\Exception\\DeprecatedMethodException' => $vendorDir . '/laminas/laminas-diactoros/src/Exception/DeprecatedMethodException.php',
@@ -3518,8 +3516,8 @@
     'Masterminds\\HTML5\\Serializer\\Traverser' => $vendorDir . '/masterminds/html5/src/HTML5/Serializer/Traverser.php',
     'Mobile_Detect' => $vendorDir . '/mobiledetect/mobiledetectlib/Mobile_Detect.php',
     'OS_Guess' => $vendorDir . '/pear/pear-core-minimal/src/OS/Guess.php',
-    'OomphInc\\ComposerInstallersExtender\\Installer' => $vendorDir . '/oomphinc/composer-installers-extender/src/Installer.php',
-    'OomphInc\\ComposerInstallersExtender\\InstallerHelper' => $vendorDir . '/oomphinc/composer-installers-extender/src/InstallerHelper.php',
+    'OomphInc\\ComposerInstallersExtender\\Installers\\CustomInstaller' => $vendorDir . '/oomphinc/composer-installers-extender/src/Installers/CustomInstaller.php',
+    'OomphInc\\ComposerInstallersExtender\\Installers\\Installer' => $vendorDir . '/oomphinc/composer-installers-extender/src/Installers/Installer.php',
     'OomphInc\\ComposerInstallersExtender\\Plugin' => $vendorDir . '/oomphinc/composer-installers-extender/src/Plugin.php',
     'PEAR' => $vendorDir . '/pear/pear-core-minimal/src/PEAR.php',
     'PEAR_Error' => $vendorDir . '/pear/pear-core-minimal/src/PEAR.php',
@@ -3565,9 +3563,16 @@
     '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\\AttributeEmulator' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Lexer/TokenEmulator/AttributeEmulator.php',
     'PhpParser\\Lexer\\TokenEmulator\\CoaleseEqualTokenEmulator' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Lexer/TokenEmulator/CoaleseEqualTokenEmulator.php',
+    'PhpParser\\Lexer\\TokenEmulator\\FlexibleDocStringEmulator' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Lexer/TokenEmulator/FlexibleDocStringEmulator.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\\Lexer\\TokenEmulator\\KeywordEmulator' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Lexer/TokenEmulator/KeywordEmulator.php',
+    'PhpParser\\Lexer\\TokenEmulator\\MatchTokenEmulator' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Lexer/TokenEmulator/MatchTokenEmulator.php',
+    'PhpParser\\Lexer\\TokenEmulator\\NullsafeTokenEmulator' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Lexer/TokenEmulator/NullsafeTokenEmulator.php',
+    'PhpParser\\Lexer\\TokenEmulator\\NumericLiteralSeparatorEmulator' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Lexer/TokenEmulator/NumericLiteralSeparatorEmulator.php',
+    'PhpParser\\Lexer\\TokenEmulator\\ReverseEmulator' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Lexer/TokenEmulator/ReverseEmulator.php',
+    'PhpParser\\Lexer\\TokenEmulator\\TokenEmulator' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Lexer/TokenEmulator/TokenEmulator.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',
@@ -3581,7 +3586,11 @@
     'PhpParser\\NodeVisitor\\FindingVisitor' => $vendorDir . '/nikic/php-parser/lib/PhpParser/NodeVisitor/FindingVisitor.php',
     'PhpParser\\NodeVisitor\\FirstFindingVisitor' => $vendorDir . '/nikic/php-parser/lib/PhpParser/NodeVisitor/FirstFindingVisitor.php',
     'PhpParser\\NodeVisitor\\NameResolver' => $vendorDir . '/nikic/php-parser/lib/PhpParser/NodeVisitor/NameResolver.php',
+    'PhpParser\\NodeVisitor\\NodeConnectingVisitor' => $vendorDir . '/nikic/php-parser/lib/PhpParser/NodeVisitor/NodeConnectingVisitor.php',
+    'PhpParser\\NodeVisitor\\ParentConnectingVisitor' => $vendorDir . '/nikic/php-parser/lib/PhpParser/NodeVisitor/ParentConnectingVisitor.php',
     'PhpParser\\Node\\Arg' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Arg.php',
+    'PhpParser\\Node\\Attribute' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Attribute.php',
+    'PhpParser\\Node\\AttributeGroup' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/AttributeGroup.php',
     'PhpParser\\Node\\Const_' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Const_.php',
     'PhpParser\\Node\\Expr' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr.php',
     'PhpParser\\Node\\Expr\\ArrayDimFetch' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/ArrayDimFetch.php',
@@ -3657,8 +3666,11 @@
     'PhpParser\\Node\\Expr\\Instanceof_' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/Instanceof_.php',
     'PhpParser\\Node\\Expr\\Isset_' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/Isset_.php',
     'PhpParser\\Node\\Expr\\List_' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/List_.php',
+    'PhpParser\\Node\\Expr\\Match_' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/Match_.php',
     'PhpParser\\Node\\Expr\\MethodCall' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/MethodCall.php',
     'PhpParser\\Node\\Expr\\New_' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/New_.php',
+    'PhpParser\\Node\\Expr\\NullsafeMethodCall' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/NullsafeMethodCall.php',
+    'PhpParser\\Node\\Expr\\NullsafePropertyFetch' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/NullsafePropertyFetch.php',
     'PhpParser\\Node\\Expr\\PostDec' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/PostDec.php',
     'PhpParser\\Node\\Expr\\PostInc' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/PostInc.php',
     'PhpParser\\Node\\Expr\\PreDec' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/PreDec.php',
@@ -3669,6 +3681,7 @@
     'PhpParser\\Node\\Expr\\StaticCall' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/StaticCall.php',
     'PhpParser\\Node\\Expr\\StaticPropertyFetch' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/StaticPropertyFetch.php',
     'PhpParser\\Node\\Expr\\Ternary' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/Ternary.php',
+    'PhpParser\\Node\\Expr\\Throw_' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/Throw_.php',
     'PhpParser\\Node\\Expr\\UnaryMinus' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/UnaryMinus.php',
     'PhpParser\\Node\\Expr\\UnaryPlus' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/UnaryPlus.php',
     'PhpParser\\Node\\Expr\\Variable' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/Variable.php',
@@ -3676,6 +3689,7 @@
     'PhpParser\\Node\\Expr\\Yield_' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/Yield_.php',
     'PhpParser\\Node\\FunctionLike' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/FunctionLike.php',
     'PhpParser\\Node\\Identifier' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Identifier.php',
+    'PhpParser\\Node\\MatchArm' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/MatchArm.php',
     'PhpParser\\Node\\Name' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Name.php',
     'PhpParser\\Node\\Name\\FullyQualified' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Name/FullyQualified.php',
     'PhpParser\\Node\\Name\\Relative' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Name/Relative.php',
@@ -3744,6 +3758,7 @@
     'PhpParser\\Node\\Stmt\\UseUse' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Stmt/UseUse.php',
     'PhpParser\\Node\\Stmt\\Use_' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Stmt/Use_.php',
     'PhpParser\\Node\\Stmt\\While_' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Stmt/While_.php',
+    'PhpParser\\Node\\UnionType' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/UnionType.php',
     'PhpParser\\Node\\VarLikeIdentifier' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/VarLikeIdentifier.php',
     'PhpParser\\Parser' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Parser.php',
     'PhpParser\\ParserAbstract' => $vendorDir . '/nikic/php-parser/lib/PhpParser/ParserAbstract.php',
@@ -3781,14 +3796,15 @@
     'Psy\\CodeCleaner\\CallTimePassByReferencePass' => $vendorDir . '/psy/psysh/src/CodeCleaner/CallTimePassByReferencePass.php',
     'Psy\\CodeCleaner\\CalledClassPass' => $vendorDir . '/psy/psysh/src/CodeCleaner/CalledClassPass.php',
     'Psy\\CodeCleaner\\CodeCleanerPass' => $vendorDir . '/psy/psysh/src/CodeCleaner/CodeCleanerPass.php',
+    'Psy\\CodeCleaner\\EmptyArrayDimFetchPass' => $vendorDir . '/psy/psysh/src/CodeCleaner/EmptyArrayDimFetchPass.php',
     'Psy\\CodeCleaner\\ExitPass' => $vendorDir . '/psy/psysh/src/CodeCleaner/ExitPass.php',
     'Psy\\CodeCleaner\\FinalClassPass' => $vendorDir . '/psy/psysh/src/CodeCleaner/FinalClassPass.php',
     'Psy\\CodeCleaner\\FunctionContextPass' => $vendorDir . '/psy/psysh/src/CodeCleaner/FunctionContextPass.php',
     'Psy\\CodeCleaner\\FunctionReturnInWriteContextPass' => $vendorDir . '/psy/psysh/src/CodeCleaner/FunctionReturnInWriteContextPass.php',
     'Psy\\CodeCleaner\\ImplicitReturnPass' => $vendorDir . '/psy/psysh/src/CodeCleaner/ImplicitReturnPass.php',
     'Psy\\CodeCleaner\\InstanceOfPass' => $vendorDir . '/psy/psysh/src/CodeCleaner/InstanceOfPass.php',
+    'Psy\\CodeCleaner\\LabelContextPass' => $vendorDir . '/psy/psysh/src/CodeCleaner/LabelContextPass.php',
     'Psy\\CodeCleaner\\LeavePsyshAlonePass' => $vendorDir . '/psy/psysh/src/CodeCleaner/LeavePsyshAlonePass.php',
-    'Psy\\CodeCleaner\\LegacyEmptyPass' => $vendorDir . '/psy/psysh/src/CodeCleaner/LegacyEmptyPass.php',
     'Psy\\CodeCleaner\\ListPass' => $vendorDir . '/psy/psysh/src/CodeCleaner/ListPass.php',
     'Psy\\CodeCleaner\\LoopContextPass' => $vendorDir . '/psy/psysh/src/CodeCleaner/LoopContextPass.php',
     'Psy\\CodeCleaner\\MagicConstantsPass' => $vendorDir . '/psy/psysh/src/CodeCleaner/MagicConstantsPass.php',
@@ -3797,6 +3813,7 @@
     'Psy\\CodeCleaner\\NoReturnValue' => $vendorDir . '/psy/psysh/src/CodeCleaner/NoReturnValue.php',
     'Psy\\CodeCleaner\\PassableByReferencePass' => $vendorDir . '/psy/psysh/src/CodeCleaner/PassableByReferencePass.php',
     'Psy\\CodeCleaner\\RequirePass' => $vendorDir . '/psy/psysh/src/CodeCleaner/RequirePass.php',
+    'Psy\\CodeCleaner\\ReturnTypePass' => $vendorDir . '/psy/psysh/src/CodeCleaner/ReturnTypePass.php',
     'Psy\\CodeCleaner\\StrictTypesPass' => $vendorDir . '/psy/psysh/src/CodeCleaner/StrictTypesPass.php',
     'Psy\\CodeCleaner\\UseStatementPass' => $vendorDir . '/psy/psysh/src/CodeCleaner/UseStatementPass.php',
     'Psy\\CodeCleaner\\ValidClassNamePass' => $vendorDir . '/psy/psysh/src/CodeCleaner/ValidClassNamePass.php',
@@ -3819,10 +3836,8 @@
     'Psy\\Command\\ListCommand\\Enumerator' => $vendorDir . '/psy/psysh/src/Command/ListCommand/Enumerator.php',
     'Psy\\Command\\ListCommand\\FunctionEnumerator' => $vendorDir . '/psy/psysh/src/Command/ListCommand/FunctionEnumerator.php',
     'Psy\\Command\\ListCommand\\GlobalVariableEnumerator' => $vendorDir . '/psy/psysh/src/Command/ListCommand/GlobalVariableEnumerator.php',
-    'Psy\\Command\\ListCommand\\InterfaceEnumerator' => $vendorDir . '/psy/psysh/src/Command/ListCommand/InterfaceEnumerator.php',
     'Psy\\Command\\ListCommand\\MethodEnumerator' => $vendorDir . '/psy/psysh/src/Command/ListCommand/MethodEnumerator.php',
     'Psy\\Command\\ListCommand\\PropertyEnumerator' => $vendorDir . '/psy/psysh/src/Command/ListCommand/PropertyEnumerator.php',
-    'Psy\\Command\\ListCommand\\TraitEnumerator' => $vendorDir . '/psy/psysh/src/Command/ListCommand/TraitEnumerator.php',
     'Psy\\Command\\ListCommand\\VariableEnumerator' => $vendorDir . '/psy/psysh/src/Command/ListCommand/VariableEnumerator.php',
     'Psy\\Command\\ParseCommand' => $vendorDir . '/psy/psysh/src/Command/ParseCommand.php',
     'Psy\\Command\\PsyVersionCommand' => $vendorDir . '/psy/psysh/src/Command/PsyVersionCommand.php',
@@ -3849,8 +3864,8 @@
     'Psy\\Exception\\RuntimeException' => $vendorDir . '/psy/psysh/src/Exception/RuntimeException.php',
     'Psy\\Exception\\ThrowUpException' => $vendorDir . '/psy/psysh/src/Exception/ThrowUpException.php',
     'Psy\\Exception\\TypeErrorException' => $vendorDir . '/psy/psysh/src/Exception/TypeErrorException.php',
+    'Psy\\Exception\\UnexpectedTargetException' => $vendorDir . '/psy/psysh/src/Exception/UnexpectedTargetException.php',
     'Psy\\ExecutionClosure' => $vendorDir . '/psy/psysh/src/ExecutionClosure.php',
-    'Psy\\ExecutionLoop' => $vendorDir . '/psy/psysh/src/ExecutionLoop.php',
     'Psy\\ExecutionLoopClosure' => $vendorDir . '/psy/psysh/src/ExecutionLoopClosure.php',
     'Psy\\ExecutionLoop\\AbstractListener' => $vendorDir . '/psy/psysh/src/ExecutionLoop/AbstractListener.php',
     'Psy\\ExecutionLoop\\Listener' => $vendorDir . '/psy/psysh/src/ExecutionLoop/Listener.php',
@@ -3859,7 +3874,9 @@
     'Psy\\Formatter\\CodeFormatter' => $vendorDir . '/psy/psysh/src/Formatter/CodeFormatter.php',
     'Psy\\Formatter\\DocblockFormatter' => $vendorDir . '/psy/psysh/src/Formatter/DocblockFormatter.php',
     'Psy\\Formatter\\Formatter' => $vendorDir . '/psy/psysh/src/Formatter/Formatter.php',
+    'Psy\\Formatter\\ReflectorFormatter' => $vendorDir . '/psy/psysh/src/Formatter/ReflectorFormatter.php',
     'Psy\\Formatter\\SignatureFormatter' => $vendorDir . '/psy/psysh/src/Formatter/SignatureFormatter.php',
+    'Psy\\Formatter\\TraceFormatter' => $vendorDir . '/psy/psysh/src/Formatter/TraceFormatter.php',
     'Psy\\Input\\CodeArgument' => $vendorDir . '/psy/psysh/src/Input/CodeArgument.php',
     'Psy\\Input\\FilterOptions' => $vendorDir . '/psy/psysh/src/Input/FilterOptions.php',
     'Psy\\Input\\ShellInput' => $vendorDir . '/psy/psysh/src/Input/ShellInput.php',
@@ -3879,6 +3896,7 @@
     'Psy\\Reflection\\ReflectionConstant_' => $vendorDir . '/psy/psysh/src/Reflection/ReflectionConstant_.php',
     'Psy\\Reflection\\ReflectionLanguageConstruct' => $vendorDir . '/psy/psysh/src/Reflection/ReflectionLanguageConstruct.php',
     'Psy\\Reflection\\ReflectionLanguageConstructParameter' => $vendorDir . '/psy/psysh/src/Reflection/ReflectionLanguageConstructParameter.php',
+    'Psy\\Reflection\\ReflectionNamespace' => $vendorDir . '/psy/psysh/src/Reflection/ReflectionNamespace.php',
     'Psy\\Shell' => $vendorDir . '/psy/psysh/src/Shell.php',
     'Psy\\Sudo' => $vendorDir . '/psy/psysh/src/Sudo.php',
     'Psy\\Sudo\\SudoVisitor' => $vendorDir . '/psy/psysh/src/Sudo/SudoVisitor.php',
@@ -3999,6 +4017,7 @@
     'Robo\\State\\Data' => $vendorDir . '/consolidation/robo/src/State/Data.php',
     'Robo\\State\\StateAwareInterface' => $vendorDir . '/consolidation/robo/src/State/StateAwareInterface.php',
     'Robo\\State\\StateAwareTrait' => $vendorDir . '/consolidation/robo/src/State/StateAwareTrait.php',
+    'Robo\\Symfony\\SymfonyStyleInjector' => $vendorDir . '/consolidation/robo/src/Symfony/SymfonyStyleInjector.php',
     'Robo\\TaskAccessor' => $vendorDir . '/consolidation/robo/src/TaskAccessor.php',
     'Robo\\TaskInfo' => $vendorDir . '/consolidation/robo/src/TaskInfo.php',
     'Robo\\Task\\ApiGen\\ApiGen' => $vendorDir . '/consolidation/robo/src/Task/ApiGen/ApiGen.php',
diff --git a/vendor/composer/autoload_psr4.php b/vendor/composer/autoload_psr4.php
index af517035da..4ad8fd1499 100644
--- a/vendor/composer/autoload_psr4.php
+++ b/vendor/composer/autoload_psr4.php
@@ -67,8 +67,6 @@
     'Laminas\\Feed\\' => array($vendorDir . '/laminas/laminas-feed/src'),
     'Laminas\\Escaper\\' => array($vendorDir . '/laminas/laminas-escaper/src'),
     'Laminas\\Diactoros\\' => array($vendorDir . '/laminas/laminas-diactoros/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'),
     'Interop\\Container\\' => array($vendorDir . '/container-interop/container-interop/src/Interop/Container'),
     'GuzzleHttp\\Psr7\\' => array($vendorDir . '/guzzlehttp/psr7/src'),
diff --git a/vendor/composer/autoload_static.php b/vendor/composer/autoload_static.php
index cbe52c6266..8540fd5538 100644
--- a/vendor/composer/autoload_static.php
+++ b/vendor/composer/autoload_static.php
@@ -146,8 +146,6 @@ class ComposerStaticInit5c689ffcd54b9e495ed983fdce09b530
         ),
         'J' => 
         array (
-            'JakubOnderka\\PhpConsoleHighlighter\\' => 35,
-            'JakubOnderka\\PhpConsoleColor\\' => 29,
             'JaimePerez\\TwigConfigurableI18n\\' => 32,
         ),
         'I' => 
@@ -453,14 +451,6 @@ class ComposerStaticInit5c689ffcd54b9e495ed983fdce09b530
         array (
             0 => __DIR__ . '/..' . '/laminas/laminas-diactoros/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',
@@ -1351,6 +1341,7 @@ class ComposerStaticInit5c689ffcd54b9e495ed983fdce09b530
         'DrupalCodeGenerator\\Command\\Drupal_8\\Module\\ConfigurationEntity' => __DIR__ . '/..' . '/chi-teck/drupal-code-generator/src/Command/Drupal_8/Module/ConfigurationEntity.php',
         'DrupalCodeGenerator\\Command\\Drupal_8\\Module\\ContentEntity' => __DIR__ . '/..' . '/chi-teck/drupal-code-generator/src/Command/Drupal_8/Module/ContentEntity.php',
         'DrupalCodeGenerator\\Command\\Drupal_8\\Module\\Standard' => __DIR__ . '/..' . '/chi-teck/drupal-code-generator/src/Command/Drupal_8/Module/Standard.php',
+        'DrupalCodeGenerator\\Command\\Drupal_8\\PhpStormMetadata' => __DIR__ . '/..' . '/chi-teck/drupal-code-generator/src/Command/Drupal_8/PhpStormMetadata.php',
         'DrupalCodeGenerator\\Command\\Drupal_8\\PluginManager' => __DIR__ . '/..' . '/chi-teck/drupal-code-generator/src/Command/Drupal_8/PluginManager.php',
         'DrupalCodeGenerator\\Command\\Drupal_8\\Plugin\\Action' => __DIR__ . '/..' . '/chi-teck/drupal-code-generator/src/Command/Drupal_8/Plugin/Action.php',
         'DrupalCodeGenerator\\Command\\Drupal_8\\Plugin\\Block' => __DIR__ . '/..' . '/chi-teck/drupal-code-generator/src/Command/Drupal_8/Plugin/Block.php',
@@ -3946,9 +3937,6 @@ 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/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',
         'Laminas\\Diactoros\\AbstractSerializer' => __DIR__ . '/..' . '/laminas/laminas-diactoros/src/AbstractSerializer.php',
         'Laminas\\Diactoros\\CallbackStream' => __DIR__ . '/..' . '/laminas/laminas-diactoros/src/CallbackStream.php',
         'Laminas\\Diactoros\\Exception\\DeprecatedMethodException' => __DIR__ . '/..' . '/laminas/laminas-diactoros/src/Exception/DeprecatedMethodException.php',
@@ -4205,8 +4193,8 @@ class ComposerStaticInit5c689ffcd54b9e495ed983fdce09b530
         'Masterminds\\HTML5\\Serializer\\Traverser' => __DIR__ . '/..' . '/masterminds/html5/src/HTML5/Serializer/Traverser.php',
         'Mobile_Detect' => __DIR__ . '/..' . '/mobiledetect/mobiledetectlib/Mobile_Detect.php',
         'OS_Guess' => __DIR__ . '/..' . '/pear/pear-core-minimal/src/OS/Guess.php',
-        'OomphInc\\ComposerInstallersExtender\\Installer' => __DIR__ . '/..' . '/oomphinc/composer-installers-extender/src/Installer.php',
-        'OomphInc\\ComposerInstallersExtender\\InstallerHelper' => __DIR__ . '/..' . '/oomphinc/composer-installers-extender/src/InstallerHelper.php',
+        'OomphInc\\ComposerInstallersExtender\\Installers\\CustomInstaller' => __DIR__ . '/..' . '/oomphinc/composer-installers-extender/src/Installers/CustomInstaller.php',
+        'OomphInc\\ComposerInstallersExtender\\Installers\\Installer' => __DIR__ . '/..' . '/oomphinc/composer-installers-extender/src/Installers/Installer.php',
         'OomphInc\\ComposerInstallersExtender\\Plugin' => __DIR__ . '/..' . '/oomphinc/composer-installers-extender/src/Plugin.php',
         'PEAR' => __DIR__ . '/..' . '/pear/pear-core-minimal/src/PEAR.php',
         'PEAR_Error' => __DIR__ . '/..' . '/pear/pear-core-minimal/src/PEAR.php',
@@ -4252,9 +4240,16 @@ 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\\AttributeEmulator' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Lexer/TokenEmulator/AttributeEmulator.php',
         'PhpParser\\Lexer\\TokenEmulator\\CoaleseEqualTokenEmulator' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Lexer/TokenEmulator/CoaleseEqualTokenEmulator.php',
+        'PhpParser\\Lexer\\TokenEmulator\\FlexibleDocStringEmulator' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Lexer/TokenEmulator/FlexibleDocStringEmulator.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\\Lexer\\TokenEmulator\\KeywordEmulator' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Lexer/TokenEmulator/KeywordEmulator.php',
+        'PhpParser\\Lexer\\TokenEmulator\\MatchTokenEmulator' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Lexer/TokenEmulator/MatchTokenEmulator.php',
+        'PhpParser\\Lexer\\TokenEmulator\\NullsafeTokenEmulator' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Lexer/TokenEmulator/NullsafeTokenEmulator.php',
+        'PhpParser\\Lexer\\TokenEmulator\\NumericLiteralSeparatorEmulator' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Lexer/TokenEmulator/NumericLiteralSeparatorEmulator.php',
+        'PhpParser\\Lexer\\TokenEmulator\\ReverseEmulator' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Lexer/TokenEmulator/ReverseEmulator.php',
+        'PhpParser\\Lexer\\TokenEmulator\\TokenEmulator' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Lexer/TokenEmulator/TokenEmulator.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',
@@ -4268,7 +4263,11 @@ class ComposerStaticInit5c689ffcd54b9e495ed983fdce09b530
         'PhpParser\\NodeVisitor\\FindingVisitor' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/NodeVisitor/FindingVisitor.php',
         'PhpParser\\NodeVisitor\\FirstFindingVisitor' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/NodeVisitor/FirstFindingVisitor.php',
         'PhpParser\\NodeVisitor\\NameResolver' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/NodeVisitor/NameResolver.php',
+        'PhpParser\\NodeVisitor\\NodeConnectingVisitor' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/NodeVisitor/NodeConnectingVisitor.php',
+        'PhpParser\\NodeVisitor\\ParentConnectingVisitor' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/NodeVisitor/ParentConnectingVisitor.php',
         'PhpParser\\Node\\Arg' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Arg.php',
+        'PhpParser\\Node\\Attribute' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Attribute.php',
+        'PhpParser\\Node\\AttributeGroup' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/AttributeGroup.php',
         'PhpParser\\Node\\Const_' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Const_.php',
         'PhpParser\\Node\\Expr' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr.php',
         'PhpParser\\Node\\Expr\\ArrayDimFetch' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/ArrayDimFetch.php',
@@ -4344,8 +4343,11 @@ class ComposerStaticInit5c689ffcd54b9e495ed983fdce09b530
         'PhpParser\\Node\\Expr\\Instanceof_' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/Instanceof_.php',
         'PhpParser\\Node\\Expr\\Isset_' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/Isset_.php',
         'PhpParser\\Node\\Expr\\List_' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/List_.php',
+        'PhpParser\\Node\\Expr\\Match_' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/Match_.php',
         'PhpParser\\Node\\Expr\\MethodCall' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/MethodCall.php',
         'PhpParser\\Node\\Expr\\New_' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/New_.php',
+        'PhpParser\\Node\\Expr\\NullsafeMethodCall' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/NullsafeMethodCall.php',
+        'PhpParser\\Node\\Expr\\NullsafePropertyFetch' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/NullsafePropertyFetch.php',
         'PhpParser\\Node\\Expr\\PostDec' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/PostDec.php',
         'PhpParser\\Node\\Expr\\PostInc' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/PostInc.php',
         'PhpParser\\Node\\Expr\\PreDec' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/PreDec.php',
@@ -4356,6 +4358,7 @@ class ComposerStaticInit5c689ffcd54b9e495ed983fdce09b530
         'PhpParser\\Node\\Expr\\StaticCall' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/StaticCall.php',
         'PhpParser\\Node\\Expr\\StaticPropertyFetch' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/StaticPropertyFetch.php',
         'PhpParser\\Node\\Expr\\Ternary' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/Ternary.php',
+        'PhpParser\\Node\\Expr\\Throw_' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/Throw_.php',
         'PhpParser\\Node\\Expr\\UnaryMinus' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/UnaryMinus.php',
         'PhpParser\\Node\\Expr\\UnaryPlus' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/UnaryPlus.php',
         'PhpParser\\Node\\Expr\\Variable' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/Variable.php',
@@ -4363,6 +4366,7 @@ class ComposerStaticInit5c689ffcd54b9e495ed983fdce09b530
         'PhpParser\\Node\\Expr\\Yield_' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/Yield_.php',
         'PhpParser\\Node\\FunctionLike' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/FunctionLike.php',
         'PhpParser\\Node\\Identifier' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Identifier.php',
+        'PhpParser\\Node\\MatchArm' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/MatchArm.php',
         'PhpParser\\Node\\Name' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Name.php',
         'PhpParser\\Node\\Name\\FullyQualified' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Name/FullyQualified.php',
         'PhpParser\\Node\\Name\\Relative' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Name/Relative.php',
@@ -4431,6 +4435,7 @@ class ComposerStaticInit5c689ffcd54b9e495ed983fdce09b530
         'PhpParser\\Node\\Stmt\\UseUse' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Stmt/UseUse.php',
         'PhpParser\\Node\\Stmt\\Use_' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Stmt/Use_.php',
         'PhpParser\\Node\\Stmt\\While_' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Stmt/While_.php',
+        'PhpParser\\Node\\UnionType' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/UnionType.php',
         'PhpParser\\Node\\VarLikeIdentifier' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/VarLikeIdentifier.php',
         'PhpParser\\Parser' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Parser.php',
         'PhpParser\\ParserAbstract' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/ParserAbstract.php',
@@ -4468,14 +4473,15 @@ class ComposerStaticInit5c689ffcd54b9e495ed983fdce09b530
         'Psy\\CodeCleaner\\CallTimePassByReferencePass' => __DIR__ . '/..' . '/psy/psysh/src/CodeCleaner/CallTimePassByReferencePass.php',
         'Psy\\CodeCleaner\\CalledClassPass' => __DIR__ . '/..' . '/psy/psysh/src/CodeCleaner/CalledClassPass.php',
         'Psy\\CodeCleaner\\CodeCleanerPass' => __DIR__ . '/..' . '/psy/psysh/src/CodeCleaner/CodeCleanerPass.php',
+        'Psy\\CodeCleaner\\EmptyArrayDimFetchPass' => __DIR__ . '/..' . '/psy/psysh/src/CodeCleaner/EmptyArrayDimFetchPass.php',
         'Psy\\CodeCleaner\\ExitPass' => __DIR__ . '/..' . '/psy/psysh/src/CodeCleaner/ExitPass.php',
         'Psy\\CodeCleaner\\FinalClassPass' => __DIR__ . '/..' . '/psy/psysh/src/CodeCleaner/FinalClassPass.php',
         'Psy\\CodeCleaner\\FunctionContextPass' => __DIR__ . '/..' . '/psy/psysh/src/CodeCleaner/FunctionContextPass.php',
         'Psy\\CodeCleaner\\FunctionReturnInWriteContextPass' => __DIR__ . '/..' . '/psy/psysh/src/CodeCleaner/FunctionReturnInWriteContextPass.php',
         'Psy\\CodeCleaner\\ImplicitReturnPass' => __DIR__ . '/..' . '/psy/psysh/src/CodeCleaner/ImplicitReturnPass.php',
         'Psy\\CodeCleaner\\InstanceOfPass' => __DIR__ . '/..' . '/psy/psysh/src/CodeCleaner/InstanceOfPass.php',
+        'Psy\\CodeCleaner\\LabelContextPass' => __DIR__ . '/..' . '/psy/psysh/src/CodeCleaner/LabelContextPass.php',
         'Psy\\CodeCleaner\\LeavePsyshAlonePass' => __DIR__ . '/..' . '/psy/psysh/src/CodeCleaner/LeavePsyshAlonePass.php',
-        'Psy\\CodeCleaner\\LegacyEmptyPass' => __DIR__ . '/..' . '/psy/psysh/src/CodeCleaner/LegacyEmptyPass.php',
         'Psy\\CodeCleaner\\ListPass' => __DIR__ . '/..' . '/psy/psysh/src/CodeCleaner/ListPass.php',
         'Psy\\CodeCleaner\\LoopContextPass' => __DIR__ . '/..' . '/psy/psysh/src/CodeCleaner/LoopContextPass.php',
         'Psy\\CodeCleaner\\MagicConstantsPass' => __DIR__ . '/..' . '/psy/psysh/src/CodeCleaner/MagicConstantsPass.php',
@@ -4484,6 +4490,7 @@ class ComposerStaticInit5c689ffcd54b9e495ed983fdce09b530
         'Psy\\CodeCleaner\\NoReturnValue' => __DIR__ . '/..' . '/psy/psysh/src/CodeCleaner/NoReturnValue.php',
         'Psy\\CodeCleaner\\PassableByReferencePass' => __DIR__ . '/..' . '/psy/psysh/src/CodeCleaner/PassableByReferencePass.php',
         'Psy\\CodeCleaner\\RequirePass' => __DIR__ . '/..' . '/psy/psysh/src/CodeCleaner/RequirePass.php',
+        'Psy\\CodeCleaner\\ReturnTypePass' => __DIR__ . '/..' . '/psy/psysh/src/CodeCleaner/ReturnTypePass.php',
         'Psy\\CodeCleaner\\StrictTypesPass' => __DIR__ . '/..' . '/psy/psysh/src/CodeCleaner/StrictTypesPass.php',
         'Psy\\CodeCleaner\\UseStatementPass' => __DIR__ . '/..' . '/psy/psysh/src/CodeCleaner/UseStatementPass.php',
         'Psy\\CodeCleaner\\ValidClassNamePass' => __DIR__ . '/..' . '/psy/psysh/src/CodeCleaner/ValidClassNamePass.php',
@@ -4506,10 +4513,8 @@ class ComposerStaticInit5c689ffcd54b9e495ed983fdce09b530
         'Psy\\Command\\ListCommand\\Enumerator' => __DIR__ . '/..' . '/psy/psysh/src/Command/ListCommand/Enumerator.php',
         'Psy\\Command\\ListCommand\\FunctionEnumerator' => __DIR__ . '/..' . '/psy/psysh/src/Command/ListCommand/FunctionEnumerator.php',
         'Psy\\Command\\ListCommand\\GlobalVariableEnumerator' => __DIR__ . '/..' . '/psy/psysh/src/Command/ListCommand/GlobalVariableEnumerator.php',
-        'Psy\\Command\\ListCommand\\InterfaceEnumerator' => __DIR__ . '/..' . '/psy/psysh/src/Command/ListCommand/InterfaceEnumerator.php',
         'Psy\\Command\\ListCommand\\MethodEnumerator' => __DIR__ . '/..' . '/psy/psysh/src/Command/ListCommand/MethodEnumerator.php',
         'Psy\\Command\\ListCommand\\PropertyEnumerator' => __DIR__ . '/..' . '/psy/psysh/src/Command/ListCommand/PropertyEnumerator.php',
-        'Psy\\Command\\ListCommand\\TraitEnumerator' => __DIR__ . '/..' . '/psy/psysh/src/Command/ListCommand/TraitEnumerator.php',
         'Psy\\Command\\ListCommand\\VariableEnumerator' => __DIR__ . '/..' . '/psy/psysh/src/Command/ListCommand/VariableEnumerator.php',
         'Psy\\Command\\ParseCommand' => __DIR__ . '/..' . '/psy/psysh/src/Command/ParseCommand.php',
         'Psy\\Command\\PsyVersionCommand' => __DIR__ . '/..' . '/psy/psysh/src/Command/PsyVersionCommand.php',
@@ -4536,8 +4541,8 @@ class ComposerStaticInit5c689ffcd54b9e495ed983fdce09b530
         'Psy\\Exception\\RuntimeException' => __DIR__ . '/..' . '/psy/psysh/src/Exception/RuntimeException.php',
         'Psy\\Exception\\ThrowUpException' => __DIR__ . '/..' . '/psy/psysh/src/Exception/ThrowUpException.php',
         'Psy\\Exception\\TypeErrorException' => __DIR__ . '/..' . '/psy/psysh/src/Exception/TypeErrorException.php',
+        'Psy\\Exception\\UnexpectedTargetException' => __DIR__ . '/..' . '/psy/psysh/src/Exception/UnexpectedTargetException.php',
         'Psy\\ExecutionClosure' => __DIR__ . '/..' . '/psy/psysh/src/ExecutionClosure.php',
-        'Psy\\ExecutionLoop' => __DIR__ . '/..' . '/psy/psysh/src/ExecutionLoop.php',
         'Psy\\ExecutionLoopClosure' => __DIR__ . '/..' . '/psy/psysh/src/ExecutionLoopClosure.php',
         'Psy\\ExecutionLoop\\AbstractListener' => __DIR__ . '/..' . '/psy/psysh/src/ExecutionLoop/AbstractListener.php',
         'Psy\\ExecutionLoop\\Listener' => __DIR__ . '/..' . '/psy/psysh/src/ExecutionLoop/Listener.php',
@@ -4546,7 +4551,9 @@ class ComposerStaticInit5c689ffcd54b9e495ed983fdce09b530
         'Psy\\Formatter\\CodeFormatter' => __DIR__ . '/..' . '/psy/psysh/src/Formatter/CodeFormatter.php',
         'Psy\\Formatter\\DocblockFormatter' => __DIR__ . '/..' . '/psy/psysh/src/Formatter/DocblockFormatter.php',
         'Psy\\Formatter\\Formatter' => __DIR__ . '/..' . '/psy/psysh/src/Formatter/Formatter.php',
+        'Psy\\Formatter\\ReflectorFormatter' => __DIR__ . '/..' . '/psy/psysh/src/Formatter/ReflectorFormatter.php',
         'Psy\\Formatter\\SignatureFormatter' => __DIR__ . '/..' . '/psy/psysh/src/Formatter/SignatureFormatter.php',
+        'Psy\\Formatter\\TraceFormatter' => __DIR__ . '/..' . '/psy/psysh/src/Formatter/TraceFormatter.php',
         'Psy\\Input\\CodeArgument' => __DIR__ . '/..' . '/psy/psysh/src/Input/CodeArgument.php',
         'Psy\\Input\\FilterOptions' => __DIR__ . '/..' . '/psy/psysh/src/Input/FilterOptions.php',
         'Psy\\Input\\ShellInput' => __DIR__ . '/..' . '/psy/psysh/src/Input/ShellInput.php',
@@ -4566,6 +4573,7 @@ class ComposerStaticInit5c689ffcd54b9e495ed983fdce09b530
         'Psy\\Reflection\\ReflectionConstant_' => __DIR__ . '/..' . '/psy/psysh/src/Reflection/ReflectionConstant_.php',
         'Psy\\Reflection\\ReflectionLanguageConstruct' => __DIR__ . '/..' . '/psy/psysh/src/Reflection/ReflectionLanguageConstruct.php',
         'Psy\\Reflection\\ReflectionLanguageConstructParameter' => __DIR__ . '/..' . '/psy/psysh/src/Reflection/ReflectionLanguageConstructParameter.php',
+        'Psy\\Reflection\\ReflectionNamespace' => __DIR__ . '/..' . '/psy/psysh/src/Reflection/ReflectionNamespace.php',
         'Psy\\Shell' => __DIR__ . '/..' . '/psy/psysh/src/Shell.php',
         'Psy\\Sudo' => __DIR__ . '/..' . '/psy/psysh/src/Sudo.php',
         'Psy\\Sudo\\SudoVisitor' => __DIR__ . '/..' . '/psy/psysh/src/Sudo/SudoVisitor.php',
@@ -4686,6 +4694,7 @@ class ComposerStaticInit5c689ffcd54b9e495ed983fdce09b530
         'Robo\\State\\Data' => __DIR__ . '/..' . '/consolidation/robo/src/State/Data.php',
         'Robo\\State\\StateAwareInterface' => __DIR__ . '/..' . '/consolidation/robo/src/State/StateAwareInterface.php',
         'Robo\\State\\StateAwareTrait' => __DIR__ . '/..' . '/consolidation/robo/src/State/StateAwareTrait.php',
+        'Robo\\Symfony\\SymfonyStyleInjector' => __DIR__ . '/..' . '/consolidation/robo/src/Symfony/SymfonyStyleInjector.php',
         'Robo\\TaskAccessor' => __DIR__ . '/..' . '/consolidation/robo/src/TaskAccessor.php',
         'Robo\\TaskInfo' => __DIR__ . '/..' . '/consolidation/robo/src/TaskInfo.php',
         'Robo\\Task\\ApiGen\\ApiGen' => __DIR__ . '/..' . '/consolidation/robo/src/Task/ApiGen/ApiGen.php',
diff --git a/vendor/composer/installed.json b/vendor/composer/installed.json
index 1e39a1582f..68ecf487c0 100644
--- a/vendor/composer/installed.json
+++ b/vendor/composer/installed.json
@@ -133,17 +133,17 @@
     },
     {
         "name": "chi-teck/drupal-code-generator",
-        "version": "1.30.3",
-        "version_normalized": "1.30.3.0",
+        "version": "1.32.1",
+        "version_normalized": "1.32.1.0",
         "source": {
             "type": "git",
             "url": "https://github.com/Chi-teck/drupal-code-generator.git",
-            "reference": "1da9f06843b6bf2b0e7d28fea4b6c1d79aead197"
+            "reference": "8abba7131ed4c89c1e8fc6dca0d05a4b6d0b2749"
         },
         "dist": {
             "type": "zip",
-            "url": "https://api.github.com/repos/Chi-teck/drupal-code-generator/zipball/1da9f06843b6bf2b0e7d28fea4b6c1d79aead197",
-            "reference": "1da9f06843b6bf2b0e7d28fea4b6c1d79aead197",
+            "url": "https://api.github.com/repos/Chi-teck/drupal-code-generator/zipball/8abba7131ed4c89c1e8fc6dca0d05a4b6d0b2749",
+            "reference": "8abba7131ed4c89c1e8fc6dca0d05a4b6d0b2749",
             "shasum": ""
         },
         "require": {
@@ -151,9 +151,9 @@
             "php": ">=5.5.9",
             "symfony/console": "^3.4 || ^4.0",
             "symfony/filesystem": "^2.7 || ^3.4 || ^4.0",
-            "twig/twig": "^1.38.2 || ^2.10"
+            "twig/twig": "^1.41 || ^2.12"
         },
-        "time": "2019-06-29T10:29:45+00:00",
+        "time": "2020-07-15T06:08:04+00:00",
         "bin": [
             "bin/dcg"
         ],
@@ -496,26 +496,26 @@
     },
     {
         "name": "consolidation/annotated-command",
-        "version": "2.12.0",
-        "version_normalized": "2.12.0.0",
+        "version": "2.12.1",
+        "version_normalized": "2.12.1.0",
         "source": {
             "type": "git",
             "url": "https://github.com/consolidation/annotated-command.git",
-            "reference": "512a2e54c98f3af377589de76c43b24652bcb789"
+            "reference": "0ee361762df2274f360c085e3239784a53f850b5"
         },
         "dist": {
             "type": "zip",
-            "url": "https://api.github.com/repos/consolidation/annotated-command/zipball/512a2e54c98f3af377589de76c43b24652bcb789",
-            "reference": "512a2e54c98f3af377589de76c43b24652bcb789",
+            "url": "https://api.github.com/repos/consolidation/annotated-command/zipball/0ee361762df2274f360c085e3239784a53f850b5",
+            "reference": "0ee361762df2274f360c085e3239784a53f850b5",
             "shasum": ""
         },
         "require": {
-            "consolidation/output-formatters": "^3.4",
+            "consolidation/output-formatters": "^3.5.1",
             "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"
+            "symfony/finder": "^2.5|^3|^4|^5"
         },
         "require-dev": {
             "g1a/composer-test-scenarios": "^3",
@@ -523,10 +523,20 @@
             "phpunit/phpunit": "^6",
             "squizlabs/php_codesniffer": "^2.7"
         },
-        "time": "2019-03-08T16:55:03+00:00",
+        "time": "2020-10-11T04:30:03+00:00",
         "type": "library",
         "extra": {
             "scenarios": {
+                "finder5": {
+                    "require": {
+                        "symfony/finder": "^5"
+                    },
+                    "config": {
+                        "platform": {
+                            "php": "7.2.5"
+                        }
+                    }
+                },
                 "symfony4": {
                     "require": {
                         "symfony/console": "^4.0"
@@ -838,24 +848,24 @@
     },
     {
         "name": "consolidation/output-formatters",
-        "version": "3.5.0",
-        "version_normalized": "3.5.0.0",
+        "version": "3.5.1",
+        "version_normalized": "3.5.1.0",
         "source": {
             "type": "git",
             "url": "https://github.com/consolidation/output-formatters.git",
-            "reference": "99ec998ffb697e0eada5aacf81feebfb13023605"
+            "reference": "0d38f13051ef05c223a2bb8e962d668e24785196"
         },
         "dist": {
             "type": "zip",
-            "url": "https://api.github.com/repos/consolidation/output-formatters/zipball/99ec998ffb697e0eada5aacf81feebfb13023605",
-            "reference": "99ec998ffb697e0eada5aacf81feebfb13023605",
+            "url": "https://api.github.com/repos/consolidation/output-formatters/zipball/0d38f13051ef05c223a2bb8e962d668e24785196",
+            "reference": "0d38f13051ef05c223a2bb8e962d668e24785196",
             "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"
+            "symfony/finder": "^2.5|^3|^4|^5"
         },
         "require-dev": {
             "g1a/composer-test-scenarios": "^3",
@@ -868,10 +878,20 @@
         "suggest": {
             "symfony/var-dumper": "For using the var_dump formatter"
         },
-        "time": "2019-05-30T23:16:01+00:00",
+        "time": "2020-10-11T04:15:32+00:00",
         "type": "library",
         "extra": {
             "scenarios": {
+                "finder5": {
+                    "require": {
+                        "symfony/finder": "^5"
+                    },
+                    "config": {
+                        "platform": {
+                            "php": "7.2.5"
+                        }
+                    }
+                },
                 "symfony4": {
                     "require": {
                         "symfony/console": "^4.0"
@@ -941,51 +961,45 @@
     },
     {
         "name": "consolidation/robo",
-        "version": "1.4.9",
-        "version_normalized": "1.4.9.0",
+        "version": "1.4.13",
+        "version_normalized": "1.4.13.0",
         "source": {
             "type": "git",
             "url": "https://github.com/consolidation/Robo.git",
-            "reference": "5c6b3840a45afda1cbffbb3bb1f94dd5f9f83345"
+            "reference": "fd28dcca1b935950ece26e63541fbdeeb09f7343"
         },
         "dist": {
             "type": "zip",
-            "url": "https://api.github.com/repos/consolidation/Robo/zipball/5c6b3840a45afda1cbffbb3bb1f94dd5f9f83345",
-            "reference": "5c6b3840a45afda1cbffbb3bb1f94dd5f9f83345",
+            "url": "https://api.github.com/repos/consolidation/Robo/zipball/fd28dcca1b935950ece26e63541fbdeeb09f7343",
+            "reference": "fd28dcca1b935950ece26e63541fbdeeb09f7343",
             "shasum": ""
         },
         "require": {
-            "consolidation/annotated-command": "^2.10.2",
-            "consolidation/config": "^1.2",
-            "consolidation/log": "~1",
-            "consolidation/output-formatters": "^3.1.13",
-            "consolidation/self-update": "^1",
-            "grasmash/yaml-expander": "^1.3",
-            "league/container": "^2.2",
+            "consolidation/annotated-command": "^2.12.1|^4.1",
+            "consolidation/config": "^1.2.1",
+            "consolidation/log": "^1.1.1|^2",
+            "consolidation/output-formatters": "^3.5.1|^4.1",
+            "consolidation/self-update": "^1.1.5",
+            "grasmash/yaml-expander": "^1.4",
+            "league/container": "^2.4.1",
             "php": ">=5.5.0",
             "symfony/console": "^2.8|^3|^4",
             "symfony/event-dispatcher": "^2.5|^3|^4",
             "symfony/filesystem": "^2.5|^3|^4",
-            "symfony/finder": "^2.5|^3|^4",
+            "symfony/finder": "^2.5|^3|^4|^5",
             "symfony/process": "^2.5|^3|^4"
         },
         "replace": {
             "codegyre/robo": "< 1.0"
         },
         "require-dev": {
-            "codeception/aspect-mock": "^1|^2.1.1",
-            "codeception/base": "^2.3.7",
-            "codeception/verify": "^0.3.2",
             "g1a/composer-test-scenarios": "^3",
-            "goaop/framework": "~2.1.2",
-            "goaop/parser-reflection": "^1.1.0",
             "natxet/cssmin": "3.0.4",
-            "nikic/php-parser": "^3.1.5",
-            "patchwork/jsqueeze": "~2",
+            "patchwork/jsqueeze": "^2",
             "pear/archive_tar": "^1.4.4",
             "php-coveralls/php-coveralls": "^1",
-            "phpunit/php-code-coverage": "~2|~4",
-            "squizlabs/php_codesniffer": "^2.8"
+            "phpunit/phpunit": "^5.7.27",
+            "squizlabs/php_codesniffer": "^3"
         },
         "suggest": {
             "henrikbjorn/lurker": "For monitoring filesystem changes in taskWatch",
@@ -993,13 +1007,23 @@
             "patchwork/jsqueeze": "For minifying JS files in taskMinify",
             "pear/archive_tar": "Allows tar archives to be created and extracted in taskPack and taskExtract, respectively."
         },
-        "time": "2019-03-19T18:07:19+00:00",
+        "time": "2020-10-11T04:51:34+00:00",
         "bin": [
             "robo"
         ],
         "type": "library",
         "extra": {
             "scenarios": {
+                "finder5": {
+                    "require": {
+                        "symfony/finder": "^5"
+                    },
+                    "config": {
+                        "platform": {
+                            "php": "7.2.5"
+                        }
+                    }
+                },
                 "symfony4": {
                     "require": {
                         "symfony/console": "^4"
@@ -1014,8 +1038,11 @@
                     "require": {
                         "symfony/console": "^2.8"
                     },
+                    "require-dev": {
+                        "phpunit/phpunit": "^4.8.36"
+                    },
                     "remove": [
-                        "goaop/framework"
+                        "php-coveralls/php-coveralls"
                     ],
                     "config": {
                         "platform": {
@@ -1028,7 +1055,7 @@
                 }
             },
             "branch-alias": {
-                "dev-master": "2.x-dev"
+                "dev-master": "1.x-dev"
             }
         },
         "installation-source": "dist",
@@ -1051,25 +1078,25 @@
     },
     {
         "name": "consolidation/self-update",
-        "version": "1.1.5",
-        "version_normalized": "1.1.5.0",
+        "version": "1.2.0",
+        "version_normalized": "1.2.0.0",
         "source": {
             "type": "git",
             "url": "https://github.com/consolidation/self-update.git",
-            "reference": "a1c273b14ce334789825a09d06d4c87c0a02ad54"
+            "reference": "dba6b2c0708f20fa3ba8008a2353b637578849b4"
         },
         "dist": {
             "type": "zip",
-            "url": "https://api.github.com/repos/consolidation/self-update/zipball/a1c273b14ce334789825a09d06d4c87c0a02ad54",
-            "reference": "a1c273b14ce334789825a09d06d4c87c0a02ad54",
+            "url": "https://api.github.com/repos/consolidation/self-update/zipball/dba6b2c0708f20fa3ba8008a2353b637578849b4",
+            "reference": "dba6b2c0708f20fa3ba8008a2353b637578849b4",
             "shasum": ""
         },
         "require": {
             "php": ">=5.5.0",
-            "symfony/console": "^2.8|^3|^4",
-            "symfony/filesystem": "^2.5|^3|^4"
+            "symfony/console": "^2.8|^3|^4|^5",
+            "symfony/filesystem": "^2.5|^3|^4|^5"
         },
-        "time": "2018-10-28T01:52:03+00:00",
+        "time": "2020-04-13T02:49:20+00:00",
         "bin": [
             "scripts/release"
         ],
@@ -1090,48 +1117,47 @@
             "MIT"
         ],
         "authors": [
-            {
-                "name": "Greg Anderson",
-                "email": "greg.1.anderson@greenknowe.org"
-            },
             {
                 "name": "Alexander Menk",
                 "email": "menk@mestrona.net"
+            },
+            {
+                "name": "Greg Anderson",
+                "email": "greg.1.anderson@greenknowe.org"
             }
         ],
         "description": "Provides a self:update command for Symfony Console applications."
     },
     {
         "name": "consolidation/site-alias",
-        "version": "3.0.0",
-        "version_normalized": "3.0.0.0",
+        "version": "3.0.1",
+        "version_normalized": "3.0.1.0",
         "source": {
             "type": "git",
             "url": "https://github.com/consolidation/site-alias.git",
-            "reference": "8cfd3b6ab6d541086fc970bf850864293b284e6f"
+            "reference": "fd40a03f80f8fd4684b10bef8c8c4ec5a9a9bf26"
         },
         "dist": {
             "type": "zip",
-            "url": "https://api.github.com/repos/consolidation/site-alias/zipball/8cfd3b6ab6d541086fc970bf850864293b284e6f",
-            "reference": "8cfd3b6ab6d541086fc970bf850864293b284e6f",
+            "url": "https://api.github.com/repos/consolidation/site-alias/zipball/fd40a03f80f8fd4684b10bef8c8c4ec5a9a9bf26",
+            "reference": "fd40a03f80f8fd4684b10bef8c8c4ec5a9a9bf26",
             "shasum": ""
         },
         "require": {
-            "consolidation/config": "^1.2.1",
+            "consolidation/config": "^1.2.1|^2",
             "php": ">=5.5.0"
         },
         "require-dev": {
-            "consolidation/robo": "^1.2.3",
+            "consolidation/robo": "^1.2.3|^2",
             "g1a/composer-test-scenarios": "^3",
             "knplabs/github-api": "^2.7",
-            "php-coveralls/php-coveralls": "^1",
+            "php-coveralls/php-coveralls": "^2.2",
             "php-http/guzzle6-adapter": "^1.1",
             "phpunit/phpunit": "^6",
             "squizlabs/php_codesniffer": "^2.8",
-            "symfony/console": "^2.8|^3|^4",
-            "symfony/yaml": "~2.3|^3"
+            "symfony/yaml": "~2.3|^3|^4.4|^5"
         },
-        "time": "2019-03-12T17:31:48+00:00",
+        "time": "2020-05-28T00:33:41+00:00",
         "type": "library",
         "extra": {
             "scenarios": {
@@ -1164,30 +1190,30 @@
             "MIT"
         ],
         "authors": [
-            {
-                "name": "Moshe Weitzman",
-                "email": "weitzman@tejasa.com"
-            },
             {
                 "name": "Greg Anderson",
                 "email": "greg.1.anderson@greenknowe.org"
+            },
+            {
+                "name": "Moshe Weitzman",
+                "email": "weitzman@tejasa.com"
             }
         ],
         "description": "Manage alias records for local and remote sites."
     },
     {
         "name": "consolidation/site-process",
-        "version": "2.0.3",
-        "version_normalized": "2.0.3.0",
+        "version": "2.1.0",
+        "version_normalized": "2.1.0.0",
         "source": {
             "type": "git",
             "url": "https://github.com/consolidation/site-process.git",
-            "reference": "e25265f4a48c13284ebb6f9e0906ecd415d451df"
+            "reference": "f3211fa4c60671c6f068184221f06f932556e443"
         },
         "dist": {
             "type": "zip",
-            "url": "https://api.github.com/repos/consolidation/site-process/zipball/e25265f4a48c13284ebb6f9e0906ecd415d451df",
-            "reference": "e25265f4a48c13284ebb6f9e0906ecd415d451df",
+            "url": "https://api.github.com/repos/consolidation/site-process/zipball/f3211fa4c60671c6f068184221f06f932556e443",
+            "reference": "f3211fa4c60671c6f068184221f06f932556e443",
             "shasum": ""
         },
         "require": {
@@ -1205,7 +1231,7 @@
             "phpunit/phpunit": "^6",
             "squizlabs/php_codesniffer": "^2.8"
         },
-        "time": "2019-06-04T22:23:52+00:00",
+        "time": "2019-09-10T17:56:24+00:00",
         "type": "library",
         "extra": {
             "scenarios": {
@@ -1238,13 +1264,13 @@
             "MIT"
         ],
         "authors": [
-            {
-                "name": "Moshe Weitzman",
-                "email": "weitzman@tejasa.com"
-            },
             {
                 "name": "Greg Anderson",
                 "email": "greg.1.anderson@greenknowe.org"
+            },
+            {
+                "name": "Moshe Weitzman",
+                "email": "weitzman@tejasa.com"
             }
         ],
         "description": "A thin wrapper around the Symfony Process Component that allows applications to use the Site Alias library to specify the target for a remote call."
@@ -1285,28 +1311,28 @@
     },
     {
         "name": "cweagans/composer-patches",
-        "version": "1.6.5",
-        "version_normalized": "1.6.5.0",
+        "version": "1.7.0",
+        "version_normalized": "1.7.0.0",
         "source": {
             "type": "git",
             "url": "https://github.com/cweagans/composer-patches.git",
-            "reference": "2ec4f00ff5fb64de584c8c4aea53bf9053ecb0b3"
+            "reference": "ae02121445ad75f4eaff800cc532b5e6233e2ddf"
         },
         "dist": {
             "type": "zip",
-            "url": "https://api.github.com/repos/cweagans/composer-patches/zipball/2ec4f00ff5fb64de584c8c4aea53bf9053ecb0b3",
-            "reference": "2ec4f00ff5fb64de584c8c4aea53bf9053ecb0b3",
+            "url": "https://api.github.com/repos/cweagans/composer-patches/zipball/ae02121445ad75f4eaff800cc532b5e6233e2ddf",
+            "reference": "ae02121445ad75f4eaff800cc532b5e6233e2ddf",
             "shasum": ""
         },
         "require": {
-            "composer-plugin-api": "^1.0",
+            "composer-plugin-api": "^1.0 || ^2.0",
             "php": ">=5.3.0"
         },
         "require-dev": {
-            "composer/composer": "~1.0",
+            "composer/composer": "~1.0 || ~2.0",
             "phpunit/phpunit": "~4.6"
         },
-        "time": "2018-05-11T18:00:16+00:00",
+        "time": "2020-09-30T17:56:20+00:00",
         "type": "composer-plugin",
         "extra": {
             "class": "cweagans\\Composer\\Patches"
@@ -1553,27 +1579,27 @@
     },
     {
         "name": "dnoegel/php-xdg-base-dir",
-        "version": "0.1",
-        "version_normalized": "0.1.0.0",
+        "version": "v0.1.1",
+        "version_normalized": "0.1.1.0",
         "source": {
             "type": "git",
             "url": "https://github.com/dnoegel/php-xdg-base-dir.git",
-            "reference": "265b8593498b997dc2d31e75b89f053b5cc9621a"
+            "reference": "8f8a6e48c5ecb0f991c2fdcf5f154a47d85f9ffd"
         },
         "dist": {
             "type": "zip",
-            "url": "https://api.github.com/repos/dnoegel/php-xdg-base-dir/zipball/265b8593498b997dc2d31e75b89f053b5cc9621a",
-            "reference": "265b8593498b997dc2d31e75b89f053b5cc9621a",
+            "url": "https://api.github.com/repos/dnoegel/php-xdg-base-dir/zipball/8f8a6e48c5ecb0f991c2fdcf5f154a47d85f9ffd",
+            "reference": "8f8a6e48c5ecb0f991c2fdcf5f154a47d85f9ffd",
             "shasum": ""
         },
         "require": {
             "php": ">=5.3.2"
         },
         "require-dev": {
-            "phpunit/phpunit": "@stable"
+            "phpunit/phpunit": "~7.0|~6.0|~5.0|~4.8.35"
         },
-        "time": "2014-10-24T07:27:01+00:00",
-        "type": "project",
+        "time": "2019-12-04T15:06:13+00:00",
+        "type": "library",
         "installation-source": "dist",
         "autoload": {
             "psr-4": {
@@ -9008,17 +9034,17 @@
     },
     {
         "name": "drush/drush",
-        "version": "9.7.1",
-        "version_normalized": "9.7.1.0",
+        "version": "9.7.2",
+        "version_normalized": "9.7.2.0",
         "source": {
             "type": "git",
             "url": "https://github.com/drush-ops/drush.git",
-            "reference": "6f9a8d235daec06fd6f47b2d84da675750566479"
+            "reference": "ab5e345a72c9187a7d770486a09691f6526826aa"
         },
         "dist": {
             "type": "zip",
-            "url": "https://api.github.com/repos/drush-ops/drush/zipball/6f9a8d235daec06fd6f47b2d84da675750566479",
-            "reference": "6f9a8d235daec06fd6f47b2d84da675750566479",
+            "url": "https://api.github.com/repos/drush-ops/drush/zipball/ab5e345a72c9187a7d770486a09691f6526826aa",
+            "reference": "ab5e345a72c9187a7d770486a09691f6526826aa",
             "shasum": ""
         },
         "require": {
@@ -9038,7 +9064,7 @@
             "psr/log": "~1.0",
             "psy/psysh": "~0.6",
             "symfony/console": "^3.4",
-            "symfony/event-dispatcher": "^3.4",
+            "symfony/event-dispatcher": "^3.4 || ^4.0",
             "symfony/finder": "^3.4 || ^4.0",
             "symfony/process": "^3.4",
             "symfony/var-dumper": "^3.4 || ^4.0",
@@ -9060,7 +9086,7 @@
             "webflo/drupal-core-require-dev": "8.7.x-dev",
             "webflo/drupal-core-strict": "8.7.x-dev"
         },
-        "time": "2019-06-30T19:46:39+00:00",
+        "time": "2020-02-09T17:29:51+00:00",
         "bin": [
             "drush"
         ],
@@ -9947,100 +9973,6 @@
         ],
         "abandoned": "simplesamlphp/twig-configurable-i18n"
     },
-    {
-        "name": "jakub-onderka/php-console-color",
-        "version": "v0.2",
-        "version_normalized": "0.2.0.0",
-        "source": {
-            "type": "git",
-            "url": "https://github.com/JakubOnderka/PHP-Console-Color.git",
-            "reference": "d5deaecff52a0d61ccb613bb3804088da0307191"
-        },
-        "dist": {
-            "type": "zip",
-            "url": "https://api.github.com/repos/JakubOnderka/PHP-Console-Color/zipball/d5deaecff52a0d61ccb613bb3804088da0307191",
-            "reference": "d5deaecff52a0d61ccb613bb3804088da0307191",
-            "shasum": ""
-        },
-        "require": {
-            "php": ">=5.4.0"
-        },
-        "require-dev": {
-            "jakub-onderka/php-code-style": "1.0",
-            "jakub-onderka/php-parallel-lint": "1.0",
-            "jakub-onderka/php-var-dump-check": "0.*",
-            "phpunit/phpunit": "~4.3",
-            "squizlabs/php_codesniffer": "1.*"
-        },
-        "time": "2018-09-29T17:23:10+00:00",
-        "type": "library",
-        "installation-source": "dist",
-        "autoload": {
-            "psr-4": {
-                "JakubOnderka\\PhpConsoleColor\\": "src/"
-            }
-        },
-        "notification-url": "https://packagist.org/downloads/",
-        "license": [
-            "BSD-2-Clause"
-        ],
-        "authors": [
-            {
-                "name": "Jakub Onderka",
-                "email": "jakub.onderka@gmail.com"
-            }
-        ],
-        "abandoned": "php-parallel-lint/php-console-color"
-    },
-    {
-        "name": "jakub-onderka/php-console-highlighter",
-        "version": "v0.4",
-        "version_normalized": "0.4.0.0",
-        "source": {
-            "type": "git",
-            "url": "https://github.com/JakubOnderka/PHP-Console-Highlighter.git",
-            "reference": "9f7a229a69d52506914b4bc61bfdb199d90c5547"
-        },
-        "dist": {
-            "type": "zip",
-            "url": "https://api.github.com/repos/JakubOnderka/PHP-Console-Highlighter/zipball/9f7a229a69d52506914b4bc61bfdb199d90c5547",
-            "reference": "9f7a229a69d52506914b4bc61bfdb199d90c5547",
-            "shasum": ""
-        },
-        "require": {
-            "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": "~1.0",
-            "jakub-onderka/php-var-dump-check": "~0.1",
-            "phpunit/phpunit": "~4.0",
-            "squizlabs/php_codesniffer": "~1.5"
-        },
-        "time": "2018-09-29T18:48:56+00:00",
-        "type": "library",
-        "installation-source": "dist",
-        "autoload": {
-            "psr-4": {
-                "JakubOnderka\\PhpConsoleHighlighter\\": "src/"
-            }
-        },
-        "notification-url": "https://packagist.org/downloads/",
-        "license": [
-            "MIT"
-        ],
-        "authors": [
-            {
-                "name": "Jakub Onderka",
-                "email": "acci@acci.cz",
-                "homepage": "http://www.acci.cz/"
-            }
-        ],
-        "description": "Highlight PHP code in terminal",
-        "abandoned": "php-parallel-lint/php-console-highlighter"
-    },
     {
         "name": "laminas/laminas-diactoros",
         "version": "1.8.7p2",
@@ -10568,17 +10500,17 @@
     },
     {
         "name": "nikic/php-parser",
-        "version": "v4.2.2",
-        "version_normalized": "4.2.2.0",
+        "version": "v4.10.2",
+        "version_normalized": "4.10.2.0",
         "source": {
             "type": "git",
             "url": "https://github.com/nikic/PHP-Parser.git",
-            "reference": "1bd73cc04c3843ad8d6b0bfc0956026a151fc420"
+            "reference": "658f1be311a230e0907f5dfe0213742aff0596de"
         },
         "dist": {
             "type": "zip",
-            "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/1bd73cc04c3843ad8d6b0bfc0956026a151fc420",
-            "reference": "1bd73cc04c3843ad8d6b0bfc0956026a151fc420",
+            "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/658f1be311a230e0907f5dfe0213742aff0596de",
+            "reference": "658f1be311a230e0907f5dfe0213742aff0596de",
             "shasum": ""
         },
         "require": {
@@ -10586,16 +10518,17 @@
             "php": ">=7.0"
         },
         "require-dev": {
-            "phpunit/phpunit": "^6.5 || ^7.0"
+            "ircmaxell/php-yacc": "^0.0.7",
+            "phpunit/phpunit": "^6.5 || ^7.0 || ^8.0 || ^9.0"
         },
-        "time": "2019-05-25T20:07:01+00:00",
+        "time": "2020-09-26T10:30:38+00:00",
         "bin": [
             "bin/php-parse"
         ],
         "type": "library",
         "extra": {
             "branch-alias": {
-                "dev-master": "4.2-dev"
+                "dev-master": "4.9-dev"
             }
         },
         "installation-source": "dist",
@@ -10621,24 +10554,30 @@
     },
     {
         "name": "oomphinc/composer-installers-extender",
-        "version": "v1.1.2",
-        "version_normalized": "1.1.2.0",
+        "version": "2.0.0",
+        "version_normalized": "2.0.0.0",
         "source": {
             "type": "git",
             "url": "https://github.com/oomphinc/composer-installers-extender.git",
-            "reference": "ca1c4b16b0905c81d1e77e608f36a2eff1a56f56"
+            "reference": "8d3fe38a1723e0e91076920c8bb946b1696e28ca"
         },
         "dist": {
             "type": "zip",
-            "url": "https://api.github.com/repos/oomphinc/composer-installers-extender/zipball/ca1c4b16b0905c81d1e77e608f36a2eff1a56f56",
-            "reference": "ca1c4b16b0905c81d1e77e608f36a2eff1a56f56",
+            "url": "https://api.github.com/repos/oomphinc/composer-installers-extender/zipball/8d3fe38a1723e0e91076920c8bb946b1696e28ca",
+            "reference": "8d3fe38a1723e0e91076920c8bb946b1696e28ca",
             "shasum": ""
         },
         "require": {
-            "composer-plugin-api": "^1.0",
-            "composer/installers": "^1.0"
+            "composer-plugin-api": "^1.1 || ^2.0",
+            "composer/installers": "^1.0",
+            "php": ">=7.1"
         },
-        "time": "2017-03-31T16:57:39+00:00",
+        "require-dev": {
+            "composer/composer": "^2.0",
+            "phpunit/phpunit": "^7.2",
+            "squizlabs/php_codesniffer": "^3.3"
+        },
+        "time": "2020-08-11T21:06:11+00:00",
         "type": "composer-plugin",
         "extra": {
             "class": "OomphInc\\ComposerInstallersExtender\\Plugin"
@@ -10658,6 +10597,11 @@
                 "name": "Stephen Beemsterboer",
                 "email": "stephen@oomphinc.com",
                 "homepage": "https://github.com/balbuf"
+            },
+            {
+                "name": "Nathan Dentzau",
+                "email": "nate@oomphinc.com",
+                "homepage": "http://oomph.is/ndentzau"
             }
         ],
         "description": "Extend the composer/installers plugin to accept any arbitrary package type.",
@@ -11232,33 +11176,31 @@
     },
     {
         "name": "psy/psysh",
-        "version": "v0.9.9",
-        "version_normalized": "0.9.9.0",
+        "version": "v0.10.4",
+        "version_normalized": "0.10.4.0",
         "source": {
             "type": "git",
             "url": "https://github.com/bobthecow/psysh.git",
-            "reference": "9aaf29575bb8293206bb0420c1e1c87ff2ffa94e"
+            "reference": "a8aec1b2981ab66882a01cce36a49b6317dc3560"
         },
         "dist": {
             "type": "zip",
-            "url": "https://api.github.com/repos/bobthecow/psysh/zipball/9aaf29575bb8293206bb0420c1e1c87ff2ffa94e",
-            "reference": "9aaf29575bb8293206bb0420c1e1c87ff2ffa94e",
+            "url": "https://api.github.com/repos/bobthecow/psysh/zipball/a8aec1b2981ab66882a01cce36a49b6317dc3560",
+            "reference": "a8aec1b2981ab66882a01cce36a49b6317dc3560",
             "shasum": ""
         },
         "require": {
-            "dnoegel/php-xdg-base-dir": "0.1",
+            "dnoegel/php-xdg-base-dir": "0.1.*",
             "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"
+            "nikic/php-parser": "~4.0|~3.0|~2.0|~1.3",
+            "php": "^8.0 || ^7.0 || ^5.5.9",
+            "symfony/console": "~5.0|~4.0|~3.0|^2.4.2|~2.3.10",
+            "symfony/var-dumper": "~5.0|~4.0|~3.0|~2.7"
         },
         "require-dev": {
             "bamarni/composer-bin-plugin": "^1.2",
-            "hoa/console": "~2.15|~3.16",
-            "phpunit/phpunit": "~4.8.35|~5.0|~6.0|~7.0"
+            "hoa/console": "3.17.*"
         },
         "suggest": {
             "ext-pcntl": "Enabling the PCNTL extension makes PsySH a lot happier :)",
@@ -11267,14 +11209,14 @@
             "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-10-13T15:16:03+00:00",
+        "time": "2020-05-03T19:32:03+00:00",
         "bin": [
             "bin/psysh"
         ],
         "type": "library",
         "extra": {
             "branch-alias": {
-                "dev-develop": "0.9.x-dev"
+                "dev-master": "0.10.x-dev"
             }
         },
         "installation-source": "dist",
@@ -12252,30 +12194,25 @@
     },
     {
         "name": "symfony/filesystem",
-        "version": "v3.4.42",
-        "version_normalized": "3.4.42.0",
+        "version": "v3.4.46",
+        "version_normalized": "3.4.46.0",
         "source": {
             "type": "git",
             "url": "https://github.com/symfony/filesystem.git",
-            "reference": "0f625d0cb1e59c8c4ba61abb170125175218ff10"
+            "reference": "e58d7841cddfed6e846829040dca2cca0ebbbbb3"
         },
         "dist": {
             "type": "zip",
-            "url": "https://api.github.com/repos/symfony/filesystem/zipball/0f625d0cb1e59c8c4ba61abb170125175218ff10",
-            "reference": "0f625d0cb1e59c8c4ba61abb170125175218ff10",
+            "url": "https://api.github.com/repos/symfony/filesystem/zipball/e58d7841cddfed6e846829040dca2cca0ebbbbb3",
+            "reference": "e58d7841cddfed6e846829040dca2cca0ebbbbb3",
             "shasum": ""
         },
         "require": {
             "php": "^5.5.9|>=7.0.8",
             "symfony/polyfill-ctype": "~1.8"
         },
-        "time": "2020-05-30T17:48:24+00:00",
+        "time": "2020-10-24T10:57:07+00:00",
         "type": "library",
-        "extra": {
-            "branch-alias": {
-                "dev-master": "3.4-dev"
-            }
-        },
         "installation-source": "dist",
         "autoload": {
             "psr-4": {
@@ -12300,33 +12237,42 @@
             }
         ],
         "description": "Symfony Filesystem Component",
-        "homepage": "https://symfony.com"
+        "homepage": "https://symfony.com",
+        "funding": [
+            {
+                "url": "https://symfony.com/sponsor",
+                "type": "custom"
+            },
+            {
+                "url": "https://github.com/fabpot",
+                "type": "github"
+            },
+            {
+                "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+                "type": "tidelift"
+            }
+        ]
     },
     {
         "name": "symfony/finder",
-        "version": "v3.4.28",
-        "version_normalized": "3.4.28.0",
+        "version": "v3.4.46",
+        "version_normalized": "3.4.46.0",
         "source": {
             "type": "git",
             "url": "https://github.com/symfony/finder.git",
-            "reference": "fa5d962a71f2169dfe1cbae217fa5a2799859f6c"
+            "reference": "4e1da3c110c52d868f8a9153b7de3ebc381fba78"
         },
         "dist": {
             "type": "zip",
-            "url": "https://api.github.com/repos/symfony/finder/zipball/fa5d962a71f2169dfe1cbae217fa5a2799859f6c",
-            "reference": "fa5d962a71f2169dfe1cbae217fa5a2799859f6c",
+            "url": "https://api.github.com/repos/symfony/finder/zipball/4e1da3c110c52d868f8a9153b7de3ebc381fba78",
+            "reference": "4e1da3c110c52d868f8a9153b7de3ebc381fba78",
             "shasum": ""
         },
         "require": {
             "php": "^5.5.9|>=7.0.8"
         },
-        "time": "2019-05-24T12:25:55+00:00",
+        "time": "2020-10-24T10:57:07+00:00",
         "type": "library",
-        "extra": {
-            "branch-alias": {
-                "dev-master": "3.4-dev"
-            }
-        },
         "installation-source": "dist",
         "autoload": {
             "psr-4": {
@@ -12351,7 +12297,21 @@
             }
         ],
         "description": "Symfony Finder Component",
-        "homepage": "https://symfony.com"
+        "homepage": "https://symfony.com",
+        "funding": [
+            {
+                "url": "https://symfony.com/sponsor",
+                "type": "custom"
+            },
+            {
+                "url": "https://github.com/fabpot",
+                "type": "github"
+            },
+            {
+                "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+                "type": "tidelift"
+            }
+        ]
     },
     {
         "name": "symfony/http-foundation",
@@ -13414,17 +13374,17 @@
     },
     {
         "name": "symfony/var-dumper",
-        "version": "v3.4.28",
-        "version_normalized": "3.4.28.0",
+        "version": "v3.4.46",
+        "version_normalized": "3.4.46.0",
         "source": {
             "type": "git",
             "url": "https://github.com/symfony/var-dumper.git",
-            "reference": "ca5fef348a0440411bbca0f9ec14e9a11625bd6a"
+            "reference": "0719f6cf4633a38b2c1585140998579ce23b4b7d"
         },
         "dist": {
             "type": "zip",
-            "url": "https://api.github.com/repos/symfony/var-dumper/zipball/ca5fef348a0440411bbca0f9ec14e9a11625bd6a",
-            "reference": "ca5fef348a0440411bbca0f9ec14e9a11625bd6a",
+            "url": "https://api.github.com/repos/symfony/var-dumper/zipball/0719f6cf4633a38b2c1585140998579ce23b4b7d",
+            "reference": "0719f6cf4633a38b2c1585140998579ce23b4b7d",
             "shasum": ""
         },
         "require": {
@@ -13443,13 +13403,8 @@
             "ext-intl": "To show region name in time zone dump",
             "ext-symfony_debug": ""
         },
-        "time": "2019-05-01T09:52:10+00:00",
+        "time": "2020-10-24T10:57:07+00:00",
         "type": "library",
-        "extra": {
-            "branch-alias": {
-                "dev-master": "3.4-dev"
-            }
-        },
         "installation-source": "dist",
         "autoload": {
             "files": [
@@ -13481,6 +13436,20 @@
         "keywords": [
             "debug",
             "dump"
+        ],
+        "funding": [
+            {
+                "url": "https://symfony.com/sponsor",
+                "type": "custom"
+            },
+            {
+                "url": "https://github.com/fabpot",
+                "type": "github"
+            },
+            {
+                "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+                "type": "tidelift"
+            }
         ]
     },
     {
@@ -13722,24 +13691,27 @@
     },
     {
         "name": "webflo/drupal-finder",
-        "version": "1.1.0",
-        "version_normalized": "1.1.0.0",
+        "version": "1.2.2",
+        "version_normalized": "1.2.2.0",
         "source": {
             "type": "git",
             "url": "https://github.com/webflo/drupal-finder.git",
-            "reference": "8a7886c575d6eaa67a425dceccc84e735c0b9637"
+            "reference": "c8e5dbe65caef285fec8057a4c718a0d4138d1ee"
         },
         "dist": {
             "type": "zip",
-            "url": "https://api.github.com/repos/webflo/drupal-finder/zipball/8a7886c575d6eaa67a425dceccc84e735c0b9637",
-            "reference": "8a7886c575d6eaa67a425dceccc84e735c0b9637",
+            "url": "https://api.github.com/repos/webflo/drupal-finder/zipball/c8e5dbe65caef285fec8057a4c718a0d4138d1ee",
+            "reference": "c8e5dbe65caef285fec8057a4c718a0d4138d1ee",
             "shasum": ""
         },
+        "require": {
+            "ext-json": "*"
+        },
         "require-dev": {
             "mikey179/vfsstream": "^1.6",
             "phpunit/phpunit": "^4.8"
         },
-        "time": "2017-10-24T08:12:11+00:00",
+        "time": "2020-10-27T09:42:17+00:00",
         "type": "library",
         "installation-source": "dist",
         "autoload": {
@@ -13749,7 +13721,7 @@
         },
         "notification-url": "https://packagist.org/downloads/",
         "license": [
-            "GPL-2.0+"
+            "GPL-2.0-or-later"
         ],
         "authors": [
             {
diff --git a/vendor/consolidation/annotated-command/.scenarios.lock/finder5/.gitignore b/vendor/consolidation/annotated-command/.scenarios.lock/finder5/.gitignore
new file mode 100644
index 0000000000..5657f6ea7d
--- /dev/null
+++ b/vendor/consolidation/annotated-command/.scenarios.lock/finder5/.gitignore
@@ -0,0 +1 @@
+vendor
\ No newline at end of file
diff --git a/vendor/consolidation/annotated-command/.scenarios.lock/finder5/composer.json b/vendor/consolidation/annotated-command/.scenarios.lock/finder5/composer.json
new file mode 100644
index 0000000000..547e43836e
--- /dev/null
+++ b/vendor/consolidation/annotated-command/.scenarios.lock/finder5/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/finder": "^5",
+        "php": ">=5.4.5",
+        "consolidation/output-formatters": "^3.5.1",
+        "psr/log": "^1",
+        "symfony/console": "^2.8|^3|^4",
+        "symfony/event-dispatcher": "^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.2.5"
+        },
+        "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/finder5/composer.lock b/vendor/consolidation/annotated-command/.scenarios.lock/finder5/composer.lock
new file mode 100644
index 0000000000..ede601c4ea
--- /dev/null
+++ b/vendor/consolidation/annotated-command/.scenarios.lock/finder5/composer.lock
@@ -0,0 +1,3037 @@
+{
+    "_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": "33b85345d55a3898a6a929558d951f57",
+    "packages": [
+        {
+            "name": "consolidation/output-formatters",
+            "version": "3.5.1",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/consolidation/output-formatters.git",
+                "reference": "0d38f13051ef05c223a2bb8e962d668e24785196"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/consolidation/output-formatters/zipball/0d38f13051ef05c223a2bb8e962d668e24785196",
+                "reference": "0d38f13051ef05c223a2bb8e962d668e24785196",
+                "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|^5"
+            },
+            "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"
+            },
+            "type": "library",
+            "extra": {
+                "scenarios": {
+                    "finder5": {
+                        "require": {
+                            "symfony/finder": "^5"
+                        },
+                        "config": {
+                            "platform": {
+                                "php": "7.2.5"
+                            }
+                        }
+                    },
+                    "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"
+                }
+            },
+            "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": "2020-10-11T04:15:32+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/container",
+            "version": "1.0.0",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/php-fig/container.git",
+                "reference": "b7ce3b176482dbbc1245ebf52b181af44c2cf55f"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/php-fig/container/zipball/b7ce3b176482dbbc1245ebf52b181af44c2cf55f",
+                "reference": "b7ce3b176482dbbc1245ebf52b181af44c2cf55f",
+                "shasum": ""
+            },
+            "require": {
+                "php": ">=5.3.0"
+            },
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "1.0.x-dev"
+                }
+            },
+            "autoload": {
+                "psr-4": {
+                    "Psr\\Container\\": "src/"
+                }
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "MIT"
+            ],
+            "authors": [
+                {
+                    "name": "PHP-FIG",
+                    "homepage": "http://www.php-fig.org/"
+                }
+            ],
+            "description": "Common Container Interface (PHP FIG PSR-11)",
+            "homepage": "https://github.com/php-fig/container",
+            "keywords": [
+                "PSR-11",
+                "container",
+                "container-interface",
+                "container-interop",
+                "psr"
+            ],
+            "time": "2017-02-14T16:28:37+00:00"
+        },
+        {
+            "name": "psr/log",
+            "version": "1.1.3",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/php-fig/log.git",
+                "reference": "0f73288fd15629204f9d42b7055f72dacbe811fc"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/php-fig/log/zipball/0f73288fd15629204f9d42b7055f72dacbe811fc",
+                "reference": "0f73288fd15629204f9d42b7055f72dacbe811fc",
+                "shasum": ""
+            },
+            "require": {
+                "php": ">=5.3.0"
+            },
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "1.1.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": "2020-03-23T09:12:05+00:00"
+        },
+        {
+            "name": "symfony/console",
+            "version": "v4.4.15",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/symfony/console.git",
+                "reference": "90933b39c7b312fc3ceaa1ddeac7eb48cb953124"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/symfony/console/zipball/90933b39c7b312fc3ceaa1ddeac7eb48cb953124",
+                "reference": "90933b39c7b312fc3ceaa1ddeac7eb48cb953124",
+                "shasum": ""
+            },
+            "require": {
+                "php": ">=7.1.3",
+                "symfony/polyfill-mbstring": "~1.0",
+                "symfony/polyfill-php73": "^1.8",
+                "symfony/polyfill-php80": "^1.15",
+                "symfony/service-contracts": "^1.1|^2"
+            },
+            "conflict": {
+                "symfony/dependency-injection": "<3.4",
+                "symfony/event-dispatcher": "<4.3|>=5",
+                "symfony/lock": "<4.4",
+                "symfony/process": "<3.3"
+            },
+            "provide": {
+                "psr/log-implementation": "1.0"
+            },
+            "require-dev": {
+                "psr/log": "~1.0",
+                "symfony/config": "^3.4|^4.0|^5.0",
+                "symfony/dependency-injection": "^3.4|^4.0|^5.0",
+                "symfony/event-dispatcher": "^4.3",
+                "symfony/lock": "^4.4|^5.0",
+                "symfony/process": "^3.4|^4.0|^5.0",
+                "symfony/var-dumper": "^4.3|^5.0"
+            },
+            "suggest": {
+                "psr/log": "For using the console logger",
+                "symfony/event-dispatcher": "",
+                "symfony/lock": "",
+                "symfony/process": ""
+            },
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "4.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",
+            "funding": [
+                {
+                    "url": "https://symfony.com/sponsor",
+                    "type": "custom"
+                },
+                {
+                    "url": "https://github.com/fabpot",
+                    "type": "github"
+                },
+                {
+                    "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+                    "type": "tidelift"
+                }
+            ],
+            "time": "2020-09-15T07:58:55+00:00"
+        },
+        {
+            "name": "symfony/event-dispatcher",
+            "version": "v4.4.15",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/symfony/event-dispatcher.git",
+                "reference": "e17bb5e0663dc725f7cdcafc932132735b4725cd"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/e17bb5e0663dc725f7cdcafc932132735b4725cd",
+                "reference": "e17bb5e0663dc725f7cdcafc932132735b4725cd",
+                "shasum": ""
+            },
+            "require": {
+                "php": ">=7.1.3",
+                "symfony/event-dispatcher-contracts": "^1.1"
+            },
+            "conflict": {
+                "symfony/dependency-injection": "<3.4"
+            },
+            "provide": {
+                "psr/event-dispatcher-implementation": "1.0",
+                "symfony/event-dispatcher-implementation": "1.1"
+            },
+            "require-dev": {
+                "psr/log": "~1.0",
+                "symfony/config": "^3.4|^4.0|^5.0",
+                "symfony/dependency-injection": "^3.4|^4.0|^5.0",
+                "symfony/error-handler": "~3.4|~4.4",
+                "symfony/expression-language": "^3.4|^4.0|^5.0",
+                "symfony/http-foundation": "^3.4|^4.0|^5.0",
+                "symfony/service-contracts": "^1.1|^2",
+                "symfony/stopwatch": "^3.4|^4.0|^5.0"
+            },
+            "suggest": {
+                "symfony/dependency-injection": "",
+                "symfony/http-kernel": ""
+            },
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "4.4-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",
+            "funding": [
+                {
+                    "url": "https://symfony.com/sponsor",
+                    "type": "custom"
+                },
+                {
+                    "url": "https://github.com/fabpot",
+                    "type": "github"
+                },
+                {
+                    "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+                    "type": "tidelift"
+                }
+            ],
+            "time": "2020-09-18T14:07:46+00:00"
+        },
+        {
+            "name": "symfony/event-dispatcher-contracts",
+            "version": "v1.1.9",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/symfony/event-dispatcher-contracts.git",
+                "reference": "84e23fdcd2517bf37aecbd16967e83f0caee25a7"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/symfony/event-dispatcher-contracts/zipball/84e23fdcd2517bf37aecbd16967e83f0caee25a7",
+                "reference": "84e23fdcd2517bf37aecbd16967e83f0caee25a7",
+                "shasum": ""
+            },
+            "require": {
+                "php": ">=7.1.3"
+            },
+            "suggest": {
+                "psr/event-dispatcher": "",
+                "symfony/event-dispatcher-implementation": ""
+            },
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "1.1-dev"
+                },
+                "thanks": {
+                    "name": "symfony/contracts",
+                    "url": "https://github.com/symfony/contracts"
+                }
+            },
+            "autoload": {
+                "psr-4": {
+                    "Symfony\\Contracts\\EventDispatcher\\": ""
+                }
+            },
+            "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": "Generic abstractions related to dispatching event",
+            "homepage": "https://symfony.com",
+            "keywords": [
+                "abstractions",
+                "contracts",
+                "decoupling",
+                "interfaces",
+                "interoperability",
+                "standards"
+            ],
+            "funding": [
+                {
+                    "url": "https://symfony.com/sponsor",
+                    "type": "custom"
+                },
+                {
+                    "url": "https://github.com/fabpot",
+                    "type": "github"
+                },
+                {
+                    "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+                    "type": "tidelift"
+                }
+            ],
+            "time": "2020-07-06T13:19:58+00:00"
+        },
+        {
+            "name": "symfony/finder",
+            "version": "v5.1.7",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/symfony/finder.git",
+                "reference": "2c3ba7ad6884e6c4451ce2340e2dc23f6fa3e0d8"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/symfony/finder/zipball/2c3ba7ad6884e6c4451ce2340e2dc23f6fa3e0d8",
+                "reference": "2c3ba7ad6884e6c4451ce2340e2dc23f6fa3e0d8",
+                "shasum": ""
+            },
+            "require": {
+                "php": ">=7.2.5"
+            },
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "5.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",
+            "funding": [
+                {
+                    "url": "https://symfony.com/sponsor",
+                    "type": "custom"
+                },
+                {
+                    "url": "https://github.com/fabpot",
+                    "type": "github"
+                },
+                {
+                    "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+                    "type": "tidelift"
+                }
+            ],
+            "time": "2020-09-02T16:23:27+00:00"
+        },
+        {
+            "name": "symfony/polyfill-mbstring",
+            "version": "v1.18.1",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/symfony/polyfill-mbstring.git",
+                "reference": "a6977d63bf9a0ad4c65cd352709e230876f9904a"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/a6977d63bf9a0ad4c65cd352709e230876f9904a",
+                "reference": "a6977d63bf9a0ad4c65cd352709e230876f9904a",
+                "shasum": ""
+            },
+            "require": {
+                "php": ">=5.3.3"
+            },
+            "suggest": {
+                "ext-mbstring": "For best performance"
+            },
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "1.18-dev"
+                },
+                "thanks": {
+                    "name": "symfony/polyfill",
+                    "url": "https://github.com/symfony/polyfill"
+                }
+            },
+            "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"
+            ],
+            "funding": [
+                {
+                    "url": "https://symfony.com/sponsor",
+                    "type": "custom"
+                },
+                {
+                    "url": "https://github.com/fabpot",
+                    "type": "github"
+                },
+                {
+                    "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+                    "type": "tidelift"
+                }
+            ],
+            "time": "2020-07-14T12:35:20+00:00"
+        },
+        {
+            "name": "symfony/polyfill-php73",
+            "version": "v1.18.1",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/symfony/polyfill-php73.git",
+                "reference": "fffa1a52a023e782cdcc221d781fe1ec8f87fcca"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/symfony/polyfill-php73/zipball/fffa1a52a023e782cdcc221d781fe1ec8f87fcca",
+                "reference": "fffa1a52a023e782cdcc221d781fe1ec8f87fcca",
+                "shasum": ""
+            },
+            "require": {
+                "php": ">=5.3.3"
+            },
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "1.18-dev"
+                },
+                "thanks": {
+                    "name": "symfony/polyfill",
+                    "url": "https://github.com/symfony/polyfill"
+                }
+            },
+            "autoload": {
+                "psr-4": {
+                    "Symfony\\Polyfill\\Php73\\": ""
+                },
+                "files": [
+                    "bootstrap.php"
+                ],
+                "classmap": [
+                    "Resources/stubs"
+                ]
+            },
+            "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.3+ features to lower PHP versions",
+            "homepage": "https://symfony.com",
+            "keywords": [
+                "compatibility",
+                "polyfill",
+                "portable",
+                "shim"
+            ],
+            "funding": [
+                {
+                    "url": "https://symfony.com/sponsor",
+                    "type": "custom"
+                },
+                {
+                    "url": "https://github.com/fabpot",
+                    "type": "github"
+                },
+                {
+                    "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+                    "type": "tidelift"
+                }
+            ],
+            "time": "2020-07-14T12:35:20+00:00"
+        },
+        {
+            "name": "symfony/polyfill-php80",
+            "version": "v1.18.1",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/symfony/polyfill-php80.git",
+                "reference": "d87d5766cbf48d72388a9f6b85f280c8ad51f981"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/symfony/polyfill-php80/zipball/d87d5766cbf48d72388a9f6b85f280c8ad51f981",
+                "reference": "d87d5766cbf48d72388a9f6b85f280c8ad51f981",
+                "shasum": ""
+            },
+            "require": {
+                "php": ">=7.0.8"
+            },
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "1.18-dev"
+                },
+                "thanks": {
+                    "name": "symfony/polyfill",
+                    "url": "https://github.com/symfony/polyfill"
+                }
+            },
+            "autoload": {
+                "psr-4": {
+                    "Symfony\\Polyfill\\Php80\\": ""
+                },
+                "files": [
+                    "bootstrap.php"
+                ],
+                "classmap": [
+                    "Resources/stubs"
+                ]
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "MIT"
+            ],
+            "authors": [
+                {
+                    "name": "Ion Bazan",
+                    "email": "ion.bazan@gmail.com"
+                },
+                {
+                    "name": "Nicolas Grekas",
+                    "email": "p@tchwork.com"
+                },
+                {
+                    "name": "Symfony Community",
+                    "homepage": "https://symfony.com/contributors"
+                }
+            ],
+            "description": "Symfony polyfill backporting some PHP 8.0+ features to lower PHP versions",
+            "homepage": "https://symfony.com",
+            "keywords": [
+                "compatibility",
+                "polyfill",
+                "portable",
+                "shim"
+            ],
+            "funding": [
+                {
+                    "url": "https://symfony.com/sponsor",
+                    "type": "custom"
+                },
+                {
+                    "url": "https://github.com/fabpot",
+                    "type": "github"
+                },
+                {
+                    "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+                    "type": "tidelift"
+                }
+            ],
+            "time": "2020-07-14T12:35:20+00:00"
+        },
+        {
+            "name": "symfony/service-contracts",
+            "version": "v2.2.0",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/symfony/service-contracts.git",
+                "reference": "d15da7ba4957ffb8f1747218be9e1a121fd298a1"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/symfony/service-contracts/zipball/d15da7ba4957ffb8f1747218be9e1a121fd298a1",
+                "reference": "d15da7ba4957ffb8f1747218be9e1a121fd298a1",
+                "shasum": ""
+            },
+            "require": {
+                "php": ">=7.2.5",
+                "psr/container": "^1.0"
+            },
+            "suggest": {
+                "symfony/service-implementation": ""
+            },
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "2.2-dev"
+                },
+                "thanks": {
+                    "name": "symfony/contracts",
+                    "url": "https://github.com/symfony/contracts"
+                }
+            },
+            "autoload": {
+                "psr-4": {
+                    "Symfony\\Contracts\\Service\\": ""
+                }
+            },
+            "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": "Generic abstractions related to writing services",
+            "homepage": "https://symfony.com",
+            "keywords": [
+                "abstractions",
+                "contracts",
+                "decoupling",
+                "interfaces",
+                "interoperability",
+                "standards"
+            ],
+            "funding": [
+                {
+                    "url": "https://symfony.com/sponsor",
+                    "type": "custom"
+                },
+                {
+                    "url": "https://github.com/fabpot",
+                    "type": "github"
+                },
+                {
+                    "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+                    "type": "tidelift"
+                }
+            ],
+            "time": "2020-09-07T11:33:47+00:00"
+        }
+    ],
+    "packages-dev": [
+        {
+            "name": "doctrine/instantiator",
+            "version": "1.3.1",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/doctrine/instantiator.git",
+                "reference": "f350df0268e904597e3bd9c4685c53e0e333feea"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/doctrine/instantiator/zipball/f350df0268e904597e3bd9c4685c53e0e333feea",
+                "reference": "f350df0268e904597e3bd9c4685c53e0e333feea",
+                "shasum": ""
+            },
+            "require": {
+                "php": "^7.1 || ^8.0"
+            },
+            "require-dev": {
+                "doctrine/coding-standard": "^6.0",
+                "ext-pdo": "*",
+                "ext-phar": "*",
+                "phpbench/phpbench": "^0.13",
+                "phpstan/phpstan-phpunit": "^0.11",
+                "phpstan/phpstan-shim": "^0.11",
+                "phpunit/phpunit": "^7.0"
+            },
+            "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://www.doctrine-project.org/projects/instantiator.html",
+            "keywords": [
+                "constructor",
+                "instantiate"
+            ],
+            "funding": [
+                {
+                    "url": "https://www.doctrine-project.org/sponsorship.html",
+                    "type": "custom"
+                },
+                {
+                    "url": "https://www.patreon.com/phpdoctrine",
+                    "type": "patreon"
+                },
+                {
+                    "url": "https://tidelift.com/funding/github/packagist/doctrine%2Finstantiator",
+                    "type": "tidelift"
+                }
+            ],
+            "time": "2020-05-29T17:27:14+00:00"
+        },
+        {
+            "name": "g1a/composer-test-scenarios",
+            "version": "3.2.0",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/g1a/composer-test-scenarios.git",
+                "reference": "e7394206d845fd593d325440507fb940bef8cb62"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/g1a/composer-test-scenarios/zipball/e7394206d845fd593d325440507fb940bef8cb62",
+                "reference": "e7394206d845fd593d325440507fb940bef8cb62",
+                "shasum": ""
+            },
+            "require": {
+                "composer-plugin-api": "^1.0.0 || ^2.0.0",
+                "php": ">=5.4"
+            },
+            "require-dev": {
+                "composer/composer": "^1.10.6 || ^2.0@rc",
+                "php-coveralls/php-coveralls": "^1.0",
+                "phpunit/phpunit": "^4.8.36|^6",
+                "squizlabs/php_codesniffer": "^3.5"
+            },
+            "bin": [
+                "scripts/dependency-licenses"
+            ],
+            "type": "composer-plugin",
+            "extra": {
+                "class": "ComposerTestScenarios\\Plugin",
+                "branch-alias": {
+                    "dev-main": "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": "2020-09-28T20:54:35+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.10.1",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/myclabs/DeepCopy.git",
+                "reference": "969b211f9a51aa1f6c01d1d2aef56d3bd91598e5"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/969b211f9a51aa1f6c01d1d2aef56d3bd91598e5",
+                "reference": "969b211f9a51aa1f6c01d1d2aef56d3bd91598e5",
+                "shasum": ""
+            },
+            "require": {
+                "php": "^7.1 || ^8.0"
+            },
+            "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"
+            ],
+            "funding": [
+                {
+                    "url": "https://tidelift.com/funding/github/packagist/myclabs/deep-copy",
+                    "type": "tidelift"
+                }
+            ],
+            "time": "2020-06-29T13:22:24+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": "2.2.0",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/phpDocumentor/ReflectionCommon.git",
+                "reference": "1d01c49d4ed62f25aa84a747ad35d5a16924662b"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/phpDocumentor/ReflectionCommon/zipball/1d01c49d4ed62f25aa84a747ad35d5a16924662b",
+                "reference": "1d01c49d4ed62f25aa84a747ad35d5a16924662b",
+                "shasum": ""
+            },
+            "require": {
+                "php": "^7.2 || ^8.0"
+            },
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-2.x": "2.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": "2020-06-27T09:03:43+00:00"
+        },
+        {
+            "name": "phpdocumentor/reflection-docblock",
+            "version": "5.2.2",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/phpDocumentor/ReflectionDocBlock.git",
+                "reference": "069a785b2141f5bcf49f3e353548dc1cce6df556"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/phpDocumentor/ReflectionDocBlock/zipball/069a785b2141f5bcf49f3e353548dc1cce6df556",
+                "reference": "069a785b2141f5bcf49f3e353548dc1cce6df556",
+                "shasum": ""
+            },
+            "require": {
+                "ext-filter": "*",
+                "php": "^7.2 || ^8.0",
+                "phpdocumentor/reflection-common": "^2.2",
+                "phpdocumentor/type-resolver": "^1.3",
+                "webmozart/assert": "^1.9.1"
+            },
+            "require-dev": {
+                "mockery/mockery": "~1.3.2"
+            },
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "5.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"
+                },
+                {
+                    "name": "Jaap van Otterdijk",
+                    "email": "account@ijaap.nl"
+                }
+            ],
+            "description": "With this component, a library can provide support for annotations via DocBlocks or otherwise retrieve information that is embedded in a DocBlock.",
+            "time": "2020-09-03T19:13:55+00:00"
+        },
+        {
+            "name": "phpdocumentor/type-resolver",
+            "version": "1.4.0",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/phpDocumentor/TypeResolver.git",
+                "reference": "6a467b8989322d92aa1c8bf2bebcc6e5c2ba55c0"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/phpDocumentor/TypeResolver/zipball/6a467b8989322d92aa1c8bf2bebcc6e5c2ba55c0",
+                "reference": "6a467b8989322d92aa1c8bf2bebcc6e5c2ba55c0",
+                "shasum": ""
+            },
+            "require": {
+                "php": "^7.2 || ^8.0",
+                "phpdocumentor/reflection-common": "^2.0"
+            },
+            "require-dev": {
+                "ext-tokenizer": "*"
+            },
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-1.x": "1.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": "A PSR-5 based resolver of Class names, Types and Structural Element Names",
+            "time": "2020-09-17T18:55:26+00:00"
+        },
+        {
+            "name": "phpspec/prophecy",
+            "version": "v1.10.3",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/phpspec/prophecy.git",
+                "reference": "451c3cd1418cf640de218914901e51b064abb093"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/phpspec/prophecy/zipball/451c3cd1418cf640de218914901e51b064abb093",
+                "reference": "451c3cd1418cf640de218914901e51b064abb093",
+                "shasum": ""
+            },
+            "require": {
+                "doctrine/instantiator": "^1.0.2",
+                "php": "^5.3|^7.0",
+                "phpdocumentor/reflection-docblock": "^2.0|^3.0.2|^4.0|^5.0",
+                "sebastian/comparator": "^1.2.3|^2.0|^3.0|^4.0",
+                "sebastian/recursion-context": "^1.0|^2.0|^3.0|^4.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.10.x-dev"
+                }
+            },
+            "autoload": {
+                "psr-4": {
+                    "Prophecy\\": "src/Prophecy"
+                }
+            },
+            "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": "2020-03-05T15:02:03+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"
+            ],
+            "abandoned": true,
+            "time": "2017-11-27T05:48:46+00:00"
+        },
+        {
+            "name": "phpunit/phpunit",
+            "version": "6.5.14",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/sebastianbergmann/phpunit.git",
+                "reference": "bac23fe7ff13dbdb461481f706f0e9fe746334b7"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/bac23fe7ff13dbdb461481f706f0e9fe746334b7",
+                "reference": "bac23fe7ff13dbdb461481f706f0e9fe746334b7",
+                "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": "2019-02-01T05:22:47+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"
+            ],
+            "abandoned": true,
+            "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.2",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/sebastianbergmann/exporter.git",
+                "reference": "68609e1261d215ea5b21b7987539cbfbe156ec3e"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/68609e1261d215ea5b21b7987539cbfbe156ec3e",
+                "reference": "68609e1261d215ea5b21b7987539cbfbe156ec3e",
+                "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": "Sebastian Bergmann",
+                    "email": "sebastian@phpunit.de"
+                },
+                {
+                    "name": "Jeff Welch",
+                    "email": "whatthejeff@gmail.com"
+                },
+                {
+                    "name": "Volker Dusch",
+                    "email": "github@wallbash.com"
+                },
+                {
+                    "name": "Adam Harvey",
+                    "email": "aharvey@php.net"
+                },
+                {
+                    "name": "Bernhard Schussek",
+                    "email": "bschussek@gmail.com"
+                }
+            ],
+            "description": "Provides the functionality to export PHP variables for visualization",
+            "homepage": "http://www.github.com/sebastianbergmann/exporter",
+            "keywords": [
+                "export",
+                "exporter"
+            ],
+            "time": "2019-09-14T09:02:43+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.4.15",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/symfony/config.git",
+                "reference": "7c5a1002178a612787c291a4f515f87b19176b61"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/symfony/config/zipball/7c5a1002178a612787c291a4f515f87b19176b61",
+                "reference": "7c5a1002178a612787c291a4f515f87b19176b61",
+                "shasum": ""
+            },
+            "require": {
+                "php": ">=7.1.3",
+                "symfony/filesystem": "^3.4|^4.0|^5.0",
+                "symfony/polyfill-ctype": "~1.8"
+            },
+            "conflict": {
+                "symfony/finder": "<3.4"
+            },
+            "require-dev": {
+                "symfony/event-dispatcher": "^3.4|^4.0|^5.0",
+                "symfony/finder": "^3.4|^4.0|^5.0",
+                "symfony/messenger": "^4.1|^5.0",
+                "symfony/service-contracts": "^1.1|^2",
+                "symfony/yaml": "^3.4|^4.0|^5.0"
+            },
+            "suggest": {
+                "symfony/yaml": "To use the yaml reference dumper"
+            },
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "4.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",
+            "funding": [
+                {
+                    "url": "https://symfony.com/sponsor",
+                    "type": "custom"
+                },
+                {
+                    "url": "https://github.com/fabpot",
+                    "type": "github"
+                },
+                {
+                    "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+                    "type": "tidelift"
+                }
+            ],
+            "time": "2020-10-02T07:34:48+00:00"
+        },
+        {
+            "name": "symfony/filesystem",
+            "version": "v5.1.7",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/symfony/filesystem.git",
+                "reference": "1a8697545a8d87b9f2f6b1d32414199cc5e20aae"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/symfony/filesystem/zipball/1a8697545a8d87b9f2f6b1d32414199cc5e20aae",
+                "reference": "1a8697545a8d87b9f2f6b1d32414199cc5e20aae",
+                "shasum": ""
+            },
+            "require": {
+                "php": ">=7.2.5",
+                "symfony/polyfill-ctype": "~1.8"
+            },
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "5.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",
+            "funding": [
+                {
+                    "url": "https://symfony.com/sponsor",
+                    "type": "custom"
+                },
+                {
+                    "url": "https://github.com/fabpot",
+                    "type": "github"
+                },
+                {
+                    "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+                    "type": "tidelift"
+                }
+            ],
+            "time": "2020-09-27T14:02:37+00:00"
+        },
+        {
+            "name": "symfony/polyfill-ctype",
+            "version": "v1.18.1",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/symfony/polyfill-ctype.git",
+                "reference": "1c302646f6efc070cd46856e600e5e0684d6b454"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/1c302646f6efc070cd46856e600e5e0684d6b454",
+                "reference": "1c302646f6efc070cd46856e600e5e0684d6b454",
+                "shasum": ""
+            },
+            "require": {
+                "php": ">=5.3.3"
+            },
+            "suggest": {
+                "ext-ctype": "For best performance"
+            },
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "1.18-dev"
+                },
+                "thanks": {
+                    "name": "symfony/polyfill",
+                    "url": "https://github.com/symfony/polyfill"
+                }
+            },
+            "autoload": {
+                "psr-4": {
+                    "Symfony\\Polyfill\\Ctype\\": ""
+                },
+                "files": [
+                    "bootstrap.php"
+                ]
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "MIT"
+            ],
+            "authors": [
+                {
+                    "name": "Gert de Pagter",
+                    "email": "BackEndTea@gmail.com"
+                },
+                {
+                    "name": "Symfony Community",
+                    "homepage": "https://symfony.com/contributors"
+                }
+            ],
+            "description": "Symfony polyfill for ctype functions",
+            "homepage": "https://symfony.com",
+            "keywords": [
+                "compatibility",
+                "ctype",
+                "polyfill",
+                "portable"
+            ],
+            "funding": [
+                {
+                    "url": "https://symfony.com/sponsor",
+                    "type": "custom"
+                },
+                {
+                    "url": "https://github.com/fabpot",
+                    "type": "github"
+                },
+                {
+                    "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+                    "type": "tidelift"
+                }
+            ],
+            "time": "2020-07-14T12:35:20+00:00"
+        },
+        {
+            "name": "symfony/stopwatch",
+            "version": "v4.4.15",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/symfony/stopwatch.git",
+                "reference": "6f89e19772cf61b3c65bab329fe0e318259fbd91"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/symfony/stopwatch/zipball/6f89e19772cf61b3c65bab329fe0e318259fbd91",
+                "reference": "6f89e19772cf61b3c65bab329fe0e318259fbd91",
+                "shasum": ""
+            },
+            "require": {
+                "php": ">=7.1.3",
+                "symfony/service-contracts": "^1.0|^2"
+            },
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "4.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",
+            "funding": [
+                {
+                    "url": "https://symfony.com/sponsor",
+                    "type": "custom"
+                },
+                {
+                    "url": "https://github.com/fabpot",
+                    "type": "github"
+                },
+                {
+                    "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+                    "type": "tidelift"
+                }
+            ],
+            "time": "2020-09-02T16:08:58+00:00"
+        },
+        {
+            "name": "symfony/yaml",
+            "version": "v4.4.15",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/symfony/yaml.git",
+                "reference": "c7885964b1eceb70b0981556d0a9b01d2d97c8d1"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/symfony/yaml/zipball/c7885964b1eceb70b0981556d0a9b01d2d97c8d1",
+                "reference": "c7885964b1eceb70b0981556d0a9b01d2d97c8d1",
+                "shasum": ""
+            },
+            "require": {
+                "php": ">=7.1.3",
+                "symfony/polyfill-ctype": "~1.8"
+            },
+            "conflict": {
+                "symfony/console": "<3.4"
+            },
+            "require-dev": {
+                "symfony/console": "^3.4|^4.0|^5.0"
+            },
+            "suggest": {
+                "symfony/console": "For validating YAML files using the lint command"
+            },
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "4.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",
+            "funding": [
+                {
+                    "url": "https://symfony.com/sponsor",
+                    "type": "custom"
+                },
+                {
+                    "url": "https://github.com/fabpot",
+                    "type": "github"
+                },
+                {
+                    "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+                    "type": "tidelift"
+                }
+            ],
+            "time": "2020-09-27T03:36:23+00:00"
+        },
+        {
+            "name": "theseer/tokenizer",
+            "version": "1.2.0",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/theseer/tokenizer.git",
+                "reference": "75a63c33a8577608444246075ea0af0d052e452a"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/theseer/tokenizer/zipball/75a63c33a8577608444246075ea0af0d052e452a",
+                "reference": "75a63c33a8577608444246075ea0af0d052e452a",
+                "shasum": ""
+            },
+            "require": {
+                "ext-dom": "*",
+                "ext-tokenizer": "*",
+                "ext-xmlwriter": "*",
+                "php": "^7.2 || ^8.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",
+            "funding": [
+                {
+                    "url": "https://github.com/theseer",
+                    "type": "github"
+                }
+            ],
+            "time": "2020-07-12T23:59:07+00:00"
+        },
+        {
+            "name": "webmozart/assert",
+            "version": "1.9.1",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/webmozart/assert.git",
+                "reference": "bafc69caeb4d49c39fd0779086c03a3738cbb389"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/webmozart/assert/zipball/bafc69caeb4d49c39fd0779086c03a3738cbb389",
+                "reference": "bafc69caeb4d49c39fd0779086c03a3738cbb389",
+                "shasum": ""
+            },
+            "require": {
+                "php": "^5.3.3 || ^7.0 || ^8.0",
+                "symfony/polyfill-ctype": "^1.8"
+            },
+            "conflict": {
+                "phpstan/phpstan": "<0.12.20",
+                "vimeo/psalm": "<3.9.1"
+            },
+            "require-dev": {
+                "phpunit/phpunit": "^4.8.36 || ^7.5.13"
+            },
+            "type": "library",
+            "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": "2020-07-08T17:02:28+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.2.5"
+    },
+    "plugin-api-version": "1.1.0"
+}
diff --git a/vendor/consolidation/annotated-command/.scenarios.lock/install b/vendor/consolidation/annotated-command/.scenarios.lock/install
old mode 100644
new mode 100755
index 16c69e107c..4d8a777705
--- a/vendor/consolidation/annotated-command/.scenarios.lock/install
+++ b/vendor/consolidation/annotated-command/.scenarios.lock/install
@@ -4,16 +4,16 @@ SCENARIO=$1
 DEPENDENCIES=${2-install}
 
 # Convert the aliases 'highest', 'lowest' and 'lock' to
-# the corresponding composer command to run.
+# the corresponding composer update command to run.
 case $DEPENDENCIES in
   highest)
-    DEPENDENCIES=update
+    UPDATE_COMMAND=update
     ;;
   lowest)
-    DEPENDENCIES='update --prefer-lowest'
+    UPDATE_COMMAND='update --prefer-lowest'
     ;;
   lock|default|"")
-    DEPENDENCIES=install
+    UPDATE_COMMAND=''
     ;;
 esac
 
@@ -48,7 +48,11 @@ echo
 set -ex
 
 composer -n validate --working-dir=$dir --no-check-all --ansi
-composer -n --working-dir=$dir ${DEPENDENCIES} --prefer-dist --no-scripts
+
+if [ ! -z "$UPDATE_COMMAND" ] ; then
+  composer -n --working-dir=$dir ${UPDATE_COMMAND} --prefer-dist --no-scripts
+fi
+composer -n --working-dir=$dir install --prefer-dist
 
 # If called from a CI context, print out some extra information about
 # what we just installed.
diff --git a/vendor/consolidation/annotated-command/.scenarios.lock/phpunit4/composer.json b/vendor/consolidation/annotated-command/.scenarios.lock/phpunit4/composer.json
index 13a0f7a03a..5b5e3597c5 100644
--- a/vendor/consolidation/annotated-command/.scenarios.lock/phpunit4/composer.json
+++ b/vendor/consolidation/annotated-command/.scenarios.lock/phpunit4/composer.json
@@ -20,11 +20,11 @@
     },
     "require": {
         "php": ">=5.4.5",
-        "consolidation/output-formatters": "^3.4",
+        "consolidation/output-formatters": "^3.5.1",
         "psr/log": "^1",
         "symfony/console": "^2.8|^3|^4",
         "symfony/event-dispatcher": "^2.5|^3|^4",
-        "symfony/finder": "^2.5|^3|^4"
+        "symfony/finder": "^2.5|^3|^4|^5"
     },
     "require-dev": {
         "phpunit/phpunit": "^4.8.36",
diff --git a/vendor/consolidation/annotated-command/.scenarios.lock/phpunit4/composer.lock b/vendor/consolidation/annotated-command/.scenarios.lock/phpunit4/composer.lock
index b4dfe0de37..0e162a0782 100644
--- a/vendor/consolidation/annotated-command/.scenarios.lock/phpunit4/composer.lock
+++ b/vendor/consolidation/annotated-command/.scenarios.lock/phpunit4/composer.lock
@@ -4,34 +4,33 @@
         "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",
         "This file is @generated automatically"
     ],
-    "content-hash": "3bc1df70645d80d8cf1dc2fce04595ed",
+    "content-hash": "d69dc077ee58063a1087d070cb72acc1",
     "packages": [
         {
             "name": "consolidation/output-formatters",
-            "version": "3.4.0",
+            "version": "3.5.1",
             "source": {
                 "type": "git",
                 "url": "https://github.com/consolidation/output-formatters.git",
-                "reference": "a942680232094c4a5b21c0b7e54c20cce623ae19"
+                "reference": "0d38f13051ef05c223a2bb8e962d668e24785196"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/consolidation/output-formatters/zipball/a942680232094c4a5b21c0b7e54c20cce623ae19",
-                "reference": "a942680232094c4a5b21c0b7e54c20cce623ae19",
+                "url": "https://api.github.com/repos/consolidation/output-formatters/zipball/0d38f13051ef05c223a2bb8e962d668e24785196",
+                "reference": "0d38f13051ef05c223a2bb8e962d668e24785196",
                 "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"
+                "symfony/finder": "^2.5|^3|^4|^5"
             },
             "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"
             },
@@ -40,6 +39,62 @@
             },
             "type": "library",
             "extra": {
+                "scenarios": {
+                    "finder5": {
+                        "require": {
+                            "symfony/finder": "^5"
+                        },
+                        "config": {
+                            "platform": {
+                                "php": "7.2.5"
+                            }
+                        }
+                    },
+                    "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"
                 }
@@ -60,7 +115,7 @@
                 }
             ],
             "description": "Format text by applying transformations provided by plug-in formatters.",
-            "time": "2018-10-19T22:35:38+00:00"
+            "time": "2020-10-11T04:15:32+00:00"
         },
         {
             "name": "dflydev/dot-access-data",
@@ -123,16 +178,16 @@
         },
         {
             "name": "psr/log",
-            "version": "1.1.0",
+            "version": "1.1.3",
             "source": {
                 "type": "git",
                 "url": "https://github.com/php-fig/log.git",
-                "reference": "6c001f1daafa3a3ac1d8ff69ee4db8e799a654dd"
+                "reference": "0f73288fd15629204f9d42b7055f72dacbe811fc"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/php-fig/log/zipball/6c001f1daafa3a3ac1d8ff69ee4db8e799a654dd",
-                "reference": "6c001f1daafa3a3ac1d8ff69ee4db8e799a654dd",
+                "url": "https://api.github.com/repos/php-fig/log/zipball/0f73288fd15629204f9d42b7055f72dacbe811fc",
+                "reference": "0f73288fd15629204f9d42b7055f72dacbe811fc",
                 "shasum": ""
             },
             "require": {
@@ -141,7 +196,7 @@
             "type": "library",
             "extra": {
                 "branch-alias": {
-                    "dev-master": "1.0.x-dev"
+                    "dev-master": "1.1.x-dev"
                 }
             },
             "autoload": {
@@ -166,11 +221,11 @@
                 "psr",
                 "psr-3"
             ],
-            "time": "2018-11-20T15:27:04+00:00"
+            "time": "2020-03-23T09:12:05+00:00"
         },
         {
             "name": "symfony/console",
-            "version": "v2.8.49",
+            "version": "v2.8.52",
             "source": {
                 "type": "git",
                 "url": "https://github.com/symfony/console.git",
@@ -231,7 +286,7 @@
         },
         {
             "name": "symfony/debug",
-            "version": "v2.8.49",
+            "version": "v2.8.52",
             "source": {
                 "type": "git",
                 "url": "https://github.com/symfony/debug.git",
@@ -288,7 +343,7 @@
         },
         {
             "name": "symfony/event-dispatcher",
-            "version": "v2.8.49",
+            "version": "v2.8.52",
             "source": {
                 "type": "git",
                 "url": "https://github.com/symfony/event-dispatcher.git",
@@ -348,7 +403,7 @@
         },
         {
             "name": "symfony/finder",
-            "version": "v2.8.49",
+            "version": "v2.8.52",
             "source": {
                 "type": "git",
                 "url": "https://github.com/symfony/finder.git",
@@ -397,16 +452,16 @@
         },
         {
             "name": "symfony/polyfill-mbstring",
-            "version": "v1.10.0",
+            "version": "v1.18.1",
             "source": {
                 "type": "git",
                 "url": "https://github.com/symfony/polyfill-mbstring.git",
-                "reference": "c79c051f5b3a46be09205c73b80b346e4153e494"
+                "reference": "a6977d63bf9a0ad4c65cd352709e230876f9904a"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/c79c051f5b3a46be09205c73b80b346e4153e494",
-                "reference": "c79c051f5b3a46be09205c73b80b346e4153e494",
+                "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/a6977d63bf9a0ad4c65cd352709e230876f9904a",
+                "reference": "a6977d63bf9a0ad4c65cd352709e230876f9904a",
                 "shasum": ""
             },
             "require": {
@@ -418,7 +473,11 @@
             "type": "library",
             "extra": {
                 "branch-alias": {
-                    "dev-master": "1.9-dev"
+                    "dev-master": "1.18-dev"
+                },
+                "thanks": {
+                    "name": "symfony/polyfill",
+                    "url": "https://github.com/symfony/polyfill"
                 }
             },
             "autoload": {
@@ -452,7 +511,21 @@
                 "portable",
                 "shim"
             ],
-            "time": "2018-09-21T13:07:52+00:00"
+            "funding": [
+                {
+                    "url": "https://symfony.com/sponsor",
+                    "type": "custom"
+                },
+                {
+                    "url": "https://github.com/fabpot",
+                    "type": "github"
+                },
+                {
+                    "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+                    "type": "tidelift"
+                }
+            ],
+            "time": "2020-07-14T12:35:20+00:00"
         }
     ],
     "packages-dev": [
@@ -512,27 +585,27 @@
         },
         {
             "name": "g1a/composer-test-scenarios",
-            "version": "3.0.1",
+            "version": "3.2.0",
             "source": {
                 "type": "git",
                 "url": "https://github.com/g1a/composer-test-scenarios.git",
-                "reference": "224531e20d13a07942a989a70759f726cd2df9a1"
+                "reference": "e7394206d845fd593d325440507fb940bef8cb62"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/g1a/composer-test-scenarios/zipball/224531e20d13a07942a989a70759f726cd2df9a1",
-                "reference": "224531e20d13a07942a989a70759f726cd2df9a1",
+                "url": "https://api.github.com/repos/g1a/composer-test-scenarios/zipball/e7394206d845fd593d325440507fb940bef8cb62",
+                "reference": "e7394206d845fd593d325440507fb940bef8cb62",
                 "shasum": ""
             },
             "require": {
-                "composer-plugin-api": "^1.0.0",
+                "composer-plugin-api": "^1.0.0 || ^2.0.0",
                 "php": ">=5.4"
             },
             "require-dev": {
-                "composer/composer": "^1.7",
+                "composer/composer": "^1.10.6 || ^2.0@rc",
                 "php-coveralls/php-coveralls": "^1.0",
                 "phpunit/phpunit": "^4.8.36|^6",
-                "squizlabs/php_codesniffer": "^2.8"
+                "squizlabs/php_codesniffer": "^3.5"
             },
             "bin": [
                 "scripts/dependency-licenses"
@@ -541,7 +614,7 @@
             "extra": {
                 "class": "ComposerTestScenarios\\Plugin",
                 "branch-alias": {
-                    "dev-master": "3.x-dev"
+                    "dev-main": "3.x-dev"
                 }
             },
             "autoload": {
@@ -560,7 +633,7 @@
                 }
             ],
             "description": "Useful scripts for testing multiple sets of Composer dependencies.",
-            "time": "2018-11-27T05:58:39+00:00"
+            "time": "2020-09-28T20:54:35+00:00"
         },
         {
             "name": "phpdocumentor/reflection-docblock",
@@ -613,38 +686,38 @@
         },
         {
             "name": "phpspec/prophecy",
-            "version": "1.8.0",
+            "version": "v1.10.3",
             "source": {
                 "type": "git",
                 "url": "https://github.com/phpspec/prophecy.git",
-                "reference": "4ba436b55987b4bf311cb7c6ba82aa528aac0a06"
+                "reference": "451c3cd1418cf640de218914901e51b064abb093"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/phpspec/prophecy/zipball/4ba436b55987b4bf311cb7c6ba82aa528aac0a06",
-                "reference": "4ba436b55987b4bf311cb7c6ba82aa528aac0a06",
+                "url": "https://api.github.com/repos/phpspec/prophecy/zipball/451c3cd1418cf640de218914901e51b064abb093",
+                "reference": "451c3cd1418cf640de218914901e51b064abb093",
                 "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"
+                "phpdocumentor/reflection-docblock": "^2.0|^3.0.2|^4.0|^5.0",
+                "sebastian/comparator": "^1.2.3|^2.0|^3.0|^4.0",
+                "sebastian/recursion-context": "^1.0|^2.0|^3.0|^4.0"
             },
             "require-dev": {
-                "phpspec/phpspec": "^2.5|^3.2",
+                "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"
+                    "dev-master": "1.10.x-dev"
                 }
             },
             "autoload": {
-                "psr-0": {
-                    "Prophecy\\": "src/"
+                "psr-4": {
+                    "Prophecy\\": "src/Prophecy"
                 }
             },
             "notification-url": "https://packagist.org/downloads/",
@@ -672,7 +745,7 @@
                 "spy",
                 "stub"
             ],
-            "time": "2018-08-05T17:53:17+00:00"
+            "time": "2020-03-05T15:02:03+00:00"
         },
         {
             "name": "phpunit/php-code-coverage",
@@ -920,6 +993,7 @@
             "keywords": [
                 "tokenizer"
             ],
+            "abandoned": true,
             "time": "2017-12-04T08:55:13+00:00"
         },
         {
@@ -1048,6 +1122,7 @@
                 "mock",
                 "xunit"
             ],
+            "abandoned": true,
             "time": "2015-10-02T06:51:40+00:00"
         },
         {
@@ -1502,16 +1577,16 @@
         },
         {
             "name": "symfony/polyfill-ctype",
-            "version": "v1.10.0",
+            "version": "v1.18.1",
             "source": {
                 "type": "git",
                 "url": "https://github.com/symfony/polyfill-ctype.git",
-                "reference": "e3d826245268269cd66f8326bd8bc066687b4a19"
+                "reference": "1c302646f6efc070cd46856e600e5e0684d6b454"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/e3d826245268269cd66f8326bd8bc066687b4a19",
-                "reference": "e3d826245268269cd66f8326bd8bc066687b4a19",
+                "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/1c302646f6efc070cd46856e600e5e0684d6b454",
+                "reference": "1c302646f6efc070cd46856e600e5e0684d6b454",
                 "shasum": ""
             },
             "require": {
@@ -1523,7 +1598,11 @@
             "type": "library",
             "extra": {
                 "branch-alias": {
-                    "dev-master": "1.9-dev"
+                    "dev-master": "1.18-dev"
+                },
+                "thanks": {
+                    "name": "symfony/polyfill",
+                    "url": "https://github.com/symfony/polyfill"
                 }
             },
             "autoload": {
@@ -1539,13 +1618,13 @@
                 "MIT"
             ],
             "authors": [
-                {
-                    "name": "Symfony Community",
-                    "homepage": "https://symfony.com/contributors"
-                },
                 {
                     "name": "Gert de Pagter",
                     "email": "BackEndTea@gmail.com"
+                },
+                {
+                    "name": "Symfony Community",
+                    "homepage": "https://symfony.com/contributors"
                 }
             ],
             "description": "Symfony polyfill for ctype functions",
@@ -1556,11 +1635,25 @@
                 "polyfill",
                 "portable"
             ],
-            "time": "2018-08-06T14:22:27+00:00"
+            "funding": [
+                {
+                    "url": "https://symfony.com/sponsor",
+                    "type": "custom"
+                },
+                {
+                    "url": "https://github.com/fabpot",
+                    "type": "github"
+                },
+                {
+                    "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+                    "type": "tidelift"
+                }
+            ],
+            "time": "2020-07-14T12:35:20+00:00"
         },
         {
             "name": "symfony/yaml",
-            "version": "v2.8.49",
+            "version": "v2.8.52",
             "source": {
                 "type": "git",
                 "url": "https://github.com/symfony/yaml.git",
@@ -1620,5 +1713,6 @@
     "platform-dev": [],
     "platform-overrides": {
         "php": "5.4.8"
-    }
+    },
+    "plugin-api-version": "1.1.0"
 }
diff --git a/vendor/consolidation/annotated-command/.scenarios.lock/symfony2/composer.json b/vendor/consolidation/annotated-command/.scenarios.lock/symfony2/composer.json
index 17e581d915..88075ce814 100644
--- a/vendor/consolidation/annotated-command/.scenarios.lock/symfony2/composer.json
+++ b/vendor/consolidation/annotated-command/.scenarios.lock/symfony2/composer.json
@@ -21,10 +21,10 @@
     "require": {
         "symfony/console": "^2.8",
         "php": ">=5.4.5",
-        "consolidation/output-formatters": "^3.4",
+        "consolidation/output-formatters": "^3.5.1",
         "psr/log": "^1",
         "symfony/event-dispatcher": "^2.5|^3|^4",
-        "symfony/finder": "^2.5|^3|^4"
+        "symfony/finder": "^2.5|^3|^4|^5"
     },
     "require-dev": {
         "phpunit/phpunit": "^4.8.36",
diff --git a/vendor/consolidation/annotated-command/.scenarios.lock/symfony4/composer.json b/vendor/consolidation/annotated-command/.scenarios.lock/symfony4/composer.json
index 80f0baaf38..16c40493dd 100644
--- a/vendor/consolidation/annotated-command/.scenarios.lock/symfony4/composer.json
+++ b/vendor/consolidation/annotated-command/.scenarios.lock/symfony4/composer.json
@@ -21,10 +21,10 @@
     "require": {
         "symfony/console": "^4.0",
         "php": ">=5.4.5",
-        "consolidation/output-formatters": "^3.4",
+        "consolidation/output-formatters": "^3.5.1",
         "psr/log": "^1",
         "symfony/event-dispatcher": "^2.5|^3|^4",
-        "symfony/finder": "^2.5|^3|^4"
+        "symfony/finder": "^2.5|^3|^4|^5"
     },
     "require-dev": {
         "phpunit/phpunit": "^6",
diff --git a/vendor/consolidation/annotated-command/.scenarios.lock/symfony4/composer.lock b/vendor/consolidation/annotated-command/.scenarios.lock/symfony4/composer.lock
index 605f4d0d0f..f60852876d 100644
--- a/vendor/consolidation/annotated-command/.scenarios.lock/symfony4/composer.lock
+++ b/vendor/consolidation/annotated-command/.scenarios.lock/symfony4/composer.lock
@@ -4,34 +4,33 @@
         "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",
         "This file is @generated automatically"
     ],
-    "content-hash": "c6c8cae7d200f377fc58fdc4d46be678",
+    "content-hash": "7e462e9eec4461a4eb39e90d105ea42c",
     "packages": [
         {
             "name": "consolidation/output-formatters",
-            "version": "3.4.0",
+            "version": "3.5.1",
             "source": {
                 "type": "git",
                 "url": "https://github.com/consolidation/output-formatters.git",
-                "reference": "a942680232094c4a5b21c0b7e54c20cce623ae19"
+                "reference": "0d38f13051ef05c223a2bb8e962d668e24785196"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/consolidation/output-formatters/zipball/a942680232094c4a5b21c0b7e54c20cce623ae19",
-                "reference": "a942680232094c4a5b21c0b7e54c20cce623ae19",
+                "url": "https://api.github.com/repos/consolidation/output-formatters/zipball/0d38f13051ef05c223a2bb8e962d668e24785196",
+                "reference": "0d38f13051ef05c223a2bb8e962d668e24785196",
                 "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"
+                "symfony/finder": "^2.5|^3|^4|^5"
             },
             "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"
             },
@@ -40,6 +39,62 @@
             },
             "type": "library",
             "extra": {
+                "scenarios": {
+                    "finder5": {
+                        "require": {
+                            "symfony/finder": "^5"
+                        },
+                        "config": {
+                            "platform": {
+                                "php": "7.2.5"
+                            }
+                        }
+                    },
+                    "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"
                 }
@@ -60,7 +115,7 @@
                 }
             ],
             "description": "Format text by applying transformations provided by plug-in formatters.",
-            "time": "2018-10-19T22:35:38+00:00"
+            "time": "2020-10-11T04:15:32+00:00"
         },
         {
             "name": "dflydev/dot-access-data",
@@ -121,18 +176,67 @@
             ],
             "time": "2017-01-20T21:14:22+00:00"
         },
+        {
+            "name": "psr/container",
+            "version": "1.0.0",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/php-fig/container.git",
+                "reference": "b7ce3b176482dbbc1245ebf52b181af44c2cf55f"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/php-fig/container/zipball/b7ce3b176482dbbc1245ebf52b181af44c2cf55f",
+                "reference": "b7ce3b176482dbbc1245ebf52b181af44c2cf55f",
+                "shasum": ""
+            },
+            "require": {
+                "php": ">=5.3.0"
+            },
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "1.0.x-dev"
+                }
+            },
+            "autoload": {
+                "psr-4": {
+                    "Psr\\Container\\": "src/"
+                }
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "MIT"
+            ],
+            "authors": [
+                {
+                    "name": "PHP-FIG",
+                    "homepage": "http://www.php-fig.org/"
+                }
+            ],
+            "description": "Common Container Interface (PHP FIG PSR-11)",
+            "homepage": "https://github.com/php-fig/container",
+            "keywords": [
+                "PSR-11",
+                "container",
+                "container-interface",
+                "container-interop",
+                "psr"
+            ],
+            "time": "2017-02-14T16:28:37+00:00"
+        },
         {
             "name": "psr/log",
-            "version": "1.1.0",
+            "version": "1.1.3",
             "source": {
                 "type": "git",
                 "url": "https://github.com/php-fig/log.git",
-                "reference": "6c001f1daafa3a3ac1d8ff69ee4db8e799a654dd"
+                "reference": "0f73288fd15629204f9d42b7055f72dacbe811fc"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/php-fig/log/zipball/6c001f1daafa3a3ac1d8ff69ee4db8e799a654dd",
-                "reference": "6c001f1daafa3a3ac1d8ff69ee4db8e799a654dd",
+                "url": "https://api.github.com/repos/php-fig/log/zipball/0f73288fd15629204f9d42b7055f72dacbe811fc",
+                "reference": "0f73288fd15629204f9d42b7055f72dacbe811fc",
                 "shasum": ""
             },
             "require": {
@@ -141,7 +245,7 @@
             "type": "library",
             "extra": {
                 "branch-alias": {
-                    "dev-master": "1.0.x-dev"
+                    "dev-master": "1.1.x-dev"
                 }
             },
             "autoload": {
@@ -166,41 +270,49 @@
                 "psr",
                 "psr-3"
             ],
-            "time": "2018-11-20T15:27:04+00:00"
+            "time": "2020-03-23T09:12:05+00:00"
         },
         {
             "name": "symfony/console",
-            "version": "v4.2.2",
+            "version": "v4.4.15",
             "source": {
                 "type": "git",
                 "url": "https://github.com/symfony/console.git",
-                "reference": "b0a03c1bb0fcbe288629956cf2f1dd3f1dc97522"
+                "reference": "90933b39c7b312fc3ceaa1ddeac7eb48cb953124"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/symfony/console/zipball/b0a03c1bb0fcbe288629956cf2f1dd3f1dc97522",
-                "reference": "b0a03c1bb0fcbe288629956cf2f1dd3f1dc97522",
+                "url": "https://api.github.com/repos/symfony/console/zipball/90933b39c7b312fc3ceaa1ddeac7eb48cb953124",
+                "reference": "90933b39c7b312fc3ceaa1ddeac7eb48cb953124",
                 "shasum": ""
             },
             "require": {
-                "php": "^7.1.3",
-                "symfony/contracts": "^1.0",
-                "symfony/polyfill-mbstring": "~1.0"
+                "php": ">=7.1.3",
+                "symfony/polyfill-mbstring": "~1.0",
+                "symfony/polyfill-php73": "^1.8",
+                "symfony/polyfill-php80": "^1.15",
+                "symfony/service-contracts": "^1.1|^2"
             },
             "conflict": {
                 "symfony/dependency-injection": "<3.4",
+                "symfony/event-dispatcher": "<4.3|>=5",
+                "symfony/lock": "<4.4",
                 "symfony/process": "<3.3"
             },
+            "provide": {
+                "psr/log-implementation": "1.0"
+            },
             "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"
+                "symfony/config": "^3.4|^4.0|^5.0",
+                "symfony/dependency-injection": "^3.4|^4.0|^5.0",
+                "symfony/event-dispatcher": "^4.3",
+                "symfony/lock": "^4.4|^5.0",
+                "symfony/process": "^3.4|^4.0|^5.0",
+                "symfony/var-dumper": "^4.3|^5.0"
             },
             "suggest": {
-                "psr/log-implementation": "For using the console logger",
+                "psr/log": "For using the console logger",
                 "symfony/event-dispatcher": "",
                 "symfony/lock": "",
                 "symfony/process": ""
@@ -208,7 +320,7 @@
             "type": "library",
             "extra": {
                 "branch-alias": {
-                    "dev-master": "4.2-dev"
+                    "dev-master": "4.4-dev"
                 }
             },
             "autoload": {
@@ -235,48 +347,73 @@
             ],
             "description": "Symfony Console Component",
             "homepage": "https://symfony.com",
-            "time": "2019-01-04T15:13:53+00:00"
+            "funding": [
+                {
+                    "url": "https://symfony.com/sponsor",
+                    "type": "custom"
+                },
+                {
+                    "url": "https://github.com/fabpot",
+                    "type": "github"
+                },
+                {
+                    "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+                    "type": "tidelift"
+                }
+            ],
+            "time": "2020-09-15T07:58:55+00:00"
         },
         {
-            "name": "symfony/contracts",
-            "version": "v1.0.2",
+            "name": "symfony/event-dispatcher",
+            "version": "v4.4.15",
             "source": {
                 "type": "git",
-                "url": "https://github.com/symfony/contracts.git",
-                "reference": "1aa7ab2429c3d594dd70689604b5cf7421254cdf"
+                "url": "https://github.com/symfony/event-dispatcher.git",
+                "reference": "e17bb5e0663dc725f7cdcafc932132735b4725cd"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/symfony/contracts/zipball/1aa7ab2429c3d594dd70689604b5cf7421254cdf",
-                "reference": "1aa7ab2429c3d594dd70689604b5cf7421254cdf",
+                "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/e17bb5e0663dc725f7cdcafc932132735b4725cd",
+                "reference": "e17bb5e0663dc725f7cdcafc932132735b4725cd",
                 "shasum": ""
             },
             "require": {
-                "php": "^7.1.3"
+                "php": ">=7.1.3",
+                "symfony/event-dispatcher-contracts": "^1.1"
+            },
+            "conflict": {
+                "symfony/dependency-injection": "<3.4"
+            },
+            "provide": {
+                "psr/event-dispatcher-implementation": "1.0",
+                "symfony/event-dispatcher-implementation": "1.1"
             },
             "require-dev": {
-                "psr/cache": "^1.0",
-                "psr/container": "^1.0"
+                "psr/log": "~1.0",
+                "symfony/config": "^3.4|^4.0|^5.0",
+                "symfony/dependency-injection": "^3.4|^4.0|^5.0",
+                "symfony/error-handler": "~3.4|~4.4",
+                "symfony/expression-language": "^3.4|^4.0|^5.0",
+                "symfony/http-foundation": "^3.4|^4.0|^5.0",
+                "symfony/service-contracts": "^1.1|^2",
+                "symfony/stopwatch": "^3.4|^4.0|^5.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": ""
+                "symfony/dependency-injection": "",
+                "symfony/http-kernel": ""
             },
             "type": "library",
             "extra": {
                 "branch-alias": {
-                    "dev-master": "1.0-dev"
+                    "dev-master": "4.4-dev"
                 }
             },
             "autoload": {
                 "psr-4": {
-                    "Symfony\\Contracts\\": ""
+                    "Symfony\\Component\\EventDispatcher\\": ""
                 },
                 "exclude-from-classmap": [
-                    "**/Tests/"
+                    "/Tests/"
                 ]
             },
             "notification-url": "https://packagist.org/downloads/",
@@ -285,71 +422,67 @@
             ],
             "authors": [
                 {
-                    "name": "Nicolas Grekas",
-                    "email": "p@tchwork.com"
+                    "name": "Fabien Potencier",
+                    "email": "fabien@symfony.com"
                 },
                 {
                     "name": "Symfony Community",
                     "homepage": "https://symfony.com/contributors"
                 }
             ],
-            "description": "A set of abstractions extracted out of the Symfony components",
+            "description": "Symfony EventDispatcher Component",
             "homepage": "https://symfony.com",
-            "keywords": [
-                "abstractions",
-                "contracts",
-                "decoupling",
-                "interfaces",
-                "interoperability",
-                "standards"
+            "funding": [
+                {
+                    "url": "https://symfony.com/sponsor",
+                    "type": "custom"
+                },
+                {
+                    "url": "https://github.com/fabpot",
+                    "type": "github"
+                },
+                {
+                    "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+                    "type": "tidelift"
+                }
             ],
-            "time": "2018-12-05T08:06:11+00:00"
+            "time": "2020-09-18T14:07:46+00:00"
         },
         {
-            "name": "symfony/event-dispatcher",
-            "version": "v4.2.2",
+            "name": "symfony/event-dispatcher-contracts",
+            "version": "v1.1.9",
             "source": {
                 "type": "git",
-                "url": "https://github.com/symfony/event-dispatcher.git",
-                "reference": "887de6d34c86cf0cb6cbf910afb170cdb743cb5e"
+                "url": "https://github.com/symfony/event-dispatcher-contracts.git",
+                "reference": "84e23fdcd2517bf37aecbd16967e83f0caee25a7"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/887de6d34c86cf0cb6cbf910afb170cdb743cb5e",
-                "reference": "887de6d34c86cf0cb6cbf910afb170cdb743cb5e",
+                "url": "https://api.github.com/repos/symfony/event-dispatcher-contracts/zipball/84e23fdcd2517bf37aecbd16967e83f0caee25a7",
+                "reference": "84e23fdcd2517bf37aecbd16967e83f0caee25a7",
                 "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"
+                "php": ">=7.1.3"
             },
             "suggest": {
-                "symfony/dependency-injection": "",
-                "symfony/http-kernel": ""
+                "psr/event-dispatcher": "",
+                "symfony/event-dispatcher-implementation": ""
             },
             "type": "library",
             "extra": {
                 "branch-alias": {
-                    "dev-master": "4.2-dev"
+                    "dev-master": "1.1-dev"
+                },
+                "thanks": {
+                    "name": "symfony/contracts",
+                    "url": "https://github.com/symfony/contracts"
                 }
             },
             "autoload": {
                 "psr-4": {
-                    "Symfony\\Component\\EventDispatcher\\": ""
-                },
-                "exclude-from-classmap": [
-                    "/Tests/"
-                ]
+                    "Symfony\\Contracts\\EventDispatcher\\": ""
+                }
             },
             "notification-url": "https://packagist.org/downloads/",
             "license": [
@@ -357,39 +490,61 @@
             ],
             "authors": [
                 {
-                    "name": "Fabien Potencier",
-                    "email": "fabien@symfony.com"
+                    "name": "Nicolas Grekas",
+                    "email": "p@tchwork.com"
                 },
                 {
                     "name": "Symfony Community",
                     "homepage": "https://symfony.com/contributors"
                 }
             ],
-            "description": "Symfony EventDispatcher Component",
+            "description": "Generic abstractions related to dispatching event",
             "homepage": "https://symfony.com",
-            "time": "2019-01-05T16:37:49+00:00"
+            "keywords": [
+                "abstractions",
+                "contracts",
+                "decoupling",
+                "interfaces",
+                "interoperability",
+                "standards"
+            ],
+            "funding": [
+                {
+                    "url": "https://symfony.com/sponsor",
+                    "type": "custom"
+                },
+                {
+                    "url": "https://github.com/fabpot",
+                    "type": "github"
+                },
+                {
+                    "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+                    "type": "tidelift"
+                }
+            ],
+            "time": "2020-07-06T13:19:58+00:00"
         },
         {
             "name": "symfony/finder",
-            "version": "v4.2.2",
+            "version": "v4.4.15",
             "source": {
                 "type": "git",
                 "url": "https://github.com/symfony/finder.git",
-                "reference": "9094d69e8c6ee3fe186a0ec5a4f1401e506071ce"
+                "reference": "60d08560f9aa72997c44077c40d47aa28a963230"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/symfony/finder/zipball/9094d69e8c6ee3fe186a0ec5a4f1401e506071ce",
-                "reference": "9094d69e8c6ee3fe186a0ec5a4f1401e506071ce",
+                "url": "https://api.github.com/repos/symfony/finder/zipball/60d08560f9aa72997c44077c40d47aa28a963230",
+                "reference": "60d08560f9aa72997c44077c40d47aa28a963230",
                 "shasum": ""
             },
             "require": {
-                "php": "^7.1.3"
+                "php": ">=7.1.3"
             },
             "type": "library",
             "extra": {
                 "branch-alias": {
-                    "dev-master": "4.2-dev"
+                    "dev-master": "4.4-dev"
                 }
             },
             "autoload": {
@@ -416,20 +571,34 @@
             ],
             "description": "Symfony Finder Component",
             "homepage": "https://symfony.com",
-            "time": "2019-01-03T09:07:35+00:00"
+            "funding": [
+                {
+                    "url": "https://symfony.com/sponsor",
+                    "type": "custom"
+                },
+                {
+                    "url": "https://github.com/fabpot",
+                    "type": "github"
+                },
+                {
+                    "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+                    "type": "tidelift"
+                }
+            ],
+            "time": "2020-10-02T07:34:48+00:00"
         },
         {
             "name": "symfony/polyfill-mbstring",
-            "version": "v1.10.0",
+            "version": "v1.18.1",
             "source": {
                 "type": "git",
                 "url": "https://github.com/symfony/polyfill-mbstring.git",
-                "reference": "c79c051f5b3a46be09205c73b80b346e4153e494"
+                "reference": "a6977d63bf9a0ad4c65cd352709e230876f9904a"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/c79c051f5b3a46be09205c73b80b346e4153e494",
-                "reference": "c79c051f5b3a46be09205c73b80b346e4153e494",
+                "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/a6977d63bf9a0ad4c65cd352709e230876f9904a",
+                "reference": "a6977d63bf9a0ad4c65cd352709e230876f9904a",
                 "shasum": ""
             },
             "require": {
@@ -441,7 +610,11 @@
             "type": "library",
             "extra": {
                 "branch-alias": {
-                    "dev-master": "1.9-dev"
+                    "dev-master": "1.18-dev"
+                },
+                "thanks": {
+                    "name": "symfony/polyfill",
+                    "url": "https://github.com/symfony/polyfill"
                 }
             },
             "autoload": {
@@ -475,33 +648,281 @@
                 "portable",
                 "shim"
             ],
-            "time": "2018-09-21T13:07:52+00:00"
+            "funding": [
+                {
+                    "url": "https://symfony.com/sponsor",
+                    "type": "custom"
+                },
+                {
+                    "url": "https://github.com/fabpot",
+                    "type": "github"
+                },
+                {
+                    "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+                    "type": "tidelift"
+                }
+            ],
+            "time": "2020-07-14T12:35:20+00:00"
+        },
+        {
+            "name": "symfony/polyfill-php73",
+            "version": "v1.18.1",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/symfony/polyfill-php73.git",
+                "reference": "fffa1a52a023e782cdcc221d781fe1ec8f87fcca"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/symfony/polyfill-php73/zipball/fffa1a52a023e782cdcc221d781fe1ec8f87fcca",
+                "reference": "fffa1a52a023e782cdcc221d781fe1ec8f87fcca",
+                "shasum": ""
+            },
+            "require": {
+                "php": ">=5.3.3"
+            },
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "1.18-dev"
+                },
+                "thanks": {
+                    "name": "symfony/polyfill",
+                    "url": "https://github.com/symfony/polyfill"
+                }
+            },
+            "autoload": {
+                "psr-4": {
+                    "Symfony\\Polyfill\\Php73\\": ""
+                },
+                "files": [
+                    "bootstrap.php"
+                ],
+                "classmap": [
+                    "Resources/stubs"
+                ]
+            },
+            "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.3+ features to lower PHP versions",
+            "homepage": "https://symfony.com",
+            "keywords": [
+                "compatibility",
+                "polyfill",
+                "portable",
+                "shim"
+            ],
+            "funding": [
+                {
+                    "url": "https://symfony.com/sponsor",
+                    "type": "custom"
+                },
+                {
+                    "url": "https://github.com/fabpot",
+                    "type": "github"
+                },
+                {
+                    "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+                    "type": "tidelift"
+                }
+            ],
+            "time": "2020-07-14T12:35:20+00:00"
+        },
+        {
+            "name": "symfony/polyfill-php80",
+            "version": "v1.18.1",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/symfony/polyfill-php80.git",
+                "reference": "d87d5766cbf48d72388a9f6b85f280c8ad51f981"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/symfony/polyfill-php80/zipball/d87d5766cbf48d72388a9f6b85f280c8ad51f981",
+                "reference": "d87d5766cbf48d72388a9f6b85f280c8ad51f981",
+                "shasum": ""
+            },
+            "require": {
+                "php": ">=7.0.8"
+            },
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "1.18-dev"
+                },
+                "thanks": {
+                    "name": "symfony/polyfill",
+                    "url": "https://github.com/symfony/polyfill"
+                }
+            },
+            "autoload": {
+                "psr-4": {
+                    "Symfony\\Polyfill\\Php80\\": ""
+                },
+                "files": [
+                    "bootstrap.php"
+                ],
+                "classmap": [
+                    "Resources/stubs"
+                ]
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "MIT"
+            ],
+            "authors": [
+                {
+                    "name": "Ion Bazan",
+                    "email": "ion.bazan@gmail.com"
+                },
+                {
+                    "name": "Nicolas Grekas",
+                    "email": "p@tchwork.com"
+                },
+                {
+                    "name": "Symfony Community",
+                    "homepage": "https://symfony.com/contributors"
+                }
+            ],
+            "description": "Symfony polyfill backporting some PHP 8.0+ features to lower PHP versions",
+            "homepage": "https://symfony.com",
+            "keywords": [
+                "compatibility",
+                "polyfill",
+                "portable",
+                "shim"
+            ],
+            "funding": [
+                {
+                    "url": "https://symfony.com/sponsor",
+                    "type": "custom"
+                },
+                {
+                    "url": "https://github.com/fabpot",
+                    "type": "github"
+                },
+                {
+                    "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+                    "type": "tidelift"
+                }
+            ],
+            "time": "2020-07-14T12:35:20+00:00"
+        },
+        {
+            "name": "symfony/service-contracts",
+            "version": "v1.1.9",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/symfony/service-contracts.git",
+                "reference": "b776d18b303a39f56c63747bcb977ad4b27aca26"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/symfony/service-contracts/zipball/b776d18b303a39f56c63747bcb977ad4b27aca26",
+                "reference": "b776d18b303a39f56c63747bcb977ad4b27aca26",
+                "shasum": ""
+            },
+            "require": {
+                "php": ">=7.1.3",
+                "psr/container": "^1.0"
+            },
+            "suggest": {
+                "symfony/service-implementation": ""
+            },
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "1.1-dev"
+                },
+                "thanks": {
+                    "name": "symfony/contracts",
+                    "url": "https://github.com/symfony/contracts"
+                }
+            },
+            "autoload": {
+                "psr-4": {
+                    "Symfony\\Contracts\\Service\\": ""
+                }
+            },
+            "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": "Generic abstractions related to writing services",
+            "homepage": "https://symfony.com",
+            "keywords": [
+                "abstractions",
+                "contracts",
+                "decoupling",
+                "interfaces",
+                "interoperability",
+                "standards"
+            ],
+            "funding": [
+                {
+                    "url": "https://symfony.com/sponsor",
+                    "type": "custom"
+                },
+                {
+                    "url": "https://github.com/fabpot",
+                    "type": "github"
+                },
+                {
+                    "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+                    "type": "tidelift"
+                }
+            ],
+            "time": "2020-07-06T13:19:58+00:00"
         }
     ],
     "packages-dev": [
         {
             "name": "doctrine/instantiator",
-            "version": "1.1.0",
+            "version": "1.3.1",
             "source": {
                 "type": "git",
                 "url": "https://github.com/doctrine/instantiator.git",
-                "reference": "185b8868aa9bf7159f5f953ed5afb2d7fcdc3bda"
+                "reference": "f350df0268e904597e3bd9c4685c53e0e333feea"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/doctrine/instantiator/zipball/185b8868aa9bf7159f5f953ed5afb2d7fcdc3bda",
-                "reference": "185b8868aa9bf7159f5f953ed5afb2d7fcdc3bda",
+                "url": "https://api.github.com/repos/doctrine/instantiator/zipball/f350df0268e904597e3bd9c4685c53e0e333feea",
+                "reference": "f350df0268e904597e3bd9c4685c53e0e333feea",
                 "shasum": ""
             },
             "require": {
-                "php": "^7.1"
+                "php": "^7.1 || ^8.0"
             },
             "require-dev": {
-                "athletic/athletic": "~0.1.8",
+                "doctrine/coding-standard": "^6.0",
                 "ext-pdo": "*",
                 "ext-phar": "*",
-                "phpunit/phpunit": "^6.2.3",
-                "squizlabs/php_codesniffer": "^3.0.2"
+                "phpbench/phpbench": "^0.13",
+                "phpstan/phpstan-phpunit": "^0.11",
+                "phpstan/phpstan-shim": "^0.11",
+                "phpunit/phpunit": "^7.0"
             },
             "type": "library",
             "extra": {
@@ -526,36 +947,50 @@
                 }
             ],
             "description": "A small, lightweight utility to instantiate objects in PHP without invoking their constructors",
-            "homepage": "https://github.com/doctrine/instantiator",
+            "homepage": "https://www.doctrine-project.org/projects/instantiator.html",
             "keywords": [
                 "constructor",
                 "instantiate"
             ],
-            "time": "2017-07-22T11:58:36+00:00"
+            "funding": [
+                {
+                    "url": "https://www.doctrine-project.org/sponsorship.html",
+                    "type": "custom"
+                },
+                {
+                    "url": "https://www.patreon.com/phpdoctrine",
+                    "type": "patreon"
+                },
+                {
+                    "url": "https://tidelift.com/funding/github/packagist/doctrine%2Finstantiator",
+                    "type": "tidelift"
+                }
+            ],
+            "time": "2020-05-29T17:27:14+00:00"
         },
         {
             "name": "g1a/composer-test-scenarios",
-            "version": "3.0.1",
+            "version": "3.2.0",
             "source": {
                 "type": "git",
                 "url": "https://github.com/g1a/composer-test-scenarios.git",
-                "reference": "224531e20d13a07942a989a70759f726cd2df9a1"
+                "reference": "e7394206d845fd593d325440507fb940bef8cb62"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/g1a/composer-test-scenarios/zipball/224531e20d13a07942a989a70759f726cd2df9a1",
-                "reference": "224531e20d13a07942a989a70759f726cd2df9a1",
+                "url": "https://api.github.com/repos/g1a/composer-test-scenarios/zipball/e7394206d845fd593d325440507fb940bef8cb62",
+                "reference": "e7394206d845fd593d325440507fb940bef8cb62",
                 "shasum": ""
             },
             "require": {
-                "composer-plugin-api": "^1.0.0",
+                "composer-plugin-api": "^1.0.0 || ^2.0.0",
                 "php": ">=5.4"
             },
             "require-dev": {
-                "composer/composer": "^1.7",
+                "composer/composer": "^1.10.6 || ^2.0@rc",
                 "php-coveralls/php-coveralls": "^1.0",
                 "phpunit/phpunit": "^4.8.36|^6",
-                "squizlabs/php_codesniffer": "^2.8"
+                "squizlabs/php_codesniffer": "^3.5"
             },
             "bin": [
                 "scripts/dependency-licenses"
@@ -564,7 +999,7 @@
             "extra": {
                 "class": "ComposerTestScenarios\\Plugin",
                 "branch-alias": {
-                    "dev-master": "3.x-dev"
+                    "dev-main": "3.x-dev"
                 }
             },
             "autoload": {
@@ -583,7 +1018,7 @@
                 }
             ],
             "description": "Useful scripts for testing multiple sets of Composer dependencies.",
-            "time": "2018-11-27T05:58:39+00:00"
+            "time": "2020-09-28T20:54:35+00:00"
         },
         {
             "name": "guzzle/guzzle",
@@ -680,20 +1115,20 @@
         },
         {
             "name": "myclabs/deep-copy",
-            "version": "1.8.1",
+            "version": "1.10.1",
             "source": {
                 "type": "git",
                 "url": "https://github.com/myclabs/DeepCopy.git",
-                "reference": "3e01bdad3e18354c3dce54466b7fbe33a9f9f7f8"
+                "reference": "969b211f9a51aa1f6c01d1d2aef56d3bd91598e5"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/3e01bdad3e18354c3dce54466b7fbe33a9f9f7f8",
-                "reference": "3e01bdad3e18354c3dce54466b7fbe33a9f9f7f8",
+                "url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/969b211f9a51aa1f6c01d1d2aef56d3bd91598e5",
+                "reference": "969b211f9a51aa1f6c01d1d2aef56d3bd91598e5",
                 "shasum": ""
             },
             "require": {
-                "php": "^7.1"
+                "php": "^7.1 || ^8.0"
             },
             "replace": {
                 "myclabs/deep-copy": "self.version"
@@ -724,7 +1159,13 @@
                 "object",
                 "object graph"
             ],
-            "time": "2018-06-11T23:09:50+00:00"
+            "funding": [
+                {
+                    "url": "https://tidelift.com/funding/github/packagist/myclabs/deep-copy",
+                    "type": "tidelift"
+                }
+            ],
+            "time": "2020-06-29T13:22:24+00:00"
         },
         {
             "name": "phar-io/manifest",
@@ -891,35 +1332,30 @@
         },
         {
             "name": "phpdocumentor/reflection-common",
-            "version": "1.0.1",
+            "version": "2.1.0",
             "source": {
                 "type": "git",
                 "url": "https://github.com/phpDocumentor/ReflectionCommon.git",
-                "reference": "21bdeb5f65d7ebf9f43b1b25d404f87deab5bfb6"
+                "reference": "6568f4687e5b41b054365f9ae03fcb1ed5f2069b"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/phpDocumentor/ReflectionCommon/zipball/21bdeb5f65d7ebf9f43b1b25d404f87deab5bfb6",
-                "reference": "21bdeb5f65d7ebf9f43b1b25d404f87deab5bfb6",
+                "url": "https://api.github.com/repos/phpDocumentor/ReflectionCommon/zipball/6568f4687e5b41b054365f9ae03fcb1ed5f2069b",
+                "reference": "6568f4687e5b41b054365f9ae03fcb1ed5f2069b",
                 "shasum": ""
             },
             "require": {
-                "php": ">=5.5"
-            },
-            "require-dev": {
-                "phpunit/phpunit": "^4.6"
+                "php": ">=7.1"
             },
             "type": "library",
             "extra": {
                 "branch-alias": {
-                    "dev-master": "1.0.x-dev"
+                    "dev-master": "2.x-dev"
                 }
             },
             "autoload": {
                 "psr-4": {
-                    "phpDocumentor\\Reflection\\": [
-                        "src"
-                    ]
+                    "phpDocumentor\\Reflection\\": "src/"
                 }
             },
             "notification-url": "https://packagist.org/downloads/",
@@ -941,31 +1377,32 @@
                 "reflection",
                 "static analysis"
             ],
-            "time": "2017-09-11T18:02:19+00:00"
+            "time": "2020-04-27T09:25:28+00:00"
         },
         {
             "name": "phpdocumentor/reflection-docblock",
-            "version": "4.3.0",
+            "version": "4.3.4",
             "source": {
                 "type": "git",
                 "url": "https://github.com/phpDocumentor/ReflectionDocBlock.git",
-                "reference": "94fd0001232e47129dd3504189fa1c7225010d08"
+                "reference": "da3fd972d6bafd628114f7e7e036f45944b62e9c"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/phpDocumentor/ReflectionDocBlock/zipball/94fd0001232e47129dd3504189fa1c7225010d08",
-                "reference": "94fd0001232e47129dd3504189fa1c7225010d08",
+                "url": "https://api.github.com/repos/phpDocumentor/ReflectionDocBlock/zipball/da3fd972d6bafd628114f7e7e036f45944b62e9c",
+                "reference": "da3fd972d6bafd628114f7e7e036f45944b62e9c",
                 "shasum": ""
             },
             "require": {
                 "php": "^7.0",
-                "phpdocumentor/reflection-common": "^1.0.0",
-                "phpdocumentor/type-resolver": "^0.4.0",
+                "phpdocumentor/reflection-common": "^1.0.0 || ^2.0.0",
+                "phpdocumentor/type-resolver": "~0.4 || ^1.0.0",
                 "webmozart/assert": "^1.0"
             },
             "require-dev": {
-                "doctrine/instantiator": "~1.0.5",
+                "doctrine/instantiator": "^1.0.5",
                 "mockery/mockery": "^1.0",
+                "phpdocumentor/type-resolver": "0.4.*",
                 "phpunit/phpunit": "^6.4"
             },
             "type": "library",
@@ -992,41 +1429,40 @@
                 }
             ],
             "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"
+            "time": "2019-12-28T18:55:12+00:00"
         },
         {
             "name": "phpdocumentor/type-resolver",
-            "version": "0.4.0",
+            "version": "1.0.1",
             "source": {
                 "type": "git",
                 "url": "https://github.com/phpDocumentor/TypeResolver.git",
-                "reference": "9c977708995954784726e25d0cd1dddf4e65b0f7"
+                "reference": "2e32a6d48972b2c1976ed5d8967145b6cec4a4a9"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/phpDocumentor/TypeResolver/zipball/9c977708995954784726e25d0cd1dddf4e65b0f7",
-                "reference": "9c977708995954784726e25d0cd1dddf4e65b0f7",
+                "url": "https://api.github.com/repos/phpDocumentor/TypeResolver/zipball/2e32a6d48972b2c1976ed5d8967145b6cec4a4a9",
+                "reference": "2e32a6d48972b2c1976ed5d8967145b6cec4a4a9",
                 "shasum": ""
             },
             "require": {
-                "php": "^5.5 || ^7.0",
-                "phpdocumentor/reflection-common": "^1.0"
+                "php": "^7.1",
+                "phpdocumentor/reflection-common": "^2.0"
             },
             "require-dev": {
-                "mockery/mockery": "^0.9.4",
-                "phpunit/phpunit": "^5.2||^4.8.24"
+                "ext-tokenizer": "^7.1",
+                "mockery/mockery": "~1",
+                "phpunit/phpunit": "^7.0"
             },
             "type": "library",
             "extra": {
                 "branch-alias": {
-                    "dev-master": "1.0.x-dev"
+                    "dev-master": "1.x-dev"
                 }
             },
             "autoload": {
                 "psr-4": {
-                    "phpDocumentor\\Reflection\\": [
-                        "src/"
-                    ]
+                    "phpDocumentor\\Reflection\\": "src"
                 }
             },
             "notification-url": "https://packagist.org/downloads/",
@@ -1039,42 +1475,43 @@
                     "email": "me@mikevanriel.com"
                 }
             ],
-            "time": "2017-07-14T14:27:02+00:00"
+            "description": "A PSR-5 based resolver of Class names, Types and Structural Element Names",
+            "time": "2019-08-22T18:11:29+00:00"
         },
         {
             "name": "phpspec/prophecy",
-            "version": "1.8.0",
+            "version": "v1.10.3",
             "source": {
                 "type": "git",
                 "url": "https://github.com/phpspec/prophecy.git",
-                "reference": "4ba436b55987b4bf311cb7c6ba82aa528aac0a06"
+                "reference": "451c3cd1418cf640de218914901e51b064abb093"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/phpspec/prophecy/zipball/4ba436b55987b4bf311cb7c6ba82aa528aac0a06",
-                "reference": "4ba436b55987b4bf311cb7c6ba82aa528aac0a06",
+                "url": "https://api.github.com/repos/phpspec/prophecy/zipball/451c3cd1418cf640de218914901e51b064abb093",
+                "reference": "451c3cd1418cf640de218914901e51b064abb093",
                 "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"
+                "phpdocumentor/reflection-docblock": "^2.0|^3.0.2|^4.0|^5.0",
+                "sebastian/comparator": "^1.2.3|^2.0|^3.0|^4.0",
+                "sebastian/recursion-context": "^1.0|^2.0|^3.0|^4.0"
             },
             "require-dev": {
-                "phpspec/phpspec": "^2.5|^3.2",
+                "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"
+                    "dev-master": "1.10.x-dev"
                 }
             },
             "autoload": {
-                "psr-0": {
-                    "Prophecy\\": "src/"
+                "psr-4": {
+                    "Prophecy\\": "src/Prophecy"
                 }
             },
             "notification-url": "https://packagist.org/downloads/",
@@ -1102,7 +1539,7 @@
                 "spy",
                 "stub"
             ],
-            "time": "2018-08-05T17:53:17+00:00"
+            "time": "2020-03-05T15:02:03+00:00"
         },
         {
             "name": "phpunit/php-code-coverage",
@@ -1351,20 +1788,21 @@
             "keywords": [
                 "tokenizer"
             ],
+            "abandoned": true,
             "time": "2017-11-27T05:48:46+00:00"
         },
         {
             "name": "phpunit/phpunit",
-            "version": "6.5.13",
+            "version": "6.5.14",
             "source": {
                 "type": "git",
                 "url": "https://github.com/sebastianbergmann/phpunit.git",
-                "reference": "0973426fb012359b2f18d3bd1e90ef1172839693"
+                "reference": "bac23fe7ff13dbdb461481f706f0e9fe746334b7"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/0973426fb012359b2f18d3bd1e90ef1172839693",
-                "reference": "0973426fb012359b2f18d3bd1e90ef1172839693",
+                "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/bac23fe7ff13dbdb461481f706f0e9fe746334b7",
+                "reference": "bac23fe7ff13dbdb461481f706f0e9fe746334b7",
                 "shasum": ""
             },
             "require": {
@@ -1435,7 +1873,7 @@
                 "testing",
                 "xunit"
             ],
-            "time": "2018-09-08T15:10:43+00:00"
+            "time": "2019-02-01T05:22:47+00:00"
         },
         {
             "name": "phpunit/phpunit-mock-objects",
@@ -1494,6 +1932,7 @@
                 "mock",
                 "xunit"
             ],
+            "abandoned": true,
             "time": "2018-08-09T05:50:03+00:00"
         },
         {
@@ -1709,16 +2148,16 @@
         },
         {
             "name": "sebastian/exporter",
-            "version": "3.1.0",
+            "version": "3.1.2",
             "source": {
                 "type": "git",
                 "url": "https://github.com/sebastianbergmann/exporter.git",
-                "reference": "234199f4528de6d12aaa58b612e98f7d36adb937"
+                "reference": "68609e1261d215ea5b21b7987539cbfbe156ec3e"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/234199f4528de6d12aaa58b612e98f7d36adb937",
-                "reference": "234199f4528de6d12aaa58b612e98f7d36adb937",
+                "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/68609e1261d215ea5b21b7987539cbfbe156ec3e",
+                "reference": "68609e1261d215ea5b21b7987539cbfbe156ec3e",
                 "shasum": ""
             },
             "require": {
@@ -1745,6 +2184,10 @@
                 "BSD-3-Clause"
             ],
             "authors": [
+                {
+                    "name": "Sebastian Bergmann",
+                    "email": "sebastian@phpunit.de"
+                },
                 {
                     "name": "Jeff Welch",
                     "email": "whatthejeff@gmail.com"
@@ -1753,17 +2196,13 @@
                     "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"
+                },
+                {
+                    "name": "Bernhard Schussek",
+                    "email": "bschussek@gmail.com"
                 }
             ],
             "description": "Provides the functionality to export PHP variables for visualization",
@@ -1772,7 +2211,7 @@
                 "export",
                 "exporter"
             ],
-            "time": "2017-04-03T13:19:02+00:00"
+            "time": "2019-09-14T09:02:43+00:00"
         },
         {
             "name": "sebastian/global-state",
@@ -2135,31 +2574,32 @@
         },
         {
             "name": "symfony/config",
-            "version": "v4.2.2",
+            "version": "v4.4.15",
             "source": {
                 "type": "git",
                 "url": "https://github.com/symfony/config.git",
-                "reference": "a7a7d0a0244cfc82f040729ccf769e6cf55a78fb"
+                "reference": "7c5a1002178a612787c291a4f515f87b19176b61"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/symfony/config/zipball/a7a7d0a0244cfc82f040729ccf769e6cf55a78fb",
-                "reference": "a7a7d0a0244cfc82f040729ccf769e6cf55a78fb",
+                "url": "https://api.github.com/repos/symfony/config/zipball/7c5a1002178a612787c291a4f515f87b19176b61",
+                "reference": "7c5a1002178a612787c291a4f515f87b19176b61",
                 "shasum": ""
             },
             "require": {
-                "php": "^7.1.3",
-                "symfony/filesystem": "~3.4|~4.0",
+                "php": ">=7.1.3",
+                "symfony/filesystem": "^3.4|^4.0|^5.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"
+                "symfony/event-dispatcher": "^3.4|^4.0|^5.0",
+                "symfony/finder": "^3.4|^4.0|^5.0",
+                "symfony/messenger": "^4.1|^5.0",
+                "symfony/service-contracts": "^1.1|^2",
+                "symfony/yaml": "^3.4|^4.0|^5.0"
             },
             "suggest": {
                 "symfony/yaml": "To use the yaml reference dumper"
@@ -2167,7 +2607,7 @@
             "type": "library",
             "extra": {
                 "branch-alias": {
-                    "dev-master": "4.2-dev"
+                    "dev-master": "4.4-dev"
                 }
             },
             "autoload": {
@@ -2194,30 +2634,44 @@
             ],
             "description": "Symfony Config Component",
             "homepage": "https://symfony.com",
-            "time": "2019-01-03T09:07:35+00:00"
+            "funding": [
+                {
+                    "url": "https://symfony.com/sponsor",
+                    "type": "custom"
+                },
+                {
+                    "url": "https://github.com/fabpot",
+                    "type": "github"
+                },
+                {
+                    "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+                    "type": "tidelift"
+                }
+            ],
+            "time": "2020-10-02T07:34:48+00:00"
         },
         {
             "name": "symfony/filesystem",
-            "version": "v4.2.2",
+            "version": "v4.4.15",
             "source": {
                 "type": "git",
                 "url": "https://github.com/symfony/filesystem.git",
-                "reference": "c2ffd9a93f2d6c5be2f68a0aa7953cc229f871f8"
+                "reference": "ebc51494739d3b081ea543ed7c462fa73a4f74db"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/symfony/filesystem/zipball/c2ffd9a93f2d6c5be2f68a0aa7953cc229f871f8",
-                "reference": "c2ffd9a93f2d6c5be2f68a0aa7953cc229f871f8",
+                "url": "https://api.github.com/repos/symfony/filesystem/zipball/ebc51494739d3b081ea543ed7c462fa73a4f74db",
+                "reference": "ebc51494739d3b081ea543ed7c462fa73a4f74db",
                 "shasum": ""
             },
             "require": {
-                "php": "^7.1.3",
+                "php": ">=7.1.3",
                 "symfony/polyfill-ctype": "~1.8"
             },
             "type": "library",
             "extra": {
                 "branch-alias": {
-                    "dev-master": "4.2-dev"
+                    "dev-master": "4.4-dev"
                 }
             },
             "autoload": {
@@ -2244,20 +2698,34 @@
             ],
             "description": "Symfony Filesystem Component",
             "homepage": "https://symfony.com",
-            "time": "2019-01-03T09:07:35+00:00"
+            "funding": [
+                {
+                    "url": "https://symfony.com/sponsor",
+                    "type": "custom"
+                },
+                {
+                    "url": "https://github.com/fabpot",
+                    "type": "github"
+                },
+                {
+                    "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+                    "type": "tidelift"
+                }
+            ],
+            "time": "2020-09-27T13:54:16+00:00"
         },
         {
             "name": "symfony/polyfill-ctype",
-            "version": "v1.10.0",
+            "version": "v1.18.1",
             "source": {
                 "type": "git",
                 "url": "https://github.com/symfony/polyfill-ctype.git",
-                "reference": "e3d826245268269cd66f8326bd8bc066687b4a19"
+                "reference": "1c302646f6efc070cd46856e600e5e0684d6b454"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/e3d826245268269cd66f8326bd8bc066687b4a19",
-                "reference": "e3d826245268269cd66f8326bd8bc066687b4a19",
+                "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/1c302646f6efc070cd46856e600e5e0684d6b454",
+                "reference": "1c302646f6efc070cd46856e600e5e0684d6b454",
                 "shasum": ""
             },
             "require": {
@@ -2269,7 +2737,11 @@
             "type": "library",
             "extra": {
                 "branch-alias": {
-                    "dev-master": "1.9-dev"
+                    "dev-master": "1.18-dev"
+                },
+                "thanks": {
+                    "name": "symfony/polyfill",
+                    "url": "https://github.com/symfony/polyfill"
                 }
             },
             "autoload": {
@@ -2285,13 +2757,13 @@
                 "MIT"
             ],
             "authors": [
-                {
-                    "name": "Symfony Community",
-                    "homepage": "https://symfony.com/contributors"
-                },
                 {
                     "name": "Gert de Pagter",
                     "email": "BackEndTea@gmail.com"
+                },
+                {
+                    "name": "Symfony Community",
+                    "homepage": "https://symfony.com/contributors"
                 }
             ],
             "description": "Symfony polyfill for ctype functions",
@@ -2302,30 +2774,44 @@
                 "polyfill",
                 "portable"
             ],
-            "time": "2018-08-06T14:22:27+00:00"
+            "funding": [
+                {
+                    "url": "https://symfony.com/sponsor",
+                    "type": "custom"
+                },
+                {
+                    "url": "https://github.com/fabpot",
+                    "type": "github"
+                },
+                {
+                    "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+                    "type": "tidelift"
+                }
+            ],
+            "time": "2020-07-14T12:35:20+00:00"
         },
         {
             "name": "symfony/stopwatch",
-            "version": "v4.2.2",
+            "version": "v4.4.15",
             "source": {
                 "type": "git",
                 "url": "https://github.com/symfony/stopwatch.git",
-                "reference": "af62b35760fc92c8dbdce659b4eebdfe0e6a0472"
+                "reference": "6f89e19772cf61b3c65bab329fe0e318259fbd91"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/symfony/stopwatch/zipball/af62b35760fc92c8dbdce659b4eebdfe0e6a0472",
-                "reference": "af62b35760fc92c8dbdce659b4eebdfe0e6a0472",
+                "url": "https://api.github.com/repos/symfony/stopwatch/zipball/6f89e19772cf61b3c65bab329fe0e318259fbd91",
+                "reference": "6f89e19772cf61b3c65bab329fe0e318259fbd91",
                 "shasum": ""
             },
             "require": {
-                "php": "^7.1.3",
-                "symfony/contracts": "^1.0"
+                "php": ">=7.1.3",
+                "symfony/service-contracts": "^1.0|^2"
             },
             "type": "library",
             "extra": {
                 "branch-alias": {
-                    "dev-master": "4.2-dev"
+                    "dev-master": "4.4-dev"
                 }
             },
             "autoload": {
@@ -2352,31 +2838,45 @@
             ],
             "description": "Symfony Stopwatch Component",
             "homepage": "https://symfony.com",
-            "time": "2019-01-03T09:07:35+00:00"
+            "funding": [
+                {
+                    "url": "https://symfony.com/sponsor",
+                    "type": "custom"
+                },
+                {
+                    "url": "https://github.com/fabpot",
+                    "type": "github"
+                },
+                {
+                    "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+                    "type": "tidelift"
+                }
+            ],
+            "time": "2020-09-02T16:08:58+00:00"
         },
         {
             "name": "symfony/yaml",
-            "version": "v4.2.2",
+            "version": "v4.4.15",
             "source": {
                 "type": "git",
                 "url": "https://github.com/symfony/yaml.git",
-                "reference": "d0aa6c0ea484087927b49fd513383a7d36190ca6"
+                "reference": "c7885964b1eceb70b0981556d0a9b01d2d97c8d1"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/symfony/yaml/zipball/d0aa6c0ea484087927b49fd513383a7d36190ca6",
-                "reference": "d0aa6c0ea484087927b49fd513383a7d36190ca6",
+                "url": "https://api.github.com/repos/symfony/yaml/zipball/c7885964b1eceb70b0981556d0a9b01d2d97c8d1",
+                "reference": "c7885964b1eceb70b0981556d0a9b01d2d97c8d1",
                 "shasum": ""
             },
             "require": {
-                "php": "^7.1.3",
+                "php": ">=7.1.3",
                 "symfony/polyfill-ctype": "~1.8"
             },
             "conflict": {
                 "symfony/console": "<3.4"
             },
             "require-dev": {
-                "symfony/console": "~3.4|~4.0"
+                "symfony/console": "^3.4|^4.0|^5.0"
             },
             "suggest": {
                 "symfony/console": "For validating YAML files using the lint command"
@@ -2384,7 +2884,7 @@
             "type": "library",
             "extra": {
                 "branch-alias": {
-                    "dev-master": "4.2-dev"
+                    "dev-master": "4.4-dev"
                 }
             },
             "autoload": {
@@ -2411,20 +2911,34 @@
             ],
             "description": "Symfony Yaml Component",
             "homepage": "https://symfony.com",
-            "time": "2019-01-03T09:07:35+00:00"
+            "funding": [
+                {
+                    "url": "https://symfony.com/sponsor",
+                    "type": "custom"
+                },
+                {
+                    "url": "https://github.com/fabpot",
+                    "type": "github"
+                },
+                {
+                    "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+                    "type": "tidelift"
+                }
+            ],
+            "time": "2020-09-27T03:36:23+00:00"
         },
         {
             "name": "theseer/tokenizer",
-            "version": "1.1.0",
+            "version": "1.1.3",
             "source": {
                 "type": "git",
                 "url": "https://github.com/theseer/tokenizer.git",
-                "reference": "cb2f008f3f05af2893a87208fe6a6c4985483f8b"
+                "reference": "11336f6f84e16a720dae9d8e6ed5019efa85a0f9"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/theseer/tokenizer/zipball/cb2f008f3f05af2893a87208fe6a6c4985483f8b",
-                "reference": "cb2f008f3f05af2893a87208fe6a6c4985483f8b",
+                "url": "https://api.github.com/repos/theseer/tokenizer/zipball/11336f6f84e16a720dae9d8e6ed5019efa85a0f9",
+                "reference": "11336f6f84e16a720dae9d8e6ed5019efa85a0f9",
                 "shasum": ""
             },
             "require": {
@@ -2451,36 +2965,34 @@
                 }
             ],
             "description": "A small library for converting tokenized PHP source code into XML and potentially other formats",
-            "time": "2017-04-07T12:08:54+00:00"
+            "time": "2019-06-13T22:48:21+00:00"
         },
         {
             "name": "webmozart/assert",
-            "version": "1.4.0",
+            "version": "1.9.1",
             "source": {
                 "type": "git",
                 "url": "https://github.com/webmozart/assert.git",
-                "reference": "83e253c8e0be5b0257b881e1827274667c5c17a9"
+                "reference": "bafc69caeb4d49c39fd0779086c03a3738cbb389"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/webmozart/assert/zipball/83e253c8e0be5b0257b881e1827274667c5c17a9",
-                "reference": "83e253c8e0be5b0257b881e1827274667c5c17a9",
+                "url": "https://api.github.com/repos/webmozart/assert/zipball/bafc69caeb4d49c39fd0779086c03a3738cbb389",
+                "reference": "bafc69caeb4d49c39fd0779086c03a3738cbb389",
                 "shasum": ""
             },
             "require": {
-                "php": "^5.3.3 || ^7.0",
+                "php": "^5.3.3 || ^7.0 || ^8.0",
                 "symfony/polyfill-ctype": "^1.8"
             },
+            "conflict": {
+                "phpstan/phpstan": "<0.12.20",
+                "vimeo/psalm": "<3.9.1"
+            },
             "require-dev": {
-                "phpunit/phpunit": "^4.6",
-                "sebastian/version": "^1.0.1"
+                "phpunit/phpunit": "^4.8.36 || ^7.5.13"
             },
             "type": "library",
-            "extra": {
-                "branch-alias": {
-                    "dev-master": "1.3-dev"
-                }
-            },
             "autoload": {
                 "psr-4": {
                     "Webmozart\\Assert\\": "src/"
@@ -2502,7 +3014,7 @@
                 "check",
                 "validate"
             ],
-            "time": "2018-12-25T11:19:39+00:00"
+            "time": "2020-07-08T17:02:28+00:00"
         }
     ],
     "aliases": [],
@@ -2516,5 +3028,6 @@
     "platform-dev": [],
     "platform-overrides": {
         "php": "7.1.3"
-    }
+    },
+    "plugin-api-version": "1.1.0"
 }
diff --git a/vendor/consolidation/annotated-command/CHANGELOG.md b/vendor/consolidation/annotated-command/CHANGELOG.md
index d7dbfdd59e..f342164401 100644
--- a/vendor/consolidation/annotated-command/CHANGELOG.md
+++ b/vendor/consolidation/annotated-command/CHANGELOG.md
@@ -1,5 +1,9 @@
 # Change Log
 
+### 2.12.1 - 10 Oct 2020
+
+- Allow symfony/finder 5 (#213)
+
 ### 2.12.0 - 8 Mar 2019
 
 - Allow annotated args and options to specify their default values in their descriptions. (#186)
diff --git a/vendor/consolidation/annotated-command/LICENSE b/vendor/consolidation/annotated-command/LICENSE
index 7c4d73fd8f..8bea4b7726 100644
--- a/vendor/consolidation/annotated-command/LICENSE
+++ b/vendor/consolidation/annotated-command/LICENSE
@@ -1,6 +1,6 @@
 The MIT License (MIT)
 
-Copyright (c) 2016-2019 Consolidation Org Developers
+Copyright (c) 2016-2020 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:
@@ -12,11 +12,11 @@ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLI
 DEPENDENCY LICENSES:
 
 Name                             Version  License
-consolidation/output-formatters  3.4.0    MIT
+consolidation/output-formatters  3.5.1    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
+psr/log                          1.1.3    MIT
+symfony/console                  v2.8.52  MIT
+symfony/debug                    v2.8.52  MIT
+symfony/event-dispatcher         v2.8.52  MIT
+symfony/finder                   v2.8.52  MIT
+symfony/polyfill-mbstring        v1.18.1  MIT
\ No newline at end of file
diff --git a/vendor/consolidation/annotated-command/README.md b/vendor/consolidation/annotated-command/README.md
index efcba14b44..dc1e378f68 100644
--- a/vendor/consolidation/annotated-command/README.md
+++ b/vendor/consolidation/annotated-command/README.md
@@ -131,7 +131,7 @@ There are ten types of hooks in the command processing request flow:
 - [Command](#command-hook)
    - @pre-command
    - @command
-   - @command-init
+   - @post-command
 - [Process](#process-hook)
    - @pre-process
    - @process
diff --git a/vendor/consolidation/annotated-command/composer.json b/vendor/consolidation/annotated-command/composer.json
index 27e7f7e6cf..3181527ed3 100644
--- a/vendor/consolidation/annotated-command/composer.json
+++ b/vendor/consolidation/annotated-command/composer.json
@@ -20,11 +20,11 @@
     },
     "require": {
         "php": ">=5.4.5",
-        "consolidation/output-formatters": "^3.4",
+        "consolidation/output-formatters": "^3.5.1",
         "psr/log": "^1",
         "symfony/console": "^2.8|^3|^4",
         "symfony/event-dispatcher": "^2.5|^3|^4",
-        "symfony/finder": "^2.5|^3|^4"
+        "symfony/finder": "^2.5|^3|^4|^5"
     },
     "require-dev": {
         "phpunit/phpunit": "^6",
@@ -55,6 +55,16 @@
     },
     "extra": {
         "scenarios": {
+            "finder5": {
+                "require": {
+                    "symfony/finder": "^5"
+                },
+                "config": {
+                    "platform": {
+                        "php": "7.2.5"
+                    }
+                }                
+            },
             "symfony4": {
                 "require": {
                     "symfony/console": "^4.0"
diff --git a/vendor/consolidation/annotated-command/composer.lock b/vendor/consolidation/annotated-command/composer.lock
index 6cac1772cd..2f4632ea7d 100644
--- a/vendor/consolidation/annotated-command/composer.lock
+++ b/vendor/consolidation/annotated-command/composer.lock
@@ -4,34 +4,33 @@
         "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",
         "This file is @generated automatically"
     ],
-    "content-hash": "24232be7f7d45a8b43acde7b26f7f144",
+    "content-hash": "254144594976df901ad0eaa5e3b04d3a",
     "packages": [
         {
             "name": "consolidation/output-formatters",
-            "version": "3.4.0",
+            "version": "3.5.1",
             "source": {
                 "type": "git",
                 "url": "https://github.com/consolidation/output-formatters.git",
-                "reference": "a942680232094c4a5b21c0b7e54c20cce623ae19"
+                "reference": "0d38f13051ef05c223a2bb8e962d668e24785196"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/consolidation/output-formatters/zipball/a942680232094c4a5b21c0b7e54c20cce623ae19",
-                "reference": "a942680232094c4a5b21c0b7e54c20cce623ae19",
+                "url": "https://api.github.com/repos/consolidation/output-formatters/zipball/0d38f13051ef05c223a2bb8e962d668e24785196",
+                "reference": "0d38f13051ef05c223a2bb8e962d668e24785196",
                 "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"
+                "symfony/finder": "^2.5|^3|^4|^5"
             },
             "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"
             },
@@ -40,6 +39,62 @@
             },
             "type": "library",
             "extra": {
+                "scenarios": {
+                    "finder5": {
+                        "require": {
+                            "symfony/finder": "^5"
+                        },
+                        "config": {
+                            "platform": {
+                                "php": "7.2.5"
+                            }
+                        }
+                    },
+                    "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"
                 }
@@ -60,7 +115,7 @@
                 }
             ],
             "description": "Format text by applying transformations provided by plug-in formatters.",
-            "time": "2018-10-19T22:35:38+00:00"
+            "time": "2020-10-11T04:15:32+00:00"
         },
         {
             "name": "dflydev/dot-access-data",
@@ -123,16 +178,16 @@
         },
         {
             "name": "psr/log",
-            "version": "1.1.0",
+            "version": "1.1.3",
             "source": {
                 "type": "git",
                 "url": "https://github.com/php-fig/log.git",
-                "reference": "6c001f1daafa3a3ac1d8ff69ee4db8e799a654dd"
+                "reference": "0f73288fd15629204f9d42b7055f72dacbe811fc"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/php-fig/log/zipball/6c001f1daafa3a3ac1d8ff69ee4db8e799a654dd",
-                "reference": "6c001f1daafa3a3ac1d8ff69ee4db8e799a654dd",
+                "url": "https://api.github.com/repos/php-fig/log/zipball/0f73288fd15629204f9d42b7055f72dacbe811fc",
+                "reference": "0f73288fd15629204f9d42b7055f72dacbe811fc",
                 "shasum": ""
             },
             "require": {
@@ -141,7 +196,7 @@
             "type": "library",
             "extra": {
                 "branch-alias": {
-                    "dev-master": "1.0.x-dev"
+                    "dev-master": "1.1.x-dev"
                 }
             },
             "autoload": {
@@ -166,20 +221,20 @@
                 "psr",
                 "psr-3"
             ],
-            "time": "2018-11-20T15:27:04+00:00"
+            "time": "2020-03-23T09:12:05+00:00"
         },
         {
             "name": "symfony/console",
-            "version": "v3.4.21",
+            "version": "v3.4.45",
             "source": {
                 "type": "git",
                 "url": "https://github.com/symfony/console.git",
-                "reference": "a700b874d3692bc8342199adfb6d3b99f62cc61a"
+                "reference": "b28996bc0a3b08914b2a8609163ec35b36b30685"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/symfony/console/zipball/a700b874d3692bc8342199adfb6d3b99f62cc61a",
-                "reference": "a700b874d3692bc8342199adfb6d3b99f62cc61a",
+                "url": "https://api.github.com/repos/symfony/console/zipball/b28996bc0a3b08914b2a8609163ec35b36b30685",
+                "reference": "b28996bc0a3b08914b2a8609163ec35b36b30685",
                 "shasum": ""
             },
             "require": {
@@ -191,6 +246,9 @@
                 "symfony/dependency-injection": "<3.4",
                 "symfony/process": "<3.3"
             },
+            "provide": {
+                "psr/log-implementation": "1.0"
+            },
             "require-dev": {
                 "psr/log": "~1.0",
                 "symfony/config": "~3.3|~4.0",
@@ -200,7 +258,7 @@
                 "symfony/process": "~3.3|~4.0"
             },
             "suggest": {
-                "psr/log-implementation": "For using the console logger",
+                "psr/log": "For using the console logger",
                 "symfony/event-dispatcher": "",
                 "symfony/lock": "",
                 "symfony/process": ""
@@ -235,20 +293,34 @@
             ],
             "description": "Symfony Console Component",
             "homepage": "https://symfony.com",
-            "time": "2019-01-04T04:42:43+00:00"
+            "funding": [
+                {
+                    "url": "https://symfony.com/sponsor",
+                    "type": "custom"
+                },
+                {
+                    "url": "https://github.com/fabpot",
+                    "type": "github"
+                },
+                {
+                    "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+                    "type": "tidelift"
+                }
+            ],
+            "time": "2020-09-09T05:09:37+00:00"
         },
         {
             "name": "symfony/debug",
-            "version": "v3.4.21",
+            "version": "v3.4.45",
             "source": {
                 "type": "git",
                 "url": "https://github.com/symfony/debug.git",
-                "reference": "26d7f23b9bd0b93bee5583e4d6ca5cb1ab31b186"
+                "reference": "9109e4414e684d0b75276ae203883467476d25d0"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/symfony/debug/zipball/26d7f23b9bd0b93bee5583e4d6ca5cb1ab31b186",
-                "reference": "26d7f23b9bd0b93bee5583e4d6ca5cb1ab31b186",
+                "url": "https://api.github.com/repos/symfony/debug/zipball/9109e4414e684d0b75276ae203883467476d25d0",
+                "reference": "9109e4414e684d0b75276ae203883467476d25d0",
                 "shasum": ""
             },
             "require": {
@@ -291,20 +363,34 @@
             ],
             "description": "Symfony Debug Component",
             "homepage": "https://symfony.com",
-            "time": "2019-01-01T13:45:19+00:00"
+            "funding": [
+                {
+                    "url": "https://symfony.com/sponsor",
+                    "type": "custom"
+                },
+                {
+                    "url": "https://github.com/fabpot",
+                    "type": "github"
+                },
+                {
+                    "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+                    "type": "tidelift"
+                }
+            ],
+            "time": "2020-09-08T22:19:14+00:00"
         },
         {
             "name": "symfony/event-dispatcher",
-            "version": "v3.4.21",
+            "version": "v3.4.45",
             "source": {
                 "type": "git",
                 "url": "https://github.com/symfony/event-dispatcher.git",
-                "reference": "d1cdd46c53c264a2bd42505bd0e8ce21423bd0e2"
+                "reference": "0bb9ea263b39fce3a12ac9f78ef576bdd80dacb8"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/d1cdd46c53c264a2bd42505bd0e8ce21423bd0e2",
-                "reference": "d1cdd46c53c264a2bd42505bd0e8ce21423bd0e2",
+                "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/0bb9ea263b39fce3a12ac9f78ef576bdd80dacb8",
+                "reference": "0bb9ea263b39fce3a12ac9f78ef576bdd80dacb8",
                 "shasum": ""
             },
             "require": {
@@ -316,6 +402,7 @@
             "require-dev": {
                 "psr/log": "~1.0",
                 "symfony/config": "~2.8|~3.0|~4.0",
+                "symfony/debug": "~3.4|~4.4",
                 "symfony/dependency-injection": "~3.3|~4.0",
                 "symfony/expression-language": "~2.8|~3.0|~4.0",
                 "symfony/stopwatch": "~2.8|~3.0|~4.0"
@@ -354,20 +441,34 @@
             ],
             "description": "Symfony EventDispatcher Component",
             "homepage": "https://symfony.com",
-            "time": "2019-01-01T18:08:36+00:00"
+            "funding": [
+                {
+                    "url": "https://symfony.com/sponsor",
+                    "type": "custom"
+                },
+                {
+                    "url": "https://github.com/fabpot",
+                    "type": "github"
+                },
+                {
+                    "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+                    "type": "tidelift"
+                }
+            ],
+            "time": "2020-09-18T12:06:50+00:00"
         },
         {
             "name": "symfony/finder",
-            "version": "v3.4.21",
+            "version": "v3.4.45",
             "source": {
                 "type": "git",
                 "url": "https://github.com/symfony/finder.git",
-                "reference": "3f2a2ab6315dd7682d4c16dcae1e7b95c8b8555e"
+                "reference": "52140652ed31cee3dabd0c481b5577201fa769b4"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/symfony/finder/zipball/3f2a2ab6315dd7682d4c16dcae1e7b95c8b8555e",
-                "reference": "3f2a2ab6315dd7682d4c16dcae1e7b95c8b8555e",
+                "url": "https://api.github.com/repos/symfony/finder/zipball/52140652ed31cee3dabd0c481b5577201fa769b4",
+                "reference": "52140652ed31cee3dabd0c481b5577201fa769b4",
                 "shasum": ""
             },
             "require": {
@@ -403,20 +504,34 @@
             ],
             "description": "Symfony Finder Component",
             "homepage": "https://symfony.com",
-            "time": "2019-01-01T13:45:19+00:00"
+            "funding": [
+                {
+                    "url": "https://symfony.com/sponsor",
+                    "type": "custom"
+                },
+                {
+                    "url": "https://github.com/fabpot",
+                    "type": "github"
+                },
+                {
+                    "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+                    "type": "tidelift"
+                }
+            ],
+            "time": "2020-09-02T16:06:40+00:00"
         },
         {
             "name": "symfony/polyfill-mbstring",
-            "version": "v1.10.0",
+            "version": "v1.18.1",
             "source": {
                 "type": "git",
                 "url": "https://github.com/symfony/polyfill-mbstring.git",
-                "reference": "c79c051f5b3a46be09205c73b80b346e4153e494"
+                "reference": "a6977d63bf9a0ad4c65cd352709e230876f9904a"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/c79c051f5b3a46be09205c73b80b346e4153e494",
-                "reference": "c79c051f5b3a46be09205c73b80b346e4153e494",
+                "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/a6977d63bf9a0ad4c65cd352709e230876f9904a",
+                "reference": "a6977d63bf9a0ad4c65cd352709e230876f9904a",
                 "shasum": ""
             },
             "require": {
@@ -428,7 +543,11 @@
             "type": "library",
             "extra": {
                 "branch-alias": {
-                    "dev-master": "1.9-dev"
+                    "dev-master": "1.18-dev"
+                },
+                "thanks": {
+                    "name": "symfony/polyfill",
+                    "url": "https://github.com/symfony/polyfill"
                 }
             },
             "autoload": {
@@ -462,7 +581,21 @@
                 "portable",
                 "shim"
             ],
-            "time": "2018-09-21T13:07:52+00:00"
+            "funding": [
+                {
+                    "url": "https://symfony.com/sponsor",
+                    "type": "custom"
+                },
+                {
+                    "url": "https://github.com/fabpot",
+                    "type": "github"
+                },
+                {
+                    "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+                    "type": "tidelift"
+                }
+            ],
+            "time": "2020-07-14T12:35:20+00:00"
         }
     ],
     "packages-dev": [
@@ -522,27 +655,27 @@
         },
         {
             "name": "g1a/composer-test-scenarios",
-            "version": "3.0.1",
+            "version": "3.2.0",
             "source": {
                 "type": "git",
                 "url": "https://github.com/g1a/composer-test-scenarios.git",
-                "reference": "224531e20d13a07942a989a70759f726cd2df9a1"
+                "reference": "e7394206d845fd593d325440507fb940bef8cb62"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/g1a/composer-test-scenarios/zipball/224531e20d13a07942a989a70759f726cd2df9a1",
-                "reference": "224531e20d13a07942a989a70759f726cd2df9a1",
+                "url": "https://api.github.com/repos/g1a/composer-test-scenarios/zipball/e7394206d845fd593d325440507fb940bef8cb62",
+                "reference": "e7394206d845fd593d325440507fb940bef8cb62",
                 "shasum": ""
             },
             "require": {
-                "composer-plugin-api": "^1.0.0",
+                "composer-plugin-api": "^1.0.0 || ^2.0.0",
                 "php": ">=5.4"
             },
             "require-dev": {
-                "composer/composer": "^1.7",
+                "composer/composer": "^1.10.6 || ^2.0@rc",
                 "php-coveralls/php-coveralls": "^1.0",
                 "phpunit/phpunit": "^4.8.36|^6",
-                "squizlabs/php_codesniffer": "^2.8"
+                "squizlabs/php_codesniffer": "^3.5"
             },
             "bin": [
                 "scripts/dependency-licenses"
@@ -551,7 +684,7 @@
             "extra": {
                 "class": "ComposerTestScenarios\\Plugin",
                 "branch-alias": {
-                    "dev-master": "3.x-dev"
+                    "dev-main": "3.x-dev"
                 }
             },
             "autoload": {
@@ -570,7 +703,7 @@
                 }
             ],
             "description": "Useful scripts for testing multiple sets of Composer dependencies.",
-            "time": "2018-11-27T05:58:39+00:00"
+            "time": "2020-09-28T20:54:35+00:00"
         },
         {
             "name": "guzzle/guzzle",
@@ -929,27 +1062,28 @@
         },
         {
             "name": "phpdocumentor/reflection-docblock",
-            "version": "4.3.0",
+            "version": "4.3.4",
             "source": {
                 "type": "git",
                 "url": "https://github.com/phpDocumentor/ReflectionDocBlock.git",
-                "reference": "94fd0001232e47129dd3504189fa1c7225010d08"
+                "reference": "da3fd972d6bafd628114f7e7e036f45944b62e9c"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/phpDocumentor/ReflectionDocBlock/zipball/94fd0001232e47129dd3504189fa1c7225010d08",
-                "reference": "94fd0001232e47129dd3504189fa1c7225010d08",
+                "url": "https://api.github.com/repos/phpDocumentor/ReflectionDocBlock/zipball/da3fd972d6bafd628114f7e7e036f45944b62e9c",
+                "reference": "da3fd972d6bafd628114f7e7e036f45944b62e9c",
                 "shasum": ""
             },
             "require": {
                 "php": "^7.0",
-                "phpdocumentor/reflection-common": "^1.0.0",
-                "phpdocumentor/type-resolver": "^0.4.0",
+                "phpdocumentor/reflection-common": "^1.0.0 || ^2.0.0",
+                "phpdocumentor/type-resolver": "~0.4 || ^1.0.0",
                 "webmozart/assert": "^1.0"
             },
             "require-dev": {
-                "doctrine/instantiator": "~1.0.5",
+                "doctrine/instantiator": "^1.0.5",
                 "mockery/mockery": "^1.0",
+                "phpdocumentor/type-resolver": "0.4.*",
                 "phpunit/phpunit": "^6.4"
             },
             "type": "library",
@@ -976,29 +1110,29 @@
                 }
             ],
             "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"
+            "time": "2019-12-28T18:55:12+00:00"
         },
         {
             "name": "phpdocumentor/type-resolver",
-            "version": "0.4.0",
+            "version": "0.5.1",
             "source": {
                 "type": "git",
                 "url": "https://github.com/phpDocumentor/TypeResolver.git",
-                "reference": "9c977708995954784726e25d0cd1dddf4e65b0f7"
+                "reference": "cf842904952e64e703800d094cdf34e715a8a3ae"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/phpDocumentor/TypeResolver/zipball/9c977708995954784726e25d0cd1dddf4e65b0f7",
-                "reference": "9c977708995954784726e25d0cd1dddf4e65b0f7",
+                "url": "https://api.github.com/repos/phpDocumentor/TypeResolver/zipball/cf842904952e64e703800d094cdf34e715a8a3ae",
+                "reference": "cf842904952e64e703800d094cdf34e715a8a3ae",
                 "shasum": ""
             },
             "require": {
-                "php": "^5.5 || ^7.0",
+                "php": "^7.0",
                 "phpdocumentor/reflection-common": "^1.0"
             },
             "require-dev": {
-                "mockery/mockery": "^0.9.4",
-                "phpunit/phpunit": "^5.2||^4.8.24"
+                "mockery/mockery": "^1.0",
+                "phpunit/phpunit": "^6.4"
             },
             "type": "library",
             "extra": {
@@ -1008,9 +1142,7 @@
             },
             "autoload": {
                 "psr-4": {
-                    "phpDocumentor\\Reflection\\": [
-                        "src/"
-                    ]
+                    "phpDocumentor\\Reflection\\": "src"
                 }
             },
             "notification-url": "https://packagist.org/downloads/",
@@ -1023,42 +1155,42 @@
                     "email": "me@mikevanriel.com"
                 }
             ],
-            "time": "2017-07-14T14:27:02+00:00"
+            "time": "2017-12-30T13:23:38+00:00"
         },
         {
             "name": "phpspec/prophecy",
-            "version": "1.8.0",
+            "version": "v1.10.3",
             "source": {
                 "type": "git",
                 "url": "https://github.com/phpspec/prophecy.git",
-                "reference": "4ba436b55987b4bf311cb7c6ba82aa528aac0a06"
+                "reference": "451c3cd1418cf640de218914901e51b064abb093"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/phpspec/prophecy/zipball/4ba436b55987b4bf311cb7c6ba82aa528aac0a06",
-                "reference": "4ba436b55987b4bf311cb7c6ba82aa528aac0a06",
+                "url": "https://api.github.com/repos/phpspec/prophecy/zipball/451c3cd1418cf640de218914901e51b064abb093",
+                "reference": "451c3cd1418cf640de218914901e51b064abb093",
                 "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"
+                "phpdocumentor/reflection-docblock": "^2.0|^3.0.2|^4.0|^5.0",
+                "sebastian/comparator": "^1.2.3|^2.0|^3.0|^4.0",
+                "sebastian/recursion-context": "^1.0|^2.0|^3.0|^4.0"
             },
             "require-dev": {
-                "phpspec/phpspec": "^2.5|^3.2",
+                "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"
+                    "dev-master": "1.10.x-dev"
                 }
             },
             "autoload": {
-                "psr-0": {
-                    "Prophecy\\": "src/"
+                "psr-4": {
+                    "Prophecy\\": "src/Prophecy"
                 }
             },
             "notification-url": "https://packagist.org/downloads/",
@@ -1086,7 +1218,7 @@
                 "spy",
                 "stub"
             ],
-            "time": "2018-08-05T17:53:17+00:00"
+            "time": "2020-03-05T15:02:03+00:00"
         },
         {
             "name": "phpunit/php-code-coverage",
@@ -1335,20 +1467,21 @@
             "keywords": [
                 "tokenizer"
             ],
+            "abandoned": true,
             "time": "2017-11-27T05:48:46+00:00"
         },
         {
             "name": "phpunit/phpunit",
-            "version": "6.5.13",
+            "version": "6.5.14",
             "source": {
                 "type": "git",
                 "url": "https://github.com/sebastianbergmann/phpunit.git",
-                "reference": "0973426fb012359b2f18d3bd1e90ef1172839693"
+                "reference": "bac23fe7ff13dbdb461481f706f0e9fe746334b7"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/0973426fb012359b2f18d3bd1e90ef1172839693",
-                "reference": "0973426fb012359b2f18d3bd1e90ef1172839693",
+                "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/bac23fe7ff13dbdb461481f706f0e9fe746334b7",
+                "reference": "bac23fe7ff13dbdb461481f706f0e9fe746334b7",
                 "shasum": ""
             },
             "require": {
@@ -1419,7 +1552,7 @@
                 "testing",
                 "xunit"
             ],
-            "time": "2018-09-08T15:10:43+00:00"
+            "time": "2019-02-01T05:22:47+00:00"
         },
         {
             "name": "phpunit/phpunit-mock-objects",
@@ -1478,6 +1611,7 @@
                 "mock",
                 "xunit"
             ],
+            "abandoned": true,
             "time": "2018-08-09T05:50:03+00:00"
         },
         {
@@ -1693,16 +1827,16 @@
         },
         {
             "name": "sebastian/exporter",
-            "version": "3.1.0",
+            "version": "3.1.2",
             "source": {
                 "type": "git",
                 "url": "https://github.com/sebastianbergmann/exporter.git",
-                "reference": "234199f4528de6d12aaa58b612e98f7d36adb937"
+                "reference": "68609e1261d215ea5b21b7987539cbfbe156ec3e"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/234199f4528de6d12aaa58b612e98f7d36adb937",
-                "reference": "234199f4528de6d12aaa58b612e98f7d36adb937",
+                "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/68609e1261d215ea5b21b7987539cbfbe156ec3e",
+                "reference": "68609e1261d215ea5b21b7987539cbfbe156ec3e",
                 "shasum": ""
             },
             "require": {
@@ -1729,6 +1863,10 @@
                 "BSD-3-Clause"
             ],
             "authors": [
+                {
+                    "name": "Sebastian Bergmann",
+                    "email": "sebastian@phpunit.de"
+                },
                 {
                     "name": "Jeff Welch",
                     "email": "whatthejeff@gmail.com"
@@ -1737,17 +1875,13 @@
                     "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"
+                },
+                {
+                    "name": "Bernhard Schussek",
+                    "email": "bschussek@gmail.com"
                 }
             ],
             "description": "Provides the functionality to export PHP variables for visualization",
@@ -1756,7 +1890,7 @@
                 "export",
                 "exporter"
             ],
-            "time": "2017-04-03T13:19:02+00:00"
+            "time": "2019-09-14T09:02:43+00:00"
         },
         {
             "name": "sebastian/global-state",
@@ -2119,16 +2253,16 @@
         },
         {
             "name": "symfony/config",
-            "version": "v3.4.21",
+            "version": "v3.4.45",
             "source": {
                 "type": "git",
                 "url": "https://github.com/symfony/config.git",
-                "reference": "17c5d8941eb75a03d19bc76a43757738632d87b3"
+                "reference": "d061a451ff6bc170c5454f4ac9b41ad2179e3960"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/symfony/config/zipball/17c5d8941eb75a03d19bc76a43757738632d87b3",
-                "reference": "17c5d8941eb75a03d19bc76a43757738632d87b3",
+                "url": "https://api.github.com/repos/symfony/config/zipball/d061a451ff6bc170c5454f4ac9b41ad2179e3960",
+                "reference": "d061a451ff6bc170c5454f4ac9b41ad2179e3960",
                 "shasum": ""
             },
             "require": {
@@ -2179,20 +2313,34 @@
             ],
             "description": "Symfony Config Component",
             "homepage": "https://symfony.com",
-            "time": "2019-01-01T13:45:19+00:00"
+            "funding": [
+                {
+                    "url": "https://symfony.com/sponsor",
+                    "type": "custom"
+                },
+                {
+                    "url": "https://github.com/fabpot",
+                    "type": "github"
+                },
+                {
+                    "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+                    "type": "tidelift"
+                }
+            ],
+            "time": "2020-09-02T16:06:40+00:00"
         },
         {
             "name": "symfony/filesystem",
-            "version": "v3.4.21",
+            "version": "v3.4.45",
             "source": {
                 "type": "git",
                 "url": "https://github.com/symfony/filesystem.git",
-                "reference": "c24ce3d18ccc9bb9d7e1d6ce9330fcc6061cafde"
+                "reference": "495646f13d051cc5a8f77a68b68313dc854080aa"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/symfony/filesystem/zipball/c24ce3d18ccc9bb9d7e1d6ce9330fcc6061cafde",
-                "reference": "c24ce3d18ccc9bb9d7e1d6ce9330fcc6061cafde",
+                "url": "https://api.github.com/repos/symfony/filesystem/zipball/495646f13d051cc5a8f77a68b68313dc854080aa",
+                "reference": "495646f13d051cc5a8f77a68b68313dc854080aa",
                 "shasum": ""
             },
             "require": {
@@ -2229,20 +2377,34 @@
             ],
             "description": "Symfony Filesystem Component",
             "homepage": "https://symfony.com",
-            "time": "2019-01-01T13:45:19+00:00"
+            "funding": [
+                {
+                    "url": "https://symfony.com/sponsor",
+                    "type": "custom"
+                },
+                {
+                    "url": "https://github.com/fabpot",
+                    "type": "github"
+                },
+                {
+                    "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+                    "type": "tidelift"
+                }
+            ],
+            "time": "2020-09-02T16:06:40+00:00"
         },
         {
             "name": "symfony/polyfill-ctype",
-            "version": "v1.10.0",
+            "version": "v1.18.1",
             "source": {
                 "type": "git",
                 "url": "https://github.com/symfony/polyfill-ctype.git",
-                "reference": "e3d826245268269cd66f8326bd8bc066687b4a19"
+                "reference": "1c302646f6efc070cd46856e600e5e0684d6b454"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/e3d826245268269cd66f8326bd8bc066687b4a19",
-                "reference": "e3d826245268269cd66f8326bd8bc066687b4a19",
+                "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/1c302646f6efc070cd46856e600e5e0684d6b454",
+                "reference": "1c302646f6efc070cd46856e600e5e0684d6b454",
                 "shasum": ""
             },
             "require": {
@@ -2254,7 +2416,11 @@
             "type": "library",
             "extra": {
                 "branch-alias": {
-                    "dev-master": "1.9-dev"
+                    "dev-master": "1.18-dev"
+                },
+                "thanks": {
+                    "name": "symfony/polyfill",
+                    "url": "https://github.com/symfony/polyfill"
                 }
             },
             "autoload": {
@@ -2270,13 +2436,13 @@
                 "MIT"
             ],
             "authors": [
-                {
-                    "name": "Symfony Community",
-                    "homepage": "https://symfony.com/contributors"
-                },
                 {
                     "name": "Gert de Pagter",
                     "email": "BackEndTea@gmail.com"
+                },
+                {
+                    "name": "Symfony Community",
+                    "homepage": "https://symfony.com/contributors"
                 }
             ],
             "description": "Symfony polyfill for ctype functions",
@@ -2287,20 +2453,34 @@
                 "polyfill",
                 "portable"
             ],
-            "time": "2018-08-06T14:22:27+00:00"
+            "funding": [
+                {
+                    "url": "https://symfony.com/sponsor",
+                    "type": "custom"
+                },
+                {
+                    "url": "https://github.com/fabpot",
+                    "type": "github"
+                },
+                {
+                    "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+                    "type": "tidelift"
+                }
+            ],
+            "time": "2020-07-14T12:35:20+00:00"
         },
         {
             "name": "symfony/stopwatch",
-            "version": "v3.4.21",
+            "version": "v3.4.45",
             "source": {
                 "type": "git",
                 "url": "https://github.com/symfony/stopwatch.git",
-                "reference": "af55d31cb58c5452d2c160655fa1968b872a8084"
+                "reference": "a7a98f40dcc382a332c3729a6d04b298ffbb8f1f"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/symfony/stopwatch/zipball/af55d31cb58c5452d2c160655fa1968b872a8084",
-                "reference": "af55d31cb58c5452d2c160655fa1968b872a8084",
+                "url": "https://api.github.com/repos/symfony/stopwatch/zipball/a7a98f40dcc382a332c3729a6d04b298ffbb8f1f",
+                "reference": "a7a98f40dcc382a332c3729a6d04b298ffbb8f1f",
                 "shasum": ""
             },
             "require": {
@@ -2336,20 +2516,34 @@
             ],
             "description": "Symfony Stopwatch Component",
             "homepage": "https://symfony.com",
-            "time": "2019-01-01T13:45:19+00:00"
+            "funding": [
+                {
+                    "url": "https://symfony.com/sponsor",
+                    "type": "custom"
+                },
+                {
+                    "url": "https://github.com/fabpot",
+                    "type": "github"
+                },
+                {
+                    "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+                    "type": "tidelift"
+                }
+            ],
+            "time": "2020-03-15T09:38:08+00:00"
         },
         {
             "name": "symfony/yaml",
-            "version": "v3.4.21",
+            "version": "v3.4.45",
             "source": {
                 "type": "git",
                 "url": "https://github.com/symfony/yaml.git",
-                "reference": "554a59a1ccbaac238a89b19c8e551a556fd0e2ea"
+                "reference": "ec3c2ac4d881a4684c1f0317d2107f1a4152bad9"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/symfony/yaml/zipball/554a59a1ccbaac238a89b19c8e551a556fd0e2ea",
-                "reference": "554a59a1ccbaac238a89b19c8e551a556fd0e2ea",
+                "url": "https://api.github.com/repos/symfony/yaml/zipball/ec3c2ac4d881a4684c1f0317d2107f1a4152bad9",
+                "reference": "ec3c2ac4d881a4684c1f0317d2107f1a4152bad9",
                 "shasum": ""
             },
             "require": {
@@ -2395,20 +2589,34 @@
             ],
             "description": "Symfony Yaml Component",
             "homepage": "https://symfony.com",
-            "time": "2019-01-01T13:45:19+00:00"
+            "funding": [
+                {
+                    "url": "https://symfony.com/sponsor",
+                    "type": "custom"
+                },
+                {
+                    "url": "https://github.com/fabpot",
+                    "type": "github"
+                },
+                {
+                    "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+                    "type": "tidelift"
+                }
+            ],
+            "time": "2020-09-18T15:58:55+00:00"
         },
         {
             "name": "theseer/tokenizer",
-            "version": "1.1.0",
+            "version": "1.1.3",
             "source": {
                 "type": "git",
                 "url": "https://github.com/theseer/tokenizer.git",
-                "reference": "cb2f008f3f05af2893a87208fe6a6c4985483f8b"
+                "reference": "11336f6f84e16a720dae9d8e6ed5019efa85a0f9"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/theseer/tokenizer/zipball/cb2f008f3f05af2893a87208fe6a6c4985483f8b",
-                "reference": "cb2f008f3f05af2893a87208fe6a6c4985483f8b",
+                "url": "https://api.github.com/repos/theseer/tokenizer/zipball/11336f6f84e16a720dae9d8e6ed5019efa85a0f9",
+                "reference": "11336f6f84e16a720dae9d8e6ed5019efa85a0f9",
                 "shasum": ""
             },
             "require": {
@@ -2435,36 +2643,34 @@
                 }
             ],
             "description": "A small library for converting tokenized PHP source code into XML and potentially other formats",
-            "time": "2017-04-07T12:08:54+00:00"
+            "time": "2019-06-13T22:48:21+00:00"
         },
         {
             "name": "webmozart/assert",
-            "version": "1.4.0",
+            "version": "1.9.1",
             "source": {
                 "type": "git",
                 "url": "https://github.com/webmozart/assert.git",
-                "reference": "83e253c8e0be5b0257b881e1827274667c5c17a9"
+                "reference": "bafc69caeb4d49c39fd0779086c03a3738cbb389"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/webmozart/assert/zipball/83e253c8e0be5b0257b881e1827274667c5c17a9",
-                "reference": "83e253c8e0be5b0257b881e1827274667c5c17a9",
+                "url": "https://api.github.com/repos/webmozart/assert/zipball/bafc69caeb4d49c39fd0779086c03a3738cbb389",
+                "reference": "bafc69caeb4d49c39fd0779086c03a3738cbb389",
                 "shasum": ""
             },
             "require": {
-                "php": "^5.3.3 || ^7.0",
+                "php": "^5.3.3 || ^7.0 || ^8.0",
                 "symfony/polyfill-ctype": "^1.8"
             },
+            "conflict": {
+                "phpstan/phpstan": "<0.12.20",
+                "vimeo/psalm": "<3.9.1"
+            },
             "require-dev": {
-                "phpunit/phpunit": "^4.6",
-                "sebastian/version": "^1.0.1"
+                "phpunit/phpunit": "^4.8.36 || ^7.5.13"
             },
             "type": "library",
-            "extra": {
-                "branch-alias": {
-                    "dev-master": "1.3-dev"
-                }
-            },
             "autoload": {
                 "psr-4": {
                     "Webmozart\\Assert\\": "src/"
@@ -2486,7 +2692,7 @@
                 "check",
                 "validate"
             ],
-            "time": "2018-12-25T11:19:39+00:00"
+            "time": "2020-07-08T17:02:28+00:00"
         }
     ],
     "aliases": [],
@@ -2500,5 +2706,6 @@
     "platform-dev": [],
     "platform-overrides": {
         "php": "7.0.8"
-    }
+    },
+    "plugin-api-version": "1.1.0"
 }
diff --git a/vendor/consolidation/output-formatters/.scenarios.lock/finder5/.gitignore b/vendor/consolidation/output-formatters/.scenarios.lock/finder5/.gitignore
new file mode 100644
index 0000000000..5657f6ea7d
--- /dev/null
+++ b/vendor/consolidation/output-formatters/.scenarios.lock/finder5/.gitignore
@@ -0,0 +1 @@
+vendor
\ No newline at end of file
diff --git a/vendor/consolidation/output-formatters/.scenarios.lock/finder5/composer.json b/vendor/consolidation/output-formatters/.scenarios.lock/finder5/composer.json
new file mode 100644
index 0000000000..16c532a0c1
--- /dev/null
+++ b/vendor/consolidation/output-formatters/.scenarios.lock/finder5/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/finder": "^5",
+        "php": ">=5.4.0",
+        "dflydev/dot-access-data": "^1.1.0",
+        "symfony/console": "^2.8|^3|^4"
+    },
+    "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": "7.2.5"
+        },
+        "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/finder5/composer.lock b/vendor/consolidation/output-formatters/.scenarios.lock/finder5/composer.lock
new file mode 100644
index 0000000000..ed32d49a20
--- /dev/null
+++ b/vendor/consolidation/output-formatters/.scenarios.lock/finder5/composer.lock
@@ -0,0 +1,2938 @@
+{
+    "_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": "332b2dcb257e6b06110fe52b229c3f16",
+    "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/container",
+            "version": "1.0.0",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/php-fig/container.git",
+                "reference": "b7ce3b176482dbbc1245ebf52b181af44c2cf55f"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/php-fig/container/zipball/b7ce3b176482dbbc1245ebf52b181af44c2cf55f",
+                "reference": "b7ce3b176482dbbc1245ebf52b181af44c2cf55f",
+                "shasum": ""
+            },
+            "require": {
+                "php": ">=5.3.0"
+            },
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "1.0.x-dev"
+                }
+            },
+            "autoload": {
+                "psr-4": {
+                    "Psr\\Container\\": "src/"
+                }
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "MIT"
+            ],
+            "authors": [
+                {
+                    "name": "PHP-FIG",
+                    "homepage": "http://www.php-fig.org/"
+                }
+            ],
+            "description": "Common Container Interface (PHP FIG PSR-11)",
+            "homepage": "https://github.com/php-fig/container",
+            "keywords": [
+                "PSR-11",
+                "container",
+                "container-interface",
+                "container-interop",
+                "psr"
+            ],
+            "time": "2017-02-14T16:28:37+00:00"
+        },
+        {
+            "name": "symfony/console",
+            "version": "v4.4.15",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/symfony/console.git",
+                "reference": "90933b39c7b312fc3ceaa1ddeac7eb48cb953124"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/symfony/console/zipball/90933b39c7b312fc3ceaa1ddeac7eb48cb953124",
+                "reference": "90933b39c7b312fc3ceaa1ddeac7eb48cb953124",
+                "shasum": ""
+            },
+            "require": {
+                "php": ">=7.1.3",
+                "symfony/polyfill-mbstring": "~1.0",
+                "symfony/polyfill-php73": "^1.8",
+                "symfony/polyfill-php80": "^1.15",
+                "symfony/service-contracts": "^1.1|^2"
+            },
+            "conflict": {
+                "symfony/dependency-injection": "<3.4",
+                "symfony/event-dispatcher": "<4.3|>=5",
+                "symfony/lock": "<4.4",
+                "symfony/process": "<3.3"
+            },
+            "provide": {
+                "psr/log-implementation": "1.0"
+            },
+            "require-dev": {
+                "psr/log": "~1.0",
+                "symfony/config": "^3.4|^4.0|^5.0",
+                "symfony/dependency-injection": "^3.4|^4.0|^5.0",
+                "symfony/event-dispatcher": "^4.3",
+                "symfony/lock": "^4.4|^5.0",
+                "symfony/process": "^3.4|^4.0|^5.0",
+                "symfony/var-dumper": "^4.3|^5.0"
+            },
+            "suggest": {
+                "psr/log": "For using the console logger",
+                "symfony/event-dispatcher": "",
+                "symfony/lock": "",
+                "symfony/process": ""
+            },
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "4.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",
+            "funding": [
+                {
+                    "url": "https://symfony.com/sponsor",
+                    "type": "custom"
+                },
+                {
+                    "url": "https://github.com/fabpot",
+                    "type": "github"
+                },
+                {
+                    "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+                    "type": "tidelift"
+                }
+            ],
+            "time": "2020-09-15T07:58:55+00:00"
+        },
+        {
+            "name": "symfony/finder",
+            "version": "v5.1.7",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/symfony/finder.git",
+                "reference": "2c3ba7ad6884e6c4451ce2340e2dc23f6fa3e0d8"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/symfony/finder/zipball/2c3ba7ad6884e6c4451ce2340e2dc23f6fa3e0d8",
+                "reference": "2c3ba7ad6884e6c4451ce2340e2dc23f6fa3e0d8",
+                "shasum": ""
+            },
+            "require": {
+                "php": ">=7.2.5"
+            },
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "5.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",
+            "funding": [
+                {
+                    "url": "https://symfony.com/sponsor",
+                    "type": "custom"
+                },
+                {
+                    "url": "https://github.com/fabpot",
+                    "type": "github"
+                },
+                {
+                    "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+                    "type": "tidelift"
+                }
+            ],
+            "time": "2020-09-02T16:23:27+00:00"
+        },
+        {
+            "name": "symfony/polyfill-mbstring",
+            "version": "v1.18.1",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/symfony/polyfill-mbstring.git",
+                "reference": "a6977d63bf9a0ad4c65cd352709e230876f9904a"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/a6977d63bf9a0ad4c65cd352709e230876f9904a",
+                "reference": "a6977d63bf9a0ad4c65cd352709e230876f9904a",
+                "shasum": ""
+            },
+            "require": {
+                "php": ">=5.3.3"
+            },
+            "suggest": {
+                "ext-mbstring": "For best performance"
+            },
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "1.18-dev"
+                },
+                "thanks": {
+                    "name": "symfony/polyfill",
+                    "url": "https://github.com/symfony/polyfill"
+                }
+            },
+            "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"
+            ],
+            "funding": [
+                {
+                    "url": "https://symfony.com/sponsor",
+                    "type": "custom"
+                },
+                {
+                    "url": "https://github.com/fabpot",
+                    "type": "github"
+                },
+                {
+                    "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+                    "type": "tidelift"
+                }
+            ],
+            "time": "2020-07-14T12:35:20+00:00"
+        },
+        {
+            "name": "symfony/polyfill-php73",
+            "version": "v1.18.1",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/symfony/polyfill-php73.git",
+                "reference": "fffa1a52a023e782cdcc221d781fe1ec8f87fcca"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/symfony/polyfill-php73/zipball/fffa1a52a023e782cdcc221d781fe1ec8f87fcca",
+                "reference": "fffa1a52a023e782cdcc221d781fe1ec8f87fcca",
+                "shasum": ""
+            },
+            "require": {
+                "php": ">=5.3.3"
+            },
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "1.18-dev"
+                },
+                "thanks": {
+                    "name": "symfony/polyfill",
+                    "url": "https://github.com/symfony/polyfill"
+                }
+            },
+            "autoload": {
+                "psr-4": {
+                    "Symfony\\Polyfill\\Php73\\": ""
+                },
+                "files": [
+                    "bootstrap.php"
+                ],
+                "classmap": [
+                    "Resources/stubs"
+                ]
+            },
+            "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.3+ features to lower PHP versions",
+            "homepage": "https://symfony.com",
+            "keywords": [
+                "compatibility",
+                "polyfill",
+                "portable",
+                "shim"
+            ],
+            "funding": [
+                {
+                    "url": "https://symfony.com/sponsor",
+                    "type": "custom"
+                },
+                {
+                    "url": "https://github.com/fabpot",
+                    "type": "github"
+                },
+                {
+                    "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+                    "type": "tidelift"
+                }
+            ],
+            "time": "2020-07-14T12:35:20+00:00"
+        },
+        {
+            "name": "symfony/polyfill-php80",
+            "version": "v1.18.1",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/symfony/polyfill-php80.git",
+                "reference": "d87d5766cbf48d72388a9f6b85f280c8ad51f981"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/symfony/polyfill-php80/zipball/d87d5766cbf48d72388a9f6b85f280c8ad51f981",
+                "reference": "d87d5766cbf48d72388a9f6b85f280c8ad51f981",
+                "shasum": ""
+            },
+            "require": {
+                "php": ">=7.0.8"
+            },
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "1.18-dev"
+                },
+                "thanks": {
+                    "name": "symfony/polyfill",
+                    "url": "https://github.com/symfony/polyfill"
+                }
+            },
+            "autoload": {
+                "psr-4": {
+                    "Symfony\\Polyfill\\Php80\\": ""
+                },
+                "files": [
+                    "bootstrap.php"
+                ],
+                "classmap": [
+                    "Resources/stubs"
+                ]
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "MIT"
+            ],
+            "authors": [
+                {
+                    "name": "Ion Bazan",
+                    "email": "ion.bazan@gmail.com"
+                },
+                {
+                    "name": "Nicolas Grekas",
+                    "email": "p@tchwork.com"
+                },
+                {
+                    "name": "Symfony Community",
+                    "homepage": "https://symfony.com/contributors"
+                }
+            ],
+            "description": "Symfony polyfill backporting some PHP 8.0+ features to lower PHP versions",
+            "homepage": "https://symfony.com",
+            "keywords": [
+                "compatibility",
+                "polyfill",
+                "portable",
+                "shim"
+            ],
+            "funding": [
+                {
+                    "url": "https://symfony.com/sponsor",
+                    "type": "custom"
+                },
+                {
+                    "url": "https://github.com/fabpot",
+                    "type": "github"
+                },
+                {
+                    "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+                    "type": "tidelift"
+                }
+            ],
+            "time": "2020-07-14T12:35:20+00:00"
+        },
+        {
+            "name": "symfony/service-contracts",
+            "version": "v2.2.0",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/symfony/service-contracts.git",
+                "reference": "d15da7ba4957ffb8f1747218be9e1a121fd298a1"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/symfony/service-contracts/zipball/d15da7ba4957ffb8f1747218be9e1a121fd298a1",
+                "reference": "d15da7ba4957ffb8f1747218be9e1a121fd298a1",
+                "shasum": ""
+            },
+            "require": {
+                "php": ">=7.2.5",
+                "psr/container": "^1.0"
+            },
+            "suggest": {
+                "symfony/service-implementation": ""
+            },
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "2.2-dev"
+                },
+                "thanks": {
+                    "name": "symfony/contracts",
+                    "url": "https://github.com/symfony/contracts"
+                }
+            },
+            "autoload": {
+                "psr-4": {
+                    "Symfony\\Contracts\\Service\\": ""
+                }
+            },
+            "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": "Generic abstractions related to writing services",
+            "homepage": "https://symfony.com",
+            "keywords": [
+                "abstractions",
+                "contracts",
+                "decoupling",
+                "interfaces",
+                "interoperability",
+                "standards"
+            ],
+            "funding": [
+                {
+                    "url": "https://symfony.com/sponsor",
+                    "type": "custom"
+                },
+                {
+                    "url": "https://github.com/fabpot",
+                    "type": "github"
+                },
+                {
+                    "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+                    "type": "tidelift"
+                }
+            ],
+            "time": "2020-09-07T11:33:47+00:00"
+        }
+    ],
+    "packages-dev": [
+        {
+            "name": "doctrine/instantiator",
+            "version": "1.3.1",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/doctrine/instantiator.git",
+                "reference": "f350df0268e904597e3bd9c4685c53e0e333feea"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/doctrine/instantiator/zipball/f350df0268e904597e3bd9c4685c53e0e333feea",
+                "reference": "f350df0268e904597e3bd9c4685c53e0e333feea",
+                "shasum": ""
+            },
+            "require": {
+                "php": "^7.1 || ^8.0"
+            },
+            "require-dev": {
+                "doctrine/coding-standard": "^6.0",
+                "ext-pdo": "*",
+                "ext-phar": "*",
+                "phpbench/phpbench": "^0.13",
+                "phpstan/phpstan-phpunit": "^0.11",
+                "phpstan/phpstan-shim": "^0.11",
+                "phpunit/phpunit": "^7.0"
+            },
+            "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://www.doctrine-project.org/projects/instantiator.html",
+            "keywords": [
+                "constructor",
+                "instantiate"
+            ],
+            "funding": [
+                {
+                    "url": "https://www.doctrine-project.org/sponsorship.html",
+                    "type": "custom"
+                },
+                {
+                    "url": "https://www.patreon.com/phpdoctrine",
+                    "type": "patreon"
+                },
+                {
+                    "url": "https://tidelift.com/funding/github/packagist/doctrine%2Finstantiator",
+                    "type": "tidelift"
+                }
+            ],
+            "time": "2020-05-29T17:27:14+00:00"
+        },
+        {
+            "name": "g1a/composer-test-scenarios",
+            "version": "3.2.0",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/g1a/composer-test-scenarios.git",
+                "reference": "e7394206d845fd593d325440507fb940bef8cb62"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/g1a/composer-test-scenarios/zipball/e7394206d845fd593d325440507fb940bef8cb62",
+                "reference": "e7394206d845fd593d325440507fb940bef8cb62",
+                "shasum": ""
+            },
+            "require": {
+                "composer-plugin-api": "^1.0.0 || ^2.0.0",
+                "php": ">=5.4"
+            },
+            "require-dev": {
+                "composer/composer": "^1.10.6 || ^2.0@rc",
+                "php-coveralls/php-coveralls": "^1.0",
+                "phpunit/phpunit": "^4.8.36|^6",
+                "squizlabs/php_codesniffer": "^3.5"
+            },
+            "bin": [
+                "scripts/dependency-licenses"
+            ],
+            "type": "composer-plugin",
+            "extra": {
+                "class": "ComposerTestScenarios\\Plugin",
+                "branch-alias": {
+                    "dev-main": "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": "2020-09-28T20:54:35+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.10.1",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/myclabs/DeepCopy.git",
+                "reference": "969b211f9a51aa1f6c01d1d2aef56d3bd91598e5"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/969b211f9a51aa1f6c01d1d2aef56d3bd91598e5",
+                "reference": "969b211f9a51aa1f6c01d1d2aef56d3bd91598e5",
+                "shasum": ""
+            },
+            "require": {
+                "php": "^7.1 || ^8.0"
+            },
+            "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"
+            ],
+            "funding": [
+                {
+                    "url": "https://tidelift.com/funding/github/packagist/myclabs/deep-copy",
+                    "type": "tidelift"
+                }
+            ],
+            "time": "2020-06-29T13:22:24+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": "2.2.0",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/phpDocumentor/ReflectionCommon.git",
+                "reference": "1d01c49d4ed62f25aa84a747ad35d5a16924662b"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/phpDocumentor/ReflectionCommon/zipball/1d01c49d4ed62f25aa84a747ad35d5a16924662b",
+                "reference": "1d01c49d4ed62f25aa84a747ad35d5a16924662b",
+                "shasum": ""
+            },
+            "require": {
+                "php": "^7.2 || ^8.0"
+            },
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-2.x": "2.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": "2020-06-27T09:03:43+00:00"
+        },
+        {
+            "name": "phpdocumentor/reflection-docblock",
+            "version": "5.2.2",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/phpDocumentor/ReflectionDocBlock.git",
+                "reference": "069a785b2141f5bcf49f3e353548dc1cce6df556"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/phpDocumentor/ReflectionDocBlock/zipball/069a785b2141f5bcf49f3e353548dc1cce6df556",
+                "reference": "069a785b2141f5bcf49f3e353548dc1cce6df556",
+                "shasum": ""
+            },
+            "require": {
+                "ext-filter": "*",
+                "php": "^7.2 || ^8.0",
+                "phpdocumentor/reflection-common": "^2.2",
+                "phpdocumentor/type-resolver": "^1.3",
+                "webmozart/assert": "^1.9.1"
+            },
+            "require-dev": {
+                "mockery/mockery": "~1.3.2"
+            },
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "5.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"
+                },
+                {
+                    "name": "Jaap van Otterdijk",
+                    "email": "account@ijaap.nl"
+                }
+            ],
+            "description": "With this component, a library can provide support for annotations via DocBlocks or otherwise retrieve information that is embedded in a DocBlock.",
+            "time": "2020-09-03T19:13:55+00:00"
+        },
+        {
+            "name": "phpdocumentor/type-resolver",
+            "version": "1.4.0",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/phpDocumentor/TypeResolver.git",
+                "reference": "6a467b8989322d92aa1c8bf2bebcc6e5c2ba55c0"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/phpDocumentor/TypeResolver/zipball/6a467b8989322d92aa1c8bf2bebcc6e5c2ba55c0",
+                "reference": "6a467b8989322d92aa1c8bf2bebcc6e5c2ba55c0",
+                "shasum": ""
+            },
+            "require": {
+                "php": "^7.2 || ^8.0",
+                "phpdocumentor/reflection-common": "^2.0"
+            },
+            "require-dev": {
+                "ext-tokenizer": "*"
+            },
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-1.x": "1.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": "A PSR-5 based resolver of Class names, Types and Structural Element Names",
+            "time": "2020-09-17T18:55:26+00:00"
+        },
+        {
+            "name": "phpspec/prophecy",
+            "version": "v1.10.3",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/phpspec/prophecy.git",
+                "reference": "451c3cd1418cf640de218914901e51b064abb093"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/phpspec/prophecy/zipball/451c3cd1418cf640de218914901e51b064abb093",
+                "reference": "451c3cd1418cf640de218914901e51b064abb093",
+                "shasum": ""
+            },
+            "require": {
+                "doctrine/instantiator": "^1.0.2",
+                "php": "^5.3|^7.0",
+                "phpdocumentor/reflection-docblock": "^2.0|^3.0.2|^4.0|^5.0",
+                "sebastian/comparator": "^1.2.3|^2.0|^3.0|^4.0",
+                "sebastian/recursion-context": "^1.0|^2.0|^3.0|^4.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.10.x-dev"
+                }
+            },
+            "autoload": {
+                "psr-4": {
+                    "Prophecy\\": "src/Prophecy"
+                }
+            },
+            "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": "2020-03-05T15:02:03+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": "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"
+            ],
+            "abandoned": true,
+            "time": "2017-11-27T05:48:46+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"
+            ],
+            "abandoned": true,
+            "time": "2017-06-30T09:13:00+00:00"
+        },
+        {
+            "name": "psr/log",
+            "version": "1.1.3",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/php-fig/log.git",
+                "reference": "0f73288fd15629204f9d42b7055f72dacbe811fc"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/php-fig/log/zipball/0f73288fd15629204f9d42b7055f72dacbe811fc",
+                "reference": "0f73288fd15629204f9d42b7055f72dacbe811fc",
+                "shasum": ""
+            },
+            "require": {
+                "php": ">=5.3.0"
+            },
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "1.1.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": "2020-03-23T09:12:05+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": "v4.4.15",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/symfony/config.git",
+                "reference": "7c5a1002178a612787c291a4f515f87b19176b61"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/symfony/config/zipball/7c5a1002178a612787c291a4f515f87b19176b61",
+                "reference": "7c5a1002178a612787c291a4f515f87b19176b61",
+                "shasum": ""
+            },
+            "require": {
+                "php": ">=7.1.3",
+                "symfony/filesystem": "^3.4|^4.0|^5.0",
+                "symfony/polyfill-ctype": "~1.8"
+            },
+            "conflict": {
+                "symfony/finder": "<3.4"
+            },
+            "require-dev": {
+                "symfony/event-dispatcher": "^3.4|^4.0|^5.0",
+                "symfony/finder": "^3.4|^4.0|^5.0",
+                "symfony/messenger": "^4.1|^5.0",
+                "symfony/service-contracts": "^1.1|^2",
+                "symfony/yaml": "^3.4|^4.0|^5.0"
+            },
+            "suggest": {
+                "symfony/yaml": "To use the yaml reference dumper"
+            },
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "4.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",
+            "funding": [
+                {
+                    "url": "https://symfony.com/sponsor",
+                    "type": "custom"
+                },
+                {
+                    "url": "https://github.com/fabpot",
+                    "type": "github"
+                },
+                {
+                    "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+                    "type": "tidelift"
+                }
+            ],
+            "time": "2020-10-02T07:34:48+00:00"
+        },
+        {
+            "name": "symfony/event-dispatcher",
+            "version": "v4.4.15",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/symfony/event-dispatcher.git",
+                "reference": "e17bb5e0663dc725f7cdcafc932132735b4725cd"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/e17bb5e0663dc725f7cdcafc932132735b4725cd",
+                "reference": "e17bb5e0663dc725f7cdcafc932132735b4725cd",
+                "shasum": ""
+            },
+            "require": {
+                "php": ">=7.1.3",
+                "symfony/event-dispatcher-contracts": "^1.1"
+            },
+            "conflict": {
+                "symfony/dependency-injection": "<3.4"
+            },
+            "provide": {
+                "psr/event-dispatcher-implementation": "1.0",
+                "symfony/event-dispatcher-implementation": "1.1"
+            },
+            "require-dev": {
+                "psr/log": "~1.0",
+                "symfony/config": "^3.4|^4.0|^5.0",
+                "symfony/dependency-injection": "^3.4|^4.0|^5.0",
+                "symfony/error-handler": "~3.4|~4.4",
+                "symfony/expression-language": "^3.4|^4.0|^5.0",
+                "symfony/http-foundation": "^3.4|^4.0|^5.0",
+                "symfony/service-contracts": "^1.1|^2",
+                "symfony/stopwatch": "^3.4|^4.0|^5.0"
+            },
+            "suggest": {
+                "symfony/dependency-injection": "",
+                "symfony/http-kernel": ""
+            },
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "4.4-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",
+            "funding": [
+                {
+                    "url": "https://symfony.com/sponsor",
+                    "type": "custom"
+                },
+                {
+                    "url": "https://github.com/fabpot",
+                    "type": "github"
+                },
+                {
+                    "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+                    "type": "tidelift"
+                }
+            ],
+            "time": "2020-09-18T14:07:46+00:00"
+        },
+        {
+            "name": "symfony/event-dispatcher-contracts",
+            "version": "v1.1.9",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/symfony/event-dispatcher-contracts.git",
+                "reference": "84e23fdcd2517bf37aecbd16967e83f0caee25a7"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/symfony/event-dispatcher-contracts/zipball/84e23fdcd2517bf37aecbd16967e83f0caee25a7",
+                "reference": "84e23fdcd2517bf37aecbd16967e83f0caee25a7",
+                "shasum": ""
+            },
+            "require": {
+                "php": ">=7.1.3"
+            },
+            "suggest": {
+                "psr/event-dispatcher": "",
+                "symfony/event-dispatcher-implementation": ""
+            },
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "1.1-dev"
+                },
+                "thanks": {
+                    "name": "symfony/contracts",
+                    "url": "https://github.com/symfony/contracts"
+                }
+            },
+            "autoload": {
+                "psr-4": {
+                    "Symfony\\Contracts\\EventDispatcher\\": ""
+                }
+            },
+            "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": "Generic abstractions related to dispatching event",
+            "homepage": "https://symfony.com",
+            "keywords": [
+                "abstractions",
+                "contracts",
+                "decoupling",
+                "interfaces",
+                "interoperability",
+                "standards"
+            ],
+            "funding": [
+                {
+                    "url": "https://symfony.com/sponsor",
+                    "type": "custom"
+                },
+                {
+                    "url": "https://github.com/fabpot",
+                    "type": "github"
+                },
+                {
+                    "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+                    "type": "tidelift"
+                }
+            ],
+            "time": "2020-07-06T13:19:58+00:00"
+        },
+        {
+            "name": "symfony/filesystem",
+            "version": "v5.1.7",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/symfony/filesystem.git",
+                "reference": "1a8697545a8d87b9f2f6b1d32414199cc5e20aae"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/symfony/filesystem/zipball/1a8697545a8d87b9f2f6b1d32414199cc5e20aae",
+                "reference": "1a8697545a8d87b9f2f6b1d32414199cc5e20aae",
+                "shasum": ""
+            },
+            "require": {
+                "php": ">=7.2.5",
+                "symfony/polyfill-ctype": "~1.8"
+            },
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "5.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",
+            "funding": [
+                {
+                    "url": "https://symfony.com/sponsor",
+                    "type": "custom"
+                },
+                {
+                    "url": "https://github.com/fabpot",
+                    "type": "github"
+                },
+                {
+                    "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+                    "type": "tidelift"
+                }
+            ],
+            "time": "2020-09-27T14:02:37+00:00"
+        },
+        {
+            "name": "symfony/polyfill-ctype",
+            "version": "v1.18.1",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/symfony/polyfill-ctype.git",
+                "reference": "1c302646f6efc070cd46856e600e5e0684d6b454"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/1c302646f6efc070cd46856e600e5e0684d6b454",
+                "reference": "1c302646f6efc070cd46856e600e5e0684d6b454",
+                "shasum": ""
+            },
+            "require": {
+                "php": ">=5.3.3"
+            },
+            "suggest": {
+                "ext-ctype": "For best performance"
+            },
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "1.18-dev"
+                },
+                "thanks": {
+                    "name": "symfony/polyfill",
+                    "url": "https://github.com/symfony/polyfill"
+                }
+            },
+            "autoload": {
+                "psr-4": {
+                    "Symfony\\Polyfill\\Ctype\\": ""
+                },
+                "files": [
+                    "bootstrap.php"
+                ]
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "MIT"
+            ],
+            "authors": [
+                {
+                    "name": "Gert de Pagter",
+                    "email": "BackEndTea@gmail.com"
+                },
+                {
+                    "name": "Symfony Community",
+                    "homepage": "https://symfony.com/contributors"
+                }
+            ],
+            "description": "Symfony polyfill for ctype functions",
+            "homepage": "https://symfony.com",
+            "keywords": [
+                "compatibility",
+                "ctype",
+                "polyfill",
+                "portable"
+            ],
+            "funding": [
+                {
+                    "url": "https://symfony.com/sponsor",
+                    "type": "custom"
+                },
+                {
+                    "url": "https://github.com/fabpot",
+                    "type": "github"
+                },
+                {
+                    "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+                    "type": "tidelift"
+                }
+            ],
+            "time": "2020-07-14T12:35:20+00:00"
+        },
+        {
+            "name": "symfony/polyfill-php72",
+            "version": "v1.18.1",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/symfony/polyfill-php72.git",
+                "reference": "639447d008615574653fb3bc60d1986d7172eaae"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/symfony/polyfill-php72/zipball/639447d008615574653fb3bc60d1986d7172eaae",
+                "reference": "639447d008615574653fb3bc60d1986d7172eaae",
+                "shasum": ""
+            },
+            "require": {
+                "php": ">=5.3.3"
+            },
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "1.18-dev"
+                },
+                "thanks": {
+                    "name": "symfony/polyfill",
+                    "url": "https://github.com/symfony/polyfill"
+                }
+            },
+            "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"
+            ],
+            "funding": [
+                {
+                    "url": "https://symfony.com/sponsor",
+                    "type": "custom"
+                },
+                {
+                    "url": "https://github.com/fabpot",
+                    "type": "github"
+                },
+                {
+                    "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+                    "type": "tidelift"
+                }
+            ],
+            "time": "2020-07-14T12:35:20+00:00"
+        },
+        {
+            "name": "symfony/stopwatch",
+            "version": "v4.4.15",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/symfony/stopwatch.git",
+                "reference": "6f89e19772cf61b3c65bab329fe0e318259fbd91"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/symfony/stopwatch/zipball/6f89e19772cf61b3c65bab329fe0e318259fbd91",
+                "reference": "6f89e19772cf61b3c65bab329fe0e318259fbd91",
+                "shasum": ""
+            },
+            "require": {
+                "php": ">=7.1.3",
+                "symfony/service-contracts": "^1.0|^2"
+            },
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "4.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",
+            "funding": [
+                {
+                    "url": "https://symfony.com/sponsor",
+                    "type": "custom"
+                },
+                {
+                    "url": "https://github.com/fabpot",
+                    "type": "github"
+                },
+                {
+                    "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+                    "type": "tidelift"
+                }
+            ],
+            "time": "2020-09-02T16:08:58+00:00"
+        },
+        {
+            "name": "symfony/var-dumper",
+            "version": "v4.4.15",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/symfony/var-dumper.git",
+                "reference": "0dc22bdf9d1197467bb04d505355180b6f20bcca"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/symfony/var-dumper/zipball/0dc22bdf9d1197467bb04d505355180b6f20bcca",
+                "reference": "0dc22bdf9d1197467bb04d505355180b6f20bcca",
+                "shasum": ""
+            },
+            "require": {
+                "php": ">=7.1.3",
+                "symfony/polyfill-mbstring": "~1.0",
+                "symfony/polyfill-php72": "~1.5",
+                "symfony/polyfill-php80": "^1.15"
+            },
+            "conflict": {
+                "phpunit/phpunit": "<4.8.35|<5.4.3,>=5.0",
+                "symfony/console": "<3.4"
+            },
+            "require-dev": {
+                "ext-iconv": "*",
+                "symfony/console": "^3.4|^4.0|^5.0",
+                "symfony/process": "^4.4|^5.0",
+                "twig/twig": "^1.34|^2.4|^3.0"
+            },
+            "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.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"
+            ],
+            "funding": [
+                {
+                    "url": "https://symfony.com/sponsor",
+                    "type": "custom"
+                },
+                {
+                    "url": "https://github.com/fabpot",
+                    "type": "github"
+                },
+                {
+                    "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+                    "type": "tidelift"
+                }
+            ],
+            "time": "2020-09-18T08:35:10+00:00"
+        },
+        {
+            "name": "symfony/yaml",
+            "version": "v4.4.15",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/symfony/yaml.git",
+                "reference": "c7885964b1eceb70b0981556d0a9b01d2d97c8d1"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/symfony/yaml/zipball/c7885964b1eceb70b0981556d0a9b01d2d97c8d1",
+                "reference": "c7885964b1eceb70b0981556d0a9b01d2d97c8d1",
+                "shasum": ""
+            },
+            "require": {
+                "php": ">=7.1.3",
+                "symfony/polyfill-ctype": "~1.8"
+            },
+            "conflict": {
+                "symfony/console": "<3.4"
+            },
+            "require-dev": {
+                "symfony/console": "^3.4|^4.0|^5.0"
+            },
+            "suggest": {
+                "symfony/console": "For validating YAML files using the lint command"
+            },
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "4.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",
+            "funding": [
+                {
+                    "url": "https://symfony.com/sponsor",
+                    "type": "custom"
+                },
+                {
+                    "url": "https://github.com/fabpot",
+                    "type": "github"
+                },
+                {
+                    "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+                    "type": "tidelift"
+                }
+            ],
+            "time": "2020-09-27T03:36:23+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.9.1",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/webmozart/assert.git",
+                "reference": "bafc69caeb4d49c39fd0779086c03a3738cbb389"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/webmozart/assert/zipball/bafc69caeb4d49c39fd0779086c03a3738cbb389",
+                "reference": "bafc69caeb4d49c39fd0779086c03a3738cbb389",
+                "shasum": ""
+            },
+            "require": {
+                "php": "^5.3.3 || ^7.0 || ^8.0",
+                "symfony/polyfill-ctype": "^1.8"
+            },
+            "conflict": {
+                "phpstan/phpstan": "<0.12.20",
+                "vimeo/psalm": "<3.9.1"
+            },
+            "require-dev": {
+                "phpunit/phpunit": "^4.8.36 || ^7.5.13"
+            },
+            "type": "library",
+            "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": "2020-07-08T17:02:28+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.2.5"
+    },
+    "plugin-api-version": "1.1.0"
+}
diff --git a/vendor/consolidation/output-formatters/.scenarios.lock/install b/vendor/consolidation/output-formatters/.scenarios.lock/install
old mode 100644
new mode 100755
index 16c69e107c..4d8a777705
--- a/vendor/consolidation/output-formatters/.scenarios.lock/install
+++ b/vendor/consolidation/output-formatters/.scenarios.lock/install
@@ -4,16 +4,16 @@ SCENARIO=$1
 DEPENDENCIES=${2-install}
 
 # Convert the aliases 'highest', 'lowest' and 'lock' to
-# the corresponding composer command to run.
+# the corresponding composer update command to run.
 case $DEPENDENCIES in
   highest)
-    DEPENDENCIES=update
+    UPDATE_COMMAND=update
     ;;
   lowest)
-    DEPENDENCIES='update --prefer-lowest'
+    UPDATE_COMMAND='update --prefer-lowest'
     ;;
   lock|default|"")
-    DEPENDENCIES=install
+    UPDATE_COMMAND=''
     ;;
 esac
 
@@ -48,7 +48,11 @@ echo
 set -ex
 
 composer -n validate --working-dir=$dir --no-check-all --ansi
-composer -n --working-dir=$dir ${DEPENDENCIES} --prefer-dist --no-scripts
+
+if [ ! -z "$UPDATE_COMMAND" ] ; then
+  composer -n --working-dir=$dir ${UPDATE_COMMAND} --prefer-dist --no-scripts
+fi
+composer -n --working-dir=$dir install --prefer-dist
 
 # If called from a CI context, print out some extra information about
 # what we just installed.
diff --git a/vendor/consolidation/output-formatters/.scenarios.lock/symfony2/composer.json b/vendor/consolidation/output-formatters/.scenarios.lock/symfony2/composer.json
index 338f4265fc..b003dce2e0 100644
--- a/vendor/consolidation/output-formatters/.scenarios.lock/symfony2/composer.json
+++ b/vendor/consolidation/output-formatters/.scenarios.lock/symfony2/composer.json
@@ -22,7 +22,7 @@
         "symfony/console": "^2.8",
         "php": ">=5.4.0",
         "dflydev/dot-access-data": "^1.1.0",
-        "symfony/finder": "^2.5|^3|^4"
+        "symfony/finder": "^2.5|^3|^4|^5"
     },
     "require-dev": {
         "phpunit/phpunit": "^4.8.36",
diff --git a/vendor/consolidation/output-formatters/.scenarios.lock/symfony3/composer.lock b/vendor/consolidation/output-formatters/.scenarios.lock/symfony3/composer.lock
index 1e19004172..816a884d2c 100644
--- a/vendor/consolidation/output-formatters/.scenarios.lock/symfony3/composer.lock
+++ b/vendor/consolidation/output-formatters/.scenarios.lock/symfony3/composer.lock
@@ -67,16 +67,16 @@
         },
         {
             "name": "psr/log",
-            "version": "1.1.0",
+            "version": "1.1.3",
             "source": {
                 "type": "git",
                 "url": "https://github.com/php-fig/log.git",
-                "reference": "6c001f1daafa3a3ac1d8ff69ee4db8e799a654dd"
+                "reference": "0f73288fd15629204f9d42b7055f72dacbe811fc"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/php-fig/log/zipball/6c001f1daafa3a3ac1d8ff69ee4db8e799a654dd",
-                "reference": "6c001f1daafa3a3ac1d8ff69ee4db8e799a654dd",
+                "url": "https://api.github.com/repos/php-fig/log/zipball/0f73288fd15629204f9d42b7055f72dacbe811fc",
+                "reference": "0f73288fd15629204f9d42b7055f72dacbe811fc",
                 "shasum": ""
             },
             "require": {
@@ -85,7 +85,7 @@
             "type": "library",
             "extra": {
                 "branch-alias": {
-                    "dev-master": "1.0.x-dev"
+                    "dev-master": "1.1.x-dev"
                 }
             },
             "autoload": {
@@ -110,20 +110,20 @@
                 "psr",
                 "psr-3"
             ],
-            "time": "2018-11-20T15:27:04+00:00"
+            "time": "2020-03-23T09:12:05+00:00"
         },
         {
             "name": "symfony/console",
-            "version": "v3.4.18",
+            "version": "v3.4.45",
             "source": {
                 "type": "git",
                 "url": "https://github.com/symfony/console.git",
-                "reference": "1d228fb4602047d7b26a0554e0d3efd567da5803"
+                "reference": "b28996bc0a3b08914b2a8609163ec35b36b30685"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/symfony/console/zipball/1d228fb4602047d7b26a0554e0d3efd567da5803",
-                "reference": "1d228fb4602047d7b26a0554e0d3efd567da5803",
+                "url": "https://api.github.com/repos/symfony/console/zipball/b28996bc0a3b08914b2a8609163ec35b36b30685",
+                "reference": "b28996bc0a3b08914b2a8609163ec35b36b30685",
                 "shasum": ""
             },
             "require": {
@@ -135,6 +135,9 @@
                 "symfony/dependency-injection": "<3.4",
                 "symfony/process": "<3.3"
             },
+            "provide": {
+                "psr/log-implementation": "1.0"
+            },
             "require-dev": {
                 "psr/log": "~1.0",
                 "symfony/config": "~3.3|~4.0",
@@ -144,7 +147,7 @@
                 "symfony/process": "~3.3|~4.0"
             },
             "suggest": {
-                "psr/log-implementation": "For using the console logger",
+                "psr/log": "For using the console logger",
                 "symfony/event-dispatcher": "",
                 "symfony/lock": "",
                 "symfony/process": ""
@@ -179,20 +182,34 @@
             ],
             "description": "Symfony Console Component",
             "homepage": "https://symfony.com",
-            "time": "2018-10-30T16:50:50+00:00"
+            "funding": [
+                {
+                    "url": "https://symfony.com/sponsor",
+                    "type": "custom"
+                },
+                {
+                    "url": "https://github.com/fabpot",
+                    "type": "github"
+                },
+                {
+                    "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+                    "type": "tidelift"
+                }
+            ],
+            "time": "2020-09-09T05:09:37+00:00"
         },
         {
             "name": "symfony/debug",
-            "version": "v3.4.18",
+            "version": "v3.4.45",
             "source": {
                 "type": "git",
                 "url": "https://github.com/symfony/debug.git",
-                "reference": "fe9793af008b651c5441bdeab21ede8172dab097"
+                "reference": "9109e4414e684d0b75276ae203883467476d25d0"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/symfony/debug/zipball/fe9793af008b651c5441bdeab21ede8172dab097",
-                "reference": "fe9793af008b651c5441bdeab21ede8172dab097",
+                "url": "https://api.github.com/repos/symfony/debug/zipball/9109e4414e684d0b75276ae203883467476d25d0",
+                "reference": "9109e4414e684d0b75276ae203883467476d25d0",
                 "shasum": ""
             },
             "require": {
@@ -235,20 +252,34 @@
             ],
             "description": "Symfony Debug Component",
             "homepage": "https://symfony.com",
-            "time": "2018-10-31T09:06:03+00:00"
+            "funding": [
+                {
+                    "url": "https://symfony.com/sponsor",
+                    "type": "custom"
+                },
+                {
+                    "url": "https://github.com/fabpot",
+                    "type": "github"
+                },
+                {
+                    "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+                    "type": "tidelift"
+                }
+            ],
+            "time": "2020-09-08T22:19:14+00:00"
         },
         {
             "name": "symfony/finder",
-            "version": "v3.4.18",
+            "version": "v3.4.45",
             "source": {
                 "type": "git",
                 "url": "https://github.com/symfony/finder.git",
-                "reference": "54ba444dddc5bd5708a34bd095ea67c6eb54644d"
+                "reference": "52140652ed31cee3dabd0c481b5577201fa769b4"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/symfony/finder/zipball/54ba444dddc5bd5708a34bd095ea67c6eb54644d",
-                "reference": "54ba444dddc5bd5708a34bd095ea67c6eb54644d",
+                "url": "https://api.github.com/repos/symfony/finder/zipball/52140652ed31cee3dabd0c481b5577201fa769b4",
+                "reference": "52140652ed31cee3dabd0c481b5577201fa769b4",
                 "shasum": ""
             },
             "require": {
@@ -284,20 +315,34 @@
             ],
             "description": "Symfony Finder Component",
             "homepage": "https://symfony.com",
-            "time": "2018-10-03T08:46:40+00:00"
+            "funding": [
+                {
+                    "url": "https://symfony.com/sponsor",
+                    "type": "custom"
+                },
+                {
+                    "url": "https://github.com/fabpot",
+                    "type": "github"
+                },
+                {
+                    "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+                    "type": "tidelift"
+                }
+            ],
+            "time": "2020-09-02T16:06:40+00:00"
         },
         {
             "name": "symfony/polyfill-mbstring",
-            "version": "v1.10.0",
+            "version": "v1.18.1",
             "source": {
                 "type": "git",
                 "url": "https://github.com/symfony/polyfill-mbstring.git",
-                "reference": "c79c051f5b3a46be09205c73b80b346e4153e494"
+                "reference": "a6977d63bf9a0ad4c65cd352709e230876f9904a"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/c79c051f5b3a46be09205c73b80b346e4153e494",
-                "reference": "c79c051f5b3a46be09205c73b80b346e4153e494",
+                "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/a6977d63bf9a0ad4c65cd352709e230876f9904a",
+                "reference": "a6977d63bf9a0ad4c65cd352709e230876f9904a",
                 "shasum": ""
             },
             "require": {
@@ -309,7 +354,11 @@
             "type": "library",
             "extra": {
                 "branch-alias": {
-                    "dev-master": "1.9-dev"
+                    "dev-master": "1.18-dev"
+                },
+                "thanks": {
+                    "name": "symfony/polyfill",
+                    "url": "https://github.com/symfony/polyfill"
                 }
             },
             "autoload": {
@@ -343,20 +392,34 @@
                 "portable",
                 "shim"
             ],
-            "time": "2018-09-21T13:07:52+00:00"
+            "funding": [
+                {
+                    "url": "https://symfony.com/sponsor",
+                    "type": "custom"
+                },
+                {
+                    "url": "https://github.com/fabpot",
+                    "type": "github"
+                },
+                {
+                    "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+                    "type": "tidelift"
+                }
+            ],
+            "time": "2020-07-14T12:35:20+00:00"
         },
         {
             "name": "symfony/var-dumper",
-            "version": "v3.4.18",
+            "version": "v3.4.45",
             "source": {
                 "type": "git",
                 "url": "https://github.com/symfony/var-dumper.git",
-                "reference": "ff8ac19e97e5c7c3979236b584719a1190f84181"
+                "reference": "df8fe9c1c5dc3eb968db32ffa6b699d89fee2606"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/symfony/var-dumper/zipball/ff8ac19e97e5c7c3979236b584719a1190f84181",
-                "reference": "ff8ac19e97e5c7c3979236b584719a1190f84181",
+                "url": "https://api.github.com/repos/symfony/var-dumper/zipball/df8fe9c1c5dc3eb968db32ffa6b699d89fee2606",
+                "reference": "df8fe9c1c5dc3eb968db32ffa6b699d89fee2606",
                 "shasum": ""
             },
             "require": {
@@ -412,7 +475,21 @@
                 "debug",
                 "dump"
             ],
-            "time": "2018-10-02T16:33:53+00:00"
+            "funding": [
+                {
+                    "url": "https://symfony.com/sponsor",
+                    "type": "custom"
+                },
+                {
+                    "url": "https://github.com/fabpot",
+                    "type": "github"
+                },
+                {
+                    "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+                    "type": "tidelift"
+                }
+            ],
+            "time": "2020-09-18T08:10:16+00:00"
         }
     ],
     "packages-dev": [
@@ -472,27 +549,27 @@
         },
         {
             "name": "g1a/composer-test-scenarios",
-            "version": "3.0.0",
+            "version": "3.2.0",
             "source": {
                 "type": "git",
                 "url": "https://github.com/g1a/composer-test-scenarios.git",
-                "reference": "2a7156f1572898888ea50ad1d48a6b4d3f9fbf78"
+                "reference": "e7394206d845fd593d325440507fb940bef8cb62"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/g1a/composer-test-scenarios/zipball/2a7156f1572898888ea50ad1d48a6b4d3f9fbf78",
-                "reference": "2a7156f1572898888ea50ad1d48a6b4d3f9fbf78",
+                "url": "https://api.github.com/repos/g1a/composer-test-scenarios/zipball/e7394206d845fd593d325440507fb940bef8cb62",
+                "reference": "e7394206d845fd593d325440507fb940bef8cb62",
                 "shasum": ""
             },
             "require": {
-                "composer-plugin-api": "^1.0.0",
+                "composer-plugin-api": "^1.0.0 || ^2.0.0",
                 "php": ">=5.4"
             },
             "require-dev": {
-                "composer/composer": "^1.7",
+                "composer/composer": "^1.10.6 || ^2.0@rc",
                 "php-coveralls/php-coveralls": "^1.0",
                 "phpunit/phpunit": "^4.8.36|^6",
-                "squizlabs/php_codesniffer": "^2.8"
+                "squizlabs/php_codesniffer": "^3.5"
             },
             "bin": [
                 "scripts/dependency-licenses"
@@ -501,7 +578,7 @@
             "extra": {
                 "class": "ComposerTestScenarios\\Plugin",
                 "branch-alias": {
-                    "dev-master": "3.x-dev"
+                    "dev-main": "3.x-dev"
                 }
             },
             "autoload": {
@@ -520,7 +597,7 @@
                 }
             ],
             "description": "Useful scripts for testing multiple sets of Composer dependencies.",
-            "time": "2018-11-22T05:10:20+00:00"
+            "time": "2020-09-28T20:54:35+00:00"
         },
         {
             "name": "guzzle/guzzle",
@@ -872,38 +949,38 @@
         },
         {
             "name": "phpspec/prophecy",
-            "version": "1.8.0",
+            "version": "v1.10.3",
             "source": {
                 "type": "git",
                 "url": "https://github.com/phpspec/prophecy.git",
-                "reference": "4ba436b55987b4bf311cb7c6ba82aa528aac0a06"
+                "reference": "451c3cd1418cf640de218914901e51b064abb093"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/phpspec/prophecy/zipball/4ba436b55987b4bf311cb7c6ba82aa528aac0a06",
-                "reference": "4ba436b55987b4bf311cb7c6ba82aa528aac0a06",
+                "url": "https://api.github.com/repos/phpspec/prophecy/zipball/451c3cd1418cf640de218914901e51b064abb093",
+                "reference": "451c3cd1418cf640de218914901e51b064abb093",
                 "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"
+                "phpdocumentor/reflection-docblock": "^2.0|^3.0.2|^4.0|^5.0",
+                "sebastian/comparator": "^1.2.3|^2.0|^3.0|^4.0",
+                "sebastian/recursion-context": "^1.0|^2.0|^3.0|^4.0"
             },
             "require-dev": {
-                "phpspec/phpspec": "^2.5|^3.2",
+                "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"
+                    "dev-master": "1.10.x-dev"
                 }
             },
             "autoload": {
-                "psr-0": {
-                    "Prophecy\\": "src/"
+                "psr-4": {
+                    "Prophecy\\": "src/Prophecy"
                 }
             },
             "notification-url": "https://packagist.org/downloads/",
@@ -931,7 +1008,7 @@
                 "spy",
                 "stub"
             ],
-            "time": "2018-08-05T17:53:17+00:00"
+            "time": "2020-03-05T15:02:03+00:00"
         },
         {
             "name": "phpunit/php-code-coverage",
@@ -1180,6 +1257,7 @@
             "keywords": [
                 "tokenizer"
             ],
+            "abandoned": true,
             "time": "2017-12-04T08:55:13+00:00"
         },
         {
@@ -1321,6 +1399,7 @@
                 "mock",
                 "xunit"
             ],
+            "abandoned": true,
             "time": "2017-06-30T09:13:00+00:00"
         },
         {
@@ -1916,16 +1995,16 @@
         },
         {
             "name": "symfony/config",
-            "version": "v3.4.18",
+            "version": "v3.4.45",
             "source": {
                 "type": "git",
                 "url": "https://github.com/symfony/config.git",
-                "reference": "99b2fa8acc244e656cdf324ff419fbe6fd300a4d"
+                "reference": "d061a451ff6bc170c5454f4ac9b41ad2179e3960"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/symfony/config/zipball/99b2fa8acc244e656cdf324ff419fbe6fd300a4d",
-                "reference": "99b2fa8acc244e656cdf324ff419fbe6fd300a4d",
+                "url": "https://api.github.com/repos/symfony/config/zipball/d061a451ff6bc170c5454f4ac9b41ad2179e3960",
+                "reference": "d061a451ff6bc170c5454f4ac9b41ad2179e3960",
                 "shasum": ""
             },
             "require": {
@@ -1976,20 +2055,34 @@
             ],
             "description": "Symfony Config Component",
             "homepage": "https://symfony.com",
-            "time": "2018-10-31T09:06:03+00:00"
+            "funding": [
+                {
+                    "url": "https://symfony.com/sponsor",
+                    "type": "custom"
+                },
+                {
+                    "url": "https://github.com/fabpot",
+                    "type": "github"
+                },
+                {
+                    "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+                    "type": "tidelift"
+                }
+            ],
+            "time": "2020-09-02T16:06:40+00:00"
         },
         {
             "name": "symfony/event-dispatcher",
-            "version": "v2.8.47",
+            "version": "v2.8.52",
             "source": {
                 "type": "git",
                 "url": "https://github.com/symfony/event-dispatcher.git",
-                "reference": "76494bc38ff38d90d01913d23b5271acd4d78dd3"
+                "reference": "a77e974a5fecb4398833b0709210e3d5e334ffb0"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/76494bc38ff38d90d01913d23b5271acd4d78dd3",
-                "reference": "76494bc38ff38d90d01913d23b5271acd4d78dd3",
+                "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/a77e974a5fecb4398833b0709210e3d5e334ffb0",
+                "reference": "a77e974a5fecb4398833b0709210e3d5e334ffb0",
                 "shasum": ""
             },
             "require": {
@@ -2036,20 +2129,20 @@
             ],
             "description": "Symfony EventDispatcher Component",
             "homepage": "https://symfony.com",
-            "time": "2018-10-20T23:16:31+00:00"
+            "time": "2018-11-21T14:20:20+00:00"
         },
         {
             "name": "symfony/filesystem",
-            "version": "v3.4.18",
+            "version": "v3.4.45",
             "source": {
                 "type": "git",
                 "url": "https://github.com/symfony/filesystem.git",
-                "reference": "d69930fc337d767607267d57c20a7403d0a822a4"
+                "reference": "495646f13d051cc5a8f77a68b68313dc854080aa"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/symfony/filesystem/zipball/d69930fc337d767607267d57c20a7403d0a822a4",
-                "reference": "d69930fc337d767607267d57c20a7403d0a822a4",
+                "url": "https://api.github.com/repos/symfony/filesystem/zipball/495646f13d051cc5a8f77a68b68313dc854080aa",
+                "reference": "495646f13d051cc5a8f77a68b68313dc854080aa",
                 "shasum": ""
             },
             "require": {
@@ -2086,20 +2179,34 @@
             ],
             "description": "Symfony Filesystem Component",
             "homepage": "https://symfony.com",
-            "time": "2018-10-02T12:28:39+00:00"
+            "funding": [
+                {
+                    "url": "https://symfony.com/sponsor",
+                    "type": "custom"
+                },
+                {
+                    "url": "https://github.com/fabpot",
+                    "type": "github"
+                },
+                {
+                    "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+                    "type": "tidelift"
+                }
+            ],
+            "time": "2020-09-02T16:06:40+00:00"
         },
         {
             "name": "symfony/polyfill-ctype",
-            "version": "v1.10.0",
+            "version": "v1.18.1",
             "source": {
                 "type": "git",
                 "url": "https://github.com/symfony/polyfill-ctype.git",
-                "reference": "e3d826245268269cd66f8326bd8bc066687b4a19"
+                "reference": "1c302646f6efc070cd46856e600e5e0684d6b454"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/e3d826245268269cd66f8326bd8bc066687b4a19",
-                "reference": "e3d826245268269cd66f8326bd8bc066687b4a19",
+                "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/1c302646f6efc070cd46856e600e5e0684d6b454",
+                "reference": "1c302646f6efc070cd46856e600e5e0684d6b454",
                 "shasum": ""
             },
             "require": {
@@ -2111,7 +2218,11 @@
             "type": "library",
             "extra": {
                 "branch-alias": {
-                    "dev-master": "1.9-dev"
+                    "dev-master": "1.18-dev"
+                },
+                "thanks": {
+                    "name": "symfony/polyfill",
+                    "url": "https://github.com/symfony/polyfill"
                 }
             },
             "autoload": {
@@ -2127,13 +2238,13 @@
                 "MIT"
             ],
             "authors": [
-                {
-                    "name": "Symfony Community",
-                    "homepage": "https://symfony.com/contributors"
-                },
                 {
                     "name": "Gert de Pagter",
                     "email": "BackEndTea@gmail.com"
+                },
+                {
+                    "name": "Symfony Community",
+                    "homepage": "https://symfony.com/contributors"
                 }
             ],
             "description": "Symfony polyfill for ctype functions",
@@ -2144,20 +2255,34 @@
                 "polyfill",
                 "portable"
             ],
-            "time": "2018-08-06T14:22:27+00:00"
+            "funding": [
+                {
+                    "url": "https://symfony.com/sponsor",
+                    "type": "custom"
+                },
+                {
+                    "url": "https://github.com/fabpot",
+                    "type": "github"
+                },
+                {
+                    "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+                    "type": "tidelift"
+                }
+            ],
+            "time": "2020-07-14T12:35:20+00:00"
         },
         {
             "name": "symfony/stopwatch",
-            "version": "v3.4.18",
+            "version": "v3.4.45",
             "source": {
                 "type": "git",
                 "url": "https://github.com/symfony/stopwatch.git",
-                "reference": "05e52a39de52ba690aebaed462b2bc8a9649f0a4"
+                "reference": "a7a98f40dcc382a332c3729a6d04b298ffbb8f1f"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/symfony/stopwatch/zipball/05e52a39de52ba690aebaed462b2bc8a9649f0a4",
-                "reference": "05e52a39de52ba690aebaed462b2bc8a9649f0a4",
+                "url": "https://api.github.com/repos/symfony/stopwatch/zipball/a7a98f40dcc382a332c3729a6d04b298ffbb8f1f",
+                "reference": "a7a98f40dcc382a332c3729a6d04b298ffbb8f1f",
                 "shasum": ""
             },
             "require": {
@@ -2193,20 +2318,34 @@
             ],
             "description": "Symfony Stopwatch Component",
             "homepage": "https://symfony.com",
-            "time": "2018-10-02T12:28:39+00:00"
+            "funding": [
+                {
+                    "url": "https://symfony.com/sponsor",
+                    "type": "custom"
+                },
+                {
+                    "url": "https://github.com/fabpot",
+                    "type": "github"
+                },
+                {
+                    "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+                    "type": "tidelift"
+                }
+            ],
+            "time": "2020-03-15T09:38:08+00:00"
         },
         {
             "name": "symfony/yaml",
-            "version": "v3.4.18",
+            "version": "v3.4.45",
             "source": {
                 "type": "git",
                 "url": "https://github.com/symfony/yaml.git",
-                "reference": "640b6c27fed4066d64b64d5903a86043f4a4de7f"
+                "reference": "ec3c2ac4d881a4684c1f0317d2107f1a4152bad9"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/symfony/yaml/zipball/640b6c27fed4066d64b64d5903a86043f4a4de7f",
-                "reference": "640b6c27fed4066d64b64d5903a86043f4a4de7f",
+                "url": "https://api.github.com/repos/symfony/yaml/zipball/ec3c2ac4d881a4684c1f0317d2107f1a4152bad9",
+                "reference": "ec3c2ac4d881a4684c1f0317d2107f1a4152bad9",
                 "shasum": ""
             },
             "require": {
@@ -2252,7 +2391,21 @@
             ],
             "description": "Symfony Yaml Component",
             "homepage": "https://symfony.com",
-            "time": "2018-10-02T16:33:53+00:00"
+            "funding": [
+                {
+                    "url": "https://symfony.com/sponsor",
+                    "type": "custom"
+                },
+                {
+                    "url": "https://github.com/fabpot",
+                    "type": "github"
+                },
+                {
+                    "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+                    "type": "tidelift"
+                }
+            ],
+            "time": "2020-09-18T15:58:55+00:00"
         },
         {
             "name": "victorjonsson/markdowndocs",
@@ -2300,31 +2453,30 @@
         },
         {
             "name": "webmozart/assert",
-            "version": "1.3.0",
+            "version": "1.9.1",
             "source": {
                 "type": "git",
                 "url": "https://github.com/webmozart/assert.git",
-                "reference": "0df1908962e7a3071564e857d86874dad1ef204a"
+                "reference": "bafc69caeb4d49c39fd0779086c03a3738cbb389"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/webmozart/assert/zipball/0df1908962e7a3071564e857d86874dad1ef204a",
-                "reference": "0df1908962e7a3071564e857d86874dad1ef204a",
+                "url": "https://api.github.com/repos/webmozart/assert/zipball/bafc69caeb4d49c39fd0779086c03a3738cbb389",
+                "reference": "bafc69caeb4d49c39fd0779086c03a3738cbb389",
                 "shasum": ""
             },
             "require": {
-                "php": "^5.3.3 || ^7.0"
+                "php": "^5.3.3 || ^7.0 || ^8.0",
+                "symfony/polyfill-ctype": "^1.8"
+            },
+            "conflict": {
+                "phpstan/phpstan": "<0.12.20",
+                "vimeo/psalm": "<3.9.1"
             },
             "require-dev": {
-                "phpunit/phpunit": "^4.6",
-                "sebastian/version": "^1.0.1"
+                "phpunit/phpunit": "^4.8.36 || ^7.5.13"
             },
             "type": "library",
-            "extra": {
-                "branch-alias": {
-                    "dev-master": "1.3-dev"
-                }
-            },
             "autoload": {
                 "psr-4": {
                     "Webmozart\\Assert\\": "src/"
@@ -2346,7 +2498,7 @@
                 "check",
                 "validate"
             ],
-            "time": "2018-01-29T19:49:41+00:00"
+            "time": "2020-07-08T17:02:28+00:00"
         }
     ],
     "aliases": [],
@@ -2360,5 +2512,6 @@
     "platform-dev": [],
     "platform-overrides": {
         "php": "5.6.32"
-    }
+    },
+    "plugin-api-version": "1.1.0"
 }
diff --git a/vendor/consolidation/output-formatters/.scenarios.lock/symfony4/composer.json b/vendor/consolidation/output-formatters/.scenarios.lock/symfony4/composer.json
index 1767205715..7368e472a3 100644
--- a/vendor/consolidation/output-formatters/.scenarios.lock/symfony4/composer.json
+++ b/vendor/consolidation/output-formatters/.scenarios.lock/symfony4/composer.json
@@ -22,7 +22,7 @@
         "symfony/console": "^4.0",
         "php": ">=5.4.0",
         "dflydev/dot-access-data": "^1.1.0",
-        "symfony/finder": "^2.5|^3|^4"
+        "symfony/finder": "^2.5|^3|^4|^5"
     },
     "require-dev": {
         "phpunit/phpunit": "^6",
diff --git a/vendor/consolidation/output-formatters/.scenarios.lock/symfony4/composer.lock b/vendor/consolidation/output-formatters/.scenarios.lock/symfony4/composer.lock
index c43421e24c..4982bda580 100644
--- a/vendor/consolidation/output-formatters/.scenarios.lock/symfony4/composer.lock
+++ b/vendor/consolidation/output-formatters/.scenarios.lock/symfony4/composer.lock
@@ -4,7 +4,7 @@
         "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",
         "This file is @generated automatically"
     ],
-    "content-hash": "8be5eb98a4ffa6ddd6a6c8f27bf99e5a",
+    "content-hash": "a2c830502baaa91f8f4c59cc4815fb06",
     "packages": [
         {
             "name": "dflydev/dot-access-data",
@@ -65,38 +65,96 @@
             ],
             "time": "2017-01-20T21:14:22+00:00"
         },
+        {
+            "name": "psr/container",
+            "version": "1.0.0",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/php-fig/container.git",
+                "reference": "b7ce3b176482dbbc1245ebf52b181af44c2cf55f"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/php-fig/container/zipball/b7ce3b176482dbbc1245ebf52b181af44c2cf55f",
+                "reference": "b7ce3b176482dbbc1245ebf52b181af44c2cf55f",
+                "shasum": ""
+            },
+            "require": {
+                "php": ">=5.3.0"
+            },
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "1.0.x-dev"
+                }
+            },
+            "autoload": {
+                "psr-4": {
+                    "Psr\\Container\\": "src/"
+                }
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "MIT"
+            ],
+            "authors": [
+                {
+                    "name": "PHP-FIG",
+                    "homepage": "http://www.php-fig.org/"
+                }
+            ],
+            "description": "Common Container Interface (PHP FIG PSR-11)",
+            "homepage": "https://github.com/php-fig/container",
+            "keywords": [
+                "PSR-11",
+                "container",
+                "container-interface",
+                "container-interop",
+                "psr"
+            ],
+            "time": "2017-02-14T16:28:37+00:00"
+        },
         {
             "name": "symfony/console",
-            "version": "v4.1.7",
+            "version": "v4.4.15",
             "source": {
                 "type": "git",
                 "url": "https://github.com/symfony/console.git",
-                "reference": "432122af37d8cd52fba1b294b11976e0d20df595"
+                "reference": "90933b39c7b312fc3ceaa1ddeac7eb48cb953124"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/symfony/console/zipball/432122af37d8cd52fba1b294b11976e0d20df595",
-                "reference": "432122af37d8cd52fba1b294b11976e0d20df595",
+                "url": "https://api.github.com/repos/symfony/console/zipball/90933b39c7b312fc3ceaa1ddeac7eb48cb953124",
+                "reference": "90933b39c7b312fc3ceaa1ddeac7eb48cb953124",
                 "shasum": ""
             },
             "require": {
-                "php": "^7.1.3",
-                "symfony/polyfill-mbstring": "~1.0"
+                "php": ">=7.1.3",
+                "symfony/polyfill-mbstring": "~1.0",
+                "symfony/polyfill-php73": "^1.8",
+                "symfony/polyfill-php80": "^1.15",
+                "symfony/service-contracts": "^1.1|^2"
             },
             "conflict": {
                 "symfony/dependency-injection": "<3.4",
+                "symfony/event-dispatcher": "<4.3|>=5",
+                "symfony/lock": "<4.4",
                 "symfony/process": "<3.3"
             },
+            "provide": {
+                "psr/log-implementation": "1.0"
+            },
             "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"
+                "symfony/config": "^3.4|^4.0|^5.0",
+                "symfony/dependency-injection": "^3.4|^4.0|^5.0",
+                "symfony/event-dispatcher": "^4.3",
+                "symfony/lock": "^4.4|^5.0",
+                "symfony/process": "^3.4|^4.0|^5.0",
+                "symfony/var-dumper": "^4.3|^5.0"
             },
             "suggest": {
-                "psr/log-implementation": "For using the console logger",
+                "psr/log": "For using the console logger",
                 "symfony/event-dispatcher": "",
                 "symfony/lock": "",
                 "symfony/process": ""
@@ -104,7 +162,7 @@
             "type": "library",
             "extra": {
                 "branch-alias": {
-                    "dev-master": "4.1-dev"
+                    "dev-master": "4.4-dev"
                 }
             },
             "autoload": {
@@ -131,29 +189,43 @@
             ],
             "description": "Symfony Console Component",
             "homepage": "https://symfony.com",
-            "time": "2018-10-31T09:30:44+00:00"
+            "funding": [
+                {
+                    "url": "https://symfony.com/sponsor",
+                    "type": "custom"
+                },
+                {
+                    "url": "https://github.com/fabpot",
+                    "type": "github"
+                },
+                {
+                    "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+                    "type": "tidelift"
+                }
+            ],
+            "time": "2020-09-15T07:58:55+00:00"
         },
         {
             "name": "symfony/finder",
-            "version": "v4.1.7",
+            "version": "v4.4.15",
             "source": {
                 "type": "git",
                 "url": "https://github.com/symfony/finder.git",
-                "reference": "1f17195b44543017a9c9b2d437c670627e96ad06"
+                "reference": "60d08560f9aa72997c44077c40d47aa28a963230"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/symfony/finder/zipball/1f17195b44543017a9c9b2d437c670627e96ad06",
-                "reference": "1f17195b44543017a9c9b2d437c670627e96ad06",
+                "url": "https://api.github.com/repos/symfony/finder/zipball/60d08560f9aa72997c44077c40d47aa28a963230",
+                "reference": "60d08560f9aa72997c44077c40d47aa28a963230",
                 "shasum": ""
             },
             "require": {
-                "php": "^7.1.3"
+                "php": ">=7.1.3"
             },
             "type": "library",
             "extra": {
                 "branch-alias": {
-                    "dev-master": "4.1-dev"
+                    "dev-master": "4.4-dev"
                 }
             },
             "autoload": {
@@ -180,20 +252,34 @@
             ],
             "description": "Symfony Finder Component",
             "homepage": "https://symfony.com",
-            "time": "2018-10-03T08:47:56+00:00"
+            "funding": [
+                {
+                    "url": "https://symfony.com/sponsor",
+                    "type": "custom"
+                },
+                {
+                    "url": "https://github.com/fabpot",
+                    "type": "github"
+                },
+                {
+                    "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+                    "type": "tidelift"
+                }
+            ],
+            "time": "2020-10-02T07:34:48+00:00"
         },
         {
             "name": "symfony/polyfill-mbstring",
-            "version": "v1.10.0",
+            "version": "v1.18.1",
             "source": {
                 "type": "git",
                 "url": "https://github.com/symfony/polyfill-mbstring.git",
-                "reference": "c79c051f5b3a46be09205c73b80b346e4153e494"
+                "reference": "a6977d63bf9a0ad4c65cd352709e230876f9904a"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/c79c051f5b3a46be09205c73b80b346e4153e494",
-                "reference": "c79c051f5b3a46be09205c73b80b346e4153e494",
+                "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/a6977d63bf9a0ad4c65cd352709e230876f9904a",
+                "reference": "a6977d63bf9a0ad4c65cd352709e230876f9904a",
                 "shasum": ""
             },
             "require": {
@@ -205,7 +291,11 @@
             "type": "library",
             "extra": {
                 "branch-alias": {
-                    "dev-master": "1.9-dev"
+                    "dev-master": "1.18-dev"
+                },
+                "thanks": {
+                    "name": "symfony/polyfill",
+                    "url": "https://github.com/symfony/polyfill"
                 }
             },
             "autoload": {
@@ -239,33 +329,281 @@
                 "portable",
                 "shim"
             ],
-            "time": "2018-09-21T13:07:52+00:00"
+            "funding": [
+                {
+                    "url": "https://symfony.com/sponsor",
+                    "type": "custom"
+                },
+                {
+                    "url": "https://github.com/fabpot",
+                    "type": "github"
+                },
+                {
+                    "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+                    "type": "tidelift"
+                }
+            ],
+            "time": "2020-07-14T12:35:20+00:00"
+        },
+        {
+            "name": "symfony/polyfill-php73",
+            "version": "v1.18.1",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/symfony/polyfill-php73.git",
+                "reference": "fffa1a52a023e782cdcc221d781fe1ec8f87fcca"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/symfony/polyfill-php73/zipball/fffa1a52a023e782cdcc221d781fe1ec8f87fcca",
+                "reference": "fffa1a52a023e782cdcc221d781fe1ec8f87fcca",
+                "shasum": ""
+            },
+            "require": {
+                "php": ">=5.3.3"
+            },
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "1.18-dev"
+                },
+                "thanks": {
+                    "name": "symfony/polyfill",
+                    "url": "https://github.com/symfony/polyfill"
+                }
+            },
+            "autoload": {
+                "psr-4": {
+                    "Symfony\\Polyfill\\Php73\\": ""
+                },
+                "files": [
+                    "bootstrap.php"
+                ],
+                "classmap": [
+                    "Resources/stubs"
+                ]
+            },
+            "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.3+ features to lower PHP versions",
+            "homepage": "https://symfony.com",
+            "keywords": [
+                "compatibility",
+                "polyfill",
+                "portable",
+                "shim"
+            ],
+            "funding": [
+                {
+                    "url": "https://symfony.com/sponsor",
+                    "type": "custom"
+                },
+                {
+                    "url": "https://github.com/fabpot",
+                    "type": "github"
+                },
+                {
+                    "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+                    "type": "tidelift"
+                }
+            ],
+            "time": "2020-07-14T12:35:20+00:00"
+        },
+        {
+            "name": "symfony/polyfill-php80",
+            "version": "v1.18.1",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/symfony/polyfill-php80.git",
+                "reference": "d87d5766cbf48d72388a9f6b85f280c8ad51f981"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/symfony/polyfill-php80/zipball/d87d5766cbf48d72388a9f6b85f280c8ad51f981",
+                "reference": "d87d5766cbf48d72388a9f6b85f280c8ad51f981",
+                "shasum": ""
+            },
+            "require": {
+                "php": ">=7.0.8"
+            },
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "1.18-dev"
+                },
+                "thanks": {
+                    "name": "symfony/polyfill",
+                    "url": "https://github.com/symfony/polyfill"
+                }
+            },
+            "autoload": {
+                "psr-4": {
+                    "Symfony\\Polyfill\\Php80\\": ""
+                },
+                "files": [
+                    "bootstrap.php"
+                ],
+                "classmap": [
+                    "Resources/stubs"
+                ]
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "MIT"
+            ],
+            "authors": [
+                {
+                    "name": "Ion Bazan",
+                    "email": "ion.bazan@gmail.com"
+                },
+                {
+                    "name": "Nicolas Grekas",
+                    "email": "p@tchwork.com"
+                },
+                {
+                    "name": "Symfony Community",
+                    "homepage": "https://symfony.com/contributors"
+                }
+            ],
+            "description": "Symfony polyfill backporting some PHP 8.0+ features to lower PHP versions",
+            "homepage": "https://symfony.com",
+            "keywords": [
+                "compatibility",
+                "polyfill",
+                "portable",
+                "shim"
+            ],
+            "funding": [
+                {
+                    "url": "https://symfony.com/sponsor",
+                    "type": "custom"
+                },
+                {
+                    "url": "https://github.com/fabpot",
+                    "type": "github"
+                },
+                {
+                    "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+                    "type": "tidelift"
+                }
+            ],
+            "time": "2020-07-14T12:35:20+00:00"
+        },
+        {
+            "name": "symfony/service-contracts",
+            "version": "v1.1.9",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/symfony/service-contracts.git",
+                "reference": "b776d18b303a39f56c63747bcb977ad4b27aca26"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/symfony/service-contracts/zipball/b776d18b303a39f56c63747bcb977ad4b27aca26",
+                "reference": "b776d18b303a39f56c63747bcb977ad4b27aca26",
+                "shasum": ""
+            },
+            "require": {
+                "php": ">=7.1.3",
+                "psr/container": "^1.0"
+            },
+            "suggest": {
+                "symfony/service-implementation": ""
+            },
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "1.1-dev"
+                },
+                "thanks": {
+                    "name": "symfony/contracts",
+                    "url": "https://github.com/symfony/contracts"
+                }
+            },
+            "autoload": {
+                "psr-4": {
+                    "Symfony\\Contracts\\Service\\": ""
+                }
+            },
+            "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": "Generic abstractions related to writing services",
+            "homepage": "https://symfony.com",
+            "keywords": [
+                "abstractions",
+                "contracts",
+                "decoupling",
+                "interfaces",
+                "interoperability",
+                "standards"
+            ],
+            "funding": [
+                {
+                    "url": "https://symfony.com/sponsor",
+                    "type": "custom"
+                },
+                {
+                    "url": "https://github.com/fabpot",
+                    "type": "github"
+                },
+                {
+                    "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+                    "type": "tidelift"
+                }
+            ],
+            "time": "2020-07-06T13:19:58+00:00"
         }
     ],
     "packages-dev": [
         {
             "name": "doctrine/instantiator",
-            "version": "1.1.0",
+            "version": "1.3.1",
             "source": {
                 "type": "git",
                 "url": "https://github.com/doctrine/instantiator.git",
-                "reference": "185b8868aa9bf7159f5f953ed5afb2d7fcdc3bda"
+                "reference": "f350df0268e904597e3bd9c4685c53e0e333feea"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/doctrine/instantiator/zipball/185b8868aa9bf7159f5f953ed5afb2d7fcdc3bda",
-                "reference": "185b8868aa9bf7159f5f953ed5afb2d7fcdc3bda",
+                "url": "https://api.github.com/repos/doctrine/instantiator/zipball/f350df0268e904597e3bd9c4685c53e0e333feea",
+                "reference": "f350df0268e904597e3bd9c4685c53e0e333feea",
                 "shasum": ""
             },
             "require": {
-                "php": "^7.1"
+                "php": "^7.1 || ^8.0"
             },
             "require-dev": {
-                "athletic/athletic": "~0.1.8",
+                "doctrine/coding-standard": "^6.0",
                 "ext-pdo": "*",
                 "ext-phar": "*",
-                "phpunit/phpunit": "^6.2.3",
-                "squizlabs/php_codesniffer": "^3.0.2"
+                "phpbench/phpbench": "^0.13",
+                "phpstan/phpstan-phpunit": "^0.11",
+                "phpstan/phpstan-shim": "^0.11",
+                "phpunit/phpunit": "^7.0"
             },
             "type": "library",
             "extra": {
@@ -290,36 +628,50 @@
                 }
             ],
             "description": "A small, lightweight utility to instantiate objects in PHP without invoking their constructors",
-            "homepage": "https://github.com/doctrine/instantiator",
+            "homepage": "https://www.doctrine-project.org/projects/instantiator.html",
             "keywords": [
                 "constructor",
                 "instantiate"
             ],
-            "time": "2017-07-22T11:58:36+00:00"
+            "funding": [
+                {
+                    "url": "https://www.doctrine-project.org/sponsorship.html",
+                    "type": "custom"
+                },
+                {
+                    "url": "https://www.patreon.com/phpdoctrine",
+                    "type": "patreon"
+                },
+                {
+                    "url": "https://tidelift.com/funding/github/packagist/doctrine%2Finstantiator",
+                    "type": "tidelift"
+                }
+            ],
+            "time": "2020-05-29T17:27:14+00:00"
         },
         {
             "name": "g1a/composer-test-scenarios",
-            "version": "3.0.0",
+            "version": "3.2.0",
             "source": {
                 "type": "git",
                 "url": "https://github.com/g1a/composer-test-scenarios.git",
-                "reference": "2a7156f1572898888ea50ad1d48a6b4d3f9fbf78"
+                "reference": "e7394206d845fd593d325440507fb940bef8cb62"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/g1a/composer-test-scenarios/zipball/2a7156f1572898888ea50ad1d48a6b4d3f9fbf78",
-                "reference": "2a7156f1572898888ea50ad1d48a6b4d3f9fbf78",
+                "url": "https://api.github.com/repos/g1a/composer-test-scenarios/zipball/e7394206d845fd593d325440507fb940bef8cb62",
+                "reference": "e7394206d845fd593d325440507fb940bef8cb62",
                 "shasum": ""
             },
             "require": {
-                "composer-plugin-api": "^1.0.0",
+                "composer-plugin-api": "^1.0.0 || ^2.0.0",
                 "php": ">=5.4"
             },
             "require-dev": {
-                "composer/composer": "^1.7",
+                "composer/composer": "^1.10.6 || ^2.0@rc",
                 "php-coveralls/php-coveralls": "^1.0",
                 "phpunit/phpunit": "^4.8.36|^6",
-                "squizlabs/php_codesniffer": "^2.8"
+                "squizlabs/php_codesniffer": "^3.5"
             },
             "bin": [
                 "scripts/dependency-licenses"
@@ -328,7 +680,7 @@
             "extra": {
                 "class": "ComposerTestScenarios\\Plugin",
                 "branch-alias": {
-                    "dev-master": "3.x-dev"
+                    "dev-main": "3.x-dev"
                 }
             },
             "autoload": {
@@ -347,26 +699,26 @@
                 }
             ],
             "description": "Useful scripts for testing multiple sets of Composer dependencies.",
-            "time": "2018-11-22T05:10:20+00:00"
+            "time": "2020-09-28T20:54:35+00:00"
         },
         {
             "name": "guzzle/guzzle",
-            "version": "v3.9.3",
+            "version": "v3.8.1",
             "source": {
                 "type": "git",
-                "url": "https://github.com/guzzle/guzzle3.git",
-                "reference": "0645b70d953bc1c067bbc8d5bc53194706b628d9"
+                "url": "https://github.com/guzzle/guzzle.git",
+                "reference": "4de0618a01b34aa1c8c33a3f13f396dcd3882eba"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/guzzle/guzzle3/zipball/0645b70d953bc1c067bbc8d5bc53194706b628d9",
-                "reference": "0645b70d953bc1c067bbc8d5bc53194706b628d9",
+                "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"
+                "symfony/event-dispatcher": ">=2.1"
             },
             "replace": {
                 "guzzle/batch": "self.version",
@@ -393,21 +745,18 @@
                 "guzzle/stream": "self.version"
             },
             "require-dev": {
-                "doctrine/cache": "~1.3",
-                "monolog/monolog": "~1.0",
+                "doctrine/cache": "*",
+                "monolog/monolog": "1.*",
                 "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."
+                "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.9-dev"
+                    "dev-master": "3.8-dev"
                 }
             },
             "autoload": {
@@ -431,7 +780,7 @@
                     "homepage": "https://github.com/guzzle/guzzle/contributors"
                 }
             ],
-            "description": "PHP HTTP client. This library is deprecated in favor of https://packagist.org/packages/guzzlehttp/guzzle",
+            "description": "Guzzle is a PHP HTTP client library and framework for building RESTful web service clients",
             "homepage": "http://guzzlephp.org/",
             "keywords": [
                 "client",
@@ -443,24 +792,24 @@
                 "web service"
             ],
             "abandoned": "guzzlehttp/guzzle",
-            "time": "2015-03-18T18:23:50+00:00"
+            "time": "2014-01-28T22:29:15+00:00"
         },
         {
             "name": "myclabs/deep-copy",
-            "version": "1.8.1",
+            "version": "1.10.1",
             "source": {
                 "type": "git",
                 "url": "https://github.com/myclabs/DeepCopy.git",
-                "reference": "3e01bdad3e18354c3dce54466b7fbe33a9f9f7f8"
+                "reference": "969b211f9a51aa1f6c01d1d2aef56d3bd91598e5"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/3e01bdad3e18354c3dce54466b7fbe33a9f9f7f8",
-                "reference": "3e01bdad3e18354c3dce54466b7fbe33a9f9f7f8",
+                "url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/969b211f9a51aa1f6c01d1d2aef56d3bd91598e5",
+                "reference": "969b211f9a51aa1f6c01d1d2aef56d3bd91598e5",
                 "shasum": ""
             },
             "require": {
-                "php": "^7.1"
+                "php": "^7.1 || ^8.0"
             },
             "replace": {
                 "myclabs/deep-copy": "self.version"
@@ -491,7 +840,13 @@
                 "object",
                 "object graph"
             ],
-            "time": "2018-06-11T23:09:50+00:00"
+            "funding": [
+                {
+                    "url": "https://tidelift.com/funding/github/packagist/myclabs/deep-copy",
+                    "type": "tidelift"
+                }
+            ],
+            "time": "2020-06-29T13:22:24+00:00"
         },
         {
             "name": "phar-io/manifest",
@@ -658,35 +1013,30 @@
         },
         {
             "name": "phpdocumentor/reflection-common",
-            "version": "1.0.1",
+            "version": "2.1.0",
             "source": {
                 "type": "git",
                 "url": "https://github.com/phpDocumentor/ReflectionCommon.git",
-                "reference": "21bdeb5f65d7ebf9f43b1b25d404f87deab5bfb6"
+                "reference": "6568f4687e5b41b054365f9ae03fcb1ed5f2069b"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/phpDocumentor/ReflectionCommon/zipball/21bdeb5f65d7ebf9f43b1b25d404f87deab5bfb6",
-                "reference": "21bdeb5f65d7ebf9f43b1b25d404f87deab5bfb6",
+                "url": "https://api.github.com/repos/phpDocumentor/ReflectionCommon/zipball/6568f4687e5b41b054365f9ae03fcb1ed5f2069b",
+                "reference": "6568f4687e5b41b054365f9ae03fcb1ed5f2069b",
                 "shasum": ""
             },
             "require": {
-                "php": ">=5.5"
-            },
-            "require-dev": {
-                "phpunit/phpunit": "^4.6"
+                "php": ">=7.1"
             },
             "type": "library",
             "extra": {
                 "branch-alias": {
-                    "dev-master": "1.0.x-dev"
+                    "dev-master": "2.x-dev"
                 }
             },
             "autoload": {
                 "psr-4": {
-                    "phpDocumentor\\Reflection\\": [
-                        "src"
-                    ]
+                    "phpDocumentor\\Reflection\\": "src/"
                 }
             },
             "notification-url": "https://packagist.org/downloads/",
@@ -708,31 +1058,32 @@
                 "reflection",
                 "static analysis"
             ],
-            "time": "2017-09-11T18:02:19+00:00"
+            "time": "2020-04-27T09:25:28+00:00"
         },
         {
             "name": "phpdocumentor/reflection-docblock",
-            "version": "4.3.0",
+            "version": "4.3.4",
             "source": {
                 "type": "git",
                 "url": "https://github.com/phpDocumentor/ReflectionDocBlock.git",
-                "reference": "94fd0001232e47129dd3504189fa1c7225010d08"
+                "reference": "da3fd972d6bafd628114f7e7e036f45944b62e9c"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/phpDocumentor/ReflectionDocBlock/zipball/94fd0001232e47129dd3504189fa1c7225010d08",
-                "reference": "94fd0001232e47129dd3504189fa1c7225010d08",
+                "url": "https://api.github.com/repos/phpDocumentor/ReflectionDocBlock/zipball/da3fd972d6bafd628114f7e7e036f45944b62e9c",
+                "reference": "da3fd972d6bafd628114f7e7e036f45944b62e9c",
                 "shasum": ""
             },
             "require": {
                 "php": "^7.0",
-                "phpdocumentor/reflection-common": "^1.0.0",
-                "phpdocumentor/type-resolver": "^0.4.0",
+                "phpdocumentor/reflection-common": "^1.0.0 || ^2.0.0",
+                "phpdocumentor/type-resolver": "~0.4 || ^1.0.0",
                 "webmozart/assert": "^1.0"
             },
             "require-dev": {
-                "doctrine/instantiator": "~1.0.5",
+                "doctrine/instantiator": "^1.0.5",
                 "mockery/mockery": "^1.0",
+                "phpdocumentor/type-resolver": "0.4.*",
                 "phpunit/phpunit": "^6.4"
             },
             "type": "library",
@@ -759,41 +1110,40 @@
                 }
             ],
             "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"
+            "time": "2019-12-28T18:55:12+00:00"
         },
         {
             "name": "phpdocumentor/type-resolver",
-            "version": "0.4.0",
+            "version": "1.0.1",
             "source": {
                 "type": "git",
                 "url": "https://github.com/phpDocumentor/TypeResolver.git",
-                "reference": "9c977708995954784726e25d0cd1dddf4e65b0f7"
+                "reference": "2e32a6d48972b2c1976ed5d8967145b6cec4a4a9"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/phpDocumentor/TypeResolver/zipball/9c977708995954784726e25d0cd1dddf4e65b0f7",
-                "reference": "9c977708995954784726e25d0cd1dddf4e65b0f7",
+                "url": "https://api.github.com/repos/phpDocumentor/TypeResolver/zipball/2e32a6d48972b2c1976ed5d8967145b6cec4a4a9",
+                "reference": "2e32a6d48972b2c1976ed5d8967145b6cec4a4a9",
                 "shasum": ""
             },
             "require": {
-                "php": "^5.5 || ^7.0",
-                "phpdocumentor/reflection-common": "^1.0"
+                "php": "^7.1",
+                "phpdocumentor/reflection-common": "^2.0"
             },
             "require-dev": {
-                "mockery/mockery": "^0.9.4",
-                "phpunit/phpunit": "^5.2||^4.8.24"
+                "ext-tokenizer": "^7.1",
+                "mockery/mockery": "~1",
+                "phpunit/phpunit": "^7.0"
             },
             "type": "library",
             "extra": {
                 "branch-alias": {
-                    "dev-master": "1.0.x-dev"
+                    "dev-master": "1.x-dev"
                 }
             },
             "autoload": {
                 "psr-4": {
-                    "phpDocumentor\\Reflection\\": [
-                        "src/"
-                    ]
+                    "phpDocumentor\\Reflection\\": "src"
                 }
             },
             "notification-url": "https://packagist.org/downloads/",
@@ -806,42 +1156,43 @@
                     "email": "me@mikevanriel.com"
                 }
             ],
-            "time": "2017-07-14T14:27:02+00:00"
+            "description": "A PSR-5 based resolver of Class names, Types and Structural Element Names",
+            "time": "2019-08-22T18:11:29+00:00"
         },
         {
             "name": "phpspec/prophecy",
-            "version": "1.8.0",
+            "version": "v1.10.3",
             "source": {
                 "type": "git",
                 "url": "https://github.com/phpspec/prophecy.git",
-                "reference": "4ba436b55987b4bf311cb7c6ba82aa528aac0a06"
+                "reference": "451c3cd1418cf640de218914901e51b064abb093"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/phpspec/prophecy/zipball/4ba436b55987b4bf311cb7c6ba82aa528aac0a06",
-                "reference": "4ba436b55987b4bf311cb7c6ba82aa528aac0a06",
+                "url": "https://api.github.com/repos/phpspec/prophecy/zipball/451c3cd1418cf640de218914901e51b064abb093",
+                "reference": "451c3cd1418cf640de218914901e51b064abb093",
                 "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"
+                "phpdocumentor/reflection-docblock": "^2.0|^3.0.2|^4.0|^5.0",
+                "sebastian/comparator": "^1.2.3|^2.0|^3.0|^4.0",
+                "sebastian/recursion-context": "^1.0|^2.0|^3.0|^4.0"
             },
             "require-dev": {
-                "phpspec/phpspec": "^2.5|^3.2",
+                "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"
+                    "dev-master": "1.10.x-dev"
                 }
             },
             "autoload": {
-                "psr-0": {
-                    "Prophecy\\": "src/"
+                "psr-4": {
+                    "Prophecy\\": "src/Prophecy"
                 }
             },
             "notification-url": "https://packagist.org/downloads/",
@@ -869,7 +1220,7 @@
                 "spy",
                 "stub"
             ],
-            "time": "2018-08-05T17:53:17+00:00"
+            "time": "2020-03-05T15:02:03+00:00"
         },
         {
             "name": "phpunit/php-code-coverage",
@@ -1118,20 +1469,21 @@
             "keywords": [
                 "tokenizer"
             ],
+            "abandoned": true,
             "time": "2017-11-27T05:48:46+00:00"
         },
         {
             "name": "phpunit/phpunit",
-            "version": "6.5.13",
+            "version": "6.5.14",
             "source": {
                 "type": "git",
                 "url": "https://github.com/sebastianbergmann/phpunit.git",
-                "reference": "0973426fb012359b2f18d3bd1e90ef1172839693"
+                "reference": "bac23fe7ff13dbdb461481f706f0e9fe746334b7"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/0973426fb012359b2f18d3bd1e90ef1172839693",
-                "reference": "0973426fb012359b2f18d3bd1e90ef1172839693",
+                "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/bac23fe7ff13dbdb461481f706f0e9fe746334b7",
+                "reference": "bac23fe7ff13dbdb461481f706f0e9fe746334b7",
                 "shasum": ""
             },
             "require": {
@@ -1202,7 +1554,7 @@
                 "testing",
                 "xunit"
             ],
-            "time": "2018-09-08T15:10:43+00:00"
+            "time": "2019-02-01T05:22:47+00:00"
         },
         {
             "name": "phpunit/phpunit-mock-objects",
@@ -1261,20 +1613,21 @@
                 "mock",
                 "xunit"
             ],
+            "abandoned": true,
             "time": "2018-08-09T05:50:03+00:00"
         },
         {
             "name": "psr/log",
-            "version": "1.1.0",
+            "version": "1.1.3",
             "source": {
                 "type": "git",
                 "url": "https://github.com/php-fig/log.git",
-                "reference": "6c001f1daafa3a3ac1d8ff69ee4db8e799a654dd"
+                "reference": "0f73288fd15629204f9d42b7055f72dacbe811fc"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/php-fig/log/zipball/6c001f1daafa3a3ac1d8ff69ee4db8e799a654dd",
-                "reference": "6c001f1daafa3a3ac1d8ff69ee4db8e799a654dd",
+                "url": "https://api.github.com/repos/php-fig/log/zipball/0f73288fd15629204f9d42b7055f72dacbe811fc",
+                "reference": "0f73288fd15629204f9d42b7055f72dacbe811fc",
                 "shasum": ""
             },
             "require": {
@@ -1283,7 +1636,7 @@
             "type": "library",
             "extra": {
                 "branch-alias": {
-                    "dev-master": "1.0.x-dev"
+                    "dev-master": "1.1.x-dev"
                 }
             },
             "autoload": {
@@ -1308,7 +1661,7 @@
                 "psr",
                 "psr-3"
             ],
-            "time": "2018-11-20T15:27:04+00:00"
+            "time": "2020-03-23T09:12:05+00:00"
         },
         {
             "name": "sebastian/code-unit-reverse-lookup",
@@ -1523,16 +1876,16 @@
         },
         {
             "name": "sebastian/exporter",
-            "version": "3.1.0",
+            "version": "3.1.2",
             "source": {
                 "type": "git",
                 "url": "https://github.com/sebastianbergmann/exporter.git",
-                "reference": "234199f4528de6d12aaa58b612e98f7d36adb937"
+                "reference": "68609e1261d215ea5b21b7987539cbfbe156ec3e"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/234199f4528de6d12aaa58b612e98f7d36adb937",
-                "reference": "234199f4528de6d12aaa58b612e98f7d36adb937",
+                "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/68609e1261d215ea5b21b7987539cbfbe156ec3e",
+                "reference": "68609e1261d215ea5b21b7987539cbfbe156ec3e",
                 "shasum": ""
             },
             "require": {
@@ -1559,6 +1912,10 @@
                 "BSD-3-Clause"
             ],
             "authors": [
+                {
+                    "name": "Sebastian Bergmann",
+                    "email": "sebastian@phpunit.de"
+                },
                 {
                     "name": "Jeff Welch",
                     "email": "whatthejeff@gmail.com"
@@ -1567,17 +1924,13 @@
                     "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"
+                },
+                {
+                    "name": "Bernhard Schussek",
+                    "email": "bschussek@gmail.com"
                 }
             ],
             "description": "Provides the functionality to export PHP variables for visualization",
@@ -1586,7 +1939,7 @@
                 "export",
                 "exporter"
             ],
-            "time": "2017-04-03T13:19:02+00:00"
+            "time": "2019-09-14T09:02:43+00:00"
         },
         {
             "name": "sebastian/global-state",
@@ -1949,31 +2302,32 @@
         },
         {
             "name": "symfony/config",
-            "version": "v4.1.7",
+            "version": "v4.4.15",
             "source": {
                 "type": "git",
                 "url": "https://github.com/symfony/config.git",
-                "reference": "991fec8bbe77367fc8b48ecbaa8a4bd6e905a238"
+                "reference": "7c5a1002178a612787c291a4f515f87b19176b61"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/symfony/config/zipball/991fec8bbe77367fc8b48ecbaa8a4bd6e905a238",
-                "reference": "991fec8bbe77367fc8b48ecbaa8a4bd6e905a238",
+                "url": "https://api.github.com/repos/symfony/config/zipball/7c5a1002178a612787c291a4f515f87b19176b61",
+                "reference": "7c5a1002178a612787c291a4f515f87b19176b61",
                 "shasum": ""
             },
             "require": {
-                "php": "^7.1.3",
-                "symfony/filesystem": "~3.4|~4.0",
+                "php": ">=7.1.3",
+                "symfony/filesystem": "^3.4|^4.0|^5.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"
+                "symfony/event-dispatcher": "^3.4|^4.0|^5.0",
+                "symfony/finder": "^3.4|^4.0|^5.0",
+                "symfony/messenger": "^4.1|^5.0",
+                "symfony/service-contracts": "^1.1|^2",
+                "symfony/yaml": "^3.4|^4.0|^5.0"
             },
             "suggest": {
                 "symfony/yaml": "To use the yaml reference dumper"
@@ -1981,7 +2335,7 @@
             "type": "library",
             "extra": {
                 "branch-alias": {
-                    "dev-master": "4.1-dev"
+                    "dev-master": "4.4-dev"
                 }
             },
             "autoload": {
@@ -2008,31 +2362,56 @@
             ],
             "description": "Symfony Config Component",
             "homepage": "https://symfony.com",
-            "time": "2018-10-31T09:09:42+00:00"
+            "funding": [
+                {
+                    "url": "https://symfony.com/sponsor",
+                    "type": "custom"
+                },
+                {
+                    "url": "https://github.com/fabpot",
+                    "type": "github"
+                },
+                {
+                    "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+                    "type": "tidelift"
+                }
+            ],
+            "time": "2020-10-02T07:34:48+00:00"
         },
         {
             "name": "symfony/event-dispatcher",
-            "version": "v2.8.47",
+            "version": "v4.4.15",
             "source": {
                 "type": "git",
                 "url": "https://github.com/symfony/event-dispatcher.git",
-                "reference": "76494bc38ff38d90d01913d23b5271acd4d78dd3"
+                "reference": "e17bb5e0663dc725f7cdcafc932132735b4725cd"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/76494bc38ff38d90d01913d23b5271acd4d78dd3",
-                "reference": "76494bc38ff38d90d01913d23b5271acd4d78dd3",
+                "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/e17bb5e0663dc725f7cdcafc932132735b4725cd",
+                "reference": "e17bb5e0663dc725f7cdcafc932132735b4725cd",
                 "shasum": ""
             },
             "require": {
-                "php": ">=5.3.9"
+                "php": ">=7.1.3",
+                "symfony/event-dispatcher-contracts": "^1.1"
+            },
+            "conflict": {
+                "symfony/dependency-injection": "<3.4"
+            },
+            "provide": {
+                "psr/event-dispatcher-implementation": "1.0",
+                "symfony/event-dispatcher-implementation": "1.1"
             },
             "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"
+                "symfony/config": "^3.4|^4.0|^5.0",
+                "symfony/dependency-injection": "^3.4|^4.0|^5.0",
+                "symfony/error-handler": "~3.4|~4.4",
+                "symfony/expression-language": "^3.4|^4.0|^5.0",
+                "symfony/http-foundation": "^3.4|^4.0|^5.0",
+                "symfony/service-contracts": "^1.1|^2",
+                "symfony/stopwatch": "^3.4|^4.0|^5.0"
             },
             "suggest": {
                 "symfony/dependency-injection": "",
@@ -2041,7 +2420,7 @@
             "type": "library",
             "extra": {
                 "branch-alias": {
-                    "dev-master": "2.8-dev"
+                    "dev-master": "4.4-dev"
                 }
             },
             "autoload": {
@@ -2068,30 +2447,120 @@
             ],
             "description": "Symfony EventDispatcher Component",
             "homepage": "https://symfony.com",
-            "time": "2018-10-20T23:16:31+00:00"
+            "funding": [
+                {
+                    "url": "https://symfony.com/sponsor",
+                    "type": "custom"
+                },
+                {
+                    "url": "https://github.com/fabpot",
+                    "type": "github"
+                },
+                {
+                    "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+                    "type": "tidelift"
+                }
+            ],
+            "time": "2020-09-18T14:07:46+00:00"
+        },
+        {
+            "name": "symfony/event-dispatcher-contracts",
+            "version": "v1.1.9",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/symfony/event-dispatcher-contracts.git",
+                "reference": "84e23fdcd2517bf37aecbd16967e83f0caee25a7"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/symfony/event-dispatcher-contracts/zipball/84e23fdcd2517bf37aecbd16967e83f0caee25a7",
+                "reference": "84e23fdcd2517bf37aecbd16967e83f0caee25a7",
+                "shasum": ""
+            },
+            "require": {
+                "php": ">=7.1.3"
+            },
+            "suggest": {
+                "psr/event-dispatcher": "",
+                "symfony/event-dispatcher-implementation": ""
+            },
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "1.1-dev"
+                },
+                "thanks": {
+                    "name": "symfony/contracts",
+                    "url": "https://github.com/symfony/contracts"
+                }
+            },
+            "autoload": {
+                "psr-4": {
+                    "Symfony\\Contracts\\EventDispatcher\\": ""
+                }
+            },
+            "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": "Generic abstractions related to dispatching event",
+            "homepage": "https://symfony.com",
+            "keywords": [
+                "abstractions",
+                "contracts",
+                "decoupling",
+                "interfaces",
+                "interoperability",
+                "standards"
+            ],
+            "funding": [
+                {
+                    "url": "https://symfony.com/sponsor",
+                    "type": "custom"
+                },
+                {
+                    "url": "https://github.com/fabpot",
+                    "type": "github"
+                },
+                {
+                    "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+                    "type": "tidelift"
+                }
+            ],
+            "time": "2020-07-06T13:19:58+00:00"
         },
         {
             "name": "symfony/filesystem",
-            "version": "v4.1.7",
+            "version": "v4.4.15",
             "source": {
                 "type": "git",
                 "url": "https://github.com/symfony/filesystem.git",
-                "reference": "fd7bd6535beb1f0a0a9e3ee960666d0598546981"
+                "reference": "ebc51494739d3b081ea543ed7c462fa73a4f74db"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/symfony/filesystem/zipball/fd7bd6535beb1f0a0a9e3ee960666d0598546981",
-                "reference": "fd7bd6535beb1f0a0a9e3ee960666d0598546981",
+                "url": "https://api.github.com/repos/symfony/filesystem/zipball/ebc51494739d3b081ea543ed7c462fa73a4f74db",
+                "reference": "ebc51494739d3b081ea543ed7c462fa73a4f74db",
                 "shasum": ""
             },
             "require": {
-                "php": "^7.1.3",
+                "php": ">=7.1.3",
                 "symfony/polyfill-ctype": "~1.8"
             },
             "type": "library",
             "extra": {
                 "branch-alias": {
-                    "dev-master": "4.1-dev"
+                    "dev-master": "4.4-dev"
                 }
             },
             "autoload": {
@@ -2118,20 +2587,34 @@
             ],
             "description": "Symfony Filesystem Component",
             "homepage": "https://symfony.com",
-            "time": "2018-10-30T13:18:25+00:00"
+            "funding": [
+                {
+                    "url": "https://symfony.com/sponsor",
+                    "type": "custom"
+                },
+                {
+                    "url": "https://github.com/fabpot",
+                    "type": "github"
+                },
+                {
+                    "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+                    "type": "tidelift"
+                }
+            ],
+            "time": "2020-09-27T13:54:16+00:00"
         },
         {
             "name": "symfony/polyfill-ctype",
-            "version": "v1.10.0",
+            "version": "v1.18.1",
             "source": {
                 "type": "git",
                 "url": "https://github.com/symfony/polyfill-ctype.git",
-                "reference": "e3d826245268269cd66f8326bd8bc066687b4a19"
+                "reference": "1c302646f6efc070cd46856e600e5e0684d6b454"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/e3d826245268269cd66f8326bd8bc066687b4a19",
-                "reference": "e3d826245268269cd66f8326bd8bc066687b4a19",
+                "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/1c302646f6efc070cd46856e600e5e0684d6b454",
+                "reference": "1c302646f6efc070cd46856e600e5e0684d6b454",
                 "shasum": ""
             },
             "require": {
@@ -2143,7 +2626,11 @@
             "type": "library",
             "extra": {
                 "branch-alias": {
-                    "dev-master": "1.9-dev"
+                    "dev-master": "1.18-dev"
+                },
+                "thanks": {
+                    "name": "symfony/polyfill",
+                    "url": "https://github.com/symfony/polyfill"
                 }
             },
             "autoload": {
@@ -2159,13 +2646,13 @@
                 "MIT"
             ],
             "authors": [
-                {
-                    "name": "Symfony Community",
-                    "homepage": "https://symfony.com/contributors"
-                },
                 {
                     "name": "Gert de Pagter",
                     "email": "BackEndTea@gmail.com"
+                },
+                {
+                    "name": "Symfony Community",
+                    "homepage": "https://symfony.com/contributors"
                 }
             ],
             "description": "Symfony polyfill for ctype functions",
@@ -2176,20 +2663,34 @@
                 "polyfill",
                 "portable"
             ],
-            "time": "2018-08-06T14:22:27+00:00"
+            "funding": [
+                {
+                    "url": "https://symfony.com/sponsor",
+                    "type": "custom"
+                },
+                {
+                    "url": "https://github.com/fabpot",
+                    "type": "github"
+                },
+                {
+                    "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+                    "type": "tidelift"
+                }
+            ],
+            "time": "2020-07-14T12:35:20+00:00"
         },
         {
             "name": "symfony/polyfill-php72",
-            "version": "v1.10.0",
+            "version": "v1.18.1",
             "source": {
                 "type": "git",
                 "url": "https://github.com/symfony/polyfill-php72.git",
-                "reference": "9050816e2ca34a8e916c3a0ae8b9c2fccf68b631"
+                "reference": "639447d008615574653fb3bc60d1986d7172eaae"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/symfony/polyfill-php72/zipball/9050816e2ca34a8e916c3a0ae8b9c2fccf68b631",
-                "reference": "9050816e2ca34a8e916c3a0ae8b9c2fccf68b631",
+                "url": "https://api.github.com/repos/symfony/polyfill-php72/zipball/639447d008615574653fb3bc60d1986d7172eaae",
+                "reference": "639447d008615574653fb3bc60d1986d7172eaae",
                 "shasum": ""
             },
             "require": {
@@ -2198,7 +2699,11 @@
             "type": "library",
             "extra": {
                 "branch-alias": {
-                    "dev-master": "1.9-dev"
+                    "dev-master": "1.18-dev"
+                },
+                "thanks": {
+                    "name": "symfony/polyfill",
+                    "url": "https://github.com/symfony/polyfill"
                 }
             },
             "autoload": {
@@ -2231,29 +2736,44 @@
                 "portable",
                 "shim"
             ],
-            "time": "2018-09-21T13:07:52+00:00"
+            "funding": [
+                {
+                    "url": "https://symfony.com/sponsor",
+                    "type": "custom"
+                },
+                {
+                    "url": "https://github.com/fabpot",
+                    "type": "github"
+                },
+                {
+                    "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+                    "type": "tidelift"
+                }
+            ],
+            "time": "2020-07-14T12:35:20+00:00"
         },
         {
             "name": "symfony/stopwatch",
-            "version": "v4.1.7",
+            "version": "v4.4.15",
             "source": {
                 "type": "git",
                 "url": "https://github.com/symfony/stopwatch.git",
-                "reference": "5bfc064125b73ff81229e19381ce1c34d3416f4b"
+                "reference": "6f89e19772cf61b3c65bab329fe0e318259fbd91"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/symfony/stopwatch/zipball/5bfc064125b73ff81229e19381ce1c34d3416f4b",
-                "reference": "5bfc064125b73ff81229e19381ce1c34d3416f4b",
+                "url": "https://api.github.com/repos/symfony/stopwatch/zipball/6f89e19772cf61b3c65bab329fe0e318259fbd91",
+                "reference": "6f89e19772cf61b3c65bab329fe0e318259fbd91",
                 "shasum": ""
             },
             "require": {
-                "php": "^7.1.3"
+                "php": ">=7.1.3",
+                "symfony/service-contracts": "^1.0|^2"
             },
             "type": "library",
             "extra": {
                 "branch-alias": {
-                    "dev-master": "4.1-dev"
+                    "dev-master": "4.4-dev"
                 }
             },
             "autoload": {
@@ -2280,26 +2800,41 @@
             ],
             "description": "Symfony Stopwatch Component",
             "homepage": "https://symfony.com",
-            "time": "2018-10-02T12:40:59+00:00"
+            "funding": [
+                {
+                    "url": "https://symfony.com/sponsor",
+                    "type": "custom"
+                },
+                {
+                    "url": "https://github.com/fabpot",
+                    "type": "github"
+                },
+                {
+                    "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+                    "type": "tidelift"
+                }
+            ],
+            "time": "2020-09-02T16:08:58+00:00"
         },
         {
             "name": "symfony/var-dumper",
-            "version": "v4.1.7",
+            "version": "v4.4.15",
             "source": {
                 "type": "git",
                 "url": "https://github.com/symfony/var-dumper.git",
-                "reference": "60319b45653580b0cdacca499344577d87732f16"
+                "reference": "0dc22bdf9d1197467bb04d505355180b6f20bcca"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/symfony/var-dumper/zipball/60319b45653580b0cdacca499344577d87732f16",
-                "reference": "60319b45653580b0cdacca499344577d87732f16",
+                "url": "https://api.github.com/repos/symfony/var-dumper/zipball/0dc22bdf9d1197467bb04d505355180b6f20bcca",
+                "reference": "0dc22bdf9d1197467bb04d505355180b6f20bcca",
                 "shasum": ""
             },
             "require": {
-                "php": "^7.1.3",
+                "php": ">=7.1.3",
                 "symfony/polyfill-mbstring": "~1.0",
-                "symfony/polyfill-php72": "~1.5"
+                "symfony/polyfill-php72": "~1.5",
+                "symfony/polyfill-php80": "^1.15"
             },
             "conflict": {
                 "phpunit/phpunit": "<4.8.35|<5.4.3,>=5.0",
@@ -2307,8 +2842,9 @@
             },
             "require-dev": {
                 "ext-iconv": "*",
-                "symfony/process": "~3.4|~4.0",
-                "twig/twig": "~1.34|~2.4"
+                "symfony/console": "^3.4|^4.0|^5.0",
+                "symfony/process": "^4.4|^5.0",
+                "twig/twig": "^1.34|^2.4|^3.0"
             },
             "suggest": {
                 "ext-iconv": "To convert non-UTF-8 strings to UTF-8 (or symfony/polyfill-iconv in case ext-iconv cannot be used).",
@@ -2321,7 +2857,7 @@
             "type": "library",
             "extra": {
                 "branch-alias": {
-                    "dev-master": "4.1-dev"
+                    "dev-master": "4.4-dev"
                 }
             },
             "autoload": {
@@ -2355,31 +2891,45 @@
                 "debug",
                 "dump"
             ],
-            "time": "2018-10-02T16:36:10+00:00"
+            "funding": [
+                {
+                    "url": "https://symfony.com/sponsor",
+                    "type": "custom"
+                },
+                {
+                    "url": "https://github.com/fabpot",
+                    "type": "github"
+                },
+                {
+                    "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+                    "type": "tidelift"
+                }
+            ],
+            "time": "2020-09-18T08:35:10+00:00"
         },
         {
             "name": "symfony/yaml",
-            "version": "v4.1.7",
+            "version": "v4.4.15",
             "source": {
                 "type": "git",
                 "url": "https://github.com/symfony/yaml.git",
-                "reference": "367e689b2fdc19965be435337b50bc8adf2746c9"
+                "reference": "c7885964b1eceb70b0981556d0a9b01d2d97c8d1"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/symfony/yaml/zipball/367e689b2fdc19965be435337b50bc8adf2746c9",
-                "reference": "367e689b2fdc19965be435337b50bc8adf2746c9",
+                "url": "https://api.github.com/repos/symfony/yaml/zipball/c7885964b1eceb70b0981556d0a9b01d2d97c8d1",
+                "reference": "c7885964b1eceb70b0981556d0a9b01d2d97c8d1",
                 "shasum": ""
             },
             "require": {
-                "php": "^7.1.3",
+                "php": ">=7.1.3",
                 "symfony/polyfill-ctype": "~1.8"
             },
             "conflict": {
                 "symfony/console": "<3.4"
             },
             "require-dev": {
-                "symfony/console": "~3.4|~4.0"
+                "symfony/console": "^3.4|^4.0|^5.0"
             },
             "suggest": {
                 "symfony/console": "For validating YAML files using the lint command"
@@ -2387,7 +2937,7 @@
             "type": "library",
             "extra": {
                 "branch-alias": {
-                    "dev-master": "4.1-dev"
+                    "dev-master": "4.4-dev"
                 }
             },
             "autoload": {
@@ -2414,20 +2964,34 @@
             ],
             "description": "Symfony Yaml Component",
             "homepage": "https://symfony.com",
-            "time": "2018-10-02T16:36:10+00:00"
+            "funding": [
+                {
+                    "url": "https://symfony.com/sponsor",
+                    "type": "custom"
+                },
+                {
+                    "url": "https://github.com/fabpot",
+                    "type": "github"
+                },
+                {
+                    "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+                    "type": "tidelift"
+                }
+            ],
+            "time": "2020-09-27T03:36:23+00:00"
         },
         {
             "name": "theseer/tokenizer",
-            "version": "1.1.0",
+            "version": "1.1.3",
             "source": {
                 "type": "git",
                 "url": "https://github.com/theseer/tokenizer.git",
-                "reference": "cb2f008f3f05af2893a87208fe6a6c4985483f8b"
+                "reference": "11336f6f84e16a720dae9d8e6ed5019efa85a0f9"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/theseer/tokenizer/zipball/cb2f008f3f05af2893a87208fe6a6c4985483f8b",
-                "reference": "cb2f008f3f05af2893a87208fe6a6c4985483f8b",
+                "url": "https://api.github.com/repos/theseer/tokenizer/zipball/11336f6f84e16a720dae9d8e6ed5019efa85a0f9",
+                "reference": "11336f6f84e16a720dae9d8e6ed5019efa85a0f9",
                 "shasum": ""
             },
             "require": {
@@ -2454,7 +3018,7 @@
                 }
             ],
             "description": "A small library for converting tokenized PHP source code into XML and potentially other formats",
-            "time": "2017-04-07T12:08:54+00:00"
+            "time": "2019-06-13T22:48:21+00:00"
         },
         {
             "name": "victorjonsson/markdowndocs",
@@ -2502,31 +3066,30 @@
         },
         {
             "name": "webmozart/assert",
-            "version": "1.3.0",
+            "version": "1.9.1",
             "source": {
                 "type": "git",
                 "url": "https://github.com/webmozart/assert.git",
-                "reference": "0df1908962e7a3071564e857d86874dad1ef204a"
+                "reference": "bafc69caeb4d49c39fd0779086c03a3738cbb389"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/webmozart/assert/zipball/0df1908962e7a3071564e857d86874dad1ef204a",
-                "reference": "0df1908962e7a3071564e857d86874dad1ef204a",
+                "url": "https://api.github.com/repos/webmozart/assert/zipball/bafc69caeb4d49c39fd0779086c03a3738cbb389",
+                "reference": "bafc69caeb4d49c39fd0779086c03a3738cbb389",
                 "shasum": ""
             },
             "require": {
-                "php": "^5.3.3 || ^7.0"
+                "php": "^5.3.3 || ^7.0 || ^8.0",
+                "symfony/polyfill-ctype": "^1.8"
+            },
+            "conflict": {
+                "phpstan/phpstan": "<0.12.20",
+                "vimeo/psalm": "<3.9.1"
             },
             "require-dev": {
-                "phpunit/phpunit": "^4.6",
-                "sebastian/version": "^1.0.1"
+                "phpunit/phpunit": "^4.8.36 || ^7.5.13"
             },
             "type": "library",
-            "extra": {
-                "branch-alias": {
-                    "dev-master": "1.3-dev"
-                }
-            },
             "autoload": {
                 "psr-4": {
                     "Webmozart\\Assert\\": "src/"
@@ -2548,7 +3111,7 @@
                 "check",
                 "validate"
             ],
-            "time": "2018-01-29T19:49:41+00:00"
+            "time": "2020-07-08T17:02:28+00:00"
         }
     ],
     "aliases": [],
@@ -2562,5 +3125,6 @@
     "platform-dev": [],
     "platform-overrides": {
         "php": "7.1.3"
-    }
+    },
+    "plugin-api-version": "1.1.0"
 }
diff --git a/vendor/consolidation/output-formatters/CHANGELOG.md b/vendor/consolidation/output-formatters/CHANGELOG.md
index c7dfff53f0..87d0ac93d6 100644
--- a/vendor/consolidation/output-formatters/CHANGELOG.md
+++ b/vendor/consolidation/output-formatters/CHANGELOG.md
@@ -1,5 +1,9 @@
 # Change Log
 
+### 3.5.1 - 10 October 2020
+
+- Allow symfony/finder ^5 in output-formatters 3.x. (#87)
+
 ### 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.
diff --git a/vendor/consolidation/output-formatters/LICENSE b/vendor/consolidation/output-formatters/LICENSE
index 5f6b7d1744..3ce4262e0e 100644
--- a/vendor/consolidation/output-formatters/LICENSE
+++ b/vendor/consolidation/output-formatters/LICENSE
@@ -1,4 +1,4 @@
-Copyright (c) 2016-2018 Consolidation Org Developers
+Copyright (c) 2016-2020 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,8 +11,8 @@ DEPENDENCY LICENSES:
 
 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
+psr/log                    1.1.3    MIT
+symfony/console            v3.4.45  MIT
+symfony/debug              v3.4.45  MIT
+symfony/finder             v3.4.45  MIT
+symfony/polyfill-mbstring  v1.18.1  MIT
\ No newline at end of file
diff --git a/vendor/consolidation/output-formatters/composer.json b/vendor/consolidation/output-formatters/composer.json
index e8d9a04436..e3d6e8cd4e 100644
--- a/vendor/consolidation/output-formatters/composer.json
+++ b/vendor/consolidation/output-formatters/composer.json
@@ -22,7 +22,7 @@
         "php": ">=5.4.0",
         "dflydev/dot-access-data": "^1.1.0",
         "symfony/console": "^2.8|^3|^4",
-        "symfony/finder": "^2.5|^3|^4"
+        "symfony/finder": "^2.5|^3|^4|^5"
     },
     "require-dev": {
         "g1a/composer-test-scenarios": "^3",
@@ -59,6 +59,16 @@
     },
     "extra": {
         "scenarios": {
+            "finder5": {
+                "require": {
+                    "symfony/finder": "^5"
+                },
+                "config": {
+                    "platform": {
+                        "php": "7.2.5"
+                    }
+                }                
+            },
             "symfony4": {
                 "require": {
                     "symfony/console": "^4.0"
diff --git a/vendor/consolidation/output-formatters/composer.lock b/vendor/consolidation/output-formatters/composer.lock
index 2dfee91f87..d432b0d74e 100644
--- a/vendor/consolidation/output-formatters/composer.lock
+++ b/vendor/consolidation/output-formatters/composer.lock
@@ -4,7 +4,7 @@
         "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",
         "This file is @generated automatically"
     ],
-    "content-hash": "ee70f32509f8c43ebd69a87705e29cad",
+    "content-hash": "067804939d9b5ba5a90e64c9fe3cc29e",
     "packages": [
         {
             "name": "dflydev/dot-access-data",
@@ -67,16 +67,16 @@
         },
         {
             "name": "psr/log",
-            "version": "1.1.0",
+            "version": "1.1.3",
             "source": {
                 "type": "git",
                 "url": "https://github.com/php-fig/log.git",
-                "reference": "6c001f1daafa3a3ac1d8ff69ee4db8e799a654dd"
+                "reference": "0f73288fd15629204f9d42b7055f72dacbe811fc"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/php-fig/log/zipball/6c001f1daafa3a3ac1d8ff69ee4db8e799a654dd",
-                "reference": "6c001f1daafa3a3ac1d8ff69ee4db8e799a654dd",
+                "url": "https://api.github.com/repos/php-fig/log/zipball/0f73288fd15629204f9d42b7055f72dacbe811fc",
+                "reference": "0f73288fd15629204f9d42b7055f72dacbe811fc",
                 "shasum": ""
             },
             "require": {
@@ -85,7 +85,7 @@
             "type": "library",
             "extra": {
                 "branch-alias": {
-                    "dev-master": "1.0.x-dev"
+                    "dev-master": "1.1.x-dev"
                 }
             },
             "autoload": {
@@ -110,20 +110,20 @@
                 "psr",
                 "psr-3"
             ],
-            "time": "2018-11-20T15:27:04+00:00"
+            "time": "2020-03-23T09:12:05+00:00"
         },
         {
             "name": "symfony/console",
-            "version": "v3.4.18",
+            "version": "v3.4.45",
             "source": {
                 "type": "git",
                 "url": "https://github.com/symfony/console.git",
-                "reference": "1d228fb4602047d7b26a0554e0d3efd567da5803"
+                "reference": "b28996bc0a3b08914b2a8609163ec35b36b30685"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/symfony/console/zipball/1d228fb4602047d7b26a0554e0d3efd567da5803",
-                "reference": "1d228fb4602047d7b26a0554e0d3efd567da5803",
+                "url": "https://api.github.com/repos/symfony/console/zipball/b28996bc0a3b08914b2a8609163ec35b36b30685",
+                "reference": "b28996bc0a3b08914b2a8609163ec35b36b30685",
                 "shasum": ""
             },
             "require": {
@@ -135,6 +135,9 @@
                 "symfony/dependency-injection": "<3.4",
                 "symfony/process": "<3.3"
             },
+            "provide": {
+                "psr/log-implementation": "1.0"
+            },
             "require-dev": {
                 "psr/log": "~1.0",
                 "symfony/config": "~3.3|~4.0",
@@ -144,7 +147,7 @@
                 "symfony/process": "~3.3|~4.0"
             },
             "suggest": {
-                "psr/log-implementation": "For using the console logger",
+                "psr/log": "For using the console logger",
                 "symfony/event-dispatcher": "",
                 "symfony/lock": "",
                 "symfony/process": ""
@@ -179,20 +182,34 @@
             ],
             "description": "Symfony Console Component",
             "homepage": "https://symfony.com",
-            "time": "2018-10-30T16:50:50+00:00"
+            "funding": [
+                {
+                    "url": "https://symfony.com/sponsor",
+                    "type": "custom"
+                },
+                {
+                    "url": "https://github.com/fabpot",
+                    "type": "github"
+                },
+                {
+                    "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+                    "type": "tidelift"
+                }
+            ],
+            "time": "2020-09-09T05:09:37+00:00"
         },
         {
             "name": "symfony/debug",
-            "version": "v3.4.18",
+            "version": "v3.4.45",
             "source": {
                 "type": "git",
                 "url": "https://github.com/symfony/debug.git",
-                "reference": "fe9793af008b651c5441bdeab21ede8172dab097"
+                "reference": "9109e4414e684d0b75276ae203883467476d25d0"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/symfony/debug/zipball/fe9793af008b651c5441bdeab21ede8172dab097",
-                "reference": "fe9793af008b651c5441bdeab21ede8172dab097",
+                "url": "https://api.github.com/repos/symfony/debug/zipball/9109e4414e684d0b75276ae203883467476d25d0",
+                "reference": "9109e4414e684d0b75276ae203883467476d25d0",
                 "shasum": ""
             },
             "require": {
@@ -235,20 +252,34 @@
             ],
             "description": "Symfony Debug Component",
             "homepage": "https://symfony.com",
-            "time": "2018-10-31T09:06:03+00:00"
+            "funding": [
+                {
+                    "url": "https://symfony.com/sponsor",
+                    "type": "custom"
+                },
+                {
+                    "url": "https://github.com/fabpot",
+                    "type": "github"
+                },
+                {
+                    "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+                    "type": "tidelift"
+                }
+            ],
+            "time": "2020-09-08T22:19:14+00:00"
         },
         {
             "name": "symfony/finder",
-            "version": "v3.4.18",
+            "version": "v3.4.45",
             "source": {
                 "type": "git",
                 "url": "https://github.com/symfony/finder.git",
-                "reference": "54ba444dddc5bd5708a34bd095ea67c6eb54644d"
+                "reference": "52140652ed31cee3dabd0c481b5577201fa769b4"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/symfony/finder/zipball/54ba444dddc5bd5708a34bd095ea67c6eb54644d",
-                "reference": "54ba444dddc5bd5708a34bd095ea67c6eb54644d",
+                "url": "https://api.github.com/repos/symfony/finder/zipball/52140652ed31cee3dabd0c481b5577201fa769b4",
+                "reference": "52140652ed31cee3dabd0c481b5577201fa769b4",
                 "shasum": ""
             },
             "require": {
@@ -284,20 +315,34 @@
             ],
             "description": "Symfony Finder Component",
             "homepage": "https://symfony.com",
-            "time": "2018-10-03T08:46:40+00:00"
+            "funding": [
+                {
+                    "url": "https://symfony.com/sponsor",
+                    "type": "custom"
+                },
+                {
+                    "url": "https://github.com/fabpot",
+                    "type": "github"
+                },
+                {
+                    "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+                    "type": "tidelift"
+                }
+            ],
+            "time": "2020-09-02T16:06:40+00:00"
         },
         {
             "name": "symfony/polyfill-mbstring",
-            "version": "v1.10.0",
+            "version": "v1.18.1",
             "source": {
                 "type": "git",
                 "url": "https://github.com/symfony/polyfill-mbstring.git",
-                "reference": "c79c051f5b3a46be09205c73b80b346e4153e494"
+                "reference": "a6977d63bf9a0ad4c65cd352709e230876f9904a"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/c79c051f5b3a46be09205c73b80b346e4153e494",
-                "reference": "c79c051f5b3a46be09205c73b80b346e4153e494",
+                "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/a6977d63bf9a0ad4c65cd352709e230876f9904a",
+                "reference": "a6977d63bf9a0ad4c65cd352709e230876f9904a",
                 "shasum": ""
             },
             "require": {
@@ -309,7 +354,11 @@
             "type": "library",
             "extra": {
                 "branch-alias": {
-                    "dev-master": "1.9-dev"
+                    "dev-master": "1.18-dev"
+                },
+                "thanks": {
+                    "name": "symfony/polyfill",
+                    "url": "https://github.com/symfony/polyfill"
                 }
             },
             "autoload": {
@@ -343,7 +392,21 @@
                 "portable",
                 "shim"
             ],
-            "time": "2018-09-21T13:07:52+00:00"
+            "funding": [
+                {
+                    "url": "https://symfony.com/sponsor",
+                    "type": "custom"
+                },
+                {
+                    "url": "https://github.com/fabpot",
+                    "type": "github"
+                },
+                {
+                    "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+                    "type": "tidelift"
+                }
+            ],
+            "time": "2020-07-14T12:35:20+00:00"
         }
     ],
     "packages-dev": [
@@ -403,27 +466,27 @@
         },
         {
             "name": "g1a/composer-test-scenarios",
-            "version": "3.0.0",
+            "version": "3.2.0",
             "source": {
                 "type": "git",
                 "url": "https://github.com/g1a/composer-test-scenarios.git",
-                "reference": "2a7156f1572898888ea50ad1d48a6b4d3f9fbf78"
+                "reference": "e7394206d845fd593d325440507fb940bef8cb62"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/g1a/composer-test-scenarios/zipball/2a7156f1572898888ea50ad1d48a6b4d3f9fbf78",
-                "reference": "2a7156f1572898888ea50ad1d48a6b4d3f9fbf78",
+                "url": "https://api.github.com/repos/g1a/composer-test-scenarios/zipball/e7394206d845fd593d325440507fb940bef8cb62",
+                "reference": "e7394206d845fd593d325440507fb940bef8cb62",
                 "shasum": ""
             },
             "require": {
-                "composer-plugin-api": "^1.0.0",
+                "composer-plugin-api": "^1.0.0 || ^2.0.0",
                 "php": ">=5.4"
             },
             "require-dev": {
-                "composer/composer": "^1.7",
+                "composer/composer": "^1.10.6 || ^2.0@rc",
                 "php-coveralls/php-coveralls": "^1.0",
                 "phpunit/phpunit": "^4.8.36|^6",
-                "squizlabs/php_codesniffer": "^2.8"
+                "squizlabs/php_codesniffer": "^3.5"
             },
             "bin": [
                 "scripts/dependency-licenses"
@@ -432,7 +495,7 @@
             "extra": {
                 "class": "ComposerTestScenarios\\Plugin",
                 "branch-alias": {
-                    "dev-master": "3.x-dev"
+                    "dev-main": "3.x-dev"
                 }
             },
             "autoload": {
@@ -451,7 +514,7 @@
                 }
             ],
             "description": "Useful scripts for testing multiple sets of Composer dependencies.",
-            "time": "2018-11-22T05:10:20+00:00"
+            "time": "2020-09-28T20:54:35+00:00"
         },
         {
             "name": "guzzle/guzzle",
@@ -803,38 +866,38 @@
         },
         {
             "name": "phpspec/prophecy",
-            "version": "1.8.0",
+            "version": "v1.10.3",
             "source": {
                 "type": "git",
                 "url": "https://github.com/phpspec/prophecy.git",
-                "reference": "4ba436b55987b4bf311cb7c6ba82aa528aac0a06"
+                "reference": "451c3cd1418cf640de218914901e51b064abb093"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/phpspec/prophecy/zipball/4ba436b55987b4bf311cb7c6ba82aa528aac0a06",
-                "reference": "4ba436b55987b4bf311cb7c6ba82aa528aac0a06",
+                "url": "https://api.github.com/repos/phpspec/prophecy/zipball/451c3cd1418cf640de218914901e51b064abb093",
+                "reference": "451c3cd1418cf640de218914901e51b064abb093",
                 "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"
+                "phpdocumentor/reflection-docblock": "^2.0|^3.0.2|^4.0|^5.0",
+                "sebastian/comparator": "^1.2.3|^2.0|^3.0|^4.0",
+                "sebastian/recursion-context": "^1.0|^2.0|^3.0|^4.0"
             },
             "require-dev": {
-                "phpspec/phpspec": "^2.5|^3.2",
+                "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"
+                    "dev-master": "1.10.x-dev"
                 }
             },
             "autoload": {
-                "psr-0": {
-                    "Prophecy\\": "src/"
+                "psr-4": {
+                    "Prophecy\\": "src/Prophecy"
                 }
             },
             "notification-url": "https://packagist.org/downloads/",
@@ -862,7 +925,7 @@
                 "spy",
                 "stub"
             ],
-            "time": "2018-08-05T17:53:17+00:00"
+            "time": "2020-03-05T15:02:03+00:00"
         },
         {
             "name": "phpunit/php-code-coverage",
@@ -1111,6 +1174,7 @@
             "keywords": [
                 "tokenizer"
             ],
+            "abandoned": true,
             "time": "2017-12-04T08:55:13+00:00"
         },
         {
@@ -1252,6 +1316,7 @@
                 "mock",
                 "xunit"
             ],
+            "abandoned": true,
             "time": "2017-06-30T09:13:00+00:00"
         },
         {
@@ -1847,16 +1912,16 @@
         },
         {
             "name": "symfony/config",
-            "version": "v3.4.18",
+            "version": "v3.4.45",
             "source": {
                 "type": "git",
                 "url": "https://github.com/symfony/config.git",
-                "reference": "99b2fa8acc244e656cdf324ff419fbe6fd300a4d"
+                "reference": "d061a451ff6bc170c5454f4ac9b41ad2179e3960"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/symfony/config/zipball/99b2fa8acc244e656cdf324ff419fbe6fd300a4d",
-                "reference": "99b2fa8acc244e656cdf324ff419fbe6fd300a4d",
+                "url": "https://api.github.com/repos/symfony/config/zipball/d061a451ff6bc170c5454f4ac9b41ad2179e3960",
+                "reference": "d061a451ff6bc170c5454f4ac9b41ad2179e3960",
                 "shasum": ""
             },
             "require": {
@@ -1907,20 +1972,34 @@
             ],
             "description": "Symfony Config Component",
             "homepage": "https://symfony.com",
-            "time": "2018-10-31T09:06:03+00:00"
+            "funding": [
+                {
+                    "url": "https://symfony.com/sponsor",
+                    "type": "custom"
+                },
+                {
+                    "url": "https://github.com/fabpot",
+                    "type": "github"
+                },
+                {
+                    "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+                    "type": "tidelift"
+                }
+            ],
+            "time": "2020-09-02T16:06:40+00:00"
         },
         {
             "name": "symfony/event-dispatcher",
-            "version": "v2.8.47",
+            "version": "v2.8.52",
             "source": {
                 "type": "git",
                 "url": "https://github.com/symfony/event-dispatcher.git",
-                "reference": "76494bc38ff38d90d01913d23b5271acd4d78dd3"
+                "reference": "a77e974a5fecb4398833b0709210e3d5e334ffb0"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/76494bc38ff38d90d01913d23b5271acd4d78dd3",
-                "reference": "76494bc38ff38d90d01913d23b5271acd4d78dd3",
+                "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/a77e974a5fecb4398833b0709210e3d5e334ffb0",
+                "reference": "a77e974a5fecb4398833b0709210e3d5e334ffb0",
                 "shasum": ""
             },
             "require": {
@@ -1967,20 +2046,20 @@
             ],
             "description": "Symfony EventDispatcher Component",
             "homepage": "https://symfony.com",
-            "time": "2018-10-20T23:16:31+00:00"
+            "time": "2018-11-21T14:20:20+00:00"
         },
         {
             "name": "symfony/filesystem",
-            "version": "v3.4.18",
+            "version": "v3.4.45",
             "source": {
                 "type": "git",
                 "url": "https://github.com/symfony/filesystem.git",
-                "reference": "d69930fc337d767607267d57c20a7403d0a822a4"
+                "reference": "495646f13d051cc5a8f77a68b68313dc854080aa"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/symfony/filesystem/zipball/d69930fc337d767607267d57c20a7403d0a822a4",
-                "reference": "d69930fc337d767607267d57c20a7403d0a822a4",
+                "url": "https://api.github.com/repos/symfony/filesystem/zipball/495646f13d051cc5a8f77a68b68313dc854080aa",
+                "reference": "495646f13d051cc5a8f77a68b68313dc854080aa",
                 "shasum": ""
             },
             "require": {
@@ -2017,20 +2096,34 @@
             ],
             "description": "Symfony Filesystem Component",
             "homepage": "https://symfony.com",
-            "time": "2018-10-02T12:28:39+00:00"
+            "funding": [
+                {
+                    "url": "https://symfony.com/sponsor",
+                    "type": "custom"
+                },
+                {
+                    "url": "https://github.com/fabpot",
+                    "type": "github"
+                },
+                {
+                    "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+                    "type": "tidelift"
+                }
+            ],
+            "time": "2020-09-02T16:06:40+00:00"
         },
         {
             "name": "symfony/polyfill-ctype",
-            "version": "v1.10.0",
+            "version": "v1.18.1",
             "source": {
                 "type": "git",
                 "url": "https://github.com/symfony/polyfill-ctype.git",
-                "reference": "e3d826245268269cd66f8326bd8bc066687b4a19"
+                "reference": "1c302646f6efc070cd46856e600e5e0684d6b454"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/e3d826245268269cd66f8326bd8bc066687b4a19",
-                "reference": "e3d826245268269cd66f8326bd8bc066687b4a19",
+                "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/1c302646f6efc070cd46856e600e5e0684d6b454",
+                "reference": "1c302646f6efc070cd46856e600e5e0684d6b454",
                 "shasum": ""
             },
             "require": {
@@ -2042,7 +2135,11 @@
             "type": "library",
             "extra": {
                 "branch-alias": {
-                    "dev-master": "1.9-dev"
+                    "dev-master": "1.18-dev"
+                },
+                "thanks": {
+                    "name": "symfony/polyfill",
+                    "url": "https://github.com/symfony/polyfill"
                 }
             },
             "autoload": {
@@ -2058,13 +2155,13 @@
                 "MIT"
             ],
             "authors": [
-                {
-                    "name": "Symfony Community",
-                    "homepage": "https://symfony.com/contributors"
-                },
                 {
                     "name": "Gert de Pagter",
                     "email": "BackEndTea@gmail.com"
+                },
+                {
+                    "name": "Symfony Community",
+                    "homepage": "https://symfony.com/contributors"
                 }
             ],
             "description": "Symfony polyfill for ctype functions",
@@ -2075,20 +2172,34 @@
                 "polyfill",
                 "portable"
             ],
-            "time": "2018-08-06T14:22:27+00:00"
+            "funding": [
+                {
+                    "url": "https://symfony.com/sponsor",
+                    "type": "custom"
+                },
+                {
+                    "url": "https://github.com/fabpot",
+                    "type": "github"
+                },
+                {
+                    "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+                    "type": "tidelift"
+                }
+            ],
+            "time": "2020-07-14T12:35:20+00:00"
         },
         {
             "name": "symfony/stopwatch",
-            "version": "v3.4.18",
+            "version": "v3.4.45",
             "source": {
                 "type": "git",
                 "url": "https://github.com/symfony/stopwatch.git",
-                "reference": "05e52a39de52ba690aebaed462b2bc8a9649f0a4"
+                "reference": "a7a98f40dcc382a332c3729a6d04b298ffbb8f1f"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/symfony/stopwatch/zipball/05e52a39de52ba690aebaed462b2bc8a9649f0a4",
-                "reference": "05e52a39de52ba690aebaed462b2bc8a9649f0a4",
+                "url": "https://api.github.com/repos/symfony/stopwatch/zipball/a7a98f40dcc382a332c3729a6d04b298ffbb8f1f",
+                "reference": "a7a98f40dcc382a332c3729a6d04b298ffbb8f1f",
                 "shasum": ""
             },
             "require": {
@@ -2124,20 +2235,34 @@
             ],
             "description": "Symfony Stopwatch Component",
             "homepage": "https://symfony.com",
-            "time": "2018-10-02T12:28:39+00:00"
+            "funding": [
+                {
+                    "url": "https://symfony.com/sponsor",
+                    "type": "custom"
+                },
+                {
+                    "url": "https://github.com/fabpot",
+                    "type": "github"
+                },
+                {
+                    "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+                    "type": "tidelift"
+                }
+            ],
+            "time": "2020-03-15T09:38:08+00:00"
         },
         {
             "name": "symfony/var-dumper",
-            "version": "v3.4.18",
+            "version": "v3.4.45",
             "source": {
                 "type": "git",
                 "url": "https://github.com/symfony/var-dumper.git",
-                "reference": "ff8ac19e97e5c7c3979236b584719a1190f84181"
+                "reference": "df8fe9c1c5dc3eb968db32ffa6b699d89fee2606"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/symfony/var-dumper/zipball/ff8ac19e97e5c7c3979236b584719a1190f84181",
-                "reference": "ff8ac19e97e5c7c3979236b584719a1190f84181",
+                "url": "https://api.github.com/repos/symfony/var-dumper/zipball/df8fe9c1c5dc3eb968db32ffa6b699d89fee2606",
+                "reference": "df8fe9c1c5dc3eb968db32ffa6b699d89fee2606",
                 "shasum": ""
             },
             "require": {
@@ -2193,20 +2318,34 @@
                 "debug",
                 "dump"
             ],
-            "time": "2018-10-02T16:33:53+00:00"
+            "funding": [
+                {
+                    "url": "https://symfony.com/sponsor",
+                    "type": "custom"
+                },
+                {
+                    "url": "https://github.com/fabpot",
+                    "type": "github"
+                },
+                {
+                    "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+                    "type": "tidelift"
+                }
+            ],
+            "time": "2020-09-18T08:10:16+00:00"
         },
         {
             "name": "symfony/yaml",
-            "version": "v3.4.18",
+            "version": "v3.4.45",
             "source": {
                 "type": "git",
                 "url": "https://github.com/symfony/yaml.git",
-                "reference": "640b6c27fed4066d64b64d5903a86043f4a4de7f"
+                "reference": "ec3c2ac4d881a4684c1f0317d2107f1a4152bad9"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/symfony/yaml/zipball/640b6c27fed4066d64b64d5903a86043f4a4de7f",
-                "reference": "640b6c27fed4066d64b64d5903a86043f4a4de7f",
+                "url": "https://api.github.com/repos/symfony/yaml/zipball/ec3c2ac4d881a4684c1f0317d2107f1a4152bad9",
+                "reference": "ec3c2ac4d881a4684c1f0317d2107f1a4152bad9",
                 "shasum": ""
             },
             "require": {
@@ -2252,7 +2391,21 @@
             ],
             "description": "Symfony Yaml Component",
             "homepage": "https://symfony.com",
-            "time": "2018-10-02T16:33:53+00:00"
+            "funding": [
+                {
+                    "url": "https://symfony.com/sponsor",
+                    "type": "custom"
+                },
+                {
+                    "url": "https://github.com/fabpot",
+                    "type": "github"
+                },
+                {
+                    "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+                    "type": "tidelift"
+                }
+            ],
+            "time": "2020-09-18T15:58:55+00:00"
         },
         {
             "name": "victorjonsson/markdowndocs",
@@ -2300,31 +2453,30 @@
         },
         {
             "name": "webmozart/assert",
-            "version": "1.3.0",
+            "version": "1.9.1",
             "source": {
                 "type": "git",
                 "url": "https://github.com/webmozart/assert.git",
-                "reference": "0df1908962e7a3071564e857d86874dad1ef204a"
+                "reference": "bafc69caeb4d49c39fd0779086c03a3738cbb389"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/webmozart/assert/zipball/0df1908962e7a3071564e857d86874dad1ef204a",
-                "reference": "0df1908962e7a3071564e857d86874dad1ef204a",
+                "url": "https://api.github.com/repos/webmozart/assert/zipball/bafc69caeb4d49c39fd0779086c03a3738cbb389",
+                "reference": "bafc69caeb4d49c39fd0779086c03a3738cbb389",
                 "shasum": ""
             },
             "require": {
-                "php": "^5.3.3 || ^7.0"
+                "php": "^5.3.3 || ^7.0 || ^8.0",
+                "symfony/polyfill-ctype": "^1.8"
+            },
+            "conflict": {
+                "phpstan/phpstan": "<0.12.20",
+                "vimeo/psalm": "<3.9.1"
             },
             "require-dev": {
-                "phpunit/phpunit": "^4.6",
-                "sebastian/version": "^1.0.1"
+                "phpunit/phpunit": "^4.8.36 || ^7.5.13"
             },
             "type": "library",
-            "extra": {
-                "branch-alias": {
-                    "dev-master": "1.3-dev"
-                }
-            },
             "autoload": {
                 "psr-4": {
                     "Webmozart\\Assert\\": "src/"
@@ -2346,7 +2498,7 @@
                 "check",
                 "validate"
             ],
-            "time": "2018-01-29T19:49:41+00:00"
+            "time": "2020-07-08T17:02:28+00:00"
         }
     ],
     "aliases": [],
@@ -2360,5 +2512,6 @@
     "platform-dev": [],
     "platform-overrides": {
         "php": "5.6.32"
-    }
+    },
+    "plugin-api-version": "1.1.0"
 }
diff --git a/vendor/consolidation/robo/.scenarios.lock/finder5/.gitignore b/vendor/consolidation/robo/.scenarios.lock/finder5/.gitignore
new file mode 100644
index 0000000000..5657f6ea7d
--- /dev/null
+++ b/vendor/consolidation/robo/.scenarios.lock/finder5/.gitignore
@@ -0,0 +1 @@
+vendor
\ No newline at end of file
diff --git a/vendor/consolidation/robo/.scenarios.lock/finder5/composer.json b/vendor/consolidation/robo/.scenarios.lock/finder5/composer.json
new file mode 100644
index 0000000000..e9a1241f19
--- /dev/null
+++ b/vendor/consolidation/robo/.scenarios.lock/finder5/composer.json
@@ -0,0 +1,87 @@
+{
+    "name": "consolidation/robo",
+    "description": "Modern task runner",
+    "license": "MIT",
+    "authors": [
+        {
+            "name": "Davert",
+            "email": "davert.php@resend.cc"
+        }
+    ],
+    "autoload": {
+        "psr-4": {
+            "Robo\\": "../../src"
+        }
+    },
+    "autoload-dev": {
+        "psr-4": {
+            "Robo\\": "../../tests/src",
+            "RoboExample\\": "../../examples/src"
+        }
+    },
+    "bin": [
+        "robo"
+    ],
+    "require": {
+        "symfony/finder": "^5",
+        "php": ">=5.5.0",
+        "consolidation/annotated-command": "^2.12.1|^4.1",
+        "consolidation/config": "^1.2.1",
+        "consolidation/log": "^1.1.1|^2",
+        "consolidation/output-formatters": "^3.5.1|^4.1",
+        "consolidation/self-update": "^1.1.5",
+        "grasmash/yaml-expander": "^1.4",
+        "league/container": "^2.4.1",
+        "symfony/console": "^2.8|^3|^4",
+        "symfony/event-dispatcher": "^2.5|^3|^4",
+        "symfony/filesystem": "^2.5|^3|^4",
+        "symfony/process": "^2.5|^3|^4"
+    },
+    "require-dev": {
+        "g1a/composer-test-scenarios": "^3",
+        "natxet/cssmin": "3.0.4",
+        "patchwork/jsqueeze": "^2",
+        "pear/archive_tar": "^1.4.4",
+        "php-coveralls/php-coveralls": "^1",
+        "phpunit/phpunit": "^5.7.27",
+        "squizlabs/php_codesniffer": "^3"
+    },
+    "scripts": {
+        "cs": "./robo sniff",
+        "unit": "phpunit",
+        "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"
+        ],
+        "pre-install-cmd": [
+            "Robo\\composer\\ScriptHandler::checkDependencies"
+        ]
+    },
+    "config": {
+        "platform": {
+            "php": "7.2.5"
+        },
+        "optimize-autoloader": true,
+        "sort-packages": true,
+        "vendor-dir": "../../vendor"
+    },
+    "extra": {
+        "branch-alias": {
+            "dev-master": "1.x-dev"
+        }
+    },
+    "suggest": {
+        "pear/archive_tar": "Allows tar archives to be created and extracted in taskPack and taskExtract, respectively.",
+        "henrikbjorn/lurker": "For monitoring filesystem changes in taskWatch",
+        "patchwork/jsqueeze": "For minifying JS files in taskMinify",
+        "natxet/CssMin": "For minifying CSS files in taskMinify"
+    },
+    "replace": {
+        "codegyre/robo": "< 1.0"
+    }
+}
diff --git a/vendor/consolidation/robo/.scenarios.lock/finder5/composer.lock b/vendor/consolidation/robo/.scenarios.lock/finder5/composer.lock
new file mode 100644
index 0000000000..19bde45faf
--- /dev/null
+++ b/vendor/consolidation/robo/.scenarios.lock/finder5/composer.lock
@@ -0,0 +1,3588 @@
+{
+    "_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": "5e862565f20b2a2701ae2f8bb2f8e724",
+    "packages": [
+        {
+            "name": "consolidation/annotated-command",
+            "version": "4.2.3",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/consolidation/annotated-command.git",
+                "reference": "4b596872f24c39d9c04d7b3adb6bc51baa1f2fd5"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/consolidation/annotated-command/zipball/4b596872f24c39d9c04d7b3adb6bc51baa1f2fd5",
+                "reference": "4b596872f24c39d9c04d7b3adb6bc51baa1f2fd5",
+                "shasum": ""
+            },
+            "require": {
+                "consolidation/output-formatters": "^4.1.1",
+                "php": ">=7.1.3",
+                "psr/log": "^1|^2",
+                "symfony/console": "^4.4.8|^5",
+                "symfony/event-dispatcher": "^4.4.8|^5",
+                "symfony/finder": "^4.4.8|^5"
+            },
+            "require-dev": {
+                "g1a/composer-test-scenarios": "^3",
+                "php-coveralls/php-coveralls": "^2.2",
+                "phpunit/phpunit": "^6",
+                "squizlabs/php_codesniffer": "^3"
+            },
+            "type": "library",
+            "extra": {
+                "scenarios": {
+                    "symfony4": {
+                        "require": {
+                            "symfony/console": "^4.0"
+                        },
+                        "config": {
+                            "platform": {
+                                "php": "7.1.3"
+                            }
+                        }
+                    }
+                },
+                "branch-alias": {
+                    "dev-main": "4.x-dev"
+                }
+            },
+            "autoload": {
+                "psr-4": {
+                    "Consolidation\\AnnotatedCommand\\": "src"
+                }
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "MIT"
+            ],
+            "authors": [
+                {
+                    "name": "Greg Anderson",
+                    "email": "greg.1.anderson@greenknowe.org"
+                }
+            ],
+            "description": "Initialize Symfony Console commands from annotated command class methods.",
+            "time": "2020-10-03T14:28:42+00:00"
+        },
+        {
+            "name": "consolidation/config",
+            "version": "1.2.1",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/consolidation/config.git",
+                "reference": "cac1279bae7efb5c7fb2ca4c3ba4b8eb741a96c1"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/consolidation/config/zipball/cac1279bae7efb5c7fb2ca4c3ba4b8eb741a96c1",
+                "reference": "cac1279bae7efb5c7fb2ca4c3ba4b8eb741a96c1",
+                "shasum": ""
+            },
+            "require": {
+                "dflydev/dot-access-data": "^1.1.0",
+                "grasmash/expander": "^1",
+                "php": ">=5.4.0"
+            },
+            "require-dev": {
+                "g1a/composer-test-scenarios": "^3",
+                "php-coveralls/php-coveralls": "^1",
+                "phpunit/phpunit": "^5",
+                "squizlabs/php_codesniffer": "2.*",
+                "symfony/console": "^2.5|^3|^4",
+                "symfony/yaml": "^2.8.11|^3|^4"
+            },
+            "suggest": {
+                "symfony/yaml": "Required to use Consolidation\\Config\\Loader\\YamlConfigLoader"
+            },
+            "type": "library",
+            "extra": {
+                "scenarios": {
+                    "symfony4": {
+                        "require-dev": {
+                            "symfony/console": "^4.0"
+                        },
+                        "config": {
+                            "platform": {
+                                "php": "7.1.3"
+                            }
+                        }
+                    },
+                    "symfony2": {
+                        "require-dev": {
+                            "symfony/console": "^2.8",
+                            "symfony/event-dispatcher": "^2.8",
+                            "phpunit/phpunit": "^4.8.36"
+                        },
+                        "remove": [
+                            "php-coveralls/php-coveralls"
+                        ],
+                        "config": {
+                            "platform": {
+                                "php": "5.4.8"
+                            }
+                        }
+                    }
+                },
+                "branch-alias": {
+                    "dev-master": "1.x-dev"
+                }
+            },
+            "autoload": {
+                "psr-4": {
+                    "Consolidation\\Config\\": "src"
+                }
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "MIT"
+            ],
+            "authors": [
+                {
+                    "name": "Greg Anderson",
+                    "email": "greg.1.anderson@greenknowe.org"
+                }
+            ],
+            "description": "Provide configuration services for a commandline tool.",
+            "time": "2019-03-03T19:37:04+00:00"
+        },
+        {
+            "name": "consolidation/log",
+            "version": "2.0.1",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/consolidation/log.git",
+                "reference": "ba0bf6af1fbd09ed4dc18fc2f27b12ceff487cbf"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/consolidation/log/zipball/ba0bf6af1fbd09ed4dc18fc2f27b12ceff487cbf",
+                "reference": "ba0bf6af1fbd09ed4dc18fc2f27b12ceff487cbf",
+                "shasum": ""
+            },
+            "require": {
+                "php": ">=7.1.3",
+                "psr/log": "^1.0",
+                "symfony/console": "^4|^5"
+            },
+            "require-dev": {
+                "g1a/composer-test-scenarios": "^3",
+                "php-coveralls/php-coveralls": "^2.2",
+                "phpunit/phpunit": "^6",
+                "squizlabs/php_codesniffer": "^3"
+            },
+            "type": "library",
+            "extra": {
+                "scenarios": {
+                    "symfony4": {
+                        "require-dev": {
+                            "symfony/console": "^4"
+                        },
+                        "config": {
+                            "platform": {
+                                "php": "7.1.3"
+                            }
+                        }
+                    }
+                },
+                "branch-alias": {
+                    "dev-master": "2.x-dev"
+                }
+            },
+            "autoload": {
+                "psr-4": {
+                    "Consolidation\\Log\\": "src"
+                }
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "MIT"
+            ],
+            "authors": [
+                {
+                    "name": "Greg Anderson",
+                    "email": "greg.1.anderson@greenknowe.org"
+                }
+            ],
+            "description": "Improved Psr-3 / Psr\\Log logger based on Symfony Console components.",
+            "time": "2020-05-27T17:06:13+00:00"
+        },
+        {
+            "name": "consolidation/output-formatters",
+            "version": "4.1.1",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/consolidation/output-formatters.git",
+                "reference": "9deeddd6a916d0a756b216a8b40ce1016e17c0b9"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/consolidation/output-formatters/zipball/9deeddd6a916d0a756b216a8b40ce1016e17c0b9",
+                "reference": "9deeddd6a916d0a756b216a8b40ce1016e17c0b9",
+                "shasum": ""
+            },
+            "require": {
+                "dflydev/dot-access-data": "^1.1.0",
+                "php": ">=7.1.3",
+                "symfony/console": "^4|^5",
+                "symfony/finder": "^4|^5"
+            },
+            "require-dev": {
+                "g1a/composer-test-scenarios": "^3",
+                "php-coveralls/php-coveralls": "^2.2",
+                "phpunit/phpunit": "^6",
+                "squizlabs/php_codesniffer": "^3",
+                "symfony/var-dumper": "^4",
+                "symfony/yaml": "^4"
+            },
+            "suggest": {
+                "symfony/var-dumper": "For using the var_dump formatter"
+            },
+            "type": "library",
+            "extra": {
+                "scenarios": {
+                    "symfony4": {
+                        "require": {
+                            "symfony/console": "^4.0"
+                        },
+                        "config": {
+                            "platform": {
+                                "php": "7.1.3"
+                            }
+                        }
+                    }
+                },
+                "branch-alias": {
+                    "dev-master": "4.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": "2020-05-27T20:51:17+00:00"
+        },
+        {
+            "name": "consolidation/self-update",
+            "version": "1.2.0",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/consolidation/self-update.git",
+                "reference": "dba6b2c0708f20fa3ba8008a2353b637578849b4"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/consolidation/self-update/zipball/dba6b2c0708f20fa3ba8008a2353b637578849b4",
+                "reference": "dba6b2c0708f20fa3ba8008a2353b637578849b4",
+                "shasum": ""
+            },
+            "require": {
+                "php": ">=5.5.0",
+                "symfony/console": "^2.8|^3|^4|^5",
+                "symfony/filesystem": "^2.5|^3|^4|^5"
+            },
+            "bin": [
+                "scripts/release"
+            ],
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "1.x-dev"
+                }
+            },
+            "autoload": {
+                "psr-4": {
+                    "SelfUpdate\\": "src"
+                }
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "MIT"
+            ],
+            "authors": [
+                {
+                    "name": "Alexander Menk",
+                    "email": "menk@mestrona.net"
+                },
+                {
+                    "name": "Greg Anderson",
+                    "email": "greg.1.anderson@greenknowe.org"
+                }
+            ],
+            "description": "Provides a self:update command for Symfony Console applications.",
+            "time": "2020-04-13T02:49:20+00:00"
+        },
+        {
+            "name": "container-interop/container-interop",
+            "version": "1.2.0",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/container-interop/container-interop.git",
+                "reference": "79cbf1341c22ec75643d841642dd5d6acd83bdb8"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/container-interop/container-interop/zipball/79cbf1341c22ec75643d841642dd5d6acd83bdb8",
+                "reference": "79cbf1341c22ec75643d841642dd5d6acd83bdb8",
+                "shasum": ""
+            },
+            "require": {
+                "psr/container": "^1.0"
+            },
+            "type": "library",
+            "autoload": {
+                "psr-4": {
+                    "Interop\\Container\\": "src/Interop/Container/"
+                }
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "MIT"
+            ],
+            "description": "Promoting the interoperability of container objects (DIC, SL, etc.)",
+            "homepage": "https://github.com/container-interop/container-interop",
+            "abandoned": "psr/container",
+            "time": "2017-02-14T19:40:03+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": "grasmash/expander",
+            "version": "1.0.0",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/grasmash/expander.git",
+                "reference": "95d6037344a4be1dd5f8e0b0b2571a28c397578f"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/grasmash/expander/zipball/95d6037344a4be1dd5f8e0b0b2571a28c397578f",
+                "reference": "95d6037344a4be1dd5f8e0b0b2571a28c397578f",
+                "shasum": ""
+            },
+            "require": {
+                "dflydev/dot-access-data": "^1.1.0",
+                "php": ">=5.4"
+            },
+            "require-dev": {
+                "greg-1-anderson/composer-test-scenarios": "^1",
+                "phpunit/phpunit": "^4|^5.5.4",
+                "satooshi/php-coveralls": "^1.0.2|dev-master",
+                "squizlabs/php_codesniffer": "^2.7"
+            },
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "1.x-dev"
+                }
+            },
+            "autoload": {
+                "psr-4": {
+                    "Grasmash\\Expander\\": "src/"
+                }
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "MIT"
+            ],
+            "authors": [
+                {
+                    "name": "Matthew Grasmick"
+                }
+            ],
+            "description": "Expands internal property references in PHP arrays file.",
+            "time": "2017-12-21T22:14:55+00:00"
+        },
+        {
+            "name": "grasmash/yaml-expander",
+            "version": "1.4.0",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/grasmash/yaml-expander.git",
+                "reference": "3f0f6001ae707a24f4d9733958d77d92bf9693b1"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/grasmash/yaml-expander/zipball/3f0f6001ae707a24f4d9733958d77d92bf9693b1",
+                "reference": "3f0f6001ae707a24f4d9733958d77d92bf9693b1",
+                "shasum": ""
+            },
+            "require": {
+                "dflydev/dot-access-data": "^1.1.0",
+                "php": ">=5.4",
+                "symfony/yaml": "^2.8.11|^3|^4"
+            },
+            "require-dev": {
+                "greg-1-anderson/composer-test-scenarios": "^1",
+                "phpunit/phpunit": "^4.8|^5.5.4",
+                "satooshi/php-coveralls": "^1.0.2|dev-master",
+                "squizlabs/php_codesniffer": "^2.7"
+            },
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "1.x-dev"
+                }
+            },
+            "autoload": {
+                "psr-4": {
+                    "Grasmash\\YamlExpander\\": "src/"
+                }
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "MIT"
+            ],
+            "authors": [
+                {
+                    "name": "Matthew Grasmick"
+                }
+            ],
+            "description": "Expands internal property references in a yaml file.",
+            "time": "2017-12-16T16:06:03+00:00"
+        },
+        {
+            "name": "league/container",
+            "version": "2.4.1",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/thephpleague/container.git",
+                "reference": "43f35abd03a12977a60ffd7095efd6a7808488c0"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/thephpleague/container/zipball/43f35abd03a12977a60ffd7095efd6a7808488c0",
+                "reference": "43f35abd03a12977a60ffd7095efd6a7808488c0",
+                "shasum": ""
+            },
+            "require": {
+                "container-interop/container-interop": "^1.2",
+                "php": "^5.4.0 || ^7.0"
+            },
+            "provide": {
+                "container-interop/container-interop-implementation": "^1.2",
+                "psr/container-implementation": "^1.0"
+            },
+            "replace": {
+                "orno/di": "~2.0"
+            },
+            "require-dev": {
+                "phpunit/phpunit": "4.*"
+            },
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-2.x": "2.x-dev",
+                    "dev-1.x": "1.x-dev"
+                }
+            },
+            "autoload": {
+                "psr-4": {
+                    "League\\Container\\": "src"
+                }
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "MIT"
+            ],
+            "authors": [
+                {
+                    "name": "Phil Bennett",
+                    "email": "philipobenito@gmail.com",
+                    "homepage": "http://www.philipobenito.com",
+                    "role": "Developer"
+                }
+            ],
+            "description": "A fast and intuitive dependency injection container.",
+            "homepage": "https://github.com/thephpleague/container",
+            "keywords": [
+                "container",
+                "dependency",
+                "di",
+                "injection",
+                "league",
+                "provider",
+                "service"
+            ],
+            "time": "2017-05-10T09:20:27+00:00"
+        },
+        {
+            "name": "psr/container",
+            "version": "1.0.0",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/php-fig/container.git",
+                "reference": "b7ce3b176482dbbc1245ebf52b181af44c2cf55f"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/php-fig/container/zipball/b7ce3b176482dbbc1245ebf52b181af44c2cf55f",
+                "reference": "b7ce3b176482dbbc1245ebf52b181af44c2cf55f",
+                "shasum": ""
+            },
+            "require": {
+                "php": ">=5.3.0"
+            },
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "1.0.x-dev"
+                }
+            },
+            "autoload": {
+                "psr-4": {
+                    "Psr\\Container\\": "src/"
+                }
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "MIT"
+            ],
+            "authors": [
+                {
+                    "name": "PHP-FIG",
+                    "homepage": "http://www.php-fig.org/"
+                }
+            ],
+            "description": "Common Container Interface (PHP FIG PSR-11)",
+            "homepage": "https://github.com/php-fig/container",
+            "keywords": [
+                "PSR-11",
+                "container",
+                "container-interface",
+                "container-interop",
+                "psr"
+            ],
+            "time": "2017-02-14T16:28:37+00:00"
+        },
+        {
+            "name": "psr/log",
+            "version": "1.1.3",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/php-fig/log.git",
+                "reference": "0f73288fd15629204f9d42b7055f72dacbe811fc"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/php-fig/log/zipball/0f73288fd15629204f9d42b7055f72dacbe811fc",
+                "reference": "0f73288fd15629204f9d42b7055f72dacbe811fc",
+                "shasum": ""
+            },
+            "require": {
+                "php": ">=5.3.0"
+            },
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "1.1.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": "2020-03-23T09:12:05+00:00"
+        },
+        {
+            "name": "symfony/console",
+            "version": "v4.4.15",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/symfony/console.git",
+                "reference": "90933b39c7b312fc3ceaa1ddeac7eb48cb953124"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/symfony/console/zipball/90933b39c7b312fc3ceaa1ddeac7eb48cb953124",
+                "reference": "90933b39c7b312fc3ceaa1ddeac7eb48cb953124",
+                "shasum": ""
+            },
+            "require": {
+                "php": ">=7.1.3",
+                "symfony/polyfill-mbstring": "~1.0",
+                "symfony/polyfill-php73": "^1.8",
+                "symfony/polyfill-php80": "^1.15",
+                "symfony/service-contracts": "^1.1|^2"
+            },
+            "conflict": {
+                "symfony/dependency-injection": "<3.4",
+                "symfony/event-dispatcher": "<4.3|>=5",
+                "symfony/lock": "<4.4",
+                "symfony/process": "<3.3"
+            },
+            "provide": {
+                "psr/log-implementation": "1.0"
+            },
+            "require-dev": {
+                "psr/log": "~1.0",
+                "symfony/config": "^3.4|^4.0|^5.0",
+                "symfony/dependency-injection": "^3.4|^4.0|^5.0",
+                "symfony/event-dispatcher": "^4.3",
+                "symfony/lock": "^4.4|^5.0",
+                "symfony/process": "^3.4|^4.0|^5.0",
+                "symfony/var-dumper": "^4.3|^5.0"
+            },
+            "suggest": {
+                "psr/log": "For using the console logger",
+                "symfony/event-dispatcher": "",
+                "symfony/lock": "",
+                "symfony/process": ""
+            },
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "4.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",
+            "funding": [
+                {
+                    "url": "https://symfony.com/sponsor",
+                    "type": "custom"
+                },
+                {
+                    "url": "https://github.com/fabpot",
+                    "type": "github"
+                },
+                {
+                    "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+                    "type": "tidelift"
+                }
+            ],
+            "time": "2020-09-15T07:58:55+00:00"
+        },
+        {
+            "name": "symfony/event-dispatcher",
+            "version": "v4.4.15",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/symfony/event-dispatcher.git",
+                "reference": "e17bb5e0663dc725f7cdcafc932132735b4725cd"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/e17bb5e0663dc725f7cdcafc932132735b4725cd",
+                "reference": "e17bb5e0663dc725f7cdcafc932132735b4725cd",
+                "shasum": ""
+            },
+            "require": {
+                "php": ">=7.1.3",
+                "symfony/event-dispatcher-contracts": "^1.1"
+            },
+            "conflict": {
+                "symfony/dependency-injection": "<3.4"
+            },
+            "provide": {
+                "psr/event-dispatcher-implementation": "1.0",
+                "symfony/event-dispatcher-implementation": "1.1"
+            },
+            "require-dev": {
+                "psr/log": "~1.0",
+                "symfony/config": "^3.4|^4.0|^5.0",
+                "symfony/dependency-injection": "^3.4|^4.0|^5.0",
+                "symfony/error-handler": "~3.4|~4.4",
+                "symfony/expression-language": "^3.4|^4.0|^5.0",
+                "symfony/http-foundation": "^3.4|^4.0|^5.0",
+                "symfony/service-contracts": "^1.1|^2",
+                "symfony/stopwatch": "^3.4|^4.0|^5.0"
+            },
+            "suggest": {
+                "symfony/dependency-injection": "",
+                "symfony/http-kernel": ""
+            },
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "4.4-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",
+            "funding": [
+                {
+                    "url": "https://symfony.com/sponsor",
+                    "type": "custom"
+                },
+                {
+                    "url": "https://github.com/fabpot",
+                    "type": "github"
+                },
+                {
+                    "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+                    "type": "tidelift"
+                }
+            ],
+            "time": "2020-09-18T14:07:46+00:00"
+        },
+        {
+            "name": "symfony/event-dispatcher-contracts",
+            "version": "v1.1.9",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/symfony/event-dispatcher-contracts.git",
+                "reference": "84e23fdcd2517bf37aecbd16967e83f0caee25a7"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/symfony/event-dispatcher-contracts/zipball/84e23fdcd2517bf37aecbd16967e83f0caee25a7",
+                "reference": "84e23fdcd2517bf37aecbd16967e83f0caee25a7",
+                "shasum": ""
+            },
+            "require": {
+                "php": ">=7.1.3"
+            },
+            "suggest": {
+                "psr/event-dispatcher": "",
+                "symfony/event-dispatcher-implementation": ""
+            },
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "1.1-dev"
+                },
+                "thanks": {
+                    "name": "symfony/contracts",
+                    "url": "https://github.com/symfony/contracts"
+                }
+            },
+            "autoload": {
+                "psr-4": {
+                    "Symfony\\Contracts\\EventDispatcher\\": ""
+                }
+            },
+            "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": "Generic abstractions related to dispatching event",
+            "homepage": "https://symfony.com",
+            "keywords": [
+                "abstractions",
+                "contracts",
+                "decoupling",
+                "interfaces",
+                "interoperability",
+                "standards"
+            ],
+            "funding": [
+                {
+                    "url": "https://symfony.com/sponsor",
+                    "type": "custom"
+                },
+                {
+                    "url": "https://github.com/fabpot",
+                    "type": "github"
+                },
+                {
+                    "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+                    "type": "tidelift"
+                }
+            ],
+            "time": "2020-07-06T13:19:58+00:00"
+        },
+        {
+            "name": "symfony/filesystem",
+            "version": "v4.4.15",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/symfony/filesystem.git",
+                "reference": "ebc51494739d3b081ea543ed7c462fa73a4f74db"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/symfony/filesystem/zipball/ebc51494739d3b081ea543ed7c462fa73a4f74db",
+                "reference": "ebc51494739d3b081ea543ed7c462fa73a4f74db",
+                "shasum": ""
+            },
+            "require": {
+                "php": ">=7.1.3",
+                "symfony/polyfill-ctype": "~1.8"
+            },
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "4.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",
+            "funding": [
+                {
+                    "url": "https://symfony.com/sponsor",
+                    "type": "custom"
+                },
+                {
+                    "url": "https://github.com/fabpot",
+                    "type": "github"
+                },
+                {
+                    "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+                    "type": "tidelift"
+                }
+            ],
+            "time": "2020-09-27T13:54:16+00:00"
+        },
+        {
+            "name": "symfony/finder",
+            "version": "v5.1.7",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/symfony/finder.git",
+                "reference": "2c3ba7ad6884e6c4451ce2340e2dc23f6fa3e0d8"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/symfony/finder/zipball/2c3ba7ad6884e6c4451ce2340e2dc23f6fa3e0d8",
+                "reference": "2c3ba7ad6884e6c4451ce2340e2dc23f6fa3e0d8",
+                "shasum": ""
+            },
+            "require": {
+                "php": ">=7.2.5"
+            },
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "5.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",
+            "funding": [
+                {
+                    "url": "https://symfony.com/sponsor",
+                    "type": "custom"
+                },
+                {
+                    "url": "https://github.com/fabpot",
+                    "type": "github"
+                },
+                {
+                    "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+                    "type": "tidelift"
+                }
+            ],
+            "time": "2020-09-02T16:23:27+00:00"
+        },
+        {
+            "name": "symfony/polyfill-ctype",
+            "version": "v1.18.1",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/symfony/polyfill-ctype.git",
+                "reference": "1c302646f6efc070cd46856e600e5e0684d6b454"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/1c302646f6efc070cd46856e600e5e0684d6b454",
+                "reference": "1c302646f6efc070cd46856e600e5e0684d6b454",
+                "shasum": ""
+            },
+            "require": {
+                "php": ">=5.3.3"
+            },
+            "suggest": {
+                "ext-ctype": "For best performance"
+            },
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "1.18-dev"
+                },
+                "thanks": {
+                    "name": "symfony/polyfill",
+                    "url": "https://github.com/symfony/polyfill"
+                }
+            },
+            "autoload": {
+                "psr-4": {
+                    "Symfony\\Polyfill\\Ctype\\": ""
+                },
+                "files": [
+                    "bootstrap.php"
+                ]
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "MIT"
+            ],
+            "authors": [
+                {
+                    "name": "Gert de Pagter",
+                    "email": "BackEndTea@gmail.com"
+                },
+                {
+                    "name": "Symfony Community",
+                    "homepage": "https://symfony.com/contributors"
+                }
+            ],
+            "description": "Symfony polyfill for ctype functions",
+            "homepage": "https://symfony.com",
+            "keywords": [
+                "compatibility",
+                "ctype",
+                "polyfill",
+                "portable"
+            ],
+            "funding": [
+                {
+                    "url": "https://symfony.com/sponsor",
+                    "type": "custom"
+                },
+                {
+                    "url": "https://github.com/fabpot",
+                    "type": "github"
+                },
+                {
+                    "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+                    "type": "tidelift"
+                }
+            ],
+            "time": "2020-07-14T12:35:20+00:00"
+        },
+        {
+            "name": "symfony/polyfill-mbstring",
+            "version": "v1.18.1",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/symfony/polyfill-mbstring.git",
+                "reference": "a6977d63bf9a0ad4c65cd352709e230876f9904a"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/a6977d63bf9a0ad4c65cd352709e230876f9904a",
+                "reference": "a6977d63bf9a0ad4c65cd352709e230876f9904a",
+                "shasum": ""
+            },
+            "require": {
+                "php": ">=5.3.3"
+            },
+            "suggest": {
+                "ext-mbstring": "For best performance"
+            },
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "1.18-dev"
+                },
+                "thanks": {
+                    "name": "symfony/polyfill",
+                    "url": "https://github.com/symfony/polyfill"
+                }
+            },
+            "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"
+            ],
+            "funding": [
+                {
+                    "url": "https://symfony.com/sponsor",
+                    "type": "custom"
+                },
+                {
+                    "url": "https://github.com/fabpot",
+                    "type": "github"
+                },
+                {
+                    "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+                    "type": "tidelift"
+                }
+            ],
+            "time": "2020-07-14T12:35:20+00:00"
+        },
+        {
+            "name": "symfony/polyfill-php73",
+            "version": "v1.18.1",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/symfony/polyfill-php73.git",
+                "reference": "fffa1a52a023e782cdcc221d781fe1ec8f87fcca"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/symfony/polyfill-php73/zipball/fffa1a52a023e782cdcc221d781fe1ec8f87fcca",
+                "reference": "fffa1a52a023e782cdcc221d781fe1ec8f87fcca",
+                "shasum": ""
+            },
+            "require": {
+                "php": ">=5.3.3"
+            },
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "1.18-dev"
+                },
+                "thanks": {
+                    "name": "symfony/polyfill",
+                    "url": "https://github.com/symfony/polyfill"
+                }
+            },
+            "autoload": {
+                "psr-4": {
+                    "Symfony\\Polyfill\\Php73\\": ""
+                },
+                "files": [
+                    "bootstrap.php"
+                ],
+                "classmap": [
+                    "Resources/stubs"
+                ]
+            },
+            "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.3+ features to lower PHP versions",
+            "homepage": "https://symfony.com",
+            "keywords": [
+                "compatibility",
+                "polyfill",
+                "portable",
+                "shim"
+            ],
+            "funding": [
+                {
+                    "url": "https://symfony.com/sponsor",
+                    "type": "custom"
+                },
+                {
+                    "url": "https://github.com/fabpot",
+                    "type": "github"
+                },
+                {
+                    "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+                    "type": "tidelift"
+                }
+            ],
+            "time": "2020-07-14T12:35:20+00:00"
+        },
+        {
+            "name": "symfony/polyfill-php80",
+            "version": "v1.18.1",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/symfony/polyfill-php80.git",
+                "reference": "d87d5766cbf48d72388a9f6b85f280c8ad51f981"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/symfony/polyfill-php80/zipball/d87d5766cbf48d72388a9f6b85f280c8ad51f981",
+                "reference": "d87d5766cbf48d72388a9f6b85f280c8ad51f981",
+                "shasum": ""
+            },
+            "require": {
+                "php": ">=7.0.8"
+            },
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "1.18-dev"
+                },
+                "thanks": {
+                    "name": "symfony/polyfill",
+                    "url": "https://github.com/symfony/polyfill"
+                }
+            },
+            "autoload": {
+                "psr-4": {
+                    "Symfony\\Polyfill\\Php80\\": ""
+                },
+                "files": [
+                    "bootstrap.php"
+                ],
+                "classmap": [
+                    "Resources/stubs"
+                ]
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "MIT"
+            ],
+            "authors": [
+                {
+                    "name": "Ion Bazan",
+                    "email": "ion.bazan@gmail.com"
+                },
+                {
+                    "name": "Nicolas Grekas",
+                    "email": "p@tchwork.com"
+                },
+                {
+                    "name": "Symfony Community",
+                    "homepage": "https://symfony.com/contributors"
+                }
+            ],
+            "description": "Symfony polyfill backporting some PHP 8.0+ features to lower PHP versions",
+            "homepage": "https://symfony.com",
+            "keywords": [
+                "compatibility",
+                "polyfill",
+                "portable",
+                "shim"
+            ],
+            "funding": [
+                {
+                    "url": "https://symfony.com/sponsor",
+                    "type": "custom"
+                },
+                {
+                    "url": "https://github.com/fabpot",
+                    "type": "github"
+                },
+                {
+                    "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+                    "type": "tidelift"
+                }
+            ],
+            "time": "2020-07-14T12:35:20+00:00"
+        },
+        {
+            "name": "symfony/process",
+            "version": "v4.4.15",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/symfony/process.git",
+                "reference": "9b887acc522935f77555ae8813495958c7771ba7"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/symfony/process/zipball/9b887acc522935f77555ae8813495958c7771ba7",
+                "reference": "9b887acc522935f77555ae8813495958c7771ba7",
+                "shasum": ""
+            },
+            "require": {
+                "php": ">=7.1.3"
+            },
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "4.4-dev"
+                }
+            },
+            "autoload": {
+                "psr-4": {
+                    "Symfony\\Component\\Process\\": ""
+                },
+                "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 Process Component",
+            "homepage": "https://symfony.com",
+            "funding": [
+                {
+                    "url": "https://symfony.com/sponsor",
+                    "type": "custom"
+                },
+                {
+                    "url": "https://github.com/fabpot",
+                    "type": "github"
+                },
+                {
+                    "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+                    "type": "tidelift"
+                }
+            ],
+            "time": "2020-09-02T16:08:58+00:00"
+        },
+        {
+            "name": "symfony/service-contracts",
+            "version": "v2.2.0",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/symfony/service-contracts.git",
+                "reference": "d15da7ba4957ffb8f1747218be9e1a121fd298a1"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/symfony/service-contracts/zipball/d15da7ba4957ffb8f1747218be9e1a121fd298a1",
+                "reference": "d15da7ba4957ffb8f1747218be9e1a121fd298a1",
+                "shasum": ""
+            },
+            "require": {
+                "php": ">=7.2.5",
+                "psr/container": "^1.0"
+            },
+            "suggest": {
+                "symfony/service-implementation": ""
+            },
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "2.2-dev"
+                },
+                "thanks": {
+                    "name": "symfony/contracts",
+                    "url": "https://github.com/symfony/contracts"
+                }
+            },
+            "autoload": {
+                "psr-4": {
+                    "Symfony\\Contracts\\Service\\": ""
+                }
+            },
+            "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": "Generic abstractions related to writing services",
+            "homepage": "https://symfony.com",
+            "keywords": [
+                "abstractions",
+                "contracts",
+                "decoupling",
+                "interfaces",
+                "interoperability",
+                "standards"
+            ],
+            "funding": [
+                {
+                    "url": "https://symfony.com/sponsor",
+                    "type": "custom"
+                },
+                {
+                    "url": "https://github.com/fabpot",
+                    "type": "github"
+                },
+                {
+                    "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+                    "type": "tidelift"
+                }
+            ],
+            "time": "2020-09-07T11:33:47+00:00"
+        },
+        {
+            "name": "symfony/yaml",
+            "version": "v4.4.15",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/symfony/yaml.git",
+                "reference": "c7885964b1eceb70b0981556d0a9b01d2d97c8d1"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/symfony/yaml/zipball/c7885964b1eceb70b0981556d0a9b01d2d97c8d1",
+                "reference": "c7885964b1eceb70b0981556d0a9b01d2d97c8d1",
+                "shasum": ""
+            },
+            "require": {
+                "php": ">=7.1.3",
+                "symfony/polyfill-ctype": "~1.8"
+            },
+            "conflict": {
+                "symfony/console": "<3.4"
+            },
+            "require-dev": {
+                "symfony/console": "^3.4|^4.0|^5.0"
+            },
+            "suggest": {
+                "symfony/console": "For validating YAML files using the lint command"
+            },
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "4.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",
+            "funding": [
+                {
+                    "url": "https://symfony.com/sponsor",
+                    "type": "custom"
+                },
+                {
+                    "url": "https://github.com/fabpot",
+                    "type": "github"
+                },
+                {
+                    "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+                    "type": "tidelift"
+                }
+            ],
+            "time": "2020-09-27T03:36:23+00:00"
+        }
+    ],
+    "packages-dev": [
+        {
+            "name": "doctrine/instantiator",
+            "version": "1.3.1",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/doctrine/instantiator.git",
+                "reference": "f350df0268e904597e3bd9c4685c53e0e333feea"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/doctrine/instantiator/zipball/f350df0268e904597e3bd9c4685c53e0e333feea",
+                "reference": "f350df0268e904597e3bd9c4685c53e0e333feea",
+                "shasum": ""
+            },
+            "require": {
+                "php": "^7.1 || ^8.0"
+            },
+            "require-dev": {
+                "doctrine/coding-standard": "^6.0",
+                "ext-pdo": "*",
+                "ext-phar": "*",
+                "phpbench/phpbench": "^0.13",
+                "phpstan/phpstan-phpunit": "^0.11",
+                "phpstan/phpstan-shim": "^0.11",
+                "phpunit/phpunit": "^7.0"
+            },
+            "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://www.doctrine-project.org/projects/instantiator.html",
+            "keywords": [
+                "constructor",
+                "instantiate"
+            ],
+            "funding": [
+                {
+                    "url": "https://www.doctrine-project.org/sponsorship.html",
+                    "type": "custom"
+                },
+                {
+                    "url": "https://www.patreon.com/phpdoctrine",
+                    "type": "patreon"
+                },
+                {
+                    "url": "https://tidelift.com/funding/github/packagist/doctrine%2Finstantiator",
+                    "type": "tidelift"
+                }
+            ],
+            "time": "2020-05-29T17:27:14+00:00"
+        },
+        {
+            "name": "g1a/composer-test-scenarios",
+            "version": "3.2.0",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/g1a/composer-test-scenarios.git",
+                "reference": "e7394206d845fd593d325440507fb940bef8cb62"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/g1a/composer-test-scenarios/zipball/e7394206d845fd593d325440507fb940bef8cb62",
+                "reference": "e7394206d845fd593d325440507fb940bef8cb62",
+                "shasum": ""
+            },
+            "require": {
+                "composer-plugin-api": "^1.0.0 || ^2.0.0",
+                "php": ">=5.4"
+            },
+            "require-dev": {
+                "composer/composer": "^1.10.6 || ^2.0@rc",
+                "php-coveralls/php-coveralls": "^1.0",
+                "phpunit/phpunit": "^4.8.36|^6",
+                "squizlabs/php_codesniffer": "^3.5"
+            },
+            "bin": [
+                "scripts/dependency-licenses"
+            ],
+            "type": "composer-plugin",
+            "extra": {
+                "class": "ComposerTestScenarios\\Plugin",
+                "branch-alias": {
+                    "dev-main": "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": "2020-09-28T20:54:35+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.10.1",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/myclabs/DeepCopy.git",
+                "reference": "969b211f9a51aa1f6c01d1d2aef56d3bd91598e5"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/969b211f9a51aa1f6c01d1d2aef56d3bd91598e5",
+                "reference": "969b211f9a51aa1f6c01d1d2aef56d3bd91598e5",
+                "shasum": ""
+            },
+            "require": {
+                "php": "^7.1 || ^8.0"
+            },
+            "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"
+            ],
+            "funding": [
+                {
+                    "url": "https://tidelift.com/funding/github/packagist/myclabs/deep-copy",
+                    "type": "tidelift"
+                }
+            ],
+            "time": "2020-06-29T13:22:24+00:00"
+        },
+        {
+            "name": "natxet/cssmin",
+            "version": "v3.0.4",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/natxet/CssMin.git",
+                "reference": "92de3fe3ccb4f8298d31952490ef7d5395855c39"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/natxet/CssMin/zipball/92de3fe3ccb4f8298d31952490ef7d5395855c39",
+                "reference": "92de3fe3ccb4f8298d31952490ef7d5395855c39",
+                "shasum": ""
+            },
+            "require": {
+                "php": ">=5.0"
+            },
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "3.0-dev"
+                }
+            },
+            "autoload": {
+                "classmap": [
+                    "src/"
+                ]
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "MIT"
+            ],
+            "authors": [
+                {
+                    "name": "Joe Scylla",
+                    "email": "joe.scylla@gmail.com",
+                    "homepage": "https://profiles.google.com/joe.scylla"
+                }
+            ],
+            "description": "Minifying CSS",
+            "homepage": "http://code.google.com/p/cssmin/",
+            "keywords": [
+                "css",
+                "minify"
+            ],
+            "time": "2015-09-25T11:13:11+00:00"
+        },
+        {
+            "name": "patchwork/jsqueeze",
+            "version": "v2.0.5",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/tchwork/jsqueeze.git",
+                "reference": "693d64850eab2ce6a7c8f7cf547e1ab46e69d542"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/tchwork/jsqueeze/zipball/693d64850eab2ce6a7c8f7cf547e1ab46e69d542",
+                "reference": "693d64850eab2ce6a7c8f7cf547e1ab46e69d542",
+                "shasum": ""
+            },
+            "require": {
+                "php": ">=5.3.0"
+            },
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "2.0-dev"
+                }
+            },
+            "autoload": {
+                "psr-4": {
+                    "Patchwork\\": "src/"
+                }
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "(Apache-2.0 or GPL-2.0)"
+            ],
+            "authors": [
+                {
+                    "name": "Nicolas Grekas",
+                    "email": "p@tchwork.com"
+                }
+            ],
+            "description": "Efficient JavaScript minification in PHP",
+            "homepage": "https://github.com/tchwork/jsqueeze",
+            "keywords": [
+                "compression",
+                "javascript",
+                "minification"
+            ],
+            "abandoned": true,
+            "time": "2016-04-19T09:28:22+00:00"
+        },
+        {
+            "name": "pear/archive_tar",
+            "version": "1.4.10",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/pear/Archive_Tar.git",
+                "reference": "bbb4f10f71a1da2715ec6d9a683f4f23c507a49b"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/pear/Archive_Tar/zipball/bbb4f10f71a1da2715ec6d9a683f4f23c507a49b",
+                "reference": "bbb4f10f71a1da2715ec6d9a683f4f23c507a49b",
+                "shasum": ""
+            },
+            "require": {
+                "pear/pear-core-minimal": "^1.10.0alpha2",
+                "php": ">=5.2.0"
+            },
+            "require-dev": {
+                "phpunit/phpunit": "*"
+            },
+            "suggest": {
+                "ext-bz2": "Bz2 compression support.",
+                "ext-xz": "Lzma2 compression support.",
+                "ext-zlib": "Gzip compression support."
+            },
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "1.4.x-dev"
+                }
+            },
+            "autoload": {
+                "psr-0": {
+                    "Archive_Tar": ""
+                }
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "include-path": [
+                "./"
+            ],
+            "license": [
+                "BSD-3-Clause"
+            ],
+            "authors": [
+                {
+                    "name": "Vincent Blavet",
+                    "email": "vincent@phpconcept.net"
+                },
+                {
+                    "name": "Greg Beaver",
+                    "email": "greg@chiaraquartet.net"
+                },
+                {
+                    "name": "Michiel Rook",
+                    "email": "mrook@php.net"
+                }
+            ],
+            "description": "Tar file management class with compression support (gzip, bzip2, lzma2)",
+            "homepage": "https://github.com/pear/Archive_Tar",
+            "keywords": [
+                "archive",
+                "tar"
+            ],
+            "time": "2020-09-15T14:13:23+00:00"
+        },
+        {
+            "name": "pear/console_getopt",
+            "version": "v1.4.3",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/pear/Console_Getopt.git",
+                "reference": "a41f8d3e668987609178c7c4a9fe48fecac53fa0"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/pear/Console_Getopt/zipball/a41f8d3e668987609178c7c4a9fe48fecac53fa0",
+                "reference": "a41f8d3e668987609178c7c4a9fe48fecac53fa0",
+                "shasum": ""
+            },
+            "type": "library",
+            "autoload": {
+                "psr-0": {
+                    "Console": "./"
+                }
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "include-path": [
+                "./"
+            ],
+            "license": [
+                "BSD-2-Clause"
+            ],
+            "authors": [
+                {
+                    "name": "Andrei Zmievski",
+                    "email": "andrei@php.net",
+                    "role": "Lead"
+                },
+                {
+                    "name": "Stig Bakken",
+                    "email": "stig@php.net",
+                    "role": "Developer"
+                },
+                {
+                    "name": "Greg Beaver",
+                    "email": "cellog@php.net",
+                    "role": "Helper"
+                }
+            ],
+            "description": "More info available on: http://pear.php.net/package/Console_Getopt",
+            "time": "2019-11-20T18:27:48+00:00"
+        },
+        {
+            "name": "pear/pear-core-minimal",
+            "version": "v1.10.10",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/pear/pear-core-minimal.git",
+                "reference": "625a3c429d9b2c1546438679074cac1b089116a7"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/pear/pear-core-minimal/zipball/625a3c429d9b2c1546438679074cac1b089116a7",
+                "reference": "625a3c429d9b2c1546438679074cac1b089116a7",
+                "shasum": ""
+            },
+            "require": {
+                "pear/console_getopt": "~1.4",
+                "pear/pear_exception": "~1.0"
+            },
+            "replace": {
+                "rsky/pear-core-min": "self.version"
+            },
+            "type": "library",
+            "autoload": {
+                "psr-0": {
+                    "": "src/"
+                }
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "include-path": [
+                "src/"
+            ],
+            "license": [
+                "BSD-3-Clause"
+            ],
+            "authors": [
+                {
+                    "name": "Christian Weiske",
+                    "email": "cweiske@php.net",
+                    "role": "Lead"
+                }
+            ],
+            "description": "Minimal set of PEAR core files to be used as composer dependency",
+            "time": "2019-11-19T19:00:24+00:00"
+        },
+        {
+            "name": "pear/pear_exception",
+            "version": "v1.0.1",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/pear/PEAR_Exception.git",
+                "reference": "dbb42a5a0e45f3adcf99babfb2a1ba77b8ac36a7"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/pear/PEAR_Exception/zipball/dbb42a5a0e45f3adcf99babfb2a1ba77b8ac36a7",
+                "reference": "dbb42a5a0e45f3adcf99babfb2a1ba77b8ac36a7",
+                "shasum": ""
+            },
+            "require": {
+                "php": ">=4.4.0"
+            },
+            "require-dev": {
+                "phpunit/phpunit": "*"
+            },
+            "type": "class",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "1.0.x-dev"
+                }
+            },
+            "autoload": {
+                "classmap": [
+                    "PEAR/"
+                ]
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "include-path": [
+                "."
+            ],
+            "license": [
+                "BSD-2-Clause"
+            ],
+            "authors": [
+                {
+                    "name": "Helgi Thormar",
+                    "email": "dufuz@php.net"
+                },
+                {
+                    "name": "Greg Beaver",
+                    "email": "cellog@php.net"
+                }
+            ],
+            "description": "The PEAR Exception base class.",
+            "homepage": "https://github.com/pear/PEAR_Exception",
+            "keywords": [
+                "exception"
+            ],
+            "time": "2019-12-10T10:24:42+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": "2.2.0",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/phpDocumentor/ReflectionCommon.git",
+                "reference": "1d01c49d4ed62f25aa84a747ad35d5a16924662b"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/phpDocumentor/ReflectionCommon/zipball/1d01c49d4ed62f25aa84a747ad35d5a16924662b",
+                "reference": "1d01c49d4ed62f25aa84a747ad35d5a16924662b",
+                "shasum": ""
+            },
+            "require": {
+                "php": "^7.2 || ^8.0"
+            },
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-2.x": "2.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": "2020-06-27T09:03:43+00:00"
+        },
+        {
+            "name": "phpdocumentor/reflection-docblock",
+            "version": "5.2.2",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/phpDocumentor/ReflectionDocBlock.git",
+                "reference": "069a785b2141f5bcf49f3e353548dc1cce6df556"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/phpDocumentor/ReflectionDocBlock/zipball/069a785b2141f5bcf49f3e353548dc1cce6df556",
+                "reference": "069a785b2141f5bcf49f3e353548dc1cce6df556",
+                "shasum": ""
+            },
+            "require": {
+                "ext-filter": "*",
+                "php": "^7.2 || ^8.0",
+                "phpdocumentor/reflection-common": "^2.2",
+                "phpdocumentor/type-resolver": "^1.3",
+                "webmozart/assert": "^1.9.1"
+            },
+            "require-dev": {
+                "mockery/mockery": "~1.3.2"
+            },
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "5.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"
+                },
+                {
+                    "name": "Jaap van Otterdijk",
+                    "email": "account@ijaap.nl"
+                }
+            ],
+            "description": "With this component, a library can provide support for annotations via DocBlocks or otherwise retrieve information that is embedded in a DocBlock.",
+            "time": "2020-09-03T19:13:55+00:00"
+        },
+        {
+            "name": "phpdocumentor/type-resolver",
+            "version": "1.4.0",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/phpDocumentor/TypeResolver.git",
+                "reference": "6a467b8989322d92aa1c8bf2bebcc6e5c2ba55c0"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/phpDocumentor/TypeResolver/zipball/6a467b8989322d92aa1c8bf2bebcc6e5c2ba55c0",
+                "reference": "6a467b8989322d92aa1c8bf2bebcc6e5c2ba55c0",
+                "shasum": ""
+            },
+            "require": {
+                "php": "^7.2 || ^8.0",
+                "phpdocumentor/reflection-common": "^2.0"
+            },
+            "require-dev": {
+                "ext-tokenizer": "*"
+            },
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-1.x": "1.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": "A PSR-5 based resolver of Class names, Types and Structural Element Names",
+            "time": "2020-09-17T18:55:26+00:00"
+        },
+        {
+            "name": "phpspec/prophecy",
+            "version": "v1.10.3",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/phpspec/prophecy.git",
+                "reference": "451c3cd1418cf640de218914901e51b064abb093"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/phpspec/prophecy/zipball/451c3cd1418cf640de218914901e51b064abb093",
+                "reference": "451c3cd1418cf640de218914901e51b064abb093",
+                "shasum": ""
+            },
+            "require": {
+                "doctrine/instantiator": "^1.0.2",
+                "php": "^5.3|^7.0",
+                "phpdocumentor/reflection-docblock": "^2.0|^3.0.2|^4.0|^5.0",
+                "sebastian/comparator": "^1.2.3|^2.0|^3.0|^4.0",
+                "sebastian/recursion-context": "^1.0|^2.0|^3.0|^4.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.10.x-dev"
+                }
+            },
+            "autoload": {
+                "psr-4": {
+                    "Prophecy\\": "src/Prophecy"
+                }
+            },
+            "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": "2020-03-05T15:02:03+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": "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"
+            ],
+            "abandoned": true,
+            "time": "2017-11-27T05:48:46+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"
+            ],
+            "abandoned": true,
+            "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": "3.5.6",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/squizlabs/PHP_CodeSniffer.git",
+                "reference": "e97627871a7eab2f70e59166072a6b767d5834e0"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/squizlabs/PHP_CodeSniffer/zipball/e97627871a7eab2f70e59166072a6b767d5834e0",
+                "reference": "e97627871a7eab2f70e59166072a6b767d5834e0",
+                "shasum": ""
+            },
+            "require": {
+                "ext-simplexml": "*",
+                "ext-tokenizer": "*",
+                "ext-xmlwriter": "*",
+                "php": ">=5.4.0"
+            },
+            "require-dev": {
+                "phpunit/phpunit": "^4.0 || ^5.0 || ^6.0 || ^7.0"
+            },
+            "bin": [
+                "bin/phpcs",
+                "bin/phpcbf"
+            ],
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "3.x-dev"
+                }
+            },
+            "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": "https://github.com/squizlabs/PHP_CodeSniffer",
+            "keywords": [
+                "phpcs",
+                "standards"
+            ],
+            "time": "2020-08-10T04:50:15+00:00"
+        },
+        {
+            "name": "symfony/config",
+            "version": "v4.4.15",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/symfony/config.git",
+                "reference": "7c5a1002178a612787c291a4f515f87b19176b61"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/symfony/config/zipball/7c5a1002178a612787c291a4f515f87b19176b61",
+                "reference": "7c5a1002178a612787c291a4f515f87b19176b61",
+                "shasum": ""
+            },
+            "require": {
+                "php": ">=7.1.3",
+                "symfony/filesystem": "^3.4|^4.0|^5.0",
+                "symfony/polyfill-ctype": "~1.8"
+            },
+            "conflict": {
+                "symfony/finder": "<3.4"
+            },
+            "require-dev": {
+                "symfony/event-dispatcher": "^3.4|^4.0|^5.0",
+                "symfony/finder": "^3.4|^4.0|^5.0",
+                "symfony/messenger": "^4.1|^5.0",
+                "symfony/service-contracts": "^1.1|^2",
+                "symfony/yaml": "^3.4|^4.0|^5.0"
+            },
+            "suggest": {
+                "symfony/yaml": "To use the yaml reference dumper"
+            },
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "4.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",
+            "funding": [
+                {
+                    "url": "https://symfony.com/sponsor",
+                    "type": "custom"
+                },
+                {
+                    "url": "https://github.com/fabpot",
+                    "type": "github"
+                },
+                {
+                    "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+                    "type": "tidelift"
+                }
+            ],
+            "time": "2020-10-02T07:34:48+00:00"
+        },
+        {
+            "name": "symfony/stopwatch",
+            "version": "v4.4.15",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/symfony/stopwatch.git",
+                "reference": "6f89e19772cf61b3c65bab329fe0e318259fbd91"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/symfony/stopwatch/zipball/6f89e19772cf61b3c65bab329fe0e318259fbd91",
+                "reference": "6f89e19772cf61b3c65bab329fe0e318259fbd91",
+                "shasum": ""
+            },
+            "require": {
+                "php": ">=7.1.3",
+                "symfony/service-contracts": "^1.0|^2"
+            },
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "4.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",
+            "funding": [
+                {
+                    "url": "https://symfony.com/sponsor",
+                    "type": "custom"
+                },
+                {
+                    "url": "https://github.com/fabpot",
+                    "type": "github"
+                },
+                {
+                    "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+                    "type": "tidelift"
+                }
+            ],
+            "time": "2020-09-02T16:08:58+00:00"
+        },
+        {
+            "name": "webmozart/assert",
+            "version": "1.9.1",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/webmozart/assert.git",
+                "reference": "bafc69caeb4d49c39fd0779086c03a3738cbb389"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/webmozart/assert/zipball/bafc69caeb4d49c39fd0779086c03a3738cbb389",
+                "reference": "bafc69caeb4d49c39fd0779086c03a3738cbb389",
+                "shasum": ""
+            },
+            "require": {
+                "php": "^5.3.3 || ^7.0 || ^8.0",
+                "symfony/polyfill-ctype": "^1.8"
+            },
+            "conflict": {
+                "phpstan/phpstan": "<0.12.20",
+                "vimeo/psalm": "<3.9.1"
+            },
+            "require-dev": {
+                "phpunit/phpunit": "^4.8.36 || ^7.5.13"
+            },
+            "type": "library",
+            "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": "2020-07-08T17:02:28+00:00"
+        }
+    ],
+    "aliases": [],
+    "minimum-stability": "stable",
+    "stability-flags": [],
+    "prefer-stable": false,
+    "prefer-lowest": false,
+    "platform": {
+        "php": ">=5.5.0"
+    },
+    "platform-dev": [],
+    "platform-overrides": {
+        "php": "7.2.5"
+    },
+    "plugin-api-version": "1.1.0"
+}
diff --git a/vendor/consolidation/robo/.scenarios.lock/install b/vendor/consolidation/robo/.scenarios.lock/install
index 16c69e107c..4d8a777705 100755
--- a/vendor/consolidation/robo/.scenarios.lock/install
+++ b/vendor/consolidation/robo/.scenarios.lock/install
@@ -4,16 +4,16 @@ SCENARIO=$1
 DEPENDENCIES=${2-install}
 
 # Convert the aliases 'highest', 'lowest' and 'lock' to
-# the corresponding composer command to run.
+# the corresponding composer update command to run.
 case $DEPENDENCIES in
   highest)
-    DEPENDENCIES=update
+    UPDATE_COMMAND=update
     ;;
   lowest)
-    DEPENDENCIES='update --prefer-lowest'
+    UPDATE_COMMAND='update --prefer-lowest'
     ;;
   lock|default|"")
-    DEPENDENCIES=install
+    UPDATE_COMMAND=''
     ;;
 esac
 
@@ -48,7 +48,11 @@ echo
 set -ex
 
 composer -n validate --working-dir=$dir --no-check-all --ansi
-composer -n --working-dir=$dir ${DEPENDENCIES} --prefer-dist --no-scripts
+
+if [ ! -z "$UPDATE_COMMAND" ] ; then
+  composer -n --working-dir=$dir ${UPDATE_COMMAND} --prefer-dist --no-scripts
+fi
+composer -n --working-dir=$dir install --prefer-dist
 
 # If called from a CI context, print out some extra information about
 # what we just installed.
diff --git a/vendor/consolidation/robo/.scenarios.lock/symfony2/composer.json b/vendor/consolidation/robo/.scenarios.lock/symfony2/composer.json
index d11ea0fadc..0acc7d2cea 100644
--- a/vendor/consolidation/robo/.scenarios.lock/symfony2/composer.json
+++ b/vendor/consolidation/robo/.scenarios.lock/symfony2/composer.json
@@ -25,35 +25,29 @@
     "require": {
         "symfony/console": "^2.8",
         "php": ">=5.5.0",
-        "league/container": "^2.2",
-        "consolidation/log": "~1",
-        "consolidation/config": "^1.2",
-        "consolidation/annotated-command": "^2.10.2",
-        "consolidation/output-formatters": "^3.1.13",
-        "consolidation/self-update": "^1",
-        "grasmash/yaml-expander": "^1.3",
-        "symfony/finder": "^2.5|^3|^4",
-        "symfony/process": "^2.5|^3|^4",
+        "consolidation/annotated-command": "^2.12.1|^4.1",
+        "consolidation/config": "^1.2.1",
+        "consolidation/log": "^1.1.1|^2",
+        "consolidation/output-formatters": "^3.5.1|^4.1",
+        "consolidation/self-update": "^1.1.5",
+        "grasmash/yaml-expander": "^1.4",
+        "league/container": "^2.4.1",
+        "symfony/event-dispatcher": "^2.5|^3|^4",
         "symfony/filesystem": "^2.5|^3|^4",
-        "symfony/event-dispatcher": "^2.5|^3|^4"
+        "symfony/finder": "^2.5|^3|^4|^5",
+        "symfony/process": "^2.5|^3|^4"
     },
     "require-dev": {
+        "phpunit/phpunit": "^4.8.36",
         "g1a/composer-test-scenarios": "^3",
-        "patchwork/jsqueeze": "~2",
-        "natxet/CssMin": "3.0.4",
+        "natxet/cssmin": "3.0.4",
+        "patchwork/jsqueeze": "^2",
         "pear/archive_tar": "^1.4.4",
-        "codeception/base": "^2.3.7",
-        "codeception/verify": "^0.3.2",
-        "codeception/aspect-mock": "^1|^2.1.1",
-        "goaop/parser-reflection": "^1.1.0",
-        "nikic/php-parser": "^3.1.5",
-        "php-coveralls/php-coveralls": "^1",
-        "phpunit/php-code-coverage": "~2|~4",
-        "squizlabs/php_codesniffer": "^2.8"
+        "squizlabs/php_codesniffer": "^3"
     },
     "scripts": {
         "cs": "./robo sniff",
-        "unit": "./robo test --coverage",
+        "unit": "phpunit",
         "lint": [
             "find src -name '*.php' -print0 | xargs -0 -n1 php -l",
             "find tests/src -name '*.php' -print0 | xargs -0 -n1 php -l"
@@ -77,7 +71,7 @@
     },
     "extra": {
         "branch-alias": {
-            "dev-master": "2.x-dev"
+            "dev-master": "1.x-dev"
         }
     },
     "suggest": {
diff --git a/vendor/consolidation/robo/.scenarios.lock/symfony4/composer.json b/vendor/consolidation/robo/.scenarios.lock/symfony4/composer.json
index e09d66c9c3..afd02904f5 100644
--- a/vendor/consolidation/robo/.scenarios.lock/symfony4/composer.json
+++ b/vendor/consolidation/robo/.scenarios.lock/symfony4/composer.json
@@ -25,36 +25,30 @@
     "require": {
         "symfony/console": "^4",
         "php": ">=5.5.0",
-        "league/container": "^2.2",
-        "consolidation/log": "~1",
-        "consolidation/config": "^1.2",
-        "consolidation/annotated-command": "^2.10.2",
-        "consolidation/output-formatters": "^3.1.13",
-        "consolidation/self-update": "^1",
-        "grasmash/yaml-expander": "^1.3",
-        "symfony/finder": "^2.5|^3|^4",
-        "symfony/process": "^2.5|^3|^4",
+        "consolidation/annotated-command": "^2.12.1|^4.1",
+        "consolidation/config": "^1.2.1",
+        "consolidation/log": "^1.1.1|^2",
+        "consolidation/output-formatters": "^3.5.1|^4.1",
+        "consolidation/self-update": "^1.1.5",
+        "grasmash/yaml-expander": "^1.4",
+        "league/container": "^2.4.1",
+        "symfony/event-dispatcher": "^2.5|^3|^4",
         "symfony/filesystem": "^2.5|^3|^4",
-        "symfony/event-dispatcher": "^2.5|^3|^4"
+        "symfony/finder": "^2.5|^3|^4|^5",
+        "symfony/process": "^2.5|^3|^4"
     },
     "require-dev": {
         "g1a/composer-test-scenarios": "^3",
-        "patchwork/jsqueeze": "~2",
-        "natxet/CssMin": "3.0.4",
+        "natxet/cssmin": "3.0.4",
+        "patchwork/jsqueeze": "^2",
         "pear/archive_tar": "^1.4.4",
-        "codeception/base": "^2.3.7",
-        "goaop/framework": "~2.1.2",
-        "codeception/verify": "^0.3.2",
-        "codeception/aspect-mock": "^1|^2.1.1",
-        "goaop/parser-reflection": "^1.1.0",
-        "nikic/php-parser": "^3.1.5",
         "php-coveralls/php-coveralls": "^1",
-        "phpunit/php-code-coverage": "~2|~4",
-        "squizlabs/php_codesniffer": "^2.8"
+        "phpunit/phpunit": "^5.7.27",
+        "squizlabs/php_codesniffer": "^3"
     },
     "scripts": {
         "cs": "./robo sniff",
-        "unit": "./robo test --coverage",
+        "unit": "phpunit",
         "lint": [
             "find src -name '*.php' -print0 | xargs -0 -n1 php -l",
             "find tests/src -name '*.php' -print0 | xargs -0 -n1 php -l"
@@ -78,7 +72,7 @@
     },
     "extra": {
         "branch-alias": {
-            "dev-master": "2.x-dev"
+            "dev-master": "1.x-dev"
         }
     },
     "suggest": {
diff --git a/vendor/consolidation/robo/.scenarios.lock/symfony4/composer.lock b/vendor/consolidation/robo/.scenarios.lock/symfony4/composer.lock
index 1e19800b3f..a3341115b2 100644
--- a/vendor/consolidation/robo/.scenarios.lock/symfony4/composer.lock
+++ b/vendor/consolidation/robo/.scenarios.lock/symfony4/composer.lock
@@ -4,35 +4,35 @@
         "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",
         "This file is @generated automatically"
     ],
-    "content-hash": "1a613bb086d612b492b42f2bc2a3b56a",
+    "content-hash": "112ff582ad73faeb2172d29338e7d237",
     "packages": [
         {
             "name": "consolidation/annotated-command",
-            "version": "2.11.2",
+            "version": "4.2.3",
             "source": {
                 "type": "git",
                 "url": "https://github.com/consolidation/annotated-command.git",
-                "reference": "004af26391cd7d1cd04b0ac736dc1324d1b4f572"
+                "reference": "4b596872f24c39d9c04d7b3adb6bc51baa1f2fd5"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/consolidation/annotated-command/zipball/004af26391cd7d1cd04b0ac736dc1324d1b4f572",
-                "reference": "004af26391cd7d1cd04b0ac736dc1324d1b4f572",
+                "url": "https://api.github.com/repos/consolidation/annotated-command/zipball/4b596872f24c39d9c04d7b3adb6bc51baa1f2fd5",
+                "reference": "4b596872f24c39d9c04d7b3adb6bc51baa1f2fd5",
                 "shasum": ""
             },
             "require": {
-                "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"
+                "consolidation/output-formatters": "^4.1.1",
+                "php": ">=7.1.3",
+                "psr/log": "^1|^2",
+                "symfony/console": "^4.4.8|^5",
+                "symfony/event-dispatcher": "^4.4.8|^5",
+                "symfony/finder": "^4.4.8|^5"
             },
             "require-dev": {
                 "g1a/composer-test-scenarios": "^3",
-                "php-coveralls/php-coveralls": "^1",
+                "php-coveralls/php-coveralls": "^2.2",
                 "phpunit/phpunit": "^6",
-                "squizlabs/php_codesniffer": "^2.7"
+                "squizlabs/php_codesniffer": "^3"
             },
             "type": "library",
             "extra": {
@@ -46,42 +46,10 @@
                                 "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"
+                    "dev-main": "4.x-dev"
                 }
             },
             "autoload": {
@@ -100,20 +68,20 @@
                 }
             ],
             "description": "Initialize Symfony Console commands from annotated command class methods.",
-            "time": "2019-02-02T02:29:53+00:00"
+            "time": "2020-10-03T14:28:42+00:00"
         },
         {
             "name": "consolidation/config",
-            "version": "1.2.0",
+            "version": "1.2.1",
             "source": {
                 "type": "git",
                 "url": "https://github.com/consolidation/config.git",
-                "reference": "11ab7ecd19131ce084390171b9c070eedecf7dab"
+                "reference": "cac1279bae7efb5c7fb2ca4c3ba4b8eb741a96c1"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/consolidation/config/zipball/11ab7ecd19131ce084390171b9c070eedecf7dab",
-                "reference": "11ab7ecd19131ce084390171b9c070eedecf7dab",
+                "url": "https://api.github.com/repos/consolidation/config/zipball/cac1279bae7efb5c7fb2ca4c3ba4b8eb741a96c1",
+                "reference": "cac1279bae7efb5c7fb2ca4c3ba4b8eb741a96c1",
                 "shasum": ""
             },
             "require": {
@@ -181,78 +149,49 @@
                 }
             ],
             "description": "Provide configuration services for a commandline tool.",
-            "time": "2019-02-16T01:18:47+00:00"
+            "time": "2019-03-03T19:37:04+00:00"
         },
         {
             "name": "consolidation/log",
-            "version": "1.1.1",
+            "version": "2.0.1",
             "source": {
                 "type": "git",
                 "url": "https://github.com/consolidation/log.git",
-                "reference": "b2e887325ee90abc96b0a8b7b474cd9e7c896e3a"
+                "reference": "ba0bf6af1fbd09ed4dc18fc2f27b12ceff487cbf"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/consolidation/log/zipball/b2e887325ee90abc96b0a8b7b474cd9e7c896e3a",
-                "reference": "b2e887325ee90abc96b0a8b7b474cd9e7c896e3a",
+                "url": "https://api.github.com/repos/consolidation/log/zipball/ba0bf6af1fbd09ed4dc18fc2f27b12ceff487cbf",
+                "reference": "ba0bf6af1fbd09ed4dc18fc2f27b12ceff487cbf",
                 "shasum": ""
             },
             "require": {
-                "php": ">=5.4.5",
+                "php": ">=7.1.3",
                 "psr/log": "^1.0",
-                "symfony/console": "^2.8|^3|^4"
+                "symfony/console": "^4|^5"
             },
             "require-dev": {
                 "g1a/composer-test-scenarios": "^3",
-                "php-coveralls/php-coveralls": "^1",
+                "php-coveralls/php-coveralls": "^2.2",
                 "phpunit/phpunit": "^6",
-                "squizlabs/php_codesniffer": "^2"
+                "squizlabs/php_codesniffer": "^3"
             },
             "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"
-                            }
-                        }
-                    },
-                    "phpunit4": {
-                        "require-dev": {
-                            "phpunit/phpunit": "^4.8.36"
+                            "symfony/console": "^4"
                         },
-                        "remove": [
-                            "php-coveralls/php-coveralls"
-                        ],
                         "config": {
                             "platform": {
-                                "php": "5.4.8"
+                                "php": "7.1.3"
                             }
                         }
                     }
                 },
                 "branch-alias": {
-                    "dev-master": "1.x-dev"
+                    "dev-master": "2.x-dev"
                 }
             },
             "autoload": {
@@ -271,44 +210,55 @@
                 }
             ],
             "description": "Improved Psr-3 / Psr\\Log logger based on Symfony Console components.",
-            "time": "2019-01-01T17:30:51+00:00"
+            "time": "2020-05-27T17:06:13+00:00"
         },
         {
             "name": "consolidation/output-formatters",
-            "version": "3.4.0",
+            "version": "4.1.1",
             "source": {
                 "type": "git",
                 "url": "https://github.com/consolidation/output-formatters.git",
-                "reference": "a942680232094c4a5b21c0b7e54c20cce623ae19"
+                "reference": "9deeddd6a916d0a756b216a8b40ce1016e17c0b9"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/consolidation/output-formatters/zipball/a942680232094c4a5b21c0b7e54c20cce623ae19",
-                "reference": "a942680232094c4a5b21c0b7e54c20cce623ae19",
+                "url": "https://api.github.com/repos/consolidation/output-formatters/zipball/9deeddd6a916d0a756b216a8b40ce1016e17c0b9",
+                "reference": "9deeddd6a916d0a756b216a8b40ce1016e17c0b9",
                 "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"
+                "php": ">=7.1.3",
+                "symfony/console": "^4|^5",
+                "symfony/finder": "^4|^5"
             },
             "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"
+                "g1a/composer-test-scenarios": "^3",
+                "php-coveralls/php-coveralls": "^2.2",
+                "phpunit/phpunit": "^6",
+                "squizlabs/php_codesniffer": "^3",
+                "symfony/var-dumper": "^4",
+                "symfony/yaml": "^4"
             },
             "suggest": {
                 "symfony/var-dumper": "For using the var_dump formatter"
             },
             "type": "library",
             "extra": {
+                "scenarios": {
+                    "symfony4": {
+                        "require": {
+                            "symfony/console": "^4.0"
+                        },
+                        "config": {
+                            "platform": {
+                                "php": "7.1.3"
+                            }
+                        }
+                    }
+                },
                 "branch-alias": {
-                    "dev-master": "3.x-dev"
+                    "dev-master": "4.x-dev"
                 }
             },
             "autoload": {
@@ -327,26 +277,26 @@
                 }
             ],
             "description": "Format text by applying transformations provided by plug-in formatters.",
-            "time": "2018-10-19T22:35:38+00:00"
+            "time": "2020-05-27T20:51:17+00:00"
         },
         {
             "name": "consolidation/self-update",
-            "version": "1.1.5",
+            "version": "1.2.0",
             "source": {
                 "type": "git",
                 "url": "https://github.com/consolidation/self-update.git",
-                "reference": "a1c273b14ce334789825a09d06d4c87c0a02ad54"
+                "reference": "dba6b2c0708f20fa3ba8008a2353b637578849b4"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/consolidation/self-update/zipball/a1c273b14ce334789825a09d06d4c87c0a02ad54",
-                "reference": "a1c273b14ce334789825a09d06d4c87c0a02ad54",
+                "url": "https://api.github.com/repos/consolidation/self-update/zipball/dba6b2c0708f20fa3ba8008a2353b637578849b4",
+                "reference": "dba6b2c0708f20fa3ba8008a2353b637578849b4",
                 "shasum": ""
             },
             "require": {
                 "php": ">=5.5.0",
-                "symfony/console": "^2.8|^3|^4",
-                "symfony/filesystem": "^2.5|^3|^4"
+                "symfony/console": "^2.8|^3|^4|^5",
+                "symfony/filesystem": "^2.5|^3|^4|^5"
             },
             "bin": [
                 "scripts/release"
@@ -367,17 +317,17 @@
                 "MIT"
             ],
             "authors": [
-                {
-                    "name": "Greg Anderson",
-                    "email": "greg.1.anderson@greenknowe.org"
-                },
                 {
                     "name": "Alexander Menk",
                     "email": "menk@mestrona.net"
+                },
+                {
+                    "name": "Greg Anderson",
+                    "email": "greg.1.anderson@greenknowe.org"
                 }
             ],
             "description": "Provides a self:update command for Symfony Console applications.",
-            "time": "2018-10-28T01:52:03+00:00"
+            "time": "2020-04-13T02:49:20+00:00"
         },
         {
             "name": "container-interop/container-interop",
@@ -408,6 +358,7 @@
             ],
             "description": "Promoting the interoperability of container objects (DIC, SL, etc.)",
             "homepage": "https://github.com/container-interop/container-interop",
+            "abandoned": "psr/container",
             "time": "2017-02-14T19:40:03+00:00"
         },
         {
@@ -680,16 +631,16 @@
         },
         {
             "name": "psr/log",
-            "version": "1.1.0",
+            "version": "1.1.3",
             "source": {
                 "type": "git",
                 "url": "https://github.com/php-fig/log.git",
-                "reference": "6c001f1daafa3a3ac1d8ff69ee4db8e799a654dd"
+                "reference": "0f73288fd15629204f9d42b7055f72dacbe811fc"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/php-fig/log/zipball/6c001f1daafa3a3ac1d8ff69ee4db8e799a654dd",
-                "reference": "6c001f1daafa3a3ac1d8ff69ee4db8e799a654dd",
+                "url": "https://api.github.com/repos/php-fig/log/zipball/0f73288fd15629204f9d42b7055f72dacbe811fc",
+                "reference": "0f73288fd15629204f9d42b7055f72dacbe811fc",
                 "shasum": ""
             },
             "require": {
@@ -698,7 +649,7 @@
             "type": "library",
             "extra": {
                 "branch-alias": {
-                    "dev-master": "1.0.x-dev"
+                    "dev-master": "1.1.x-dev"
                 }
             },
             "autoload": {
@@ -723,29 +674,33 @@
                 "psr",
                 "psr-3"
             ],
-            "time": "2018-11-20T15:27:04+00:00"
+            "time": "2020-03-23T09:12:05+00:00"
         },
         {
             "name": "symfony/console",
-            "version": "v4.2.3",
+            "version": "v4.4.15",
             "source": {
                 "type": "git",
                 "url": "https://github.com/symfony/console.git",
-                "reference": "1f0ad51dfde4da8a6070f06adc58b4e37cbb37a4"
+                "reference": "90933b39c7b312fc3ceaa1ddeac7eb48cb953124"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/symfony/console/zipball/1f0ad51dfde4da8a6070f06adc58b4e37cbb37a4",
-                "reference": "1f0ad51dfde4da8a6070f06adc58b4e37cbb37a4",
+                "url": "https://api.github.com/repos/symfony/console/zipball/90933b39c7b312fc3ceaa1ddeac7eb48cb953124",
+                "reference": "90933b39c7b312fc3ceaa1ddeac7eb48cb953124",
                 "shasum": ""
             },
             "require": {
-                "php": "^7.1.3",
-                "symfony/contracts": "^1.0",
-                "symfony/polyfill-mbstring": "~1.0"
+                "php": ">=7.1.3",
+                "symfony/polyfill-mbstring": "~1.0",
+                "symfony/polyfill-php73": "^1.8",
+                "symfony/polyfill-php80": "^1.15",
+                "symfony/service-contracts": "^1.1|^2"
             },
             "conflict": {
                 "symfony/dependency-injection": "<3.4",
+                "symfony/event-dispatcher": "<4.3|>=5",
+                "symfony/lock": "<4.4",
                 "symfony/process": "<3.3"
             },
             "provide": {
@@ -753,11 +708,12 @@
             },
             "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"
+                "symfony/config": "^3.4|^4.0|^5.0",
+                "symfony/dependency-injection": "^3.4|^4.0|^5.0",
+                "symfony/event-dispatcher": "^4.3",
+                "symfony/lock": "^4.4|^5.0",
+                "symfony/process": "^3.4|^4.0|^5.0",
+                "symfony/var-dumper": "^4.3|^5.0"
             },
             "suggest": {
                 "psr/log": "For using the console logger",
@@ -768,7 +724,7 @@
             "type": "library",
             "extra": {
                 "branch-alias": {
-                    "dev-master": "4.2-dev"
+                    "dev-master": "4.4-dev"
                 }
             },
             "autoload": {
@@ -795,48 +751,73 @@
             ],
             "description": "Symfony Console Component",
             "homepage": "https://symfony.com",
-            "time": "2019-01-25T14:35:16+00:00"
+            "funding": [
+                {
+                    "url": "https://symfony.com/sponsor",
+                    "type": "custom"
+                },
+                {
+                    "url": "https://github.com/fabpot",
+                    "type": "github"
+                },
+                {
+                    "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+                    "type": "tidelift"
+                }
+            ],
+            "time": "2020-09-15T07:58:55+00:00"
         },
         {
-            "name": "symfony/contracts",
-            "version": "v1.0.2",
+            "name": "symfony/event-dispatcher",
+            "version": "v4.4.15",
             "source": {
                 "type": "git",
-                "url": "https://github.com/symfony/contracts.git",
-                "reference": "1aa7ab2429c3d594dd70689604b5cf7421254cdf"
+                "url": "https://github.com/symfony/event-dispatcher.git",
+                "reference": "e17bb5e0663dc725f7cdcafc932132735b4725cd"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/symfony/contracts/zipball/1aa7ab2429c3d594dd70689604b5cf7421254cdf",
-                "reference": "1aa7ab2429c3d594dd70689604b5cf7421254cdf",
+                "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/e17bb5e0663dc725f7cdcafc932132735b4725cd",
+                "reference": "e17bb5e0663dc725f7cdcafc932132735b4725cd",
                 "shasum": ""
             },
             "require": {
-                "php": "^7.1.3"
+                "php": ">=7.1.3",
+                "symfony/event-dispatcher-contracts": "^1.1"
+            },
+            "conflict": {
+                "symfony/dependency-injection": "<3.4"
+            },
+            "provide": {
+                "psr/event-dispatcher-implementation": "1.0",
+                "symfony/event-dispatcher-implementation": "1.1"
             },
             "require-dev": {
-                "psr/cache": "^1.0",
-                "psr/container": "^1.0"
+                "psr/log": "~1.0",
+                "symfony/config": "^3.4|^4.0|^5.0",
+                "symfony/dependency-injection": "^3.4|^4.0|^5.0",
+                "symfony/error-handler": "~3.4|~4.4",
+                "symfony/expression-language": "^3.4|^4.0|^5.0",
+                "symfony/http-foundation": "^3.4|^4.0|^5.0",
+                "symfony/service-contracts": "^1.1|^2",
+                "symfony/stopwatch": "^3.4|^4.0|^5.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": ""
+                "symfony/dependency-injection": "",
+                "symfony/http-kernel": ""
             },
             "type": "library",
             "extra": {
                 "branch-alias": {
-                    "dev-master": "1.0-dev"
+                    "dev-master": "4.4-dev"
                 }
             },
             "autoload": {
                 "psr-4": {
-                    "Symfony\\Contracts\\": ""
+                    "Symfony\\Component\\EventDispatcher\\": ""
                 },
                 "exclude-from-classmap": [
-                    "**/Tests/"
+                    "/Tests/"
                 ]
             },
             "notification-url": "https://packagist.org/downloads/",
@@ -845,71 +826,67 @@
             ],
             "authors": [
                 {
-                    "name": "Nicolas Grekas",
-                    "email": "p@tchwork.com"
+                    "name": "Fabien Potencier",
+                    "email": "fabien@symfony.com"
                 },
                 {
                     "name": "Symfony Community",
                     "homepage": "https://symfony.com/contributors"
                 }
             ],
-            "description": "A set of abstractions extracted out of the Symfony components",
+            "description": "Symfony EventDispatcher Component",
             "homepage": "https://symfony.com",
-            "keywords": [
-                "abstractions",
-                "contracts",
-                "decoupling",
-                "interfaces",
-                "interoperability",
-                "standards"
+            "funding": [
+                {
+                    "url": "https://symfony.com/sponsor",
+                    "type": "custom"
+                },
+                {
+                    "url": "https://github.com/fabpot",
+                    "type": "github"
+                },
+                {
+                    "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+                    "type": "tidelift"
+                }
             ],
-            "time": "2018-12-05T08:06:11+00:00"
+            "time": "2020-09-18T14:07:46+00:00"
         },
         {
-            "name": "symfony/event-dispatcher",
-            "version": "v4.2.3",
+            "name": "symfony/event-dispatcher-contracts",
+            "version": "v1.1.9",
             "source": {
                 "type": "git",
-                "url": "https://github.com/symfony/event-dispatcher.git",
-                "reference": "bd09ad265cd50b2b9d09d65ce6aba2d29bc81fe1"
+                "url": "https://github.com/symfony/event-dispatcher-contracts.git",
+                "reference": "84e23fdcd2517bf37aecbd16967e83f0caee25a7"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/bd09ad265cd50b2b9d09d65ce6aba2d29bc81fe1",
-                "reference": "bd09ad265cd50b2b9d09d65ce6aba2d29bc81fe1",
+                "url": "https://api.github.com/repos/symfony/event-dispatcher-contracts/zipball/84e23fdcd2517bf37aecbd16967e83f0caee25a7",
+                "reference": "84e23fdcd2517bf37aecbd16967e83f0caee25a7",
                 "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"
+                "php": ">=7.1.3"
             },
             "suggest": {
-                "symfony/dependency-injection": "",
-                "symfony/http-kernel": ""
+                "psr/event-dispatcher": "",
+                "symfony/event-dispatcher-implementation": ""
             },
             "type": "library",
             "extra": {
                 "branch-alias": {
-                    "dev-master": "4.2-dev"
+                    "dev-master": "1.1-dev"
+                },
+                "thanks": {
+                    "name": "symfony/contracts",
+                    "url": "https://github.com/symfony/contracts"
                 }
             },
             "autoload": {
                 "psr-4": {
-                    "Symfony\\Component\\EventDispatcher\\": ""
-                },
-                "exclude-from-classmap": [
-                    "/Tests/"
-                ]
+                    "Symfony\\Contracts\\EventDispatcher\\": ""
+                }
             },
             "notification-url": "https://packagist.org/downloads/",
             "license": [
@@ -917,40 +894,62 @@
             ],
             "authors": [
                 {
-                    "name": "Fabien Potencier",
-                    "email": "fabien@symfony.com"
+                    "name": "Nicolas Grekas",
+                    "email": "p@tchwork.com"
                 },
                 {
                     "name": "Symfony Community",
                     "homepage": "https://symfony.com/contributors"
                 }
             ],
-            "description": "Symfony EventDispatcher Component",
+            "description": "Generic abstractions related to dispatching event",
             "homepage": "https://symfony.com",
-            "time": "2019-01-16T20:35:37+00:00"
+            "keywords": [
+                "abstractions",
+                "contracts",
+                "decoupling",
+                "interfaces",
+                "interoperability",
+                "standards"
+            ],
+            "funding": [
+                {
+                    "url": "https://symfony.com/sponsor",
+                    "type": "custom"
+                },
+                {
+                    "url": "https://github.com/fabpot",
+                    "type": "github"
+                },
+                {
+                    "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+                    "type": "tidelift"
+                }
+            ],
+            "time": "2020-07-06T13:19:58+00:00"
         },
         {
             "name": "symfony/filesystem",
-            "version": "v4.2.3",
+            "version": "v4.4.15",
             "source": {
                 "type": "git",
                 "url": "https://github.com/symfony/filesystem.git",
-                "reference": "7c16ebc2629827d4ec915a52ac809768d060a4ee"
+                "reference": "ebc51494739d3b081ea543ed7c462fa73a4f74db"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/symfony/filesystem/zipball/7c16ebc2629827d4ec915a52ac809768d060a4ee",
-                "reference": "7c16ebc2629827d4ec915a52ac809768d060a4ee",
+                "url": "https://api.github.com/repos/symfony/filesystem/zipball/ebc51494739d3b081ea543ed7c462fa73a4f74db",
+                "reference": "ebc51494739d3b081ea543ed7c462fa73a4f74db",
                 "shasum": ""
             },
             "require": {
-                "php": "^7.1.3",
+                "php": ">=7.1.3",
                 "symfony/polyfill-ctype": "~1.8"
             },
             "type": "library",
             "extra": {
                 "branch-alias": {
-                    "dev-master": "4.2-dev"
+                    "dev-master": "4.4-dev"
                 }
             },
             "autoload": {
@@ -977,29 +976,43 @@
             ],
             "description": "Symfony Filesystem Component",
             "homepage": "https://symfony.com",
-            "time": "2019-01-16T20:35:37+00:00"
+            "funding": [
+                {
+                    "url": "https://symfony.com/sponsor",
+                    "type": "custom"
+                },
+                {
+                    "url": "https://github.com/fabpot",
+                    "type": "github"
+                },
+                {
+                    "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+                    "type": "tidelift"
+                }
+            ],
+            "time": "2020-09-27T13:54:16+00:00"
         },
         {
             "name": "symfony/finder",
-            "version": "v3.4.22",
+            "version": "v4.4.15",
             "source": {
                 "type": "git",
                 "url": "https://github.com/symfony/finder.git",
-                "reference": "7c0c627220308928e958a87c293108e5891cde1d"
+                "reference": "60d08560f9aa72997c44077c40d47aa28a963230"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/symfony/finder/zipball/7c0c627220308928e958a87c293108e5891cde1d",
-                "reference": "7c0c627220308928e958a87c293108e5891cde1d",
+                "url": "https://api.github.com/repos/symfony/finder/zipball/60d08560f9aa72997c44077c40d47aa28a963230",
+                "reference": "60d08560f9aa72997c44077c40d47aa28a963230",
                 "shasum": ""
             },
             "require": {
-                "php": "^5.5.9|>=7.0.8"
+                "php": ">=7.1.3"
             },
             "type": "library",
             "extra": {
                 "branch-alias": {
-                    "dev-master": "3.4-dev"
+                    "dev-master": "4.4-dev"
                 }
             },
             "autoload": {
@@ -1026,20 +1039,34 @@
             ],
             "description": "Symfony Finder Component",
             "homepage": "https://symfony.com",
-            "time": "2019-01-16T13:43:35+00:00"
+            "funding": [
+                {
+                    "url": "https://symfony.com/sponsor",
+                    "type": "custom"
+                },
+                {
+                    "url": "https://github.com/fabpot",
+                    "type": "github"
+                },
+                {
+                    "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+                    "type": "tidelift"
+                }
+            ],
+            "time": "2020-10-02T07:34:48+00:00"
         },
         {
             "name": "symfony/polyfill-ctype",
-            "version": "v1.10.0",
+            "version": "v1.18.1",
             "source": {
                 "type": "git",
                 "url": "https://github.com/symfony/polyfill-ctype.git",
-                "reference": "e3d826245268269cd66f8326bd8bc066687b4a19"
+                "reference": "1c302646f6efc070cd46856e600e5e0684d6b454"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/e3d826245268269cd66f8326bd8bc066687b4a19",
-                "reference": "e3d826245268269cd66f8326bd8bc066687b4a19",
+                "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/1c302646f6efc070cd46856e600e5e0684d6b454",
+                "reference": "1c302646f6efc070cd46856e600e5e0684d6b454",
                 "shasum": ""
             },
             "require": {
@@ -1051,7 +1078,11 @@
             "type": "library",
             "extra": {
                 "branch-alias": {
-                    "dev-master": "1.9-dev"
+                    "dev-master": "1.18-dev"
+                },
+                "thanks": {
+                    "name": "symfony/polyfill",
+                    "url": "https://github.com/symfony/polyfill"
                 }
             },
             "autoload": {
@@ -1067,13 +1098,13 @@
                 "MIT"
             ],
             "authors": [
-                {
-                    "name": "Symfony Community",
-                    "homepage": "https://symfony.com/contributors"
-                },
                 {
                     "name": "Gert de Pagter",
                     "email": "BackEndTea@gmail.com"
+                },
+                {
+                    "name": "Symfony Community",
+                    "homepage": "https://symfony.com/contributors"
                 }
             ],
             "description": "Symfony polyfill for ctype functions",
@@ -1084,20 +1115,34 @@
                 "polyfill",
                 "portable"
             ],
-            "time": "2018-08-06T14:22:27+00:00"
+            "funding": [
+                {
+                    "url": "https://symfony.com/sponsor",
+                    "type": "custom"
+                },
+                {
+                    "url": "https://github.com/fabpot",
+                    "type": "github"
+                },
+                {
+                    "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+                    "type": "tidelift"
+                }
+            ],
+            "time": "2020-07-14T12:35:20+00:00"
         },
         {
             "name": "symfony/polyfill-mbstring",
-            "version": "v1.10.0",
+            "version": "v1.18.1",
             "source": {
                 "type": "git",
                 "url": "https://github.com/symfony/polyfill-mbstring.git",
-                "reference": "c79c051f5b3a46be09205c73b80b346e4153e494"
+                "reference": "a6977d63bf9a0ad4c65cd352709e230876f9904a"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/c79c051f5b3a46be09205c73b80b346e4153e494",
-                "reference": "c79c051f5b3a46be09205c73b80b346e4153e494",
+                "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/a6977d63bf9a0ad4c65cd352709e230876f9904a",
+                "reference": "a6977d63bf9a0ad4c65cd352709e230876f9904a",
                 "shasum": ""
             },
             "require": {
@@ -1109,7 +1154,11 @@
             "type": "library",
             "extra": {
                 "branch-alias": {
-                    "dev-master": "1.9-dev"
+                    "dev-master": "1.18-dev"
+                },
+                "thanks": {
+                    "name": "symfony/polyfill",
+                    "url": "https://github.com/symfony/polyfill"
                 }
             },
             "autoload": {
@@ -1143,37 +1192,58 @@
                 "portable",
                 "shim"
             ],
-            "time": "2018-09-21T13:07:52+00:00"
+            "funding": [
+                {
+                    "url": "https://symfony.com/sponsor",
+                    "type": "custom"
+                },
+                {
+                    "url": "https://github.com/fabpot",
+                    "type": "github"
+                },
+                {
+                    "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+                    "type": "tidelift"
+                }
+            ],
+            "time": "2020-07-14T12:35:20+00:00"
         },
         {
-            "name": "symfony/process",
-            "version": "v4.2.3",
+            "name": "symfony/polyfill-php73",
+            "version": "v1.18.1",
             "source": {
                 "type": "git",
-                "url": "https://github.com/symfony/process.git",
-                "reference": "6c05edb11fbeff9e2b324b4270ecb17911a8b7ad"
+                "url": "https://github.com/symfony/polyfill-php73.git",
+                "reference": "fffa1a52a023e782cdcc221d781fe1ec8f87fcca"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/symfony/process/zipball/6c05edb11fbeff9e2b324b4270ecb17911a8b7ad",
-                "reference": "6c05edb11fbeff9e2b324b4270ecb17911a8b7ad",
+                "url": "https://api.github.com/repos/symfony/polyfill-php73/zipball/fffa1a52a023e782cdcc221d781fe1ec8f87fcca",
+                "reference": "fffa1a52a023e782cdcc221d781fe1ec8f87fcca",
                 "shasum": ""
             },
             "require": {
-                "php": "^7.1.3"
+                "php": ">=5.3.3"
             },
             "type": "library",
             "extra": {
                 "branch-alias": {
-                    "dev-master": "4.2-dev"
+                    "dev-master": "1.18-dev"
+                },
+                "thanks": {
+                    "name": "symfony/polyfill",
+                    "url": "https://github.com/symfony/polyfill"
                 }
             },
             "autoload": {
                 "psr-4": {
-                    "Symfony\\Component\\Process\\": ""
+                    "Symfony\\Polyfill\\Php73\\": ""
                 },
-                "exclude-from-classmap": [
-                    "/Tests/"
+                "files": [
+                    "bootstrap.php"
+                ],
+                "classmap": [
+                    "Resources/stubs"
                 ]
             },
             "notification-url": "https://packagist.org/downloads/",
@@ -1182,57 +1252,74 @@
             ],
             "authors": [
                 {
-                    "name": "Fabien Potencier",
-                    "email": "fabien@symfony.com"
+                    "name": "Nicolas Grekas",
+                    "email": "p@tchwork.com"
                 },
                 {
                     "name": "Symfony Community",
                     "homepage": "https://symfony.com/contributors"
                 }
             ],
-            "description": "Symfony Process Component",
+            "description": "Symfony polyfill backporting some PHP 7.3+ features to lower PHP versions",
             "homepage": "https://symfony.com",
-            "time": "2019-01-24T22:05:03+00:00"
+            "keywords": [
+                "compatibility",
+                "polyfill",
+                "portable",
+                "shim"
+            ],
+            "funding": [
+                {
+                    "url": "https://symfony.com/sponsor",
+                    "type": "custom"
+                },
+                {
+                    "url": "https://github.com/fabpot",
+                    "type": "github"
+                },
+                {
+                    "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+                    "type": "tidelift"
+                }
+            ],
+            "time": "2020-07-14T12:35:20+00:00"
         },
         {
-            "name": "symfony/yaml",
-            "version": "v4.2.3",
+            "name": "symfony/polyfill-php80",
+            "version": "v1.18.1",
             "source": {
                 "type": "git",
-                "url": "https://github.com/symfony/yaml.git",
-                "reference": "d461670ee145092b7e2a56c1da7118f19cadadb0"
+                "url": "https://github.com/symfony/polyfill-php80.git",
+                "reference": "d87d5766cbf48d72388a9f6b85f280c8ad51f981"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/symfony/yaml/zipball/d461670ee145092b7e2a56c1da7118f19cadadb0",
-                "reference": "d461670ee145092b7e2a56c1da7118f19cadadb0",
+                "url": "https://api.github.com/repos/symfony/polyfill-php80/zipball/d87d5766cbf48d72388a9f6b85f280c8ad51f981",
+                "reference": "d87d5766cbf48d72388a9f6b85f280c8ad51f981",
                 "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"
+                "php": ">=7.0.8"
             },
             "type": "library",
             "extra": {
                 "branch-alias": {
-                    "dev-master": "4.2-dev"
+                    "dev-master": "1.18-dev"
+                },
+                "thanks": {
+                    "name": "symfony/polyfill",
+                    "url": "https://github.com/symfony/polyfill"
                 }
             },
             "autoload": {
                 "psr-4": {
-                    "Symfony\\Component\\Yaml\\": ""
+                    "Symfony\\Polyfill\\Php80\\": ""
                 },
-                "exclude-from-classmap": [
-                    "/Tests/"
+                "files": [
+                    "bootstrap.php"
+                ],
+                "classmap": [
+                    "Resources/stubs"
                 ]
             },
             "notification-url": "https://packagist.org/downloads/",
@@ -1241,44 +1328,58 @@
             ],
             "authors": [
                 {
-                    "name": "Fabien Potencier",
-                    "email": "fabien@symfony.com"
+                    "name": "Ion Bazan",
+                    "email": "ion.bazan@gmail.com"
+                },
+                {
+                    "name": "Nicolas Grekas",
+                    "email": "p@tchwork.com"
                 },
                 {
                     "name": "Symfony Community",
                     "homepage": "https://symfony.com/contributors"
                 }
             ],
-            "description": "Symfony Yaml Component",
+            "description": "Symfony polyfill backporting some PHP 8.0+ features to lower PHP versions",
             "homepage": "https://symfony.com",
-            "time": "2019-01-16T20:35:37+00:00"
-        }
-    ],
-    "packages-dev": [
+            "keywords": [
+                "compatibility",
+                "polyfill",
+                "portable",
+                "shim"
+            ],
+            "funding": [
+                {
+                    "url": "https://symfony.com/sponsor",
+                    "type": "custom"
+                },
+                {
+                    "url": "https://github.com/fabpot",
+                    "type": "github"
+                },
+                {
+                    "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+                    "type": "tidelift"
+                }
+            ],
+            "time": "2020-07-14T12:35:20+00:00"
+        },
         {
-            "name": "behat/gherkin",
-            "version": "v4.6.0",
+            "name": "symfony/process",
+            "version": "v4.4.15",
             "source": {
                 "type": "git",
-                "url": "https://github.com/Behat/Gherkin.git",
-                "reference": "ab0a02ea14893860bca00f225f5621d351a3ad07"
+                "url": "https://github.com/symfony/process.git",
+                "reference": "9b887acc522935f77555ae8813495958c7771ba7"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/Behat/Gherkin/zipball/ab0a02ea14893860bca00f225f5621d351a3ad07",
-                "reference": "ab0a02ea14893860bca00f225f5621d351a3ad07",
+                "url": "https://api.github.com/repos/symfony/process/zipball/9b887acc522935f77555ae8813495958c7771ba7",
+                "reference": "9b887acc522935f77555ae8813495958c7771ba7",
                 "shasum": ""
             },
             "require": {
-                "php": ">=5.3.1"
-            },
-            "require-dev": {
-                "phpunit/phpunit": "~4.5|~5",
-                "symfony/phpunit-bridge": "~2.7|~3|~4",
-                "symfony/yaml": "~2.3|~3|~4"
-            },
-            "suggest": {
-                "symfony/yaml": "If you want to parse features, represented in YAML files"
+                "php": ">=7.1.3"
             },
             "type": "library",
             "extra": {
@@ -1287,9 +1388,12 @@
                 }
             },
             "autoload": {
-                "psr-0": {
-                    "Behat\\Gherkin": "src/"
-                }
+                "psr-4": {
+                    "Symfony\\Component\\Process\\": ""
+                },
+                "exclude-from-classmap": [
+                    "/Tests/"
+                ]
             },
             "notification-url": "https://packagist.org/downloads/",
             "license": [
@@ -1297,132 +1401,66 @@
             ],
             "authors": [
                 {
-                    "name": "Konstantin Kudryashov",
-                    "email": "ever.zet@gmail.com",
-                    "homepage": "http://everzet.com"
-                }
-            ],
-            "description": "Gherkin DSL parser for PHP 5.3",
-            "homepage": "http://behat.org/",
-            "keywords": [
-                "BDD",
-                "Behat",
-                "Cucumber",
-                "DSL",
-                "gherkin",
-                "parser"
-            ],
-            "time": "2019-01-16T14:22:17+00:00"
-        },
-        {
-            "name": "codeception/aspect-mock",
-            "version": "2.1.1",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/Codeception/AspectMock.git",
-                "reference": "bf3c000599c0dc75ecb52e19dee2b8ed294cf7ba"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/Codeception/AspectMock/zipball/bf3c000599c0dc75ecb52e19dee2b8ed294cf7ba",
-                "reference": "bf3c000599c0dc75ecb52e19dee2b8ed294cf7ba",
-                "shasum": ""
-            },
-            "require": {
-                "goaop/framework": "^2.0.0",
-                "php": ">=5.6.0",
-                "symfony/finder": "~2.4|~3.0"
-            },
-            "require-dev": {
-                "codeception/base": "~2.1",
-                "codeception/specify": "~0.3",
-                "codeception/verify": "~0.2"
-            },
-            "type": "library",
-            "autoload": {
-                "psr-0": {
-                    "AspectMock": "src/"
+                    "name": "Fabien Potencier",
+                    "email": "fabien@symfony.com"
+                },
+                {
+                    "name": "Symfony Community",
+                    "homepage": "https://symfony.com/contributors"
                 }
-            },
-            "notification-url": "https://packagist.org/downloads/",
-            "license": [
-                "MIT"
             ],
-            "authors": [
+            "description": "Symfony Process Component",
+            "homepage": "https://symfony.com",
+            "funding": [
+                {
+                    "url": "https://symfony.com/sponsor",
+                    "type": "custom"
+                },
+                {
+                    "url": "https://github.com/fabpot",
+                    "type": "github"
+                },
                 {
-                    "name": "Michael Bodnarchuk",
-                    "email": "davert@codeception.com"
+                    "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+                    "type": "tidelift"
                 }
             ],
-            "description": "Experimental Mocking Framework powered by Aspects",
-            "time": "2017-10-24T10:20:17+00:00"
+            "time": "2020-09-02T16:08:58+00:00"
         },
         {
-            "name": "codeception/base",
-            "version": "2.5.3",
+            "name": "symfony/service-contracts",
+            "version": "v1.1.9",
             "source": {
                 "type": "git",
-                "url": "https://github.com/Codeception/base.git",
-                "reference": "ceff0b4fee4846b6bd8b5a37abbbb1acd6e78f58"
+                "url": "https://github.com/symfony/service-contracts.git",
+                "reference": "b776d18b303a39f56c63747bcb977ad4b27aca26"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/Codeception/base/zipball/ceff0b4fee4846b6bd8b5a37abbbb1acd6e78f58",
-                "reference": "ceff0b4fee4846b6bd8b5a37abbbb1acd6e78f58",
+                "url": "https://api.github.com/repos/symfony/service-contracts/zipball/b776d18b303a39f56c63747bcb977ad4b27aca26",
+                "reference": "b776d18b303a39f56c63747bcb977ad4b27aca26",
                 "shasum": ""
             },
             "require": {
-                "behat/gherkin": "^4.4.0",
-                "codeception/phpunit-wrapper": "^6.0.9|^7.0.6",
-                "codeception/stub": "^2.0",
-                "ext-curl": "*",
-                "ext-json": "*",
-                "ext-mbstring": "*",
-                "guzzlehttp/psr7": "~1.0",
-                "php": ">=5.6.0 <8.0",
-                "symfony/browser-kit": ">=2.7 <5.0",
-                "symfony/console": ">=2.7 <5.0",
-                "symfony/css-selector": ">=2.7 <5.0",
-                "symfony/dom-crawler": ">=2.7 <5.0",
-                "symfony/event-dispatcher": ">=2.7 <5.0",
-                "symfony/finder": ">=2.7 <5.0",
-                "symfony/yaml": ">=2.7 <5.0"
-            },
-            "require-dev": {
-                "codeception/specify": "~0.3",
-                "facebook/graph-sdk": "~5.3",
-                "flow/jsonpath": "~0.2",
-                "monolog/monolog": "~1.8",
-                "pda/pheanstalk": "~3.0",
-                "php-amqplib/php-amqplib": "~2.4",
-                "predis/predis": "^1.0",
-                "squizlabs/php_codesniffer": "~2.0",
-                "symfony/process": ">=2.7 <5.0",
-                "vlucas/phpdotenv": "^3.0"
+                "php": ">=7.1.3",
+                "psr/container": "^1.0"
             },
             "suggest": {
-                "aws/aws-sdk-php": "For using AWS Auth in REST module and Queue module",
-                "codeception/phpbuiltinserver": "Start and stop PHP built-in web server for your tests",
-                "codeception/specify": "BDD-style code blocks",
-                "codeception/verify": "BDD-style assertions",
-                "flow/jsonpath": "For using JSONPath in REST module",
-                "league/factory-muffin": "For DataFactory module",
-                "league/factory-muffin-faker": "For Faker support in DataFactory module",
-                "phpseclib/phpseclib": "for SFTP option in FTP Module",
-                "stecman/symfony-console-completion": "For BASH autocompletion",
-                "symfony/phpunit-bridge": "For phpunit-bridge support"
+                "symfony/service-implementation": ""
             },
-            "bin": [
-                "codecept"
-            ],
             "type": "library",
             "extra": {
-                "branch-alias": []
+                "branch-alias": {
+                    "dev-master": "1.1-dev"
+                },
+                "thanks": {
+                    "name": "symfony/contracts",
+                    "url": "https://github.com/symfony/contracts"
+                }
             },
             "autoload": {
                 "psr-4": {
-                    "Codeception\\": "src/Codeception",
-                    "Codeception\\Extension\\": "ext"
+                    "Symfony\\Contracts\\Service\\": ""
                 }
             },
             "notification-url": "https://packagist.org/downloads/",
@@ -1431,166 +1469,80 @@
             ],
             "authors": [
                 {
-                    "name": "Michael Bodnarchuk",
-                    "email": "davert@mail.ua",
-                    "homepage": "http://codegyre.com"
+                    "name": "Nicolas Grekas",
+                    "email": "p@tchwork.com"
+                },
+                {
+                    "name": "Symfony Community",
+                    "homepage": "https://symfony.com/contributors"
                 }
             ],
-            "description": "BDD-style testing framework",
-            "homepage": "http://codeception.com/",
+            "description": "Generic abstractions related to writing services",
+            "homepage": "https://symfony.com",
             "keywords": [
-                "BDD",
-                "TDD",
-                "acceptance testing",
-                "functional testing",
-                "unit testing"
-            ],
-            "time": "2019-02-02T16:29:38+00:00"
-        },
-        {
-            "name": "codeception/phpunit-wrapper",
-            "version": "6.0.14",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/Codeception/phpunit-wrapper.git",
-                "reference": "3b64beb0af3e63145af982e64718ab80d2417739"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/Codeception/phpunit-wrapper/zipball/3b64beb0af3e63145af982e64718ab80d2417739",
-                "reference": "3b64beb0af3e63145af982e64718ab80d2417739",
-                "shasum": ""
-            },
-            "require": {
-                "phpunit/php-code-coverage": ">=4.0.4 <6.0",
-                "phpunit/phpunit": ">=5.7.27 <6.5.13",
-                "sebastian/comparator": ">=1.2.4 <3.0",
-                "sebastian/diff": ">=1.4 <4.0"
-            },
-            "replace": {
-                "codeception/phpunit-wrapper": "*"
-            },
-            "require-dev": {
-                "codeception/specify": "*",
-                "vlucas/phpdotenv": "^2.4"
-            },
-            "type": "library",
-            "autoload": {
-                "psr-4": {
-                    "Codeception\\PHPUnit\\": "src\\"
-                }
-            },
-            "notification-url": "https://packagist.org/downloads/",
-            "license": [
-                "MIT"
+                "abstractions",
+                "contracts",
+                "decoupling",
+                "interfaces",
+                "interoperability",
+                "standards"
             ],
-            "authors": [
+            "funding": [
+                {
+                    "url": "https://symfony.com/sponsor",
+                    "type": "custom"
+                },
                 {
-                    "name": "Davert",
-                    "email": "davert.php@resend.cc"
+                    "url": "https://github.com/fabpot",
+                    "type": "github"
+                },
+                {
+                    "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+                    "type": "tidelift"
                 }
             ],
-            "description": "PHPUnit classes used by Codeception",
-            "time": "2019-01-13T10:35:17+00:00"
+            "time": "2020-07-06T13:19:58+00:00"
         },
         {
-            "name": "codeception/stub",
-            "version": "2.0.4",
+            "name": "symfony/yaml",
+            "version": "v4.4.15",
             "source": {
                 "type": "git",
-                "url": "https://github.com/Codeception/Stub.git",
-                "reference": "f50bc271f392a2836ff80690ce0c058efe1ae03e"
+                "url": "https://github.com/symfony/yaml.git",
+                "reference": "c7885964b1eceb70b0981556d0a9b01d2d97c8d1"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/Codeception/Stub/zipball/f50bc271f392a2836ff80690ce0c058efe1ae03e",
-                "reference": "f50bc271f392a2836ff80690ce0c058efe1ae03e",
+                "url": "https://api.github.com/repos/symfony/yaml/zipball/c7885964b1eceb70b0981556d0a9b01d2d97c8d1",
+                "reference": "c7885964b1eceb70b0981556d0a9b01d2d97c8d1",
                 "shasum": ""
             },
             "require": {
-                "phpunit/phpunit": ">=4.8 <8.0"
-            },
-            "type": "library",
-            "autoload": {
-                "psr-4": {
-                    "Codeception\\": "src/"
-                }
-            },
-            "notification-url": "https://packagist.org/downloads/",
-            "license": [
-                "MIT"
-            ],
-            "description": "Flexible Stub wrapper for PHPUnit's Mock Builder",
-            "time": "2018-07-26T11:55:37+00:00"
-        },
-        {
-            "name": "codeception/verify",
-            "version": "0.3.3",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/Codeception/Verify.git",
-                "reference": "5d649dda453cd814dadc4bb053060cd2c6bb4b4c"
+                "php": ">=7.1.3",
+                "symfony/polyfill-ctype": "~1.8"
             },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/Codeception/Verify/zipball/5d649dda453cd814dadc4bb053060cd2c6bb4b4c",
-                "reference": "5d649dda453cd814dadc4bb053060cd2c6bb4b4c",
-                "shasum": ""
+            "conflict": {
+                "symfony/console": "<3.4"
             },
             "require-dev": {
-                "phpunit/phpunit": "~4.0"
-            },
-            "type": "library",
-            "autoload": {
-                "files": [
-                    "src/Codeception/function.php"
-                ]
-            },
-            "notification-url": "https://packagist.org/downloads/",
-            "license": [
-                "MIT"
-            ],
-            "authors": [
-                {
-                    "name": "Michael Bodnarchuk",
-                    "email": "davert.php@mailican.com"
-                }
-            ],
-            "description": "BDD assertion library for PHPUnit",
-            "time": "2017-01-09T10:58:51+00:00"
-        },
-        {
-            "name": "doctrine/annotations",
-            "version": "v1.6.0",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/doctrine/annotations.git",
-                "reference": "c7f2050c68a9ab0bdb0f98567ec08d80ea7d24d5"
+                "symfony/console": "^3.4|^4.0|^5.0"
             },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/doctrine/annotations/zipball/c7f2050c68a9ab0bdb0f98567ec08d80ea7d24d5",
-                "reference": "c7f2050c68a9ab0bdb0f98567ec08d80ea7d24d5",
-                "shasum": ""
-            },
-            "require": {
-                "doctrine/lexer": "1.*",
-                "php": "^7.1"
-            },
-            "require-dev": {
-                "doctrine/cache": "1.*",
-                "phpunit/phpunit": "^6.4"
+            "suggest": {
+                "symfony/console": "For validating YAML files using the lint command"
             },
             "type": "library",
             "extra": {
                 "branch-alias": {
-                    "dev-master": "1.6.x-dev"
+                    "dev-master": "4.4-dev"
                 }
             },
             "autoload": {
                 "psr-4": {
-                    "Doctrine\\Common\\Annotations\\": "lib/Doctrine/Common/Annotations"
-                }
+                    "Symfony\\Component\\Yaml\\": ""
+                },
+                "exclude-from-classmap": [
+                    "/Tests/"
+                ]
             },
             "notification-url": "https://packagist.org/downloads/",
             "license": [
@@ -1598,58 +1550,59 @@
             ],
             "authors": [
                 {
-                    "name": "Roman Borschel",
-                    "email": "roman@code-factory.org"
+                    "name": "Fabien Potencier",
+                    "email": "fabien@symfony.com"
                 },
                 {
-                    "name": "Benjamin Eberlei",
-                    "email": "kontakt@beberlei.de"
-                },
+                    "name": "Symfony Community",
+                    "homepage": "https://symfony.com/contributors"
+                }
+            ],
+            "description": "Symfony Yaml Component",
+            "homepage": "https://symfony.com",
+            "funding": [
                 {
-                    "name": "Guilherme Blanco",
-                    "email": "guilhermeblanco@gmail.com"
+                    "url": "https://symfony.com/sponsor",
+                    "type": "custom"
                 },
                 {
-                    "name": "Jonathan Wage",
-                    "email": "jonwage@gmail.com"
+                    "url": "https://github.com/fabpot",
+                    "type": "github"
                 },
                 {
-                    "name": "Johannes Schmitt",
-                    "email": "schmittjoh@gmail.com"
+                    "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+                    "type": "tidelift"
                 }
             ],
-            "description": "Docblock Annotations Parser",
-            "homepage": "http://www.doctrine-project.org",
-            "keywords": [
-                "annotations",
-                "docblock",
-                "parser"
-            ],
-            "time": "2017-12-06T07:11:42+00:00"
-        },
+            "time": "2020-09-27T03:36:23+00:00"
+        }
+    ],
+    "packages-dev": [
         {
             "name": "doctrine/instantiator",
-            "version": "1.1.0",
+            "version": "1.3.1",
             "source": {
                 "type": "git",
                 "url": "https://github.com/doctrine/instantiator.git",
-                "reference": "185b8868aa9bf7159f5f953ed5afb2d7fcdc3bda"
+                "reference": "f350df0268e904597e3bd9c4685c53e0e333feea"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/doctrine/instantiator/zipball/185b8868aa9bf7159f5f953ed5afb2d7fcdc3bda",
-                "reference": "185b8868aa9bf7159f5f953ed5afb2d7fcdc3bda",
+                "url": "https://api.github.com/repos/doctrine/instantiator/zipball/f350df0268e904597e3bd9c4685c53e0e333feea",
+                "reference": "f350df0268e904597e3bd9c4685c53e0e333feea",
                 "shasum": ""
             },
             "require": {
-                "php": "^7.1"
+                "php": "^7.1 || ^8.0"
             },
             "require-dev": {
-                "athletic/athletic": "~0.1.8",
+                "doctrine/coding-standard": "^6.0",
                 "ext-pdo": "*",
                 "ext-phar": "*",
-                "phpunit/phpunit": "^6.2.3",
-                "squizlabs/php_codesniffer": "^3.0.2"
+                "phpbench/phpbench": "^0.13",
+                "phpstan/phpstan-phpunit": "^0.11",
+                "phpstan/phpstan-shim": "^0.11",
+                "phpunit/phpunit": "^7.0"
             },
             "type": "library",
             "extra": {
@@ -1674,90 +1627,50 @@
                 }
             ],
             "description": "A small, lightweight utility to instantiate objects in PHP without invoking their constructors",
-            "homepage": "https://github.com/doctrine/instantiator",
+            "homepage": "https://www.doctrine-project.org/projects/instantiator.html",
             "keywords": [
                 "constructor",
                 "instantiate"
             ],
-            "time": "2017-07-22T11:58:36+00:00"
-        },
-        {
-            "name": "doctrine/lexer",
-            "version": "v1.0.1",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/doctrine/lexer.git",
-                "reference": "83893c552fd2045dd78aef794c31e694c37c0b8c"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/doctrine/lexer/zipball/83893c552fd2045dd78aef794c31e694c37c0b8c",
-                "reference": "83893c552fd2045dd78aef794c31e694c37c0b8c",
-                "shasum": ""
-            },
-            "require": {
-                "php": ">=5.3.2"
-            },
-            "type": "library",
-            "extra": {
-                "branch-alias": {
-                    "dev-master": "1.0.x-dev"
-                }
-            },
-            "autoload": {
-                "psr-0": {
-                    "Doctrine\\Common\\Lexer\\": "lib/"
-                }
-            },
-            "notification-url": "https://packagist.org/downloads/",
-            "license": [
-                "MIT"
-            ],
-            "authors": [
+            "funding": [
                 {
-                    "name": "Roman Borschel",
-                    "email": "roman@code-factory.org"
+                    "url": "https://www.doctrine-project.org/sponsorship.html",
+                    "type": "custom"
                 },
                 {
-                    "name": "Guilherme Blanco",
-                    "email": "guilhermeblanco@gmail.com"
+                    "url": "https://www.patreon.com/phpdoctrine",
+                    "type": "patreon"
                 },
                 {
-                    "name": "Johannes Schmitt",
-                    "email": "schmittjoh@gmail.com"
+                    "url": "https://tidelift.com/funding/github/packagist/doctrine%2Finstantiator",
+                    "type": "tidelift"
                 }
             ],
-            "description": "Base library for a lexer that can be used in Top-Down, Recursive Descent Parsers.",
-            "homepage": "http://www.doctrine-project.org",
-            "keywords": [
-                "lexer",
-                "parser"
-            ],
-            "time": "2014-09-09T13:34:57+00:00"
+            "time": "2020-05-29T17:27:14+00:00"
         },
         {
             "name": "g1a/composer-test-scenarios",
-            "version": "3.0.2",
+            "version": "3.2.0",
             "source": {
                 "type": "git",
                 "url": "https://github.com/g1a/composer-test-scenarios.git",
-                "reference": "28f932580981e912ab8f01d15788f1dee06550c8"
+                "reference": "e7394206d845fd593d325440507fb940bef8cb62"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/g1a/composer-test-scenarios/zipball/28f932580981e912ab8f01d15788f1dee06550c8",
-                "reference": "28f932580981e912ab8f01d15788f1dee06550c8",
+                "url": "https://api.github.com/repos/g1a/composer-test-scenarios/zipball/e7394206d845fd593d325440507fb940bef8cb62",
+                "reference": "e7394206d845fd593d325440507fb940bef8cb62",
                 "shasum": ""
             },
             "require": {
-                "composer-plugin-api": "^1.0.0",
+                "composer-plugin-api": "^1.0.0 || ^2.0.0",
                 "php": ">=5.4"
             },
             "require-dev": {
-                "composer/composer": "^1.7",
+                "composer/composer": "^1.10.6 || ^2.0@rc",
                 "php-coveralls/php-coveralls": "^1.0",
                 "phpunit/phpunit": "^4.8.36|^6",
-                "squizlabs/php_codesniffer": "^2.8"
+                "squizlabs/php_codesniffer": "^3.5"
             },
             "bin": [
                 "scripts/dependency-licenses"
@@ -1766,7 +1679,7 @@
             "extra": {
                 "class": "ComposerTestScenarios\\Plugin",
                 "branch-alias": {
-                    "dev-master": "3.x-dev"
+                    "dev-main": "3.x-dev"
                 }
             },
             "autoload": {
@@ -1785,121 +1698,7 @@
                 }
             ],
             "description": "Useful scripts for testing multiple sets of Composer dependencies.",
-            "time": "2019-02-11T20:22:44+00:00"
-        },
-        {
-            "name": "goaop/framework",
-            "version": "2.1.2",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/goaop/framework.git",
-                "reference": "6e2a0fe13c1943db02a67588cfd27692bddaffa5"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/goaop/framework/zipball/6e2a0fe13c1943db02a67588cfd27692bddaffa5",
-                "reference": "6e2a0fe13c1943db02a67588cfd27692bddaffa5",
-                "shasum": ""
-            },
-            "require": {
-                "doctrine/annotations": "~1.0",
-                "goaop/parser-reflection": "~1.2",
-                "jakubledl/dissect": "~1.0",
-                "php": ">=5.6.0"
-            },
-            "require-dev": {
-                "adlawson/vfs": "^0.12",
-                "doctrine/orm": "^2.5",
-                "phpunit/phpunit": "^4.8",
-                "symfony/console": "^2.7|^3.0"
-            },
-            "suggest": {
-                "symfony/console": "Enables the usage of the command-line tool."
-            },
-            "bin": [
-                "bin/aspect"
-            ],
-            "type": "library",
-            "extra": {
-                "branch-alias": {
-                    "dev-master": "2.0-dev"
-                }
-            },
-            "autoload": {
-                "psr-4": {
-                    "Go\\": "src/"
-                }
-            },
-            "notification-url": "https://packagist.org/downloads/",
-            "license": [
-                "MIT"
-            ],
-            "authors": [
-                {
-                    "name": "Lisachenko Alexander",
-                    "homepage": "https://github.com/lisachenko"
-                }
-            ],
-            "description": "Framework for aspect-oriented programming in PHP.",
-            "homepage": "http://go.aopphp.com/",
-            "keywords": [
-                "aop",
-                "aspect",
-                "library",
-                "php"
-            ],
-            "time": "2017-07-12T11:46:25+00:00"
-        },
-        {
-            "name": "goaop/parser-reflection",
-            "version": "1.4.1",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/goaop/parser-reflection.git",
-                "reference": "d9c1dcc7ce4a5284fe3530e011faf9c9c10e1166"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/goaop/parser-reflection/zipball/d9c1dcc7ce4a5284fe3530e011faf9c9c10e1166",
-                "reference": "d9c1dcc7ce4a5284fe3530e011faf9c9c10e1166",
-                "shasum": ""
-            },
-            "require": {
-                "nikic/php-parser": "^1.2|^2.0|^3.0",
-                "php": ">=5.6.0"
-            },
-            "require-dev": {
-                "phpunit/phpunit": "~4.0"
-            },
-            "type": "library",
-            "extra": {
-                "branch-alias": {
-                    "dev-master": "1.x-dev"
-                }
-            },
-            "autoload": {
-                "psr-4": {
-                    "Go\\ParserReflection\\": "src"
-                },
-                "files": [
-                    "src/bootstrap.php"
-                ],
-                "exclude-from-classmap": [
-                    "/tests/"
-                ]
-            },
-            "notification-url": "https://packagist.org/downloads/",
-            "license": [
-                "MIT"
-            ],
-            "authors": [
-                {
-                    "name": "Alexander Lisachenko",
-                    "email": "lisachenko.it@gmail.com"
-                }
-            ],
-            "description": "Provides reflection information, based on raw source",
-            "time": "2018-03-19T15:57:41+00:00"
+            "time": "2020-09-28T20:54:35+00:00"
         },
         {
             "name": "guzzle/guzzle",
@@ -1994,144 +1793,22 @@
             "abandoned": "guzzlehttp/guzzle",
             "time": "2014-01-28T22:29:15+00:00"
         },
-        {
-            "name": "guzzlehttp/psr7",
-            "version": "1.5.2",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/guzzle/psr7.git",
-                "reference": "9f83dded91781a01c63574e387eaa769be769115"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/guzzle/psr7/zipball/9f83dded91781a01c63574e387eaa769be769115",
-                "reference": "9f83dded91781a01c63574e387eaa769be769115",
-                "shasum": ""
-            },
-            "require": {
-                "php": ">=5.4.0",
-                "psr/http-message": "~1.0",
-                "ralouphie/getallheaders": "^2.0.5"
-            },
-            "provide": {
-                "psr/http-message-implementation": "1.0"
-            },
-            "require-dev": {
-                "phpunit/phpunit": "~4.8.36 || ^5.7.27 || ^6.5.8"
-            },
-            "type": "library",
-            "extra": {
-                "branch-alias": {
-                    "dev-master": "1.5-dev"
-                }
-            },
-            "autoload": {
-                "psr-4": {
-                    "GuzzleHttp\\Psr7\\": "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"
-                },
-                {
-                    "name": "Tobias Schultze",
-                    "homepage": "https://github.com/Tobion"
-                }
-            ],
-            "description": "PSR-7 message implementation that also provides common utility methods",
-            "keywords": [
-                "http",
-                "message",
-                "psr-7",
-                "request",
-                "response",
-                "stream",
-                "uri",
-                "url"
-            ],
-            "time": "2018-12-04T20:46:45+00:00"
-        },
-        {
-            "name": "jakubledl/dissect",
-            "version": "v1.0.1",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/jakubledl/dissect.git",
-                "reference": "d3a391de31e45a247e95cef6cf58a91c05af67c4"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/jakubledl/dissect/zipball/d3a391de31e45a247e95cef6cf58a91c05af67c4",
-                "reference": "d3a391de31e45a247e95cef6cf58a91c05af67c4",
-                "shasum": ""
-            },
-            "require": {
-                "php": ">=5.3.3"
-            },
-            "require-dev": {
-                "symfony/console": "~2.1"
-            },
-            "suggest": {
-                "symfony/console": "for the command-line tool"
-            },
-            "bin": [
-                "bin/dissect.php",
-                "bin/dissect"
-            ],
-            "type": "library",
-            "autoload": {
-                "psr-0": {
-                    "Dissect": [
-                        "src/"
-                    ]
-                }
-            },
-            "notification-url": "https://packagist.org/downloads/",
-            "license": [
-                "unlicense"
-            ],
-            "authors": [
-                {
-                    "name": "Jakub Lédl",
-                    "email": "jakubledl@gmail.com"
-                }
-            ],
-            "description": "Lexing and parsing in pure PHP",
-            "homepage": "https://github.com/jakubledl/dissect",
-            "keywords": [
-                "ast",
-                "lexing",
-                "parser",
-                "parsing"
-            ],
-            "time": "2013-01-29T21:29:14+00:00"
-        },
         {
             "name": "myclabs/deep-copy",
-            "version": "1.8.1",
+            "version": "1.10.1",
             "source": {
                 "type": "git",
                 "url": "https://github.com/myclabs/DeepCopy.git",
-                "reference": "3e01bdad3e18354c3dce54466b7fbe33a9f9f7f8"
+                "reference": "969b211f9a51aa1f6c01d1d2aef56d3bd91598e5"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/3e01bdad3e18354c3dce54466b7fbe33a9f9f7f8",
-                "reference": "3e01bdad3e18354c3dce54466b7fbe33a9f9f7f8",
+                "url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/969b211f9a51aa1f6c01d1d2aef56d3bd91598e5",
+                "reference": "969b211f9a51aa1f6c01d1d2aef56d3bd91598e5",
                 "shasum": ""
             },
             "require": {
-                "php": "^7.1"
+                "php": "^7.1 || ^8.0"
             },
             "replace": {
                 "myclabs/deep-copy": "self.version"
@@ -2162,79 +1839,31 @@
                 "object",
                 "object graph"
             ],
-            "time": "2018-06-11T23:09:50+00:00"
-        },
-        {
-            "name": "natxet/CssMin",
-            "version": "v3.0.4",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/natxet/CssMin.git",
-                "reference": "92de3fe3ccb4f8298d31952490ef7d5395855c39"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/natxet/CssMin/zipball/92de3fe3ccb4f8298d31952490ef7d5395855c39",
-                "reference": "92de3fe3ccb4f8298d31952490ef7d5395855c39",
-                "shasum": ""
-            },
-            "require": {
-                "php": ">=5.0"
-            },
-            "type": "library",
-            "extra": {
-                "branch-alias": {
-                    "dev-master": "3.0-dev"
-                }
-            },
-            "autoload": {
-                "classmap": [
-                    "src/"
-                ]
-            },
-            "notification-url": "https://packagist.org/downloads/",
-            "license": [
-                "MIT"
-            ],
-            "authors": [
+            "funding": [
                 {
-                    "name": "Joe Scylla",
-                    "email": "joe.scylla@gmail.com",
-                    "homepage": "https://profiles.google.com/joe.scylla"
+                    "url": "https://tidelift.com/funding/github/packagist/myclabs/deep-copy",
+                    "type": "tidelift"
                 }
             ],
-            "description": "Minifying CSS",
-            "homepage": "http://code.google.com/p/cssmin/",
-            "keywords": [
-                "css",
-                "minify"
-            ],
-            "time": "2015-09-25T11:13:11+00:00"
+            "time": "2020-06-29T13:22:24+00:00"
         },
         {
-            "name": "nikic/php-parser",
-            "version": "v3.1.5",
+            "name": "natxet/cssmin",
+            "version": "v3.0.4",
             "source": {
                 "type": "git",
-                "url": "https://github.com/nikic/PHP-Parser.git",
-                "reference": "bb87e28e7d7b8d9a7fda231d37457c9210faf6ce"
+                "url": "https://github.com/natxet/CssMin.git",
+                "reference": "92de3fe3ccb4f8298d31952490ef7d5395855c39"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/bb87e28e7d7b8d9a7fda231d37457c9210faf6ce",
-                "reference": "bb87e28e7d7b8d9a7fda231d37457c9210faf6ce",
+                "url": "https://api.github.com/repos/natxet/CssMin/zipball/92de3fe3ccb4f8298d31952490ef7d5395855c39",
+                "reference": "92de3fe3ccb4f8298d31952490ef7d5395855c39",
                 "shasum": ""
             },
             "require": {
-                "ext-tokenizer": "*",
-                "php": ">=5.5"
-            },
-            "require-dev": {
-                "phpunit/phpunit": "~4.0|~5.0"
+                "php": ">=5.0"
             },
-            "bin": [
-                "bin/php-parse"
-            ],
             "type": "library",
             "extra": {
                 "branch-alias": {
@@ -2242,25 +1871,28 @@
                 }
             },
             "autoload": {
-                "psr-4": {
-                    "PhpParser\\": "lib/PhpParser"
-                }
+                "classmap": [
+                    "src/"
+                ]
             },
             "notification-url": "https://packagist.org/downloads/",
             "license": [
-                "BSD-3-Clause"
+                "MIT"
             ],
             "authors": [
                 {
-                    "name": "Nikita Popov"
+                    "name": "Joe Scylla",
+                    "email": "joe.scylla@gmail.com",
+                    "homepage": "https://profiles.google.com/joe.scylla"
                 }
             ],
-            "description": "A PHP parser written in PHP",
+            "description": "Minifying CSS",
+            "homepage": "http://code.google.com/p/cssmin/",
             "keywords": [
-                "parser",
-                "php"
+                "css",
+                "minify"
             ],
-            "time": "2018-02-28T20:30:58+00:00"
+            "time": "2015-09-25T11:13:11+00:00"
         },
         {
             "name": "patchwork/jsqueeze",
@@ -2307,20 +1939,21 @@
                 "javascript",
                 "minification"
             ],
+            "abandoned": true,
             "time": "2016-04-19T09:28:22+00:00"
         },
         {
             "name": "pear/archive_tar",
-            "version": "1.4.6",
+            "version": "1.4.10",
             "source": {
                 "type": "git",
                 "url": "https://github.com/pear/Archive_Tar.git",
-                "reference": "b8e33f9063a7cd1d20f079014f8382b3a7aee47e"
+                "reference": "bbb4f10f71a1da2715ec6d9a683f4f23c507a49b"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/pear/Archive_Tar/zipball/b8e33f9063a7cd1d20f079014f8382b3a7aee47e",
-                "reference": "b8e33f9063a7cd1d20f079014f8382b3a7aee47e",
+                "url": "https://api.github.com/repos/pear/Archive_Tar/zipball/bbb4f10f71a1da2715ec6d9a683f4f23c507a49b",
+                "reference": "bbb4f10f71a1da2715ec6d9a683f4f23c507a49b",
                 "shasum": ""
             },
             "require": {
@@ -2373,20 +2006,20 @@
                 "archive",
                 "tar"
             ],
-            "time": "2019-02-01T11:10:38+00:00"
+            "time": "2020-09-15T14:13:23+00:00"
         },
         {
             "name": "pear/console_getopt",
-            "version": "v1.4.2",
+            "version": "v1.4.3",
             "source": {
                 "type": "git",
                 "url": "https://github.com/pear/Console_Getopt.git",
-                "reference": "6c77aeb625b32bd752e89ee17972d103588b90c0"
+                "reference": "a41f8d3e668987609178c7c4a9fe48fecac53fa0"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/pear/Console_Getopt/zipball/6c77aeb625b32bd752e89ee17972d103588b90c0",
-                "reference": "6c77aeb625b32bd752e89ee17972d103588b90c0",
+                "url": "https://api.github.com/repos/pear/Console_Getopt/zipball/a41f8d3e668987609178c7c4a9fe48fecac53fa0",
+                "reference": "a41f8d3e668987609178c7c4a9fe48fecac53fa0",
                 "shasum": ""
             },
             "type": "library",
@@ -2403,11 +2036,6 @@
                 "BSD-2-Clause"
             ],
             "authors": [
-                {
-                    "name": "Greg Beaver",
-                    "email": "cellog@php.net",
-                    "role": "Helper"
-                },
                 {
                     "name": "Andrei Zmievski",
                     "email": "andrei@php.net",
@@ -2417,23 +2045,28 @@
                     "name": "Stig Bakken",
                     "email": "stig@php.net",
                     "role": "Developer"
+                },
+                {
+                    "name": "Greg Beaver",
+                    "email": "cellog@php.net",
+                    "role": "Helper"
                 }
             ],
             "description": "More info available on: http://pear.php.net/package/Console_Getopt",
-            "time": "2019-02-06T16:52:33+00:00"
+            "time": "2019-11-20T18:27:48+00:00"
         },
         {
             "name": "pear/pear-core-minimal",
-            "version": "v1.10.7",
+            "version": "v1.10.10",
             "source": {
                 "type": "git",
                 "url": "https://github.com/pear/pear-core-minimal.git",
-                "reference": "19a3e0fcd50492c4357372f623f55f1b144346da"
+                "reference": "625a3c429d9b2c1546438679074cac1b089116a7"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/pear/pear-core-minimal/zipball/19a3e0fcd50492c4357372f623f55f1b144346da",
-                "reference": "19a3e0fcd50492c4357372f623f55f1b144346da",
+                "url": "https://api.github.com/repos/pear/pear-core-minimal/zipball/625a3c429d9b2c1546438679074cac1b089116a7",
+                "reference": "625a3c429d9b2c1546438679074cac1b089116a7",
                 "shasum": ""
             },
             "require": {
@@ -2464,20 +2097,20 @@
                 }
             ],
             "description": "Minimal set of PEAR core files to be used as composer dependency",
-            "time": "2018-12-05T20:03:52+00:00"
+            "time": "2019-11-19T19:00:24+00:00"
         },
         {
             "name": "pear/pear_exception",
-            "version": "v1.0.0",
+            "version": "v1.0.1",
             "source": {
                 "type": "git",
                 "url": "https://github.com/pear/PEAR_Exception.git",
-                "reference": "8c18719fdae000b690e3912be401c76e406dd13b"
+                "reference": "dbb42a5a0e45f3adcf99babfb2a1ba77b8ac36a7"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/pear/PEAR_Exception/zipball/8c18719fdae000b690e3912be401c76e406dd13b",
-                "reference": "8c18719fdae000b690e3912be401c76e406dd13b",
+                "url": "https://api.github.com/repos/pear/PEAR_Exception/zipball/dbb42a5a0e45f3adcf99babfb2a1ba77b8ac36a7",
+                "reference": "dbb42a5a0e45f3adcf99babfb2a1ba77b8ac36a7",
                 "shasum": ""
             },
             "require": {
@@ -2493,9 +2126,9 @@
                 }
             },
             "autoload": {
-                "psr-0": {
-                    "PEAR": ""
-                }
+                "classmap": [
+                    "PEAR/"
+                ]
             },
             "notification-url": "https://packagist.org/downloads/",
             "include-path": [
@@ -2519,7 +2152,7 @@
             "keywords": [
                 "exception"
             ],
-            "time": "2015-02-10T20:07:52+00:00"
+            "time": "2019-12-10T10:24:42+00:00"
         },
         {
             "name": "php-coveralls/php-coveralls",
@@ -2584,35 +2217,30 @@
         },
         {
             "name": "phpdocumentor/reflection-common",
-            "version": "1.0.1",
+            "version": "2.1.0",
             "source": {
                 "type": "git",
                 "url": "https://github.com/phpDocumentor/ReflectionCommon.git",
-                "reference": "21bdeb5f65d7ebf9f43b1b25d404f87deab5bfb6"
+                "reference": "6568f4687e5b41b054365f9ae03fcb1ed5f2069b"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/phpDocumentor/ReflectionCommon/zipball/21bdeb5f65d7ebf9f43b1b25d404f87deab5bfb6",
-                "reference": "21bdeb5f65d7ebf9f43b1b25d404f87deab5bfb6",
+                "url": "https://api.github.com/repos/phpDocumentor/ReflectionCommon/zipball/6568f4687e5b41b054365f9ae03fcb1ed5f2069b",
+                "reference": "6568f4687e5b41b054365f9ae03fcb1ed5f2069b",
                 "shasum": ""
             },
             "require": {
-                "php": ">=5.5"
-            },
-            "require-dev": {
-                "phpunit/phpunit": "^4.6"
+                "php": ">=7.1"
             },
             "type": "library",
             "extra": {
                 "branch-alias": {
-                    "dev-master": "1.0.x-dev"
+                    "dev-master": "2.x-dev"
                 }
             },
             "autoload": {
                 "psr-4": {
-                    "phpDocumentor\\Reflection\\": [
-                        "src"
-                    ]
+                    "phpDocumentor\\Reflection\\": "src/"
                 }
             },
             "notification-url": "https://packagist.org/downloads/",
@@ -2634,31 +2262,32 @@
                 "reflection",
                 "static analysis"
             ],
-            "time": "2017-09-11T18:02:19+00:00"
+            "time": "2020-04-27T09:25:28+00:00"
         },
         {
             "name": "phpdocumentor/reflection-docblock",
-            "version": "4.3.0",
+            "version": "4.3.4",
             "source": {
                 "type": "git",
                 "url": "https://github.com/phpDocumentor/ReflectionDocBlock.git",
-                "reference": "94fd0001232e47129dd3504189fa1c7225010d08"
+                "reference": "da3fd972d6bafd628114f7e7e036f45944b62e9c"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/phpDocumentor/ReflectionDocBlock/zipball/94fd0001232e47129dd3504189fa1c7225010d08",
-                "reference": "94fd0001232e47129dd3504189fa1c7225010d08",
+                "url": "https://api.github.com/repos/phpDocumentor/ReflectionDocBlock/zipball/da3fd972d6bafd628114f7e7e036f45944b62e9c",
+                "reference": "da3fd972d6bafd628114f7e7e036f45944b62e9c",
                 "shasum": ""
             },
             "require": {
                 "php": "^7.0",
-                "phpdocumentor/reflection-common": "^1.0.0",
-                "phpdocumentor/type-resolver": "^0.4.0",
+                "phpdocumentor/reflection-common": "^1.0.0 || ^2.0.0",
+                "phpdocumentor/type-resolver": "~0.4 || ^1.0.0",
                 "webmozart/assert": "^1.0"
             },
             "require-dev": {
-                "doctrine/instantiator": "~1.0.5",
+                "doctrine/instantiator": "^1.0.5",
                 "mockery/mockery": "^1.0",
+                "phpdocumentor/type-resolver": "0.4.*",
                 "phpunit/phpunit": "^6.4"
             },
             "type": "library",
@@ -2685,41 +2314,40 @@
                 }
             ],
             "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"
+            "time": "2019-12-28T18:55:12+00:00"
         },
         {
             "name": "phpdocumentor/type-resolver",
-            "version": "0.4.0",
+            "version": "1.0.1",
             "source": {
                 "type": "git",
                 "url": "https://github.com/phpDocumentor/TypeResolver.git",
-                "reference": "9c977708995954784726e25d0cd1dddf4e65b0f7"
+                "reference": "2e32a6d48972b2c1976ed5d8967145b6cec4a4a9"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/phpDocumentor/TypeResolver/zipball/9c977708995954784726e25d0cd1dddf4e65b0f7",
-                "reference": "9c977708995954784726e25d0cd1dddf4e65b0f7",
+                "url": "https://api.github.com/repos/phpDocumentor/TypeResolver/zipball/2e32a6d48972b2c1976ed5d8967145b6cec4a4a9",
+                "reference": "2e32a6d48972b2c1976ed5d8967145b6cec4a4a9",
                 "shasum": ""
             },
             "require": {
-                "php": "^5.5 || ^7.0",
-                "phpdocumentor/reflection-common": "^1.0"
+                "php": "^7.1",
+                "phpdocumentor/reflection-common": "^2.0"
             },
             "require-dev": {
-                "mockery/mockery": "^0.9.4",
-                "phpunit/phpunit": "^5.2||^4.8.24"
+                "ext-tokenizer": "^7.1",
+                "mockery/mockery": "~1",
+                "phpunit/phpunit": "^7.0"
             },
             "type": "library",
             "extra": {
                 "branch-alias": {
-                    "dev-master": "1.0.x-dev"
+                    "dev-master": "1.x-dev"
                 }
             },
             "autoload": {
                 "psr-4": {
-                    "phpDocumentor\\Reflection\\": [
-                        "src/"
-                    ]
+                    "phpDocumentor\\Reflection\\": "src"
                 }
             },
             "notification-url": "https://packagist.org/downloads/",
@@ -2732,42 +2360,43 @@
                     "email": "me@mikevanriel.com"
                 }
             ],
-            "time": "2017-07-14T14:27:02+00:00"
+            "description": "A PSR-5 based resolver of Class names, Types and Structural Element Names",
+            "time": "2019-08-22T18:11:29+00:00"
         },
         {
             "name": "phpspec/prophecy",
-            "version": "1.8.0",
+            "version": "v1.10.3",
             "source": {
                 "type": "git",
                 "url": "https://github.com/phpspec/prophecy.git",
-                "reference": "4ba436b55987b4bf311cb7c6ba82aa528aac0a06"
+                "reference": "451c3cd1418cf640de218914901e51b064abb093"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/phpspec/prophecy/zipball/4ba436b55987b4bf311cb7c6ba82aa528aac0a06",
-                "reference": "4ba436b55987b4bf311cb7c6ba82aa528aac0a06",
+                "url": "https://api.github.com/repos/phpspec/prophecy/zipball/451c3cd1418cf640de218914901e51b064abb093",
+                "reference": "451c3cd1418cf640de218914901e51b064abb093",
                 "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"
+                "phpdocumentor/reflection-docblock": "^2.0|^3.0.2|^4.0|^5.0",
+                "sebastian/comparator": "^1.2.3|^2.0|^3.0|^4.0",
+                "sebastian/recursion-context": "^1.0|^2.0|^3.0|^4.0"
             },
             "require-dev": {
-                "phpspec/phpspec": "^2.5|^3.2",
+                "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"
+                    "dev-master": "1.10.x-dev"
                 }
             },
             "autoload": {
-                "psr-0": {
-                    "Prophecy\\": "src/"
+                "psr-4": {
+                    "Prophecy\\": "src/Prophecy"
                 }
             },
             "notification-url": "https://packagist.org/downloads/",
@@ -2795,7 +2424,7 @@
                 "spy",
                 "stub"
             ],
-            "time": "2018-08-05T17:53:17+00:00"
+            "time": "2020-03-05T15:02:03+00:00"
         },
         {
             "name": "phpunit/php-code-coverage",
@@ -3044,6 +2673,7 @@
             "keywords": [
                 "tokenizer"
             ],
+            "abandoned": true,
             "time": "2017-11-27T05:48:46+00:00"
         },
         {
@@ -3185,98 +2815,9 @@
                 "mock",
                 "xunit"
             ],
+            "abandoned": true,
             "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": "ralouphie/getallheaders",
-            "version": "2.0.5",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/ralouphie/getallheaders.git",
-                "reference": "5601c8a83fbba7ef674a7369456d12f1e0d0eafa"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/ralouphie/getallheaders/zipball/5601c8a83fbba7ef674a7369456d12f1e0d0eafa",
-                "reference": "5601c8a83fbba7ef674a7369456d12f1e0d0eafa",
-                "shasum": ""
-            },
-            "require": {
-                "php": ">=5.3"
-            },
-            "require-dev": {
-                "phpunit/phpunit": "~3.7.0",
-                "satooshi/php-coveralls": ">=1.0"
-            },
-            "type": "library",
-            "autoload": {
-                "files": [
-                    "src/getallheaders.php"
-                ]
-            },
-            "notification-url": "https://packagist.org/downloads/",
-            "license": [
-                "MIT"
-            ],
-            "authors": [
-                {
-                    "name": "Ralph Khattar",
-                    "email": "ralph.khattar@gmail.com"
-                }
-            ],
-            "description": "A polyfill for getallheaders.",
-            "time": "2016-02-11T07:05:27+00:00"
-        },
         {
             "name": "sebastian/code-unit-reverse-lookup",
             "version": "1.0.1",
@@ -3792,64 +3333,37 @@
         },
         {
             "name": "squizlabs/php_codesniffer",
-            "version": "2.9.2",
+            "version": "3.5.6",
             "source": {
                 "type": "git",
                 "url": "https://github.com/squizlabs/PHP_CodeSniffer.git",
-                "reference": "2acf168de78487db620ab4bc524135a13cfe6745"
+                "reference": "e97627871a7eab2f70e59166072a6b767d5834e0"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/squizlabs/PHP_CodeSniffer/zipball/2acf168de78487db620ab4bc524135a13cfe6745",
-                "reference": "2acf168de78487db620ab4bc524135a13cfe6745",
+                "url": "https://api.github.com/repos/squizlabs/PHP_CodeSniffer/zipball/e97627871a7eab2f70e59166072a6b767d5834e0",
+                "reference": "e97627871a7eab2f70e59166072a6b767d5834e0",
                 "shasum": ""
             },
             "require": {
                 "ext-simplexml": "*",
                 "ext-tokenizer": "*",
                 "ext-xmlwriter": "*",
-                "php": ">=5.1.2"
+                "php": ">=5.4.0"
             },
             "require-dev": {
-                "phpunit/phpunit": "~4.0"
+                "phpunit/phpunit": "^4.0 || ^5.0 || ^6.0 || ^7.0"
             },
             "bin": [
-                "scripts/phpcs",
-                "scripts/phpcbf"
+                "bin/phpcs",
+                "bin/phpcbf"
             ],
             "type": "library",
             "extra": {
                 "branch-alias": {
-                    "dev-master": "2.x-dev"
+                    "dev-master": "3.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"
@@ -3861,97 +3375,41 @@
                 }
             ],
             "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",
+            "homepage": "https://github.com/squizlabs/PHP_CodeSniffer",
             "keywords": [
                 "phpcs",
                 "standards"
             ],
-            "time": "2018-11-07T22:31:41+00:00"
-        },
-        {
-            "name": "symfony/browser-kit",
-            "version": "v4.2.3",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/symfony/browser-kit.git",
-                "reference": "ee4462581eb54bf34b746e4a5d522a4f21620160"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/symfony/browser-kit/zipball/ee4462581eb54bf34b746e4a5d522a4f21620160",
-                "reference": "ee4462581eb54bf34b746e4a5d522a4f21620160",
-                "shasum": ""
-            },
-            "require": {
-                "php": "^7.1.3",
-                "symfony/dom-crawler": "~3.4|~4.0"
-            },
-            "require-dev": {
-                "symfony/css-selector": "~3.4|~4.0",
-                "symfony/process": "~3.4|~4.0"
-            },
-            "suggest": {
-                "symfony/process": ""
-            },
-            "type": "library",
-            "extra": {
-                "branch-alias": {
-                    "dev-master": "4.2-dev"
-                }
-            },
-            "autoload": {
-                "psr-4": {
-                    "Symfony\\Component\\BrowserKit\\": ""
-                },
-                "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 BrowserKit Component",
-            "homepage": "https://symfony.com",
-            "time": "2019-01-16T21:31:25+00:00"
+            "time": "2020-08-10T04:50:15+00:00"
         },
         {
             "name": "symfony/config",
-            "version": "v4.2.3",
+            "version": "v4.4.15",
             "source": {
                 "type": "git",
                 "url": "https://github.com/symfony/config.git",
-                "reference": "25a2e7abe0d97e70282537292e3df45cf6da7b98"
+                "reference": "7c5a1002178a612787c291a4f515f87b19176b61"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/symfony/config/zipball/25a2e7abe0d97e70282537292e3df45cf6da7b98",
-                "reference": "25a2e7abe0d97e70282537292e3df45cf6da7b98",
+                "url": "https://api.github.com/repos/symfony/config/zipball/7c5a1002178a612787c291a4f515f87b19176b61",
+                "reference": "7c5a1002178a612787c291a4f515f87b19176b61",
                 "shasum": ""
             },
             "require": {
-                "php": "^7.1.3",
-                "symfony/filesystem": "~3.4|~4.0",
+                "php": ">=7.1.3",
+                "symfony/filesystem": "^3.4|^4.0|^5.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"
+                "symfony/event-dispatcher": "^3.4|^4.0|^5.0",
+                "symfony/finder": "^3.4|^4.0|^5.0",
+                "symfony/messenger": "^4.1|^5.0",
+                "symfony/service-contracts": "^1.1|^2",
+                "symfony/yaml": "^3.4|^4.0|^5.0"
             },
             "suggest": {
                 "symfony/yaml": "To use the yaml reference dumper"
@@ -3959,7 +3417,7 @@
             "type": "library",
             "extra": {
                 "branch-alias": {
-                    "dev-master": "4.2-dev"
+                    "dev-master": "4.4-dev"
                 }
             },
             "autoload": {
@@ -3986,95 +3444,49 @@
             ],
             "description": "Symfony Config Component",
             "homepage": "https://symfony.com",
-            "time": "2019-01-30T11:44:30+00:00"
-        },
-        {
-            "name": "symfony/css-selector",
-            "version": "v4.2.3",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/symfony/css-selector.git",
-                "reference": "48eddf66950fa57996e1be4a55916d65c10c604a"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/symfony/css-selector/zipball/48eddf66950fa57996e1be4a55916d65c10c604a",
-                "reference": "48eddf66950fa57996e1be4a55916d65c10c604a",
-                "shasum": ""
-            },
-            "require": {
-                "php": "^7.1.3"
-            },
-            "type": "library",
-            "extra": {
-                "branch-alias": {
-                    "dev-master": "4.2-dev"
-                }
-            },
-            "autoload": {
-                "psr-4": {
-                    "Symfony\\Component\\CssSelector\\": ""
-                },
-                "exclude-from-classmap": [
-                    "/Tests/"
-                ]
-            },
-            "notification-url": "https://packagist.org/downloads/",
-            "license": [
-                "MIT"
-            ],
-            "authors": [
+            "funding": [
                 {
-                    "name": "Jean-François Simon",
-                    "email": "jeanfrancois.simon@sensiolabs.com"
+                    "url": "https://symfony.com/sponsor",
+                    "type": "custom"
                 },
                 {
-                    "name": "Fabien Potencier",
-                    "email": "fabien@symfony.com"
+                    "url": "https://github.com/fabpot",
+                    "type": "github"
                 },
                 {
-                    "name": "Symfony Community",
-                    "homepage": "https://symfony.com/contributors"
+                    "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+                    "type": "tidelift"
                 }
             ],
-            "description": "Symfony CssSelector Component",
-            "homepage": "https://symfony.com",
-            "time": "2019-01-16T20:31:39+00:00"
+            "time": "2020-10-02T07:34:48+00:00"
         },
         {
-            "name": "symfony/dom-crawler",
-            "version": "v4.2.3",
+            "name": "symfony/stopwatch",
+            "version": "v4.4.15",
             "source": {
                 "type": "git",
-                "url": "https://github.com/symfony/dom-crawler.git",
-                "reference": "d8476760b04cdf7b499c8718aa437c20a9155103"
+                "url": "https://github.com/symfony/stopwatch.git",
+                "reference": "6f89e19772cf61b3c65bab329fe0e318259fbd91"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/symfony/dom-crawler/zipball/d8476760b04cdf7b499c8718aa437c20a9155103",
-                "reference": "d8476760b04cdf7b499c8718aa437c20a9155103",
+                "url": "https://api.github.com/repos/symfony/stopwatch/zipball/6f89e19772cf61b3c65bab329fe0e318259fbd91",
+                "reference": "6f89e19772cf61b3c65bab329fe0e318259fbd91",
                 "shasum": ""
             },
             "require": {
-                "php": "^7.1.3",
-                "symfony/polyfill-ctype": "~1.8",
-                "symfony/polyfill-mbstring": "~1.0"
-            },
-            "require-dev": {
-                "symfony/css-selector": "~3.4|~4.0"
-            },
-            "suggest": {
-                "symfony/css-selector": ""
+                "php": ">=7.1.3",
+                "symfony/service-contracts": "^1.0|^2"
             },
             "type": "library",
             "extra": {
                 "branch-alias": {
-                    "dev-master": "4.2-dev"
+                    "dev-master": "4.4-dev"
                 }
             },
             "autoload": {
                 "psr-4": {
-                    "Symfony\\Component\\DomCrawler\\": ""
+                    "Symfony\\Component\\Stopwatch\\": ""
                 },
                 "exclude-from-classmap": [
                     "/Tests/"
@@ -4094,88 +3506,50 @@
                     "homepage": "https://symfony.com/contributors"
                 }
             ],
-            "description": "Symfony DomCrawler Component",
+            "description": "Symfony Stopwatch Component",
             "homepage": "https://symfony.com",
-            "time": "2019-01-16T20:35:37+00:00"
-        },
-        {
-            "name": "symfony/stopwatch",
-            "version": "v4.2.3",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/symfony/stopwatch.git",
-                "reference": "b1a5f646d56a3290230dbc8edf2a0d62cda23f67"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/symfony/stopwatch/zipball/b1a5f646d56a3290230dbc8edf2a0d62cda23f67",
-                "reference": "b1a5f646d56a3290230dbc8edf2a0d62cda23f67",
-                "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\\": ""
+            "funding": [
+                {
+                    "url": "https://symfony.com/sponsor",
+                    "type": "custom"
                 },
-                "exclude-from-classmap": [
-                    "/Tests/"
-                ]
-            },
-            "notification-url": "https://packagist.org/downloads/",
-            "license": [
-                "MIT"
-            ],
-            "authors": [
                 {
-                    "name": "Fabien Potencier",
-                    "email": "fabien@symfony.com"
+                    "url": "https://github.com/fabpot",
+                    "type": "github"
                 },
                 {
-                    "name": "Symfony Community",
-                    "homepage": "https://symfony.com/contributors"
+                    "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+                    "type": "tidelift"
                 }
             ],
-            "description": "Symfony Stopwatch Component",
-            "homepage": "https://symfony.com",
-            "time": "2019-01-16T20:31:39+00:00"
+            "time": "2020-09-02T16:08:58+00:00"
         },
         {
             "name": "webmozart/assert",
-            "version": "1.4.0",
+            "version": "1.9.1",
             "source": {
                 "type": "git",
                 "url": "https://github.com/webmozart/assert.git",
-                "reference": "83e253c8e0be5b0257b881e1827274667c5c17a9"
+                "reference": "bafc69caeb4d49c39fd0779086c03a3738cbb389"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/webmozart/assert/zipball/83e253c8e0be5b0257b881e1827274667c5c17a9",
-                "reference": "83e253c8e0be5b0257b881e1827274667c5c17a9",
+                "url": "https://api.github.com/repos/webmozart/assert/zipball/bafc69caeb4d49c39fd0779086c03a3738cbb389",
+                "reference": "bafc69caeb4d49c39fd0779086c03a3738cbb389",
                 "shasum": ""
             },
             "require": {
-                "php": "^5.3.3 || ^7.0",
+                "php": "^5.3.3 || ^7.0 || ^8.0",
                 "symfony/polyfill-ctype": "^1.8"
             },
+            "conflict": {
+                "phpstan/phpstan": "<0.12.20",
+                "vimeo/psalm": "<3.9.1"
+            },
             "require-dev": {
-                "phpunit/phpunit": "^4.6",
-                "sebastian/version": "^1.0.1"
+                "phpunit/phpunit": "^4.8.36 || ^7.5.13"
             },
             "type": "library",
-            "extra": {
-                "branch-alias": {
-                    "dev-master": "1.3-dev"
-                }
-            },
             "autoload": {
                 "psr-4": {
                     "Webmozart\\Assert\\": "src/"
@@ -4197,7 +3571,7 @@
                 "check",
                 "validate"
             ],
-            "time": "2018-12-25T11:19:39+00:00"
+            "time": "2020-07-08T17:02:28+00:00"
         }
     ],
     "aliases": [],
@@ -4211,5 +3585,6 @@
     "platform-dev": [],
     "platform-overrides": {
         "php": "7.1.3"
-    }
+    },
+    "plugin-api-version": "1.1.0"
 }
diff --git a/vendor/consolidation/robo/CHANGELOG.md b/vendor/consolidation/robo/CHANGELOG.md
index 9352dddef4..283520e34f 100644
--- a/vendor/consolidation/robo/CHANGELOG.md
+++ b/vendor/consolidation/robo/CHANGELOG.md
@@ -1,6 +1,40 @@
 # Changelog
 
-### 1.4.7 - 1.4.8 2/19/2019
+### 1.4.13 - 10/10/2020
+
+- Allow symfony/finder ^5 (#992)
+- Fix #981: PHP 7.3 compatibility fixes (#982)
+
+### 1.4.12 2/18/2020
+
+- Fixed #922: PHP 7.4 compatibility. (#923) (#928)
+- Test on PHP 7.4. Backport removal of Codeception to 1.x branch. (#925)
+- Copy branches documentation to the 1.x branch.
+- Fix incosistent white space formatting in code example. (#916)
+- Viktor Szépe extract() is not our friend (#903)
+- Viktor Szépe Old variables in ImageMinify (#904)
+- Viktor Szépe RuntimeException used realtively (#905)
+
+### 1.4.11 10/29/2019
+
+- Deprecate $this->io() and provide style injector instead. (#910)
+- Jordon Replogle Changed leafo to scssphp as leafo is archived (#900)
+- Patrick Kollitsch Add missing code formatting to sample code (#861)
+- Patrick Kollitsch Adding documentation as option to pull_request_template.md (#862)
+- RTLcoil Tiny formatting fix in README (#874)
+- Tal Ater Updated README with command for initiating a RoboFile (#875)
+
+### 1.4.10 7/29/2019
+
+* Allow default argument for confirm() questions by Dane Powell (#850)
+* Allow command classes to end in Commands or Command by Jelle Sebreghts (#878)
+* ImageMinify: Prevent undefined variable error by Dan (#852) (#854)
+* Add sample with changed file handling to Base/Watch documentation by Patrick Kollitsch (#847)
+* Clearer explanation of --load-from option by Jordan Koplowicz (#872)
+* Fix PHPDoc @param and @return type hints by Andor (#886)
+* Update PHPDoc mismatch by Filippo Tessarotto (#883)
+
+### 1.4.7 - 1.4.9 2/19/2019
 
 * Re-release 1.4.6 to remove artifacts inadvertantly added to tagged release.
 
diff --git a/vendor/consolidation/robo/CONTRIBUTING.md b/vendor/consolidation/robo/CONTRIBUTING.md
index 438681469f..189f18987a 100644
--- a/vendor/consolidation/robo/CONTRIBUTING.md
+++ b/vendor/consolidation/robo/CONTRIBUTING.md
@@ -12,4 +12,8 @@ robo sniff src/Foo.php --autofix
 ```
 The above will run the PHP Codesniffer on the `src/Foo.php` file and automatically correct variances from the PSR-2 standard. Please ensure all contributions are compliant _before_ submitting a pull request.
 
+## Tests
 
+Note that in the past, Robo used Codeception / Aspect Mock etc. in its unit tests. These components proved to be difficult to maintain when testing on mutiple PHP versions, so they were removed. The tests formerly in tests/cli were all ported to straight phpunit tests in the tests/integration directory. Some of the unit tests from tests/unit were ported to tests/phpunit; however, a number of tests that still use AspectMock still exist in tests/unit, although these are not currently being used.
+
+Pull requests that touch parts of the code formerly tested by these disabled tests must also convert the AspectMock test to Prophecy or some other mocking system. Alternately, getting AspectMock working again on the master and 1.x branches is another option, if someone wants to stand up to do that work.
diff --git a/vendor/consolidation/robo/LICENSE b/vendor/consolidation/robo/LICENSE
index d1fc34655a..738df1d9fe 100644
--- a/vendor/consolidation/robo/LICENSE
+++ b/vendor/consolidation/robo/LICENSE
@@ -1,6 +1,6 @@
 The MIT License (MIT)
 
-Copyright (c) 2014-2019 Codegyre Developers Team, Consolidation Team
+Copyright (c) 2014-2020 Codegyre Developers Team, Consolidation Team
 
 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
@@ -22,23 +22,23 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 DEPENDENCY LICENSES:
 
 Name                                 Version  License
-consolidation/annotated-command      2.11.2   MIT
-consolidation/config                 1.2.0    MIT
-consolidation/log                    1.1.1    MIT
-consolidation/output-formatters      3.4.0    MIT
-consolidation/self-update            1.1.5    MIT
+consolidation/annotated-command      4.2.3    MIT
+consolidation/config                 1.2.1    MIT
+consolidation/log                    2.0.1    MIT
+consolidation/output-formatters      4.1.1    MIT
+consolidation/self-update            1.2.0    MIT
 container-interop/container-interop  1.2.0    MIT
 dflydev/dot-access-data              v1.1.0   MIT
 grasmash/expander                    1.0.0    MIT
 grasmash/yaml-expander               1.4.0    MIT
 league/container                     2.4.1    MIT
 psr/container                        1.0.0    MIT
-psr/log                              1.1.0    MIT
-symfony/console                      v4.2.3   MIT
-symfony/event-dispatcher             v4.2.3   MIT
-symfony/filesystem                   v4.2.3   MIT
-symfony/finder                       v3.4.22  MIT
-symfony/polyfill-ctype               v1.10.0  MIT
-symfony/polyfill-mbstring            v1.10.0  MIT
-symfony/process                      v4.2.3   MIT
-symfony/yaml                         v4.2.3   MIT
\ No newline at end of file
+psr/log                              1.1.3    MIT
+symfony/console                      v4.4.15  MIT
+symfony/event-dispatcher             v4.4.15  MIT
+symfony/filesystem                   v4.4.15  MIT
+symfony/finder                       v4.4.15  MIT
+symfony/polyfill-ctype               v1.18.1  MIT
+symfony/polyfill-mbstring            v1.18.1  MIT
+symfony/process                      v4.4.15  MIT
+symfony/yaml                         v4.4.15  MIT
\ No newline at end of file
diff --git a/vendor/consolidation/robo/README.md b/vendor/consolidation/robo/README.md
index 73a8feb22b..5a77b7a17b 100644
--- a/vendor/consolidation/robo/README.md
+++ b/vendor/consolidation/robo/README.md
@@ -1,20 +1,17 @@
 # RoboTask
 
-_This is the 1.x (stable) branch of the Robo task runner. Development for Robo 2.x (future) is happening on the [master](https://github.com/consolidation/Robo/tree/master) branch._
-
 **Modern and simple PHP task runner** inspired by Gulp and Rake aimed to automate common tasks:
 
 [![Gitter](https://badges.gitter.im/Join%20Chat.svg)](https://gitter.im/consolidation/Robo?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge) 
 [![Latest Stable Version](https://poser.pugx.org/consolidation/robo/v/stable.png)](https://packagist.org/packages/consolidation/robo) 
 [![Latest Unstable Version](https://poser.pugx.org/consolidation/robo/v/unstable.png)](https://packagist.org/packages/consolidation/robo) 
 [![Total Downloads](https://poser.pugx.org/consolidation/robo/downloads.png)](https://packagist.org/packages/consolidation/robo) 
-[![PHP 7 ready](http://php7ready.timesplinter.ch/consolidation/Robo/badge.svg)](https://travis-ci.org/consolidation/Robo)
-[![License](https://poser.pugx.org/consolidation/robo/license.png)](https://www.versioneye.com/user/projects/57c4a6fe968d64004d97620a?child=57c4a6fe968d64004d97620a#tab-licenses)
+[![PHP 5 supported](https://img.shields.io/badge/PHP%205-supported-92a9ed)](https://travis-ci.org/consolidation/Robo)
 
 [![Build Status](https://travis-ci.org/consolidation/Robo.svg?branch=master)](https://travis-ci.org/consolidation/Robo) 
 [![Windows CI](https://ci.appveyor.com/api/projects/status/0823hnh06pw8ir4d?svg=true)](https://ci.appveyor.com/project/greg-1-anderson/robo)
 [![Scrutinizer Code Quality](https://scrutinizer-ci.com/g/consolidation/Robo/badges/quality-score.png?b=master)](https://scrutinizer-ci.com/g/consolidation/Robo/?branch=master)
-[![Dependency Status](https://www.versioneye.com/user/projects/57c4a6fe968d64004d97620a/badge.svg?style=flat-square)](https://www.versioneye.com/user/projects/57c4a6fe968d64004d97620a)
+[![License](https://img.shields.io/badge/license-MIT-408677.svg)](LICENSE)
 
 * writing cross-platform scripts
 * processing assets (less, sass, minification)
@@ -23,6 +20,15 @@ _This is the 1.x (stable) branch of the Robo task runner. Development for Robo 2
 * watching filesystem changes
 * deployment with sftp/ssh/docker
 
+## Branches
+
+| Branch | Symfony Versions | PHP Versions |
+| ------ | ---------------- | ------------ |
+| [master](https://github.com/consolidation/robo)      | 4 only    | [![PHP 7 only](https://img.shields.io/badge/PHP%207-only-92a9ed)](https://travis-ci.org/consolidation/Robo) |
+| [1.x](https://github.com/consolidation/robotree/1.x) | 2, 3 or 4 | [![PHP 5 supported](https://img.shields.io/badge/PHP%205-supported-408677)](https://travis-ci.org/consolidation/Robo) |
+
+Robo versions 2.x and 1.x are largely compatible; however, Robo 2.x supports fewer versions of PHP and Symfony. This is to make ongoing maintenance easier; Robo 1.x will be supported less and less over time. Projects should update to Robo ^2 if possible.
+
 ## Installing
 
 ### Phar
@@ -53,13 +59,13 @@ Now you can use it just like `robo`.
 
 ## Usage
 
-All tasks are defined as **public methods** in `RoboFile.php`. It can be created by running `robo`.
+All tasks are defined as **public methods** in `RoboFile.php`. It can be created by running `robo init`.
 All protected methods in traits that start with `task` prefix are tasks and can be configured and executed in your tasks.
 
 ## Examples
 
 The best way to learn Robo by example is to take a look into [its own RoboFile](https://github.com/consolidation/Robo/blob/master/RoboFile.php)
- or [RoboFile of Codeception project](https://github.com/Codeception/Codeception/blob/2.4/RoboFile.php). There are also some basic example commands in examples/RoboFile.php.
+ or [RoboFile of Codeception project](https://github.com/Codeception/Codeception/blob/2.4/RoboFile.php). There are also some basic example commands in `examples/RoboFile.php`.
 
 Here are some snippets from them:
 
@@ -83,12 +89,12 @@ class RoboFile extends \Robo\Tasks
             ->run();
 
        // running Selenium server in background
-        $this->taskExec('java -jar ' . $seleniumPath)
+       $this->taskExec('java -jar ' . $seleniumPath)
             ->background()
             ->run();
 
-        // loading Symfony Command and running with passed argument
-        $this->taskSymfonyCommand(new \Codeception\Command\Run('run'))
+       // loading Symfony Command and running with passed argument
+       $this->taskSymfonyCommand(new \Codeception\Command\Run('run'))
             ->arg('suite','acceptance')
             ->run();
     }
diff --git a/vendor/consolidation/robo/RoboFile.php b/vendor/consolidation/robo/RoboFile.php
index 2dcb09cd14..a35502a479 100644
--- a/vendor/consolidation/robo/RoboFile.php
+++ b/vendor/consolidation/robo/RoboFile.php
@@ -5,6 +5,10 @@ class RoboFile extends \Robo\Tasks
 {
     /**
      * Run the Robo unit tests.
+     *
+     * n.b. The CI jobs use `composer unit` rather than this function
+     * to run the tests. This command also runs the remaining Codeception
+     * tests. You must re-add Codeception to the project to use this.
      */
     public function test(array $args, $options =
         [
@@ -12,7 +16,11 @@ public function test(array $args, $options =
             'coverage' => false
         ])
     {
-        $taskCodecept = $this->taskCodecept()
+        $collection = $this->collectionBuilder();
+
+        $taskPHPUnit = $collection->taskPHPUnit();
+
+        $taskCodecept = $collection->taskCodecept()
             ->args($args);
 
         if ($options['coverage']) {
@@ -22,7 +30,7 @@ public function test(array $args, $options =
             $taskCodecept->coverageHtml('../../build/logs/coverage');
         }
 
-        return $taskCodecept->run();
+        return $collection;
      }
 
     /**
@@ -59,8 +67,9 @@ public function sniff(
     /**
      * Generate a new Robo task that wraps an existing utility class.
      *
-     * @param $className The name of the existing utility class to wrap.
-     * @param $wrapperClassName The name of the wrapper class to create. Optional.
+     * @param string $className The name of the existing utility class to wrap.
+     * @param string $wrapperClassName The name of the wrapper class to create. Optional.
+     *
      * @usage generate:task 'Symfony\Component\Filesystem\Filesystem' FilesystemStack
      */
     public function generateTask($className, $wrapperClassName = "")
diff --git a/vendor/consolidation/robo/codeception.yml b/vendor/consolidation/robo/codeception.yml
index 09763ea714..793adae8ea 100644
--- a/vendor/consolidation/robo/codeception.yml
+++ b/vendor/consolidation/robo/codeception.yml
@@ -4,8 +4,8 @@ paths:
     log: tests/_log
     data: tests/_data
     helpers: tests/_helpers
+bootstrap: _bootstrap.php
 settings:
-    bootstrap: _bootstrap.php
     colors: true
     memory_limit: 1024M
 modules:
diff --git a/vendor/consolidation/robo/composer.json b/vendor/consolidation/robo/composer.json
index 8ff6524445..75606d437a 100644
--- a/vendor/consolidation/robo/composer.json
+++ b/vendor/consolidation/robo/composer.json
@@ -22,37 +22,31 @@
     "bin":["robo"],
     "require": {
         "php": ">=5.5.0",
-        "league/container": "^2.2",
-        "consolidation/log": "~1",
-        "consolidation/config": "^1.2",
-        "consolidation/annotated-command": "^2.10.2",
-        "consolidation/output-formatters": "^3.1.13",
-        "consolidation/self-update": "^1",
-        "grasmash/yaml-expander": "^1.3",
-        "symfony/finder": "^2.5|^3|^4",
+        "consolidation/annotated-command": "^2.12.1|^4.1",
+        "consolidation/config": "^1.2.1",
+        "consolidation/log": "^1.1.1|^2",
+        "consolidation/output-formatters": "^3.5.1|^4.1",
+        "consolidation/self-update": "^1.1.5",
+        "grasmash/yaml-expander": "^1.4",
+        "league/container": "^2.4.1",
         "symfony/console": "^2.8|^3|^4",
-        "symfony/process": "^2.5|^3|^4",
+        "symfony/event-dispatcher": "^2.5|^3|^4",
         "symfony/filesystem": "^2.5|^3|^4",
-        "symfony/event-dispatcher": "^2.5|^3|^4"
+        "symfony/finder": "^2.5|^3|^4|^5",
+        "symfony/process": "^2.5|^3|^4"
     },
     "require-dev": {
         "g1a/composer-test-scenarios": "^3",
-        "patchwork/jsqueeze": "~2",
-        "natxet/CssMin": "3.0.4",
+        "natxet/cssmin": "3.0.4",
+        "patchwork/jsqueeze": "^2",
         "pear/archive_tar": "^1.4.4",
-        "codeception/base": "^2.3.7",
-        "goaop/framework": "~2.1.2",
-        "codeception/verify": "^0.3.2",
-        "codeception/aspect-mock": "^1|^2.1.1",
-        "goaop/parser-reflection": "^1.1.0",
-        "nikic/php-parser": "^3.1.5",
         "php-coveralls/php-coveralls": "^1",
-        "phpunit/php-code-coverage": "~2|~4",
-        "squizlabs/php_codesniffer": "^2.8"
+        "phpunit/phpunit": "^5.7.27",
+        "squizlabs/php_codesniffer": "^3"
     },
     "scripts": {
         "cs": "./robo sniff",
-        "unit": "./robo test --coverage",
+        "unit": "phpunit",
         "lint": [
             "find src -name '*.php' -print0 | xargs -0 -n1 php -l",
             "find tests/src -name '*.php' -print0 | xargs -0 -n1 php -l"
@@ -75,6 +69,16 @@
     },
     "extra": {
         "scenarios": {
+            "finder5": {
+                "require": {
+                    "symfony/finder": "^5"
+                },
+                "config": {
+                    "platform": {
+                        "php": "7.2.5"
+                    }
+                }                
+            },
             "symfony4": {
                 "require": {
                     "symfony/console": "^4"
@@ -89,8 +93,11 @@
                 "require": {
                     "symfony/console": "^2.8"
                 },
+                "require-dev": {
+                    "phpunit/phpunit": "^4.8.36"
+                },
                 "remove": [
-                    "goaop/framework"
+                    "php-coveralls/php-coveralls"
                 ],
                 "config": {
                     "platform": {
@@ -103,7 +110,7 @@
             }
         },
         "branch-alias": {
-            "dev-master": "2.x-dev"
+            "dev-master": "1.x-dev"
         }
     },
     "suggest": {
diff --git a/vendor/consolidation/robo/composer.lock b/vendor/consolidation/robo/composer.lock
index 3a709f76bb..871c4ea5de 100644
--- a/vendor/consolidation/robo/composer.lock
+++ b/vendor/consolidation/robo/composer.lock
@@ -4,29 +4,29 @@
         "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",
         "This file is @generated automatically"
     ],
-    "content-hash": "90d835cb3183287ad1fb46b4c4b32c7b",
+    "content-hash": "2a1b2eeb6baa01fec984c8b922282930",
     "packages": [
         {
             "name": "consolidation/annotated-command",
-            "version": "2.11.2",
+            "version": "2.12.1",
             "source": {
                 "type": "git",
                 "url": "https://github.com/consolidation/annotated-command.git",
-                "reference": "004af26391cd7d1cd04b0ac736dc1324d1b4f572"
+                "reference": "0ee361762df2274f360c085e3239784a53f850b5"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/consolidation/annotated-command/zipball/004af26391cd7d1cd04b0ac736dc1324d1b4f572",
-                "reference": "004af26391cd7d1cd04b0ac736dc1324d1b4f572",
+                "url": "https://api.github.com/repos/consolidation/annotated-command/zipball/0ee361762df2274f360c085e3239784a53f850b5",
+                "reference": "0ee361762df2274f360c085e3239784a53f850b5",
                 "shasum": ""
             },
             "require": {
-                "consolidation/output-formatters": "^3.4",
+                "consolidation/output-formatters": "^3.5.1",
                 "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"
+                "symfony/finder": "^2.5|^3|^4|^5"
             },
             "require-dev": {
                 "g1a/composer-test-scenarios": "^3",
@@ -37,6 +37,16 @@
             "type": "library",
             "extra": {
                 "scenarios": {
+                    "finder5": {
+                        "require": {
+                            "symfony/finder": "^5"
+                        },
+                        "config": {
+                            "platform": {
+                                "php": "7.2.5"
+                            }
+                        }
+                    },
                     "symfony4": {
                         "require": {
                             "symfony/console": "^4.0"
@@ -100,20 +110,20 @@
                 }
             ],
             "description": "Initialize Symfony Console commands from annotated command class methods.",
-            "time": "2019-02-02T02:29:53+00:00"
+            "time": "2020-10-11T04:30:03+00:00"
         },
         {
             "name": "consolidation/config",
-            "version": "1.2.0",
+            "version": "1.2.1",
             "source": {
                 "type": "git",
                 "url": "https://github.com/consolidation/config.git",
-                "reference": "11ab7ecd19131ce084390171b9c070eedecf7dab"
+                "reference": "cac1279bae7efb5c7fb2ca4c3ba4b8eb741a96c1"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/consolidation/config/zipball/11ab7ecd19131ce084390171b9c070eedecf7dab",
-                "reference": "11ab7ecd19131ce084390171b9c070eedecf7dab",
+                "url": "https://api.github.com/repos/consolidation/config/zipball/cac1279bae7efb5c7fb2ca4c3ba4b8eb741a96c1",
+                "reference": "cac1279bae7efb5c7fb2ca4c3ba4b8eb741a96c1",
                 "shasum": ""
             },
             "require": {
@@ -181,7 +191,7 @@
                 }
             ],
             "description": "Provide configuration services for a commandline tool.",
-            "time": "2019-02-16T01:18:47+00:00"
+            "time": "2019-03-03T19:37:04+00:00"
         },
         {
             "name": "consolidation/log",
@@ -275,30 +285,29 @@
         },
         {
             "name": "consolidation/output-formatters",
-            "version": "3.4.0",
+            "version": "3.5.1",
             "source": {
                 "type": "git",
                 "url": "https://github.com/consolidation/output-formatters.git",
-                "reference": "a942680232094c4a5b21c0b7e54c20cce623ae19"
+                "reference": "0d38f13051ef05c223a2bb8e962d668e24785196"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/consolidation/output-formatters/zipball/a942680232094c4a5b21c0b7e54c20cce623ae19",
-                "reference": "a942680232094c4a5b21c0b7e54c20cce623ae19",
+                "url": "https://api.github.com/repos/consolidation/output-formatters/zipball/0d38f13051ef05c223a2bb8e962d668e24785196",
+                "reference": "0d38f13051ef05c223a2bb8e962d668e24785196",
                 "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"
+                "symfony/finder": "^2.5|^3|^4|^5"
             },
             "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"
             },
@@ -307,6 +316,62 @@
             },
             "type": "library",
             "extra": {
+                "scenarios": {
+                    "finder5": {
+                        "require": {
+                            "symfony/finder": "^5"
+                        },
+                        "config": {
+                            "platform": {
+                                "php": "7.2.5"
+                            }
+                        }
+                    },
+                    "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"
                 }
@@ -327,26 +392,26 @@
                 }
             ],
             "description": "Format text by applying transformations provided by plug-in formatters.",
-            "time": "2018-10-19T22:35:38+00:00"
+            "time": "2020-10-11T04:15:32+00:00"
         },
         {
             "name": "consolidation/self-update",
-            "version": "1.1.5",
+            "version": "1.2.0",
             "source": {
                 "type": "git",
                 "url": "https://github.com/consolidation/self-update.git",
-                "reference": "a1c273b14ce334789825a09d06d4c87c0a02ad54"
+                "reference": "dba6b2c0708f20fa3ba8008a2353b637578849b4"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/consolidation/self-update/zipball/a1c273b14ce334789825a09d06d4c87c0a02ad54",
-                "reference": "a1c273b14ce334789825a09d06d4c87c0a02ad54",
+                "url": "https://api.github.com/repos/consolidation/self-update/zipball/dba6b2c0708f20fa3ba8008a2353b637578849b4",
+                "reference": "dba6b2c0708f20fa3ba8008a2353b637578849b4",
                 "shasum": ""
             },
             "require": {
                 "php": ">=5.5.0",
-                "symfony/console": "^2.8|^3|^4",
-                "symfony/filesystem": "^2.5|^3|^4"
+                "symfony/console": "^2.8|^3|^4|^5",
+                "symfony/filesystem": "^2.5|^3|^4|^5"
             },
             "bin": [
                 "scripts/release"
@@ -367,17 +432,17 @@
                 "MIT"
             ],
             "authors": [
-                {
-                    "name": "Greg Anderson",
-                    "email": "greg.1.anderson@greenknowe.org"
-                },
                 {
                     "name": "Alexander Menk",
                     "email": "menk@mestrona.net"
+                },
+                {
+                    "name": "Greg Anderson",
+                    "email": "greg.1.anderson@greenknowe.org"
                 }
             ],
             "description": "Provides a self:update command for Symfony Console applications.",
-            "time": "2018-10-28T01:52:03+00:00"
+            "time": "2020-04-13T02:49:20+00:00"
         },
         {
             "name": "container-interop/container-interop",
@@ -408,6 +473,7 @@
             ],
             "description": "Promoting the interoperability of container objects (DIC, SL, etc.)",
             "homepage": "https://github.com/container-interop/container-interop",
+            "abandoned": "psr/container",
             "time": "2017-02-14T19:40:03+00:00"
         },
         {
@@ -680,16 +746,16 @@
         },
         {
             "name": "psr/log",
-            "version": "1.1.0",
+            "version": "1.1.3",
             "source": {
                 "type": "git",
                 "url": "https://github.com/php-fig/log.git",
-                "reference": "6c001f1daafa3a3ac1d8ff69ee4db8e799a654dd"
+                "reference": "0f73288fd15629204f9d42b7055f72dacbe811fc"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/php-fig/log/zipball/6c001f1daafa3a3ac1d8ff69ee4db8e799a654dd",
-                "reference": "6c001f1daafa3a3ac1d8ff69ee4db8e799a654dd",
+                "url": "https://api.github.com/repos/php-fig/log/zipball/0f73288fd15629204f9d42b7055f72dacbe811fc",
+                "reference": "0f73288fd15629204f9d42b7055f72dacbe811fc",
                 "shasum": ""
             },
             "require": {
@@ -698,7 +764,7 @@
             "type": "library",
             "extra": {
                 "branch-alias": {
-                    "dev-master": "1.0.x-dev"
+                    "dev-master": "1.1.x-dev"
                 }
             },
             "autoload": {
@@ -723,20 +789,20 @@
                 "psr",
                 "psr-3"
             ],
-            "time": "2018-11-20T15:27:04+00:00"
+            "time": "2020-03-23T09:12:05+00:00"
         },
         {
             "name": "symfony/console",
-            "version": "v3.4.22",
+            "version": "v3.4.45",
             "source": {
                 "type": "git",
                 "url": "https://github.com/symfony/console.git",
-                "reference": "069bf3f0e8f871a2169a06e43d9f3f03f355e9be"
+                "reference": "b28996bc0a3b08914b2a8609163ec35b36b30685"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/symfony/console/zipball/069bf3f0e8f871a2169a06e43d9f3f03f355e9be",
-                "reference": "069bf3f0e8f871a2169a06e43d9f3f03f355e9be",
+                "url": "https://api.github.com/repos/symfony/console/zipball/b28996bc0a3b08914b2a8609163ec35b36b30685",
+                "reference": "b28996bc0a3b08914b2a8609163ec35b36b30685",
                 "shasum": ""
             },
             "require": {
@@ -795,20 +861,34 @@
             ],
             "description": "Symfony Console Component",
             "homepage": "https://symfony.com",
-            "time": "2019-01-25T10:42:12+00:00"
+            "funding": [
+                {
+                    "url": "https://symfony.com/sponsor",
+                    "type": "custom"
+                },
+                {
+                    "url": "https://github.com/fabpot",
+                    "type": "github"
+                },
+                {
+                    "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+                    "type": "tidelift"
+                }
+            ],
+            "time": "2020-09-09T05:09:37+00:00"
         },
         {
             "name": "symfony/debug",
-            "version": "v3.4.22",
+            "version": "v3.4.45",
             "source": {
                 "type": "git",
                 "url": "https://github.com/symfony/debug.git",
-                "reference": "667a26c4dd6bc75c67f06bc9bcd015bdecc7cbb8"
+                "reference": "9109e4414e684d0b75276ae203883467476d25d0"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/symfony/debug/zipball/667a26c4dd6bc75c67f06bc9bcd015bdecc7cbb8",
-                "reference": "667a26c4dd6bc75c67f06bc9bcd015bdecc7cbb8",
+                "url": "https://api.github.com/repos/symfony/debug/zipball/9109e4414e684d0b75276ae203883467476d25d0",
+                "reference": "9109e4414e684d0b75276ae203883467476d25d0",
                 "shasum": ""
             },
             "require": {
@@ -851,20 +931,34 @@
             ],
             "description": "Symfony Debug Component",
             "homepage": "https://symfony.com",
-            "time": "2019-01-25T10:19:25+00:00"
+            "funding": [
+                {
+                    "url": "https://symfony.com/sponsor",
+                    "type": "custom"
+                },
+                {
+                    "url": "https://github.com/fabpot",
+                    "type": "github"
+                },
+                {
+                    "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+                    "type": "tidelift"
+                }
+            ],
+            "time": "2020-09-08T22:19:14+00:00"
         },
         {
             "name": "symfony/event-dispatcher",
-            "version": "v3.4.22",
+            "version": "v3.4.45",
             "source": {
                 "type": "git",
                 "url": "https://github.com/symfony/event-dispatcher.git",
-                "reference": "ed5be1663fa66623b3a7004d5d51a14c4045399b"
+                "reference": "0bb9ea263b39fce3a12ac9f78ef576bdd80dacb8"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/ed5be1663fa66623b3a7004d5d51a14c4045399b",
-                "reference": "ed5be1663fa66623b3a7004d5d51a14c4045399b",
+                "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/0bb9ea263b39fce3a12ac9f78ef576bdd80dacb8",
+                "reference": "0bb9ea263b39fce3a12ac9f78ef576bdd80dacb8",
                 "shasum": ""
             },
             "require": {
@@ -876,6 +970,7 @@
             "require-dev": {
                 "psr/log": "~1.0",
                 "symfony/config": "~2.8|~3.0|~4.0",
+                "symfony/debug": "~3.4|~4.4",
                 "symfony/dependency-injection": "~3.3|~4.0",
                 "symfony/expression-language": "~2.8|~3.0|~4.0",
                 "symfony/stopwatch": "~2.8|~3.0|~4.0"
@@ -914,20 +1009,34 @@
             ],
             "description": "Symfony EventDispatcher Component",
             "homepage": "https://symfony.com",
-            "time": "2019-01-16T13:27:11+00:00"
+            "funding": [
+                {
+                    "url": "https://symfony.com/sponsor",
+                    "type": "custom"
+                },
+                {
+                    "url": "https://github.com/fabpot",
+                    "type": "github"
+                },
+                {
+                    "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+                    "type": "tidelift"
+                }
+            ],
+            "time": "2020-09-18T12:06:50+00:00"
         },
         {
             "name": "symfony/filesystem",
-            "version": "v3.4.22",
+            "version": "v3.4.45",
             "source": {
                 "type": "git",
                 "url": "https://github.com/symfony/filesystem.git",
-                "reference": "b52454ec66fe5082b7a66a491339d1f1da9a5a0d"
+                "reference": "495646f13d051cc5a8f77a68b68313dc854080aa"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/symfony/filesystem/zipball/b52454ec66fe5082b7a66a491339d1f1da9a5a0d",
-                "reference": "b52454ec66fe5082b7a66a491339d1f1da9a5a0d",
+                "url": "https://api.github.com/repos/symfony/filesystem/zipball/495646f13d051cc5a8f77a68b68313dc854080aa",
+                "reference": "495646f13d051cc5a8f77a68b68313dc854080aa",
                 "shasum": ""
             },
             "require": {
@@ -964,20 +1073,34 @@
             ],
             "description": "Symfony Filesystem Component",
             "homepage": "https://symfony.com",
-            "time": "2019-01-16T13:27:11+00:00"
+            "funding": [
+                {
+                    "url": "https://symfony.com/sponsor",
+                    "type": "custom"
+                },
+                {
+                    "url": "https://github.com/fabpot",
+                    "type": "github"
+                },
+                {
+                    "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+                    "type": "tidelift"
+                }
+            ],
+            "time": "2020-09-02T16:06:40+00:00"
         },
         {
             "name": "symfony/finder",
-            "version": "v3.4.22",
+            "version": "v3.4.45",
             "source": {
                 "type": "git",
                 "url": "https://github.com/symfony/finder.git",
-                "reference": "7c0c627220308928e958a87c293108e5891cde1d"
+                "reference": "52140652ed31cee3dabd0c481b5577201fa769b4"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/symfony/finder/zipball/7c0c627220308928e958a87c293108e5891cde1d",
-                "reference": "7c0c627220308928e958a87c293108e5891cde1d",
+                "url": "https://api.github.com/repos/symfony/finder/zipball/52140652ed31cee3dabd0c481b5577201fa769b4",
+                "reference": "52140652ed31cee3dabd0c481b5577201fa769b4",
                 "shasum": ""
             },
             "require": {
@@ -1013,20 +1136,34 @@
             ],
             "description": "Symfony Finder Component",
             "homepage": "https://symfony.com",
-            "time": "2019-01-16T13:43:35+00:00"
+            "funding": [
+                {
+                    "url": "https://symfony.com/sponsor",
+                    "type": "custom"
+                },
+                {
+                    "url": "https://github.com/fabpot",
+                    "type": "github"
+                },
+                {
+                    "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+                    "type": "tidelift"
+                }
+            ],
+            "time": "2020-09-02T16:06:40+00:00"
         },
         {
             "name": "symfony/polyfill-ctype",
-            "version": "v1.10.0",
+            "version": "v1.18.1",
             "source": {
                 "type": "git",
                 "url": "https://github.com/symfony/polyfill-ctype.git",
-                "reference": "e3d826245268269cd66f8326bd8bc066687b4a19"
+                "reference": "1c302646f6efc070cd46856e600e5e0684d6b454"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/e3d826245268269cd66f8326bd8bc066687b4a19",
-                "reference": "e3d826245268269cd66f8326bd8bc066687b4a19",
+                "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/1c302646f6efc070cd46856e600e5e0684d6b454",
+                "reference": "1c302646f6efc070cd46856e600e5e0684d6b454",
                 "shasum": ""
             },
             "require": {
@@ -1038,7 +1175,11 @@
             "type": "library",
             "extra": {
                 "branch-alias": {
-                    "dev-master": "1.9-dev"
+                    "dev-master": "1.18-dev"
+                },
+                "thanks": {
+                    "name": "symfony/polyfill",
+                    "url": "https://github.com/symfony/polyfill"
                 }
             },
             "autoload": {
@@ -1054,13 +1195,13 @@
                 "MIT"
             ],
             "authors": [
-                {
-                    "name": "Symfony Community",
-                    "homepage": "https://symfony.com/contributors"
-                },
                 {
                     "name": "Gert de Pagter",
                     "email": "BackEndTea@gmail.com"
+                },
+                {
+                    "name": "Symfony Community",
+                    "homepage": "https://symfony.com/contributors"
                 }
             ],
             "description": "Symfony polyfill for ctype functions",
@@ -1071,20 +1212,34 @@
                 "polyfill",
                 "portable"
             ],
-            "time": "2018-08-06T14:22:27+00:00"
+            "funding": [
+                {
+                    "url": "https://symfony.com/sponsor",
+                    "type": "custom"
+                },
+                {
+                    "url": "https://github.com/fabpot",
+                    "type": "github"
+                },
+                {
+                    "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+                    "type": "tidelift"
+                }
+            ],
+            "time": "2020-07-14T12:35:20+00:00"
         },
         {
             "name": "symfony/polyfill-mbstring",
-            "version": "v1.10.0",
+            "version": "v1.18.1",
             "source": {
                 "type": "git",
                 "url": "https://github.com/symfony/polyfill-mbstring.git",
-                "reference": "c79c051f5b3a46be09205c73b80b346e4153e494"
+                "reference": "a6977d63bf9a0ad4c65cd352709e230876f9904a"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/c79c051f5b3a46be09205c73b80b346e4153e494",
-                "reference": "c79c051f5b3a46be09205c73b80b346e4153e494",
+                "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/a6977d63bf9a0ad4c65cd352709e230876f9904a",
+                "reference": "a6977d63bf9a0ad4c65cd352709e230876f9904a",
                 "shasum": ""
             },
             "require": {
@@ -1096,7 +1251,11 @@
             "type": "library",
             "extra": {
                 "branch-alias": {
-                    "dev-master": "1.9-dev"
+                    "dev-master": "1.18-dev"
+                },
+                "thanks": {
+                    "name": "symfony/polyfill",
+                    "url": "https://github.com/symfony/polyfill"
                 }
             },
             "autoload": {
@@ -1130,20 +1289,34 @@
                 "portable",
                 "shim"
             ],
-            "time": "2018-09-21T13:07:52+00:00"
+            "funding": [
+                {
+                    "url": "https://symfony.com/sponsor",
+                    "type": "custom"
+                },
+                {
+                    "url": "https://github.com/fabpot",
+                    "type": "github"
+                },
+                {
+                    "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+                    "type": "tidelift"
+                }
+            ],
+            "time": "2020-07-14T12:35:20+00:00"
         },
         {
             "name": "symfony/process",
-            "version": "v3.4.22",
+            "version": "v3.4.45",
             "source": {
                 "type": "git",
                 "url": "https://github.com/symfony/process.git",
-                "reference": "009f8dda80930e89e8344a4e310b08f9ff07dd2e"
+                "reference": "46a862d0f334e51c1ed831b49cbe12863ffd5475"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/symfony/process/zipball/009f8dda80930e89e8344a4e310b08f9ff07dd2e",
-                "reference": "009f8dda80930e89e8344a4e310b08f9ff07dd2e",
+                "url": "https://api.github.com/repos/symfony/process/zipball/46a862d0f334e51c1ed831b49cbe12863ffd5475",
+                "reference": "46a862d0f334e51c1ed831b49cbe12863ffd5475",
                 "shasum": ""
             },
             "require": {
@@ -1179,20 +1352,34 @@
             ],
             "description": "Symfony Process Component",
             "homepage": "https://symfony.com",
-            "time": "2019-01-16T13:27:11+00:00"
+            "funding": [
+                {
+                    "url": "https://symfony.com/sponsor",
+                    "type": "custom"
+                },
+                {
+                    "url": "https://github.com/fabpot",
+                    "type": "github"
+                },
+                {
+                    "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+                    "type": "tidelift"
+                }
+            ],
+            "time": "2020-09-02T16:06:40+00:00"
         },
         {
             "name": "symfony/yaml",
-            "version": "v3.4.22",
+            "version": "v3.4.45",
             "source": {
                 "type": "git",
                 "url": "https://github.com/symfony/yaml.git",
-                "reference": "ba11776e9e6c15ad5759a07bffb15899bac75c2d"
+                "reference": "ec3c2ac4d881a4684c1f0317d2107f1a4152bad9"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/symfony/yaml/zipball/ba11776e9e6c15ad5759a07bffb15899bac75c2d",
-                "reference": "ba11776e9e6c15ad5759a07bffb15899bac75c2d",
+                "url": "https://api.github.com/repos/symfony/yaml/zipball/ec3c2ac4d881a4684c1f0317d2107f1a4152bad9",
+                "reference": "ec3c2ac4d881a4684c1f0317d2107f1a4152bad9",
                 "shasum": ""
             },
             "require": {
@@ -1238,44 +1425,57 @@
             ],
             "description": "Symfony Yaml Component",
             "homepage": "https://symfony.com",
-            "time": "2019-01-16T10:59:17+00:00"
+            "funding": [
+                {
+                    "url": "https://symfony.com/sponsor",
+                    "type": "custom"
+                },
+                {
+                    "url": "https://github.com/fabpot",
+                    "type": "github"
+                },
+                {
+                    "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+                    "type": "tidelift"
+                }
+            ],
+            "time": "2020-09-18T15:58:55+00:00"
         }
     ],
     "packages-dev": [
         {
-            "name": "behat/gherkin",
-            "version": "v4.6.0",
+            "name": "doctrine/instantiator",
+            "version": "1.0.5",
             "source": {
                 "type": "git",
-                "url": "https://github.com/Behat/Gherkin.git",
-                "reference": "ab0a02ea14893860bca00f225f5621d351a3ad07"
+                "url": "https://github.com/doctrine/instantiator.git",
+                "reference": "8e884e78f9f0eb1329e445619e04456e64d8051d"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/Behat/Gherkin/zipball/ab0a02ea14893860bca00f225f5621d351a3ad07",
-                "reference": "ab0a02ea14893860bca00f225f5621d351a3ad07",
+                "url": "https://api.github.com/repos/doctrine/instantiator/zipball/8e884e78f9f0eb1329e445619e04456e64d8051d",
+                "reference": "8e884e78f9f0eb1329e445619e04456e64d8051d",
                 "shasum": ""
             },
             "require": {
-                "php": ">=5.3.1"
+                "php": ">=5.3,<8.0-DEV"
             },
             "require-dev": {
-                "phpunit/phpunit": "~4.5|~5",
-                "symfony/phpunit-bridge": "~2.7|~3|~4",
-                "symfony/yaml": "~2.3|~3|~4"
-            },
-            "suggest": {
-                "symfony/yaml": "If you want to parse features, represented in YAML files"
+                "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": "4.4-dev"
+                    "dev-master": "1.0.x-dev"
                 }
             },
             "autoload": {
-                "psr-0": {
-                    "Behat\\Gherkin": "src/"
+                "psr-4": {
+                    "Doctrine\\Instantiator\\": "src/Doctrine/Instantiator/"
                 }
             },
             "notification-url": "https://packagist.org/downloads/",
@@ -1284,51 +1484,56 @@
             ],
             "authors": [
                 {
-                    "name": "Konstantin Kudryashov",
-                    "email": "ever.zet@gmail.com",
-                    "homepage": "http://everzet.com"
+                    "name": "Marco Pivetta",
+                    "email": "ocramius@gmail.com",
+                    "homepage": "http://ocramius.github.com/"
                 }
             ],
-            "description": "Gherkin DSL parser for PHP 5.3",
-            "homepage": "http://behat.org/",
+            "description": "A small, lightweight utility to instantiate objects in PHP without invoking their constructors",
+            "homepage": "https://github.com/doctrine/instantiator",
             "keywords": [
-                "BDD",
-                "Behat",
-                "Cucumber",
-                "DSL",
-                "gherkin",
-                "parser"
-            ],
-            "time": "2019-01-16T14:22:17+00:00"
+                "constructor",
+                "instantiate"
+            ],
+            "time": "2015-06-14T21:17:01+00:00"
         },
         {
-            "name": "codeception/aspect-mock",
-            "version": "2.1.1",
+            "name": "g1a/composer-test-scenarios",
+            "version": "3.2.0",
             "source": {
                 "type": "git",
-                "url": "https://github.com/Codeception/AspectMock.git",
-                "reference": "bf3c000599c0dc75ecb52e19dee2b8ed294cf7ba"
+                "url": "https://github.com/g1a/composer-test-scenarios.git",
+                "reference": "e7394206d845fd593d325440507fb940bef8cb62"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/Codeception/AspectMock/zipball/bf3c000599c0dc75ecb52e19dee2b8ed294cf7ba",
-                "reference": "bf3c000599c0dc75ecb52e19dee2b8ed294cf7ba",
+                "url": "https://api.github.com/repos/g1a/composer-test-scenarios/zipball/e7394206d845fd593d325440507fb940bef8cb62",
+                "reference": "e7394206d845fd593d325440507fb940bef8cb62",
                 "shasum": ""
             },
             "require": {
-                "goaop/framework": "^2.0.0",
-                "php": ">=5.6.0",
-                "symfony/finder": "~2.4|~3.0"
+                "composer-plugin-api": "^1.0.0 || ^2.0.0",
+                "php": ">=5.4"
             },
             "require-dev": {
-                "codeception/base": "~2.1",
-                "codeception/specify": "~0.3",
-                "codeception/verify": "~0.2"
+                "composer/composer": "^1.10.6 || ^2.0@rc",
+                "php-coveralls/php-coveralls": "^1.0",
+                "phpunit/phpunit": "^4.8.36|^6",
+                "squizlabs/php_codesniffer": "^3.5"
+            },
+            "bin": [
+                "scripts/dependency-licenses"
+            ],
+            "type": "composer-plugin",
+            "extra": {
+                "class": "ComposerTestScenarios\\Plugin",
+                "branch-alias": {
+                    "dev-main": "3.x-dev"
+                }
             },
-            "type": "library",
             "autoload": {
-                "psr-0": {
-                    "AspectMock": "src/"
+                "psr-4": {
+                    "ComposerTestScenarios\\": "src/"
                 }
             },
             "notification-url": "https://packagist.org/downloads/",
@@ -1337,79 +1542,75 @@
             ],
             "authors": [
                 {
-                    "name": "Michael Bodnarchuk",
-                    "email": "davert@codeception.com"
+                    "name": "Greg Anderson",
+                    "email": "greg.1.anderson@greenknowe.org"
                 }
             ],
-            "description": "Experimental Mocking Framework powered by Aspects",
-            "time": "2017-10-24T10:20:17+00:00"
+            "description": "Useful scripts for testing multiple sets of Composer dependencies.",
+            "time": "2020-09-28T20:54:35+00:00"
         },
         {
-            "name": "codeception/base",
-            "version": "2.5.3",
+            "name": "guzzle/guzzle",
+            "version": "v3.8.1",
             "source": {
                 "type": "git",
-                "url": "https://github.com/Codeception/base.git",
-                "reference": "ceff0b4fee4846b6bd8b5a37abbbb1acd6e78f58"
+                "url": "https://github.com/guzzle/guzzle.git",
+                "reference": "4de0618a01b34aa1c8c33a3f13f396dcd3882eba"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/Codeception/base/zipball/ceff0b4fee4846b6bd8b5a37abbbb1acd6e78f58",
-                "reference": "ceff0b4fee4846b6bd8b5a37abbbb1acd6e78f58",
+                "url": "https://api.github.com/repos/guzzle/guzzle/zipball/4de0618a01b34aa1c8c33a3f13f396dcd3882eba",
+                "reference": "4de0618a01b34aa1c8c33a3f13f396dcd3882eba",
                 "shasum": ""
             },
             "require": {
-                "behat/gherkin": "^4.4.0",
-                "codeception/phpunit-wrapper": "^6.0.9|^7.0.6",
-                "codeception/stub": "^2.0",
                 "ext-curl": "*",
-                "ext-json": "*",
-                "ext-mbstring": "*",
-                "guzzlehttp/psr7": "~1.0",
-                "php": ">=5.6.0 <8.0",
-                "symfony/browser-kit": ">=2.7 <5.0",
-                "symfony/console": ">=2.7 <5.0",
-                "symfony/css-selector": ">=2.7 <5.0",
-                "symfony/dom-crawler": ">=2.7 <5.0",
-                "symfony/event-dispatcher": ">=2.7 <5.0",
-                "symfony/finder": ">=2.7 <5.0",
-                "symfony/yaml": ">=2.7 <5.0"
+                "php": ">=5.3.3",
+                "symfony/event-dispatcher": ">=2.1"
             },
-            "require-dev": {
-                "codeception/specify": "~0.3",
-                "facebook/graph-sdk": "~5.3",
-                "flow/jsonpath": "~0.2",
-                "monolog/monolog": "~1.8",
-                "pda/pheanstalk": "~3.0",
-                "php-amqplib/php-amqplib": "~2.4",
-                "predis/predis": "^1.0",
-                "squizlabs/php_codesniffer": "~2.0",
-                "symfony/process": ">=2.7 <5.0",
-                "vlucas/phpdotenv": "^3.0"
+            "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"
             },
-            "suggest": {
-                "aws/aws-sdk-php": "For using AWS Auth in REST module and Queue module",
-                "codeception/phpbuiltinserver": "Start and stop PHP built-in web server for your tests",
-                "codeception/specify": "BDD-style code blocks",
-                "codeception/verify": "BDD-style assertions",
-                "flow/jsonpath": "For using JSONPath in REST module",
-                "league/factory-muffin": "For DataFactory module",
-                "league/factory-muffin-faker": "For Faker support in DataFactory module",
-                "phpseclib/phpseclib": "for SFTP option in FTP Module",
-                "stecman/symfony-console-completion": "For BASH autocompletion",
-                "symfony/phpunit-bridge": "For phpunit-bridge support"
+            "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"
             },
-            "bin": [
-                "codecept"
-            ],
             "type": "library",
             "extra": {
-                "branch-alias": []
+                "branch-alias": {
+                    "dev-master": "3.8-dev"
+                }
             },
             "autoload": {
-                "psr-4": {
-                    "Codeception\\": "src/Codeception",
-                    "Codeception\\Extension\\": "ext"
+                "psr-0": {
+                    "Guzzle": "src/",
+                    "Guzzle\\Tests": "tests/"
                 }
             },
             "notification-url": "https://packagist.org/downloads/",
@@ -1418,557 +1619,17 @@
             ],
             "authors": [
                 {
-                    "name": "Michael Bodnarchuk",
-                    "email": "davert@mail.ua",
-                    "homepage": "http://codegyre.com"
+                    "name": "Michael Dowling",
+                    "email": "mtdowling@gmail.com",
+                    "homepage": "https://github.com/mtdowling"
+                },
+                {
+                    "name": "Guzzle Community",
+                    "homepage": "https://github.com/guzzle/guzzle/contributors"
                 }
             ],
-            "description": "BDD-style testing framework",
-            "homepage": "http://codeception.com/",
-            "keywords": [
-                "BDD",
-                "TDD",
-                "acceptance testing",
-                "functional testing",
-                "unit testing"
-            ],
-            "time": "2019-02-02T16:29:38+00:00"
-        },
-        {
-            "name": "codeception/phpunit-wrapper",
-            "version": "6.0.14",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/Codeception/phpunit-wrapper.git",
-                "reference": "3b64beb0af3e63145af982e64718ab80d2417739"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/Codeception/phpunit-wrapper/zipball/3b64beb0af3e63145af982e64718ab80d2417739",
-                "reference": "3b64beb0af3e63145af982e64718ab80d2417739",
-                "shasum": ""
-            },
-            "require": {
-                "phpunit/php-code-coverage": ">=4.0.4 <6.0",
-                "phpunit/phpunit": ">=5.7.27 <6.5.13",
-                "sebastian/comparator": ">=1.2.4 <3.0",
-                "sebastian/diff": ">=1.4 <4.0"
-            },
-            "replace": {
-                "codeception/phpunit-wrapper": "*"
-            },
-            "require-dev": {
-                "codeception/specify": "*",
-                "vlucas/phpdotenv": "^2.4"
-            },
-            "type": "library",
-            "autoload": {
-                "psr-4": {
-                    "Codeception\\PHPUnit\\": "src\\"
-                }
-            },
-            "notification-url": "https://packagist.org/downloads/",
-            "license": [
-                "MIT"
-            ],
-            "authors": [
-                {
-                    "name": "Davert",
-                    "email": "davert.php@resend.cc"
-                }
-            ],
-            "description": "PHPUnit classes used by Codeception",
-            "time": "2019-01-13T10:35:17+00:00"
-        },
-        {
-            "name": "codeception/stub",
-            "version": "2.0.4",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/Codeception/Stub.git",
-                "reference": "f50bc271f392a2836ff80690ce0c058efe1ae03e"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/Codeception/Stub/zipball/f50bc271f392a2836ff80690ce0c058efe1ae03e",
-                "reference": "f50bc271f392a2836ff80690ce0c058efe1ae03e",
-                "shasum": ""
-            },
-            "require": {
-                "phpunit/phpunit": ">=4.8 <8.0"
-            },
-            "type": "library",
-            "autoload": {
-                "psr-4": {
-                    "Codeception\\": "src/"
-                }
-            },
-            "notification-url": "https://packagist.org/downloads/",
-            "license": [
-                "MIT"
-            ],
-            "description": "Flexible Stub wrapper for PHPUnit's Mock Builder",
-            "time": "2018-07-26T11:55:37+00:00"
-        },
-        {
-            "name": "codeception/verify",
-            "version": "0.3.3",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/Codeception/Verify.git",
-                "reference": "5d649dda453cd814dadc4bb053060cd2c6bb4b4c"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/Codeception/Verify/zipball/5d649dda453cd814dadc4bb053060cd2c6bb4b4c",
-                "reference": "5d649dda453cd814dadc4bb053060cd2c6bb4b4c",
-                "shasum": ""
-            },
-            "require-dev": {
-                "phpunit/phpunit": "~4.0"
-            },
-            "type": "library",
-            "autoload": {
-                "files": [
-                    "src/Codeception/function.php"
-                ]
-            },
-            "notification-url": "https://packagist.org/downloads/",
-            "license": [
-                "MIT"
-            ],
-            "authors": [
-                {
-                    "name": "Michael Bodnarchuk",
-                    "email": "davert.php@mailican.com"
-                }
-            ],
-            "description": "BDD assertion library for PHPUnit",
-            "time": "2017-01-09T10:58:51+00:00"
-        },
-        {
-            "name": "doctrine/annotations",
-            "version": "v1.4.0",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/doctrine/annotations.git",
-                "reference": "54cacc9b81758b14e3ce750f205a393d52339e97"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/doctrine/annotations/zipball/54cacc9b81758b14e3ce750f205a393d52339e97",
-                "reference": "54cacc9b81758b14e3ce750f205a393d52339e97",
-                "shasum": ""
-            },
-            "require": {
-                "doctrine/lexer": "1.*",
-                "php": "^5.6 || ^7.0"
-            },
-            "require-dev": {
-                "doctrine/cache": "1.*",
-                "phpunit/phpunit": "^5.7"
-            },
-            "type": "library",
-            "extra": {
-                "branch-alias": {
-                    "dev-master": "1.4.x-dev"
-                }
-            },
-            "autoload": {
-                "psr-4": {
-                    "Doctrine\\Common\\Annotations\\": "lib/Doctrine/Common/Annotations"
-                }
-            },
-            "notification-url": "https://packagist.org/downloads/",
-            "license": [
-                "MIT"
-            ],
-            "authors": [
-                {
-                    "name": "Roman Borschel",
-                    "email": "roman@code-factory.org"
-                },
-                {
-                    "name": "Benjamin Eberlei",
-                    "email": "kontakt@beberlei.de"
-                },
-                {
-                    "name": "Guilherme Blanco",
-                    "email": "guilhermeblanco@gmail.com"
-                },
-                {
-                    "name": "Jonathan Wage",
-                    "email": "jonwage@gmail.com"
-                },
-                {
-                    "name": "Johannes Schmitt",
-                    "email": "schmittjoh@gmail.com"
-                }
-            ],
-            "description": "Docblock Annotations Parser",
-            "homepage": "http://www.doctrine-project.org",
-            "keywords": [
-                "annotations",
-                "docblock",
-                "parser"
-            ],
-            "time": "2017-02-24T16:22:25+00:00"
-        },
-        {
-            "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": "doctrine/lexer",
-            "version": "v1.0.1",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/doctrine/lexer.git",
-                "reference": "83893c552fd2045dd78aef794c31e694c37c0b8c"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/doctrine/lexer/zipball/83893c552fd2045dd78aef794c31e694c37c0b8c",
-                "reference": "83893c552fd2045dd78aef794c31e694c37c0b8c",
-                "shasum": ""
-            },
-            "require": {
-                "php": ">=5.3.2"
-            },
-            "type": "library",
-            "extra": {
-                "branch-alias": {
-                    "dev-master": "1.0.x-dev"
-                }
-            },
-            "autoload": {
-                "psr-0": {
-                    "Doctrine\\Common\\Lexer\\": "lib/"
-                }
-            },
-            "notification-url": "https://packagist.org/downloads/",
-            "license": [
-                "MIT"
-            ],
-            "authors": [
-                {
-                    "name": "Roman Borschel",
-                    "email": "roman@code-factory.org"
-                },
-                {
-                    "name": "Guilherme Blanco",
-                    "email": "guilhermeblanco@gmail.com"
-                },
-                {
-                    "name": "Johannes Schmitt",
-                    "email": "schmittjoh@gmail.com"
-                }
-            ],
-            "description": "Base library for a lexer that can be used in Top-Down, Recursive Descent Parsers.",
-            "homepage": "http://www.doctrine-project.org",
-            "keywords": [
-                "lexer",
-                "parser"
-            ],
-            "time": "2014-09-09T13:34:57+00:00"
-        },
-        {
-            "name": "g1a/composer-test-scenarios",
-            "version": "3.0.2",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/g1a/composer-test-scenarios.git",
-                "reference": "28f932580981e912ab8f01d15788f1dee06550c8"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/g1a/composer-test-scenarios/zipball/28f932580981e912ab8f01d15788f1dee06550c8",
-                "reference": "28f932580981e912ab8f01d15788f1dee06550c8",
-                "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": "2019-02-11T20:22:44+00:00"
-        },
-        {
-            "name": "goaop/framework",
-            "version": "2.1.2",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/goaop/framework.git",
-                "reference": "6e2a0fe13c1943db02a67588cfd27692bddaffa5"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/goaop/framework/zipball/6e2a0fe13c1943db02a67588cfd27692bddaffa5",
-                "reference": "6e2a0fe13c1943db02a67588cfd27692bddaffa5",
-                "shasum": ""
-            },
-            "require": {
-                "doctrine/annotations": "~1.0",
-                "goaop/parser-reflection": "~1.2",
-                "jakubledl/dissect": "~1.0",
-                "php": ">=5.6.0"
-            },
-            "require-dev": {
-                "adlawson/vfs": "^0.12",
-                "doctrine/orm": "^2.5",
-                "phpunit/phpunit": "^4.8",
-                "symfony/console": "^2.7|^3.0"
-            },
-            "suggest": {
-                "symfony/console": "Enables the usage of the command-line tool."
-            },
-            "bin": [
-                "bin/aspect"
-            ],
-            "type": "library",
-            "extra": {
-                "branch-alias": {
-                    "dev-master": "2.0-dev"
-                }
-            },
-            "autoload": {
-                "psr-4": {
-                    "Go\\": "src/"
-                }
-            },
-            "notification-url": "https://packagist.org/downloads/",
-            "license": [
-                "MIT"
-            ],
-            "authors": [
-                {
-                    "name": "Lisachenko Alexander",
-                    "homepage": "https://github.com/lisachenko"
-                }
-            ],
-            "description": "Framework for aspect-oriented programming in PHP.",
-            "homepage": "http://go.aopphp.com/",
-            "keywords": [
-                "aop",
-                "aspect",
-                "library",
-                "php"
-            ],
-            "time": "2017-07-12T11:46:25+00:00"
-        },
-        {
-            "name": "goaop/parser-reflection",
-            "version": "1.4.1",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/goaop/parser-reflection.git",
-                "reference": "d9c1dcc7ce4a5284fe3530e011faf9c9c10e1166"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/goaop/parser-reflection/zipball/d9c1dcc7ce4a5284fe3530e011faf9c9c10e1166",
-                "reference": "d9c1dcc7ce4a5284fe3530e011faf9c9c10e1166",
-                "shasum": ""
-            },
-            "require": {
-                "nikic/php-parser": "^1.2|^2.0|^3.0",
-                "php": ">=5.6.0"
-            },
-            "require-dev": {
-                "phpunit/phpunit": "~4.0"
-            },
-            "type": "library",
-            "extra": {
-                "branch-alias": {
-                    "dev-master": "1.x-dev"
-                }
-            },
-            "autoload": {
-                "psr-4": {
-                    "Go\\ParserReflection\\": "src"
-                },
-                "files": [
-                    "src/bootstrap.php"
-                ],
-                "exclude-from-classmap": [
-                    "/tests/"
-                ]
-            },
-            "notification-url": "https://packagist.org/downloads/",
-            "license": [
-                "MIT"
-            ],
-            "authors": [
-                {
-                    "name": "Alexander Lisachenko",
-                    "email": "lisachenko.it@gmail.com"
-                }
-            ],
-            "description": "Provides reflection information, based on raw source",
-            "time": "2018-03-19T15:57:41+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/",
+            "description": "Guzzle is a PHP HTTP client library and framework for building RESTful web service clients",
+            "homepage": "http://guzzlephp.org/",
             "keywords": [
                 "client",
                 "curl",
@@ -1981,128 +1642,6 @@
             "abandoned": "guzzlehttp/guzzle",
             "time": "2014-01-28T22:29:15+00:00"
         },
-        {
-            "name": "guzzlehttp/psr7",
-            "version": "1.5.2",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/guzzle/psr7.git",
-                "reference": "9f83dded91781a01c63574e387eaa769be769115"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/guzzle/psr7/zipball/9f83dded91781a01c63574e387eaa769be769115",
-                "reference": "9f83dded91781a01c63574e387eaa769be769115",
-                "shasum": ""
-            },
-            "require": {
-                "php": ">=5.4.0",
-                "psr/http-message": "~1.0",
-                "ralouphie/getallheaders": "^2.0.5"
-            },
-            "provide": {
-                "psr/http-message-implementation": "1.0"
-            },
-            "require-dev": {
-                "phpunit/phpunit": "~4.8.36 || ^5.7.27 || ^6.5.8"
-            },
-            "type": "library",
-            "extra": {
-                "branch-alias": {
-                    "dev-master": "1.5-dev"
-                }
-            },
-            "autoload": {
-                "psr-4": {
-                    "GuzzleHttp\\Psr7\\": "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"
-                },
-                {
-                    "name": "Tobias Schultze",
-                    "homepage": "https://github.com/Tobion"
-                }
-            ],
-            "description": "PSR-7 message implementation that also provides common utility methods",
-            "keywords": [
-                "http",
-                "message",
-                "psr-7",
-                "request",
-                "response",
-                "stream",
-                "uri",
-                "url"
-            ],
-            "time": "2018-12-04T20:46:45+00:00"
-        },
-        {
-            "name": "jakubledl/dissect",
-            "version": "v1.0.1",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/jakubledl/dissect.git",
-                "reference": "d3a391de31e45a247e95cef6cf58a91c05af67c4"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/jakubledl/dissect/zipball/d3a391de31e45a247e95cef6cf58a91c05af67c4",
-                "reference": "d3a391de31e45a247e95cef6cf58a91c05af67c4",
-                "shasum": ""
-            },
-            "require": {
-                "php": ">=5.3.3"
-            },
-            "require-dev": {
-                "symfony/console": "~2.1"
-            },
-            "suggest": {
-                "symfony/console": "for the command-line tool"
-            },
-            "bin": [
-                "bin/dissect.php",
-                "bin/dissect"
-            ],
-            "type": "library",
-            "autoload": {
-                "psr-0": {
-                    "Dissect": [
-                        "src/"
-                    ]
-                }
-            },
-            "notification-url": "https://packagist.org/downloads/",
-            "license": [
-                "unlicense"
-            ],
-            "authors": [
-                {
-                    "name": "Jakub Lédl",
-                    "email": "jakubledl@gmail.com"
-                }
-            ],
-            "description": "Lexing and parsing in pure PHP",
-            "homepage": "https://github.com/jakubledl/dissect",
-            "keywords": [
-                "ast",
-                "lexing",
-                "parser",
-                "parsing"
-            ],
-            "time": "2013-01-29T21:29:14+00:00"
-        },
         {
             "name": "myclabs/deep-copy",
             "version": "1.7.0",
@@ -2144,81 +1683,27 @@
                 "copy",
                 "duplicate",
                 "object",
-                "object graph"
-            ],
-            "time": "2017-10-19T19:58:43+00:00"
-        },
-        {
-            "name": "natxet/CssMin",
-            "version": "v3.0.4",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/natxet/CssMin.git",
-                "reference": "92de3fe3ccb4f8298d31952490ef7d5395855c39"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/natxet/CssMin/zipball/92de3fe3ccb4f8298d31952490ef7d5395855c39",
-                "reference": "92de3fe3ccb4f8298d31952490ef7d5395855c39",
-                "shasum": ""
-            },
-            "require": {
-                "php": ">=5.0"
-            },
-            "type": "library",
-            "extra": {
-                "branch-alias": {
-                    "dev-master": "3.0-dev"
-                }
-            },
-            "autoload": {
-                "classmap": [
-                    "src/"
-                ]
-            },
-            "notification-url": "https://packagist.org/downloads/",
-            "license": [
-                "MIT"
-            ],
-            "authors": [
-                {
-                    "name": "Joe Scylla",
-                    "email": "joe.scylla@gmail.com",
-                    "homepage": "https://profiles.google.com/joe.scylla"
-                }
-            ],
-            "description": "Minifying CSS",
-            "homepage": "http://code.google.com/p/cssmin/",
-            "keywords": [
-                "css",
-                "minify"
+                "object graph"
             ],
-            "time": "2015-09-25T11:13:11+00:00"
+            "time": "2017-10-19T19:58:43+00:00"
         },
         {
-            "name": "nikic/php-parser",
-            "version": "v3.1.5",
+            "name": "natxet/cssmin",
+            "version": "v3.0.4",
             "source": {
                 "type": "git",
-                "url": "https://github.com/nikic/PHP-Parser.git",
-                "reference": "bb87e28e7d7b8d9a7fda231d37457c9210faf6ce"
+                "url": "https://github.com/natxet/CssMin.git",
+                "reference": "92de3fe3ccb4f8298d31952490ef7d5395855c39"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/bb87e28e7d7b8d9a7fda231d37457c9210faf6ce",
-                "reference": "bb87e28e7d7b8d9a7fda231d37457c9210faf6ce",
+                "url": "https://api.github.com/repos/natxet/CssMin/zipball/92de3fe3ccb4f8298d31952490ef7d5395855c39",
+                "reference": "92de3fe3ccb4f8298d31952490ef7d5395855c39",
                 "shasum": ""
             },
             "require": {
-                "ext-tokenizer": "*",
-                "php": ">=5.5"
-            },
-            "require-dev": {
-                "phpunit/phpunit": "~4.0|~5.0"
+                "php": ">=5.0"
             },
-            "bin": [
-                "bin/php-parse"
-            ],
             "type": "library",
             "extra": {
                 "branch-alias": {
@@ -2226,25 +1711,28 @@
                 }
             },
             "autoload": {
-                "psr-4": {
-                    "PhpParser\\": "lib/PhpParser"
-                }
+                "classmap": [
+                    "src/"
+                ]
             },
             "notification-url": "https://packagist.org/downloads/",
             "license": [
-                "BSD-3-Clause"
+                "MIT"
             ],
             "authors": [
                 {
-                    "name": "Nikita Popov"
+                    "name": "Joe Scylla",
+                    "email": "joe.scylla@gmail.com",
+                    "homepage": "https://profiles.google.com/joe.scylla"
                 }
             ],
-            "description": "A PHP parser written in PHP",
+            "description": "Minifying CSS",
+            "homepage": "http://code.google.com/p/cssmin/",
             "keywords": [
-                "parser",
-                "php"
+                "css",
+                "minify"
             ],
-            "time": "2018-02-28T20:30:58+00:00"
+            "time": "2015-09-25T11:13:11+00:00"
         },
         {
             "name": "patchwork/jsqueeze",
@@ -2291,20 +1779,21 @@
                 "javascript",
                 "minification"
             ],
+            "abandoned": true,
             "time": "2016-04-19T09:28:22+00:00"
         },
         {
             "name": "pear/archive_tar",
-            "version": "1.4.6",
+            "version": "1.4.10",
             "source": {
                 "type": "git",
                 "url": "https://github.com/pear/Archive_Tar.git",
-                "reference": "b8e33f9063a7cd1d20f079014f8382b3a7aee47e"
+                "reference": "bbb4f10f71a1da2715ec6d9a683f4f23c507a49b"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/pear/Archive_Tar/zipball/b8e33f9063a7cd1d20f079014f8382b3a7aee47e",
-                "reference": "b8e33f9063a7cd1d20f079014f8382b3a7aee47e",
+                "url": "https://api.github.com/repos/pear/Archive_Tar/zipball/bbb4f10f71a1da2715ec6d9a683f4f23c507a49b",
+                "reference": "bbb4f10f71a1da2715ec6d9a683f4f23c507a49b",
                 "shasum": ""
             },
             "require": {
@@ -2357,20 +1846,20 @@
                 "archive",
                 "tar"
             ],
-            "time": "2019-02-01T11:10:38+00:00"
+            "time": "2020-09-15T14:13:23+00:00"
         },
         {
             "name": "pear/console_getopt",
-            "version": "v1.4.2",
+            "version": "v1.4.3",
             "source": {
                 "type": "git",
                 "url": "https://github.com/pear/Console_Getopt.git",
-                "reference": "6c77aeb625b32bd752e89ee17972d103588b90c0"
+                "reference": "a41f8d3e668987609178c7c4a9fe48fecac53fa0"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/pear/Console_Getopt/zipball/6c77aeb625b32bd752e89ee17972d103588b90c0",
-                "reference": "6c77aeb625b32bd752e89ee17972d103588b90c0",
+                "url": "https://api.github.com/repos/pear/Console_Getopt/zipball/a41f8d3e668987609178c7c4a9fe48fecac53fa0",
+                "reference": "a41f8d3e668987609178c7c4a9fe48fecac53fa0",
                 "shasum": ""
             },
             "type": "library",
@@ -2387,11 +1876,6 @@
                 "BSD-2-Clause"
             ],
             "authors": [
-                {
-                    "name": "Greg Beaver",
-                    "email": "cellog@php.net",
-                    "role": "Helper"
-                },
                 {
                     "name": "Andrei Zmievski",
                     "email": "andrei@php.net",
@@ -2401,23 +1885,28 @@
                     "name": "Stig Bakken",
                     "email": "stig@php.net",
                     "role": "Developer"
+                },
+                {
+                    "name": "Greg Beaver",
+                    "email": "cellog@php.net",
+                    "role": "Helper"
                 }
             ],
             "description": "More info available on: http://pear.php.net/package/Console_Getopt",
-            "time": "2019-02-06T16:52:33+00:00"
+            "time": "2019-11-20T18:27:48+00:00"
         },
         {
             "name": "pear/pear-core-minimal",
-            "version": "v1.10.7",
+            "version": "v1.10.10",
             "source": {
                 "type": "git",
                 "url": "https://github.com/pear/pear-core-minimal.git",
-                "reference": "19a3e0fcd50492c4357372f623f55f1b144346da"
+                "reference": "625a3c429d9b2c1546438679074cac1b089116a7"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/pear/pear-core-minimal/zipball/19a3e0fcd50492c4357372f623f55f1b144346da",
-                "reference": "19a3e0fcd50492c4357372f623f55f1b144346da",
+                "url": "https://api.github.com/repos/pear/pear-core-minimal/zipball/625a3c429d9b2c1546438679074cac1b089116a7",
+                "reference": "625a3c429d9b2c1546438679074cac1b089116a7",
                 "shasum": ""
             },
             "require": {
@@ -2448,20 +1937,20 @@
                 }
             ],
             "description": "Minimal set of PEAR core files to be used as composer dependency",
-            "time": "2018-12-05T20:03:52+00:00"
+            "time": "2019-11-19T19:00:24+00:00"
         },
         {
             "name": "pear/pear_exception",
-            "version": "v1.0.0",
+            "version": "v1.0.1",
             "source": {
                 "type": "git",
                 "url": "https://github.com/pear/PEAR_Exception.git",
-                "reference": "8c18719fdae000b690e3912be401c76e406dd13b"
+                "reference": "dbb42a5a0e45f3adcf99babfb2a1ba77b8ac36a7"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/pear/PEAR_Exception/zipball/8c18719fdae000b690e3912be401c76e406dd13b",
-                "reference": "8c18719fdae000b690e3912be401c76e406dd13b",
+                "url": "https://api.github.com/repos/pear/PEAR_Exception/zipball/dbb42a5a0e45f3adcf99babfb2a1ba77b8ac36a7",
+                "reference": "dbb42a5a0e45f3adcf99babfb2a1ba77b8ac36a7",
                 "shasum": ""
             },
             "require": {
@@ -2477,9 +1966,9 @@
                 }
             },
             "autoload": {
-                "psr-0": {
-                    "PEAR": ""
-                }
+                "classmap": [
+                    "PEAR/"
+                ]
             },
             "notification-url": "https://packagist.org/downloads/",
             "include-path": [
@@ -2503,7 +1992,7 @@
             "keywords": [
                 "exception"
             ],
-            "time": "2015-02-10T20:07:52+00:00"
+            "time": "2019-12-10T10:24:42+00:00"
         },
         {
             "name": "php-coveralls/php-coveralls",
@@ -2714,38 +2203,38 @@
         },
         {
             "name": "phpspec/prophecy",
-            "version": "1.8.0",
+            "version": "v1.10.3",
             "source": {
                 "type": "git",
                 "url": "https://github.com/phpspec/prophecy.git",
-                "reference": "4ba436b55987b4bf311cb7c6ba82aa528aac0a06"
+                "reference": "451c3cd1418cf640de218914901e51b064abb093"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/phpspec/prophecy/zipball/4ba436b55987b4bf311cb7c6ba82aa528aac0a06",
-                "reference": "4ba436b55987b4bf311cb7c6ba82aa528aac0a06",
+                "url": "https://api.github.com/repos/phpspec/prophecy/zipball/451c3cd1418cf640de218914901e51b064abb093",
+                "reference": "451c3cd1418cf640de218914901e51b064abb093",
                 "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"
+                "phpdocumentor/reflection-docblock": "^2.0|^3.0.2|^4.0|^5.0",
+                "sebastian/comparator": "^1.2.3|^2.0|^3.0|^4.0",
+                "sebastian/recursion-context": "^1.0|^2.0|^3.0|^4.0"
             },
             "require-dev": {
-                "phpspec/phpspec": "^2.5|^3.2",
+                "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"
+                    "dev-master": "1.10.x-dev"
                 }
             },
             "autoload": {
-                "psr-0": {
-                    "Prophecy\\": "src/"
+                "psr-4": {
+                    "Prophecy\\": "src/Prophecy"
                 }
             },
             "notification-url": "https://packagist.org/downloads/",
@@ -2773,7 +2262,7 @@
                 "spy",
                 "stub"
             ],
-            "time": "2018-08-05T17:53:17+00:00"
+            "time": "2020-03-05T15:02:03+00:00"
         },
         {
             "name": "phpunit/php-code-coverage",
@@ -3022,6 +2511,7 @@
             "keywords": [
                 "tokenizer"
             ],
+            "abandoned": true,
             "time": "2017-12-04T08:55:13+00:00"
         },
         {
@@ -3163,98 +2653,9 @@
                 "mock",
                 "xunit"
             ],
+            "abandoned": true,
             "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": "ralouphie/getallheaders",
-            "version": "2.0.5",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/ralouphie/getallheaders.git",
-                "reference": "5601c8a83fbba7ef674a7369456d12f1e0d0eafa"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/ralouphie/getallheaders/zipball/5601c8a83fbba7ef674a7369456d12f1e0d0eafa",
-                "reference": "5601c8a83fbba7ef674a7369456d12f1e0d0eafa",
-                "shasum": ""
-            },
-            "require": {
-                "php": ">=5.3"
-            },
-            "require-dev": {
-                "phpunit/phpunit": "~3.7.0",
-                "satooshi/php-coveralls": ">=1.0"
-            },
-            "type": "library",
-            "autoload": {
-                "files": [
-                    "src/getallheaders.php"
-                ]
-            },
-            "notification-url": "https://packagist.org/downloads/",
-            "license": [
-                "MIT"
-            ],
-            "authors": [
-                {
-                    "name": "Ralph Khattar",
-                    "email": "ralph.khattar@gmail.com"
-                }
-            ],
-            "description": "A polyfill for getallheaders.",
-            "time": "2016-02-11T07:05:27+00:00"
-        },
         {
             "name": "sebastian/code-unit-reverse-lookup",
             "version": "1.0.1",
@@ -3770,64 +3171,37 @@
         },
         {
             "name": "squizlabs/php_codesniffer",
-            "version": "2.9.2",
+            "version": "3.5.6",
             "source": {
                 "type": "git",
                 "url": "https://github.com/squizlabs/PHP_CodeSniffer.git",
-                "reference": "2acf168de78487db620ab4bc524135a13cfe6745"
+                "reference": "e97627871a7eab2f70e59166072a6b767d5834e0"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/squizlabs/PHP_CodeSniffer/zipball/2acf168de78487db620ab4bc524135a13cfe6745",
-                "reference": "2acf168de78487db620ab4bc524135a13cfe6745",
+                "url": "https://api.github.com/repos/squizlabs/PHP_CodeSniffer/zipball/e97627871a7eab2f70e59166072a6b767d5834e0",
+                "reference": "e97627871a7eab2f70e59166072a6b767d5834e0",
                 "shasum": ""
             },
             "require": {
                 "ext-simplexml": "*",
                 "ext-tokenizer": "*",
                 "ext-xmlwriter": "*",
-                "php": ">=5.1.2"
+                "php": ">=5.4.0"
             },
             "require-dev": {
-                "phpunit/phpunit": "~4.0"
+                "phpunit/phpunit": "^4.0 || ^5.0 || ^6.0 || ^7.0"
             },
             "bin": [
-                "scripts/phpcs",
-                "scripts/phpcbf"
+                "bin/phpcs",
+                "bin/phpcbf"
             ],
             "type": "library",
             "extra": {
                 "branch-alias": {
-                    "dev-master": "2.x-dev"
+                    "dev-master": "3.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"
@@ -3839,82 +3213,25 @@
                 }
             ],
             "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",
+            "homepage": "https://github.com/squizlabs/PHP_CodeSniffer",
             "keywords": [
                 "phpcs",
                 "standards"
             ],
-            "time": "2018-11-07T22:31:41+00:00"
-        },
-        {
-            "name": "symfony/browser-kit",
-            "version": "v3.4.22",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/symfony/browser-kit.git",
-                "reference": "884689e5d29fc3c48498a0038e96d60e4f91b471"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/symfony/browser-kit/zipball/884689e5d29fc3c48498a0038e96d60e4f91b471",
-                "reference": "884689e5d29fc3c48498a0038e96d60e4f91b471",
-                "shasum": ""
-            },
-            "require": {
-                "php": "^5.5.9|>=7.0.8",
-                "symfony/dom-crawler": "~2.8|~3.0|~4.0"
-            },
-            "require-dev": {
-                "symfony/css-selector": "~2.8|~3.0|~4.0",
-                "symfony/process": "~2.8|~3.0|~4.0"
-            },
-            "suggest": {
-                "symfony/process": ""
-            },
-            "type": "library",
-            "extra": {
-                "branch-alias": {
-                    "dev-master": "3.4-dev"
-                }
-            },
-            "autoload": {
-                "psr-4": {
-                    "Symfony\\Component\\BrowserKit\\": ""
-                },
-                "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 BrowserKit Component",
-            "homepage": "https://symfony.com",
-            "time": "2019-01-16T09:39:14+00:00"
+            "time": "2020-08-10T04:50:15+00:00"
         },
         {
             "name": "symfony/config",
-            "version": "v3.4.22",
+            "version": "v3.4.45",
             "source": {
                 "type": "git",
                 "url": "https://github.com/symfony/config.git",
-                "reference": "c9bc510c217075d42d4a927e285917d0c2001cf4"
+                "reference": "d061a451ff6bc170c5454f4ac9b41ad2179e3960"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/symfony/config/zipball/c9bc510c217075d42d4a927e285917d0c2001cf4",
-                "reference": "c9bc510c217075d42d4a927e285917d0c2001cf4",
+                "url": "https://api.github.com/repos/symfony/config/zipball/d061a451ff6bc170c5454f4ac9b41ad2179e3960",
+                "reference": "d061a451ff6bc170c5454f4ac9b41ad2179e3960",
                 "shasum": ""
             },
             "require": {
@@ -3965,85 +3282,38 @@
             ],
             "description": "Symfony Config Component",
             "homepage": "https://symfony.com",
-            "time": "2019-01-30T11:33:42+00:00"
-        },
-        {
-            "name": "symfony/css-selector",
-            "version": "v3.4.22",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/symfony/css-selector.git",
-                "reference": "8ca29297c29b64fb3a1a135e71cb25f67f9fdccf"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/symfony/css-selector/zipball/8ca29297c29b64fb3a1a135e71cb25f67f9fdccf",
-                "reference": "8ca29297c29b64fb3a1a135e71cb25f67f9fdccf",
-                "shasum": ""
-            },
-            "require": {
-                "php": "^5.5.9|>=7.0.8"
-            },
-            "type": "library",
-            "extra": {
-                "branch-alias": {
-                    "dev-master": "3.4-dev"
-                }
-            },
-            "autoload": {
-                "psr-4": {
-                    "Symfony\\Component\\CssSelector\\": ""
-                },
-                "exclude-from-classmap": [
-                    "/Tests/"
-                ]
-            },
-            "notification-url": "https://packagist.org/downloads/",
-            "license": [
-                "MIT"
-            ],
-            "authors": [
+            "funding": [
                 {
-                    "name": "Jean-François Simon",
-                    "email": "jeanfrancois.simon@sensiolabs.com"
+                    "url": "https://symfony.com/sponsor",
+                    "type": "custom"
                 },
                 {
-                    "name": "Fabien Potencier",
-                    "email": "fabien@symfony.com"
+                    "url": "https://github.com/fabpot",
+                    "type": "github"
                 },
                 {
-                    "name": "Symfony Community",
-                    "homepage": "https://symfony.com/contributors"
+                    "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+                    "type": "tidelift"
                 }
             ],
-            "description": "Symfony CssSelector Component",
-            "homepage": "https://symfony.com",
-            "time": "2019-01-16T09:39:14+00:00"
+            "time": "2020-09-02T16:06:40+00:00"
         },
         {
-            "name": "symfony/dom-crawler",
-            "version": "v3.4.22",
+            "name": "symfony/stopwatch",
+            "version": "v3.4.45",
             "source": {
                 "type": "git",
-                "url": "https://github.com/symfony/dom-crawler.git",
-                "reference": "32cb577c07bd900ee883a9d4b55d4098aa02e422"
+                "url": "https://github.com/symfony/stopwatch.git",
+                "reference": "a7a98f40dcc382a332c3729a6d04b298ffbb8f1f"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/symfony/dom-crawler/zipball/32cb577c07bd900ee883a9d4b55d4098aa02e422",
-                "reference": "32cb577c07bd900ee883a9d4b55d4098aa02e422",
+                "url": "https://api.github.com/repos/symfony/stopwatch/zipball/a7a98f40dcc382a332c3729a6d04b298ffbb8f1f",
+                "reference": "a7a98f40dcc382a332c3729a6d04b298ffbb8f1f",
                 "shasum": ""
             },
             "require": {
-                "php": "^5.5.9|>=7.0.8",
-                "symfony/polyfill-ctype": "~1.8",
-                "symfony/polyfill-mbstring": "~1.0"
-            },
-            "require-dev": {
-                "symfony/css-selector": "~2.8|~3.0|~4.0"
-            },
-            "suggest": {
-                "symfony/css-selector": ""
+                "php": "^5.5.9|>=7.0.8"
             },
             "type": "library",
             "extra": {
@@ -4053,7 +3323,7 @@
             },
             "autoload": {
                 "psr-4": {
-                    "Symfony\\Component\\DomCrawler\\": ""
+                    "Symfony\\Component\\Stopwatch\\": ""
                 },
                 "exclude-from-classmap": [
                     "/Tests/"
@@ -4073,87 +3343,50 @@
                     "homepage": "https://symfony.com/contributors"
                 }
             ],
-            "description": "Symfony DomCrawler Component",
+            "description": "Symfony Stopwatch Component",
             "homepage": "https://symfony.com",
-            "time": "2019-01-16T13:27:11+00:00"
-        },
-        {
-            "name": "symfony/stopwatch",
-            "version": "v3.4.22",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/symfony/stopwatch.git",
-                "reference": "2a651c2645c10bbedd21170771f122d935e0dd58"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/symfony/stopwatch/zipball/2a651c2645c10bbedd21170771f122d935e0dd58",
-                "reference": "2a651c2645c10bbedd21170771f122d935e0dd58",
-                "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\\": ""
+            "funding": [
+                {
+                    "url": "https://symfony.com/sponsor",
+                    "type": "custom"
                 },
-                "exclude-from-classmap": [
-                    "/Tests/"
-                ]
-            },
-            "notification-url": "https://packagist.org/downloads/",
-            "license": [
-                "MIT"
-            ],
-            "authors": [
                 {
-                    "name": "Fabien Potencier",
-                    "email": "fabien@symfony.com"
+                    "url": "https://github.com/fabpot",
+                    "type": "github"
                 },
                 {
-                    "name": "Symfony Community",
-                    "homepage": "https://symfony.com/contributors"
+                    "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+                    "type": "tidelift"
                 }
             ],
-            "description": "Symfony Stopwatch Component",
-            "homepage": "https://symfony.com",
-            "time": "2019-01-16T09:39:14+00:00"
+            "time": "2020-03-15T09:38:08+00:00"
         },
         {
             "name": "webmozart/assert",
-            "version": "1.4.0",
+            "version": "1.9.1",
             "source": {
                 "type": "git",
                 "url": "https://github.com/webmozart/assert.git",
-                "reference": "83e253c8e0be5b0257b881e1827274667c5c17a9"
+                "reference": "bafc69caeb4d49c39fd0779086c03a3738cbb389"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/webmozart/assert/zipball/83e253c8e0be5b0257b881e1827274667c5c17a9",
-                "reference": "83e253c8e0be5b0257b881e1827274667c5c17a9",
+                "url": "https://api.github.com/repos/webmozart/assert/zipball/bafc69caeb4d49c39fd0779086c03a3738cbb389",
+                "reference": "bafc69caeb4d49c39fd0779086c03a3738cbb389",
                 "shasum": ""
             },
             "require": {
-                "php": "^5.3.3 || ^7.0",
+                "php": "^5.3.3 || ^7.0 || ^8.0",
                 "symfony/polyfill-ctype": "^1.8"
             },
+            "conflict": {
+                "phpstan/phpstan": "<0.12.20",
+                "vimeo/psalm": "<3.9.1"
+            },
             "require-dev": {
-                "phpunit/phpunit": "^4.6",
-                "sebastian/version": "^1.0.1"
+                "phpunit/phpunit": "^4.8.36 || ^7.5.13"
             },
             "type": "library",
-            "extra": {
-                "branch-alias": {
-                    "dev-master": "1.3-dev"
-                }
-            },
             "autoload": {
                 "psr-4": {
                     "Webmozart\\Assert\\": "src/"
@@ -4175,7 +3408,7 @@
                 "check",
                 "validate"
             ],
-            "time": "2018-12-25T11:19:39+00:00"
+            "time": "2020-07-08T17:02:28+00:00"
         }
     ],
     "aliases": [],
@@ -4189,5 +3422,6 @@
     "platform-dev": [],
     "platform-overrides": {
         "php": "5.6.3"
-    }
+    },
+    "plugin-api-version": "1.1.0"
 }
diff --git a/vendor/consolidation/robo/phpunit.xml b/vendor/consolidation/robo/phpunit.xml.dist
similarity index 77%
rename from vendor/consolidation/robo/phpunit.xml
rename to vendor/consolidation/robo/phpunit.xml.dist
index b2d8394aa3..f7925d2dc7 100644
--- a/vendor/consolidation/robo/phpunit.xml
+++ b/vendor/consolidation/robo/phpunit.xml.dist
@@ -24,6 +24,15 @@
         <ini name="error_reporting" value="E_ALL" />
     </php>
 
+    <testsuites>
+        <testsuite name="integration">
+            <directory prefix="" suffix="Test.php">tests/integration</directory>
+        </testsuite>
+        <testsuite name="unit">
+            <directory prefix="" suffix="Test.php">tests/phpunit</directory>
+        </testsuite>
+    </testsuites>
+
     <filter>
         <whitelist processUncoveredFilesFromWhitelist="true">
             <directory suffix=".php">./src</directory>
diff --git a/vendor/consolidation/robo/src/Application.php b/vendor/consolidation/robo/src/Application.php
index 6e9bc0dcd8..388f1512f5 100644
--- a/vendor/consolidation/robo/src/Application.php
+++ b/vendor/consolidation/robo/src/Application.php
@@ -1,4 +1,5 @@
 <?php
+
 namespace Robo;
 
 use SelfUpdate\SelfUpdateCommand;
@@ -42,7 +43,7 @@ public function addInitRoboFileCommand($roboFile, $roboClass)
         $createRoboFile->setCode(function () use ($roboClass, $roboFile) {
             $output = Robo::output();
             $output->writeln("<comment>  ~~~ Welcome to Robo! ~~~~ </comment>");
-            $output->writeln("<comment>  ". basename($roboFile) ." will be created in the current directory </comment>");
+            $output->writeln("<comment>  " . basename($roboFile) . " will be created in the current directory </comment>");
             file_put_contents(
                 $roboFile,
                 '<?php'
@@ -61,7 +62,8 @@ public function addInitRoboFileCommand($roboFile, $roboClass)
     /**
      * Add self update command, do nothing if null is provided
      *
-     * @param string $repository GitHub Repository for self update
+     * @param string $repository
+     *   GitHub Repository for self update.
      */
     public function addSelfUpdateCommand($repository = null)
     {
diff --git a/vendor/consolidation/robo/src/ClassDiscovery/ClassDiscoveryInterface.php b/vendor/consolidation/robo/src/ClassDiscovery/ClassDiscoveryInterface.php
index ebbb672728..31c1f6ca78 100644
--- a/vendor/consolidation/robo/src/ClassDiscovery/ClassDiscoveryInterface.php
+++ b/vendor/consolidation/robo/src/ClassDiscovery/ClassDiscoveryInterface.php
@@ -10,7 +10,7 @@
 interface ClassDiscoveryInterface
 {
     /**
-     * @param $searchPattern
+     * @param string $searchPattern
      *
      * @return $this
      */
@@ -22,7 +22,7 @@ public function setSearchPattern($searchPattern);
     public function getClasses();
 
     /**
-     * @param $class
+     * @param string $class
      *
      * @return string|null
      */
diff --git a/vendor/consolidation/robo/src/ClassDiscovery/RelativeNamespaceDiscovery.php b/vendor/consolidation/robo/src/ClassDiscovery/RelativeNamespaceDiscovery.php
index 766de3a4d7..762dcf1aa9 100644
--- a/vendor/consolidation/robo/src/ClassDiscovery/RelativeNamespaceDiscovery.php
+++ b/vendor/consolidation/robo/src/ClassDiscovery/RelativeNamespaceDiscovery.php
@@ -35,7 +35,7 @@ public function __construct(ClassLoader $classLoader)
     /**
      * @param string $relativeNamespace
      *
-     * @return RelativeNamespaceDiscovery
+     * @return $this
      */
     public function setRelativeNamespace($relativeNamespace)
     {
@@ -45,7 +45,7 @@ public function setRelativeNamespace($relativeNamespace)
     }
 
     /**
-     * @inheritDoc
+     * {@inheritDoc}
      */
     public function getClasses()
     {
@@ -54,13 +54,13 @@ public function getClasses()
 
         foreach ($this->classLoader->getPrefixesPsr4() as $baseNamespace => $directories) {
             $directories = array_filter(array_map(function ($directory) use ($relativePath) {
-                return $directory.$relativePath;
+                return $directory . $relativePath;
             }, $directories), 'is_dir');
 
             if ($directories) {
                 foreach ($this->search($directories, $this->searchPattern) as $file) {
                     $relativePathName = $file->getRelativePathname();
-                    $classes[] = $baseNamespace.$this->convertPathToNamespace($relativePath.'/'.$relativePathName);
+                    $classes[] = $baseNamespace . $this->convertPathToNamespace($relativePath . '/' . $relativePathName);
                 }
             }
         }
@@ -77,8 +77,8 @@ public function getFile($class)
     }
 
     /**
-     * @param $directories
-     * @param $pattern
+     * @param string|array $directories
+     * @param string $pattern
      *
      * @return \Symfony\Component\Finder\Finder
      */
@@ -93,9 +93,9 @@ protected function search($directories, $pattern)
     }
 
     /**
-     * @param $path
+     * @param string $path
      *
-     * @return mixed
+     * @return string
      */
     protected function convertPathToNamespace($path)
     {
@@ -103,10 +103,12 @@ protected function convertPathToNamespace($path)
     }
 
     /**
+     * @param string $namespace
+     *
      * @return string
      */
     public function convertNamespaceToPath($namespace)
     {
-        return '/'.str_replace("\\", '/', trim($namespace, '\\'));
+        return '/' . str_replace("\\", '/', trim($namespace, '\\'));
     }
 }
diff --git a/vendor/consolidation/robo/src/Collection/CallableTask.php b/vendor/consolidation/robo/src/Collection/CallableTask.php
index ae9c54fc51..6d511501e6 100644
--- a/vendor/consolidation/robo/src/Collection/CallableTask.php
+++ b/vendor/consolidation/robo/src/Collection/CallableTask.php
@@ -1,4 +1,5 @@
 <?php
+
 namespace Robo\Collection;
 
 use Robo\Result;
@@ -32,7 +33,7 @@ public function __construct(callable $fn, TaskInterface $reference)
     }
 
     /**
-     * @return \Robo\Result
+     * {@inheritdoc}
      */
     public function run()
     {
@@ -52,6 +53,9 @@ public function run()
         return $result;
     }
 
+    /**
+     * @return \Robo\State\Data
+     */
     public function getState()
     {
         if ($this->reference instanceof StateAwareInterface) {
diff --git a/vendor/consolidation/robo/src/Collection/Collection.php b/vendor/consolidation/robo/src/Collection/Collection.php
index e3e34796b9..17a699b4a5 100644
--- a/vendor/consolidation/robo/src/Collection/Collection.php
+++ b/vendor/consolidation/robo/src/Collection/Collection.php
@@ -1,4 +1,5 @@
 <?php
+
 namespace Robo\Collection;
 
 use Robo\Exception\AbortTasksException;
@@ -13,7 +14,6 @@
 use Robo\Exception\TaskException;
 use Robo\Exception\TaskExitException;
 use Robo\Contract\CommandInterface;
-
 use Robo\Contract\InflectionInterface;
 use Robo\State\StateAwareInterface;
 use Robo\State\StateAwareTrait;
@@ -42,17 +42,17 @@ class Collection extends BaseTask implements CollectionInterface, CommandInterfa
     protected $taskList = [];
 
     /**
-     * @var TaskInterface[]
+     * @var \Robo\Contract\TaskInterface[]
      */
     protected $rollbackStack = [];
 
     /**
-     * @var TaskInterface[]
+     * @var \Robo\Contract\TaskInterface[]
      */
     protected $completionStack = [];
 
     /**
-     * @var CollectionInterface
+     * @var \Robo\Collection\CollectionInterface
      */
     protected $parentCollection;
 
@@ -74,6 +74,9 @@ public function __construct()
         $this->resetState();
     }
 
+    /**
+     * @param int $interval
+     */
     public function setProgressBarAutoDisplayInterval($interval)
     {
         if (!$this->progressIndicator) {
@@ -209,7 +212,7 @@ function () use ($collection, $rollbackTask) {
      *
      * @param string $method
      * @param string $name
-     * @param callable|TaskInterface $task
+     * @param callable|\Robo\Contract\TaskInterface $task
      * @param string $nameOfTaskToAdd
      *
      * @return $this
@@ -280,7 +283,7 @@ public function ignoreErrorsCodeWrapper(callable $task)
     /**
      * Return the list of task names added to this collection.
      *
-     * @return array
+     * @return string[]
      */
     public function taskNames()
     {
@@ -308,7 +311,7 @@ public function hasTask($name)
      * @param string $name
      *   The name of the task to insert before.  The named task MUST exist.
      *
-     * @return Element
+     * @return \Robo\Collection\Element
      *   The task group for the named task. Generally this is only
      *   used to call 'before()' and 'after()'.
      */
@@ -323,7 +326,7 @@ protected function namedTask($name)
     /**
      * Add a list of tasks to our task collection.
      *
-     * @param TaskInterface[] $tasks
+     * @param \Robo\Contract\TaskInterface[] $tasks
      *   An array of tasks to run with rollback protection
      *
      * @return $this
@@ -342,7 +345,7 @@ public function addTaskList(array $tasks)
      * @param string $name
      * @param \Robo\Contract\TaskInterface $task
      *
-     * @return \Robo\Collection\Collection
+     * @return $this
      */
     protected function addToTaskList($name, TaskInterface $task)
     {
@@ -392,7 +395,7 @@ public function setParentCollection(NestedCollectionInterface $parentCollection)
     /**
      * Get the appropriate parent collection to use
      *
-     * @return CollectionInterface
+     * @return \Robo\Collection\CollectionInterface|$this
      */
     public function getParentCollection()
     {
@@ -413,8 +416,10 @@ public function getParentCollection()
      * function directly is to add a task that sends notification
      * when a task fails.
      *
-     * @param TaskInterface $rollbackTask
+     * @param \Robo\Contract\TaskInterface $rollbackTask
      *   The rollback task to run on failure.
+     *
+     * @return null
      */
     public function registerRollback(TaskInterface $rollbackTask)
     {
@@ -441,8 +446,10 @@ public function registerRollback(TaskInterface $rollbackTask)
      * the nested task completes; they are not deferred to the end of
      * the containing collection's execution.
      *
-     * @param TaskInterface $completionTask
+     * @param \Robo\Contract\TaskInterface $completionTask
      *   The completion task to run at the end of all other operations.
+     *
+     * @return null
      */
     public function registerCompletion(TaskInterface $completionTask)
     {
@@ -547,7 +554,7 @@ private function runWithoutCompletion()
      * Return the failing result, or success if all tasks run.
      *
      * @param string $name
-     * @param TaskInterface[] $taskList
+     * @param \Robo\Contract\TaskInterface[] $taskList
      * @param \Robo\Result $result
      *
      * @return \Robo\Result
@@ -641,7 +648,7 @@ protected function runRollbackTasks()
     }
 
     /**
-     * @param TaskInterface|NestedCollectionInterface|WrappedTaskInterface $task
+     * @param \Robo\Contract\TaskInterface|\Robo\Collection\NestedCollectionInterface|\Robo\Contract\WrappedTaskInterface $task
      *
      * @return \Robo\Result
      */
@@ -662,6 +669,10 @@ protected function runSubtask($task)
         return $taskResult;
     }
 
+    /**
+     * @param \Robo\Contract\TaskInterface $task
+     * @param \Robo\State\Data $taskResult
+     */
     protected function doStateUpdates($task, Data $taskResult)
     {
         $this->updateState($taskResult);
@@ -674,6 +685,13 @@ protected function doStateUpdates($task, Data $taskResult)
         }
     }
 
+    /**
+     * @param \Robo\Contract\TaskInterface $task
+     * @param string $key
+     * @param string $source
+     *
+     * @return $this
+     */
     public function storeState($task, $key, $source = '')
     {
         $this->messageStoreKeys[spl_object_hash($task)] = [$key, $source];
@@ -681,6 +699,13 @@ public function storeState($task, $key, $source = '')
         return $this;
     }
 
+    /**
+     * @param \Robo\Contract\TaskInterface $task
+     * @param string $functionName
+     * @param string $stateKey
+     *
+     * @return $this
+     */
     public function deferTaskConfiguration($task, $functionName, $stateKey)
     {
         return $this->defer(
@@ -698,6 +723,11 @@ function ($task, $state) use ($functionName, $stateKey) {
      * runs. Use this time to provide more settings for the task, e.g. from
      * the collection's shared state, which is populated with the results
      * of previous test runs.
+     *
+     * @param \Robo\Contract\TaskInterface $task
+     * @param callable $callback
+     *
+     * @return $this
      */
     public function defer($task, $callback)
     {
@@ -706,6 +736,9 @@ public function defer($task, $callback)
         return $this;
     }
 
+    /**
+     * @param \Robo\Contract\TaskInterface $task
+     */
     protected function doDeferredInitialization($task)
     {
         // If the task is a state consumer, then call its receiveState method
@@ -727,7 +760,7 @@ protected function doDeferredInitialization($task)
 
     /**
      * @param TaskInterface|NestedCollectionInterface|WrappedTaskInterface $task
-     * @param $parentCollection
+     * @param \Robo\Collection\CollectionInterface $parentCollection
      */
     protected function setParentCollectionForTask($task, $parentCollection)
     {
@@ -744,7 +777,7 @@ protected function setParentCollectionForTask($task, $parentCollection)
      *
      * This is used to roll back or complete.
      *
-     * @param TaskInterface[] $taskList
+     * @param \Robo\Contract\TaskInterface[] $taskList
      */
     protected function runTaskListIgnoringFailures(array $taskList)
     {
@@ -766,7 +799,7 @@ protected function runTaskListIgnoringFailures(array $taskList)
     /**
      * Give all of our tasks to the provided collection builder.
      *
-     * @param CollectionBuilder $builder
+     * @param \Robo\Collection\CollectionBuilder $builder
      */
     public function transferTasks($builder)
     {
diff --git a/vendor/consolidation/robo/src/Collection/CollectionBuilder.php b/vendor/consolidation/robo/src/Collection/CollectionBuilder.php
index 3e037b01e9..5b4ecde8ff 100644
--- a/vendor/consolidation/robo/src/Collection/CollectionBuilder.php
+++ b/vendor/consolidation/robo/src/Collection/CollectionBuilder.php
@@ -1,4 +1,5 @@
 <?php
+
 namespace Robo\Collection;
 
 use Consolidation\Config\Inject\ConfigForSetters;
@@ -55,12 +56,12 @@ class CollectionBuilder extends BaseTask implements NestedCollectionInterface, W
     protected $commandFile;
 
     /**
-     * @var CollectionInterface
+     * @var \Robo\Collection\CollectionInterface
      */
     protected $collection;
 
     /**
-     * @var TaskInterface
+     * @var \Robo\Contract\TaskInterface
      */
     protected $currentTask;
 
@@ -78,6 +79,12 @@ public function __construct($commandFile)
         $this->resetState();
     }
 
+    /**
+     * @param \League\Container\ContainerInterface $container
+     * @param \Robo\Tasks $commandFile
+     *
+     * @return static
+     */
     public static function create($container, $commandFile)
     {
         $builder = new self($commandFile);
@@ -141,8 +148,9 @@ public function tmpDir($prefix = 'tmp', $base = '', $includeRandomPart = true)
      * any results already in place will be moved out of the way and
      * then deleted.
      *
-     * @param string $finalDestination The path where the working directory
-     *   will be moved once the task collection completes.
+     * @param string $finalDestination
+     *   The path where the working directory will be moved once the task
+     *   collection completes.
      *
      * @return string
      */
@@ -152,6 +160,9 @@ public function workDir($finalDestination)
         return $this->taskWorkDir($finalDestination)->getPath();
     }
 
+    /**
+     * @return $this
+     */
     public function addTask(TaskInterface $task)
     {
         $this->getCollection()->add($task);
@@ -165,6 +176,7 @@ public function addTask(TaskInterface $task)
    *
    * @param callable $code
    * @param int|string $name
+   *
    * @return $this
    */
     public function addCode(callable $code, $name = \Robo\Collection\CollectionInterface::UNNAMEDTASK)
@@ -176,7 +188,7 @@ public function addCode(callable $code, $name = \Robo\Collection\CollectionInter
     /**
      * Add a list of tasks to our task collection.
      *
-     * @param TaskInterface[] $tasks
+     * @param \Robo\Contract\TaskInterface[] $tasks
      *   An array of tasks to run with rollback protection
      *
      * @return $this
@@ -187,6 +199,9 @@ public function addTaskList(array $tasks)
         return $this;
     }
 
+    /**
+     * @return $this
+     */
     public function rollback(TaskInterface $task)
     {
         // Ensure that we have a collection if we are going to add
@@ -195,18 +210,27 @@ public function rollback(TaskInterface $task)
         return $this;
     }
 
+    /**
+     * @return $this
+     */
     public function rollbackCode(callable $rollbackCode)
     {
         $this->getCollection()->rollbackCode($rollbackCode);
         return $this;
     }
 
+    /**
+     * @return $this
+     */
     public function completion(TaskInterface $task)
     {
         $this->getCollection()->completion($task);
         return $this;
     }
 
+    /**
+     * @return $this
+     */
     public function completionCode(callable $completionCode)
     {
         $this->getCollection()->completionCode($completionCode);
@@ -227,8 +251,6 @@ public function progressMessage($text, $context = [], $level = LogLevel::NOTICE)
     }
 
     /**
-     * @param \Robo\Collection\NestedCollectionInterface $parentCollection
-     *
      * @return $this
      */
     public function setParentCollection(NestedCollectionInterface $parentCollection)
@@ -243,7 +265,7 @@ public function setParentCollection(NestedCollectionInterface $parentCollection)
      *
      * TODO: protected
      *
-     * @param TaskInterface $task
+     * @param \Robo\Contract\TaskInterface $task
      *
      * @return $this
      */
@@ -265,28 +287,54 @@ public function addTaskToCollection($task)
         return $this;
     }
 
+    /**
+     * @return \Robo\State\Data
+     */
     public function getState()
     {
         $collection = $this->getCollection();
         return $collection->getState();
     }
 
+    /**
+     * @param int|string $key
+     * @param mixed $source
+     *
+     * @return $this
+     */
     public function storeState($key, $source = '')
     {
-        return $this->callCollectionStateFuntion(__FUNCTION__, func_get_args());
+        return $this->callCollectionStateFunction(__FUNCTION__, func_get_args());
     }
 
+    /**
+     * @param string $functionName
+     * @param int|string $stateKey
+     *
+     * @return $this
+     */
     public function deferTaskConfiguration($functionName, $stateKey)
     {
-        return $this->callCollectionStateFuntion(__FUNCTION__, func_get_args());
+        return $this->callCollectionStateFunction(__FUNCTION__, func_get_args());
     }
 
+    /**
+     * @param callable$callback
+     *
+     * @return $this
+     */
     public function defer($callback)
     {
-        return $this->callCollectionStateFuntion(__FUNCTION__, func_get_args());
+        return $this->callCollectionStateFunction(__FUNCTION__, func_get_args());
     }
 
-    protected function callCollectionStateFuntion($functionName, $args)
+    /**
+     * @param string $functionName
+     * @param array $args
+     *
+     * @return $this
+     */
+    protected function callCollectionStateFunction($functionName, $args)
     {
         $currentTask = ($this->currentTask instanceof WrappedTaskInterface) ? $this->currentTask->original() : $this->currentTask;
 
@@ -298,6 +346,24 @@ protected function callCollectionStateFuntion($functionName, $args)
         return $this;
     }
 
+    /**
+     * @param string $functionName
+     * @param array $args
+     *
+     * @return $this
+     *
+     * @deprecated Use ::callCollectionStateFunction() instead.
+     */
+    protected function callCollectionStateFuntion($functionName, $args)
+    {
+        return $this->callCollectionStateFunction($functionName, $args);
+    }
+
+    /**
+     * @param int $verbosityThreshold
+     *
+     * @return $this
+     */
     public function setVerbosityThreshold($verbosityThreshold)
     {
         $currentTask = ($this->currentTask instanceof WrappedTaskInterface) ? $this->currentTask->original() : $this->currentTask;
@@ -324,7 +390,7 @@ public function getCollectionBuilderCurrentTask()
     /**
      * Create a new builder with its own task collection
      *
-     * @return CollectionBuilder
+     * @return \Robo\Collection\CollectionBuilder
      */
     public function newBuilder()
     {
@@ -413,14 +479,14 @@ public function __call($fn, $args)
      * @param string|object $name
      * @param array $args
      *
-     * @return \Robo\Collection\CollectionBuilder
+     * @return $this
      */
     public function build($name, $args)
     {
         $reflection = new ReflectionClass($name);
         $task = $reflection->newInstanceArgs($args);
         if (!$task) {
-            throw new RuntimeException("Can not construct task $name");
+            throw new \RuntimeException("Can not construct task $name");
         }
         $task = $this->fixTask($task, $args);
         $this->configureTask($name, $task);
@@ -428,7 +494,7 @@ public function build($name, $args)
     }
 
     /**
-     * @param InflectionInterface $task
+     * @param \Robo\Contract\TaskInterface $task
      * @param array $args
      *
      * @return \Robo\Collection\CompletionWrapper|\Robo\Task\Simulator
@@ -479,6 +545,9 @@ protected function fixTask($task, $args)
     /**
      * Check to see if there are any setter methods defined in configuration
      * for this task.
+     *
+     * @param string $taskClass
+     * @param \Robo\Contract\TaskInterface $task
      */
     protected function configureTask($taskClass, $task)
     {
@@ -526,7 +595,7 @@ protected function runTasks()
     }
 
     /**
-     * @return string
+     * {@inheritdoc}
      */
     public function getCommand()
     {
@@ -542,7 +611,7 @@ public function getCommand()
     }
 
     /**
-     * @return \Robo\Collection\Collection
+     * @return \Robo\Collection\CollectionInterface
      */
     public function original()
     {
@@ -552,7 +621,7 @@ public function original()
     /**
      * Return the collection of tasks associated with this builder.
      *
-     * @return CollectionInterface
+     * @return \Robo\Collection\CollectionInterface
      */
     public function getCollection()
     {
diff --git a/vendor/consolidation/robo/src/Collection/CollectionInterface.php b/vendor/consolidation/robo/src/Collection/CollectionInterface.php
index 173ca169cc..5bed6f3aa7 100644
--- a/vendor/consolidation/robo/src/Collection/CollectionInterface.php
+++ b/vendor/consolidation/robo/src/Collection/CollectionInterface.php
@@ -1,4 +1,5 @@
 <?php
+
 namespace Robo\Collection;
 
 use Psr\Log\LogLevel;
@@ -23,20 +24,21 @@ interface CollectionInterface extends NestedCollectionInterface
      * method ONLY if its 'run()' method completes successfully, and some
      * task added after it fails.
      *
-     * @param TaskInterface $task
+     * @param \Robo\Contract\TaskInterface $task
      *   The task to add to our collection.
      * @param int|string $name
      *   An optional name for the task -- missing or UNNAMEDTASK for unnamed tasks.
      *   Names are used for positioning before and after tasks.
      *
-     * @return CollectionInterface
+     * @return $this
      */
     public function add(TaskInterface $task, $name = self::UNNAMEDTASK);
 
     /**
      * Add arbitrary code to execute as a task.
      *
-     * @param callable $code Code to execute as a task
+     * @param callable $code
+     *   Code to execute as a task
      * @param int|string $name
      *   An optional name for the task -- missing or UNNAMEDTASK for unnamed tasks.
      *   Names are used for positioning before and after tasks.
@@ -51,8 +53,10 @@ public function addCode(callable $code, $name = self::UNNAMEDTASK);
      * provided callback is a TaskInterface or Collection, then it will be
      * executed.
      *
-     * @param CollectionInterface|array $iterable A collection of things to iterate
-     * @param $code $code A callback function to call for each item in the collection.
+     * @param static|array $iterable
+     *   A collection of things to iterate.
+     * @param callable $code
+     *   A callback function to call for each item in the collection.
      *
      * @return $this
      */
@@ -63,7 +67,7 @@ public function addIterable($iterable, callable $code);
      * will execute ONLY if all of the tasks added before it complete
      * successfully, AND some task added after it fails.
      *
-     * @param TaskInterface $rollbackTask
+     * @param \Robo\Contract\TaskInterface $rollbackTask
      *   The rollback task to add.  Note that the 'run()' method of the
      *   task executes, not its 'rollback()' method.  To use the 'rollback()'
      *   method, add the task via 'Collection::add()' instead.
@@ -75,7 +79,8 @@ public function rollback(TaskInterface $rollbackTask);
     /**
      * Add arbitrary code to execute as a rollback.
      *
-     * @param callable $rollbackTask Code to execute during rollback processing
+     * @param callable $rollbackTask
+     *   Code to execute during rollback processing.
      *
      * @return $this
      */
@@ -87,7 +92,7 @@ public function rollbackCode(callable $rollbackTask);
      * any task fails.  Completion tasks never cause errors to be returned
      * from Collection::run(), even if they fail.
      *
-     * @param TaskInterface $completionTask
+     * @param \Robo\Contract\TaskInterface $completionTask
      *   The completion task to add.  Note that the 'run()' method of the
      *   task executes, just as if the task was added normally.
      *
@@ -98,7 +103,8 @@ public function completion(TaskInterface $completionTask);
     /**
      * Add arbitrary code to execute as a completion.
      *
-     * @param callable $completionTask Code to execute after collection completes
+     * @param callable $completionTask
+     *   Code to execute after collection completes
      *
      * @return $this
      */
@@ -109,7 +115,7 @@ public function completionCode(callable $completionTask);
      *
      * @param string $name
      *   The name of the task to insert before.  The named task MUST exist.
-     * @param callable|TaskInterface $task
+     * @param callable|\Robo\Contract\TaskInterface $task
      *   The task to add.
      * @param int|string $nameOfTaskToAdd
      *   The name of the task to add. If not provided, will be associated
@@ -124,7 +130,7 @@ public function before($name, $task, $nameOfTaskToAdd = self::UNNAMEDTASK);
      *
      * @param string $name
      *   The name of the task to insert before.  The named task MUST exist.
-     * @param callable|TaskInterface $task
+     * @param callable|\Robo\Contract\TaskInterface $task
      *   The task to add.
      * @param int|string $nameOfTaskToAdd
      *   The name of the task to add. If not provided, will be associated
@@ -140,10 +146,13 @@ public function after($name, $task, $nameOfTaskToAdd = self::UNNAMEDTASK);
      * method was called. If one of the previous tasks fail, then this
      * message will not be printed.
      *
-     * @param string $text Message to print.
-     * @param array $context Extra context data for use by the logger. Note
+     * @param string $text
+     *   Message to print.
+     * @param array $context
+     *   Extra context data for use by the logger. Note
      *   that the data from the collection state is merged with the provided context.
-     * @param \Psr\Log\LogLevel|string $level The log level to print the information at. Default is NOTICE.
+     * @param \Psr\Log\LogLevel|string $level
+     *   The log level to print the information at. Default is NOTICE.
      *
      * @return $this
      */
diff --git a/vendor/consolidation/robo/src/Collection/CollectionProcessHook.php b/vendor/consolidation/robo/src/Collection/CollectionProcessHook.php
index 91efde7471..e30a5a2c92 100644
--- a/vendor/consolidation/robo/src/Collection/CollectionProcessHook.php
+++ b/vendor/consolidation/robo/src/Collection/CollectionProcessHook.php
@@ -1,4 +1,5 @@
 <?php
+
 namespace Robo\Collection;
 
 use Consolidation\AnnotatedCommand\Hooks\ProcessResultInterface;
@@ -17,7 +18,7 @@
 class CollectionProcessHook implements ProcessResultInterface
 {
     /**
-     * @param \Robo\Result|\Robo\Contract\TaskInterface $result
+     * @param \Robo\Contract\TaskInterface|mixed $result
      * @param \Consolidation\AnnotatedCommand\CommandData $commandData
      *
      * @return null|\Robo\Result
diff --git a/vendor/consolidation/robo/src/Collection/CompletionWrapper.php b/vendor/consolidation/robo/src/Collection/CompletionWrapper.php
index 3e81bd91cb..d19a789879 100644
--- a/vendor/consolidation/robo/src/Collection/CompletionWrapper.php
+++ b/vendor/consolidation/robo/src/Collection/CompletionWrapper.php
@@ -52,7 +52,7 @@ class CompletionWrapper extends BaseTask implements WrappedTaskInterface
      *
      * @param \Robo\Collection\Collection $collection
      * @param \Robo\Contract\TaskInterface $task
-     * @param \Robo\Contract\TaskInterface|NULL $rollbackTask
+     * @param \Robo\Contract\TaskInterface|null $rollbackTask
      */
     public function __construct(Collection $collection, TaskInterface $task, TaskInterface $rollbackTask = null)
     {
diff --git a/vendor/consolidation/robo/src/Collection/Element.php b/vendor/consolidation/robo/src/Collection/Element.php
index b67b56bbd0..074c05636c 100644
--- a/vendor/consolidation/robo/src/Collection/Element.php
+++ b/vendor/consolidation/robo/src/Collection/Element.php
@@ -20,12 +20,12 @@ class Element
     protected $task;
 
     /**
-     * @var array
+     * @var \Robo\Contract\TaskInterface[]|callable[]
      */
     protected $before = [];
 
     /**
-     * @var array
+     * @var \Robo\Contract\TaskInterface[]|callable[]
      */
     protected $after = [];
 
@@ -35,7 +35,7 @@ public function __construct(TaskInterface $task)
     }
 
     /**
-     * @param mixed $before
+     * @param \Robo\Contract\TaskInterface|callable $before
      * @param string $name
      */
     public function before($before, $name)
@@ -48,7 +48,7 @@ public function before($before, $name)
     }
 
     /**
-     * @param mixed $after
+     * @param \Robo\Contract\TaskInterface|callable $after
      * @param string $name
      */
     public function after($after, $name)
@@ -61,7 +61,7 @@ public function after($after, $name)
     }
 
     /**
-     * @return array
+     * @return \Robo\Contract\TaskInterface[]|callable[]
      */
     public function getBefore()
     {
@@ -69,7 +69,7 @@ public function getBefore()
     }
 
     /**
-     * @return array
+     * @return \Robo\Contract\TaskInterface[]|callable[]
      */
     public function getAfter()
     {
@@ -85,7 +85,7 @@ public function getTask()
     }
 
     /**
-     * @return array
+     * @return \Robo\Contract\TaskInterface[]|callable[]
      */
     public function getTaskList()
     {
diff --git a/vendor/consolidation/robo/src/Collection/NestedCollectionInterface.php b/vendor/consolidation/robo/src/Collection/NestedCollectionInterface.php
index 5e32cf37ab..dad29888fd 100644
--- a/vendor/consolidation/robo/src/Collection/NestedCollectionInterface.php
+++ b/vendor/consolidation/robo/src/Collection/NestedCollectionInterface.php
@@ -1,4 +1,5 @@
 <?php
+
 namespace Robo\Collection;
 
 interface NestedCollectionInterface
diff --git a/vendor/consolidation/robo/src/Collection/TaskForEach.php b/vendor/consolidation/robo/src/Collection/TaskForEach.php
index 030e50890b..a7396b46a1 100644
--- a/vendor/consolidation/robo/src/Collection/TaskForEach.php
+++ b/vendor/consolidation/robo/src/Collection/TaskForEach.php
@@ -1,4 +1,5 @@
 <?php
+
 namespace Robo\Collection;
 
 use Robo\Result;
@@ -110,7 +111,7 @@ public function withEachKeyValueCall(callable $fn)
     /**
      * @param callable $fn
      *
-     * @return \Robo\Collection\TaskForEach
+     * @return $this
      */
     public function call(callable $fn)
     {
@@ -124,7 +125,7 @@ function ($key, $value) use ($fn) {
     /**
      * @param callable $fn
      *
-     * @return \Robo\Collection\TaskForEach
+     * @return $this
      */
     public function withBuilder(callable $fn)
     {
diff --git a/vendor/consolidation/robo/src/Collection/Temporary.php b/vendor/consolidation/robo/src/Collection/Temporary.php
index dad25e34ce..9b1352a3dc 100644
--- a/vendor/consolidation/robo/src/Collection/Temporary.php
+++ b/vendor/consolidation/robo/src/Collection/Temporary.php
@@ -25,10 +25,16 @@
  */
 class Temporary
 {
+
+    /**
+     * @var \Robo\Collection\Collection
+     */
     private static $collection;
 
     /**
      * Provides direct access to the collection of temporaries, if necessary.
+     *
+     * @return \Robo\Collection\Collection
      */
     public static function getCollection()
     {
diff --git a/vendor/consolidation/robo/src/Collection/loadTasks.php b/vendor/consolidation/robo/src/Collection/loadTasks.php
index 63a872990e..19d5dd841e 100644
--- a/vendor/consolidation/robo/src/Collection/loadTasks.php
+++ b/vendor/consolidation/robo/src/Collection/loadTasks.php
@@ -1,4 +1,5 @@
 <?php
+
 namespace Robo\Collection;
 
 trait loadTasks
diff --git a/vendor/consolidation/robo/src/Common/CommandArguments.php b/vendor/consolidation/robo/src/Common/CommandArguments.php
index 12c2e89fd2..276b82b083 100644
--- a/vendor/consolidation/robo/src/Common/CommandArguments.php
+++ b/vendor/consolidation/robo/src/Common/CommandArguments.php
@@ -1,4 +1,5 @@
 <?php
+
 namespace Robo\Common;
 
 use Robo\Common\ProcessUtils;
@@ -35,8 +36,9 @@ public function arg($arg)
      */
     public function args($args)
     {
+        $func_args = func_get_args();
         if (!is_array($args)) {
-            $args = func_get_args();
+            $args = $func_args;
         }
         $this->arguments .= ' ' . implode(' ', array_map('static::escape', $args));
         return $this;
@@ -96,6 +98,11 @@ public function option($option, $value = null, $separator = ' ')
      * Pass multiple options to executable. The associative array contains
      * the key:value pairs that become `--key value`, for each item in the array.
      * Values are automatically escaped.
+     *
+     * @param array $options
+     * @param string $separator
+     *
+     * @return $this
      */
     public function options(array $options, $separator = ' ')
     {
diff --git a/vendor/consolidation/robo/src/Common/CommandReceiver.php b/vendor/consolidation/robo/src/Common/CommandReceiver.php
index 03b20fced1..091aa6c5cf 100644
--- a/vendor/consolidation/robo/src/Common/CommandReceiver.php
+++ b/vendor/consolidation/robo/src/Common/CommandReceiver.php
@@ -1,4 +1,5 @@
 <?php
+
 namespace Robo\Common;
 
 use Robo\Contract\CommandInterface;
diff --git a/vendor/consolidation/robo/src/Common/ConfigAwareTrait.php b/vendor/consolidation/robo/src/Common/ConfigAwareTrait.php
index 74b48f073b..c70d1581fa 100644
--- a/vendor/consolidation/robo/src/Common/ConfigAwareTrait.php
+++ b/vendor/consolidation/robo/src/Common/ConfigAwareTrait.php
@@ -8,14 +8,14 @@
 trait ConfigAwareTrait
 {
     /**
-     * @var ConfigInterface
+     * @var \Consolidation\Config\ConfigInterface
      */
     protected $config;
 
     /**
      * Set the config management object.
      *
-     * @param ConfigInterface $config
+     * @param \Consolidation\Config\ConfigInterface $config
      *
      * @return $this
      */
@@ -29,7 +29,7 @@ public function setConfig(ConfigInterface $config)
     /**
      * Get the config management object.
      *
-     * @return \Robo\Config\Config
+     * @return \Consolidation\Config\ConfigInterface
      */
     public function getConfig()
     {
@@ -79,7 +79,7 @@ private static function getClassKey($key)
     /**
      * @param string $key
      * @param mixed $value
-     * @param Config|null $config
+     * @param \Consolidation\Config\ConfigInterface|null $config
      */
     public static function configure($key, $value, $config = null)
     {
diff --git a/vendor/consolidation/robo/src/Common/DynamicParams.php b/vendor/consolidation/robo/src/Common/DynamicParams.php
index 28a1d150f9..dfee6f91e6 100644
--- a/vendor/consolidation/robo/src/Common/DynamicParams.php
+++ b/vendor/consolidation/robo/src/Common/DynamicParams.php
@@ -1,4 +1,5 @@
 <?php
+
 namespace Robo\Common;
 
 /**
@@ -20,7 +21,7 @@ trait DynamicParams
     public function __call($property, $args)
     {
         if (!property_exists($this, $property)) {
-            throw new \RuntimeException("Property $property in task ".get_class($this).' does not exists');
+            throw new \RuntimeException("Property $property in task " . get_class($this) . ' does not exists');
         }
 
         // toggle boolean values
diff --git a/vendor/consolidation/robo/src/Common/ExecCommand.php b/vendor/consolidation/robo/src/Common/ExecCommand.php
index c3e6c3af63..aec7587bc3 100644
--- a/vendor/consolidation/robo/src/Common/ExecCommand.php
+++ b/vendor/consolidation/robo/src/Common/ExecCommand.php
@@ -1,4 +1,5 @@
 <?php
+
 namespace Robo\Common;
 
 use Robo\Result;
@@ -124,6 +125,9 @@ protected function useCallOnWindows($cmd)
         return $cmd;
     }
 
+    /**
+     * {@inheritdoc}
+     */
     protected function getCommandDescription()
     {
         return $this->process->getCommandLine();
diff --git a/vendor/consolidation/robo/src/Common/ExecOneCommand.php b/vendor/consolidation/robo/src/Common/ExecOneCommand.php
index 6013751497..7a908fc256 100644
--- a/vendor/consolidation/robo/src/Common/ExecOneCommand.php
+++ b/vendor/consolidation/robo/src/Common/ExecOneCommand.php
@@ -1,4 +1,5 @@
 <?php
+
 namespace Robo\Common;
 
 /**
diff --git a/vendor/consolidation/robo/src/Common/ExecTrait.php b/vendor/consolidation/robo/src/Common/ExecTrait.php
index 85a9f4c9d5..5c6bc54a9b 100644
--- a/vendor/consolidation/robo/src/Common/ExecTrait.php
+++ b/vendor/consolidation/robo/src/Common/ExecTrait.php
@@ -66,22 +66,60 @@ trait ExecTrait
      */
     abstract public function getCommandDescription();
 
-    /** Typically provided by Timer trait via ProgressIndicatorAwareTrait. */
-    abstract public function startTimer();
-    abstract public function stopTimer();
-    abstract public function getExecutionTime();
+    /**
+     * @see \Robo\Common\ProgressIndicatorAwareTrait
+     * @see \Robo\Common\Timer
+     */
+    abstract protected function startTimer();
+
+    /**
+     * @see \Robo\Common\ProgressIndicatorAwareTrait
+     * @see \Robo\Common\Timer
+     */
+    abstract protected function stopTimer();
+
+    /**
+     * @return null|float
+     *
+     * @see \Robo\Common\ProgressIndicatorAwareTrait
+     * @see \Robo\Common\Timer
+     */
+    abstract protected function getExecutionTime();
+
+    /**
+     * @return bool
+     *
+     * @see \Robo\Common\TaskIO
+     */
+    abstract protected function hideTaskProgress();
+
+    /**
+     * @param bool $inProgress
+     *
+     * @see \Robo\Common\TaskIO
+     */
+    abstract protected function showTaskProgress($inProgress);
 
     /**
-     * Typically provided by TaskIO Trait.
+     * @param string $text
+     * @param null|array $context
+     *
+     * @see \Robo\Common\TaskIO
      */
-    abstract public function hideTaskProgress();
-    abstract public function showTaskProgress($inProgress);
-    abstract public function printTaskInfo($text, $context = null);
+    abstract protected function printTaskInfo($text, $context = null);
 
     /**
-     * Typically provided by VerbosityThresholdTrait.
+     * @return bool
+     *
+     * @see \Robo\Common\VerbosityThresholdTrait
      */
     abstract public function verbosityMeetsThreshold();
+
+    /**
+     * @param string $message
+     *
+     * @see \Robo\Common\VerbosityThresholdTrait
+     */
     abstract public function writeMessage($message);
 
     /**
@@ -105,6 +143,8 @@ public function detectInteractive()
     /**
      * Executes command in background mode (asynchronously)
      *
+     * @param bool $arg
+     *
      * @return $this
      */
     public function background($arg = true)
@@ -141,6 +181,11 @@ public function idleTimeout($timeout)
 
     /**
      * Set a single environment variable, or multiple.
+     *
+     * @param string|array $env
+     * @param bool|string $value
+     *
+     * @return $this
      */
     public function env($env, $value = null)
     {
@@ -179,7 +224,7 @@ public function setInput($input)
     /**
      * Attach tty to process for interactive input
      *
-     * @param $interactive bool
+     * @param bool $interactive
      *
      * @return $this
      */
@@ -275,7 +320,7 @@ public function printMetadata($arg)
     }
 
     /**
-     * @param Process $process
+     * @param \Symfony\Component\Process\Process $process
      * @param callable $output_callback
      *
      * @return \Robo\ResultData
@@ -354,9 +399,6 @@ protected function execute($process, $output_callback = null)
         return new ResultData($this->process->getExitCode());
     }
 
-    /**
-     *
-     */
     protected function stop()
     {
         if ($this->background && isset($this->process) && $this->process->isRunning()) {
@@ -384,9 +426,9 @@ protected function printAction($context = [])
     }
 
     /**
-     * @param $command
+     * @param string $command
      *
-     * @return mixed
+     * @return string
      */
     protected function formatCommandDisplay($command)
     {
diff --git a/vendor/consolidation/robo/src/Common/IO.php b/vendor/consolidation/robo/src/Common/IO.php
index d6c77bff8d..9f0a9955ee 100644
--- a/vendor/consolidation/robo/src/Common/IO.php
+++ b/vendor/consolidation/robo/src/Common/IO.php
@@ -1,4 +1,5 @@
 <?php
+
 namespace Robo\Common;
 
 use Symfony\Component\Console\Helper\QuestionHelper;
@@ -19,7 +20,9 @@ trait IO
     /**
      * Provide access to SymfonyStyle object.
      *
-     * @return SymfonyStyle
+     * @deprecated Use a style injector instead
+     *
+     * @return \Symfony\Component\Console\Style\SymfonyStyle
      *
      * @see http://symfony.com/blog/new-in-symfony-2-8-console-style-guide
      */
@@ -125,12 +128,13 @@ protected function askDefault($question, $default)
 
     /**
      * @param string $question
+     * @param bool $default
      *
      * @return string
      */
-    protected function confirm($question)
+    protected function confirm($question, $default = false)
     {
-        return $this->doAsk(new ConfirmationQuestion($this->formatQuestion($question . ' (y/n)'), false));
+        return $this->doAsk(new ConfirmationQuestion($this->formatQuestion($question . ' (y/n)'), $default));
     }
 
     /**
diff --git a/vendor/consolidation/robo/src/Common/InflectionTrait.php b/vendor/consolidation/robo/src/Common/InflectionTrait.php
index 8bc4e831c3..0dec2aa629 100644
--- a/vendor/consolidation/robo/src/Common/InflectionTrait.php
+++ b/vendor/consolidation/robo/src/Common/InflectionTrait.php
@@ -1,4 +1,5 @@
 <?php
+
 namespace Robo\Common;
 
 use Robo\Contract\InflectionInterface;
diff --git a/vendor/consolidation/robo/src/Common/OutputAdapter.php b/vendor/consolidation/robo/src/Common/OutputAdapter.php
index b8e795f23c..556a2fe800 100644
--- a/vendor/consolidation/robo/src/Common/OutputAdapter.php
+++ b/vendor/consolidation/robo/src/Common/OutputAdapter.php
@@ -1,4 +1,5 @@
 <?php
+
 namespace Robo\Common;
 
 use Robo\Contract\OutputAdapterInterface;
@@ -13,6 +14,9 @@ class OutputAdapter implements OutputAdapterInterface, OutputAwareInterface
 {
     use OutputAwareTrait;
 
+    /**
+     * @var int[]
+     */
     protected $verbosityMap = [
         VerbosityThresholdInterface::VERBOSITY_NORMAL => OutputInterface::VERBOSITY_NORMAL,
         VerbosityThresholdInterface::VERBOSITY_VERBOSE => OutputInterface::VERBOSITY_VERBOSE,
@@ -20,6 +24,9 @@ class OutputAdapter implements OutputAdapterInterface, OutputAwareInterface
         VerbosityThresholdInterface::VERBOSITY_DEBUG => OutputInterface::VERBOSITY_DEBUG,
     ];
 
+    /**
+     * {@inheritdoc}
+     */
     public function verbosityMeetsThreshold($verbosityThreshold)
     {
         if (!isset($this->verbosityMap[$verbosityThreshold])) {
@@ -31,6 +38,9 @@ public function verbosityMeetsThreshold($verbosityThreshold)
         return $verbosity >= $verbosityThreshold;
     }
 
+    /**
+     * {@inheritdoc}
+     */
     public function writeMessage($message)
     {
         $this->output()->write($message);
diff --git a/vendor/consolidation/robo/src/Common/ProcessExecutor.php b/vendor/consolidation/robo/src/Common/ProcessExecutor.php
index f78a477521..a8629780b0 100644
--- a/vendor/consolidation/robo/src/Common/ProcessExecutor.php
+++ b/vendor/consolidation/robo/src/Common/ProcessExecutor.php
@@ -16,14 +16,19 @@ class ProcessExecutor implements ConfigAwareInterface, LoggerAwareInterface, Out
     use OutputAwareTrait;
 
     /**
-     * @param Process $process
-     * @return type
+     * @param \Symfony\Component\Process\Process $process
      */
     public function __construct(Process $process)
     {
         $this->process = $process;
     }
 
+    /**
+     * @param \League\Container\ContainerInterface $container
+     * @param \Symfony\Component\Process\Process $process
+     *
+     * @return static
+     */
     public static function create($container, $process)
     {
         $processExecutor = new self($process);
@@ -37,7 +42,7 @@ public static function create($container, $process)
     }
 
     /**
-     * @return string
+     * {@inheritdoc}
      */
     protected function getCommandDescription()
     {
diff --git a/vendor/consolidation/robo/src/Common/ProcessUtils.php b/vendor/consolidation/robo/src/Common/ProcessUtils.php
index 7dc4e55317..5dcb3e70ca 100644
--- a/vendor/consolidation/robo/src/Common/ProcessUtils.php
+++ b/vendor/consolidation/robo/src/Common/ProcessUtils.php
@@ -26,15 +26,17 @@ private function __construct()
     /**
      * Escapes a string to be used as a shell argument.
      *
-     * @param string $argument The argument that will be escaped
+     * @param string $argument
+     *   The argument that will be escaped.
      *
-     * @return string The escaped argument
+     * @return string
+     *   The escaped argument.
      *
      * @deprecated since version 3.3, to be removed in 4.0. Use a command line array or give env vars to the `Process::start/run()` method instead.
      */
     public static function escapeArgument($argument)
     {
-        @trigger_error('The '.__METHOD__.'() method is a copy of a method that was deprecated by Symfony 3.3 and removed in Symfony 4; it will be removed in Robo 2.0.', E_USER_DEPRECATED);
+        @trigger_error('The ' . __METHOD__ . '() method is a copy of a method that was deprecated by Symfony 3.3 and removed in Symfony 4; it will be removed in Robo 2.0.', E_USER_DEPRECATED);
 
         //Fix for PHP bug #43784 escapeshellarg removes % from given string
         //Fix for PHP bug #49446 escapeshellarg doesn't work on Windows
@@ -52,7 +54,7 @@ public static function escapeArgument($argument)
                     $escapedArgument .= '\\"';
                 } elseif (self::isSurroundedBy($part, '%')) {
                     // Avoid environment variable expansion
-                    $escapedArgument .= '^%"'.substr($part, 1, -1).'"^%';
+                    $escapedArgument .= '^%"' . substr($part, 1, -1) . '"^%';
                 } else {
                     // escape trailing backslash
                     if ('\\' === substr($part, -1)) {
@@ -63,13 +65,13 @@ public static function escapeArgument($argument)
                 }
             }
             if ($quote) {
-                $escapedArgument = '"'.$escapedArgument.'"';
+                $escapedArgument = '"' . $escapedArgument . '"';
             }
 
             return $escapedArgument;
         }
 
-        return "'".str_replace("'", "'\\''", $argument)."'";
+        return "'" . str_replace("'", "'\\''", $argument) . "'";
     }
 
     private static function isSurroundedBy($arg, $char)
diff --git a/vendor/consolidation/robo/src/Common/ProgressIndicator.php b/vendor/consolidation/robo/src/Common/ProgressIndicator.php
index fe6c9298ee..1da42a6df7 100644
--- a/vendor/consolidation/robo/src/Common/ProgressIndicator.php
+++ b/vendor/consolidation/robo/src/Common/ProgressIndicator.php
@@ -1,4 +1,5 @@
 <?php
+
 namespace Robo\Common;
 
 /**
diff --git a/vendor/consolidation/robo/src/Common/ProgressIndicatorAwareTrait.php b/vendor/consolidation/robo/src/Common/ProgressIndicatorAwareTrait.php
index 060e039a18..544ecd234b 100644
--- a/vendor/consolidation/robo/src/Common/ProgressIndicatorAwareTrait.php
+++ b/vendor/consolidation/robo/src/Common/ProgressIndicatorAwareTrait.php
@@ -1,4 +1,5 @@
 <?php
+
 namespace Robo\Common;
 
 use Robo\Contract\ProgressIndicatorAwareInterface;
@@ -24,7 +25,7 @@ public function progressIndicatorSteps()
     /**
      * @param null|\Robo\Common\ProgressIndicator $progressIndicator
      *
-     * @return ProgressIndicatorAwareInterface
+     * @return $this
      */
     public function setProgressIndicator($progressIndicator)
     {
@@ -78,7 +79,8 @@ protected function startProgressIndicator()
     {
         $this->startTimer();
         if ($this instanceof VerbosityThresholdInterface
-            && !$this->verbosityMeetsThreshold()) {
+            && !$this->verbosityMeetsThreshold()
+        ) {
             return;
         }
         if (!$this->progressIndicator) {
diff --git a/vendor/consolidation/robo/src/Common/ResourceExistenceChecker.php b/vendor/consolidation/robo/src/Common/ResourceExistenceChecker.php
index 233f90a9b7..ad0a614a7f 100644
--- a/vendor/consolidation/robo/src/Common/ResourceExistenceChecker.php
+++ b/vendor/consolidation/robo/src/Common/ResourceExistenceChecker.php
@@ -1,4 +1,5 @@
 <?php
+
 namespace Robo\Common;
 
 trait ResourceExistenceChecker
@@ -7,9 +8,11 @@ trait ResourceExistenceChecker
      * Checks if the given input is a file or folder.
      *
      * @param string|string[] $resources
-     * @param string $type "file", "dir", "fileAndDir"
+     * @param string $type
+     *   Allowed values: "file", "dir", "fileAndDir"
      *
-     * @return bool True if no errors were encountered otherwise false.
+     * @return bool
+     *   True if no errors were encountered otherwise false.
      */
     protected function checkResources($resources, $type = 'fileAndDir')
     {
@@ -41,8 +44,10 @@ protected function checkResources($resources, $type = 'fileAndDir')
      *
      * It will print an error as well on the console.
      *
-     * @param string $resource File or folder.
-     * @param string $type "file", "dir", "fileAndDir"
+     * @param string $resource
+     *   File or folder.
+     * @param string $type
+     *   Allowed values: "file", "dir", "fileAndDir".
      *
      * @return bool
      */
diff --git a/vendor/consolidation/robo/src/Common/TaskIO.php b/vendor/consolidation/robo/src/Common/TaskIO.php
index 49b5ccd86c..297982a50e 100644
--- a/vendor/consolidation/robo/src/Common/TaskIO.php
+++ b/vendor/consolidation/robo/src/Common/TaskIO.php
@@ -1,4 +1,5 @@
 <?php
+
 namespace Robo\Common;
 
 use Robo\Robo;
@@ -22,7 +23,7 @@ trait TaskIO
     use VerbosityThresholdTrait;
 
     /**
-     * @return mixed|null|\Psr\Log\LoggerInterface
+     * @return null|\Psr\Log\LoggerInterface
      */
     public function logger()
     {
@@ -169,7 +170,7 @@ protected function hideTaskProgress()
     }
 
     /**
-     * @param $inProgress
+     * @param bool $inProgress
      */
     protected function showTaskProgress($inProgress)
     {
@@ -218,7 +219,8 @@ protected function getPrintedTaskName($task = null)
     /**
      * @param null|array $context
      *
-     * @return array with context information
+     * @return array
+     *   Context information.
      */
     protected function getTaskContext($context = null)
     {
diff --git a/vendor/consolidation/robo/src/Common/TimeKeeper.php b/vendor/consolidation/robo/src/Common/TimeKeeper.php
index 1cd3e33444..a57881e604 100644
--- a/vendor/consolidation/robo/src/Common/TimeKeeper.php
+++ b/vendor/consolidation/robo/src/Common/TimeKeeper.php
@@ -1,4 +1,5 @@
 <?php
+
 namespace Robo\Common;
 
 class TimeKeeper
@@ -44,9 +45,10 @@ public function elapsed()
     }
 
     /**
-     * Format a duration into a human-readable time
+     * Format a duration into a human-readable time.
      *
-     * @param float $duration Duration in seconds, with fractional component
+     * @param float $duration
+     *   Duration in seconds, with fractional component.
      *
      * @return string
      */
@@ -64,6 +66,6 @@ public static function formatDuration($duration)
         if ($duration > self::MINUTE) {
             return gmdate("i:s", $duration);
         }
-        return round($duration, 3).'s';
+        return round($duration, 3) . 's';
     }
 }
diff --git a/vendor/consolidation/robo/src/Common/Timer.php b/vendor/consolidation/robo/src/Common/Timer.php
index 955eb5bb3b..dfa8b14cfc 100644
--- a/vendor/consolidation/robo/src/Common/Timer.php
+++ b/vendor/consolidation/robo/src/Common/Timer.php
@@ -1,4 +1,5 @@
 <?php
+
 namespace Robo\Common;
 
 trait Timer
diff --git a/vendor/consolidation/robo/src/Common/VerbosityThresholdTrait.php b/vendor/consolidation/robo/src/Common/VerbosityThresholdTrait.php
index 2fc51c22b7..afdeff5c5c 100644
--- a/vendor/consolidation/robo/src/Common/VerbosityThresholdTrait.php
+++ b/vendor/consolidation/robo/src/Common/VerbosityThresholdTrait.php
@@ -1,4 +1,5 @@
 <?php
+
 namespace Robo\Common;
 
 use Robo\Robo;
@@ -20,13 +21,23 @@
  */
 trait VerbosityThresholdTrait
 {
-    /** var OutputAdapterInterface */
+    /**
+     * @var \Robo\Contract\OutputAdapterInterface
+     */
     protected $outputAdapter;
+
+    /**
+     * @var int
+     */
     protected $verbosityThreshold = 0;
 
     /**
-     * Required verbocity level before any TaskIO output will be produced.
+     * Required verbosity level before any TaskIO output will be produced.
      * e.g. OutputInterface::VERBOSITY_VERBOSE
+     *
+     * @param int $verbosityThreshold
+     *
+     * @return $this
      */
     public function setVerbosityThreshold($verbosityThreshold)
     {
@@ -34,6 +45,9 @@ public function setVerbosityThreshold($verbosityThreshold)
         return $this;
     }
 
+    /**
+     * @return int
+     */
     public function verbosityThreshold()
     {
         return $this->verbosityThreshold;
@@ -45,18 +59,24 @@ public function setOutputAdapter(OutputAdapterInterface $outputAdapter)
     }
 
     /**
-     * @return OutputAdapterInterface
+     * @return \Robo\Contract\OutputAdapterInterface
      */
     public function outputAdapter()
     {
         return $this->outputAdapter;
     }
 
+    /**
+     * @return bool
+     */
     public function hasOutputAdapter()
     {
         return isset($this->outputAdapter);
     }
 
+    /**
+     * @return bool
+     */
     public function verbosityMeetsThreshold()
     {
         if ($this->hasOutputAdapter()) {
@@ -67,7 +87,9 @@ public function verbosityMeetsThreshold()
 
     /**
      * Print a message if the selected verbosity level is over this task's
-     * verbosity threshhold.
+     * verbosity threshold.
+     *
+     * @param string $message
      */
     public function writeMessage($message)
     {
diff --git a/vendor/consolidation/robo/src/Config.php b/vendor/consolidation/robo/src/Config.php
index 9e9370d811..e1b328a631 100644
--- a/vendor/consolidation/robo/src/Config.php
+++ b/vendor/consolidation/robo/src/Config.php
@@ -1,4 +1,5 @@
 <?php
+
 namespace Robo;
 
 /**
diff --git a/vendor/consolidation/robo/src/Config/Config.php b/vendor/consolidation/robo/src/Config/Config.php
index 78b135a32a..7f2186e94c 100644
--- a/vendor/consolidation/robo/src/Config/Config.php
+++ b/vendor/consolidation/robo/src/Config/Config.php
@@ -1,4 +1,5 @@
 <?php
+
 namespace Robo\Config;
 
 use Consolidation\Config\Util\ConfigOverlay;
@@ -70,6 +71,10 @@ public function getGlobalOptionDefaultValues()
 
     /**
      * Remove the 'options.' prefix from the global options list.
+     *
+     * @param array $globalOptions
+     *
+     * @return array
      */
     protected function trimPrefixFromGlobalOptions($globalOptions)
     {
diff --git a/vendor/consolidation/robo/src/Config/GlobalOptionDefaultValuesInterface.php b/vendor/consolidation/robo/src/Config/GlobalOptionDefaultValuesInterface.php
index f763945548..313494f730 100644
--- a/vendor/consolidation/robo/src/Config/GlobalOptionDefaultValuesInterface.php
+++ b/vendor/consolidation/robo/src/Config/GlobalOptionDefaultValuesInterface.php
@@ -1,4 +1,5 @@
 <?php
+
 namespace Robo\Config;
 
 /**
diff --git a/vendor/consolidation/robo/src/Contract/CommandInterface.php b/vendor/consolidation/robo/src/Contract/CommandInterface.php
index e5099b043c..4d8cccecfd 100644
--- a/vendor/consolidation/robo/src/Contract/CommandInterface.php
+++ b/vendor/consolidation/robo/src/Contract/CommandInterface.php
@@ -1,4 +1,5 @@
 <?php
+
 namespace Robo\Contract;
 
 /**
diff --git a/vendor/consolidation/robo/src/Contract/CompletionInterface.php b/vendor/consolidation/robo/src/Contract/CompletionInterface.php
index a3b1c4e8da..8521ff3025 100644
--- a/vendor/consolidation/robo/src/Contract/CompletionInterface.php
+++ b/vendor/consolidation/robo/src/Contract/CompletionInterface.php
@@ -1,4 +1,5 @@
 <?php
+
 namespace Robo\Contract;
 
 /**
diff --git a/vendor/consolidation/robo/src/Contract/IOAwareInterface.php b/vendor/consolidation/robo/src/Contract/IOAwareInterface.php
index 2daa5fb64c..d5d8b32dc3 100644
--- a/vendor/consolidation/robo/src/Contract/IOAwareInterface.php
+++ b/vendor/consolidation/robo/src/Contract/IOAwareInterface.php
@@ -6,7 +6,7 @@
 
 namespace Robo\Contract;
 
-use \Symfony\Component\Console\Input\InputAwareInterface;
+use Symfony\Component\Console\Input\InputAwareInterface;
 
 interface IOAwareInterface extends OutputAwareInterface, InputAwareInterface
 {
diff --git a/vendor/consolidation/robo/src/Contract/InflectionInterface.php b/vendor/consolidation/robo/src/Contract/InflectionInterface.php
index 449cecfecb..a15680c61e 100644
--- a/vendor/consolidation/robo/src/Contract/InflectionInterface.php
+++ b/vendor/consolidation/robo/src/Contract/InflectionInterface.php
@@ -1,4 +1,5 @@
 <?php
+
 namespace Robo\Contract;
 
 interface InflectionInterface
diff --git a/vendor/consolidation/robo/src/Contract/OutputAdapterInterface.php b/vendor/consolidation/robo/src/Contract/OutputAdapterInterface.php
index 948d384cba..7002579262 100644
--- a/vendor/consolidation/robo/src/Contract/OutputAdapterInterface.php
+++ b/vendor/consolidation/robo/src/Contract/OutputAdapterInterface.php
@@ -1,4 +1,5 @@
 <?php
+
 namespace Robo\Contract;
 
 /**
@@ -6,6 +7,15 @@
  */
 interface OutputAdapterInterface
 {
+    /**
+     * @param int $verbosityThreshold
+     *
+     * @return bool
+     */
     public function verbosityMeetsThreshold($verbosityThreshold);
+
+    /**
+     * @param string $message
+     */
     public function writeMessage($message);
 }
diff --git a/vendor/consolidation/robo/src/Contract/PrintedInterface.php b/vendor/consolidation/robo/src/Contract/PrintedInterface.php
index d380643ba1..3cf4edfa26 100644
--- a/vendor/consolidation/robo/src/Contract/PrintedInterface.php
+++ b/vendor/consolidation/robo/src/Contract/PrintedInterface.php
@@ -1,4 +1,5 @@
 <?php
+
 namespace Robo\Contract;
 
 /**
diff --git a/vendor/consolidation/robo/src/Contract/ProgressIndicatorAwareInterface.php b/vendor/consolidation/robo/src/Contract/ProgressIndicatorAwareInterface.php
index 47cede9ce0..7bc8243532 100644
--- a/vendor/consolidation/robo/src/Contract/ProgressIndicatorAwareInterface.php
+++ b/vendor/consolidation/robo/src/Contract/ProgressIndicatorAwareInterface.php
@@ -1,4 +1,5 @@
 <?php
+
 namespace Robo\Contract;
 
 /**
diff --git a/vendor/consolidation/robo/src/Contract/RollbackInterface.php b/vendor/consolidation/robo/src/Contract/RollbackInterface.php
index 394822cd45..947544e4c2 100644
--- a/vendor/consolidation/robo/src/Contract/RollbackInterface.php
+++ b/vendor/consolidation/robo/src/Contract/RollbackInterface.php
@@ -1,4 +1,5 @@
 <?php
+
 namespace Robo\Contract;
 
 /**
diff --git a/vendor/consolidation/robo/src/Contract/SimulatedInterface.php b/vendor/consolidation/robo/src/Contract/SimulatedInterface.php
index 826f4b96c2..f98f9a84da 100644
--- a/vendor/consolidation/robo/src/Contract/SimulatedInterface.php
+++ b/vendor/consolidation/robo/src/Contract/SimulatedInterface.php
@@ -1,4 +1,5 @@
 <?php
+
 namespace Robo\Contract;
 
 /**
diff --git a/vendor/consolidation/robo/src/Contract/TaskInterface.php b/vendor/consolidation/robo/src/Contract/TaskInterface.php
index c477d16cfa..82366d8407 100644
--- a/vendor/consolidation/robo/src/Contract/TaskInterface.php
+++ b/vendor/consolidation/robo/src/Contract/TaskInterface.php
@@ -1,4 +1,5 @@
 <?php
+
 namespace Robo\Contract;
 
 /**
diff --git a/vendor/consolidation/robo/src/Contract/VerbosityThresholdInterface.php b/vendor/consolidation/robo/src/Contract/VerbosityThresholdInterface.php
index e63a1f7044..23bd29c29c 100644
--- a/vendor/consolidation/robo/src/Contract/VerbosityThresholdInterface.php
+++ b/vendor/consolidation/robo/src/Contract/VerbosityThresholdInterface.php
@@ -1,4 +1,5 @@
 <?php
+
 namespace Robo\Contract;
 
 use Robo\Contract\OutputAdapterInterface;
@@ -14,11 +15,40 @@ interface VerbosityThresholdInterface
     const VERBOSITY_VERY_VERBOSE = 3;
     const VERBOSITY_DEBUG = 4;
 
+    /**
+     * @param int $verbosityThreshold
+     *
+     * @return $this
+     */
     public function setVerbosityThreshold($verbosityThreshold);
+
+    /**
+     * @return int
+     */
     public function verbosityThreshold();
+
+    /**
+     * @param \Robo\Contract\OutputAdapterInterface $outputAdapter
+     */
     public function setOutputAdapter(OutputAdapterInterface $outputAdapter);
+
+    /**
+     * @return \Robo\Contract\OutputAdapterInterface
+     */
     public function outputAdapter();
+
+    /**
+     * @return bool
+     */
     public function hasOutputAdapter();
+
+    /**
+     * @return int
+     */
     public function verbosityMeetsThreshold();
+
+    /**
+     * @param string $message
+     */
     public function writeMessage($message);
 }
diff --git a/vendor/consolidation/robo/src/Contract/WrappedTaskInterface.php b/vendor/consolidation/robo/src/Contract/WrappedTaskInterface.php
index 65028769fa..d164c6a317 100644
--- a/vendor/consolidation/robo/src/Contract/WrappedTaskInterface.php
+++ b/vendor/consolidation/robo/src/Contract/WrappedTaskInterface.php
@@ -1,4 +1,5 @@
 <?php
+
 namespace Robo\Contract;
 
 interface WrappedTaskInterface extends TaskInterface
diff --git a/vendor/consolidation/robo/src/Exception/AbortTasksException.php b/vendor/consolidation/robo/src/Exception/AbortTasksException.php
index 120451f0ae..118907574b 100644
--- a/vendor/consolidation/robo/src/Exception/AbortTasksException.php
+++ b/vendor/consolidation/robo/src/Exception/AbortTasksException.php
@@ -1,4 +1,5 @@
 <?php
+
 namespace Robo\Exception;
 
 /**
diff --git a/vendor/consolidation/robo/src/Exception/TaskException.php b/vendor/consolidation/robo/src/Exception/TaskException.php
index fdc84a5e4b..3b6a48497c 100644
--- a/vendor/consolidation/robo/src/Exception/TaskException.php
+++ b/vendor/consolidation/robo/src/Exception/TaskException.php
@@ -1,8 +1,16 @@
 <?php
+
 namespace Robo\Exception;
 
 class TaskException extends \Exception
 {
+
+    /**
+     * TaskException constructor.
+     *
+     * @param string|object $class
+     * @param string $message
+     */
     public function __construct($class, $message)
     {
         if (is_object($class)) {
diff --git a/vendor/consolidation/robo/src/Exception/TaskExitException.php b/vendor/consolidation/robo/src/Exception/TaskExitException.php
index 9db5329ab6..6f1a627b34 100644
--- a/vendor/consolidation/robo/src/Exception/TaskExitException.php
+++ b/vendor/consolidation/robo/src/Exception/TaskExitException.php
@@ -1,8 +1,17 @@
 <?php
+
 namespace Robo\Exception;
 
 class TaskExitException extends \Exception
 {
+
+    /**
+     * TaskExitException constructor.
+     *
+     * @param string|object $class
+     * @param string $message
+     * @param int $status
+     */
     public function __construct($class, $message, $status)
     {
         if (is_object($class)) {
diff --git a/vendor/consolidation/robo/src/GlobalOptionsEventListener.php b/vendor/consolidation/robo/src/GlobalOptionsEventListener.php
index b26d10cd0e..b32cb25857 100644
--- a/vendor/consolidation/robo/src/GlobalOptionsEventListener.php
+++ b/vendor/consolidation/robo/src/GlobalOptionsEventListener.php
@@ -1,4 +1,5 @@
 <?php
+
 namespace Robo;
 
 use Symfony\Component\Console\ConsoleEvents;
@@ -12,10 +13,14 @@ class GlobalOptionsEventListener implements EventSubscriberInterface, ConfigAwar
 {
     use ConfigAwareTrait;
 
-    /** @var Application */
+    /**
+     * @var \Robo\Application
+     */
     protected $application;
 
-    /** @var string */
+    /**
+     * @var string
+     */
     protected $prefix;
 
     /**
@@ -28,6 +33,10 @@ public function __construct()
 
     /**
      * Add a reference to the Symfony Console application object.
+     *
+     * @param \Robo\Application $application
+     *
+     * @return $this
      */
     public function setApplication($application)
     {
@@ -37,7 +46,10 @@ public function setApplication($application)
 
     /**
      * Stipulate the prefix to use for option injection.
+     *
      * @param string $prefix
+     *
+     * @return $this
      */
     public function setGlobalOptionsPrefix($prefix)
     {
@@ -118,6 +130,7 @@ public function setConfigurationValues(ConsoleCommandEvent $event)
      * the input string contains no '=' character, then the value will be 'true'.
      *
      * @param string $value
+     *
      * @return array
      */
     protected function splitConfigKeyValue($value)
@@ -130,6 +143,8 @@ protected function splitConfigKeyValue($value)
     /**
      * Get default option values from the Symfony Console application, if
      * it is available.
+     *
+     * @return array
      */
     protected function applicationOptionDefaultValues()
     {
diff --git a/vendor/consolidation/robo/src/LoadAllTasks.php b/vendor/consolidation/robo/src/LoadAllTasks.php
index 3183d5b6a3..6a6b9cbf38 100644
--- a/vendor/consolidation/robo/src/LoadAllTasks.php
+++ b/vendor/consolidation/robo/src/LoadAllTasks.php
@@ -1,4 +1,5 @@
 <?php
+
 namespace Robo;
 
 trait LoadAllTasks
diff --git a/vendor/consolidation/robo/src/Log/ResultPrinter.php b/vendor/consolidation/robo/src/Log/ResultPrinter.php
index a6f166a093..6e0dfd83f4 100644
--- a/vendor/consolidation/robo/src/Log/ResultPrinter.php
+++ b/vendor/consolidation/robo/src/Log/ResultPrinter.php
@@ -1,4 +1,5 @@
 <?php
+
 namespace Robo\Log;
 
 use Robo\Result;
@@ -6,7 +7,6 @@
 use Robo\Contract\ProgressIndicatorAwareInterface;
 use Robo\Contract\VerbosityThresholdInterface;
 use Robo\Common\ProgressIndicatorAwareTrait;
-
 use Psr\Log\LogLevel;
 use Psr\Log\LoggerAwareInterface;
 use Psr\Log\LoggerAwareTrait;
@@ -27,7 +27,7 @@ class ResultPrinter implements LoggerAwareInterface, ProgressIndicatorAwareInter
      *
      * @param \Robo\Result $result
      *
-     * @return bool
+     * @return null|bool
      */
     public function printResult(Result $result)
     {
diff --git a/vendor/consolidation/robo/src/Log/RoboLogLevel.php b/vendor/consolidation/robo/src/Log/RoboLogLevel.php
index d7d5eb0a6e..7a710b08b9 100644
--- a/vendor/consolidation/robo/src/Log/RoboLogLevel.php
+++ b/vendor/consolidation/robo/src/Log/RoboLogLevel.php
@@ -1,4 +1,5 @@
 <?php
+
 namespace Robo\Log;
 
 class RoboLogLevel extends \Consolidation\Log\ConsoleLogLevel
diff --git a/vendor/consolidation/robo/src/Log/RoboLogStyle.php b/vendor/consolidation/robo/src/Log/RoboLogStyle.php
index e4999a8793..2c1b71ee82 100644
--- a/vendor/consolidation/robo/src/Log/RoboLogStyle.php
+++ b/vendor/consolidation/robo/src/Log/RoboLogStyle.php
@@ -1,4 +1,5 @@
 <?php
+
 namespace Robo\Log;
 
 use Robo\Common\TimeKeeper;
diff --git a/vendor/consolidation/robo/src/Log/RoboLogger.php b/vendor/consolidation/robo/src/Log/RoboLogger.php
index 75cf23f7cc..2ff3b384bc 100644
--- a/vendor/consolidation/robo/src/Log/RoboLogger.php
+++ b/vendor/consolidation/robo/src/Log/RoboLogger.php
@@ -1,8 +1,8 @@
 <?php
+
 namespace Robo\Log;
 
 use Consolidation\Log\Logger;
-
 use Psr\Log\LogLevel;
 use Symfony\Component\Console\Output\OutputInterface;
 
diff --git a/vendor/consolidation/robo/src/Result.php b/vendor/consolidation/robo/src/Result.php
index 7d77935209..b343b8c565 100644
--- a/vendor/consolidation/robo/src/Result.php
+++ b/vendor/consolidation/robo/src/Result.php
@@ -1,4 +1,5 @@
 <?php
+
 namespace Robo;
 
 use Robo\Contract\TaskInterface;
@@ -19,7 +20,7 @@ class Result extends ResultData
 
     /**
      * @param \Robo\Contract\TaskInterface $task
-     * @param string $exitCode
+     * @param int $exitCode
      * @param string $message
      * @param array $data
      */
@@ -37,6 +38,11 @@ public function __construct(TaskInterface $task, $exitCode, $message = '', $data
     /**
      * Tasks should always return a Result. However, they are also
      * allowed to return NULL or an array to indicate success.
+     *
+     * @param \Robo\Contract\TaskInterface $task
+     * @param \Robo\Result|\Robo\State\Data|\Robo\ResultData|array|null
+     *
+     * @return static
      */
     public static function ensureResult($task, $result)
     {
@@ -79,7 +85,7 @@ protected function printResult()
      * @param string $extension
      * @param string $service
      *
-     * @return \Robo\Result
+     * @return static
      */
     public static function errorMissingExtension(TaskInterface $task, $extension, $service)
     {
@@ -94,7 +100,7 @@ public static function errorMissingExtension(TaskInterface $task, $extension, $s
      * @param string $class
      * @param string $package
      *
-     * @return \Robo\Result
+     * @return static
      */
     public static function errorMissingPackage(TaskInterface $task, $class, $package)
     {
@@ -109,7 +115,7 @@ public static function errorMissingPackage(TaskInterface $task, $class, $package
      * @param string $message
      * @param array $data
      *
-     * @return \Robo\Result
+     * @return static
      */
     public static function error(TaskInterface $task, $message, $data = [])
     {
@@ -121,7 +127,7 @@ public static function error(TaskInterface $task, $message, $data = [])
      * @param \Exception $e
      * @param array $data
      *
-     * @return \Robo\Result
+     * @return static
      */
     public static function fromException(TaskInterface $task, \Exception $e, $data = [])
     {
@@ -137,7 +143,7 @@ public static function fromException(TaskInterface $task, \Exception $e, $data =
      * @param string $message
      * @param array $data
      *
-     * @return \Robo\Result
+     * @return static
      */
     public static function success(TaskInterface $task, $message = '', $data = [])
     {
diff --git a/vendor/consolidation/robo/src/ResultData.php b/vendor/consolidation/robo/src/ResultData.php
index 90baf6e924..bf064d6509 100644
--- a/vendor/consolidation/robo/src/ResultData.php
+++ b/vendor/consolidation/robo/src/ResultData.php
@@ -1,4 +1,5 @@
 <?php
+
 namespace Robo;
 
 use Consolidation\AnnotatedCommand\ExitCodeInterface;
@@ -40,7 +41,7 @@ public function __construct($exitCode = self::EXITCODE_OK, $message = '', $data
      * @param string $message
      * @param array $data
      *
-     * @return \Robo\ResultData
+     * @return static
      */
     public static function message($message, $data = [])
     {
@@ -51,7 +52,7 @@ public static function message($message, $data = [])
      * @param string $message
      * @param array $data
      *
-     * @return \Robo\ResultData
+     * @return static
      */
     public static function cancelled($message = '', $data = [])
     {
diff --git a/vendor/consolidation/robo/src/Robo.php b/vendor/consolidation/robo/src/Robo.php
index 0b39a0794d..46f48dc281 100644
--- a/vendor/consolidation/robo/src/Robo.php
+++ b/vendor/consolidation/robo/src/Robo.php
@@ -1,4 +1,5 @@
 <?php
+
 namespace Robo;
 
 use Composer\Autoload\ClassLoader;
@@ -20,12 +21,12 @@
 class Robo
 {
     const APPLICATION_NAME = 'Robo';
-    const VERSION = '1.4.9';
+    const VERSION = '1.4.13';
 
     /**
      * The currently active container object, or NULL if not initialized yet.
      *
-     * @var ContainerInterface|null
+     * @var \League\Container\ContainerInterface|null
      */
     protected static $container;
 
@@ -37,6 +38,7 @@ class Robo
      * @param null|string $appName
      * @param null|string $appVersion
      * @param null|\Symfony\Component\Console\Output\OutputInterface $output
+     * @param null|string $repository
      *
      * @return int
      */
@@ -51,7 +53,7 @@ public static function run($argv, $commandClasses, $appName = null, $appVersion
     /**
      * Sets a new global container.
      *
-     * @param ContainerInterface $container
+     * @param \League\Container\ContainerInterface $container
      *   A new container instance to replace the current.
      */
     public static function setContainer(ContainerInterface $container)
@@ -94,6 +96,10 @@ public static function hasContainer()
 
     /**
      * Create a config object and load it from the provided paths.
+     *
+     * @param string[] $paths
+     *
+     * @return \Consolidation\Config\ConfigInterface
      */
     public static function createConfiguration($paths)
     {
@@ -104,6 +110,9 @@ public static function createConfiguration($paths)
 
     /**
      * Use a simple config loader to load configuration values from specified paths
+     *
+     * @param string[] $paths
+     * @param null|\Consolidation\Config\ConfigInterface $config
      */
     public static function loadConfiguration($paths, $config = null)
     {
@@ -127,7 +136,7 @@ public static function loadConfiguration($paths, $config = null)
      * @param null|\Symfony\Component\Console\Input\InputInterface $input
      * @param null|\Symfony\Component\Console\Output\OutputInterface $output
      * @param null|\Robo\Application $app
-     * @param null|ConfigInterface $config
+     * @param null|\Consolidation\Config\ConfigInterface $config
      * @param null|\Composer\Autoload\ClassLoader $classLoader
      *
      * @return \League\Container\Container|\League\Container\ContainerInterface
@@ -174,7 +183,7 @@ public static function createDefaultContainer($input = null, $output = null, $ap
      *
      * @param \League\Container\ContainerInterface $container
      * @param \Symfony\Component\Console\Application $app
-     * @param ConfigInterface $config
+     * @param \Consolidation\Config\ConfigInterface $config
      * @param null|\Symfony\Component\Console\Input\InputInterface $input
      * @param null|\Symfony\Component\Console\Output\OutputInterface $output
      * @param null|\Composer\Autoload\ClassLoader $classLoader
@@ -237,10 +246,14 @@ public static function configureContainer(ContainerInterface $container, Symfony
             ->withMethodCall('addDefaultSimplifiers', []);
         $container->share('prepareTerminalWidthOption', \Consolidation\AnnotatedCommand\Options\PrepareTerminalWidthOption::class)
             ->withMethodCall('setApplication', ['application']);
+        $container->share('symfonyStyleInjector', \Robo\Symfony\SymfonyStyleInjector::class);
+        $container->share('parameterInjection', \Consolidation\AnnotatedCommand\ParameterInjection::class)
+            ->withMethodCall('register', ['Symfony\Component\Console\Style\SymfonyStyle', 'symfonyStyleInjector']);
         $container->share('commandProcessor', \Consolidation\AnnotatedCommand\CommandProcessor::class)
             ->withArgument('hookManager')
             ->withMethodCall('setFormatterManager', ['formatterManager'])
             ->withMethodCall('addPrepareFormatter', ['prepareTerminalWidthOption'])
+            ->withMethodCall('setParameterInjection', ['parameterInjection'])
             ->withMethodCall(
                 'setDisplayErrorFunction',
                 [
@@ -356,7 +369,7 @@ public static function resultPrinter()
     }
 
     /**
-     * @return ConfigInterface
+     * @return \Consolidation\Config\ConfigInterface
      */
     public static function config()
     {
@@ -399,6 +412,9 @@ public static function input()
         return static::service('input');
     }
 
+    /**
+     * @return \Robo\Common\ProcessExecutor
+     */
     public static function process(Process $process)
     {
         return ProcessExecutor::create(static::getContainer(), $process);
diff --git a/vendor/consolidation/robo/src/Runner.php b/vendor/consolidation/robo/src/Runner.php
index 026ac871bc..eb786b5ebd 100644
--- a/vendor/consolidation/robo/src/Runner.php
+++ b/vendor/consolidation/robo/src/Runner.php
@@ -1,4 +1,5 @@
 <?php
+
 namespace Robo;
 
 use Composer\Autoload\ClassLoader;
@@ -14,12 +15,12 @@
 
 class Runner implements ContainerAwareInterface
 {
-    const ROBOCLASS = 'RoboFile';
-    const ROBOFILE = 'RoboFile.php';
-
     use IO;
     use ContainerAwareTrait;
 
+    const ROBOCLASS = 'RoboFile';
+    const ROBOFILE = 'RoboFile.php';
+
     /**
      * @var string
      */
@@ -31,7 +32,9 @@ class Runner implements ContainerAwareInterface
     protected $roboFile;
 
     /**
-     * @var string working dir of Robo
+     * Working dir of Robo.
+     *
+     * @var string
      */
     protected $dir;
 
@@ -41,12 +44,16 @@ class Runner implements ContainerAwareInterface
     protected $errorConditions = [];
 
     /**
-     * @var string GitHub Repo for SelfUpdate
+     * GitHub Repo for SelfUpdate.
+     *
+     * @var string
      */
     protected $selfUpdateRepository = null;
 
     /**
-     * @var string filename to load configuration from (set to 'robo.yml' for RoboFiles)
+     * Filename to load configuration from (set to 'robo.yml' for RoboFiles).
+     *
+     * @var string
      */
     protected $configFilename = 'conf.yml';
 
@@ -56,7 +63,7 @@ class Runner implements ContainerAwareInterface
     protected $envConfigPrefix = false;
 
     /**
-     * @var \Composer\Autoload\ClassLoader
+     * @var null|\Composer\Autoload\ClassLoader
      */
     protected $classLoader = null;
 
@@ -79,6 +86,10 @@ public function __construct($roboClass = null, $roboFile = null)
         $this->dir = getcwd();
     }
 
+    /**
+     * @param string $msg
+     * @param string $errorType
+     */
     protected function errorCondition($msg, $errorType)
     {
         $this->errorConditions[$msg] = $errorType;
@@ -147,6 +158,9 @@ public function execute($argv, $appName = null, $appVersion = null, $output = nu
 
     /**
      * Get a list of locations where config files may be loaded
+     *
+     * @param string $userConfig
+     *
      * @return string[]
      */
     protected function getConfigFilePaths($userConfig)
@@ -258,16 +272,16 @@ public function registerCommandClasses($app, $commandClasses)
     }
 
     /**
-     * @param $relativeNamespace
+     * @param string $relativeNamespace
      *
-     * @return array|string[]
+     * @return string[]
      */
     protected function discoverCommandClasses($relativeNamespace)
     {
         /** @var \Robo\ClassDiscovery\RelativeNamespaceDiscovery $discovery */
         $discovery = Robo::service('relativeNamespaceDiscovery');
-        $discovery->setRelativeNamespace($relativeNamespace.'\Commands')
-            ->setSearchPattern('*Commands.php');
+        $discovery->setRelativeNamespace($relativeNamespace . '\Commands')
+            ->setSearchPattern('/.*Commands?\.php$/');
         return $discovery->getClasses();
     }
 
@@ -275,7 +289,7 @@ protected function discoverCommandClasses($relativeNamespace)
      * @param \Robo\Application $app
      * @param string|BuilderAwareInterface|ContainerAwareInterface $commandClass
      *
-     * @return mixed|void
+     * @return null|object
      */
     public function registerCommandClass($app, $commandClass)
     {
@@ -295,7 +309,7 @@ public function registerCommandClass($app, $commandClass)
     }
 
     /**
-     * @param string|BuilderAwareInterface|ContainerAwareInterface  $commandClass
+     * @param string|\Robo\Contract\BuilderAwareInterface|\League\Container\ContainerAwareInterface $commandClass
      *
      * @return null|object
      */
@@ -344,7 +358,8 @@ public function installRoboHandlers()
      *
      * @param array $args
      *
-     * @return array $args with shebang script removed
+     * @return array $args
+     *   With shebang script removed.
      */
     protected function shebang($args)
     {
@@ -371,9 +386,11 @@ protected function shebang($args)
      * Determine if the specified argument is a path to a shebang script.
      * If so, load it.
      *
-     * @param string $filepath file to check
+     * @param string $filepath
+     *   File to check.
      *
-     * @return bool Returns TRUE if shebang script was processed
+     * @return bool
+     *   Returns TRUE if shebang script was processed.
      */
     protected function isShebangFile($filepath)
     {
@@ -444,9 +461,9 @@ protected function processRoboOptions($argv)
 
         if (substr($argv[$pos], 0, 12) == '--load-from=') {
             $this->dir = substr($argv[$pos], 12);
-        } elseif (isset($argv[$pos +1])) {
-            $this->dir = $argv[$pos +1];
-            unset($argv[$pos +1]);
+        } elseif (isset($argv[$pos + 1])) {
+            $this->dir = $argv[$pos + 1];
+            unset($argv[$pos + 1]);
         }
         unset($argv[$pos]);
         // Make adjustments if '--load-from' points at a file.
diff --git a/vendor/consolidation/robo/src/State/Consumer.php b/vendor/consolidation/robo/src/State/Consumer.php
index ab9c0e2778..f2527a117b 100644
--- a/vendor/consolidation/robo/src/State/Consumer.php
+++ b/vendor/consolidation/robo/src/State/Consumer.php
@@ -1,4 +1,5 @@
 <?php
+
 namespace Robo\State;
 
 use Robo\State\Data;
@@ -6,7 +7,7 @@
 interface Consumer
 {
     /**
-     * @return Data
+     * @return \Robo\State\Data
      */
     public function receiveState(Data $state);
 }
diff --git a/vendor/consolidation/robo/src/State/Data.php b/vendor/consolidation/robo/src/State/Data.php
index 34cb5c761a..e6027d9735 100644
--- a/vendor/consolidation/robo/src/State/Data.php
+++ b/vendor/consolidation/robo/src/State/Data.php
@@ -1,4 +1,5 @@
 <?php
+
 namespace Robo\State;
 
 /**
@@ -40,7 +41,7 @@ public function getMessage()
     }
 
     /**
-     * @param string message
+     * @param string $message
      */
     public function setMessage($message)
     {
@@ -52,7 +53,7 @@ public function setMessage($message)
      * existing in this result takes precedence over the
      * data in the Result being merged.
      *
-     * @param \Robo\ResultData $result
+     * @param \Robo\State\Data $result
      *
      * @return $this
      */
@@ -123,6 +124,10 @@ public function getExecutionTime()
 
     /**
      * Accumulate execution time
+     *
+     * @param array|float $duration
+     *
+     * @return null|float
      */
     public function accumulateExecutionTime($duration)
     {
@@ -136,6 +141,10 @@ public function accumulateExecutionTime($duration)
 
     /**
      * Accumulate the message.
+     *
+     * @param string $message
+     *
+     * @return string
      */
     public function accumulateMessage($message)
     {
diff --git a/vendor/consolidation/robo/src/State/StateAwareInterface.php b/vendor/consolidation/robo/src/State/StateAwareInterface.php
index f86bccb87f..95bb823c28 100644
--- a/vendor/consolidation/robo/src/State/StateAwareInterface.php
+++ b/vendor/consolidation/robo/src/State/StateAwareInterface.php
@@ -1,4 +1,5 @@
 <?php
+
 namespace Robo\State;
 
 use Robo\State\Data;
@@ -6,23 +7,24 @@
 interface StateAwareInterface
 {
     /**
-     * @return Data
+     * @return \Robo\State\Data
      */
     public function getState();
 
     /**
-     * @param Data state
+     * @param \Robo\State\Data $state
      */
     public function setState(Data $state);
 
     /**
-     * @param $key
-     * @param value
+     * @param int|string $key
+     * @param mixed $value
      */
     public function setStateValue($key, $value);
 
     /**
-     * @param Data update state takes precedence over current state.
+     * @param \Robo\State\Data
+     *   Update state takes precedence over current state.
      */
     public function updateState(Data $update);
 
diff --git a/vendor/consolidation/robo/src/State/StateAwareTrait.php b/vendor/consolidation/robo/src/State/StateAwareTrait.php
index a1de1f15c6..da0101028b 100644
--- a/vendor/consolidation/robo/src/State/StateAwareTrait.php
+++ b/vendor/consolidation/robo/src/State/StateAwareTrait.php
@@ -1,47 +1,46 @@
 <?php
+
 namespace Robo\State;
 
 use Robo\State\Data;
 
+/**
+ * @see \Robo\State\StateAwareInterface
+ */
 trait StateAwareTrait
 {
+    /**
+     * @var \Robo\State\Data
+     */
     protected $state;
 
     /**
-     * {@inheritdoc}
+     * @return \Robo\State\Data
      */
     public function getState()
     {
         return $this->state;
     }
 
-    /**
-     * {@inheritdoc}
-     */
     public function setState(Data $state)
     {
         $this->state = $state;
     }
 
     /**
-     * {@inheritdoc}
+     * @param int|string $key
+     * @param mixed $value
      */
     public function setStateValue($key, $value)
     {
         $this->state[$key] = $value;
     }
 
-    /**
-     * {@inheritdoc}
-     */
     public function updateState(Data $update)
     {
         $this->state->update($update);
     }
 
-    /**
-     * {@inheritdoc}
-     */
     public function resetState()
     {
         $this->state = new Data();
diff --git a/vendor/consolidation/robo/src/Symfony/SymfonyStyleInjector.php b/vendor/consolidation/robo/src/Symfony/SymfonyStyleInjector.php
new file mode 100644
index 0000000000..b6149ac34c
--- /dev/null
+++ b/vendor/consolidation/robo/src/Symfony/SymfonyStyleInjector.php
@@ -0,0 +1,16 @@
+<?php
+
+namespace Robo\Symfony;
+
+use Consolidation\AnnotatedCommand\CommandData;
+use Consolidation\AnnotatedCommand\CommandProcessor;
+use Consolidation\AnnotatedCommand\ParameterInjector;
+use Symfony\Component\Console\Style\SymfonyStyle;
+
+class SymfonyStyleInjector implements ParameterInjector
+{
+    public function get(CommandData $commandData, $interfaceName)
+    {
+        return new SymfonyStyle($commandData->input(), $commandData->output());
+    }
+}
diff --git a/vendor/consolidation/robo/src/Task/ApiGen/ApiGen.php b/vendor/consolidation/robo/src/Task/ApiGen/ApiGen.php
index 11ff764c21..73c98fa5a1 100644
--- a/vendor/consolidation/robo/src/Task/ApiGen/ApiGen.php
+++ b/vendor/consolidation/robo/src/Task/ApiGen/ApiGen.php
@@ -1,4 +1,5 @@
 <?php
+
 namespace Robo\Task\ApiGen;
 
 use Robo\Contract\CommandInterface;
@@ -31,6 +32,10 @@ class ApiGen extends BaseTask implements CommandInterface
      * @var string
      */
     protected $command;
+
+    /**
+     * @var string
+     */
     protected $operation = 'generate';
 
     /**
@@ -68,8 +73,9 @@ public function __construct($pathToApiGen = null)
      */
     public function args($args)
     {
+        $func_args = func_get_args();
         if (!is_array($args)) {
-            $args = func_get_args();
+            $args = $func_args;
         }
         $args = array_map(function ($arg) {
             if (preg_match('/^\w+$/', trim($arg)) === 1) {
@@ -84,10 +90,12 @@ public function args($args)
     }
 
     /**
-     * @param array|Traversable|string $arg a single object or something traversable
+     * @param array|\Traversable|string $arg
+     *   A single object or something traversable.
      *
-     * @return array|Traversable the provided argument if it was already traversable, or the given
-     *                           argument returned as a one-element array
+     * @return array|\Traversable
+     *   The provided argument if it was already traversable, or the given
+     *   argument returned as a one-element array.
      */
     protected static function forceTraversable($arg)
     {
@@ -99,10 +107,12 @@ protected static function forceTraversable($arg)
     }
 
     /**
-     * @param array|string $arg a single argument or an array of multiple string values
+     * @param array|string $arg
+     *   A single argument or an array of multiple string values.
      *
-     * @return string a comma-separated string of all of the provided arguments, suitable
-     *                as a command-line "list" type argument for ApiGen
+     * @return string
+     *   A comma-separated string of all of the provided arguments, suitable as
+     *   a command-line "list" type argument for ApiGen.
      */
     protected static function asList($arg)
     {
@@ -111,13 +121,15 @@ protected static function asList($arg)
     }
 
     /**
-     * @param bool|string $val an argument to be normalized
-     * @param string $default one of self::BOOL_YES or self::BOOK_NO if the provided
-     *               value could not deterministically be converted to a
-     *               yes or no value
+     * @param bool|string $val
+     *   An argument to be normalized.
+     * @param string $default
+     *   One of self::BOOL_YES or self::BOOK_NO if the provided value could not
+     *   deterministically be converted to a yes or no value.
      *
-     * @return string the given value as a command-line "yes|no" type of argument for ApiGen,
-     *                or the default value if none could be determined
+     * @return string
+     *   The given value as a command-line "yes|no" type of argument for ApiGen,
+     *   or the default value if none could be determined.
      */
     protected static function asTextBool($val, $default)
     {
@@ -155,7 +167,8 @@ public function config($config)
     }
 
     /**
-     * @param array|string|Traversable $src one or more source values
+     * @param array|string|\Traversable $src
+     *   One or more source values.
      *
      * @return $this
      */
@@ -179,7 +192,8 @@ public function destination($dest)
     }
 
     /**
-     * @param array|string $exts one or more extensions
+     * @param array|string $exts
+     *   One or more extensions.
      *
      * @return $this
      */
@@ -190,7 +204,8 @@ public function extensions($exts)
     }
 
     /**
-     * @param array|string $exclude one or more exclusions
+     * @param array|string $exclude
+     *   One or more exclusions.
      *
      * @return $this
      */
@@ -203,7 +218,8 @@ public function exclude($exclude)
     }
 
     /**
-     * @param array|string|Traversable $path one or more skip-doc-path values
+     * @param array|string|\Traversable $path
+     *   One or more skip-doc-path values.
      *
      * @return $this
      */
@@ -216,7 +232,8 @@ public function skipDocPath($path)
     }
 
     /**
-     * @param array|string|Traversable $prefix one or more skip-doc-prefix values
+     * @param array|string|\Traversable $prefix
+     *   One or more skip-doc-prefix values.
      *
      * @return $this
      */
@@ -229,7 +246,8 @@ public function skipDocPrefix($prefix)
     }
 
     /**
-     * @param array|string $charset one or more charsets
+     * @param array|string $charset
+     *   One or more charsets.
      *
      * @return $this
      */
@@ -306,7 +324,8 @@ public function templateConfig($templateConfig)
     }
 
     /**
-     * @param array|string $tags one or more supported html tags
+     * @param array|string $tags
+     *   One or more supported html tags.
      *
      * @return $this
      */
@@ -328,7 +347,8 @@ public function groups($groups)
     }
 
     /**
-     * @param array|string $types or more supported autocomplete types
+     * @param array|string $types
+     *   One or more supported autocomplete types.
      *
      * @return $this
      */
@@ -339,7 +359,8 @@ public function autocomplete($types)
     }
 
     /**
-     * @param array|string $levels one or more access levels
+     * @param array|string $levels
+     *   One or more access levels.
      *
      * @return $this
      */
@@ -350,7 +371,8 @@ public function accessLevels($levels)
     }
 
     /**
-     * @param boolean|string $internal 'yes' or true if internal, 'no' or false if not
+     * @param boolean|string $internal
+     *   'yes' or true if internal, 'no' or false if not.
      *
      * @return $this
      */
@@ -361,8 +383,9 @@ public function internal($internal)
     }
 
     /**
-     * @param boolean|string $php 'yes' or true to generate documentation for internal php classes,
-     *                            'no' or false otherwise
+     * @param bool|string $php
+     *   'yes' or true to generate documentation for internal php classes, 'no'
+     *   or false otherwise.
      *
      * @return $this
      */
@@ -373,7 +396,9 @@ public function php($php)
     }
 
     /**
-     * @param bool|string $tree 'yes' or true to generate a tree view of classes, 'no' or false otherwise
+     * @param bool|string $tree
+     *   'yes' or true to generate a tree view of classes, 'no' or false
+     *   otherwise.
      *
      * @return $this
      */
@@ -384,7 +409,9 @@ public function tree($tree)
     }
 
     /**
-     * @param bool|string $dep 'yes' or true to generate documentation for deprecated classes, 'no' or false otherwise
+     * @param bool|string $dep
+     *   'yes' or true to generate documentation for deprecated classes, 'no' or
+     *   false otherwise.
      *
      * @return $this
      */
@@ -395,7 +422,8 @@ public function deprecated($dep)
     }
 
     /**
-     * @param bool|string $todo 'yes' or true to document tasks, 'no' or false otherwise
+     * @param bool|string $todo
+     *   'yes' or true to document tasks, 'no' or false otherwise.
      *
      * @return $this
      */
@@ -406,7 +434,9 @@ public function todo($todo)
     }
 
     /**
-     * @param bool|string $src 'yes' or true to generate highlighted source code, 'no' or false otherwise
+     * @param bool|string $src
+     *   'yes' or true to generate highlighted source code, 'no' or false
+     *   otherwise.
      *
      * @return $this
      */
@@ -417,7 +447,9 @@ public function sourceCode($src)
     }
 
     /**
-     * @param bool|string $zipped 'yes' or true to generate downloadable documentation, 'no' or false otherwise
+     * @param bool|string $zipped
+     *   'yes' or true to generate downloadable documentation, 'no' or false
+     *   otherwise.
      *
      * @return $this
      */
@@ -427,6 +459,11 @@ public function download($zipped)
         return $this;
     }
 
+    /**
+     * @param string $path
+     *
+     * @return $this
+     */
     public function report($path)
     {
         $this->option('report', $path);
@@ -434,7 +471,9 @@ public function report($path)
     }
 
     /**
-     * @param bool|string $wipeout 'yes' or true to clear out the destination directory, 'no' or false otherwise
+     * @param bool|string $wipeout
+     *   'yes' or true to clear out the destination directory, 'no' or false
+     *   otherwise.
      *
      * @return $this
      */
@@ -445,7 +484,8 @@ public function wipeout($wipeout)
     }
 
     /**
-     * @param bool|string $quiet 'yes' or true for quiet, 'no' or false otherwise
+     * @param bool|string $quiet
+     *   'yes' or true for quiet, 'no' or false otherwise.
      *
      * @return $this
      */
@@ -456,7 +496,8 @@ public function quiet($quiet)
     }
 
     /**
-     * @param bool|string $bar 'yes' or true to display a progress bar, 'no' or false otherwise
+     * @param bool|string $bar
+     *   'yes' or true to display a progress bar, 'no' or false otherwise.
      *
      * @return $this
      */
@@ -467,7 +508,8 @@ public function progressbar($bar)
     }
 
     /**
-     * @param bool|string $colors 'yes' or true colorize the output, 'no' or false otherwise
+     * @param bool|string $colors
+     *   'yes' or true colorize the output, 'no' or false otherwise.
      *
      * @return $this
      */
@@ -478,7 +520,8 @@ public function colors($colors)
     }
 
     /**
-     * @param bool|string $check 'yes' or true to check for updates, 'no' or false otherwise
+     * @param bool|string $check
+     *   'yes' or true to check for updates, 'no' or false otherwise.
      *
      * @return $this
      */
@@ -489,7 +532,8 @@ public function updateCheck($check)
     }
 
     /**
-     * @param bool|string $debug 'yes' or true to enable debug mode, 'no' or false otherwise
+     * @param bool|string $debug
+     *   'yes' or true to enable debug mode, 'no' or false otherwise.
      *
      * @return $this
      */
diff --git a/vendor/consolidation/robo/src/Task/ApiGen/loadTasks.php b/vendor/consolidation/robo/src/Task/ApiGen/loadTasks.php
index e8cd372af3..62b59311de 100644
--- a/vendor/consolidation/robo/src/Task/ApiGen/loadTasks.php
+++ b/vendor/consolidation/robo/src/Task/ApiGen/loadTasks.php
@@ -1,4 +1,5 @@
 <?php
+
 namespace Robo\Task\ApiGen;
 
 trait loadTasks
@@ -6,7 +7,7 @@ trait loadTasks
     /**
      * @param null|string $pathToApiGen
      *
-     * @return \Robo\Task\ApiGen\ApiGen
+     * @return \Robo\Task\ApiGen\ApiGen|\Robo\Collection\CollectionBuilder
      */
     protected function taskApiGen($pathToApiGen = null)
     {
diff --git a/vendor/consolidation/robo/src/Task/Archive/Extract.php b/vendor/consolidation/robo/src/Task/Archive/Extract.php
index a00a0baf86..72d708bac7 100644
--- a/vendor/consolidation/robo/src/Task/Archive/Extract.php
+++ b/vendor/consolidation/robo/src/Task/Archive/Extract.php
@@ -274,6 +274,6 @@ protected static function archiveType($filename)
      */
     protected static function getTmpDir()
     {
-        return getcwd().'/tmp'.rand().time();
+        return getcwd() . '/tmp' . rand() . time();
     }
 }
diff --git a/vendor/consolidation/robo/src/Task/Archive/Pack.php b/vendor/consolidation/robo/src/Task/Archive/Pack.php
index 0970f8e88e..90db1a94a2 100644
--- a/vendor/consolidation/robo/src/Task/Archive/Pack.php
+++ b/vendor/consolidation/robo/src/Task/Archive/Pack.php
@@ -40,7 +40,8 @@ class Pack extends BaseTask implements PrintedInterface
     /**
      * Construct the class.
      *
-     * @param string $archiveFile The full path and name of the archive file to create.
+     * @param string $archiveFile
+     *   The full path and name of the archive file to create.
      *
      * @since   1.0
      */
@@ -52,7 +53,8 @@ public function __construct($archiveFile)
     /**
      * Satisfy the parent requirement.
      *
-     * @return bool Always returns true.
+     * @return bool
+     *   Always returns true.
      *
      * @since   1.0
      */
@@ -76,10 +78,10 @@ public function archiveFile($archiveFile)
      * Add an item to the archive. Like file_exists(), the parameter
      * may be a file or a directory.
      *
-     * @var string
-     *             Relative path and name of item to store in archive
-     * @var string
-     *             Absolute or relative path to file or directory's location in filesystem
+     * @param string $placementLocation
+     *   Relative path and name of item to store in archive.
+     * @param string $filesystemLocation
+     *   Absolute or relative path to file or directory's location in filesystem.
      *
      * @return $this
      */
@@ -94,10 +96,10 @@ public function addFile($placementLocation, $filesystemLocation)
      * Alias for addFile, in case anyone has angst about using
      * addFile with a directory.
      *
-     * @var string
-     *             Relative path and name of directory to store in archive
-     * @var string
-     *             Absolute or relative path to directory or directory's location in filesystem
+     * @param string $placementLocation
+     *   Relative path and name of directory to store in archive.
+     * @param string $filesystemLocation
+     *   Absolute or relative path to directory or directory's location in filesystem.
      *
      * @return $this
      */
@@ -111,13 +113,14 @@ public function addDir($placementLocation, $filesystemLocation)
     /**
      * Add a file or directory, or list of same to the archive.
      *
-     * @var string|array
-     *                   If given a string, should contain the relative filesystem path to the
-     *                   the item to store in archive; this will also be used as the item's
-     *                   path in the archive, so absolute paths should not be used here.
-     *                   If given an array, the key of each item should be the path to store
-     *                   in the archive, and the value should be the filesystem path to the
-     *                   item to store.
+     * @param string|array $item
+     *   If given a string, should contain the relative filesystem path to the
+     *   the item to store in archive; this will also be used as the item's
+     *   path in the archive, so absolute paths should not be used here.
+     *   If given an array, the key of each item should be the path to store
+     *   in the archive, and the value should be the filesystem path to the
+     *   item to store.
+     *
      * @return $this
      */
     public function add($item)
@@ -208,7 +211,7 @@ protected function archiveTar($archiveFile, $items)
      */
     protected function archiveZip($archiveFile, $items)
     {
-        if (!extension_loaded('zlib')) {
+        if (!extension_loaded('zlib') || !class_exists(\ZipArchive::class)) {
             return Result::errorMissingExtension($this, 'zlib', 'zip packing');
         }
 
diff --git a/vendor/consolidation/robo/src/Task/Archive/loadTasks.php b/vendor/consolidation/robo/src/Task/Archive/loadTasks.php
index cf846fdf82..0e30852a76 100644
--- a/vendor/consolidation/robo/src/Task/Archive/loadTasks.php
+++ b/vendor/consolidation/robo/src/Task/Archive/loadTasks.php
@@ -1,12 +1,13 @@
 <?php
+
 namespace Robo\Task\Archive;
 
 trait loadTasks
 {
     /**
-     * @param $filename
+     * @param string $filename
      *
-     * @return Pack
+     * @return \Robo\Task\Archive\Pack|\Robo\Collection\CollectionBuilder
      */
     protected function taskPack($filename)
     {
@@ -14,9 +15,9 @@ protected function taskPack($filename)
     }
 
     /**
-     * @param $filename
+     * @param string $filename
      *
-     * @return Extract
+     * @return \Robo\Task\Archive\Extract|\Robo\Collection\CollectionBuilder
      */
     protected function taskExtract($filename)
     {
diff --git a/vendor/consolidation/robo/src/Task/Assets/ImageMinify.php b/vendor/consolidation/robo/src/Task/Assets/ImageMinify.php
index 1aa625932f..ef61eb3aa8 100644
--- a/vendor/consolidation/robo/src/Task/Assets/ImageMinify.php
+++ b/vendor/consolidation/robo/src/Task/Assets/ImageMinify.php
@@ -150,7 +150,7 @@ class ImageMinify extends BaseTask
      *
      * @link https://github.com/imagemin
      *
-     * @var array
+     * @var string[]
      */
     protected $imageminRepos = [
         // PNG
@@ -171,6 +171,9 @@ class ImageMinify extends BaseTask
         'cwebp' => 'https://github.com/imagemin/cwebp-bin', // note: we do not support this minifier because it creates WebP from non-WebP files
     ];
 
+    /**
+     * @param string|string[] $dirs
+     */
     public function __construct($dirs)
     {
         is_array($dirs)
@@ -182,12 +185,12 @@ public function __construct($dirs)
         // guess the best path for the executables based on __DIR__
         if (($pos = strpos(__DIR__, 'consolidation/robo')) !== false) {
             // the executables should be stored in vendor/bin
-            $this->executableTargetDir = substr(__DIR__, 0, $pos).'bin';
+            $this->executableTargetDir = substr(__DIR__, 0, $pos) . 'bin';
         }
 
         // check if the executables are already available
         foreach ($this->imageminRepos as $exec => $url) {
-            $path = $this->executableTargetDir.'/'.$exec;
+            $path = $this->executableTargetDir . '/' . $exec;
             // if this is Windows add a .exe extension
             if (substr($this->getOS(), 0, 3) == 'win') {
                 $path .= '.exe';
@@ -257,7 +260,7 @@ public function minifier($minifier, array $options = [])
     }
 
     /**
-     * @param array $dirs
+     * @param string[] $dirs
      *
      * @return array|\Robo\Result
      *
@@ -289,7 +292,7 @@ protected function findFiles($dirs)
             } catch (\InvalidArgumentException $e) {
                 // if finder cannot handle it, try with in()->name()
                 if (strpos($dir, '/') === false) {
-                    $dir = './'.$dir;
+                    $dir = './' . $dir;
                 }
                 $parts = explode('/', $dir);
                 $new_dir = implode('/', array_slice($parts, 0, -1));
@@ -319,13 +322,13 @@ protected function findFiles($dirs)
      */
     protected function getTarget($file, $to)
     {
-        $target = $to.'/'.basename($file);
+        $target = $to . '/' . basename($file);
 
         return $target;
     }
 
     /**
-     * @param array $files
+     * @param string[] $files
      *
      * @return \Robo\Result
      */
@@ -339,6 +342,8 @@ protected function minify($files)
 
         // loop through the files
         foreach ($files as $from => $to) {
+            $minifier = '';
+
             if (!isset($this->minifier)) {
                 // check filetype based on the extension
                 $extension = strtolower(pathinfo($from, PATHINFO_EXTENSION));
@@ -399,7 +404,7 @@ protected function minify($files)
                             $this->printTaskSuccess($result->getMessage());
                             // retry the conversion with the downloaded executable
                             if (is_callable($minifier)) {
-                                $command = call_user_func($minifier, $from, $to, $minifierOptions);
+                                $command = call_user_func($minifier, $from, $to, $this->minifierOptions);
                             } elseif (method_exists($this, $minifier)) {
                                 $command = $this->{$minifier}($from, $to);
                             }
@@ -432,7 +437,7 @@ protected function minify($files)
     protected function getOS()
     {
         $os = php_uname('s');
-        $os .= '/'.php_uname('m');
+        $os .= '/' . php_uname('m');
         // replace x86_64 to x64, because the imagemin repo uses that
         $os = str_replace('x86_64', 'x64', $os);
         // replace i386, i686, etc to x86, because of imagemin
@@ -492,10 +497,10 @@ protected function installFromImagemin($executable)
         $this->printTaskInfo('Downloading the {executable} executable from the imagemin repository', ['executable' => $executable]);
 
         $os = $this->getOS();
-        $url = $this->imageminRepos[$executable].'/blob/master/vendor/'.$os.'/'.$executable.'?raw=true';
+        $url = $this->imageminRepos[$executable] . '/blob/master/vendor/' . $os . '/' . $executable . '?raw=true';
         if (substr($os, 0, 3) == 'win') {
             // if it is win, add a .exe extension
-            $url = $this->imageminRepos[$executable].'/blob/master/vendor/'.$os.'/'.$executable.'.exe?raw=true';
+            $url = $this->imageminRepos[$executable] . '/blob/master/vendor/' . $os . '/' . $executable . '.exe?raw=true';
         }
         $data = @file_get_contents($url, false, null);
         if ($data === false) {
@@ -525,14 +530,14 @@ protected function installFromImagemin($executable)
             mkdir($this->executableTargetDir);
         }
         // save the executable into the target dir
-        $path = $this->executableTargetDir.'/'.$executable;
+        $path = $this->executableTargetDir . '/' . $executable;
         if (substr($os, 0, 3) == 'win') {
             // if it is win, add a .exe extension
-            $path = $this->executableTargetDir.'/'.$executable.'.exe';
+            $path = $this->executableTargetDir . '/' . $executable . '.exe';
         }
         $result = file_put_contents($path, $data);
         if ($result === false) {
-            $message = sprintf('Could not copy the executable <info>%s</info> to %s', $executable, $target_dir);
+            $message = sprintf('Could not copy the executable <info>%s</info> to %s', $executable, $path);
 
             return Result::error($this, $message);
         }
@@ -540,7 +545,7 @@ protected function installFromImagemin($executable)
         chmod($path, 0755);
 
         // if everything successful, store the executable path
-        $this->executablePaths[$executable] = $this->executableTargetDir.'/'.$executable;
+        $this->executablePaths[$executable] = $this->executableTargetDir . '/' . $executable;
         // if it is win, add a .exe extension
         if (substr($os, 0, 3) == 'win') {
             $this->executablePaths[$executable] .= '.exe';
@@ -582,6 +587,12 @@ protected function jpegtran($from, $to)
         return $command;
     }
 
+    /**
+     * @param string $from
+     * @param string $to
+     *
+     * @return string
+     */
     protected function gifsicle($from, $to)
     {
         $command = sprintf('gifsicle -o "%s" "%s"', $to, $from);
diff --git a/vendor/consolidation/robo/src/Task/Assets/Less.php b/vendor/consolidation/robo/src/Task/Assets/Less.php
index 4cfa097802..ca8aa08df3 100644
--- a/vendor/consolidation/robo/src/Task/Assets/Less.php
+++ b/vendor/consolidation/robo/src/Task/Assets/Less.php
@@ -1,4 +1,5 @@
 <?php
+
 namespace Robo\Task\Assets;
 
 use Robo\Result;
diff --git a/vendor/consolidation/robo/src/Task/Assets/Minify.php b/vendor/consolidation/robo/src/Task/Assets/Minify.php
index 3187714ecc..4c9798e458 100644
--- a/vendor/consolidation/robo/src/Task/Assets/Minify.php
+++ b/vendor/consolidation/robo/src/Task/Assets/Minify.php
@@ -1,4 +1,5 @@
 <?php
+
 namespace Robo\Task\Assets;
 
 use Robo\Result;
@@ -23,7 +24,7 @@
 class Minify extends BaseTask
 {
     /**
-     * @var array
+     * @var string[]
      */
     protected $types = ['css', 'js'];
 
@@ -43,7 +44,7 @@ class Minify extends BaseTask
     protected $type;
 
     /**
-     * @var array
+     * @var bool[]
      */
     protected $squeezeOptions = [
         'singleLine' => true,
@@ -87,7 +88,8 @@ public function to($dst)
     /**
      * Sets type with validation.
      *
-     * @param string $type css|js
+     * @param string $type
+     *   Allowed values: "css", "js".
      *
      * @return $this
      */
@@ -217,11 +219,11 @@ public function keepImportantComments($keepImportantComments)
     }
 
     /**
-     * specialVarRx option for the JS minimisation.
+     * Set specialVarRx option for the JS minimisation.
      *
      * @param bool $specialVarRx
      *
-     * @return $this ;
+     * @return $this
      */
     public function specialVarRx($specialVarRx)
     {
diff --git a/vendor/consolidation/robo/src/Task/Assets/Scss.php b/vendor/consolidation/robo/src/Task/Assets/Scss.php
index ffd39345a0..999604b1ab 100644
--- a/vendor/consolidation/robo/src/Task/Assets/Scss.php
+++ b/vendor/consolidation/robo/src/Task/Assets/Scss.php
@@ -1,4 +1,5 @@
 <?php
+
 namespace Robo\Task\Assets;
 
 use Robo\Result;
@@ -19,7 +20,7 @@
  * Use the following scss compiler in your project:
  *
  * ```
- * "leafo/scssphp": "~0.1",
+ * "scssphp/scssphp ": "~1.0.0",
  * ```
  *
  * You can implement additional compilers by extending this task and adding a
@@ -34,12 +35,12 @@ class Scss extends CssPreprocessor
      * @var string[]
      */
     protected $compilers = [
-        'scssphp', // https://github.com/leafo/scssphp
+        'scssphp', // https://github.com/scssphp/scssphp
     ];
 
     /**
      * scssphp compiler
-     * @link https://github.com/leafo/scssphp
+     * @link https://github.com/scssphp/scssphp
      *
      * @param string $file
      *
@@ -47,12 +48,12 @@ class Scss extends CssPreprocessor
      */
     protected function scssphp($file)
     {
-        if (!class_exists('\Leafo\ScssPhp\Compiler')) {
-            return Result::errorMissingPackage($this, 'scssphp', 'leafo/scssphp');
+        if (!class_exists('\ScssPhp\ScssPhp\Compiler')) {
+            return Result::errorMissingPackage($this, 'scssphp', 'scssphp/scssphp');
         }
 
         $scssCode = file_get_contents($file);
-        $scss = new \Leafo\ScssPhp\Compiler();
+        $scss = new \ScssPhp\ScssPhp\Compiler();
 
         // set options for the scssphp compiler
         if (isset($this->compilerOptions['importDirs'])) {
@@ -71,16 +72,16 @@ protected function scssphp($file)
      *
      * The method setFormatter($formatterName) sets the current formatter to $formatterName,
      * the name of a class as a string that implements the formatting interface. See the source
-     * for Leafo\ScssPhp\Formatter\Expanded for an example.
+     * for ScssPhp\ScssPhp\Formatter\Expanded for an example.
      *
-     * Five formatters are included with leafo/scssphp:
-     * - Leafo\ScssPhp\Formatter\Expanded
-     * - Leafo\ScssPhp\Formatter\Nested (default)
-     * - Leafo\ScssPhp\Formatter\Compressed
-     * - Leafo\ScssPhp\Formatter\Compact
-     * - Leafo\ScssPhp\Formatter\Crunched
+     * Five formatters are included with scssphp/scssphp:
+     * - ScssPhp\ScssPhp\Formatter\Expanded
+     * - ScssPhp\ScssPhp\Formatter\Nested (default)
+     * - ScssPhp\ScssPhp\Formatter\Compressed
+     * - ScssPhp\ScssPhp\Formatter\Compact
+     * - ScssPhp\ScssPhp\Formatter\Crunched
      *
-     * @link http://leafo.github.io/scssphp/docs/#output-formatting
+     * @link https://scssphp.github.io/scssphp/docs/#output-formatting
      *
      * @param string $formatterName
      *
diff --git a/vendor/consolidation/robo/src/Task/Assets/loadTasks.php b/vendor/consolidation/robo/src/Task/Assets/loadTasks.php
index 12192dd804..8b63765f89 100644
--- a/vendor/consolidation/robo/src/Task/Assets/loadTasks.php
+++ b/vendor/consolidation/robo/src/Task/Assets/loadTasks.php
@@ -1,13 +1,14 @@
 <?php
+
 namespace Robo\Task\Assets;
 
 trait loadTasks
 {
     /**
-    * @param string $input
-    *
-     * @return \Robo\Task\Assets\Minify
-    */
+     * @param string $input
+     *
+     * @return \Robo\Task\Assets\Minify|\Robo\Collection\CollectionBuilder
+     */
     protected function taskMinify($input)
     {
         return $this->task(Minify::class, $input);
@@ -16,7 +17,7 @@ protected function taskMinify($input)
     /**
      * @param string|string[] $input
      *
-     * @return \Robo\Task\Assets\ImageMinify
+     * @return \Robo\Task\Assets\ImageMinify|\Robo\Collection\CollectionBuilder
      */
     protected function taskImageMinify($input)
     {
@@ -26,7 +27,7 @@ protected function taskImageMinify($input)
    /**
     * @param array $input
     *
-    * @return \Robo\Task\Assets\Less
+    * @return \Robo\Task\Assets\Less|\Robo\Collection\CollectionBuilder
     */
     protected function taskLess($input)
     {
@@ -36,7 +37,7 @@ protected function taskLess($input)
     /**
      * @param array $input
      *
-     * @return \Robo\Task\Assets\Scss
+     * @return \Robo\Task\Assets\Scss|\Robo\Collection\CollectionBuilder
      */
     protected function taskScss($input)
     {
diff --git a/vendor/consolidation/robo/src/Task/Base/Exec.php b/vendor/consolidation/robo/src/Task/Base/Exec.php
index 057c86a9bd..6dd3752792 100644
--- a/vendor/consolidation/robo/src/Task/Base/Exec.php
+++ b/vendor/consolidation/robo/src/Task/Base/Exec.php
@@ -1,4 +1,5 @@
 <?php
+
 namespace Robo\Task\Base;
 
 use Robo\Common\ExecTrait;
@@ -50,9 +51,6 @@ public function __construct($command)
         $this->command = $this->receiveCommand($command);
     }
 
-    /**
-     *
-     */
     public function __destruct()
     {
         $this->stop();
@@ -61,6 +59,8 @@ public function __destruct()
     /**
      * Executes command in background mode (asynchronously)
      *
+     * @param bool $arg
+     *
      * @return $this
      */
     public function background($arg = true)
diff --git a/vendor/consolidation/robo/src/Task/Base/ExecStack.php b/vendor/consolidation/robo/src/Task/Base/ExecStack.php
index 51b39ef1d3..221e736fc0 100644
--- a/vendor/consolidation/robo/src/Task/Base/ExecStack.php
+++ b/vendor/consolidation/robo/src/Task/Base/ExecStack.php
@@ -1,4 +1,5 @@
 <?php
+
 namespace Robo\Task\Base;
 
 use Robo\Task\CommandStack;
diff --git a/vendor/consolidation/robo/src/Task/Base/ParallelExec.php b/vendor/consolidation/robo/src/Task/Base/ParallelExec.php
index c98b784196..51c5a39913 100644
--- a/vendor/consolidation/robo/src/Task/Base/ParallelExec.php
+++ b/vendor/consolidation/robo/src/Task/Base/ParallelExec.php
@@ -1,4 +1,5 @@
 <?php
+
 namespace Robo\Task\Base;
 
 use Robo\Contract\CommandInterface;
@@ -187,7 +188,7 @@ public function run()
             if ($p->getExitCode() === 0) {
                 continue;
             }
-            $errorMessage .= "'" . $p->getCommandLine() . "' exited with code ". $p->getExitCode()." \n";
+            $errorMessage .= "'" . $p->getCommandLine() . "' exited with code " . $p->getExitCode() . " \n";
             $exitCode = max($exitCode, $p->getExitCode());
         }
         if (!$errorMessage) {
diff --git a/vendor/consolidation/robo/src/Task/Base/SymfonyCommand.php b/vendor/consolidation/robo/src/Task/Base/SymfonyCommand.php
index 708ea84512..ea8907bf21 100644
--- a/vendor/consolidation/robo/src/Task/Base/SymfonyCommand.php
+++ b/vendor/consolidation/robo/src/Task/Base/SymfonyCommand.php
@@ -1,4 +1,5 @@
 <?php
+
 namespace Robo\Task\Base;
 
 use Robo\Robo;
diff --git a/vendor/consolidation/robo/src/Task/Base/Watch.php b/vendor/consolidation/robo/src/Task/Base/Watch.php
index 3b2152d96f..7e1c210abc 100644
--- a/vendor/consolidation/robo/src/Task/Base/Watch.php
+++ b/vendor/consolidation/robo/src/Task/Base/Watch.php
@@ -1,4 +1,5 @@
 <?php
+
 namespace Robo\Task\Base;
 
 use Lurker\ResourceWatcher;
@@ -37,6 +38,24 @@
  *      )->run();
  * ?>
  * ```
+ *
+ * Pass through the changed file to the callable function
+ *
+ * ```
+ * $this
+ *  ->taskWatch()
+ *  ->monitor(
+ *      'filename',
+ *      function ($event) {
+ *          $resource = $event->getResource();
+ *          ... do something with (string)$resource ...
+ *      },
+ *      FilesystemEvent::ALL
+ *  )
+ *  ->run();
+ * ```
+ *
+ * The $event parameter is a [standard Symfony file resource object](https://api.symfony.com/3.1/Symfony/Component/Config/Resource/FileResource.html)
  */
 class Watch extends BaseTask
 {
diff --git a/vendor/consolidation/robo/src/Task/Base/loadShortcuts.php b/vendor/consolidation/robo/src/Task/Base/loadShortcuts.php
index dba0af6610..f06ec9f820 100644
--- a/vendor/consolidation/robo/src/Task/Base/loadShortcuts.php
+++ b/vendor/consolidation/robo/src/Task/Base/loadShortcuts.php
@@ -1,4 +1,5 @@
 <?php
+
 namespace Robo\Task\Base;
 
 trait loadShortcuts
diff --git a/vendor/consolidation/robo/src/Task/Base/loadTasks.php b/vendor/consolidation/robo/src/Task/Base/loadTasks.php
index ab5301bbe9..01e04059d5 100644
--- a/vendor/consolidation/robo/src/Task/Base/loadTasks.php
+++ b/vendor/consolidation/robo/src/Task/Base/loadTasks.php
@@ -1,4 +1,5 @@
 <?php
+
 namespace Robo\Task\Base;
 
 trait loadTasks
@@ -6,7 +7,7 @@ trait loadTasks
     /**
      * @param string|\Robo\Contract\CommandInterface $command
      *
-     * @return Exec
+     * @return \Robo\Task\Base\Exec|\Robo\Collection\CollectionBuilder
      */
     protected function taskExec($command)
     {
@@ -14,7 +15,7 @@ protected function taskExec($command)
     }
 
     /**
-     * @return ExecStack
+     * @return \Robo\Task\Base\ExecStack|\Robo\Collection\CollectionBuilder
      */
     protected function taskExecStack()
     {
@@ -22,7 +23,7 @@ protected function taskExecStack()
     }
 
     /**
-     * @return ParallelExec
+     * @return \Robo\Task\Base\ParallelExec|\Robo\Collection\CollectionBuilder
      */
     protected function taskParallelExec()
     {
@@ -30,8 +31,9 @@ protected function taskParallelExec()
     }
 
     /**
-     * @param $command
-     * @return SymfonyCommand
+     * @param \Symfony\Component\Console\Command\Command $command
+     *
+     * @return \Robo\Task\Base\SymfonyCommand|\Robo\Collection\CollectionBuilder
      */
     protected function taskSymfonyCommand($command)
     {
@@ -39,7 +41,7 @@ protected function taskSymfonyCommand($command)
     }
 
     /**
-     * @return Watch
+     * @return \Robo\Task\Base\Watch|\Robo\Collection\CollectionBuilder
      */
     protected function taskWatch()
     {
diff --git a/vendor/consolidation/robo/src/Task/BaseTask.php b/vendor/consolidation/robo/src/Task/BaseTask.php
index 66155c0932..4085853246 100644
--- a/vendor/consolidation/robo/src/Task/BaseTask.php
+++ b/vendor/consolidation/robo/src/Task/BaseTask.php
@@ -1,9 +1,9 @@
 <?php
+
 namespace Robo\Task;
 
 use Robo\Common\InflectionTrait;
 use Robo\Contract\InflectionInterface;
-
 use Robo\Common\TaskIO;
 use Robo\Contract\TaskInterface;
 use Robo\Contract\ProgressIndicatorAwareInterface;
@@ -23,6 +23,8 @@ abstract class BaseTask implements TaskInterface, LoggerAwareInterface, Verbosit
      * ConfigAwareInterface uses this to decide where configuration
      * items come from. Default is this prefix + class name + key,
      * e.g. `task.Remote.Ssh.remoteDir`.
+     *
+     * @return string
      */
     protected static function configPrefix()
     {
@@ -33,6 +35,8 @@ protected static function configPrefix()
      * ConfigAwareInterface uses this to decide where configuration
      * items come from. Default is this prefix + class name + key,
      * e.g. `task.Ssh.remoteDir`.
+     *
+     * @return string
      */
     protected static function configPostfix()
     {
diff --git a/vendor/consolidation/robo/src/Task/Bower/Base.php b/vendor/consolidation/robo/src/Task/Bower/Base.php
index 9bc614c632..cdaee7c4ca 100644
--- a/vendor/consolidation/robo/src/Task/Bower/Base.php
+++ b/vendor/consolidation/robo/src/Task/Bower/Base.php
@@ -1,4 +1,5 @@
 <?php
+
 namespace Robo\Task\Bower;
 
 use Robo\Task\BaseTask;
@@ -8,7 +9,14 @@ abstract class Base extends BaseTask
 {
     use \Robo\Common\ExecOneCommand;
 
+    /**
+     * @var array
+     */
     protected $opts = [];
+
+    /**
+     * @var string
+     */
     protected $action = '';
 
     /**
diff --git a/vendor/consolidation/robo/src/Task/Bower/Install.php b/vendor/consolidation/robo/src/Task/Bower/Install.php
index c3c0ce7559..8e66562062 100644
--- a/vendor/consolidation/robo/src/Task/Bower/Install.php
+++ b/vendor/consolidation/robo/src/Task/Bower/Install.php
@@ -1,4 +1,5 @@
 <?php
+
 namespace Robo\Task\Bower;
 
 use Robo\Contract\CommandInterface;
diff --git a/vendor/consolidation/robo/src/Task/Bower/Update.php b/vendor/consolidation/robo/src/Task/Bower/Update.php
index f0dfa94e35..b548aceabd 100644
--- a/vendor/consolidation/robo/src/Task/Bower/Update.php
+++ b/vendor/consolidation/robo/src/Task/Bower/Update.php
@@ -1,4 +1,5 @@
 <?php
+
 namespace Robo\Task\Bower;
 
 /**
diff --git a/vendor/consolidation/robo/src/Task/Bower/loadTasks.php b/vendor/consolidation/robo/src/Task/Bower/loadTasks.php
index 6e33f8acf9..5d522d347e 100644
--- a/vendor/consolidation/robo/src/Task/Bower/loadTasks.php
+++ b/vendor/consolidation/robo/src/Task/Bower/loadTasks.php
@@ -1,4 +1,5 @@
 <?php
+
 namespace Robo\Task\Bower;
 
 trait loadTasks
@@ -6,7 +7,7 @@ trait loadTasks
     /**
      * @param null|string $pathToBower
      *
-     * @return Install
+     * @return \Robo\Task\Bower\Install|\Robo\Collection\CollectionBuilder
      */
     protected function taskBowerInstall($pathToBower = null)
     {
@@ -16,7 +17,7 @@ protected function taskBowerInstall($pathToBower = null)
     /**
      * @param null|string $pathToBower
      *
-     * @return Update
+     * @return \Robo\Task\Bower\Update|\Robo\Collection\CollectionBuilder
      */
     protected function taskBowerUpdate($pathToBower = null)
     {
diff --git a/vendor/consolidation/robo/src/Task/CommandStack.php b/vendor/consolidation/robo/src/Task/CommandStack.php
index 43fbd7ccfe..9114ebbed5 100644
--- a/vendor/consolidation/robo/src/Task/CommandStack.php
+++ b/vendor/consolidation/robo/src/Task/CommandStack.php
@@ -18,6 +18,9 @@ abstract class CommandStack extends BaseTask implements CommandInterface, Printe
      */
     protected $executable;
 
+    /**
+     * @var \Robo\Result
+     */
     protected $result;
 
     /**
@@ -69,9 +72,9 @@ public function exec($command)
             $command = $this->executable . ' ' . $this->stripExecutableFromCommand($command);
             $command = trim($command);
         }
-        
+
         $this->exec[] = $command;
-        
+
         return $this;
     }
 
diff --git a/vendor/consolidation/robo/src/Task/Composer/Base.php b/vendor/consolidation/robo/src/Task/Composer/Base.php
index de3fe2174c..edd93a32ce 100644
--- a/vendor/consolidation/robo/src/Task/Composer/Base.php
+++ b/vendor/consolidation/robo/src/Task/Composer/Base.php
@@ -1,4 +1,5 @@
 <?php
+
 namespace Robo\Task\Composer;
 
 use Robo\Contract\CommandInterface;
@@ -15,7 +16,7 @@ abstract class Base extends BaseTask implements CommandInterface
     protected $command = '';
 
     /**
-     * @var boolena
+     * @var bool
      */
     protected $built = false;
 
@@ -65,6 +66,8 @@ public function __construct($pathToComposer = null)
     /**
      * adds `prefer-dist` option to composer
      *
+     * @param bool $preferDist
+     *
      * @return $this
      */
     public function preferDist($preferDist = true)
@@ -90,6 +93,8 @@ public function preferSource()
     /**
      * adds `dev` option to composer
      *
+     * @param bool $dev
+     *
      * @return $this
      */
     public function dev($dev = true)
@@ -115,6 +120,8 @@ public function noDev()
     /**
      * adds `ansi` option to composer
      *
+     * @param bool $ansi
+     *
      * @return $this
      */
     public function ansi($ansi = true)
@@ -137,6 +144,11 @@ public function noAnsi()
         return $this;
     }
 
+    /**
+     * @param bool $interaction
+     *
+     * @return $this
+     */
     public function interaction($interaction = true)
     {
         if (!$interaction) {
@@ -159,6 +171,8 @@ public function noInteraction()
     /**
      * adds `optimize-autoloader` option to composer
      *
+     * @param bool $optimize
+     *
      * @return $this
      */
     public function optimizeAutoloader($optimize = true)
@@ -172,6 +186,8 @@ public function optimizeAutoloader($optimize = true)
     /**
      * adds `ignore-platform-reqs` option to composer
      *
+     * @param bool $ignore
+     *
      * @return $this
      */
     public function ignorePlatformRequirements($ignore = true)
@@ -183,6 +199,8 @@ public function ignorePlatformRequirements($ignore = true)
     /**
      * disable plugins
      *
+     * @param bool $disable
+     *
      * @return $this
      */
     public function disablePlugins($disable = true)
@@ -196,6 +214,8 @@ public function disablePlugins($disable = true)
     /**
      * skip scripts
      *
+     * @param bool $disable
+     *
      * @return $this
      */
     public function noScripts($disable = true)
@@ -209,6 +229,8 @@ public function noScripts($disable = true)
     /**
      * adds `--working-dir $dir` option to composer
      *
+     * @param string $dir
+     *
      * @return $this
      */
     public function workingDir($dir)
diff --git a/vendor/consolidation/robo/src/Task/Composer/Config.php b/vendor/consolidation/robo/src/Task/Composer/Config.php
index b5a6bbff97..990fe2789e 100644
--- a/vendor/consolidation/robo/src/Task/Composer/Config.php
+++ b/vendor/consolidation/robo/src/Task/Composer/Config.php
@@ -1,4 +1,5 @@
 <?php
+
 namespace Robo\Task\Composer;
 
 /**
@@ -19,7 +20,11 @@ class Config extends Base
     protected $action = 'config';
 
     /**
-     * Set a configuration value
+     * Set a configuration value.
+     *
+     * @param string $key
+     * @param string $value
+     *
      * @return $this
      */
     public function set($key, $value)
@@ -31,6 +36,9 @@ public function set($key, $value)
 
     /**
      * Operate on the global repository
+     *
+     * @param bool $useGlobal
+     *
      * @return $this
      */
     public function useGlobal($useGlobal = true)
@@ -42,6 +50,10 @@ public function useGlobal($useGlobal = true)
     }
 
     /**
+     * @param string $id
+     * @param string $uri
+     * @param string $repoType
+     *
      * @return $this
      */
     public function repository($id, $uri, $repoType = 'vcs')
@@ -53,6 +65,8 @@ public function repository($id, $uri, $repoType = 'vcs')
     }
 
     /**
+     * @param string $id
+     *
      * @return $this
      */
     public function removeRepository($id)
@@ -62,6 +76,8 @@ public function removeRepository($id)
     }
 
     /**
+     * @param string $id
+     *
      * @return $this
      */
     public function disableRepository($id)
@@ -72,6 +88,8 @@ public function disableRepository($id)
     }
 
     /**
+     * @param string $id
+     *
      * @return $this
      */
     public function enableRepository($id)
diff --git a/vendor/consolidation/robo/src/Task/Composer/CreateProject.php b/vendor/consolidation/robo/src/Task/Composer/CreateProject.php
index 5f979a646c..e833ebac23 100644
--- a/vendor/consolidation/robo/src/Task/Composer/CreateProject.php
+++ b/vendor/consolidation/robo/src/Task/Composer/CreateProject.php
@@ -1,4 +1,5 @@
 <?php
+
 namespace Robo\Task\Composer;
 
 /**
@@ -18,11 +19,24 @@ class CreateProject extends Base
      */
     protected $action = 'create-project';
 
+    /**
+     * @var
+     */
     protected $source;
+
+    /**
+     * @var string
+     */
     protected $target = '';
+
+    /**
+     * @var string
+     */
     protected $version = '';
 
     /**
+     * @param string $source
+     *
      * @return $this
      */
     public function source($source)
@@ -32,6 +46,8 @@ public function source($source)
     }
 
     /**
+     * @param string $target
+     *
      * @return $this
      */
     public function target($target)
@@ -41,6 +57,8 @@ public function target($target)
     }
 
     /**
+     * @param string $version
+     *
      * @return $this
      */
     public function version($version)
@@ -49,6 +67,11 @@ public function version($version)
         return $this;
     }
 
+    /**
+     * @param bool $keep
+     *
+     * @return $this
+     */
     public function keepVcs($keep = true)
     {
         if ($keep) {
@@ -57,6 +80,11 @@ public function keepVcs($keep = true)
         return $this;
     }
 
+    /**
+     * @param bool $noInstall
+     *
+     * @return $this
+     */
     public function noInstall($noInstall = true)
     {
         if ($noInstall) {
@@ -66,6 +94,8 @@ public function noInstall($noInstall = true)
     }
 
     /**
+     * @param string $repository
+     *
      * @return $this
      */
     public function repository($repository)
@@ -77,6 +107,8 @@ public function repository($repository)
     }
 
     /**
+     * @param string $stability
+     *
      * @return $this
      */
     public function stability($stability)
@@ -87,6 +119,9 @@ public function stability($stability)
         return $this;
     }
 
+    /**
+     * {@inheritdoc}
+     */
     public function buildCommand()
     {
         $this->arg($this->source);
diff --git a/vendor/consolidation/robo/src/Task/Composer/DumpAutoload.php b/vendor/consolidation/robo/src/Task/Composer/DumpAutoload.php
index 55b1ea00e4..8fbdd8cd91 100644
--- a/vendor/consolidation/robo/src/Task/Composer/DumpAutoload.php
+++ b/vendor/consolidation/robo/src/Task/Composer/DumpAutoload.php
@@ -1,4 +1,5 @@
 <?php
+
 namespace Robo\Task\Composer;
 
 /**
@@ -40,6 +41,8 @@ class DumpAutoload extends Base
     protected $optimize;
 
     /**
+     * @param bool $optimize
+     *
      * @return $this
      */
     public function optimize($optimize = true)
diff --git a/vendor/consolidation/robo/src/Task/Composer/Init.php b/vendor/consolidation/robo/src/Task/Composer/Init.php
index c841299ddb..ab7c44b52b 100644
--- a/vendor/consolidation/robo/src/Task/Composer/Init.php
+++ b/vendor/consolidation/robo/src/Task/Composer/Init.php
@@ -1,4 +1,5 @@
 <?php
+
 namespace Robo\Task\Composer;
 
 /**
@@ -19,6 +20,8 @@ class Init extends Base
     protected $action = 'init';
 
     /**
+     * @param string $projectName
+     *
      * @return $this
      */
     public function projectName($projectName)
@@ -28,6 +31,8 @@ public function projectName($projectName)
     }
 
     /**
+     * @param string $description
+     *
      * @return $this
      */
     public function description($description)
@@ -37,6 +42,8 @@ public function description($description)
     }
 
     /**
+     * @param string $author
+     *
      * @return $this
      */
     public function author($author)
@@ -46,6 +53,8 @@ public function author($author)
     }
 
     /**
+     * @param string $type
+     *
      * @return $this
      */
     public function projectType($type)
@@ -55,6 +64,8 @@ public function projectType($type)
     }
 
     /**
+     * @param string $homepage
+     *
      * @return $this
      */
     public function homepage($homepage)
@@ -65,6 +76,10 @@ public function homepage($homepage)
 
     /**
      * 'require' is a keyword, so it cannot be a method name.
+     *
+     * @param string $project
+     * @param null|string $version
+     *
      * @return $this
      */
     public function dependency($project, $version = null)
@@ -77,6 +92,8 @@ public function dependency($project, $version = null)
     }
 
     /**
+     * @param string $stability
+     *
      * @return $this
      */
     public function stability($stability)
@@ -86,6 +103,8 @@ public function stability($stability)
     }
 
     /**
+     * @param string $license
+     *
      * @return $this
      */
     public function license($license)
@@ -95,6 +114,8 @@ public function license($license)
     }
 
     /**
+     * @param string $repository
+     *
      * @return $this
      */
     public function repository($repository)
diff --git a/vendor/consolidation/robo/src/Task/Composer/Install.php b/vendor/consolidation/robo/src/Task/Composer/Install.php
index 76cb9861f6..9231287a7f 100644
--- a/vendor/consolidation/robo/src/Task/Composer/Install.php
+++ b/vendor/consolidation/robo/src/Task/Composer/Install.php
@@ -1,4 +1,5 @@
 <?php
+
 namespace Robo\Task\Composer;
 
 /**
diff --git a/vendor/consolidation/robo/src/Task/Composer/Remove.php b/vendor/consolidation/robo/src/Task/Composer/Remove.php
index b0316f0514..29f5c19c11 100644
--- a/vendor/consolidation/robo/src/Task/Composer/Remove.php
+++ b/vendor/consolidation/robo/src/Task/Composer/Remove.php
@@ -1,4 +1,5 @@
 <?php
+
 namespace Robo\Task\Composer;
 
 /**
@@ -19,6 +20,8 @@ class Remove extends Base
     protected $action = 'remove';
 
     /**
+     * @param bool $dev
+     *
      * @return $this
      */
     public function dev($dev = true)
@@ -30,6 +33,8 @@ public function dev($dev = true)
     }
 
     /**
+     * @param bool $noProgress
+     *
      * @return $this
      */
     public function noProgress($noProgress = true)
@@ -41,6 +46,8 @@ public function noProgress($noProgress = true)
     }
 
     /**
+     * @param bool $noUpdate
+     *
      * @return $this
      */
     public function noUpdate($noUpdate = true)
@@ -52,6 +59,8 @@ public function noUpdate($noUpdate = true)
     }
 
     /**
+     * @param bool $updateNoDev
+     *
      * @return $this
      */
     public function updateNoDev($updateNoDev = true)
@@ -63,6 +72,8 @@ public function updateNoDev($updateNoDev = true)
     }
 
     /**
+     * @param bool $updateWithDependencies
+     *
      * @return $this
      */
     public function noUpdateWithDependencies($updateWithDependencies = true)
diff --git a/vendor/consolidation/robo/src/Task/Composer/RequireDependency.php b/vendor/consolidation/robo/src/Task/Composer/RequireDependency.php
index 6cdbf61391..3ad74970e5 100644
--- a/vendor/consolidation/robo/src/Task/Composer/RequireDependency.php
+++ b/vendor/consolidation/robo/src/Task/Composer/RequireDependency.php
@@ -1,4 +1,5 @@
 <?php
+
 namespace Robo\Task\Composer;
 
 /**
@@ -20,6 +21,10 @@ class RequireDependency extends Base
 
     /**
      * 'require' is a keyword, so it cannot be a method name.
+     *
+     * @param string $project
+     * @param null|string $version
+     *
      * @return $this
      */
     public function dependency($project, $version = null)
diff --git a/vendor/consolidation/robo/src/Task/Composer/Update.php b/vendor/consolidation/robo/src/Task/Composer/Update.php
index 3a0a64afcb..b3f2c7a285 100644
--- a/vendor/consolidation/robo/src/Task/Composer/Update.php
+++ b/vendor/consolidation/robo/src/Task/Composer/Update.php
@@ -1,4 +1,5 @@
 <?php
+
 namespace Robo\Task\Composer;
 
 /**
diff --git a/vendor/consolidation/robo/src/Task/Composer/Validate.php b/vendor/consolidation/robo/src/Task/Composer/Validate.php
index adb1585430..0b17e1e2ff 100644
--- a/vendor/consolidation/robo/src/Task/Composer/Validate.php
+++ b/vendor/consolidation/robo/src/Task/Composer/Validate.php
@@ -1,4 +1,5 @@
 <?php
+
 namespace Robo\Task\Composer;
 
 /**
@@ -19,6 +20,8 @@ class Validate extends Base
     protected $action = 'validate';
 
     /**
+     * @param bool $noCheckAll
+     *
      * @return $this
      */
     public function noCheckAll($noCheckAll = true)
@@ -30,6 +33,8 @@ public function noCheckAll($noCheckAll = true)
     }
 
     /**
+     * @param bool $noCheckLock
+     *
      * @return $this
      */
     public function noCheckLock($noCheckLock = true)
@@ -41,6 +46,8 @@ public function noCheckLock($noCheckLock = true)
     }
 
     /**
+     * @param bool $noCheckPublish
+     *
      * @return $this
      */
     public function noCheckPublish($noCheckPublish = true)
@@ -52,6 +59,8 @@ public function noCheckPublish($noCheckPublish = true)
     }
 
     /**
+     * @param bool $withDependencies
+     *
      * @return $this
      */
     public function withDependencies($withDependencies = true)
@@ -63,6 +72,8 @@ public function withDependencies($withDependencies = true)
     }
 
     /**
+     * @param bool $strict
+     *
      * @return $this
      */
     public function strict($strict = true)
diff --git a/vendor/consolidation/robo/src/Task/Composer/loadTasks.php b/vendor/consolidation/robo/src/Task/Composer/loadTasks.php
index a7149f8a2d..c4e77894e3 100644
--- a/vendor/consolidation/robo/src/Task/Composer/loadTasks.php
+++ b/vendor/consolidation/robo/src/Task/Composer/loadTasks.php
@@ -1,4 +1,5 @@
 <?php
+
 namespace Robo\Task\Composer;
 
 trait loadTasks
@@ -6,7 +7,7 @@ trait loadTasks
     /**
      * @param null|string $pathToComposer
      *
-     * @return Install
+     * @return \Robo\Task\Composer\Install|\Robo\Collection\CollectionBuilder
      */
     protected function taskComposerInstall($pathToComposer = null)
     {
@@ -16,7 +17,7 @@ protected function taskComposerInstall($pathToComposer = null)
     /**
      * @param null|string $pathToComposer
      *
-     * @return Update
+     * @return \Robo\Task\Composer\Update|\Robo\Collection\CollectionBuilder
      */
     protected function taskComposerUpdate($pathToComposer = null)
     {
@@ -26,7 +27,7 @@ protected function taskComposerUpdate($pathToComposer = null)
     /**
      * @param null|string $pathToComposer
      *
-     * @return DumpAutoload
+     * @return \Robo\Task\Composer\DumpAutoload|\Robo\Collection\CollectionBuilder
      */
     protected function taskComposerDumpAutoload($pathToComposer = null)
     {
@@ -36,7 +37,7 @@ protected function taskComposerDumpAutoload($pathToComposer = null)
     /**
      * @param null|string $pathToComposer
      *
-     * @return Init
+     * @return \Robo\Task\Composer\Init|\Robo\Collection\CollectionBuilder
      */
     protected function taskComposerInit($pathToComposer = null)
     {
@@ -46,7 +47,7 @@ protected function taskComposerInit($pathToComposer = null)
     /**
      * @param null|string $pathToComposer
      *
-     * @return Config
+     * @return \Robo\Task\Composer\Config|\Robo\Collection\CollectionBuilder
      */
     protected function taskComposerConfig($pathToComposer = null)
     {
@@ -56,7 +57,7 @@ protected function taskComposerConfig($pathToComposer = null)
     /**
      * @param null|string $pathToComposer
      *
-     * @return Validate
+     * @return \Robo\Task\Composer\Validate|\Robo\Collection\CollectionBuilder
      */
     protected function taskComposerValidate($pathToComposer = null)
     {
@@ -66,7 +67,7 @@ protected function taskComposerValidate($pathToComposer = null)
     /**
      * @param null|string $pathToComposer
      *
-     * @return Remove
+     * @return \Robo\Task\Composer\Remove|\Robo\Collection\CollectionBuilder
      */
     protected function taskComposerRemove($pathToComposer = null)
     {
@@ -76,7 +77,7 @@ protected function taskComposerRemove($pathToComposer = null)
     /**
      * @param null|string $pathToComposer
      *
-     * @return RequireDependency
+     * @return \Robo\Task\Composer\RequireDependency|\Robo\Collection\CollectionBuilder
      */
     protected function taskComposerRequire($pathToComposer = null)
     {
@@ -86,7 +87,7 @@ protected function taskComposerRequire($pathToComposer = null)
     /**
      * @param null|string $pathToComposer
      *
-     * @return CreateProject
+     * @return \Robo\Task\Composer\CreateProject|\Robo\Collection\CollectionBuilder
      */
     protected function taskComposerCreateProject($pathToComposer = null)
     {
diff --git a/vendor/consolidation/robo/src/Task/Development/Changelog.php b/vendor/consolidation/robo/src/Task/Development/Changelog.php
index 44af6d8202..2496a15837 100644
--- a/vendor/consolidation/robo/src/Task/Development/Changelog.php
+++ b/vendor/consolidation/robo/src/Task/Development/Changelog.php
@@ -1,4 +1,5 @@
 <?php
+
 namespace Robo\Task\Development;
 
 use Robo\Task\BaseTask;
@@ -216,7 +217,7 @@ public function run()
     }
 
     /**
-     * @return \Robo\Result|string
+     * @return string
      */
     protected function generateBody()
     {
@@ -235,7 +236,7 @@ protected function generateHeader()
     }
 
     /**
-     * @param $i
+     * @param string $i
      *
      * @return string
      */
diff --git a/vendor/consolidation/robo/src/Task/Development/GenerateMarkdownDoc.php b/vendor/consolidation/robo/src/Task/Development/GenerateMarkdownDoc.php
index 490aef31fe..053ba6ab4c 100644
--- a/vendor/consolidation/robo/src/Task/Development/GenerateMarkdownDoc.php
+++ b/vendor/consolidation/robo/src/Task/Development/GenerateMarkdownDoc.php
@@ -1,4 +1,5 @@
 <?php
+
 namespace Robo\Task\Development;
 
 use Robo\Task\BaseTask;
@@ -506,7 +507,7 @@ protected function documentClass($class)
 
         $methods = array_filter($methods);
 
-        $doc .= implode("\n", $methods)."\n";
+        $doc .= implode("\n", $methods) . "\n";
 
         return $doc;
     }
diff --git a/vendor/consolidation/robo/src/Task/Development/GenerateTask.php b/vendor/consolidation/robo/src/Task/Development/GenerateTask.php
index 9d7a698e9c..2ea5ca01a9 100644
--- a/vendor/consolidation/robo/src/Task/Development/GenerateTask.php
+++ b/vendor/consolidation/robo/src/Task/Development/GenerateTask.php
@@ -1,4 +1,5 @@
 <?php
+
 namespace Robo\Task\Development;
 
 use Robo\Task\BaseTask;
diff --git a/vendor/consolidation/robo/src/Task/Development/GitHub.php b/vendor/consolidation/robo/src/Task/Development/GitHub.php
index 9fc9909d42..04d28e5067 100644
--- a/vendor/consolidation/robo/src/Task/Development/GitHub.php
+++ b/vendor/consolidation/robo/src/Task/Development/GitHub.php
@@ -1,4 +1,5 @@
 <?php
+
 namespace Robo\Task\Development;
 
 use Robo\Exception\TaskException;
@@ -86,7 +87,7 @@ public function user($user)
     }
 
     /**
-     * @param $password
+     * @param string $password
      *
      * @return $this
      */
@@ -97,7 +98,7 @@ public function password($password)
     }
 
     /**
-     * @param $accessToken
+     * @param string $token
      *
      * @return $this
      */
diff --git a/vendor/consolidation/robo/src/Task/Development/GitHubRelease.php b/vendor/consolidation/robo/src/Task/Development/GitHubRelease.php
index bf7a4889e5..f9d218cd58 100644
--- a/vendor/consolidation/robo/src/Task/Development/GitHubRelease.php
+++ b/vendor/consolidation/robo/src/Task/Development/GitHubRelease.php
@@ -1,4 +1,5 @@
 <?php
+
 namespace Robo\Task\Development;
 
 use Robo\Result;
diff --git a/vendor/consolidation/robo/src/Task/Development/OpenBrowser.php b/vendor/consolidation/robo/src/Task/Development/OpenBrowser.php
index ea01b326d8..ac3840bada 100644
--- a/vendor/consolidation/robo/src/Task/Development/OpenBrowser.php
+++ b/vendor/consolidation/robo/src/Task/Development/OpenBrowser.php
@@ -1,4 +1,5 @@
 <?php
+
 namespace Robo\Task\Development;
 
 use Robo\Task\BaseTask;
@@ -31,7 +32,7 @@ class OpenBrowser extends BaseTask
     protected $urls = [];
 
     /**
-     * @param string|array $url
+     * @param string|string[] $url
      */
     public function __construct($url)
     {
diff --git a/vendor/consolidation/robo/src/Task/Development/PackPhar.php b/vendor/consolidation/robo/src/Task/Development/PackPhar.php
index 6d0a04d72a..edcab5680a 100644
--- a/vendor/consolidation/robo/src/Task/Development/PackPhar.php
+++ b/vendor/consolidation/robo/src/Task/Development/PackPhar.php
@@ -1,4 +1,5 @@
 <?php
+
 namespace Robo\Task\Development;
 
 use Robo\Contract\ProgressIndicatorAwareInterface;
@@ -129,7 +130,7 @@ public function progressIndicatorSteps()
     {
         // run() will call advanceProgressIndicator() once for each
         // file, one after calling stopBuffering, and again after compression.
-        return count($this->files)+2;
+        return count($this->files) + 2;
     }
 
     /**
diff --git a/vendor/consolidation/robo/src/Task/Development/PhpServer.php b/vendor/consolidation/robo/src/Task/Development/PhpServer.php
index 6dd36680a7..c274d8c30d 100644
--- a/vendor/consolidation/robo/src/Task/Development/PhpServer.php
+++ b/vendor/consolidation/robo/src/Task/Development/PhpServer.php
@@ -1,4 +1,5 @@
 <?php
+
 namespace Robo\Task\Development;
 
 use Robo\Task\Base\Exec;
diff --git a/vendor/consolidation/robo/src/Task/Development/SemVer.php b/vendor/consolidation/robo/src/Task/Development/SemVer.php
index 639c15323a..1c021baf8e 100644
--- a/vendor/consolidation/robo/src/Task/Development/SemVer.php
+++ b/vendor/consolidation/robo/src/Task/Development/SemVer.php
@@ -1,4 +1,5 @@
 <?php
+
 namespace Robo\Task\Development;
 
 use Robo\Result;
@@ -88,6 +89,11 @@ public function __toString()
         return str_replace($search, $replace, $this->format);
     }
 
+    /**
+     * @param string $version
+     *
+     * @return $this
+     */
     public function version($version)
     {
         $this->parseString($version);
@@ -220,14 +226,25 @@ protected function dump()
         if (empty($this->path)) {
             return true;
         }
-        extract($this->version);
-        $semver = sprintf(self::SEMVER, $major, $minor, $patch, $special, $metadata);
+        $semver = sprintf(
+            self::SEMVER,
+            $this->version['major'],
+            $this->version['minor'],
+            $this->version['patch'],
+            $this->version['special'],
+            $this->version['metadata']
+        );
         if (is_writeable($this->path) === false || file_put_contents($this->path, $semver) === false) {
             throw new TaskException($this, 'Failed to write semver file.');
         }
         return true;
     }
 
+    /**
+     * @param string $semverString
+     *
+     * @throws \Robo\Exception\TaskException
+     */
     protected function parseString($semverString)
     {
         if (!preg_match_all(self::REGEX_STRING, $semverString, $matches)) {
@@ -241,6 +258,8 @@ protected function parseString($semverString)
     }
 
     /**
+     * @param string $semverFileContents
+     *
      * @throws \Robo\Exception\TaskException
      */
     protected function parseFile($semverFileContents)
diff --git a/vendor/consolidation/robo/src/Task/Development/loadTasks.php b/vendor/consolidation/robo/src/Task/Development/loadTasks.php
index e3dc49a39d..63f36bd2f3 100644
--- a/vendor/consolidation/robo/src/Task/Development/loadTasks.php
+++ b/vendor/consolidation/robo/src/Task/Development/loadTasks.php
@@ -1,4 +1,5 @@
 <?php
+
 namespace Robo\Task\Development;
 
 trait loadTasks
@@ -6,7 +7,7 @@ trait loadTasks
     /**
      * @param string $filename
      *
-     * @return Changelog
+     * @return \Robo\Task\Development\Changelog|\Robo\Collection\CollectionBuilder
      */
     protected function taskChangelog($filename = 'CHANGELOG.md')
     {
@@ -16,7 +17,7 @@ protected function taskChangelog($filename = 'CHANGELOG.md')
     /**
      * @param string $filename
      *
-     * @return GenerateMarkdownDoc
+     * @return \Robo\Task\Development\GenerateMarkdownDoc|\Robo\Collection\CollectionBuilder
      */
     protected function taskGenDoc($filename)
     {
@@ -27,7 +28,7 @@ protected function taskGenDoc($filename)
      * @param string $className
      * @param string $wrapperClassName
      *
-     * @return \Robo\Task\Development\GenerateTask
+     * @return \Robo\Task\Development\GenerateTask|\Robo\Collection\CollectionBuilder
      */
     protected function taskGenTask($className, $wrapperClassName = '')
     {
@@ -37,7 +38,7 @@ protected function taskGenTask($className, $wrapperClassName = '')
     /**
      * @param string $pathToSemVer
      *
-     * @return SemVer
+     * @return \Robo\Task\Development\SemVer|\Robo\Collection\CollectionBuilder
      */
     protected function taskSemVer($pathToSemVer = '.semver')
     {
@@ -47,7 +48,7 @@ protected function taskSemVer($pathToSemVer = '.semver')
     /**
      * @param int $port
      *
-     * @return PhpServer
+     * @return \Robo\Task\Development\PhpServer|\Robo\Collection\CollectionBuilder
      */
     protected function taskServer($port = 8000)
     {
@@ -57,7 +58,7 @@ protected function taskServer($port = 8000)
     /**
      * @param string $filename
      *
-     * @return PackPhar
+     * @return \Robo\Task\Development\PackPhar|\Robo\Collection\CollectionBuilder
      */
     protected function taskPackPhar($filename)
     {
@@ -67,7 +68,7 @@ protected function taskPackPhar($filename)
     /**
      * @param string $tag
      *
-     * @return GitHubRelease
+     * @return \Robo\Task\Development\GitHubRelease|\Robo\Collection\CollectionBuilder
      */
     protected function taskGitHubRelease($tag)
     {
@@ -77,7 +78,7 @@ protected function taskGitHubRelease($tag)
     /**
      * @param string|array $url
      *
-     * @return OpenBrowser
+     * @return \Robo\Task\Development\OpenBrowser|\Robo\Collection\CollectionBuilder
      */
     protected function taskOpenBrowser($url)
     {
diff --git a/vendor/consolidation/robo/src/Task/Docker/Base.php b/vendor/consolidation/robo/src/Task/Docker/Base.php
index 135f39e7a5..dc7cc3fd09 100644
--- a/vendor/consolidation/robo/src/Task/Docker/Base.php
+++ b/vendor/consolidation/robo/src/Task/Docker/Base.php
@@ -1,4 +1,5 @@
 <?php
+
 namespace Robo\Task\Docker;
 
 use Robo\Common\ExecOneCommand;
diff --git a/vendor/consolidation/robo/src/Task/Docker/Build.php b/vendor/consolidation/robo/src/Task/Docker/Build.php
index 11eb92ab49..448a204bef 100644
--- a/vendor/consolidation/robo/src/Task/Docker/Build.php
+++ b/vendor/consolidation/robo/src/Task/Docker/Build.php
@@ -1,4 +1,5 @@
 <?php
+
 namespace Robo\Task\Docker;
 
 /**
diff --git a/vendor/consolidation/robo/src/Task/Docker/Commit.php b/vendor/consolidation/robo/src/Task/Docker/Commit.php
index 302f1920ed..1660a492ea 100644
--- a/vendor/consolidation/robo/src/Task/Docker/Commit.php
+++ b/vendor/consolidation/robo/src/Task/Docker/Commit.php
@@ -1,4 +1,5 @@
 <?php
+
 namespace Robo\Task\Docker;
 
 /**
@@ -54,7 +55,7 @@ public function getCommand()
     }
 
     /**
-     * @param $name
+     * @param string $name
      *
      * @return $this
      */
diff --git a/vendor/consolidation/robo/src/Task/Docker/Exec.php b/vendor/consolidation/robo/src/Task/Docker/Exec.php
index fa67c8da0e..078ed60d4b 100644
--- a/vendor/consolidation/robo/src/Task/Docker/Exec.php
+++ b/vendor/consolidation/robo/src/Task/Docker/Exec.php
@@ -1,4 +1,5 @@
 <?php
+
 namespace Robo\Task\Docker;
 
 use Robo\Common\CommandReceiver;
@@ -64,7 +65,7 @@ public function detached()
     }
 
     /**
-     * {@inheritdoc)}
+     * {@inheritdoc}
      */
     public function interactive($interactive = true)
     {
@@ -90,6 +91,6 @@ public function exec($command)
      */
     public function getCommand()
     {
-        return $this->command . ' ' . $this->arguments . ' ' . $this->cid.' '.$this->run;
+        return $this->command . ' ' . $this->arguments . ' ' . $this->cid . ' ' . $this->run;
     }
 }
diff --git a/vendor/consolidation/robo/src/Task/Docker/Pull.php b/vendor/consolidation/robo/src/Task/Docker/Pull.php
index 32ba5b40f8..36c812ca5e 100644
--- a/vendor/consolidation/robo/src/Task/Docker/Pull.php
+++ b/vendor/consolidation/robo/src/Task/Docker/Pull.php
@@ -1,4 +1,5 @@
 <?php
+
 namespace Robo\Task\Docker;
 
 /**
diff --git a/vendor/consolidation/robo/src/Task/Docker/Remove.php b/vendor/consolidation/robo/src/Task/Docker/Remove.php
index 0a8c0ac619..0aecca9154 100644
--- a/vendor/consolidation/robo/src/Task/Docker/Remove.php
+++ b/vendor/consolidation/robo/src/Task/Docker/Remove.php
@@ -1,4 +1,5 @@
 <?php
+
 namespace Robo\Task\Docker;
 
 /**
diff --git a/vendor/consolidation/robo/src/Task/Docker/Result.php b/vendor/consolidation/robo/src/Task/Docker/Result.php
index 0533159a87..c6fde9f124 100644
--- a/vendor/consolidation/robo/src/Task/Docker/Result.php
+++ b/vendor/consolidation/robo/src/Task/Docker/Result.php
@@ -1,4 +1,5 @@
 <?php
+
 namespace Robo\Task\Docker;
 
 class Result extends \Robo\Result
diff --git a/vendor/consolidation/robo/src/Task/Docker/Run.php b/vendor/consolidation/robo/src/Task/Docker/Run.php
index a02ea76f63..9af7d51c38 100644
--- a/vendor/consolidation/robo/src/Task/Docker/Run.php
+++ b/vendor/consolidation/robo/src/Task/Docker/Run.php
@@ -1,4 +1,5 @@
 <?php
+
 namespace Robo\Task\Docker;
 
 use Robo\Common\CommandReceiver;
@@ -115,7 +116,7 @@ public function detached()
     }
 
     /**
-     * {@inheritdoc)}
+     * {@inheritdoc}
      */
     public function interactive($interactive = true)
     {
@@ -155,7 +156,8 @@ public function volume($from, $to = null)
      * inherited from ExecTrait.
      *
      * @param array $env
-     * @return type
+     *
+     * @return $this
      */
     public function envVars(array $env)
     {
diff --git a/vendor/consolidation/robo/src/Task/Docker/Start.php b/vendor/consolidation/robo/src/Task/Docker/Start.php
index ef19d74d14..3c76a17a65 100644
--- a/vendor/consolidation/robo/src/Task/Docker/Start.php
+++ b/vendor/consolidation/robo/src/Task/Docker/Start.php
@@ -1,4 +1,5 @@
 <?php
+
 namespace Robo\Task\Docker;
 
 /**
diff --git a/vendor/consolidation/robo/src/Task/Docker/Stop.php b/vendor/consolidation/robo/src/Task/Docker/Stop.php
index 4d0d436d3f..25debaa07d 100644
--- a/vendor/consolidation/robo/src/Task/Docker/Stop.php
+++ b/vendor/consolidation/robo/src/Task/Docker/Stop.php
@@ -1,4 +1,5 @@
 <?php
+
 namespace Robo\Task\Docker;
 
 /**
diff --git a/vendor/consolidation/robo/src/Task/Docker/loadTasks.php b/vendor/consolidation/robo/src/Task/Docker/loadTasks.php
index e58f5ef0c5..6a5eab4325 100644
--- a/vendor/consolidation/robo/src/Task/Docker/loadTasks.php
+++ b/vendor/consolidation/robo/src/Task/Docker/loadTasks.php
@@ -1,4 +1,5 @@
 <?php
+
 namespace Robo\Task\Docker;
 
 trait loadTasks
@@ -6,7 +7,7 @@ trait loadTasks
     /**
      * @param string $image
      *
-     * @return \Robo\Task\Docker\Run
+     * @return \Robo\Task\Docker\Run|\Robo\Collection\CollectionBuilder
      */
     protected function taskDockerRun($image)
     {
@@ -16,7 +17,7 @@ protected function taskDockerRun($image)
     /**
      * @param string $image
      *
-     * @return \Robo\Task\Docker\Pull
+     * @return \Robo\Task\Docker\Pull|\Robo\Collection\CollectionBuilder
      */
     protected function taskDockerPull($image)
     {
@@ -26,7 +27,7 @@ protected function taskDockerPull($image)
     /**
      * @param string $path
      *
-     * @return \Robo\Task\Docker\Build
+     * @return \Robo\Task\Docker\Build|\Robo\Collection\CollectionBuilder
      */
     protected function taskDockerBuild($path = '.')
     {
@@ -36,7 +37,7 @@ protected function taskDockerBuild($path = '.')
     /**
      * @param string|\Robo\Task\Docker\Result $cidOrResult
      *
-     * @return \Robo\Task\Docker\Stop
+     * @return \Robo\Task\Docker\Stop|\Robo\Collection\CollectionBuilder
      */
     protected function taskDockerStop($cidOrResult)
     {
@@ -46,7 +47,7 @@ protected function taskDockerStop($cidOrResult)
     /**
      * @param string|\Robo\Task\Docker\Result $cidOrResult
      *
-     * @return \Robo\Task\Docker\Commit
+     * @return \Robo\Task\Docker\Commit|\Robo\Collection\CollectionBuilder
      */
     protected function taskDockerCommit($cidOrResult)
     {
@@ -56,7 +57,7 @@ protected function taskDockerCommit($cidOrResult)
     /**
      * @param string|\Robo\Task\Docker\Result $cidOrResult
      *
-     * @return \Robo\Task\Docker\Start
+     * @return \Robo\Task\Docker\Start|\Robo\Collection\CollectionBuilder
      */
     protected function taskDockerStart($cidOrResult)
     {
@@ -66,7 +67,7 @@ protected function taskDockerStart($cidOrResult)
     /**
      * @param string|\Robo\Task\Docker\Result $cidOrResult
      *
-     * @return \Robo\Task\Docker\Remove
+     * @return \Robo\Task\Docker\Remove|\Robo\Collection\CollectionBuilder
      */
     protected function taskDockerRemove($cidOrResult)
     {
@@ -76,7 +77,7 @@ protected function taskDockerRemove($cidOrResult)
     /**
      * @param string|\Robo\Task\Docker\Result $cidOrResult
      *
-     * @return \Robo\Task\Docker\Exec
+     * @return \Robo\Task\Docker\Exec|\Robo\Collection\CollectionBuilder
      */
     protected function taskDockerExec($cidOrResult)
     {
diff --git a/vendor/consolidation/robo/src/Task/File/Concat.php b/vendor/consolidation/robo/src/Task/File/Concat.php
index 12b1eca00f..43fd2fdba6 100644
--- a/vendor/consolidation/robo/src/Task/File/Concat.php
+++ b/vendor/consolidation/robo/src/Task/File/Concat.php
@@ -1,4 +1,5 @@
 <?php
+
 namespace Robo\Task\File;
 
 use Iterator;
@@ -26,7 +27,7 @@ class Concat extends BaseTask
     use ResourceExistenceChecker;
 
     /**
-     * @var array|Iterator
+     * @var array|\Iterator
      */
     protected $files;
 
@@ -38,7 +39,7 @@ class Concat extends BaseTask
     /**
      * Constructor.
      *
-     * @param array|Iterator $files
+     * @param array|\Iterator $files
      */
     public function __construct($files)
     {
diff --git a/vendor/consolidation/robo/src/Task/File/Replace.php b/vendor/consolidation/robo/src/Task/File/Replace.php
index 0107df13c3..7b4cd49d6a 100644
--- a/vendor/consolidation/robo/src/Task/File/Replace.php
+++ b/vendor/consolidation/robo/src/Task/File/Replace.php
@@ -1,4 +1,5 @@
 <?php
+
 namespace Robo\Task\File;
 
 use Robo\Result;
diff --git a/vendor/consolidation/robo/src/Task/File/Write.php b/vendor/consolidation/robo/src/Task/File/Write.php
index dc2199f927..d2b1e6a6b4 100644
--- a/vendor/consolidation/robo/src/Task/File/Write.php
+++ b/vendor/consolidation/robo/src/Task/File/Write.php
@@ -75,7 +75,8 @@ public function append($append = true)
      *
      * @param string $line
      *
-     * @return $this The current instance
+     * @return $this
+     *   The current instance.
      */
     public function line($line)
     {
@@ -88,7 +89,8 @@ public function line($line)
      *
      * @param array $lines
      *
-     * @return $this The current instance
+     * @return $this
+     *   The current instance.
      */
     public function lines(array $lines)
     {
@@ -101,7 +103,8 @@ public function lines(array $lines)
      *
      * @param string $text
      *
-     * @return $this The current instance
+     * @return $this
+     *   The current instance.
      */
     public function text($text)
     {
@@ -120,7 +123,8 @@ public function text($text)
      *
      * @param string $filename
      *
-     * @return $this The current instance
+     * @return $this
+     *   The current instance.
      */
     public function textFromFile($filename)
     {
@@ -134,11 +138,12 @@ public function textFromFile($filename)
      * @param string $name
      * @param string $val
      *
-     * @return $this The current instance
+     * @return $this
+     *   The current instance.
      */
     public function place($name, $val)
     {
-        $this->replace('{'.$name.'}', $val);
+        $this->replace('{' . $name . '}', $val);
 
         return $this;
     }
@@ -149,7 +154,8 @@ public function place($name, $val)
      * @param string $string
      * @param string $replacement
      *
-     * @return $this The current instance
+     * @return $this
+     *   The current instance.
      */
     public function replace($string, $replacement)
     {
@@ -163,7 +169,8 @@ public function replace($string, $replacement)
      * @param string $pattern
      * @param string $replacement
      *
-     * @return $this The current instance
+     * @return $this
+     *   The current instance.
      */
     public function regexReplace($pattern, $replacement)
     {
@@ -202,8 +209,8 @@ public function appendUnlessMatches($pattern, $text)
     }
 
     /**
-     * @param $contents string
-     * @param $filename string
+     * @param string $contents
+     * @param string $filename
      *
      * @return string
      */
diff --git a/vendor/consolidation/robo/src/Task/File/loadTasks.php b/vendor/consolidation/robo/src/Task/File/loadTasks.php
index c5f39c9500..210fb40cdd 100644
--- a/vendor/consolidation/robo/src/Task/File/loadTasks.php
+++ b/vendor/consolidation/robo/src/Task/File/loadTasks.php
@@ -1,4 +1,5 @@
 <?php
+
 namespace Robo\Task\File;
 
 trait loadTasks
@@ -6,7 +7,7 @@ trait loadTasks
     /**
      * @param array|\Iterator $files
      *
-     * @return \Robo\Task\File\Concat
+     * @return \Robo\Task\File\Concat|\Robo\Collection\CollectionBuilder
      */
     protected function taskConcat($files)
     {
@@ -16,7 +17,7 @@ protected function taskConcat($files)
     /**
      * @param string $file
      *
-     * @return \Robo\Task\File\Replace
+     * @return \Robo\Task\File\Replace|\Robo\Collection\CollectionBuilder
      */
     protected function taskReplaceInFile($file)
     {
@@ -26,7 +27,7 @@ protected function taskReplaceInFile($file)
     /**
      * @param string $file
      *
-     * @return \Robo\Task\File\Write
+     * @return \Robo\Task\File\Write|\Robo\Collection\CollectionBuilder
      */
     protected function taskWriteToFile($file)
     {
@@ -39,7 +40,7 @@ protected function taskWriteToFile($file)
      * @param string $baseDir
      * @param bool $includeRandomPart
      *
-     * @return \Robo\Task\File\TmpFile
+     * @return \Robo\Task\File\TmpFile|\Robo\Collection\CollectionBuilder
      */
     protected function taskTmpFile($filename = 'tmp', $extension = '', $baseDir = '', $includeRandomPart = true)
     {
diff --git a/vendor/consolidation/robo/src/Task/Filesystem/BaseDir.php b/vendor/consolidation/robo/src/Task/Filesystem/BaseDir.php
index 434334d797..b8146851fc 100644
--- a/vendor/consolidation/robo/src/Task/Filesystem/BaseDir.php
+++ b/vendor/consolidation/robo/src/Task/Filesystem/BaseDir.php
@@ -1,4 +1,5 @@
 <?php
+
 namespace Robo\Task\Filesystem;
 
 use Robo\Task\BaseTask;
diff --git a/vendor/consolidation/robo/src/Task/Filesystem/CleanDir.php b/vendor/consolidation/robo/src/Task/Filesystem/CleanDir.php
index 762f855096..cfd8ad4899 100644
--- a/vendor/consolidation/robo/src/Task/Filesystem/CleanDir.php
+++ b/vendor/consolidation/robo/src/Task/Filesystem/CleanDir.php
@@ -1,4 +1,5 @@
 <?php
+
 namespace Robo\Task\Filesystem;
 
 use Robo\Common\ResourceExistenceChecker;
diff --git a/vendor/consolidation/robo/src/Task/Filesystem/CopyDir.php b/vendor/consolidation/robo/src/Task/Filesystem/CopyDir.php
index 084822229b..a14c7371e9 100644
--- a/vendor/consolidation/robo/src/Task/Filesystem/CopyDir.php
+++ b/vendor/consolidation/robo/src/Task/Filesystem/CopyDir.php
@@ -1,4 +1,5 @@
 <?php
+
 namespace Robo\Task\Filesystem;
 
 use Robo\Common\ResourceExistenceChecker;
@@ -23,6 +24,8 @@ class CopyDir extends BaseDir
     /**
      * Explicitly declare our consturctor, so that
      * our copyDir() method does not look like a php4 constructor.
+     *
+     * @param string|string[] $dirs
      */
     public function __construct($dirs)
     {
@@ -140,6 +143,12 @@ protected function copyDir($src, $dst, $parent = '')
 
     /**
      * Check to see if the current item is excluded.
+     *
+     * @param string $file
+     * @param string $src
+     * @param string $parent
+     *
+     * @return bool
      */
     protected function excluded($file, $src, $parent)
     {
@@ -154,6 +163,10 @@ protected function excluded($file, $src, $parent)
     /**
      * Avoid problems comparing paths on Windows that may have a
      * combination of DIRECTORY_SEPARATOR and /.
+     *
+     * @param string$item
+     *
+     * @return string
      */
     protected function simplifyForCompare($item)
     {
diff --git a/vendor/consolidation/robo/src/Task/Filesystem/DeleteDir.php b/vendor/consolidation/robo/src/Task/Filesystem/DeleteDir.php
index 25cf007b59..eb1015a8f2 100644
--- a/vendor/consolidation/robo/src/Task/Filesystem/DeleteDir.php
+++ b/vendor/consolidation/robo/src/Task/Filesystem/DeleteDir.php
@@ -1,4 +1,5 @@
 <?php
+
 namespace Robo\Task\Filesystem;
 
 use Robo\Common\ResourceExistenceChecker;
diff --git a/vendor/consolidation/robo/src/Task/Filesystem/FilesystemStack.php b/vendor/consolidation/robo/src/Task/Filesystem/FilesystemStack.php
index 8663e245d3..5dbb5a78a2 100644
--- a/vendor/consolidation/robo/src/Task/Filesystem/FilesystemStack.php
+++ b/vendor/consolidation/robo/src/Task/Filesystem/FilesystemStack.php
@@ -1,4 +1,5 @@
 <?php
+
 namespace Robo\Task\Filesystem;
 
 use Robo\Task\StackBasedTask;
diff --git a/vendor/consolidation/robo/src/Task/Filesystem/FlattenDir.php b/vendor/consolidation/robo/src/Task/Filesystem/FlattenDir.php
index 6e885112e0..c06a6bbbe1 100644
--- a/vendor/consolidation/robo/src/Task/Filesystem/FlattenDir.php
+++ b/vendor/consolidation/robo/src/Task/Filesystem/FlattenDir.php
@@ -176,7 +176,7 @@ public function parentDir($dir)
     {
         if (!$this->fs->isAbsolutePath($dir)) {
             // attach the relative path to current working directory
-            $dir = getcwd().'/'.$dir;
+            $dir = getcwd() . '/' . $dir;
         }
         $this->parentDir = $dir;
 
@@ -230,7 +230,7 @@ protected function findFiles($dirs)
             } catch (\InvalidArgumentException $e) {
                 // if finder cannot handle it, try with in()->name()
                 if (strpos($dir, '/') === false) {
-                    $dir = './'.$dir;
+                    $dir = './' . $dir;
                 }
                 $parts = explode('/', $dir);
                 $new_dir = implode('/', array_slice($parts, 0, -1));
@@ -260,7 +260,7 @@ protected function findFiles($dirs)
      */
     protected function getTarget($file, $to)
     {
-        $target = $to.'/'.basename($file);
+        $target = $to . '/' . basename($file);
         if ($this->parents !== array(0, 0)) {
             // if the parent is set, create additional directories inside target
             // get relative path to parentDir
@@ -268,10 +268,10 @@ protected function getTarget($file, $to)
             // get top parents and bottom parents
             $parts = explode('/', rtrim($rel_path, '/'));
             $prefix_dir = '';
-            $prefix_dir .= ($this->parents[0] > 0 ? implode('/', array_slice($parts, 0, $this->parents[0])).'/' : '');
+            $prefix_dir .= ($this->parents[0] > 0 ? implode('/', array_slice($parts, 0, $this->parents[0])) . '/' : '');
             $prefix_dir .= ($this->parents[1] > 0 ? implode('/', array_slice($parts, (0 - $this->parents[1]), $this->parents[1])) : '');
             $prefix_dir = rtrim($prefix_dir, '/');
-            $target = $to.'/'.$prefix_dir.'/'.basename($file);
+            $target = $to . '/' . $prefix_dir . '/' . basename($file);
         }
 
         return $target;
diff --git a/vendor/consolidation/robo/src/Task/Filesystem/MirrorDir.php b/vendor/consolidation/robo/src/Task/Filesystem/MirrorDir.php
index 4eda9097be..a581d0c229 100644
--- a/vendor/consolidation/robo/src/Task/Filesystem/MirrorDir.php
+++ b/vendor/consolidation/robo/src/Task/Filesystem/MirrorDir.php
@@ -1,4 +1,5 @@
 <?php
+
 namespace Robo\Task\Filesystem;
 
 use Robo\Result;
diff --git a/vendor/consolidation/robo/src/Task/Filesystem/loadShortcuts.php b/vendor/consolidation/robo/src/Task/Filesystem/loadShortcuts.php
index fe72ce5a43..0863ca8049 100644
--- a/vendor/consolidation/robo/src/Task/Filesystem/loadShortcuts.php
+++ b/vendor/consolidation/robo/src/Task/Filesystem/loadShortcuts.php
@@ -1,4 +1,5 @@
 <?php
+
 namespace Robo\Task\Filesystem;
 
 trait loadShortcuts
diff --git a/vendor/consolidation/robo/src/Task/Filesystem/loadTasks.php b/vendor/consolidation/robo/src/Task/Filesystem/loadTasks.php
index 8fecaafff7..577193020b 100644
--- a/vendor/consolidation/robo/src/Task/Filesystem/loadTasks.php
+++ b/vendor/consolidation/robo/src/Task/Filesystem/loadTasks.php
@@ -1,4 +1,5 @@
 <?php
+
 namespace Robo\Task\Filesystem;
 
 trait loadTasks
@@ -6,7 +7,7 @@ trait loadTasks
     /**
      * @param string|string[] $dirs
      *
-     * @return \Robo\Task\Filesystem\CleanDir
+     * @return \Robo\Task\Filesystem\CleanDir|\Robo\Collection\CollectionBuilder
      */
     protected function taskCleanDir($dirs)
     {
@@ -16,7 +17,7 @@ protected function taskCleanDir($dirs)
     /**
      * @param string|string[] $dirs
      *
-     * @return \Robo\Task\Filesystem\DeleteDir
+     * @return \Robo\Task\Filesystem\DeleteDir|\Robo\Collection\CollectionBuilder
      */
     protected function taskDeleteDir($dirs)
     {
@@ -28,7 +29,7 @@ protected function taskDeleteDir($dirs)
      * @param string $base
      * @param bool $includeRandomPart
      *
-     * @return \Robo\Task\Filesystem\WorkDir
+     * @return \Robo\Task\Filesystem\WorkDir|\Robo\Collection\CollectionBuilder
      */
     protected function taskTmpDir($prefix = 'tmp', $base = '', $includeRandomPart = true)
     {
@@ -38,7 +39,7 @@ protected function taskTmpDir($prefix = 'tmp', $base = '', $includeRandomPart =
     /**
      * @param string $finalDestination
      *
-     * @return \Robo\Task\Filesystem\TmpDir
+     * @return \Robo\Task\Filesystem\TmpDir|\Robo\Collection\CollectionBuilder
      */
     protected function taskWorkDir($finalDestination)
     {
@@ -48,7 +49,7 @@ protected function taskWorkDir($finalDestination)
     /**
      * @param string|string[] $dirs
      *
-     * @return \Robo\Task\Filesystem\CopyDir
+     * @return \Robo\Task\Filesystem\CopyDir|\Robo\Collection\CollectionBuilder
      */
     protected function taskCopyDir($dirs)
     {
@@ -58,7 +59,7 @@ protected function taskCopyDir($dirs)
     /**
      * @param string|string[] $dirs
      *
-     * @return \Robo\Task\Filesystem\MirrorDir
+     * @return \Robo\Task\Filesystem\MirrorDir|\Robo\Collection\CollectionBuilder
      */
     protected function taskMirrorDir($dirs)
     {
@@ -68,7 +69,7 @@ protected function taskMirrorDir($dirs)
     /**
      * @param string|string[] $dirs
      *
-     * @return \Robo\Task\Filesystem\FlattenDir
+     * @return \Robo\Task\Filesystem\FlattenDir|\Robo\Collection\CollectionBuilder
      */
     protected function taskFlattenDir($dirs)
     {
@@ -76,7 +77,7 @@ protected function taskFlattenDir($dirs)
     }
 
     /**
-     * @return \Robo\Task\Filesystem\FilesystemStack
+     * @return \Robo\Task\Filesystem\FilesystemStack|\Robo\Collection\CollectionBuilder
      */
     protected function taskFilesystemStack()
     {
diff --git a/vendor/consolidation/robo/src/Task/Gulp/Run.php b/vendor/consolidation/robo/src/Task/Gulp/Run.php
index 8f2077b573..84a2506ab1 100644
--- a/vendor/consolidation/robo/src/Task/Gulp/Run.php
+++ b/vendor/consolidation/robo/src/Task/Gulp/Run.php
@@ -1,4 +1,5 @@
 <?php
+
 namespace Robo\Task\Gulp;
 
 use Robo\Contract\CommandInterface;
diff --git a/vendor/consolidation/robo/src/Task/Gulp/loadTasks.php b/vendor/consolidation/robo/src/Task/Gulp/loadTasks.php
index 6fdc6ca70a..a29e405efc 100644
--- a/vendor/consolidation/robo/src/Task/Gulp/loadTasks.php
+++ b/vendor/consolidation/robo/src/Task/Gulp/loadTasks.php
@@ -1,4 +1,5 @@
 <?php
+
 namespace Robo\Task\Gulp;
 
 trait loadTasks
@@ -7,7 +8,7 @@ trait loadTasks
      * @param string $task
      * @param null|string $pathToGulp
      *
-     * @return \Robo\Task\Gulp\Run
+     * @return \Robo\Task\Gulp\Run|\Robo\Collection\CollectionBuilder
      */
     protected function taskGulpRun($task = 'default', $pathToGulp = null)
     {
diff --git a/vendor/consolidation/robo/src/Task/Npm/Base.php b/vendor/consolidation/robo/src/Task/Npm/Base.php
index 35ff9c48f4..00b291f299 100644
--- a/vendor/consolidation/robo/src/Task/Npm/Base.php
+++ b/vendor/consolidation/robo/src/Task/Npm/Base.php
@@ -1,4 +1,5 @@
 <?php
+
 namespace Robo\Task\Npm;
 
 use Robo\Task\BaseTask;
diff --git a/vendor/consolidation/robo/src/Task/Npm/Install.php b/vendor/consolidation/robo/src/Task/Npm/Install.php
index 65cbe61897..c43a5befbf 100644
--- a/vendor/consolidation/robo/src/Task/Npm/Install.php
+++ b/vendor/consolidation/robo/src/Task/Npm/Install.php
@@ -1,4 +1,5 @@
 <?php
+
 namespace Robo\Task\Npm;
 
 use Robo\Contract\CommandInterface;
@@ -21,7 +22,7 @@
 class Install extends Base implements CommandInterface
 {
     /**
-     * @var string
+     * {@inheritdoc}
      */
     protected $action = 'install';
 
diff --git a/vendor/consolidation/robo/src/Task/Npm/Update.php b/vendor/consolidation/robo/src/Task/Npm/Update.php
index 75421b307c..1321e4711b 100644
--- a/vendor/consolidation/robo/src/Task/Npm/Update.php
+++ b/vendor/consolidation/robo/src/Task/Npm/Update.php
@@ -1,4 +1,5 @@
 <?php
+
 namespace Robo\Task\Npm;
 
 /**
@@ -19,7 +20,7 @@
 class Update extends Base
 {
     /**
-     * @var string
+     * {@inheritdoc}
      */
     protected $action = 'update';
 
diff --git a/vendor/consolidation/robo/src/Task/Npm/loadTasks.php b/vendor/consolidation/robo/src/Task/Npm/loadTasks.php
index 4d9a26eb3b..dd8d13767a 100644
--- a/vendor/consolidation/robo/src/Task/Npm/loadTasks.php
+++ b/vendor/consolidation/robo/src/Task/Npm/loadTasks.php
@@ -1,4 +1,5 @@
 <?php
+
 namespace Robo\Task\Npm;
 
 trait loadTasks
@@ -6,7 +7,7 @@ trait loadTasks
     /**
      * @param null|string $pathToNpm
      *
-     * @return \Robo\Task\Npm\Install
+     * @return \Robo\Task\Npm\Install|\Robo\Collection\CollectionBuilder
      */
     protected function taskNpmInstall($pathToNpm = null)
     {
@@ -16,7 +17,7 @@ protected function taskNpmInstall($pathToNpm = null)
     /**
      * @param null|string $pathToNpm
      *
-     * @return \Robo\Task\Npm\Update
+     * @return \Robo\Task\Npm\Update|\Robo\Collection\CollectionBuilder
      */
     protected function taskNpmUpdate($pathToNpm = null)
     {
diff --git a/vendor/consolidation/robo/src/Task/Remote/Rsync.php b/vendor/consolidation/robo/src/Task/Remote/Rsync.php
index 324a8d9a55..dc9404c473 100644
--- a/vendor/consolidation/robo/src/Task/Remote/Rsync.php
+++ b/vendor/consolidation/robo/src/Task/Remote/Rsync.php
@@ -1,4 +1,5 @@
 <?php
+
 namespace Robo\Task\Remote;
 
 use Robo\Contract\CommandInterface;
@@ -447,6 +448,8 @@ public function getCommand()
     }
 
     /**
+     * @param string $from
+     *
      * @return string
      */
     protected function getFromPathSpec($from)
diff --git a/vendor/consolidation/robo/src/Task/Remote/loadTasks.php b/vendor/consolidation/robo/src/Task/Remote/loadTasks.php
index 092d2a5547..0506d681c3 100644
--- a/vendor/consolidation/robo/src/Task/Remote/loadTasks.php
+++ b/vendor/consolidation/robo/src/Task/Remote/loadTasks.php
@@ -1,10 +1,11 @@
 <?php
+
 namespace Robo\Task\Remote;
 
 trait loadTasks
 {
     /**
-     * @return \Robo\Task\Remote\Rsync
+     * @return \Robo\Task\Remote\Rsync|\Robo\Collection\CollectionBuilder
      */
     protected function taskRsync()
     {
@@ -15,7 +16,7 @@ protected function taskRsync()
      * @param null|string $hostname
      * @param null|string $user
      *
-     * @return \Robo\Task\Remote\Ssh
+     * @return \Robo\Task\Remote\Ssh|\Robo\Collection\CollectionBuilder
      */
     protected function taskSshExec($hostname = null, $user = null)
     {
diff --git a/vendor/consolidation/robo/src/Task/Simulator.php b/vendor/consolidation/robo/src/Task/Simulator.php
index e69d23fa39..d4d9b2e144 100644
--- a/vendor/consolidation/robo/src/Task/Simulator.php
+++ b/vendor/consolidation/robo/src/Task/Simulator.php
@@ -1,4 +1,5 @@
 <?php
+
 namespace Robo\Task;
 
 use Robo\Contract\WrappedTaskInterface;
@@ -43,7 +44,7 @@ public function __construct(TaskInterface $task, $constructorParameters)
      * @param string $function
      * @param array $args
      *
-     * @return \Robo\Result|\Robo\Task\Simulator
+     * @return \Robo\Result|$this
      */
     public function __call($function, $args)
     {
@@ -109,7 +110,7 @@ public function getCommand()
     }
 
     /**
-     * @param string $action
+     * @param array $action
      *
      * @return string
      */
@@ -133,7 +134,7 @@ protected function convertParameter($item)
             return $this->shortenParameter(var_export($item, true));
         }
         if (is_object($item)) {
-            return '[' . get_class($item). ' object]';
+            return '[' . get_class($item) . ' object]';
         }
         if (is_string($item)) {
             return $this->shortenParameter("'$item'");
diff --git a/vendor/consolidation/robo/src/Task/StackBasedTask.php b/vendor/consolidation/robo/src/Task/StackBasedTask.php
index 91659f33a6..2e72182d8c 100644
--- a/vendor/consolidation/robo/src/Task/StackBasedTask.php
+++ b/vendor/consolidation/robo/src/Task/StackBasedTask.php
@@ -1,4 +1,5 @@
 <?php
+
 namespace Robo\Task;
 
 use Robo\Result;
@@ -85,7 +86,7 @@ public function stopOnFail($stop = true)
      * this class.  Calling one of the delegate's methods will defer
      * execution until the run() method is called.
      *
-     * @return null
+     * @return null|object
      */
     protected function getDelegate()
     {
@@ -219,7 +220,7 @@ public function run()
      * Execute one task method
      *
      * @param string $command
-     * @param string $action
+     * @param array $action
      *
      * @return \Robo\Result
      */
diff --git a/vendor/consolidation/robo/src/Task/Testing/Atoum.php b/vendor/consolidation/robo/src/Task/Testing/Atoum.php
index 56b47d84f3..fbf478988e 100644
--- a/vendor/consolidation/robo/src/Task/Testing/Atoum.php
+++ b/vendor/consolidation/robo/src/Task/Testing/Atoum.php
@@ -1,4 +1,5 @@
 <?php
+
 namespace Robo\Task\Testing;
 
 use Robo\Contract\CommandInterface;
@@ -48,7 +49,7 @@ public function __construct($pathToAtoum = null)
     /**
      * Tag or Tags to filter.
      *
-     * @param string|array $tags
+     * @param string|string[] $tags
      *
      * @return $this
      */
@@ -124,7 +125,7 @@ public function debug()
     /**
      * Test file or test files to run.
      *
-     * @param string|array
+     * @param string|string[]
      *
      * @return $this
      */
@@ -136,7 +137,8 @@ public function files($files)
     /**
      * Test directory or directories to run.
      *
-     * @param string|array A single directory or a list of directories.
+     * @param string|string[]
+     *   A single directory or a list of directories.
      *
      * @return $this
      */
@@ -147,7 +149,7 @@ public function directories($directories)
 
     /**
      * @param string $option
-     * @param string|array $values
+     * @param string|string[] $values
      *
      * @return $this
      */
diff --git a/vendor/consolidation/robo/src/Task/Testing/Behat.php b/vendor/consolidation/robo/src/Task/Testing/Behat.php
index 7e4f1d41a5..c5e1f33c51 100644
--- a/vendor/consolidation/robo/src/Task/Testing/Behat.php
+++ b/vendor/consolidation/robo/src/Task/Testing/Behat.php
@@ -1,4 +1,5 @@
 <?php
+
 namespace Robo\Task\Testing;
 
 use Robo\Contract\CommandInterface;
@@ -74,7 +75,7 @@ public function noInteraction()
     }
 
     /**
-     * @param $config_file
+     * @param string $config_file
      *
      * @return $this
      */
@@ -142,10 +143,7 @@ public function format($formater)
     }
 
     /**
-     * Returns command that can be executed.
-     * This method is used to pass generated command from one task to another.
-     *
-     * @return string
+     * {@inheritdoc}
      */
     public function getCommand()
     {
diff --git a/vendor/consolidation/robo/src/Task/Testing/Codecept.php b/vendor/consolidation/robo/src/Task/Testing/Codecept.php
index 1f8cce7034..da68ca2eda 100644
--- a/vendor/consolidation/robo/src/Task/Testing/Codecept.php
+++ b/vendor/consolidation/robo/src/Task/Testing/Codecept.php
@@ -1,4 +1,5 @@
 <?php
+
 namespace Robo\Task\Testing;
 
 use Robo\Contract\PrintedInterface;
@@ -28,7 +29,7 @@
 class Codecept extends BaseTask implements CommandInterface, PrintedInterface
 {
     use \Robo\Common\ExecOneCommand;
-    
+
     /**
      * @var string
      */
diff --git a/vendor/consolidation/robo/src/Task/Testing/PHPUnit.php b/vendor/consolidation/robo/src/Task/Testing/PHPUnit.php
index df67e1c75c..bbb87b6cf5 100644
--- a/vendor/consolidation/robo/src/Task/Testing/PHPUnit.php
+++ b/vendor/consolidation/robo/src/Task/Testing/PHPUnit.php
@@ -1,4 +1,5 @@
 <?php
+
 namespace Robo\Task\Testing;
 
 use Robo\Contract\CommandInterface;
@@ -35,6 +36,13 @@ class PHPUnit extends BaseTask implements CommandInterface, PrintedInterface
      */
     protected $files = '';
 
+    /**
+     * PHPUnit constructor.
+     *
+     * @param null|string $pathToPhpUnit
+     *
+     * @throws \Robo\Exception\TaskException
+     */
     public function __construct($pathToPhpUnit = null)
     {
         $this->command = $pathToPhpUnit;
@@ -150,7 +158,8 @@ public function debug()
     /**
      * Directory of test files or single test file to run.
      *
-     * @param string $files A single test file or a directory containing test files.
+     * @param string $files
+     *   A single test file or a directory containing test files.
      *
      * @return $this
      *
@@ -171,7 +180,8 @@ public function files($files)
     /**
      * Test the provided file.
      *
-     * @param string $file path to file to test
+     * @param string $file
+     *   Path to file to test.
      *
      * @return $this
      */
diff --git a/vendor/consolidation/robo/src/Task/Testing/Phpspec.php b/vendor/consolidation/robo/src/Task/Testing/Phpspec.php
index dd6a5ae77c..9d8a343301 100644
--- a/vendor/consolidation/robo/src/Task/Testing/Phpspec.php
+++ b/vendor/consolidation/robo/src/Task/Testing/Phpspec.php
@@ -1,4 +1,5 @@
 <?php
+
 namespace Robo\Task\Testing;
 
 use Robo\Contract\PrintedInterface;
@@ -28,15 +29,24 @@ class Phpspec extends BaseTask implements CommandInterface, PrintedInterface
     protected $command;
 
     /**
-     * @var string[] $formaters available formaters for format option
+     * @var string[] $formaters
+     *   Available formaters for format option.
      */
     protected $formaters = ['progress', 'html', 'pretty', 'junit', 'dot', 'tap'];
 
     /**
-     * @var array $verbose_levels available verbose levels
+     * @var array $verbose_levels
+     *   Available verbose levels.
      */
     protected $verbose_levels = ['v', 'vv', 'vvv'];
 
+    /**
+     * Phpspec constructor.
+     *
+     * @param null|string $pathToPhpspec
+     *
+     * @throws \Robo\Exception\TaskException
+     */
     public function __construct($pathToPhpspec = null)
     {
         $this->command = $pathToPhpspec;
@@ -67,6 +77,11 @@ public function quiet()
         return $this;
     }
 
+    /**
+     * @param string $level
+     *
+     * @return $this
+     */
     public function verbose($level = 'v')
     {
         if (!in_array($level, $this->verbose_levels)) {
@@ -76,24 +91,40 @@ public function verbose($level = 'v')
         return $this;
     }
 
+    /**
+     * @return $this
+     */
     public function noAnsi()
     {
         $this->option('no-ansi');
         return $this;
     }
 
+    /**
+     * @return $this
+     */
     public function noInteraction()
     {
         $this->option('no-interaction');
         return $this;
     }
 
+    /**
+     * @param string $config_file
+     *
+     * @return $this
+     */
     public function config($config_file)
     {
         $this->option('config', $config_file);
         return $this;
     }
 
+    /**
+     * @param string $formater
+     *
+     * @return $this
+     */
     public function format($formater)
     {
         if (!in_array($formater, $this->formaters)) {
@@ -103,11 +134,17 @@ public function format($formater)
         return $this;
     }
 
+    /**
+     * {@inheritdoc}
+     */
     public function getCommand()
     {
         return $this->command . $this->arguments;
     }
 
+    /**
+     * {@inheritdoc}
+     */
     public function run()
     {
         $this->printTaskInfo('Running phpspec {arguments}', ['arguments' => $this->arguments]);
diff --git a/vendor/consolidation/robo/src/Task/Testing/loadTasks.php b/vendor/consolidation/robo/src/Task/Testing/loadTasks.php
index 43145b9b60..f864b1fb55 100644
--- a/vendor/consolidation/robo/src/Task/Testing/loadTasks.php
+++ b/vendor/consolidation/robo/src/Task/Testing/loadTasks.php
@@ -1,4 +1,5 @@
 <?php
+
 namespace Robo\Task\Testing;
 
 trait loadTasks
@@ -6,7 +7,7 @@ trait loadTasks
     /**
      * @param null|string $pathToCodeception
      *
-     * @return \Robo\Task\Testing\Codecept
+     * @return \Robo\Task\Testing\Codecept|\Robo\Collection\CollectionBuilder
      */
     protected function taskCodecept($pathToCodeception = null)
     {
@@ -16,7 +17,7 @@ protected function taskCodecept($pathToCodeception = null)
     /**
      * @param null|string $pathToPhpUnit
      *
-     * @return \Robo\Task\Testing\PHPUnit
+     * @return \Robo\Task\Testing\PHPUnit|\Robo\Collection\CollectionBuilder
      */
     protected function taskPhpUnit($pathToPhpUnit = null)
     {
@@ -24,9 +25,9 @@ protected function taskPhpUnit($pathToPhpUnit = null)
     }
 
     /**
-     * @param null $pathToPhpspec
+     * @param null|string $pathToPhpspec
      *
-     * @return \Robo\Task\Testing\Phpspec
+     * @return \Robo\Task\Testing\Phpspec|\Robo\Collection\CollectionBuilder
      */
     protected function taskPhpspec($pathToPhpspec = null)
     {
@@ -34,9 +35,9 @@ protected function taskPhpspec($pathToPhpspec = null)
     }
 
     /**
-     * @param null $pathToAtoum
+     * @param null|string $pathToAtoum
      *
-     * @return \Robo\Task\Testing\Atoum
+     * @return \Robo\Task\Testing\Atoum|\Robo\Collection\CollectionBuilder
      */
     protected function taskAtoum($pathToAtoum = null)
     {
@@ -44,9 +45,9 @@ protected function taskAtoum($pathToAtoum = null)
     }
 
     /**
-     * @param null $pathToBehat
+     * @param null|string $pathToBehat
      *
-     * @return \Robo\Task\Testing\Behat
+     * @return \Robo\Task\Testing\Behat|\Robo\Collection\CollectionBuilder
      */
     protected function taskBehat($pathToBehat = null)
     {
diff --git a/vendor/consolidation/robo/src/Task/Vcs/GitStack.php b/vendor/consolidation/robo/src/Task/Vcs/GitStack.php
index 6cb1783f04..a72df6cc6e 100644
--- a/vendor/consolidation/robo/src/Task/Vcs/GitStack.php
+++ b/vendor/consolidation/robo/src/Task/Vcs/GitStack.php
@@ -1,4 +1,5 @@
 <?php
+
 namespace Robo\Task\Vcs;
 
 use Robo\Task\CommandStack;
@@ -42,6 +43,7 @@ public function __construct($pathToGit = 'git')
      *
      * @param string $repo
      * @param string $to
+     * @param string $branch
      *
      * @return $this
      */
diff --git a/vendor/consolidation/robo/src/Task/Vcs/HgStack.php b/vendor/consolidation/robo/src/Task/Vcs/HgStack.php
index 71cc0ca9c1..76d32bdc6d 100644
--- a/vendor/consolidation/robo/src/Task/Vcs/HgStack.php
+++ b/vendor/consolidation/robo/src/Task/Vcs/HgStack.php
@@ -1,4 +1,5 @@
 <?php
+
 namespace Robo\Task\Vcs;
 
 use Robo\Task\CommandStack;
diff --git a/vendor/consolidation/robo/src/Task/Vcs/SvnStack.php b/vendor/consolidation/robo/src/Task/Vcs/SvnStack.php
index ec719b538b..bae13f5492 100644
--- a/vendor/consolidation/robo/src/Task/Vcs/SvnStack.php
+++ b/vendor/consolidation/robo/src/Task/Vcs/SvnStack.php
@@ -1,4 +1,5 @@
 <?php
+
 namespace Robo\Task\Vcs;
 
 use Robo\Contract\CommandInterface;
@@ -34,7 +35,7 @@ class SvnStack extends CommandStack implements CommandInterface
     protected $stopOnFail = false;
 
     /**
-     * @var \Robo\Result
+     * {@inheritdoc}
      */
     protected $result;
 
@@ -60,7 +61,7 @@ public function __construct($username = '', $password = '', $pathToSvn = 'svn')
      *
      * @param string $path
      *
-     * @return $this;
+     * @return $this
      */
     public function update($path = '')
     {
diff --git a/vendor/consolidation/robo/src/Task/Vcs/loadShortcuts.php b/vendor/consolidation/robo/src/Task/Vcs/loadShortcuts.php
index 7d64ab58c3..7aeaa0ff3c 100644
--- a/vendor/consolidation/robo/src/Task/Vcs/loadShortcuts.php
+++ b/vendor/consolidation/robo/src/Task/Vcs/loadShortcuts.php
@@ -1,4 +1,5 @@
 <?php
+
 namespace Robo\Task\Vcs;
 
 trait loadShortcuts
diff --git a/vendor/consolidation/robo/src/Task/Vcs/loadTasks.php b/vendor/consolidation/robo/src/Task/Vcs/loadTasks.php
index 6dd06228a1..7b58392fcf 100644
--- a/vendor/consolidation/robo/src/Task/Vcs/loadTasks.php
+++ b/vendor/consolidation/robo/src/Task/Vcs/loadTasks.php
@@ -1,4 +1,5 @@
 <?php
+
 namespace Robo\Task\Vcs;
 
 trait loadTasks
@@ -8,7 +9,7 @@ trait loadTasks
      * @param string $password
      * @param string $pathToSvn
      *
-     * @return \Robo\Task\Vcs\SvnStack
+     * @return \Robo\Task\Vcs\SvnStack|\Robo\Collection\CollectionBuilder
      */
     protected function taskSvnStack($username = '', $password = '', $pathToSvn = 'svn')
     {
@@ -18,7 +19,7 @@ protected function taskSvnStack($username = '', $password = '', $pathToSvn = 'sv
     /**
      * @param string $pathToGit
      *
-     * @return \Robo\Task\Vcs\GitStack
+     * @return \Robo\Task\Vcs\GitStack|\Robo\Collection\CollectionBuilder
      */
     protected function taskGitStack($pathToGit = 'git')
     {
@@ -28,7 +29,7 @@ protected function taskGitStack($pathToGit = 'git')
     /**
      * @param string $pathToHg
      *
-     * @return \Robo\Task\Vcs\HgStack
+     * @return \Robo\Task\Vcs\HgStack|\Robo\Collection\CollectionBuilder
      */
     protected function taskHgStack($pathToHg = 'hg')
     {
diff --git a/vendor/consolidation/robo/src/TaskAccessor.php b/vendor/consolidation/robo/src/TaskAccessor.php
index e65cd3eb36..ac5e9bf23f 100644
--- a/vendor/consolidation/robo/src/TaskAccessor.php
+++ b/vendor/consolidation/robo/src/TaskAccessor.php
@@ -1,4 +1,5 @@
 <?php
+
 namespace Robo;
 
 use Robo\Common\BuilderAwareTrait;
diff --git a/vendor/consolidation/robo/src/TaskInfo.php b/vendor/consolidation/robo/src/TaskInfo.php
index ce59c2d556..05015016fd 100644
--- a/vendor/consolidation/robo/src/TaskInfo.php
+++ b/vendor/consolidation/robo/src/TaskInfo.php
@@ -1,4 +1,5 @@
 <?php
+
 namespace Robo;
 
 class TaskInfo
diff --git a/vendor/consolidation/robo/src/Tasks.php b/vendor/consolidation/robo/src/Tasks.php
index 2822d7d506..14ff0b82ed 100644
--- a/vendor/consolidation/robo/src/Tasks.php
+++ b/vendor/consolidation/robo/src/Tasks.php
@@ -1,4 +1,5 @@
 <?php
+
 namespace Robo;
 
 use Robo\Common\IO;
diff --git a/vendor/consolidation/self-update/VERSION b/vendor/consolidation/self-update/VERSION
index e25d8d9f35..25b6557de3 100644
--- a/vendor/consolidation/self-update/VERSION
+++ b/vendor/consolidation/self-update/VERSION
@@ -1 +1 @@
-1.1.5
+1.1.6-dev
diff --git a/vendor/consolidation/self-update/composer.json b/vendor/consolidation/self-update/composer.json
index 3125a65f60..ccb04cb075 100644
--- a/vendor/consolidation/self-update/composer.json
+++ b/vendor/consolidation/self-update/composer.json
@@ -19,8 +19,8 @@
     },
     "require": {
         "php": ">=5.5.0",
-        "symfony/console": "^2.8|^3|^4",
-        "symfony/filesystem": "^2.5|^3|^4"
+        "symfony/console": "^2.8|^3|^4|^5",
+        "symfony/filesystem": "^2.5|^3|^4|^5"
     },
     "bin": [
         "scripts/release"
@@ -30,10 +30,7 @@
     },
     "config": {
         "optimize-autoloader": true,
-        "sort-packages": true,
-        "platform": {
-            "php": "5.6.3"
-        }
+        "sort-packages": true
     },
     "extra": {
         "branch-alias": {
diff --git a/vendor/consolidation/self-update/composer.lock b/vendor/consolidation/self-update/composer.lock
index af14184c81..c092bd6f23 100644
--- a/vendor/consolidation/self-update/composer.lock
+++ b/vendor/consolidation/self-update/composer.lock
@@ -4,20 +4,20 @@
         "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",
         "This file is @generated automatically"
     ],
-    "content-hash": "3c87d0a607c776a773e52613a1ae51a9",
+    "content-hash": "52c2d7f576aaa24ebd91400d895ccd5d",
     "packages": [
         {
-            "name": "psr/log",
-            "version": "1.0.2",
+            "name": "psr/container",
+            "version": "1.0.0",
             "source": {
                 "type": "git",
-                "url": "https://github.com/php-fig/log.git",
-                "reference": "4ebe3a8bf773a19edfe0a84b6585ba3d401b724d"
+                "url": "https://github.com/php-fig/container.git",
+                "reference": "b7ce3b176482dbbc1245ebf52b181af44c2cf55f"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/php-fig/log/zipball/4ebe3a8bf773a19edfe0a84b6585ba3d401b724d",
-                "reference": "4ebe3a8bf773a19edfe0a84b6585ba3d401b724d",
+                "url": "https://api.github.com/repos/php-fig/container/zipball/b7ce3b176482dbbc1245ebf52b181af44c2cf55f",
+                "reference": "b7ce3b176482dbbc1245ebf52b181af44c2cf55f",
                 "shasum": ""
             },
             "require": {
@@ -31,7 +31,7 @@
             },
             "autoload": {
                 "psr-4": {
-                    "Psr\\Log\\": "Psr/Log/"
+                    "Psr\\Container\\": "src/"
                 }
             },
             "notification-url": "https://packagist.org/downloads/",
@@ -44,48 +44,57 @@
                     "homepage": "http://www.php-fig.org/"
                 }
             ],
-            "description": "Common interface for logging libraries",
-            "homepage": "https://github.com/php-fig/log",
+            "description": "Common Container Interface (PHP FIG PSR-11)",
+            "homepage": "https://github.com/php-fig/container",
             "keywords": [
-                "log",
-                "psr",
-                "psr-3"
+                "PSR-11",
+                "container",
+                "container-interface",
+                "container-interop",
+                "psr"
             ],
-            "time": "2016-10-10T12:19:37+00:00"
+            "time": "2017-02-14T16:28:37+00:00"
         },
         {
             "name": "symfony/console",
-            "version": "v3.4.14",
+            "version": "v5.0.7",
             "source": {
                 "type": "git",
                 "url": "https://github.com/symfony/console.git",
-                "reference": "6b217594552b9323bcdcfc14f8a0ce126e84cd73"
+                "reference": "5fa1caadc8cdaa17bcfb25219f3b53fe294a9935"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/symfony/console/zipball/6b217594552b9323bcdcfc14f8a0ce126e84cd73",
-                "reference": "6b217594552b9323bcdcfc14f8a0ce126e84cd73",
+                "url": "https://api.github.com/repos/symfony/console/zipball/5fa1caadc8cdaa17bcfb25219f3b53fe294a9935",
+                "reference": "5fa1caadc8cdaa17bcfb25219f3b53fe294a9935",
                 "shasum": ""
             },
             "require": {
-                "php": "^5.5.9|>=7.0.8",
-                "symfony/debug": "~2.8|~3.0|~4.0",
-                "symfony/polyfill-mbstring": "~1.0"
+                "php": "^7.2.5",
+                "symfony/polyfill-mbstring": "~1.0",
+                "symfony/polyfill-php73": "^1.8",
+                "symfony/service-contracts": "^1.1|^2"
             },
             "conflict": {
-                "symfony/dependency-injection": "<3.4",
-                "symfony/process": "<3.3"
+                "symfony/dependency-injection": "<4.4",
+                "symfony/event-dispatcher": "<4.4",
+                "symfony/lock": "<4.4",
+                "symfony/process": "<4.4"
+            },
+            "provide": {
+                "psr/log-implementation": "1.0"
             },
             "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"
+                "symfony/config": "^4.4|^5.0",
+                "symfony/dependency-injection": "^4.4|^5.0",
+                "symfony/event-dispatcher": "^4.4|^5.0",
+                "symfony/lock": "^4.4|^5.0",
+                "symfony/process": "^4.4|^5.0",
+                "symfony/var-dumper": "^4.4|^5.0"
             },
             "suggest": {
-                "psr/log-implementation": "For using the console logger",
+                "psr/log": "For using the console logger",
                 "symfony/event-dispatcher": "",
                 "symfony/lock": "",
                 "symfony/process": ""
@@ -93,7 +102,7 @@
             "type": "library",
             "extra": {
                 "branch-alias": {
-                    "dev-master": "3.4-dev"
+                    "dev-master": "5.0-dev"
                 }
             },
             "autoload": {
@@ -120,41 +129,35 @@
             ],
             "description": "Symfony Console Component",
             "homepage": "https://symfony.com",
-            "time": "2018-07-26T11:19:56+00:00"
+            "time": "2020-03-30T11:42:42+00:00"
         },
         {
-            "name": "symfony/debug",
-            "version": "v3.4.14",
+            "name": "symfony/filesystem",
+            "version": "v5.0.7",
             "source": {
                 "type": "git",
-                "url": "https://github.com/symfony/debug.git",
-                "reference": "d5a058ff6ecad26b30c1ba452241306ea34c65cc"
+                "url": "https://github.com/symfony/filesystem.git",
+                "reference": "ca3b87dd09fff9b771731637f5379965fbfab420"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/symfony/debug/zipball/d5a058ff6ecad26b30c1ba452241306ea34c65cc",
-                "reference": "d5a058ff6ecad26b30c1ba452241306ea34c65cc",
+                "url": "https://api.github.com/repos/symfony/filesystem/zipball/ca3b87dd09fff9b771731637f5379965fbfab420",
+                "reference": "ca3b87dd09fff9b771731637f5379965fbfab420",
                 "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"
+                "php": "^7.2.5",
+                "symfony/polyfill-ctype": "~1.8"
             },
             "type": "library",
             "extra": {
                 "branch-alias": {
-                    "dev-master": "3.4-dev"
+                    "dev-master": "5.0-dev"
                 }
             },
             "autoload": {
                 "psr-4": {
-                    "Symfony\\Component\\Debug\\": ""
+                    "Symfony\\Component\\Filesystem\\": ""
                 },
                 "exclude-from-classmap": [
                     "/Tests/"
@@ -174,40 +177,42 @@
                     "homepage": "https://symfony.com/contributors"
                 }
             ],
-            "description": "Symfony Debug Component",
+            "description": "Symfony Filesystem Component",
             "homepage": "https://symfony.com",
-            "time": "2018-07-26T11:19:56+00:00"
+            "time": "2020-03-27T16:56:45+00:00"
         },
         {
-            "name": "symfony/filesystem",
-            "version": "v3.4.14",
+            "name": "symfony/polyfill-ctype",
+            "version": "v1.15.0",
             "source": {
                 "type": "git",
-                "url": "https://github.com/symfony/filesystem.git",
-                "reference": "a59f917e3c5d82332514cb4538387638f5bde2d6"
+                "url": "https://github.com/symfony/polyfill-ctype.git",
+                "reference": "4719fa9c18b0464d399f1a63bf624b42b6fa8d14"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/symfony/filesystem/zipball/a59f917e3c5d82332514cb4538387638f5bde2d6",
-                "reference": "a59f917e3c5d82332514cb4538387638f5bde2d6",
+                "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/4719fa9c18b0464d399f1a63bf624b42b6fa8d14",
+                "reference": "4719fa9c18b0464d399f1a63bf624b42b6fa8d14",
                 "shasum": ""
             },
             "require": {
-                "php": "^5.5.9|>=7.0.8",
-                "symfony/polyfill-ctype": "~1.8"
+                "php": ">=5.3.3"
+            },
+            "suggest": {
+                "ext-ctype": "For best performance"
             },
             "type": "library",
             "extra": {
                 "branch-alias": {
-                    "dev-master": "3.4-dev"
+                    "dev-master": "1.15-dev"
                 }
             },
             "autoload": {
                 "psr-4": {
-                    "Symfony\\Component\\Filesystem\\": ""
+                    "Symfony\\Polyfill\\Ctype\\": ""
                 },
-                "exclude-from-classmap": [
-                    "/Tests/"
+                "files": [
+                    "bootstrap.php"
                 ]
             },
             "notification-url": "https://packagist.org/downloads/",
@@ -216,47 +221,67 @@
             ],
             "authors": [
                 {
-                    "name": "Fabien Potencier",
-                    "email": "fabien@symfony.com"
+                    "name": "Gert de Pagter",
+                    "email": "BackEndTea@gmail.com"
                 },
                 {
                     "name": "Symfony Community",
                     "homepage": "https://symfony.com/contributors"
                 }
             ],
-            "description": "Symfony Filesystem Component",
+            "description": "Symfony polyfill for ctype functions",
             "homepage": "https://symfony.com",
-            "time": "2018-07-26T11:19:56+00:00"
+            "keywords": [
+                "compatibility",
+                "ctype",
+                "polyfill",
+                "portable"
+            ],
+            "funding": [
+                {
+                    "url": "https://symfony.com/sponsor",
+                    "type": "custom"
+                },
+                {
+                    "url": "https://github.com/fabpot",
+                    "type": "github"
+                },
+                {
+                    "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+                    "type": "tidelift"
+                }
+            ],
+            "time": "2020-02-27T09:26:54+00:00"
         },
         {
-            "name": "symfony/polyfill-ctype",
-            "version": "v1.9.0",
+            "name": "symfony/polyfill-mbstring",
+            "version": "v1.15.0",
             "source": {
                 "type": "git",
-                "url": "https://github.com/symfony/polyfill-ctype.git",
-                "reference": "e3d826245268269cd66f8326bd8bc066687b4a19"
+                "url": "https://github.com/symfony/polyfill-mbstring.git",
+                "reference": "81ffd3a9c6d707be22e3012b827de1c9775fc5ac"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/e3d826245268269cd66f8326bd8bc066687b4a19",
-                "reference": "e3d826245268269cd66f8326bd8bc066687b4a19",
+                "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/81ffd3a9c6d707be22e3012b827de1c9775fc5ac",
+                "reference": "81ffd3a9c6d707be22e3012b827de1c9775fc5ac",
                 "shasum": ""
             },
             "require": {
                 "php": ">=5.3.3"
             },
             "suggest": {
-                "ext-ctype": "For best performance"
+                "ext-mbstring": "For best performance"
             },
             "type": "library",
             "extra": {
                 "branch-alias": {
-                    "dev-master": "1.9-dev"
+                    "dev-master": "1.15-dev"
                 }
             },
             "autoload": {
                 "psr-4": {
-                    "Symfony\\Polyfill\\Ctype\\": ""
+                    "Symfony\\Polyfill\\Mbstring\\": ""
                 },
                 "files": [
                     "bootstrap.php"
@@ -268,56 +293,71 @@
             ],
             "authors": [
                 {
-                    "name": "Symfony Community",
-                    "homepage": "https://symfony.com/contributors"
+                    "name": "Nicolas Grekas",
+                    "email": "p@tchwork.com"
                 },
                 {
-                    "name": "Gert de Pagter",
-                    "email": "BackEndTea@gmail.com"
+                    "name": "Symfony Community",
+                    "homepage": "https://symfony.com/contributors"
                 }
             ],
-            "description": "Symfony polyfill for ctype functions",
+            "description": "Symfony polyfill for the Mbstring extension",
             "homepage": "https://symfony.com",
             "keywords": [
                 "compatibility",
-                "ctype",
+                "mbstring",
                 "polyfill",
-                "portable"
+                "portable",
+                "shim"
+            ],
+            "funding": [
+                {
+                    "url": "https://symfony.com/sponsor",
+                    "type": "custom"
+                },
+                {
+                    "url": "https://github.com/fabpot",
+                    "type": "github"
+                },
+                {
+                    "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+                    "type": "tidelift"
+                }
             ],
-            "time": "2018-08-06T14:22:27+00:00"
+            "time": "2020-03-09T19:04:49+00:00"
         },
         {
-            "name": "symfony/polyfill-mbstring",
-            "version": "v1.9.0",
+            "name": "symfony/polyfill-php73",
+            "version": "v1.15.0",
             "source": {
                 "type": "git",
-                "url": "https://github.com/symfony/polyfill-mbstring.git",
-                "reference": "d0cd638f4634c16d8df4508e847f14e9e43168b8"
+                "url": "https://github.com/symfony/polyfill-php73.git",
+                "reference": "0f27e9f464ea3da33cbe7ca3bdf4eb66def9d0f7"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/d0cd638f4634c16d8df4508e847f14e9e43168b8",
-                "reference": "d0cd638f4634c16d8df4508e847f14e9e43168b8",
+                "url": "https://api.github.com/repos/symfony/polyfill-php73/zipball/0f27e9f464ea3da33cbe7ca3bdf4eb66def9d0f7",
+                "reference": "0f27e9f464ea3da33cbe7ca3bdf4eb66def9d0f7",
                 "shasum": ""
             },
             "require": {
                 "php": ">=5.3.3"
             },
-            "suggest": {
-                "ext-mbstring": "For best performance"
-            },
             "type": "library",
             "extra": {
                 "branch-alias": {
-                    "dev-master": "1.9-dev"
+                    "dev-master": "1.15-dev"
                 }
             },
             "autoload": {
                 "psr-4": {
-                    "Symfony\\Polyfill\\Mbstring\\": ""
+                    "Symfony\\Polyfill\\Php73\\": ""
                 },
                 "files": [
                     "bootstrap.php"
+                ],
+                "classmap": [
+                    "Resources/stubs"
                 ]
             },
             "notification-url": "https://packagist.org/downloads/",
@@ -334,16 +374,87 @@
                     "homepage": "https://symfony.com/contributors"
                 }
             ],
-            "description": "Symfony polyfill for the Mbstring extension",
+            "description": "Symfony polyfill backporting some PHP 7.3+ features to lower PHP versions",
             "homepage": "https://symfony.com",
             "keywords": [
                 "compatibility",
-                "mbstring",
                 "polyfill",
                 "portable",
                 "shim"
             ],
-            "time": "2018-08-06T14:22:27+00:00"
+            "funding": [
+                {
+                    "url": "https://symfony.com/sponsor",
+                    "type": "custom"
+                },
+                {
+                    "url": "https://github.com/fabpot",
+                    "type": "github"
+                },
+                {
+                    "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+                    "type": "tidelift"
+                }
+            ],
+            "time": "2020-02-27T09:26:54+00:00"
+        },
+        {
+            "name": "symfony/service-contracts",
+            "version": "v2.0.1",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/symfony/service-contracts.git",
+                "reference": "144c5e51266b281231e947b51223ba14acf1a749"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/symfony/service-contracts/zipball/144c5e51266b281231e947b51223ba14acf1a749",
+                "reference": "144c5e51266b281231e947b51223ba14acf1a749",
+                "shasum": ""
+            },
+            "require": {
+                "php": "^7.2.5",
+                "psr/container": "^1.0"
+            },
+            "suggest": {
+                "symfony/service-implementation": ""
+            },
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "2.0-dev"
+                }
+            },
+            "autoload": {
+                "psr-4": {
+                    "Symfony\\Contracts\\Service\\": ""
+                }
+            },
+            "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": "Generic abstractions related to writing services",
+            "homepage": "https://symfony.com",
+            "keywords": [
+                "abstractions",
+                "contracts",
+                "decoupling",
+                "interfaces",
+                "interoperability",
+                "standards"
+            ],
+            "time": "2019-11-18T17:27:11+00:00"
         }
     ],
     "packages-dev": [],
@@ -356,7 +467,5 @@
         "php": ">=5.5.0"
     },
     "platform-dev": [],
-    "platform-overrides": {
-        "php": "5.6.3"
-    }
+    "plugin-api-version": "1.1.0"
 }
diff --git a/vendor/consolidation/site-alias/.scenarios.lock/install b/vendor/consolidation/site-alias/.scenarios.lock/install
index 16c69e107c..4d8a777705 100755
--- a/vendor/consolidation/site-alias/.scenarios.lock/install
+++ b/vendor/consolidation/site-alias/.scenarios.lock/install
@@ -4,16 +4,16 @@ SCENARIO=$1
 DEPENDENCIES=${2-install}
 
 # Convert the aliases 'highest', 'lowest' and 'lock' to
-# the corresponding composer command to run.
+# the corresponding composer update command to run.
 case $DEPENDENCIES in
   highest)
-    DEPENDENCIES=update
+    UPDATE_COMMAND=update
     ;;
   lowest)
-    DEPENDENCIES='update --prefer-lowest'
+    UPDATE_COMMAND='update --prefer-lowest'
     ;;
   lock|default|"")
-    DEPENDENCIES=install
+    UPDATE_COMMAND=''
     ;;
 esac
 
@@ -48,7 +48,11 @@ echo
 set -ex
 
 composer -n validate --working-dir=$dir --no-check-all --ansi
-composer -n --working-dir=$dir ${DEPENDENCIES} --prefer-dist --no-scripts
+
+if [ ! -z "$UPDATE_COMMAND" ] ; then
+  composer -n --working-dir=$dir ${UPDATE_COMMAND} --prefer-dist --no-scripts
+fi
+composer -n --working-dir=$dir install --prefer-dist
 
 # If called from a CI context, print out some extra information about
 # what we just installed.
diff --git a/vendor/consolidation/site-alias/.scenarios.lock/phpunit5/composer.json b/vendor/consolidation/site-alias/.scenarios.lock/phpunit5/composer.json
index 9df0d140f8..bc673b4fee 100644
--- a/vendor/consolidation/site-alias/.scenarios.lock/phpunit5/composer.json
+++ b/vendor/consolidation/site-alias/.scenarios.lock/phpunit5/composer.json
@@ -24,13 +24,12 @@
     },
     "require": {
         "php": ">=5.5.0",
-        "consolidation/config": "^1.2.1"
+        "consolidation/config": "^1.2.1|^2"
     },
     "require-dev": {
         "phpunit/phpunit": "^5.7.27",
-        "symfony/yaml": "~2.3|^3",
-        "consolidation/Robo": "^1.2.3",
-        "symfony/console": "^2.8|^3|^4",
+        "symfony/yaml": "~2.3|^3|^4.4|^5",
+        "consolidation/robo": "^1.2.3|^2",
         "knplabs/github-api": "^2.7",
         "php-http/guzzle6-adapter": "^1.1",
         "g1a/composer-test-scenarios": "^3",
diff --git a/vendor/consolidation/site-alias/.scenarios.lock/phpunit5/composer.lock b/vendor/consolidation/site-alias/.scenarios.lock/phpunit5/composer.lock
index a42788f476..096f6338d4 100644
--- a/vendor/consolidation/site-alias/.scenarios.lock/phpunit5/composer.lock
+++ b/vendor/consolidation/site-alias/.scenarios.lock/phpunit5/composer.lock
@@ -4,7 +4,7 @@
         "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",
         "This file is @generated automatically"
     ],
-    "content-hash": "d7b07f5eeac1fc1152ef12b7f00abfdb",
+    "content-hash": "06283d1fe5e0c31a2d5ab2fa7dbf8ff0",
     "packages": [
         {
             "name": "consolidation/config",
@@ -197,16 +197,16 @@
     "packages-dev": [
         {
             "name": "clue/stream-filter",
-            "version": "v1.4.0",
+            "version": "v1.4.1",
             "source": {
                 "type": "git",
                 "url": "https://github.com/clue/php-stream-filter.git",
-                "reference": "d80fdee9b3a7e0d16fc330a22f41f3ad0eeb09d0"
+                "reference": "5a58cc30a8bd6a4eb8f856adf61dd3e013f53f71"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/clue/php-stream-filter/zipball/d80fdee9b3a7e0d16fc330a22f41f3ad0eeb09d0",
-                "reference": "d80fdee9b3a7e0d16fc330a22f41f3ad0eeb09d0",
+                "url": "https://api.github.com/repos/clue/php-stream-filter/zipball/5a58cc30a8bd6a4eb8f856adf61dd3e013f53f71",
+                "reference": "5a58cc30a8bd6a4eb8f856adf61dd3e013f53f71",
                 "shasum": ""
             },
             "require": {
@@ -221,7 +221,7 @@
                     "Clue\\StreamFilter\\": "src/"
                 },
                 "files": [
-                    "src/functions.php"
+                    "src/functions_include.php"
                 ]
             },
             "notification-url": "https://packagist.org/downloads/",
@@ -245,7 +245,7 @@
                 "stream_filter_append",
                 "stream_filter_register"
             ],
-            "time": "2017-08-18T09:54:01+00:00"
+            "time": "2019-04-09T12:31:48+00:00"
         },
         {
             "name": "consolidation/annotated-command",
@@ -435,16 +435,16 @@
         },
         {
             "name": "consolidation/output-formatters",
-            "version": "3.4.0",
+            "version": "3.5.0",
             "source": {
                 "type": "git",
                 "url": "https://github.com/consolidation/output-formatters.git",
-                "reference": "a942680232094c4a5b21c0b7e54c20cce623ae19"
+                "reference": "99ec998ffb697e0eada5aacf81feebfb13023605"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/consolidation/output-formatters/zipball/a942680232094c4a5b21c0b7e54c20cce623ae19",
-                "reference": "a942680232094c4a5b21c0b7e54c20cce623ae19",
+                "url": "https://api.github.com/repos/consolidation/output-formatters/zipball/99ec998ffb697e0eada5aacf81feebfb13023605",
+                "reference": "99ec998ffb697e0eada5aacf81feebfb13023605",
                 "shasum": ""
             },
             "require": {
@@ -454,11 +454,10 @@
                 "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"
             },
@@ -467,6 +466,52 @@
             },
             "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"
                 }
@@ -487,30 +532,30 @@
                 }
             ],
             "description": "Format text by applying transformations provided by plug-in formatters.",
-            "time": "2018-10-19T22:35:38+00:00"
+            "time": "2019-05-30T23:16:01+00:00"
         },
         {
             "name": "consolidation/robo",
-            "version": "1.4.6",
+            "version": "1.4.12",
             "source": {
                 "type": "git",
                 "url": "https://github.com/consolidation/Robo.git",
-                "reference": "d4805a1abbc730e9a6d64ede2eba56f91a2b4eb3"
+                "reference": "eb45606f498b3426b9a98b7c85e300666a968e51"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/consolidation/Robo/zipball/d4805a1abbc730e9a6d64ede2eba56f91a2b4eb3",
-                "reference": "d4805a1abbc730e9a6d64ede2eba56f91a2b4eb3",
+                "url": "https://api.github.com/repos/consolidation/Robo/zipball/eb45606f498b3426b9a98b7c85e300666a968e51",
+                "reference": "eb45606f498b3426b9a98b7c85e300666a968e51",
                 "shasum": ""
             },
             "require": {
-                "consolidation/annotated-command": "^2.10.2",
-                "consolidation/config": "^1.0.10",
-                "consolidation/log": "~1",
-                "consolidation/output-formatters": "^3.1.13",
-                "consolidation/self-update": "^1",
-                "grasmash/yaml-expander": "^1.3",
-                "league/container": "^2.2",
+                "consolidation/annotated-command": "^2.11.0|^4.1",
+                "consolidation/config": "^1.2.1",
+                "consolidation/log": "^1.1.1|^2",
+                "consolidation/output-formatters": "^3.1.13|^4.1",
+                "consolidation/self-update": "^1.1.5",
+                "grasmash/yaml-expander": "^1.4",
+                "league/container": "^2.4.1",
                 "php": ">=5.5.0",
                 "symfony/console": "^2.8|^3|^4",
                 "symfony/event-dispatcher": "^2.5|^3|^4",
@@ -522,19 +567,13 @@
                 "codegyre/robo": "< 1.0"
             },
             "require-dev": {
-                "codeception/aspect-mock": "^1|^2.1.1",
-                "codeception/base": "^2.3.7",
-                "codeception/verify": "^0.3.2",
                 "g1a/composer-test-scenarios": "^3",
-                "goaop/framework": "~2.1.2",
-                "goaop/parser-reflection": "^1.1.0",
                 "natxet/cssmin": "3.0.4",
-                "nikic/php-parser": "^3.1.5",
-                "patchwork/jsqueeze": "~2",
+                "patchwork/jsqueeze": "^2",
                 "pear/archive_tar": "^1.4.4",
                 "php-coveralls/php-coveralls": "^1",
-                "phpunit/php-code-coverage": "~2|~4",
-                "squizlabs/php_codesniffer": "^2.8"
+                "phpunit/phpunit": "^5.7.27",
+                "squizlabs/php_codesniffer": "^3"
             },
             "suggest": {
                 "henrikbjorn/lurker": "For monitoring filesystem changes in taskWatch",
@@ -562,8 +601,11 @@
                         "require": {
                             "symfony/console": "^2.8"
                         },
+                        "require-dev": {
+                            "phpunit/phpunit": "^4.8.36"
+                        },
                         "remove": [
-                            "goaop/framework"
+                            "php-coveralls/php-coveralls"
                         ],
                         "config": {
                             "platform": {
@@ -576,7 +618,7 @@
                     }
                 },
                 "branch-alias": {
-                    "dev-master": "2.x-dev"
+                    "dev-master": "1.x-dev"
                 }
             },
             "autoload": {
@@ -595,26 +637,26 @@
                 }
             ],
             "description": "Modern task runner",
-            "time": "2019-02-17T05:32:27+00:00"
+            "time": "2020-02-18T17:31:26+00:00"
         },
         {
             "name": "consolidation/self-update",
-            "version": "1.1.5",
+            "version": "1.2.0",
             "source": {
                 "type": "git",
                 "url": "https://github.com/consolidation/self-update.git",
-                "reference": "a1c273b14ce334789825a09d06d4c87c0a02ad54"
+                "reference": "dba6b2c0708f20fa3ba8008a2353b637578849b4"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/consolidation/self-update/zipball/a1c273b14ce334789825a09d06d4c87c0a02ad54",
-                "reference": "a1c273b14ce334789825a09d06d4c87c0a02ad54",
+                "url": "https://api.github.com/repos/consolidation/self-update/zipball/dba6b2c0708f20fa3ba8008a2353b637578849b4",
+                "reference": "dba6b2c0708f20fa3ba8008a2353b637578849b4",
                 "shasum": ""
             },
             "require": {
                 "php": ">=5.5.0",
-                "symfony/console": "^2.8|^3|^4",
-                "symfony/filesystem": "^2.5|^3|^4"
+                "symfony/console": "^2.8|^3|^4|^5",
+                "symfony/filesystem": "^2.5|^3|^4|^5"
             },
             "bin": [
                 "scripts/release"
@@ -635,17 +677,17 @@
                 "MIT"
             ],
             "authors": [
-                {
-                    "name": "Greg Anderson",
-                    "email": "greg.1.anderson@greenknowe.org"
-                },
                 {
                     "name": "Alexander Menk",
                     "email": "menk@mestrona.net"
+                },
+                {
+                    "name": "Greg Anderson",
+                    "email": "greg.1.anderson@greenknowe.org"
                 }
             ],
             "description": "Provides a self:update command for Symfony Console applications.",
-            "time": "2018-10-28T01:52:03+00:00"
+            "time": "2020-04-13T02:49:20+00:00"
         },
         {
             "name": "container-interop/container-interop",
@@ -676,6 +718,7 @@
             ],
             "description": "Promoting the interoperability of container objects (DIC, SL, etc.)",
             "homepage": "https://github.com/container-interop/container-interop",
+            "abandoned": "psr/container",
             "time": "2017-02-14T19:40:03+00:00"
         },
         {
@@ -734,16 +777,16 @@
         },
         {
             "name": "g1a/composer-test-scenarios",
-            "version": "3.0.2",
+            "version": "3.0.4",
             "source": {
                 "type": "git",
                 "url": "https://github.com/g1a/composer-test-scenarios.git",
-                "reference": "28f932580981e912ab8f01d15788f1dee06550c8"
+                "reference": "78225430d4a5caf8e06b87d04149f8a9ace9368c"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/g1a/composer-test-scenarios/zipball/28f932580981e912ab8f01d15788f1dee06550c8",
-                "reference": "28f932580981e912ab8f01d15788f1dee06550c8",
+                "url": "https://api.github.com/repos/g1a/composer-test-scenarios/zipball/78225430d4a5caf8e06b87d04149f8a9ace9368c",
+                "reference": "78225430d4a5caf8e06b87d04149f8a9ace9368c",
                 "shasum": ""
             },
             "require": {
@@ -782,7 +825,7 @@
                 }
             ],
             "description": "Useful scripts for testing multiple sets of Composer dependencies.",
-            "time": "2019-02-11T20:22:44+00:00"
+            "time": "2019-09-13T01:24:52+00:00"
         },
         {
             "name": "grasmash/yaml-expander",
@@ -834,27 +877,29 @@
         },
         {
             "name": "guzzlehttp/guzzle",
-            "version": "6.3.3",
+            "version": "6.5.4",
             "source": {
                 "type": "git",
                 "url": "https://github.com/guzzle/guzzle.git",
-                "reference": "407b0cb880ace85c9b63c5f9551db498cb2d50ba"
+                "reference": "a4a1b6930528a8f7ee03518e6442ec7a44155d9d"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/guzzle/guzzle/zipball/407b0cb880ace85c9b63c5f9551db498cb2d50ba",
-                "reference": "407b0cb880ace85c9b63c5f9551db498cb2d50ba",
+                "url": "https://api.github.com/repos/guzzle/guzzle/zipball/a4a1b6930528a8f7ee03518e6442ec7a44155d9d",
+                "reference": "a4a1b6930528a8f7ee03518e6442ec7a44155d9d",
                 "shasum": ""
             },
             "require": {
+                "ext-json": "*",
                 "guzzlehttp/promises": "^1.0",
-                "guzzlehttp/psr7": "^1.4",
-                "php": ">=5.5"
+                "guzzlehttp/psr7": "^1.6.1",
+                "php": ">=5.5",
+                "symfony/polyfill-intl-idn": "1.17.0"
             },
             "require-dev": {
                 "ext-curl": "*",
                 "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.4 || ^7.0",
-                "psr/log": "^1.0"
+                "psr/log": "^1.1"
             },
             "suggest": {
                 "psr/log": "Required for using the Log middleware"
@@ -862,16 +907,16 @@
             "type": "library",
             "extra": {
                 "branch-alias": {
-                    "dev-master": "6.3-dev"
+                    "dev-master": "6.5-dev"
                 }
             },
             "autoload": {
-                "files": [
-                    "src/functions_include.php"
-                ],
                 "psr-4": {
                     "GuzzleHttp\\": "src/"
-                }
+                },
+                "files": [
+                    "src/functions_include.php"
+                ]
             },
             "notification-url": "https://packagist.org/downloads/",
             "license": [
@@ -895,7 +940,7 @@
                 "rest",
                 "web service"
             ],
-            "time": "2018-04-22T15:46:56+00:00"
+            "time": "2020-05-25T19:35:05+00:00"
         },
         {
             "name": "guzzlehttp/promises",
@@ -950,33 +995,37 @@
         },
         {
             "name": "guzzlehttp/psr7",
-            "version": "1.5.2",
+            "version": "1.6.1",
             "source": {
                 "type": "git",
                 "url": "https://github.com/guzzle/psr7.git",
-                "reference": "9f83dded91781a01c63574e387eaa769be769115"
+                "reference": "239400de7a173fe9901b9ac7c06497751f00727a"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/guzzle/psr7/zipball/9f83dded91781a01c63574e387eaa769be769115",
-                "reference": "9f83dded91781a01c63574e387eaa769be769115",
+                "url": "https://api.github.com/repos/guzzle/psr7/zipball/239400de7a173fe9901b9ac7c06497751f00727a",
+                "reference": "239400de7a173fe9901b9ac7c06497751f00727a",
                 "shasum": ""
             },
             "require": {
                 "php": ">=5.4.0",
                 "psr/http-message": "~1.0",
-                "ralouphie/getallheaders": "^2.0.5"
+                "ralouphie/getallheaders": "^2.0.5 || ^3.0.0"
             },
             "provide": {
                 "psr/http-message-implementation": "1.0"
             },
             "require-dev": {
+                "ext-zlib": "*",
                 "phpunit/phpunit": "~4.8.36 || ^5.7.27 || ^6.5.8"
             },
+            "suggest": {
+                "zendframework/zend-httphandlerrunner": "Emit PSR-7 responses"
+            },
             "type": "library",
             "extra": {
                 "branch-alias": {
-                    "dev-master": "1.5-dev"
+                    "dev-master": "1.6-dev"
                 }
             },
             "autoload": {
@@ -1013,7 +1062,7 @@
                 "uri",
                 "url"
             ],
-            "time": "2018-12-04T20:46:45+00:00"
+            "time": "2019-07-01T23:21:34+00:00"
         },
         {
             "name": "knplabs/github-api",
@@ -1250,16 +1299,16 @@
         },
         {
             "name": "php-http/client-common",
-            "version": "1.9.1",
+            "version": "1.10.0",
             "source": {
                 "type": "git",
                 "url": "https://github.com/php-http/client-common.git",
-                "reference": "0e156a12cc3e46f590c73bf57592a2252fc3dc48"
+                "reference": "c0390ae3c8f2ae9d50901feef0127fb9e396f6b4"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/php-http/client-common/zipball/0e156a12cc3e46f590c73bf57592a2252fc3dc48",
-                "reference": "0e156a12cc3e46f590c73bf57592a2252fc3dc48",
+                "url": "https://api.github.com/repos/php-http/client-common/zipball/c0390ae3c8f2ae9d50901feef0127fb9e396f6b4",
+                "reference": "c0390ae3c8f2ae9d50901feef0127fb9e396f6b4",
                 "shasum": ""
             },
             "require": {
@@ -1267,7 +1316,7 @@
                 "php-http/httplug": "^1.1",
                 "php-http/message": "^1.6",
                 "php-http/message-factory": "^1.0",
-                "symfony/options-resolver": "^2.6 || ^3.0 || ^4.0"
+                "symfony/options-resolver": "^2.6 || ^3.0 || ^4.0 || ^5.0"
             },
             "require-dev": {
                 "guzzlehttp/psr7": "^1.4",
@@ -1281,7 +1330,7 @@
             "type": "library",
             "extra": {
                 "branch-alias": {
-                    "dev-master": "1.9.x-dev"
+                    "dev-master": "1.10.x-dev"
                 }
             },
             "autoload": {
@@ -1307,7 +1356,7 @@
                 "http",
                 "httplug"
             ],
-            "time": "2019-02-02T07:03:15+00:00"
+            "time": "2019-11-18T08:54:36+00:00"
         },
         {
             "name": "php-http/discovery",
@@ -1809,38 +1858,38 @@
         },
         {
             "name": "phpspec/prophecy",
-            "version": "1.8.0",
+            "version": "v1.10.3",
             "source": {
                 "type": "git",
                 "url": "https://github.com/phpspec/prophecy.git",
-                "reference": "4ba436b55987b4bf311cb7c6ba82aa528aac0a06"
+                "reference": "451c3cd1418cf640de218914901e51b064abb093"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/phpspec/prophecy/zipball/4ba436b55987b4bf311cb7c6ba82aa528aac0a06",
-                "reference": "4ba436b55987b4bf311cb7c6ba82aa528aac0a06",
+                "url": "https://api.github.com/repos/phpspec/prophecy/zipball/451c3cd1418cf640de218914901e51b064abb093",
+                "reference": "451c3cd1418cf640de218914901e51b064abb093",
                 "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"
+                "phpdocumentor/reflection-docblock": "^2.0|^3.0.2|^4.0|^5.0",
+                "sebastian/comparator": "^1.2.3|^2.0|^3.0|^4.0",
+                "sebastian/recursion-context": "^1.0|^2.0|^3.0|^4.0"
             },
             "require-dev": {
-                "phpspec/phpspec": "^2.5|^3.2",
+                "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"
+                    "dev-master": "1.10.x-dev"
                 }
             },
             "autoload": {
-                "psr-0": {
-                    "Prophecy\\": "src/"
+                "psr-4": {
+                    "Prophecy\\": "src/Prophecy"
                 }
             },
             "notification-url": "https://packagist.org/downloads/",
@@ -1868,7 +1917,7 @@
                 "spy",
                 "stub"
             ],
-            "time": "2018-08-05T17:53:17+00:00"
+            "time": "2020-03-05T15:02:03+00:00"
         },
         {
             "name": "phpunit/php-code-coverage",
@@ -2408,16 +2457,16 @@
         },
         {
             "name": "psr/log",
-            "version": "1.1.0",
+            "version": "1.1.3",
             "source": {
                 "type": "git",
                 "url": "https://github.com/php-fig/log.git",
-                "reference": "6c001f1daafa3a3ac1d8ff69ee4db8e799a654dd"
+                "reference": "0f73288fd15629204f9d42b7055f72dacbe811fc"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/php-fig/log/zipball/6c001f1daafa3a3ac1d8ff69ee4db8e799a654dd",
-                "reference": "6c001f1daafa3a3ac1d8ff69ee4db8e799a654dd",
+                "url": "https://api.github.com/repos/php-fig/log/zipball/0f73288fd15629204f9d42b7055f72dacbe811fc",
+                "reference": "0f73288fd15629204f9d42b7055f72dacbe811fc",
                 "shasum": ""
             },
             "require": {
@@ -2426,7 +2475,7 @@
             "type": "library",
             "extra": {
                 "branch-alias": {
-                    "dev-master": "1.0.x-dev"
+                    "dev-master": "1.1.x-dev"
                 }
             },
             "autoload": {
@@ -2451,28 +2500,28 @@
                 "psr",
                 "psr-3"
             ],
-            "time": "2018-11-20T15:27:04+00:00"
+            "time": "2020-03-23T09:12:05+00:00"
         },
         {
             "name": "ralouphie/getallheaders",
-            "version": "2.0.5",
+            "version": "3.0.3",
             "source": {
                 "type": "git",
                 "url": "https://github.com/ralouphie/getallheaders.git",
-                "reference": "5601c8a83fbba7ef674a7369456d12f1e0d0eafa"
+                "reference": "120b605dfeb996808c31b6477290a714d356e822"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/ralouphie/getallheaders/zipball/5601c8a83fbba7ef674a7369456d12f1e0d0eafa",
-                "reference": "5601c8a83fbba7ef674a7369456d12f1e0d0eafa",
+                "url": "https://api.github.com/repos/ralouphie/getallheaders/zipball/120b605dfeb996808c31b6477290a714d356e822",
+                "reference": "120b605dfeb996808c31b6477290a714d356e822",
                 "shasum": ""
             },
             "require": {
-                "php": ">=5.3"
+                "php": ">=5.6"
             },
             "require-dev": {
-                "phpunit/phpunit": "~3.7.0",
-                "satooshi/php-coveralls": ">=1.0"
+                "php-coveralls/php-coveralls": "^2.1",
+                "phpunit/phpunit": "^5 || ^6.5"
             },
             "type": "library",
             "autoload": {
@@ -2491,7 +2540,7 @@
                 }
             ],
             "description": "A polyfill for getallheaders.",
-            "time": "2016-02-11T07:05:27+00:00"
+            "time": "2019-03-08T08:55:37+00:00"
         },
         {
             "name": "sebastian/code-unit-reverse-lookup",
@@ -3086,16 +3135,16 @@
         },
         {
             "name": "symfony/console",
-            "version": "v3.4.23",
+            "version": "v3.4.40",
             "source": {
                 "type": "git",
                 "url": "https://github.com/symfony/console.git",
-                "reference": "71ce77f37af0c5ffb9590e43cc4f70e426945c5e"
+                "reference": "bf60d5e606cd595391c5f82bf6b570d9573fa120"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/symfony/console/zipball/71ce77f37af0c5ffb9590e43cc4f70e426945c5e",
-                "reference": "71ce77f37af0c5ffb9590e43cc4f70e426945c5e",
+                "url": "https://api.github.com/repos/symfony/console/zipball/bf60d5e606cd595391c5f82bf6b570d9573fa120",
+                "reference": "bf60d5e606cd595391c5f82bf6b570d9573fa120",
                 "shasum": ""
             },
             "require": {
@@ -3154,20 +3203,20 @@
             ],
             "description": "Symfony Console Component",
             "homepage": "https://symfony.com",
-            "time": "2019-02-23T15:06:07+00:00"
+            "time": "2020-03-27T17:07:22+00:00"
         },
         {
             "name": "symfony/debug",
-            "version": "v3.4.23",
+            "version": "v3.4.40",
             "source": {
                 "type": "git",
                 "url": "https://github.com/symfony/debug.git",
-                "reference": "8d8a9e877b3fcdc50ddecf8dcea146059753f782"
+                "reference": "ce9f3b5e8e1c50f849fded59b3a1b6bc3562ec29"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/symfony/debug/zipball/8d8a9e877b3fcdc50ddecf8dcea146059753f782",
-                "reference": "8d8a9e877b3fcdc50ddecf8dcea146059753f782",
+                "url": "https://api.github.com/repos/symfony/debug/zipball/ce9f3b5e8e1c50f849fded59b3a1b6bc3562ec29",
+                "reference": "ce9f3b5e8e1c50f849fded59b3a1b6bc3562ec29",
                 "shasum": ""
             },
             "require": {
@@ -3210,20 +3259,20 @@
             ],
             "description": "Symfony Debug Component",
             "homepage": "https://symfony.com",
-            "time": "2019-02-24T15:45:11+00:00"
+            "time": "2020-03-23T10:22:40+00:00"
         },
         {
             "name": "symfony/event-dispatcher",
-            "version": "v3.4.23",
+            "version": "v3.4.40",
             "source": {
                 "type": "git",
                 "url": "https://github.com/symfony/event-dispatcher.git",
-                "reference": "ec625e2fff7f584eeb91754821807317b2e79236"
+                "reference": "9d4e22943b73acc1ba50595b7de1a01fe9dbad48"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/ec625e2fff7f584eeb91754821807317b2e79236",
-                "reference": "ec625e2fff7f584eeb91754821807317b2e79236",
+                "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/9d4e22943b73acc1ba50595b7de1a01fe9dbad48",
+                "reference": "9d4e22943b73acc1ba50595b7de1a01fe9dbad48",
                 "shasum": ""
             },
             "require": {
@@ -3273,20 +3322,20 @@
             ],
             "description": "Symfony EventDispatcher Component",
             "homepage": "https://symfony.com",
-            "time": "2019-02-23T15:06:07+00:00"
+            "time": "2020-03-15T09:38:08+00:00"
         },
         {
             "name": "symfony/filesystem",
-            "version": "v3.4.23",
+            "version": "v3.4.40",
             "source": {
                 "type": "git",
                 "url": "https://github.com/symfony/filesystem.git",
-                "reference": "acf99758b1df8e9295e6b85aa69f294565c9fedb"
+                "reference": "78a93e5606a19d0fb490afc3c4a9b7ecd86e1515"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/symfony/filesystem/zipball/acf99758b1df8e9295e6b85aa69f294565c9fedb",
-                "reference": "acf99758b1df8e9295e6b85aa69f294565c9fedb",
+                "url": "https://api.github.com/repos/symfony/filesystem/zipball/78a93e5606a19d0fb490afc3c4a9b7ecd86e1515",
+                "reference": "78a93e5606a19d0fb490afc3c4a9b7ecd86e1515",
                 "shasum": ""
             },
             "require": {
@@ -3323,20 +3372,20 @@
             ],
             "description": "Symfony Filesystem Component",
             "homepage": "https://symfony.com",
-            "time": "2019-02-04T21:34:32+00:00"
+            "time": "2020-04-12T16:54:01+00:00"
         },
         {
             "name": "symfony/finder",
-            "version": "v3.4.23",
+            "version": "v3.4.40",
             "source": {
                 "type": "git",
                 "url": "https://github.com/symfony/finder.git",
-                "reference": "fcdde4aa38f48190ce70d782c166f23930084f9b"
+                "reference": "5ec813ccafa8164ef21757e8c725d3a57da59200"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/symfony/finder/zipball/fcdde4aa38f48190ce70d782c166f23930084f9b",
-                "reference": "fcdde4aa38f48190ce70d782c166f23930084f9b",
+                "url": "https://api.github.com/repos/symfony/finder/zipball/5ec813ccafa8164ef21757e8c725d3a57da59200",
+                "reference": "5ec813ccafa8164ef21757e8c725d3a57da59200",
                 "shasum": ""
             },
             "require": {
@@ -3372,20 +3421,20 @@
             ],
             "description": "Symfony Finder Component",
             "homepage": "https://symfony.com",
-            "time": "2019-02-22T14:44:53+00:00"
+            "time": "2020-02-14T07:34:21+00:00"
         },
         {
             "name": "symfony/options-resolver",
-            "version": "v3.4.23",
+            "version": "v3.4.40",
             "source": {
                 "type": "git",
                 "url": "https://github.com/symfony/options-resolver.git",
-                "reference": "926e3b797e6bb66c0e4d7da7eff3a174f7378bcf"
+                "reference": "79701529391f802604ec92080364d617f029974b"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/symfony/options-resolver/zipball/926e3b797e6bb66c0e4d7da7eff3a174f7378bcf",
-                "reference": "926e3b797e6bb66c0e4d7da7eff3a174f7378bcf",
+                "url": "https://api.github.com/repos/symfony/options-resolver/zipball/79701529391f802604ec92080364d617f029974b",
+                "reference": "79701529391f802604ec92080364d617f029974b",
                 "shasum": ""
             },
             "require": {
@@ -3426,20 +3475,20 @@
                 "configuration",
                 "options"
             ],
-            "time": "2019-02-23T15:06:07+00:00"
+            "time": "2020-04-06T08:30:32+00:00"
         },
         {
             "name": "symfony/polyfill-ctype",
-            "version": "v1.10.0",
+            "version": "v1.17.0",
             "source": {
                 "type": "git",
                 "url": "https://github.com/symfony/polyfill-ctype.git",
-                "reference": "e3d826245268269cd66f8326bd8bc066687b4a19"
+                "reference": "e94c8b1bbe2bc77507a1056cdb06451c75b427f9"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/e3d826245268269cd66f8326bd8bc066687b4a19",
-                "reference": "e3d826245268269cd66f8326bd8bc066687b4a19",
+                "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/e94c8b1bbe2bc77507a1056cdb06451c75b427f9",
+                "reference": "e94c8b1bbe2bc77507a1056cdb06451c75b427f9",
                 "shasum": ""
             },
             "require": {
@@ -3451,7 +3500,7 @@
             "type": "library",
             "extra": {
                 "branch-alias": {
-                    "dev-master": "1.9-dev"
+                    "dev-master": "1.17-dev"
                 }
             },
             "autoload": {
@@ -3467,13 +3516,13 @@
                 "MIT"
             ],
             "authors": [
-                {
-                    "name": "Symfony Community",
-                    "homepage": "https://symfony.com/contributors"
-                },
                 {
                     "name": "Gert de Pagter",
                     "email": "BackEndTea@gmail.com"
+                },
+                {
+                    "name": "Symfony Community",
+                    "homepage": "https://symfony.com/contributors"
                 }
             ],
             "description": "Symfony polyfill for ctype functions",
@@ -3484,20 +3533,82 @@
                 "polyfill",
                 "portable"
             ],
-            "time": "2018-08-06T14:22:27+00:00"
+            "time": "2020-05-12T16:14:59+00:00"
+        },
+        {
+            "name": "symfony/polyfill-intl-idn",
+            "version": "v1.17.0",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/symfony/polyfill-intl-idn.git",
+                "reference": "3bff59ea7047e925be6b7f2059d60af31bb46d6a"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/symfony/polyfill-intl-idn/zipball/3bff59ea7047e925be6b7f2059d60af31bb46d6a",
+                "reference": "3bff59ea7047e925be6b7f2059d60af31bb46d6a",
+                "shasum": ""
+            },
+            "require": {
+                "php": ">=5.3.3",
+                "symfony/polyfill-mbstring": "^1.3",
+                "symfony/polyfill-php72": "^1.10"
+            },
+            "suggest": {
+                "ext-intl": "For best performance"
+            },
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "1.17-dev"
+                }
+            },
+            "autoload": {
+                "psr-4": {
+                    "Symfony\\Polyfill\\Intl\\Idn\\": ""
+                },
+                "files": [
+                    "bootstrap.php"
+                ]
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "MIT"
+            ],
+            "authors": [
+                {
+                    "name": "Laurent Bassin",
+                    "email": "laurent@bassin.info"
+                },
+                {
+                    "name": "Symfony Community",
+                    "homepage": "https://symfony.com/contributors"
+                }
+            ],
+            "description": "Symfony polyfill for intl's idn_to_ascii and idn_to_utf8 functions",
+            "homepage": "https://symfony.com",
+            "keywords": [
+                "compatibility",
+                "idn",
+                "intl",
+                "polyfill",
+                "portable",
+                "shim"
+            ],
+            "time": "2020-05-12T16:47:27+00:00"
         },
         {
             "name": "symfony/polyfill-mbstring",
-            "version": "v1.10.0",
+            "version": "v1.17.0",
             "source": {
                 "type": "git",
                 "url": "https://github.com/symfony/polyfill-mbstring.git",
-                "reference": "c79c051f5b3a46be09205c73b80b346e4153e494"
+                "reference": "fa79b11539418b02fc5e1897267673ba2c19419c"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/c79c051f5b3a46be09205c73b80b346e4153e494",
-                "reference": "c79c051f5b3a46be09205c73b80b346e4153e494",
+                "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/fa79b11539418b02fc5e1897267673ba2c19419c",
+                "reference": "fa79b11539418b02fc5e1897267673ba2c19419c",
                 "shasum": ""
             },
             "require": {
@@ -3509,7 +3620,7 @@
             "type": "library",
             "extra": {
                 "branch-alias": {
-                    "dev-master": "1.9-dev"
+                    "dev-master": "1.17-dev"
                 }
             },
             "autoload": {
@@ -3543,20 +3654,75 @@
                 "portable",
                 "shim"
             ],
-            "time": "2018-09-21T13:07:52+00:00"
+            "time": "2020-05-12T16:47:27+00:00"
+        },
+        {
+            "name": "symfony/polyfill-php72",
+            "version": "v1.17.0",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/symfony/polyfill-php72.git",
+                "reference": "f048e612a3905f34931127360bdd2def19a5e582"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/symfony/polyfill-php72/zipball/f048e612a3905f34931127360bdd2def19a5e582",
+                "reference": "f048e612a3905f34931127360bdd2def19a5e582",
+                "shasum": ""
+            },
+            "require": {
+                "php": ">=5.3.3"
+            },
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "1.17-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": "2020-05-12T16:47:27+00:00"
         },
         {
             "name": "symfony/process",
-            "version": "v3.4.23",
+            "version": "v3.4.40",
             "source": {
                 "type": "git",
                 "url": "https://github.com/symfony/process.git",
-                "reference": "009f8dda80930e89e8344a4e310b08f9ff07dd2e"
+                "reference": "f5104c9dcbc2cfad45d01d5150c1da9836967271"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/symfony/process/zipball/009f8dda80930e89e8344a4e310b08f9ff07dd2e",
-                "reference": "009f8dda80930e89e8344a4e310b08f9ff07dd2e",
+                "url": "https://api.github.com/repos/symfony/process/zipball/f5104c9dcbc2cfad45d01d5150c1da9836967271",
+                "reference": "f5104c9dcbc2cfad45d01d5150c1da9836967271",
                 "shasum": ""
             },
             "require": {
@@ -3592,20 +3758,20 @@
             ],
             "description": "Symfony Process Component",
             "homepage": "https://symfony.com",
-            "time": "2019-01-16T13:27:11+00:00"
+            "time": "2020-04-12T14:33:46+00:00"
         },
         {
             "name": "symfony/yaml",
-            "version": "v3.4.23",
+            "version": "v3.4.40",
             "source": {
                 "type": "git",
                 "url": "https://github.com/symfony/yaml.git",
-                "reference": "57f1ce82c997f5a8701b89ef970e36bb657fd09c"
+                "reference": "8fef49ac1357f4e05c997a1f139467ccb186bffa"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/symfony/yaml/zipball/57f1ce82c997f5a8701b89ef970e36bb657fd09c",
-                "reference": "57f1ce82c997f5a8701b89ef970e36bb657fd09c",
+                "url": "https://api.github.com/repos/symfony/yaml/zipball/8fef49ac1357f4e05c997a1f139467ccb186bffa",
+                "reference": "8fef49ac1357f4e05c997a1f139467ccb186bffa",
                 "shasum": ""
             },
             "require": {
@@ -3651,36 +3817,33 @@
             ],
             "description": "Symfony Yaml Component",
             "homepage": "https://symfony.com",
-            "time": "2019-02-23T15:06:07+00:00"
+            "time": "2020-04-24T10:16:04+00:00"
         },
         {
             "name": "webmozart/assert",
-            "version": "1.4.0",
+            "version": "1.8.0",
             "source": {
                 "type": "git",
                 "url": "https://github.com/webmozart/assert.git",
-                "reference": "83e253c8e0be5b0257b881e1827274667c5c17a9"
+                "reference": "ab2cb0b3b559010b75981b1bdce728da3ee90ad6"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/webmozart/assert/zipball/83e253c8e0be5b0257b881e1827274667c5c17a9",
-                "reference": "83e253c8e0be5b0257b881e1827274667c5c17a9",
+                "url": "https://api.github.com/repos/webmozart/assert/zipball/ab2cb0b3b559010b75981b1bdce728da3ee90ad6",
+                "reference": "ab2cb0b3b559010b75981b1bdce728da3ee90ad6",
                 "shasum": ""
             },
             "require": {
                 "php": "^5.3.3 || ^7.0",
                 "symfony/polyfill-ctype": "^1.8"
             },
+            "conflict": {
+                "vimeo/psalm": "<3.9.1"
+            },
             "require-dev": {
-                "phpunit/phpunit": "^4.6",
-                "sebastian/version": "^1.0.1"
+                "phpunit/phpunit": "^4.8.36 || ^7.5.13"
             },
             "type": "library",
-            "extra": {
-                "branch-alias": {
-                    "dev-master": "1.3-dev"
-                }
-            },
             "autoload": {
                 "psr-4": {
                     "Webmozart\\Assert\\": "src/"
@@ -3702,7 +3865,7 @@
                 "check",
                 "validate"
             ],
-            "time": "2018-12-25T11:19:39+00:00"
+            "time": "2020-04-18T12:12:48+00:00"
         }
     ],
     "aliases": [],
diff --git a/vendor/consolidation/site-alias/.travis.yml b/vendor/consolidation/site-alias/.travis.yml
index d9203d63e1..597af7fa3a 100644
--- a/vendor/consolidation/site-alias/.travis.yml
+++ b/vendor/consolidation/site-alias/.travis.yml
@@ -7,11 +7,15 @@ branches:
 matrix:
   fast_finish: true
   include:
-  - php: 7.2
+  - php: 7.4
     env: DEPENCENCIES=highest
+  - php: 7.4
+  - php: 7.3
   - php: 7.2
   - php: 7.1
+    env: SCENARIO=phpunit5
   - php: 7.0.11
+    env: SCENARIO=phpunit5
   - php: 5.6
     env: SCENARIO=phpunit5
   - php: 5.6
diff --git a/vendor/consolidation/site-alias/CHANGELOG.md b/vendor/consolidation/site-alias/CHANGELOG.md
index 66203faddf..bffb89ef06 100644
--- a/vendor/consolidation/site-alias/CHANGELOG.md
+++ b/vendor/consolidation/site-alias/CHANGELOG.md
@@ -1,5 +1,10 @@
 # Changelog
 
+### 3.0.1 2020-05-27
+
+* Symfony 5 support
+* Remove 'experimental' designation from wildcard environments.
+
 ### 3.0.0 2019-03-12
 
 * Make self.site.yml more discoverable. (#33)
diff --git a/vendor/consolidation/site-alias/LICENSE b/vendor/consolidation/site-alias/LICENSE
index 3565b38f75..a342cabe78 100644
--- a/vendor/consolidation/site-alias/LICENSE
+++ b/vendor/consolidation/site-alias/LICENSE
@@ -1,6 +1,6 @@
 The MIT License (MIT)
 
-Copyright (c) 2018-2019 Greg Anderson
+Copyright (c) 2018-2020 Greg Anderson
 
 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
diff --git a/vendor/consolidation/site-alias/README.md b/vendor/consolidation/site-alias/README.md
index 55dee4d287..c5ce14c63d 100644
--- a/vendor/consolidation/site-alias/README.md
+++ b/vendor/consolidation/site-alias/README.md
@@ -63,7 +63,7 @@ dev:
   user: www-data
 ```
 
-### Wildcard environments (Experimental)
+### Wildcard environments
 
 It is also possible to define "wildcard" environments that will match any provided environment name. This is only possible to do in instances where the contents of the wildcard aliases are all the same, except for places where the environment name appears. To substitute the name of the environment into a wildcard domain, use the variable replacement string `${env-name}`. For example, a wildcard alias that will match any multisite in a Drupal site might look something like the following example:
 ```
diff --git a/vendor/consolidation/site-alias/VERSION b/vendor/consolidation/site-alias/VERSION
index 56fea8a08d..13d683ccbf 100644
--- a/vendor/consolidation/site-alias/VERSION
+++ b/vendor/consolidation/site-alias/VERSION
@@ -1 +1 @@
-3.0.0
\ No newline at end of file
+3.0.1
\ No newline at end of file
diff --git a/vendor/consolidation/site-alias/appveyor.yml b/vendor/consolidation/site-alias/appveyor.yml
index 0483b24f86..65a69cc66d 100644
--- a/vendor/consolidation/site-alias/appveyor.yml
+++ b/vendor/consolidation/site-alias/appveyor.yml
@@ -26,7 +26,7 @@ install:
   - SET PATH=C:\Program Files\MySql\MySQL Server 5.7\bin\;%PATH%
   #Install PHP per https://blog.wyrihaximus.net/2016/11/running-php-unit-tests-on-windows-using-appveyor-and-chocolatey/
   - ps: appveyor-retry cinst --ignore-checksums -y php --version ((choco search php --exact --all-versions -r | select-string -pattern $Env:php_ver_target | Select-Object -first 1) -replace '[php|]','')
-  - cd c:\tools\php70
+  - cd c:\tools\php74
   - copy php.ini-production php.ini
 
   - echo extension_dir=ext >> php.ini
@@ -43,7 +43,7 @@ install:
   - echo extension=php_pdo_sqlite.dll >> php.ini
   - echo extension=php_pgsql.dll >> php.ini
   - echo extension=php_gd2.dll >> php.ini
-  - SET PATH=C:\tools\php70;%PATH%
+  - SET PATH=C:\tools\php74;%PATH%
   #Install Composer
   - cd %APPVEYOR_BUILD_FOLDER%
   #- appveyor DownloadFile https://getcomposer.org/composer.phar
@@ -60,4 +60,4 @@ test_script:
 # environment variables
 environment:
   global:
-      php_ver_target: 7.0
+      php_ver_target: 7.4
diff --git a/vendor/consolidation/site-alias/composer.json b/vendor/consolidation/site-alias/composer.json
index f06b866ada..6f07d171ab 100644
--- a/vendor/consolidation/site-alias/composer.json
+++ b/vendor/consolidation/site-alias/composer.json
@@ -24,17 +24,16 @@
     },
     "require": {
         "php": ">=5.5.0",
-        "consolidation/config": "^1.2.1"
+        "consolidation/config": "^1.2.1|^2"
     },
     "require-dev": {
-        "symfony/yaml": "~2.3|^3",
-        "consolidation/Robo": "^1.2.3",
-        "symfony/console": "^2.8|^3|^4",
+        "symfony/yaml": "~2.3|^3|^4.4|^5",
+        "consolidation/robo": "^1.2.3|^2",
         "knplabs/github-api": "^2.7",
         "php-http/guzzle6-adapter": "^1.1",
         "phpunit/phpunit": "^6",
         "g1a/composer-test-scenarios": "^3",
-        "php-coveralls/php-coveralls": "^1",
+        "php-coveralls/php-coveralls": "^2.2",
         "squizlabs/php_codesniffer": "^2.8"
     },
     "scripts": {
@@ -63,7 +62,7 @@
         "optimize-autoloader": true,
         "sort-packages": true,
         "platform": {
-            "php": "7.0.8"
+            "php": "7.2.28"
         }
     },
     "extra": {
diff --git a/vendor/consolidation/site-alias/composer.lock b/vendor/consolidation/site-alias/composer.lock
index a890357107..dcd2243d4d 100644
--- a/vendor/consolidation/site-alias/composer.lock
+++ b/vendor/consolidation/site-alias/composer.lock
@@ -4,34 +4,35 @@
         "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",
         "This file is @generated automatically"
     ],
-    "content-hash": "a8b7be6cbb24c26532b63db0ae0c3e39",
+    "content-hash": "644a67af42ce50b3a579fd1ac507163e",
     "packages": [
         {
             "name": "consolidation/config",
-            "version": "1.2.1",
+            "version": "2.0.0",
             "source": {
                 "type": "git",
                 "url": "https://github.com/consolidation/config.git",
-                "reference": "cac1279bae7efb5c7fb2ca4c3ba4b8eb741a96c1"
+                "reference": "9842670aad3406dbc8df3069fd680a9f8cd6edd7"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/consolidation/config/zipball/cac1279bae7efb5c7fb2ca4c3ba4b8eb741a96c1",
-                "reference": "cac1279bae7efb5c7fb2ca4c3ba4b8eb741a96c1",
+                "url": "https://api.github.com/repos/consolidation/config/zipball/9842670aad3406dbc8df3069fd680a9f8cd6edd7",
+                "reference": "9842670aad3406dbc8df3069fd680a9f8cd6edd7",
                 "shasum": ""
             },
             "require": {
                 "dflydev/dot-access-data": "^1.1.0",
                 "grasmash/expander": "^1",
-                "php": ">=5.4.0"
+                "php": ">=7.1.3"
             },
             "require-dev": {
                 "g1a/composer-test-scenarios": "^3",
-                "php-coveralls/php-coveralls": "^1",
-                "phpunit/phpunit": "^5",
-                "squizlabs/php_codesniffer": "2.*",
-                "symfony/console": "^2.5|^3|^4",
-                "symfony/yaml": "^2.8.11|^3|^4"
+                "php-coveralls/php-coveralls": "^2.2",
+                "phpunit/phpunit": "^6",
+                "squizlabs/php_codesniffer": "^3",
+                "symfony/console": "^4|^5",
+                "symfony/event-dispatcher": "^4|^5",
+                "symfony/yaml": "^4|^5"
             },
             "suggest": {
                 "symfony/yaml": "Required to use Consolidation\\Config\\Loader\\YamlConfigLoader"
@@ -41,32 +42,17 @@
                 "scenarios": {
                     "symfony4": {
                         "require-dev": {
-                            "symfony/console": "^4.0"
+                            "symfony/console": "^4"
                         },
                         "config": {
                             "platform": {
                                 "php": "7.1.3"
                             }
                         }
-                    },
-                    "symfony2": {
-                        "require-dev": {
-                            "symfony/console": "^2.8",
-                            "symfony/event-dispatcher": "^2.8",
-                            "phpunit/phpunit": "^4.8.36"
-                        },
-                        "remove": [
-                            "php-coveralls/php-coveralls"
-                        ],
-                        "config": {
-                            "platform": {
-                                "php": "5.4.8"
-                            }
-                        }
                     }
                 },
                 "branch-alias": {
-                    "dev-master": "1.x-dev"
+                    "dev-master": "2.x-dev"
                 }
             },
             "autoload": {
@@ -85,7 +71,7 @@
                 }
             ],
             "description": "Provide configuration services for a commandline tool.",
-            "time": "2019-03-03T19:37:04+00:00"
+            "time": "2020-05-27T17:11:23+00:00"
         },
         {
             "name": "dflydev/dot-access-data",
@@ -197,16 +183,16 @@
     "packages-dev": [
         {
             "name": "clue/stream-filter",
-            "version": "v1.4.0",
+            "version": "v1.4.1",
             "source": {
                 "type": "git",
                 "url": "https://github.com/clue/php-stream-filter.git",
-                "reference": "d80fdee9b3a7e0d16fc330a22f41f3ad0eeb09d0"
+                "reference": "5a58cc30a8bd6a4eb8f856adf61dd3e013f53f71"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/clue/php-stream-filter/zipball/d80fdee9b3a7e0d16fc330a22f41f3ad0eeb09d0",
-                "reference": "d80fdee9b3a7e0d16fc330a22f41f3ad0eeb09d0",
+                "url": "https://api.github.com/repos/clue/php-stream-filter/zipball/5a58cc30a8bd6a4eb8f856adf61dd3e013f53f71",
+                "reference": "5a58cc30a8bd6a4eb8f856adf61dd3e013f53f71",
                 "shasum": ""
             },
             "require": {
@@ -221,7 +207,7 @@
                     "Clue\\StreamFilter\\": "src/"
                 },
                 "files": [
-                    "src/functions.php"
+                    "src/functions_include.php"
                 ]
             },
             "notification-url": "https://packagist.org/downloads/",
@@ -245,35 +231,35 @@
                 "stream_filter_append",
                 "stream_filter_register"
             ],
-            "time": "2017-08-18T09:54:01+00:00"
+            "time": "2019-04-09T12:31:48+00:00"
         },
         {
             "name": "consolidation/annotated-command",
-            "version": "2.12.0",
+            "version": "4.1.1",
             "source": {
                 "type": "git",
                 "url": "https://github.com/consolidation/annotated-command.git",
-                "reference": "512a2e54c98f3af377589de76c43b24652bcb789"
+                "reference": "efc58dc0f34a45539787c5190b41b5d2a50a08da"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/consolidation/annotated-command/zipball/512a2e54c98f3af377589de76c43b24652bcb789",
-                "reference": "512a2e54c98f3af377589de76c43b24652bcb789",
+                "url": "https://api.github.com/repos/consolidation/annotated-command/zipball/efc58dc0f34a45539787c5190b41b5d2a50a08da",
+                "reference": "efc58dc0f34a45539787c5190b41b5d2a50a08da",
                 "shasum": ""
             },
             "require": {
-                "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"
+                "consolidation/output-formatters": "^4.1.1",
+                "php": ">=7.1.3",
+                "psr/log": "^1|^2",
+                "symfony/console": "^4.4.8|^5",
+                "symfony/event-dispatcher": "^4.4.8|^5",
+                "symfony/finder": "^4.4.8|^5"
             },
             "require-dev": {
                 "g1a/composer-test-scenarios": "^3",
-                "php-coveralls/php-coveralls": "^1",
+                "php-coveralls/php-coveralls": "^2.2",
                 "phpunit/phpunit": "^6",
-                "squizlabs/php_codesniffer": "^2.7"
+                "squizlabs/php_codesniffer": "^3"
             },
             "type": "library",
             "extra": {
@@ -287,42 +273,10 @@
                                 "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"
+                    "dev-master": "4.x-dev"
                 }
             },
             "autoload": {
@@ -341,78 +295,49 @@
                 }
             ],
             "description": "Initialize Symfony Console commands from annotated command class methods.",
-            "time": "2019-03-08T16:55:03+00:00"
+            "time": "2020-05-27T21:11:36+00:00"
         },
         {
             "name": "consolidation/log",
-            "version": "1.1.1",
+            "version": "2.0.1",
             "source": {
                 "type": "git",
                 "url": "https://github.com/consolidation/log.git",
-                "reference": "b2e887325ee90abc96b0a8b7b474cd9e7c896e3a"
+                "reference": "ba0bf6af1fbd09ed4dc18fc2f27b12ceff487cbf"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/consolidation/log/zipball/b2e887325ee90abc96b0a8b7b474cd9e7c896e3a",
-                "reference": "b2e887325ee90abc96b0a8b7b474cd9e7c896e3a",
+                "url": "https://api.github.com/repos/consolidation/log/zipball/ba0bf6af1fbd09ed4dc18fc2f27b12ceff487cbf",
+                "reference": "ba0bf6af1fbd09ed4dc18fc2f27b12ceff487cbf",
                 "shasum": ""
             },
             "require": {
-                "php": ">=5.4.5",
+                "php": ">=7.1.3",
                 "psr/log": "^1.0",
-                "symfony/console": "^2.8|^3|^4"
+                "symfony/console": "^4|^5"
             },
             "require-dev": {
                 "g1a/composer-test-scenarios": "^3",
-                "php-coveralls/php-coveralls": "^1",
+                "php-coveralls/php-coveralls": "^2.2",
                 "phpunit/phpunit": "^6",
-                "squizlabs/php_codesniffer": "^2"
+                "squizlabs/php_codesniffer": "^3"
             },
             "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"
-                            }
-                        }
-                    },
-                    "phpunit4": {
                         "require-dev": {
-                            "phpunit/phpunit": "^4.8.36"
+                            "symfony/console": "^4"
                         },
-                        "remove": [
-                            "php-coveralls/php-coveralls"
-                        ],
                         "config": {
                             "platform": {
-                                "php": "5.4.8"
+                                "php": "7.1.3"
                             }
                         }
                     }
                 },
                 "branch-alias": {
-                    "dev-master": "1.x-dev"
+                    "dev-master": "2.x-dev"
                 }
             },
             "autoload": {
@@ -431,44 +356,55 @@
                 }
             ],
             "description": "Improved Psr-3 / Psr\\Log logger based on Symfony Console components.",
-            "time": "2019-01-01T17:30:51+00:00"
+            "time": "2020-05-27T17:06:13+00:00"
         },
         {
             "name": "consolidation/output-formatters",
-            "version": "3.4.0",
+            "version": "4.1.1",
             "source": {
                 "type": "git",
                 "url": "https://github.com/consolidation/output-formatters.git",
-                "reference": "a942680232094c4a5b21c0b7e54c20cce623ae19"
+                "reference": "9deeddd6a916d0a756b216a8b40ce1016e17c0b9"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/consolidation/output-formatters/zipball/a942680232094c4a5b21c0b7e54c20cce623ae19",
-                "reference": "a942680232094c4a5b21c0b7e54c20cce623ae19",
+                "url": "https://api.github.com/repos/consolidation/output-formatters/zipball/9deeddd6a916d0a756b216a8b40ce1016e17c0b9",
+                "reference": "9deeddd6a916d0a756b216a8b40ce1016e17c0b9",
                 "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"
+                "php": ">=7.1.3",
+                "symfony/console": "^4|^5",
+                "symfony/finder": "^4|^5"
             },
             "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"
+                "g1a/composer-test-scenarios": "^3",
+                "php-coveralls/php-coveralls": "^2.2",
+                "phpunit/phpunit": "^6",
+                "squizlabs/php_codesniffer": "^3",
+                "symfony/var-dumper": "^4",
+                "symfony/yaml": "^4"
             },
             "suggest": {
                 "symfony/var-dumper": "For using the var_dump formatter"
             },
             "type": "library",
             "extra": {
+                "scenarios": {
+                    "symfony4": {
+                        "require": {
+                            "symfony/console": "^4.0"
+                        },
+                        "config": {
+                            "platform": {
+                                "php": "7.1.3"
+                            }
+                        }
+                    }
+                },
                 "branch-alias": {
-                    "dev-master": "3.x-dev"
+                    "dev-master": "4.x-dev"
                 }
             },
             "autoload": {
@@ -487,58 +423,53 @@
                 }
             ],
             "description": "Format text by applying transformations provided by plug-in formatters.",
-            "time": "2018-10-19T22:35:38+00:00"
+            "time": "2020-05-27T20:51:17+00:00"
         },
         {
             "name": "consolidation/robo",
-            "version": "1.4.6",
+            "version": "2.1.0",
             "source": {
                 "type": "git",
                 "url": "https://github.com/consolidation/Robo.git",
-                "reference": "d4805a1abbc730e9a6d64ede2eba56f91a2b4eb3"
+                "reference": "a0415a2663f6d9426d3cb9013446d3f00225d76d"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/consolidation/Robo/zipball/d4805a1abbc730e9a6d64ede2eba56f91a2b4eb3",
-                "reference": "d4805a1abbc730e9a6d64ede2eba56f91a2b4eb3",
+                "url": "https://api.github.com/repos/consolidation/Robo/zipball/a0415a2663f6d9426d3cb9013446d3f00225d76d",
+                "reference": "a0415a2663f6d9426d3cb9013446d3f00225d76d",
                 "shasum": ""
             },
             "require": {
-                "consolidation/annotated-command": "^2.10.2",
-                "consolidation/config": "^1.0.10",
-                "consolidation/log": "~1",
-                "consolidation/output-formatters": "^3.1.13",
-                "consolidation/self-update": "^1",
-                "grasmash/yaml-expander": "^1.3",
-                "league/container": "^2.2",
-                "php": ">=5.5.0",
-                "symfony/console": "^2.8|^3|^4",
-                "symfony/event-dispatcher": "^2.5|^3|^4",
-                "symfony/filesystem": "^2.5|^3|^4",
-                "symfony/finder": "^2.5|^3|^4",
-                "symfony/process": "^2.5|^3|^4"
+                "consolidation/annotated-command": "^4.1.1",
+                "consolidation/config": "^1.2.1|^2",
+                "consolidation/log": "^1.1.1|^2.0.1",
+                "consolidation/output-formatters": "^4.1.1",
+                "consolidation/self-update": "^1.2",
+                "grasmash/yaml-expander": "^1.4",
+                "league/container": "^2.4.1",
+                "php": ">=7.1.3",
+                "symfony/console": "^4.4.8|^5",
+                "symfony/event-dispatcher": "^4.4.8|^5",
+                "symfony/filesystem": "^4.4.8|^5",
+                "symfony/finder": "^4.4.8|^5",
+                "symfony/process": "^4.4.8|^5"
             },
-            "replace": {
-                "codegyre/robo": "< 1.0"
+            "conflict": {
+                "codegyre/robo": "*"
             },
             "require-dev": {
-                "codeception/aspect-mock": "^1|^2.1.1",
-                "codeception/base": "^2.3.7",
-                "codeception/verify": "^0.3.2",
                 "g1a/composer-test-scenarios": "^3",
-                "goaop/framework": "~2.1.2",
-                "goaop/parser-reflection": "^1.1.0",
                 "natxet/cssmin": "3.0.4",
-                "nikic/php-parser": "^3.1.5",
-                "patchwork/jsqueeze": "~2",
+                "patchwork/jsqueeze": "^2",
                 "pear/archive_tar": "^1.4.4",
-                "php-coveralls/php-coveralls": "^1",
-                "phpunit/php-code-coverage": "~2|~4",
-                "squizlabs/php_codesniffer": "^2.8"
+                "php-coveralls/php-coveralls": "^2.2",
+                "phpdocumentor/reflection-docblock": "^4.3.2",
+                "phpunit/phpunit": "^6.5.14",
+                "squizlabs/php_codesniffer": "^3"
             },
             "suggest": {
                 "henrikbjorn/lurker": "For monitoring filesystem changes in taskWatch",
-                "natxet/CssMin": "For minifying CSS files in taskMinify",
+                "natxet/cssmin": "For minifying CSS files in taskMinify",
                 "patchwork/jsqueeze": "For minifying JS files in taskMinify",
                 "pear/archive_tar": "Allows tar archives to be created and extracted in taskPack and taskExtract, respectively."
             },
@@ -550,28 +481,21 @@
                 "scenarios": {
                     "symfony4": {
                         "require": {
-                            "symfony/console": "^4"
-                        },
-                        "config": {
-                            "platform": {
-                                "php": "7.1.3"
-                            }
-                        }
-                    },
-                    "symfony2": {
-                        "require": {
-                            "symfony/console": "^2.8"
+                            "symfony/console": "^4.4.8",
+                            "symfony/event-dispatcher": "^4.4.8",
+                            "symfony/filesystem": "^4.4.8",
+                            "symfony/finder": "^4.4.8",
+                            "symfony/process": "^4.4.8",
+                            "phpunit/phpunit": "^6",
+                            "nikic/php-parser": "^2"
                         },
                         "remove": [
-                            "goaop/framework"
+                            "codeception/phpunit-wrapper"
                         ],
                         "config": {
                             "platform": {
-                                "php": "5.5.9"
+                                "php": "7.1.3"
                             }
-                        },
-                        "scenario-options": {
-                            "create-lockfile": "false"
                         }
                     }
                 },
@@ -595,26 +519,26 @@
                 }
             ],
             "description": "Modern task runner",
-            "time": "2019-02-17T05:32:27+00:00"
+            "time": "2020-05-27T22:03:57+00:00"
         },
         {
             "name": "consolidation/self-update",
-            "version": "1.1.5",
+            "version": "1.2.0",
             "source": {
                 "type": "git",
                 "url": "https://github.com/consolidation/self-update.git",
-                "reference": "a1c273b14ce334789825a09d06d4c87c0a02ad54"
+                "reference": "dba6b2c0708f20fa3ba8008a2353b637578849b4"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/consolidation/self-update/zipball/a1c273b14ce334789825a09d06d4c87c0a02ad54",
-                "reference": "a1c273b14ce334789825a09d06d4c87c0a02ad54",
+                "url": "https://api.github.com/repos/consolidation/self-update/zipball/dba6b2c0708f20fa3ba8008a2353b637578849b4",
+                "reference": "dba6b2c0708f20fa3ba8008a2353b637578849b4",
                 "shasum": ""
             },
             "require": {
                 "php": ">=5.5.0",
-                "symfony/console": "^2.8|^3|^4",
-                "symfony/filesystem": "^2.5|^3|^4"
+                "symfony/console": "^2.8|^3|^4|^5",
+                "symfony/filesystem": "^2.5|^3|^4|^5"
             },
             "bin": [
                 "scripts/release"
@@ -635,17 +559,17 @@
                 "MIT"
             ],
             "authors": [
-                {
-                    "name": "Greg Anderson",
-                    "email": "greg.1.anderson@greenknowe.org"
-                },
                 {
                     "name": "Alexander Menk",
                     "email": "menk@mestrona.net"
+                },
+                {
+                    "name": "Greg Anderson",
+                    "email": "greg.1.anderson@greenknowe.org"
                 }
             ],
             "description": "Provides a self:update command for Symfony Console applications.",
-            "time": "2018-10-28T01:52:03+00:00"
+            "time": "2020-04-13T02:49:20+00:00"
         },
         {
             "name": "container-interop/container-interop",
@@ -676,36 +600,39 @@
             ],
             "description": "Promoting the interoperability of container objects (DIC, SL, etc.)",
             "homepage": "https://github.com/container-interop/container-interop",
+            "abandoned": "psr/container",
             "time": "2017-02-14T19:40:03+00:00"
         },
         {
             "name": "doctrine/instantiator",
-            "version": "1.0.5",
+            "version": "1.3.0",
             "source": {
                 "type": "git",
                 "url": "https://github.com/doctrine/instantiator.git",
-                "reference": "8e884e78f9f0eb1329e445619e04456e64d8051d"
+                "reference": "ae466f726242e637cebdd526a7d991b9433bacf1"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/doctrine/instantiator/zipball/8e884e78f9f0eb1329e445619e04456e64d8051d",
-                "reference": "8e884e78f9f0eb1329e445619e04456e64d8051d",
+                "url": "https://api.github.com/repos/doctrine/instantiator/zipball/ae466f726242e637cebdd526a7d991b9433bacf1",
+                "reference": "ae466f726242e637cebdd526a7d991b9433bacf1",
                 "shasum": ""
             },
             "require": {
-                "php": ">=5.3,<8.0-DEV"
+                "php": "^7.1"
             },
             "require-dev": {
-                "athletic/athletic": "~0.1.8",
+                "doctrine/coding-standard": "^6.0",
                 "ext-pdo": "*",
                 "ext-phar": "*",
-                "phpunit/phpunit": "~4.0",
-                "squizlabs/php_codesniffer": "~2.0"
+                "phpbench/phpbench": "^0.13",
+                "phpstan/phpstan-phpunit": "^0.11",
+                "phpstan/phpstan-shim": "^0.11",
+                "phpunit/phpunit": "^7.0"
             },
             "type": "library",
             "extra": {
                 "branch-alias": {
-                    "dev-master": "1.0.x-dev"
+                    "dev-master": "1.2.x-dev"
                 }
             },
             "autoload": {
@@ -725,25 +652,25 @@
                 }
             ],
             "description": "A small, lightweight utility to instantiate objects in PHP without invoking their constructors",
-            "homepage": "https://github.com/doctrine/instantiator",
+            "homepage": "https://www.doctrine-project.org/projects/instantiator.html",
             "keywords": [
                 "constructor",
                 "instantiate"
             ],
-            "time": "2015-06-14T21:17:01+00:00"
+            "time": "2019-10-21T16:45:58+00:00"
         },
         {
             "name": "g1a/composer-test-scenarios",
-            "version": "3.0.2",
+            "version": "3.0.4",
             "source": {
                 "type": "git",
                 "url": "https://github.com/g1a/composer-test-scenarios.git",
-                "reference": "28f932580981e912ab8f01d15788f1dee06550c8"
+                "reference": "78225430d4a5caf8e06b87d04149f8a9ace9368c"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/g1a/composer-test-scenarios/zipball/28f932580981e912ab8f01d15788f1dee06550c8",
-                "reference": "28f932580981e912ab8f01d15788f1dee06550c8",
+                "url": "https://api.github.com/repos/g1a/composer-test-scenarios/zipball/78225430d4a5caf8e06b87d04149f8a9ace9368c",
+                "reference": "78225430d4a5caf8e06b87d04149f8a9ace9368c",
                 "shasum": ""
             },
             "require": {
@@ -782,7 +709,7 @@
                 }
             ],
             "description": "Useful scripts for testing multiple sets of Composer dependencies.",
-            "time": "2019-02-11T20:22:44+00:00"
+            "time": "2019-09-13T01:24:52+00:00"
         },
         {
             "name": "grasmash/yaml-expander",
@@ -832,122 +759,31 @@
             "description": "Expands internal property references in a yaml file.",
             "time": "2017-12-16T16:06:03+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": "guzzlehttp/guzzle",
-            "version": "6.3.3",
+            "version": "6.5.4",
             "source": {
                 "type": "git",
                 "url": "https://github.com/guzzle/guzzle.git",
-                "reference": "407b0cb880ace85c9b63c5f9551db498cb2d50ba"
+                "reference": "a4a1b6930528a8f7ee03518e6442ec7a44155d9d"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/guzzle/guzzle/zipball/407b0cb880ace85c9b63c5f9551db498cb2d50ba",
-                "reference": "407b0cb880ace85c9b63c5f9551db498cb2d50ba",
+                "url": "https://api.github.com/repos/guzzle/guzzle/zipball/a4a1b6930528a8f7ee03518e6442ec7a44155d9d",
+                "reference": "a4a1b6930528a8f7ee03518e6442ec7a44155d9d",
                 "shasum": ""
             },
             "require": {
+                "ext-json": "*",
                 "guzzlehttp/promises": "^1.0",
-                "guzzlehttp/psr7": "^1.4",
-                "php": ">=5.5"
+                "guzzlehttp/psr7": "^1.6.1",
+                "php": ">=5.5",
+                "symfony/polyfill-intl-idn": "1.17.0"
             },
             "require-dev": {
                 "ext-curl": "*",
                 "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.4 || ^7.0",
-                "psr/log": "^1.0"
+                "psr/log": "^1.1"
             },
             "suggest": {
                 "psr/log": "Required for using the Log middleware"
@@ -955,16 +791,16 @@
             "type": "library",
             "extra": {
                 "branch-alias": {
-                    "dev-master": "6.3-dev"
+                    "dev-master": "6.5-dev"
                 }
             },
             "autoload": {
-                "files": [
-                    "src/functions_include.php"
-                ],
                 "psr-4": {
                     "GuzzleHttp\\": "src/"
-                }
+                },
+                "files": [
+                    "src/functions_include.php"
+                ]
             },
             "notification-url": "https://packagist.org/downloads/",
             "license": [
@@ -988,7 +824,7 @@
                 "rest",
                 "web service"
             ],
-            "time": "2018-04-22T15:46:56+00:00"
+            "time": "2020-05-25T19:35:05+00:00"
         },
         {
             "name": "guzzlehttp/promises",
@@ -1043,33 +879,37 @@
         },
         {
             "name": "guzzlehttp/psr7",
-            "version": "1.5.2",
+            "version": "1.6.1",
             "source": {
                 "type": "git",
                 "url": "https://github.com/guzzle/psr7.git",
-                "reference": "9f83dded91781a01c63574e387eaa769be769115"
+                "reference": "239400de7a173fe9901b9ac7c06497751f00727a"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/guzzle/psr7/zipball/9f83dded91781a01c63574e387eaa769be769115",
-                "reference": "9f83dded91781a01c63574e387eaa769be769115",
+                "url": "https://api.github.com/repos/guzzle/psr7/zipball/239400de7a173fe9901b9ac7c06497751f00727a",
+                "reference": "239400de7a173fe9901b9ac7c06497751f00727a",
                 "shasum": ""
             },
             "require": {
                 "php": ">=5.4.0",
                 "psr/http-message": "~1.0",
-                "ralouphie/getallheaders": "^2.0.5"
+                "ralouphie/getallheaders": "^2.0.5 || ^3.0.0"
             },
             "provide": {
                 "psr/http-message-implementation": "1.0"
             },
             "require-dev": {
+                "ext-zlib": "*",
                 "phpunit/phpunit": "~4.8.36 || ^5.7.27 || ^6.5.8"
             },
+            "suggest": {
+                "zendframework/zend-httphandlerrunner": "Emit PSR-7 responses"
+            },
             "type": "library",
             "extra": {
                 "branch-alias": {
-                    "dev-master": "1.5-dev"
+                    "dev-master": "1.6-dev"
                 }
             },
             "autoload": {
@@ -1106,43 +946,43 @@
                 "uri",
                 "url"
             ],
-            "time": "2018-12-04T20:46:45+00:00"
+            "time": "2019-07-01T23:21:34+00:00"
         },
         {
             "name": "knplabs/github-api",
-            "version": "2.11.0",
+            "version": "v2.14.0",
             "source": {
                 "type": "git",
                 "url": "https://github.com/KnpLabs/php-github-api.git",
-                "reference": "7e67b4ccf9ef62fbd6321a314c61d3202c07b855"
+                "reference": "953c9b453d3258a97755ec3557d112f271176f74"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/KnpLabs/php-github-api/zipball/7e67b4ccf9ef62fbd6321a314c61d3202c07b855",
-                "reference": "7e67b4ccf9ef62fbd6321a314c61d3202c07b855",
+                "url": "https://api.github.com/repos/KnpLabs/php-github-api/zipball/953c9b453d3258a97755ec3557d112f271176f74",
+                "reference": "953c9b453d3258a97755ec3557d112f271176f74",
                 "shasum": ""
             },
             "require": {
-                "php": "^5.6 || ^7.0",
+                "php": "^7.1",
                 "php-http/cache-plugin": "^1.4",
-                "php-http/client-common": "^1.6",
+                "php-http/client-common": "^1.6 || ^2.0",
                 "php-http/client-implementation": "^1.0",
                 "php-http/discovery": "^1.0",
-                "php-http/httplug": "^1.1",
+                "php-http/httplug": "^1.1 || ^2.0",
                 "psr/cache": "^1.0",
                 "psr/http-message": "^1.0"
             },
             "require-dev": {
                 "cache/array-adapter": "^0.4",
                 "guzzlehttp/psr7": "^1.2",
-                "php-http/guzzle6-adapter": "^1.0",
-                "php-http/mock-client": "^1.0",
-                "phpunit/phpunit": "^5.5 || ^6.0"
+                "php-http/guzzle6-adapter": "^1.0 || ^2.0",
+                "php-http/mock-client": "^1.2",
+                "phpunit/phpunit": "^7.0 || ^8.0"
             },
             "type": "library",
             "extra": {
                 "branch-alias": {
-                    "dev-master": "2.11.x-dev"
+                    "dev-master": "2.14.x-dev"
                 }
             },
             "autoload": {
@@ -1155,14 +995,14 @@
                 "MIT"
             ],
             "authors": [
+                {
+                    "name": "KnpLabs Team",
+                    "homepage": "http://knplabs.com"
+                },
                 {
                     "name": "Thibault Duplessis",
                     "email": "thibault.duplessis@gmail.com",
                     "homepage": "http://ornicar.github.com"
-                },
-                {
-                    "name": "KnpLabs Team",
-                    "homepage": "http://knplabs.com"
                 }
             ],
             "description": "GitHub API v3 client",
@@ -1173,7 +1013,7 @@
                 "gist",
                 "github"
             ],
-            "time": "2019-01-28T19:31:35+00:00"
+            "time": "2020-04-25T20:36:03+00:00"
         },
         {
             "name": "league/container",
@@ -1242,25 +1082,28 @@
         },
         {
             "name": "myclabs/deep-copy",
-            "version": "1.7.0",
+            "version": "1.9.5",
             "source": {
                 "type": "git",
                 "url": "https://github.com/myclabs/DeepCopy.git",
-                "reference": "3b8a3a99ba1f6a3952ac2747d989303cbd6b7a3e"
+                "reference": "b2c28789e80a97badd14145fda39b545d83ca3ef"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/3b8a3a99ba1f6a3952ac2747d989303cbd6b7a3e",
-                "reference": "3b8a3a99ba1f6a3952ac2747d989303cbd6b7a3e",
+                "url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/b2c28789e80a97badd14145fda39b545d83ca3ef",
+                "reference": "b2c28789e80a97badd14145fda39b545d83ca3ef",
                 "shasum": ""
             },
             "require": {
-                "php": "^5.6 || ^7.0"
+                "php": "^7.1"
+            },
+            "replace": {
+                "myclabs/deep-copy": "self.version"
             },
             "require-dev": {
                 "doctrine/collections": "^1.0",
                 "doctrine/common": "^2.6",
-                "phpunit/phpunit": "^4.1"
+                "phpunit/phpunit": "^7.1"
             },
             "type": "library",
             "autoload": {
@@ -1283,7 +1126,7 @@
                 "object",
                 "object graph"
             ],
-            "time": "2017-10-19T19:58:43+00:00"
+            "time": "2020-01-17T21:11:47+00:00"
         },
         {
             "name": "phar-io/manifest",
@@ -1389,28 +1232,28 @@
         },
         {
             "name": "php-coveralls/php-coveralls",
-            "version": "v1.1.0",
+            "version": "v2.2.0",
             "source": {
                 "type": "git",
                 "url": "https://github.com/php-coveralls/php-coveralls.git",
-                "reference": "37f8f83fe22224eb9d9c6d593cdeb33eedd2a9ad"
+                "reference": "3e6420fa666ef7bae5e750ddeac903153e193bae"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/php-coveralls/php-coveralls/zipball/37f8f83fe22224eb9d9c6d593cdeb33eedd2a9ad",
-                "reference": "37f8f83fe22224eb9d9c6d593cdeb33eedd2a9ad",
+                "url": "https://api.github.com/repos/php-coveralls/php-coveralls/zipball/3e6420fa666ef7bae5e750ddeac903153e193bae",
+                "reference": "3e6420fa666ef7bae5e750ddeac903153e193bae",
                 "shasum": ""
             },
             "require": {
                 "ext-json": "*",
                 "ext-simplexml": "*",
-                "guzzle/guzzle": "^2.8 || ^3.0",
-                "php": "^5.3.3 || ^7.0",
+                "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"
+                "symfony/config": "^2.1 || ^3.0 || ^4.0 || ^5.0",
+                "symfony/console": "^2.1 || ^3.0 || ^4.0 || ^5.0",
+                "symfony/stopwatch": "^2.0 || ^3.0 || ^4.0 || ^5.0",
+                "symfony/yaml": "^2.0.5 || ^3.0 || ^4.0 || ^5.0"
             },
             "require-dev": {
                 "phpunit/phpunit": "^4.8.35 || ^5.4.3 || ^6.0"
@@ -1419,12 +1262,17 @@
                 "symfony/http-kernel": "Allows Symfony integration"
             },
             "bin": [
-                "bin/coveralls"
+                "bin/php-coveralls"
             ],
             "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "2.2-dev"
+                }
+            },
             "autoload": {
                 "psr-4": {
-                    "Satooshi\\": "src/Satooshi/"
+                    "PhpCoveralls\\": "src/"
                 }
             },
             "notification-url": "https://packagist.org/downloads/",
@@ -1435,7 +1283,24 @@
                 {
                     "name": "Kitamura Satoshi",
                     "email": "with.no.parachute@gmail.com",
-                    "homepage": "https://www.facebook.com/satooshi.jp"
+                    "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",
@@ -1446,28 +1311,28 @@
                 "github",
                 "test"
             ],
-            "time": "2017-12-06T23:17:56+00:00"
+            "time": "2019-11-20T16:29:20+00:00"
         },
         {
             "name": "php-http/cache-plugin",
-            "version": "1.6.0",
+            "version": "1.7.0",
             "source": {
                 "type": "git",
                 "url": "https://github.com/php-http/cache-plugin.git",
-                "reference": "8e2505d2090316fac7cce637b39b6bbb5249c5a8"
+                "reference": "d137d46523343297e340cef697747381b6caeb66"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/php-http/cache-plugin/zipball/8e2505d2090316fac7cce637b39b6bbb5249c5a8",
-                "reference": "8e2505d2090316fac7cce637b39b6bbb5249c5a8",
+                "url": "https://api.github.com/repos/php-http/cache-plugin/zipball/d137d46523343297e340cef697747381b6caeb66",
+                "reference": "d137d46523343297e340cef697747381b6caeb66",
                 "shasum": ""
             },
             "require": {
-                "php": "^5.4 || ^7.0",
+                "php": "^7.1",
                 "php-http/client-common": "^1.9 || ^2.0",
                 "php-http/message-factory": "^1.0",
                 "psr/cache": "^1.0",
-                "symfony/options-resolver": "^2.6 || ^3.0 || ^4.0"
+                "symfony/options-resolver": "^2.6 || ^3.0 || ^4.0 || ^5.0"
             },
             "require-dev": {
                 "henrikbjorn/phpspec-code-coverage": "^1.0",
@@ -1502,20 +1367,20 @@
                 "httplug",
                 "plugin"
             ],
-            "time": "2019-01-23T16:51:58+00:00"
+            "time": "2019-12-26T16:14:58+00:00"
         },
         {
             "name": "php-http/client-common",
-            "version": "1.9.1",
+            "version": "1.10.0",
             "source": {
                 "type": "git",
                 "url": "https://github.com/php-http/client-common.git",
-                "reference": "0e156a12cc3e46f590c73bf57592a2252fc3dc48"
+                "reference": "c0390ae3c8f2ae9d50901feef0127fb9e396f6b4"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/php-http/client-common/zipball/0e156a12cc3e46f590c73bf57592a2252fc3dc48",
-                "reference": "0e156a12cc3e46f590c73bf57592a2252fc3dc48",
+                "url": "https://api.github.com/repos/php-http/client-common/zipball/c0390ae3c8f2ae9d50901feef0127fb9e396f6b4",
+                "reference": "c0390ae3c8f2ae9d50901feef0127fb9e396f6b4",
                 "shasum": ""
             },
             "require": {
@@ -1523,7 +1388,7 @@
                 "php-http/httplug": "^1.1",
                 "php-http/message": "^1.6",
                 "php-http/message-factory": "^1.0",
-                "symfony/options-resolver": "^2.6 || ^3.0 || ^4.0"
+                "symfony/options-resolver": "^2.6 || ^3.0 || ^4.0 || ^5.0"
             },
             "require-dev": {
                 "guzzlehttp/psr7": "^1.4",
@@ -1537,7 +1402,7 @@
             "type": "library",
             "extra": {
                 "branch-alias": {
-                    "dev-master": "1.9.x-dev"
+                    "dev-master": "1.10.x-dev"
                 }
             },
             "autoload": {
@@ -1563,32 +1428,33 @@
                 "http",
                 "httplug"
             ],
-            "time": "2019-02-02T07:03:15+00:00"
+            "time": "2019-11-18T08:54:36+00:00"
         },
         {
             "name": "php-http/discovery",
-            "version": "1.6.1",
+            "version": "1.7.4",
             "source": {
                 "type": "git",
                 "url": "https://github.com/php-http/discovery.git",
-                "reference": "684855f2c2e9d0a61868b8f8d6bd0295c8a4b651"
+                "reference": "82dbef649ccffd8e4f22e1953c3a5265992b83c0"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/php-http/discovery/zipball/684855f2c2e9d0a61868b8f8d6bd0295c8a4b651",
-                "reference": "684855f2c2e9d0a61868b8f8d6bd0295c8a4b651",
+                "url": "https://api.github.com/repos/php-http/discovery/zipball/82dbef649ccffd8e4f22e1953c3a5265992b83c0",
+                "reference": "82dbef649ccffd8e4f22e1953c3a5265992b83c0",
                 "shasum": ""
             },
             "require": {
-                "php": "^5.5 || ^7.0"
+                "php": "^7.1"
             },
             "conflict": {
                 "nyholm/psr7": "<1.0"
             },
             "require-dev": {
+                "akeneo/phpspec-skip-example-extension": "^4.0",
                 "php-http/httplug": "^1.0 || ^2.0",
                 "php-http/message-factory": "^1.0",
-                "phpspec/phpspec": "^2.4",
+                "phpspec/phpspec": "^5.1",
                 "puli/composer-plugin": "1.0.0-beta10"
             },
             "suggest": {
@@ -1598,7 +1464,7 @@
             "type": "library",
             "extra": {
                 "branch-alias": {
-                    "dev-master": "1.5-dev"
+                    "dev-master": "1.7-dev"
                 }
             },
             "autoload": {
@@ -1627,7 +1493,7 @@
                 "message",
                 "psr7"
             ],
-            "time": "2019-02-23T07:42:53+00:00"
+            "time": "2020-01-03T11:25:47+00:00"
         },
         {
             "name": "php-http/guzzle6-adapter",
@@ -1747,21 +1613,21 @@
         },
         {
             "name": "php-http/message",
-            "version": "1.7.2",
+            "version": "1.8.0",
             "source": {
                 "type": "git",
                 "url": "https://github.com/php-http/message.git",
-                "reference": "b159ffe570dffd335e22ef0b91a946eacb182fa1"
+                "reference": "ce8f43ac1e294b54aabf5808515c3554a19c1e1c"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/php-http/message/zipball/b159ffe570dffd335e22ef0b91a946eacb182fa1",
-                "reference": "b159ffe570dffd335e22ef0b91a946eacb182fa1",
+                "url": "https://api.github.com/repos/php-http/message/zipball/ce8f43ac1e294b54aabf5808515c3554a19c1e1c",
+                "reference": "ce8f43ac1e294b54aabf5808515c3554a19c1e1c",
                 "shasum": ""
             },
             "require": {
                 "clue/stream-filter": "^1.4",
-                "php": "^5.4 || ^7.0",
+                "php": "^7.1",
                 "php-http/message-factory": "^1.0.2",
                 "psr/http-message": "^1.0"
             },
@@ -1787,7 +1653,7 @@
             "type": "library",
             "extra": {
                 "branch-alias": {
-                    "dev-master": "1.6-dev"
+                    "dev-master": "1.8-dev"
                 }
             },
             "autoload": {
@@ -1815,7 +1681,7 @@
                 "message",
                 "psr-7"
             ],
-            "time": "2018-11-01T09:32:41+00:00"
+            "time": "2019-08-05T06:55:08+00:00"
         },
         {
             "name": "php-http/message-factory",
@@ -1919,35 +1785,30 @@
         },
         {
             "name": "phpdocumentor/reflection-common",
-            "version": "1.0.1",
+            "version": "2.1.0",
             "source": {
                 "type": "git",
                 "url": "https://github.com/phpDocumentor/ReflectionCommon.git",
-                "reference": "21bdeb5f65d7ebf9f43b1b25d404f87deab5bfb6"
+                "reference": "6568f4687e5b41b054365f9ae03fcb1ed5f2069b"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/phpDocumentor/ReflectionCommon/zipball/21bdeb5f65d7ebf9f43b1b25d404f87deab5bfb6",
-                "reference": "21bdeb5f65d7ebf9f43b1b25d404f87deab5bfb6",
+                "url": "https://api.github.com/repos/phpDocumentor/ReflectionCommon/zipball/6568f4687e5b41b054365f9ae03fcb1ed5f2069b",
+                "reference": "6568f4687e5b41b054365f9ae03fcb1ed5f2069b",
                 "shasum": ""
             },
             "require": {
-                "php": ">=5.5"
-            },
-            "require-dev": {
-                "phpunit/phpunit": "^4.6"
+                "php": ">=7.1"
             },
             "type": "library",
             "extra": {
                 "branch-alias": {
-                    "dev-master": "1.0.x-dev"
+                    "dev-master": "2.x-dev"
                 }
             },
             "autoload": {
                 "psr-4": {
-                    "phpDocumentor\\Reflection\\": [
-                        "src"
-                    ]
+                    "phpDocumentor\\Reflection\\": "src/"
                 }
             },
             "notification-url": "https://packagist.org/downloads/",
@@ -1969,44 +1830,42 @@
                 "reflection",
                 "static analysis"
             ],
-            "time": "2017-09-11T18:02:19+00:00"
+            "time": "2020-04-27T09:25:28+00:00"
         },
         {
             "name": "phpdocumentor/reflection-docblock",
-            "version": "4.3.0",
+            "version": "5.1.0",
             "source": {
                 "type": "git",
                 "url": "https://github.com/phpDocumentor/ReflectionDocBlock.git",
-                "reference": "94fd0001232e47129dd3504189fa1c7225010d08"
+                "reference": "cd72d394ca794d3466a3b2fc09d5a6c1dc86b47e"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/phpDocumentor/ReflectionDocBlock/zipball/94fd0001232e47129dd3504189fa1c7225010d08",
-                "reference": "94fd0001232e47129dd3504189fa1c7225010d08",
+                "url": "https://api.github.com/repos/phpDocumentor/ReflectionDocBlock/zipball/cd72d394ca794d3466a3b2fc09d5a6c1dc86b47e",
+                "reference": "cd72d394ca794d3466a3b2fc09d5a6c1dc86b47e",
                 "shasum": ""
             },
             "require": {
-                "php": "^7.0",
-                "phpdocumentor/reflection-common": "^1.0.0",
-                "phpdocumentor/type-resolver": "^0.4.0",
-                "webmozart/assert": "^1.0"
+                "ext-filter": "^7.1",
+                "php": "^7.2",
+                "phpdocumentor/reflection-common": "^2.0",
+                "phpdocumentor/type-resolver": "^1.0",
+                "webmozart/assert": "^1"
             },
             "require-dev": {
-                "doctrine/instantiator": "~1.0.5",
-                "mockery/mockery": "^1.0",
-                "phpunit/phpunit": "^6.4"
+                "doctrine/instantiator": "^1",
+                "mockery/mockery": "^1"
             },
             "type": "library",
             "extra": {
                 "branch-alias": {
-                    "dev-master": "4.x-dev"
+                    "dev-master": "5.x-dev"
                 }
             },
             "autoload": {
                 "psr-4": {
-                    "phpDocumentor\\Reflection\\": [
-                        "src/"
-                    ]
+                    "phpDocumentor\\Reflection\\": "src"
                 }
             },
             "notification-url": "https://packagist.org/downloads/",
@@ -2017,44 +1876,46 @@
                 {
                     "name": "Mike van Riel",
                     "email": "me@mikevanriel.com"
+                },
+                {
+                    "name": "Jaap van Otterdijk",
+                    "email": "account@ijaap.nl"
                 }
             ],
             "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"
+            "time": "2020-02-22T12:28:44+00:00"
         },
         {
             "name": "phpdocumentor/type-resolver",
-            "version": "0.4.0",
+            "version": "1.1.0",
             "source": {
                 "type": "git",
                 "url": "https://github.com/phpDocumentor/TypeResolver.git",
-                "reference": "9c977708995954784726e25d0cd1dddf4e65b0f7"
+                "reference": "7462d5f123dfc080dfdf26897032a6513644fc95"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/phpDocumentor/TypeResolver/zipball/9c977708995954784726e25d0cd1dddf4e65b0f7",
-                "reference": "9c977708995954784726e25d0cd1dddf4e65b0f7",
+                "url": "https://api.github.com/repos/phpDocumentor/TypeResolver/zipball/7462d5f123dfc080dfdf26897032a6513644fc95",
+                "reference": "7462d5f123dfc080dfdf26897032a6513644fc95",
                 "shasum": ""
             },
             "require": {
-                "php": "^5.5 || ^7.0",
-                "phpdocumentor/reflection-common": "^1.0"
+                "php": "^7.2",
+                "phpdocumentor/reflection-common": "^2.0"
             },
             "require-dev": {
-                "mockery/mockery": "^0.9.4",
-                "phpunit/phpunit": "^5.2||^4.8.24"
+                "ext-tokenizer": "^7.2",
+                "mockery/mockery": "~1"
             },
             "type": "library",
             "extra": {
                 "branch-alias": {
-                    "dev-master": "1.0.x-dev"
+                    "dev-master": "1.x-dev"
                 }
             },
             "autoload": {
                 "psr-4": {
-                    "phpDocumentor\\Reflection\\": [
-                        "src/"
-                    ]
+                    "phpDocumentor\\Reflection\\": "src"
                 }
             },
             "notification-url": "https://packagist.org/downloads/",
@@ -2067,42 +1928,43 @@
                     "email": "me@mikevanriel.com"
                 }
             ],
-            "time": "2017-07-14T14:27:02+00:00"
+            "description": "A PSR-5 based resolver of Class names, Types and Structural Element Names",
+            "time": "2020-02-18T18:59:58+00:00"
         },
         {
             "name": "phpspec/prophecy",
-            "version": "1.8.0",
+            "version": "v1.10.3",
             "source": {
                 "type": "git",
                 "url": "https://github.com/phpspec/prophecy.git",
-                "reference": "4ba436b55987b4bf311cb7c6ba82aa528aac0a06"
+                "reference": "451c3cd1418cf640de218914901e51b064abb093"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/phpspec/prophecy/zipball/4ba436b55987b4bf311cb7c6ba82aa528aac0a06",
-                "reference": "4ba436b55987b4bf311cb7c6ba82aa528aac0a06",
+                "url": "https://api.github.com/repos/phpspec/prophecy/zipball/451c3cd1418cf640de218914901e51b064abb093",
+                "reference": "451c3cd1418cf640de218914901e51b064abb093",
                 "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"
+                "phpdocumentor/reflection-docblock": "^2.0|^3.0.2|^4.0|^5.0",
+                "sebastian/comparator": "^1.2.3|^2.0|^3.0|^4.0",
+                "sebastian/recursion-context": "^1.0|^2.0|^3.0|^4.0"
             },
             "require-dev": {
-                "phpspec/phpspec": "^2.5|^3.2",
+                "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"
+                    "dev-master": "1.10.x-dev"
                 }
             },
             "autoload": {
-                "psr-0": {
-                    "Prophecy\\": "src/"
+                "psr-4": {
+                    "Prophecy\\": "src/Prophecy"
                 }
             },
             "notification-url": "https://packagist.org/downloads/",
@@ -2130,7 +1992,7 @@
                 "spy",
                 "stub"
             ],
-            "time": "2018-08-05T17:53:17+00:00"
+            "time": "2020-03-05T15:02:03+00:00"
         },
         {
             "name": "phpunit/php-code-coverage",
@@ -2621,21 +2483,21 @@
             "time": "2017-02-14T16:28:37+00:00"
         },
         {
-            "name": "psr/http-message",
-            "version": "1.0.1",
+            "name": "psr/event-dispatcher",
+            "version": "1.0.0",
             "source": {
                 "type": "git",
-                "url": "https://github.com/php-fig/http-message.git",
-                "reference": "f6561bf28d520154e4b0ec72be95418abe6d9363"
+                "url": "https://github.com/php-fig/event-dispatcher.git",
+                "reference": "dbefd12671e8a14ec7f180cab83036ed26714bb0"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/php-fig/http-message/zipball/f6561bf28d520154e4b0ec72be95418abe6d9363",
-                "reference": "f6561bf28d520154e4b0ec72be95418abe6d9363",
+                "url": "https://api.github.com/repos/php-fig/event-dispatcher/zipball/dbefd12671e8a14ec7f180cab83036ed26714bb0",
+                "reference": "dbefd12671e8a14ec7f180cab83036ed26714bb0",
                 "shasum": ""
             },
             "require": {
-                "php": ">=5.3.0"
+                "php": ">=7.2.0"
             },
             "type": "library",
             "extra": {
@@ -2645,7 +2507,7 @@
             },
             "autoload": {
                 "psr-4": {
-                    "Psr\\Http\\Message\\": "src/"
+                    "Psr\\EventDispatcher\\": "src/"
                 }
             },
             "notification-url": "https://packagist.org/downloads/",
@@ -2658,30 +2520,26 @@
                     "homepage": "http://www.php-fig.org/"
                 }
             ],
-            "description": "Common interface for HTTP messages",
-            "homepage": "https://github.com/php-fig/http-message",
+            "description": "Standard interfaces for event handling.",
             "keywords": [
-                "http",
-                "http-message",
+                "events",
                 "psr",
-                "psr-7",
-                "request",
-                "response"
+                "psr-14"
             ],
-            "time": "2016-08-06T14:39:51+00:00"
+            "time": "2019-01-08T18:20:26+00:00"
         },
         {
-            "name": "psr/log",
-            "version": "1.1.0",
+            "name": "psr/http-message",
+            "version": "1.0.1",
             "source": {
                 "type": "git",
-                "url": "https://github.com/php-fig/log.git",
-                "reference": "6c001f1daafa3a3ac1d8ff69ee4db8e799a654dd"
+                "url": "https://github.com/php-fig/http-message.git",
+                "reference": "f6561bf28d520154e4b0ec72be95418abe6d9363"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/php-fig/log/zipball/6c001f1daafa3a3ac1d8ff69ee4db8e799a654dd",
-                "reference": "6c001f1daafa3a3ac1d8ff69ee4db8e799a654dd",
+                "url": "https://api.github.com/repos/php-fig/http-message/zipball/f6561bf28d520154e4b0ec72be95418abe6d9363",
+                "reference": "f6561bf28d520154e4b0ec72be95418abe6d9363",
                 "shasum": ""
             },
             "require": {
@@ -2695,7 +2553,7 @@
             },
             "autoload": {
                 "psr-4": {
-                    "Psr\\Log\\": "Psr/Log/"
+                    "Psr\\Http\\Message\\": "src/"
                 }
             },
             "notification-url": "https://packagist.org/downloads/",
@@ -2708,35 +2566,85 @@
                     "homepage": "http://www.php-fig.org/"
                 }
             ],
-            "description": "Common interface for logging libraries",
-            "homepage": "https://github.com/php-fig/log",
-            "keywords": [
+            "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": "psr/log",
+            "version": "1.1.3",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/php-fig/log.git",
+                "reference": "0f73288fd15629204f9d42b7055f72dacbe811fc"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/php-fig/log/zipball/0f73288fd15629204f9d42b7055f72dacbe811fc",
+                "reference": "0f73288fd15629204f9d42b7055f72dacbe811fc",
+                "shasum": ""
+            },
+            "require": {
+                "php": ">=5.3.0"
+            },
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "1.1.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"
+            "time": "2020-03-23T09:12:05+00:00"
         },
         {
             "name": "ralouphie/getallheaders",
-            "version": "2.0.5",
+            "version": "3.0.3",
             "source": {
                 "type": "git",
                 "url": "https://github.com/ralouphie/getallheaders.git",
-                "reference": "5601c8a83fbba7ef674a7369456d12f1e0d0eafa"
+                "reference": "120b605dfeb996808c31b6477290a714d356e822"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/ralouphie/getallheaders/zipball/5601c8a83fbba7ef674a7369456d12f1e0d0eafa",
-                "reference": "5601c8a83fbba7ef674a7369456d12f1e0d0eafa",
+                "url": "https://api.github.com/repos/ralouphie/getallheaders/zipball/120b605dfeb996808c31b6477290a714d356e822",
+                "reference": "120b605dfeb996808c31b6477290a714d356e822",
                 "shasum": ""
             },
             "require": {
-                "php": ">=5.3"
+                "php": ">=5.6"
             },
             "require-dev": {
-                "phpunit/phpunit": "~3.7.0",
-                "satooshi/php-coveralls": ">=1.0"
+                "php-coveralls/php-coveralls": "^2.1",
+                "phpunit/phpunit": "^5 || ^6.5"
             },
             "type": "library",
             "autoload": {
@@ -2755,7 +2663,7 @@
                 }
             ],
             "description": "A polyfill for getallheaders.",
-            "time": "2016-02-11T07:05:27+00:00"
+            "time": "2019-03-08T08:55:37+00:00"
         },
         {
             "name": "sebastian/code-unit-reverse-lookup",
@@ -2970,16 +2878,16 @@
         },
         {
             "name": "sebastian/exporter",
-            "version": "3.1.0",
+            "version": "3.1.2",
             "source": {
                 "type": "git",
                 "url": "https://github.com/sebastianbergmann/exporter.git",
-                "reference": "234199f4528de6d12aaa58b612e98f7d36adb937"
+                "reference": "68609e1261d215ea5b21b7987539cbfbe156ec3e"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/234199f4528de6d12aaa58b612e98f7d36adb937",
-                "reference": "234199f4528de6d12aaa58b612e98f7d36adb937",
+                "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/68609e1261d215ea5b21b7987539cbfbe156ec3e",
+                "reference": "68609e1261d215ea5b21b7987539cbfbe156ec3e",
                 "shasum": ""
             },
             "require": {
@@ -3006,6 +2914,10 @@
                 "BSD-3-Clause"
             ],
             "authors": [
+                {
+                    "name": "Sebastian Bergmann",
+                    "email": "sebastian@phpunit.de"
+                },
                 {
                     "name": "Jeff Welch",
                     "email": "whatthejeff@gmail.com"
@@ -3014,17 +2926,13 @@
                     "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"
+                },
+                {
+                    "name": "Bernhard Schussek",
+                    "email": "bschussek@gmail.com"
                 }
             ],
             "description": "Provides the functionality to export PHP variables for visualization",
@@ -3033,7 +2941,7 @@
                 "export",
                 "exporter"
             ],
-            "time": "2017-04-03T13:19:02+00:00"
+            "time": "2019-09-14T09:02:43+00:00"
         },
         {
             "name": "sebastian/global-state",
@@ -3396,32 +3304,32 @@
         },
         {
             "name": "symfony/config",
-            "version": "v3.4.23",
+            "version": "v5.0.8",
             "source": {
                 "type": "git",
                 "url": "https://github.com/symfony/config.git",
-                "reference": "177a276c01575253c95cefe0866e3d1b57637fe0"
+                "reference": "db1674e1a261148429f123871f30d211992294e7"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/symfony/config/zipball/177a276c01575253c95cefe0866e3d1b57637fe0",
-                "reference": "177a276c01575253c95cefe0866e3d1b57637fe0",
+                "url": "https://api.github.com/repos/symfony/config/zipball/db1674e1a261148429f123871f30d211992294e7",
+                "reference": "db1674e1a261148429f123871f30d211992294e7",
                 "shasum": ""
             },
             "require": {
-                "php": "^5.5.9|>=7.0.8",
-                "symfony/filesystem": "~2.8|~3.0|~4.0",
+                "php": "^7.2.5",
+                "symfony/filesystem": "^4.4|^5.0",
                 "symfony/polyfill-ctype": "~1.8"
             },
             "conflict": {
-                "symfony/dependency-injection": "<3.3",
-                "symfony/finder": "<3.3"
+                "symfony/finder": "<4.4"
             },
             "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"
+                "symfony/event-dispatcher": "^4.4|^5.0",
+                "symfony/finder": "^4.4|^5.0",
+                "symfony/messenger": "^4.4|^5.0",
+                "symfony/service-contracts": "^1.1|^2",
+                "symfony/yaml": "^4.4|^5.0"
             },
             "suggest": {
                 "symfony/yaml": "To use the yaml reference dumper"
@@ -3429,7 +3337,7 @@
             "type": "library",
             "extra": {
                 "branch-alias": {
-                    "dev-master": "3.4-dev"
+                    "dev-master": "5.0-dev"
                 }
             },
             "autoload": {
@@ -3456,41 +3364,45 @@
             ],
             "description": "Symfony Config Component",
             "homepage": "https://symfony.com",
-            "time": "2019-02-23T15:06:07+00:00"
+            "time": "2020-04-15T15:59:10+00:00"
         },
         {
             "name": "symfony/console",
-            "version": "v3.4.23",
+            "version": "v5.0.8",
             "source": {
                 "type": "git",
                 "url": "https://github.com/symfony/console.git",
-                "reference": "71ce77f37af0c5ffb9590e43cc4f70e426945c5e"
+                "reference": "5fa1caadc8cdaa17bcfb25219f3b53fe294a9935"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/symfony/console/zipball/71ce77f37af0c5ffb9590e43cc4f70e426945c5e",
-                "reference": "71ce77f37af0c5ffb9590e43cc4f70e426945c5e",
+                "url": "https://api.github.com/repos/symfony/console/zipball/5fa1caadc8cdaa17bcfb25219f3b53fe294a9935",
+                "reference": "5fa1caadc8cdaa17bcfb25219f3b53fe294a9935",
                 "shasum": ""
             },
             "require": {
-                "php": "^5.5.9|>=7.0.8",
-                "symfony/debug": "~2.8|~3.0|~4.0",
-                "symfony/polyfill-mbstring": "~1.0"
+                "php": "^7.2.5",
+                "symfony/polyfill-mbstring": "~1.0",
+                "symfony/polyfill-php73": "^1.8",
+                "symfony/service-contracts": "^1.1|^2"
             },
             "conflict": {
-                "symfony/dependency-injection": "<3.4",
-                "symfony/process": "<3.3"
+                "symfony/dependency-injection": "<4.4",
+                "symfony/event-dispatcher": "<4.4",
+                "symfony/lock": "<4.4",
+                "symfony/process": "<4.4"
             },
             "provide": {
                 "psr/log-implementation": "1.0"
             },
             "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"
+                "symfony/config": "^4.4|^5.0",
+                "symfony/dependency-injection": "^4.4|^5.0",
+                "symfony/event-dispatcher": "^4.4|^5.0",
+                "symfony/lock": "^4.4|^5.0",
+                "symfony/process": "^4.4|^5.0",
+                "symfony/var-dumper": "^4.4|^5.0"
             },
             "suggest": {
                 "psr/log": "For using the console logger",
@@ -3501,7 +3413,7 @@
             "type": "library",
             "extra": {
                 "branch-alias": {
-                    "dev-master": "3.4-dev"
+                    "dev-master": "5.0-dev"
                 }
             },
             "autoload": {
@@ -3528,41 +3440,55 @@
             ],
             "description": "Symfony Console Component",
             "homepage": "https://symfony.com",
-            "time": "2019-02-23T15:06:07+00:00"
+            "time": "2020-03-30T11:42:42+00:00"
         },
         {
-            "name": "symfony/debug",
-            "version": "v3.4.23",
+            "name": "symfony/event-dispatcher",
+            "version": "v5.0.8",
             "source": {
                 "type": "git",
-                "url": "https://github.com/symfony/debug.git",
-                "reference": "8d8a9e877b3fcdc50ddecf8dcea146059753f782"
+                "url": "https://github.com/symfony/event-dispatcher.git",
+                "reference": "24f40d95385774ed5c71dbf014edd047e2f2f3dc"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/symfony/debug/zipball/8d8a9e877b3fcdc50ddecf8dcea146059753f782",
-                "reference": "8d8a9e877b3fcdc50ddecf8dcea146059753f782",
+                "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/24f40d95385774ed5c71dbf014edd047e2f2f3dc",
+                "reference": "24f40d95385774ed5c71dbf014edd047e2f2f3dc",
                 "shasum": ""
             },
             "require": {
-                "php": "^5.5.9|>=7.0.8",
-                "psr/log": "~1.0"
+                "php": "^7.2.5",
+                "symfony/event-dispatcher-contracts": "^2"
             },
             "conflict": {
-                "symfony/http-kernel": ">=2.3,<2.3.24|~2.4.0|>=2.5,<2.5.9|>=2.6,<2.6.2"
+                "symfony/dependency-injection": "<4.4"
+            },
+            "provide": {
+                "psr/event-dispatcher-implementation": "1.0",
+                "symfony/event-dispatcher-implementation": "2.0"
             },
             "require-dev": {
-                "symfony/http-kernel": "~2.8|~3.0|~4.0"
+                "psr/log": "~1.0",
+                "symfony/config": "^4.4|^5.0",
+                "symfony/dependency-injection": "^4.4|^5.0",
+                "symfony/expression-language": "^4.4|^5.0",
+                "symfony/http-foundation": "^4.4|^5.0",
+                "symfony/service-contracts": "^1.1|^2",
+                "symfony/stopwatch": "^4.4|^5.0"
+            },
+            "suggest": {
+                "symfony/dependency-injection": "",
+                "symfony/http-kernel": ""
             },
             "type": "library",
             "extra": {
                 "branch-alias": {
-                    "dev-master": "3.4-dev"
+                    "dev-master": "5.0-dev"
                 }
             },
             "autoload": {
                 "psr-4": {
-                    "Symfony\\Component\\Debug\\": ""
+                    "Symfony\\Component\\EventDispatcher\\": ""
                 },
                 "exclude-from-classmap": [
                     "/Tests/"
@@ -3582,54 +3508,41 @@
                     "homepage": "https://symfony.com/contributors"
                 }
             ],
-            "description": "Symfony Debug Component",
+            "description": "Symfony EventDispatcher Component",
             "homepage": "https://symfony.com",
-            "time": "2019-02-24T15:45:11+00:00"
+            "time": "2020-03-27T16:56:45+00:00"
         },
         {
-            "name": "symfony/event-dispatcher",
-            "version": "v3.4.23",
+            "name": "symfony/event-dispatcher-contracts",
+            "version": "v2.0.1",
             "source": {
                 "type": "git",
-                "url": "https://github.com/symfony/event-dispatcher.git",
-                "reference": "ec625e2fff7f584eeb91754821807317b2e79236"
+                "url": "https://github.com/symfony/event-dispatcher-contracts.git",
+                "reference": "af23c2584d4577d54661c434446fb8fbed6025dd"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/ec625e2fff7f584eeb91754821807317b2e79236",
-                "reference": "ec625e2fff7f584eeb91754821807317b2e79236",
+                "url": "https://api.github.com/repos/symfony/event-dispatcher-contracts/zipball/af23c2584d4577d54661c434446fb8fbed6025dd",
+                "reference": "af23c2584d4577d54661c434446fb8fbed6025dd",
                 "shasum": ""
             },
             "require": {
-                "php": "^5.5.9|>=7.0.8"
-            },
-            "conflict": {
-                "symfony/dependency-injection": "<3.3"
-            },
-            "require-dev": {
-                "psr/log": "~1.0",
-                "symfony/config": "~2.8|~3.0|~4.0",
-                "symfony/dependency-injection": "~3.3|~4.0",
-                "symfony/expression-language": "~2.8|~3.0|~4.0",
-                "symfony/stopwatch": "~2.8|~3.0|~4.0"
+                "php": "^7.2.5",
+                "psr/event-dispatcher": "^1"
             },
             "suggest": {
-                "symfony/dependency-injection": "",
-                "symfony/http-kernel": ""
+                "symfony/event-dispatcher-implementation": ""
             },
             "type": "library",
             "extra": {
                 "branch-alias": {
-                    "dev-master": "3.4-dev"
+                    "dev-master": "2.0-dev"
                 }
             },
             "autoload": {
                 "psr-4": {
-                    "Symfony\\Component\\EventDispatcher\\": ""
-                },
-                "exclude-from-classmap": [
-                    "/Tests/"
-                ]
+                    "Symfony\\Contracts\\EventDispatcher\\": ""
+                }
             },
             "notification-url": "https://packagist.org/downloads/",
             "license": [
@@ -3637,40 +3550,48 @@
             ],
             "authors": [
                 {
-                    "name": "Fabien Potencier",
-                    "email": "fabien@symfony.com"
+                    "name": "Nicolas Grekas",
+                    "email": "p@tchwork.com"
                 },
                 {
                     "name": "Symfony Community",
                     "homepage": "https://symfony.com/contributors"
                 }
             ],
-            "description": "Symfony EventDispatcher Component",
+            "description": "Generic abstractions related to dispatching event",
             "homepage": "https://symfony.com",
-            "time": "2019-02-23T15:06:07+00:00"
+            "keywords": [
+                "abstractions",
+                "contracts",
+                "decoupling",
+                "interfaces",
+                "interoperability",
+                "standards"
+            ],
+            "time": "2019-11-18T17:27:11+00:00"
         },
         {
             "name": "symfony/filesystem",
-            "version": "v3.4.23",
+            "version": "v5.0.8",
             "source": {
                 "type": "git",
                 "url": "https://github.com/symfony/filesystem.git",
-                "reference": "acf99758b1df8e9295e6b85aa69f294565c9fedb"
+                "reference": "7cd0dafc4353a0f62e307df90b48466379c8cc91"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/symfony/filesystem/zipball/acf99758b1df8e9295e6b85aa69f294565c9fedb",
-                "reference": "acf99758b1df8e9295e6b85aa69f294565c9fedb",
+                "url": "https://api.github.com/repos/symfony/filesystem/zipball/7cd0dafc4353a0f62e307df90b48466379c8cc91",
+                "reference": "7cd0dafc4353a0f62e307df90b48466379c8cc91",
                 "shasum": ""
             },
             "require": {
-                "php": "^5.5.9|>=7.0.8",
+                "php": "^7.2.5",
                 "symfony/polyfill-ctype": "~1.8"
             },
             "type": "library",
             "extra": {
                 "branch-alias": {
-                    "dev-master": "3.4-dev"
+                    "dev-master": "5.0-dev"
                 }
             },
             "autoload": {
@@ -3697,29 +3618,29 @@
             ],
             "description": "Symfony Filesystem Component",
             "homepage": "https://symfony.com",
-            "time": "2019-02-04T21:34:32+00:00"
+            "time": "2020-04-12T14:40:17+00:00"
         },
         {
             "name": "symfony/finder",
-            "version": "v3.4.23",
+            "version": "v5.0.8",
             "source": {
                 "type": "git",
                 "url": "https://github.com/symfony/finder.git",
-                "reference": "fcdde4aa38f48190ce70d782c166f23930084f9b"
+                "reference": "600a52c29afc0d1caa74acbec8d3095ca7e9910d"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/symfony/finder/zipball/fcdde4aa38f48190ce70d782c166f23930084f9b",
-                "reference": "fcdde4aa38f48190ce70d782c166f23930084f9b",
+                "url": "https://api.github.com/repos/symfony/finder/zipball/600a52c29afc0d1caa74acbec8d3095ca7e9910d",
+                "reference": "600a52c29afc0d1caa74acbec8d3095ca7e9910d",
                 "shasum": ""
             },
             "require": {
-                "php": "^5.5.9|>=7.0.8"
+                "php": "^7.2.5"
             },
             "type": "library",
             "extra": {
                 "branch-alias": {
-                    "dev-master": "3.4-dev"
+                    "dev-master": "5.0-dev"
                 }
             },
             "autoload": {
@@ -3746,29 +3667,29 @@
             ],
             "description": "Symfony Finder Component",
             "homepage": "https://symfony.com",
-            "time": "2019-02-22T14:44:53+00:00"
+            "time": "2020-03-27T16:56:45+00:00"
         },
         {
             "name": "symfony/options-resolver",
-            "version": "v3.4.23",
+            "version": "v5.0.8",
             "source": {
                 "type": "git",
                 "url": "https://github.com/symfony/options-resolver.git",
-                "reference": "926e3b797e6bb66c0e4d7da7eff3a174f7378bcf"
+                "reference": "3707e3caeff2b797c0bfaadd5eba723dd44e6bf1"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/symfony/options-resolver/zipball/926e3b797e6bb66c0e4d7da7eff3a174f7378bcf",
-                "reference": "926e3b797e6bb66c0e4d7da7eff3a174f7378bcf",
+                "url": "https://api.github.com/repos/symfony/options-resolver/zipball/3707e3caeff2b797c0bfaadd5eba723dd44e6bf1",
+                "reference": "3707e3caeff2b797c0bfaadd5eba723dd44e6bf1",
                 "shasum": ""
             },
             "require": {
-                "php": "^5.5.9|>=7.0.8"
+                "php": "^7.2.5"
             },
             "type": "library",
             "extra": {
                 "branch-alias": {
-                    "dev-master": "3.4-dev"
+                    "dev-master": "5.0-dev"
                 }
             },
             "autoload": {
@@ -3800,20 +3721,20 @@
                 "configuration",
                 "options"
             ],
-            "time": "2019-02-23T15:06:07+00:00"
+            "time": "2020-04-06T10:40:56+00:00"
         },
         {
             "name": "symfony/polyfill-ctype",
-            "version": "v1.10.0",
+            "version": "v1.17.0",
             "source": {
                 "type": "git",
                 "url": "https://github.com/symfony/polyfill-ctype.git",
-                "reference": "e3d826245268269cd66f8326bd8bc066687b4a19"
+                "reference": "e94c8b1bbe2bc77507a1056cdb06451c75b427f9"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/e3d826245268269cd66f8326bd8bc066687b4a19",
-                "reference": "e3d826245268269cd66f8326bd8bc066687b4a19",
+                "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/e94c8b1bbe2bc77507a1056cdb06451c75b427f9",
+                "reference": "e94c8b1bbe2bc77507a1056cdb06451c75b427f9",
                 "shasum": ""
             },
             "require": {
@@ -3825,7 +3746,7 @@
             "type": "library",
             "extra": {
                 "branch-alias": {
-                    "dev-master": "1.9-dev"
+                    "dev-master": "1.17-dev"
                 }
             },
             "autoload": {
@@ -3841,13 +3762,13 @@
                 "MIT"
             ],
             "authors": [
-                {
-                    "name": "Symfony Community",
-                    "homepage": "https://symfony.com/contributors"
-                },
                 {
                     "name": "Gert de Pagter",
                     "email": "BackEndTea@gmail.com"
+                },
+                {
+                    "name": "Symfony Community",
+                    "homepage": "https://symfony.com/contributors"
                 }
             ],
             "description": "Symfony polyfill for ctype functions",
@@ -3858,20 +3779,82 @@
                 "polyfill",
                 "portable"
             ],
-            "time": "2018-08-06T14:22:27+00:00"
+            "time": "2020-05-12T16:14:59+00:00"
+        },
+        {
+            "name": "symfony/polyfill-intl-idn",
+            "version": "v1.17.0",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/symfony/polyfill-intl-idn.git",
+                "reference": "3bff59ea7047e925be6b7f2059d60af31bb46d6a"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/symfony/polyfill-intl-idn/zipball/3bff59ea7047e925be6b7f2059d60af31bb46d6a",
+                "reference": "3bff59ea7047e925be6b7f2059d60af31bb46d6a",
+                "shasum": ""
+            },
+            "require": {
+                "php": ">=5.3.3",
+                "symfony/polyfill-mbstring": "^1.3",
+                "symfony/polyfill-php72": "^1.10"
+            },
+            "suggest": {
+                "ext-intl": "For best performance"
+            },
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "1.17-dev"
+                }
+            },
+            "autoload": {
+                "psr-4": {
+                    "Symfony\\Polyfill\\Intl\\Idn\\": ""
+                },
+                "files": [
+                    "bootstrap.php"
+                ]
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "MIT"
+            ],
+            "authors": [
+                {
+                    "name": "Laurent Bassin",
+                    "email": "laurent@bassin.info"
+                },
+                {
+                    "name": "Symfony Community",
+                    "homepage": "https://symfony.com/contributors"
+                }
+            ],
+            "description": "Symfony polyfill for intl's idn_to_ascii and idn_to_utf8 functions",
+            "homepage": "https://symfony.com",
+            "keywords": [
+                "compatibility",
+                "idn",
+                "intl",
+                "polyfill",
+                "portable",
+                "shim"
+            ],
+            "time": "2020-05-12T16:47:27+00:00"
         },
         {
             "name": "symfony/polyfill-mbstring",
-            "version": "v1.10.0",
+            "version": "v1.17.0",
             "source": {
                 "type": "git",
                 "url": "https://github.com/symfony/polyfill-mbstring.git",
-                "reference": "c79c051f5b3a46be09205c73b80b346e4153e494"
+                "reference": "fa79b11539418b02fc5e1897267673ba2c19419c"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/c79c051f5b3a46be09205c73b80b346e4153e494",
-                "reference": "c79c051f5b3a46be09205c73b80b346e4153e494",
+                "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/fa79b11539418b02fc5e1897267673ba2c19419c",
+                "reference": "fa79b11539418b02fc5e1897267673ba2c19419c",
                 "shasum": ""
             },
             "require": {
@@ -3883,7 +3866,7 @@
             "type": "library",
             "extra": {
                 "branch-alias": {
-                    "dev-master": "1.9-dev"
+                    "dev-master": "1.17-dev"
                 }
             },
             "autoload": {
@@ -3917,29 +3900,142 @@
                 "portable",
                 "shim"
             ],
-            "time": "2018-09-21T13:07:52+00:00"
+            "time": "2020-05-12T16:47:27+00:00"
+        },
+        {
+            "name": "symfony/polyfill-php72",
+            "version": "v1.17.0",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/symfony/polyfill-php72.git",
+                "reference": "f048e612a3905f34931127360bdd2def19a5e582"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/symfony/polyfill-php72/zipball/f048e612a3905f34931127360bdd2def19a5e582",
+                "reference": "f048e612a3905f34931127360bdd2def19a5e582",
+                "shasum": ""
+            },
+            "require": {
+                "php": ">=5.3.3"
+            },
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "1.17-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": "2020-05-12T16:47:27+00:00"
+        },
+        {
+            "name": "symfony/polyfill-php73",
+            "version": "v1.17.0",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/symfony/polyfill-php73.git",
+                "reference": "a760d8964ff79ab9bf057613a5808284ec852ccc"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/symfony/polyfill-php73/zipball/a760d8964ff79ab9bf057613a5808284ec852ccc",
+                "reference": "a760d8964ff79ab9bf057613a5808284ec852ccc",
+                "shasum": ""
+            },
+            "require": {
+                "php": ">=5.3.3"
+            },
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "1.17-dev"
+                }
+            },
+            "autoload": {
+                "psr-4": {
+                    "Symfony\\Polyfill\\Php73\\": ""
+                },
+                "files": [
+                    "bootstrap.php"
+                ],
+                "classmap": [
+                    "Resources/stubs"
+                ]
+            },
+            "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.3+ features to lower PHP versions",
+            "homepage": "https://symfony.com",
+            "keywords": [
+                "compatibility",
+                "polyfill",
+                "portable",
+                "shim"
+            ],
+            "time": "2020-05-12T16:47:27+00:00"
         },
         {
             "name": "symfony/process",
-            "version": "v3.4.23",
+            "version": "v5.0.8",
             "source": {
                 "type": "git",
                 "url": "https://github.com/symfony/process.git",
-                "reference": "009f8dda80930e89e8344a4e310b08f9ff07dd2e"
+                "reference": "3179f68dff5bad14d38c4114a1dab98030801fd7"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/symfony/process/zipball/009f8dda80930e89e8344a4e310b08f9ff07dd2e",
-                "reference": "009f8dda80930e89e8344a4e310b08f9ff07dd2e",
+                "url": "https://api.github.com/repos/symfony/process/zipball/3179f68dff5bad14d38c4114a1dab98030801fd7",
+                "reference": "3179f68dff5bad14d38c4114a1dab98030801fd7",
                 "shasum": ""
             },
             "require": {
-                "php": "^5.5.9|>=7.0.8"
+                "php": "^7.2.5"
             },
             "type": "library",
             "extra": {
                 "branch-alias": {
-                    "dev-master": "3.4-dev"
+                    "dev-master": "5.0-dev"
                 }
             },
             "autoload": {
@@ -3966,29 +4062,88 @@
             ],
             "description": "Symfony Process Component",
             "homepage": "https://symfony.com",
-            "time": "2019-01-16T13:27:11+00:00"
+            "time": "2020-04-15T15:59:10+00:00"
+        },
+        {
+            "name": "symfony/service-contracts",
+            "version": "v2.0.1",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/symfony/service-contracts.git",
+                "reference": "144c5e51266b281231e947b51223ba14acf1a749"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/symfony/service-contracts/zipball/144c5e51266b281231e947b51223ba14acf1a749",
+                "reference": "144c5e51266b281231e947b51223ba14acf1a749",
+                "shasum": ""
+            },
+            "require": {
+                "php": "^7.2.5",
+                "psr/container": "^1.0"
+            },
+            "suggest": {
+                "symfony/service-implementation": ""
+            },
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "2.0-dev"
+                }
+            },
+            "autoload": {
+                "psr-4": {
+                    "Symfony\\Contracts\\Service\\": ""
+                }
+            },
+            "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": "Generic abstractions related to writing services",
+            "homepage": "https://symfony.com",
+            "keywords": [
+                "abstractions",
+                "contracts",
+                "decoupling",
+                "interfaces",
+                "interoperability",
+                "standards"
+            ],
+            "time": "2019-11-18T17:27:11+00:00"
         },
         {
             "name": "symfony/stopwatch",
-            "version": "v3.4.23",
+            "version": "v5.0.8",
             "source": {
                 "type": "git",
                 "url": "https://github.com/symfony/stopwatch.git",
-                "reference": "2a651c2645c10bbedd21170771f122d935e0dd58"
+                "reference": "a1d86d30d4522423afc998f32404efa34fcf5a73"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/symfony/stopwatch/zipball/2a651c2645c10bbedd21170771f122d935e0dd58",
-                "reference": "2a651c2645c10bbedd21170771f122d935e0dd58",
+                "url": "https://api.github.com/repos/symfony/stopwatch/zipball/a1d86d30d4522423afc998f32404efa34fcf5a73",
+                "reference": "a1d86d30d4522423afc998f32404efa34fcf5a73",
                 "shasum": ""
             },
             "require": {
-                "php": "^5.5.9|>=7.0.8"
+                "php": "^7.2.5",
+                "symfony/service-contracts": "^1.0|^2"
             },
             "type": "library",
             "extra": {
                 "branch-alias": {
-                    "dev-master": "3.4-dev"
+                    "dev-master": "5.0-dev"
                 }
             },
             "autoload": {
@@ -4015,31 +4170,31 @@
             ],
             "description": "Symfony Stopwatch Component",
             "homepage": "https://symfony.com",
-            "time": "2019-01-16T09:39:14+00:00"
+            "time": "2020-03-27T16:56:45+00:00"
         },
         {
             "name": "symfony/yaml",
-            "version": "v3.4.23",
+            "version": "v4.4.8",
             "source": {
                 "type": "git",
                 "url": "https://github.com/symfony/yaml.git",
-                "reference": "57f1ce82c997f5a8701b89ef970e36bb657fd09c"
+                "reference": "b385dce1c0e9f839b384af90188638819433e252"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/symfony/yaml/zipball/57f1ce82c997f5a8701b89ef970e36bb657fd09c",
-                "reference": "57f1ce82c997f5a8701b89ef970e36bb657fd09c",
+                "url": "https://api.github.com/repos/symfony/yaml/zipball/b385dce1c0e9f839b384af90188638819433e252",
+                "reference": "b385dce1c0e9f839b384af90188638819433e252",
                 "shasum": ""
             },
             "require": {
-                "php": "^5.5.9|>=7.0.8",
+                "php": "^7.1.3",
                 "symfony/polyfill-ctype": "~1.8"
             },
             "conflict": {
                 "symfony/console": "<3.4"
             },
             "require-dev": {
-                "symfony/console": "~3.4|~4.0"
+                "symfony/console": "^3.4|^4.0|^5.0"
             },
             "suggest": {
                 "symfony/console": "For validating YAML files using the lint command"
@@ -4047,7 +4202,7 @@
             "type": "library",
             "extra": {
                 "branch-alias": {
-                    "dev-master": "3.4-dev"
+                    "dev-master": "4.4-dev"
                 }
             },
             "autoload": {
@@ -4074,20 +4229,20 @@
             ],
             "description": "Symfony Yaml Component",
             "homepage": "https://symfony.com",
-            "time": "2019-02-23T15:06:07+00:00"
+            "time": "2020-04-28T17:55:16+00:00"
         },
         {
             "name": "theseer/tokenizer",
-            "version": "1.1.0",
+            "version": "1.1.3",
             "source": {
                 "type": "git",
                 "url": "https://github.com/theseer/tokenizer.git",
-                "reference": "cb2f008f3f05af2893a87208fe6a6c4985483f8b"
+                "reference": "11336f6f84e16a720dae9d8e6ed5019efa85a0f9"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/theseer/tokenizer/zipball/cb2f008f3f05af2893a87208fe6a6c4985483f8b",
-                "reference": "cb2f008f3f05af2893a87208fe6a6c4985483f8b",
+                "url": "https://api.github.com/repos/theseer/tokenizer/zipball/11336f6f84e16a720dae9d8e6ed5019efa85a0f9",
+                "reference": "11336f6f84e16a720dae9d8e6ed5019efa85a0f9",
                 "shasum": ""
             },
             "require": {
@@ -4114,36 +4269,33 @@
                 }
             ],
             "description": "A small library for converting tokenized PHP source code into XML and potentially other formats",
-            "time": "2017-04-07T12:08:54+00:00"
+            "time": "2019-06-13T22:48:21+00:00"
         },
         {
             "name": "webmozart/assert",
-            "version": "1.4.0",
+            "version": "1.8.0",
             "source": {
                 "type": "git",
                 "url": "https://github.com/webmozart/assert.git",
-                "reference": "83e253c8e0be5b0257b881e1827274667c5c17a9"
+                "reference": "ab2cb0b3b559010b75981b1bdce728da3ee90ad6"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/webmozart/assert/zipball/83e253c8e0be5b0257b881e1827274667c5c17a9",
-                "reference": "83e253c8e0be5b0257b881e1827274667c5c17a9",
+                "url": "https://api.github.com/repos/webmozart/assert/zipball/ab2cb0b3b559010b75981b1bdce728da3ee90ad6",
+                "reference": "ab2cb0b3b559010b75981b1bdce728da3ee90ad6",
                 "shasum": ""
             },
             "require": {
                 "php": "^5.3.3 || ^7.0",
                 "symfony/polyfill-ctype": "^1.8"
             },
+            "conflict": {
+                "vimeo/psalm": "<3.9.1"
+            },
             "require-dev": {
-                "phpunit/phpunit": "^4.6",
-                "sebastian/version": "^1.0.1"
+                "phpunit/phpunit": "^4.8.36 || ^7.5.13"
             },
             "type": "library",
-            "extra": {
-                "branch-alias": {
-                    "dev-master": "1.3-dev"
-                }
-            },
             "autoload": {
                 "psr-4": {
                     "Webmozart\\Assert\\": "src/"
@@ -4165,7 +4317,7 @@
                 "check",
                 "validate"
             ],
-            "time": "2018-12-25T11:19:39+00:00"
+            "time": "2020-04-18T12:12:48+00:00"
         }
     ],
     "aliases": [],
@@ -4178,6 +4330,6 @@
     },
     "platform-dev": [],
     "platform-overrides": {
-        "php": "7.0.8"
+        "php": "7.2.28"
     }
 }
diff --git a/vendor/consolidation/site-process/CHANGELOG.md b/vendor/consolidation/site-process/CHANGELOG.md
index 7ca3bc0169..9219b057ea 100644
--- a/vendor/consolidation/site-process/CHANGELOG.md
+++ b/vendor/consolidation/site-process/CHANGELOG.md
@@ -1,5 +1,13 @@
 # Changelog
 
+### 2.1.0 - 2019/Sep/10
+
+* Added environment variables in aliases (#47)
+
+### 2.0.4 - 2019/Aug/12
+
+* Bugfix: Better error reporting when json output fails to parse. (#46)
+
 ### 2.0.3 - 2019/Jun/4
 
 * Bugfix: Use posix_isatty when available. (#43)
diff --git a/vendor/consolidation/site-process/README.md b/vendor/consolidation/site-process/README.md
index 19d4316850..9ee69d3e2d 100644
--- a/vendor/consolidation/site-process/README.md
+++ b/vendor/consolidation/site-process/README.md
@@ -13,7 +13,7 @@ A thin wrapper around the Symfony Process Component that allows applications to
 
 Site Process is a thin wrapper around the [Symfony Process Component](https://symfony.com/doc/3.4/components/process) that allows applications to use the [Site Alias library](https://github.com/consolidation/site-alias) to specify the target for a remote call.
 
-For comparison purposes, the `Process` obejct may be created to run an application on the local system using the standard Symfony Process Component API like so:
+For comparison purposes, the `Process` object may be created to run an application on the local system using the standard Symfony Process Component API like so:
 ```
 $process = new Process(['ls', '-lsa']);
 ```
diff --git a/vendor/consolidation/site-process/VERSION b/vendor/consolidation/site-process/VERSION
index 6acdb44289..7ec1d6db40 100644
--- a/vendor/consolidation/site-process/VERSION
+++ b/vendor/consolidation/site-process/VERSION
@@ -1 +1 @@
-2.0.3
\ No newline at end of file
+2.1.0
diff --git a/vendor/consolidation/site-process/appveyor.yml b/vendor/consolidation/site-process/appveyor.yml
index c19202f9be..e22a006c51 100644
--- a/vendor/consolidation/site-process/appveyor.yml
+++ b/vendor/consolidation/site-process/appveyor.yml
@@ -24,10 +24,11 @@ install:
   - git clone -q https://github.com/acquia/DevDesktopCommon.git #For tar, cksum, ...
   - SET PATH=%APPVEYOR_BUILD_FOLDER%/DevDesktopCommon/bintools-win/msys/bin;%PATH%
   - SET PATH=C:\Program Files\MySql\MySQL Server 5.7\bin\;%PATH%
+  - choco search php --exact --all-versions -r
   #Install PHP per https://blog.wyrihaximus.net/2016/11/running-php-unit-tests-on-windows-using-appveyor-and-chocolatey/
   - ps: Set-Service wuauserv -StartupType Manual
   - ps: appveyor-retry cinst --ignore-checksums -y php --version ((choco search php --exact --all-versions -r | select-string -pattern $Env:php_ver_target | Select-Object -first 1) -replace '[php|]','')
-  - cd c:\tools\php71
+  - cd c:\tools\php73
   - copy php.ini-production php.ini
 
   - echo extension_dir=ext >> php.ini
@@ -44,7 +45,7 @@ install:
   - echo extension=php_pdo_sqlite.dll >> php.ini
   - echo extension=php_pgsql.dll >> php.ini
   - echo extension=php_gd2.dll >> php.ini
-  - SET PATH=C:\tools\php71;%PATH%
+  - SET PATH=C:\tools\php73;%PATH%
   #Install Composer
   - cd %APPVEYOR_BUILD_FOLDER%
   #- appveyor DownloadFile https://getcomposer.org/composer.phar
@@ -61,4 +62,4 @@ test_script:
 # environment variables
 environment:
   global:
-      php_ver_target: 7.1
+      php_ver_target: 7.3
diff --git a/vendor/consolidation/site-process/src/ProcessBase.php b/vendor/consolidation/site-process/src/ProcessBase.php
index e4725c05bf..4db598f659 100644
--- a/vendor/consolidation/site-process/src/ProcessBase.php
+++ b/vendor/consolidation/site-process/src/ProcessBase.php
@@ -178,10 +178,14 @@ public function getOutputAsJson()
             // Revert of doubled backslashes.
             $output = preg_replace('#\\\\{2}#', '\\', $output);
         }
-        $output = $this->removeNonJsonJunk($output);
-        $json = json_decode($output, true);
+        $sanitizedOutput = $this->removeNonJsonJunk($output);
+        $json = json_decode($sanitizedOutput, true);
         if (!isset($json)) {
-            throw new \InvalidArgumentException('Unable to decode output into JSON.');
+            $msg = 'Unable to decode output into JSON: ' . json_last_error_msg();
+            if (json_last_error() == JSON_ERROR_SYNTAX) {
+                $msg .= "\n\n$output";
+            }
+            throw new \InvalidArgumentException($msg);
         }
         return $json;
     }
diff --git a/vendor/consolidation/site-process/src/SiteProcess.php b/vendor/consolidation/site-process/src/SiteProcess.php
index e54270ecc0..88ec35a4fe 100644
--- a/vendor/consolidation/site-process/src/SiteProcess.php
+++ b/vendor/consolidation/site-process/src/SiteProcess.php
@@ -8,6 +8,7 @@
 use Consolidation\SiteProcess\Transport\SshTransport;
 use Consolidation\SiteProcess\Transport\TransportInterface;
 use Consolidation\Config\Util\Interpolator;
+use Consolidation\SiteProcess\Util\Shell;
 use Consolidation\SiteProcess\Util\ShellOperatorInterface;
 use Consolidation\SiteProcess\Util\Escape;
 
@@ -125,6 +126,11 @@ protected function processArgs()
             $this->optionsPassedAsArgs
         );
 
+        // Set environment variables if needed.
+        if ($this->siteAlias->has('env-vars')) {
+            $selectedArgs = $this->addEnvVars($this->siteAlias->get('env-vars'), $selectedArgs);
+        }
+
         // Ask the transport to drop in a 'cd' if needed.
         if ($this->getWorkingDirectory()) {
             $selectedArgs = $transport->addChdir($this->getWorkingDirectory(), $selectedArgs);
@@ -138,6 +144,21 @@ protected function processArgs()
         return $transport->wrap($processedArgs);
     }
 
+    /**
+     * Wrap the command/args in an env call.
+     * @todo Check if this needs to depend on linux/win.
+     * @todo Check if this needs to be delegated to transport.
+     */
+    public function addEnvVars($envVars, $args)
+    {
+        $envArgs = ['env'];
+        foreach ($envVars as $key => $value) {
+            $envArgs[] = Escape::forSite($this->siteAlias, $key) . '='
+            . Escape::forSite($this->siteAlias, $value);
+        }
+        return array_merge($envArgs, $args);
+    }
+
     public function setTransport($transport)
     {
         $this->transport = $transport;
diff --git a/vendor/consolidation/site-process/tests/SiteProcessTest.php b/vendor/consolidation/site-process/tests/SiteProcessTest.php
index 04228223bc..a207d8e86d 100644
--- a/vendor/consolidation/site-process/tests/SiteProcessTest.php
+++ b/vendor/consolidation/site-process/tests/SiteProcessTest.php
@@ -179,6 +179,17 @@ public function siteProcessTestValues()
                 ['exclude' => 'vendor'],
                 NULL,
             ],
+
+            [
+                "env foo=bar baz=zong drush status",
+                false,
+                false,
+                ['env-vars' => ['foo' => 'bar', 'baz' => 'zong']],
+                ['drush', 'status'],
+                [],
+                [],
+                NULL,
+            ],
         ];
     }
 
@@ -227,7 +238,7 @@ public function siteProcessJsonTestValues()
                 'LINUX',
             ],
             [
-                'Unable to decode output into JSON.',
+                "Unable to decode output into JSON: Syntax error\n\nNo json data here",
                 'No json data here',
                 NULL,
             ],
diff --git a/vendor/cweagans/composer-patches/README.md b/vendor/cweagans/composer-patches/README.md
index ff09eb60e0..972694028d 100644
--- a/vendor/cweagans/composer-patches/README.md
+++ b/vendor/cweagans/composer-patches/README.md
@@ -66,7 +66,7 @@ Then your `composer.patches.json` should look like this:
 
 ## Allowing patches to be applied from dependencies
 
-If you want your project to accept patches from dependencies, you must have the following in your composer file:
+If your project doesn't supply any patches of its own, but you still want to accept patches from dependencies, you must have the following in your composer file:
 
 ```json
 {
@@ -79,6 +79,8 @@ If you want your project to accept patches from dependencies, you must have the
 }
 ```
 
+If you do have a `patches` section in your composer file that defines your own set of patches then the `enable-patching` setting will be ignored and patches from dependencies will always be applied.
+
 ## Ignoring patches
 
 There may be situations in which you want to ignore a patch supplied by a dependency. For example:
@@ -115,6 +117,21 @@ There may be situations in which you want to ignore a patch supplied by a depend
 }
 ```
 
+## Allowing to force the patch level (-pX)
+
+Some situations require to force the patchLevel used to apply patches on a particular package.
+Its useful for packages like drupal/core which packages only a subdir of the original upstream project on which patches are based.
+
+```json
+{
+  "extra": {
+    "patchLevel": {
+      "drupal/core": "-p2"
+    }
+  }
+}
+```
+
 ## Using patches from HTTP URLs
 
 Composer [blocks](https://getcomposer.org/doc/06-config.md#secure-http) you from downloading anything from HTTP URLs, you can disable this for your project by adding a `secure-http` setting in the config section of your `composer.json`. Note that the `config` section should be under the root of your `composer.json`.
diff --git a/vendor/cweagans/composer-patches/composer.json b/vendor/cweagans/composer-patches/composer.json
index 1cdcd76625..1565b02f5c 100644
--- a/vendor/cweagans/composer-patches/composer.json
+++ b/vendor/cweagans/composer-patches/composer.json
@@ -15,10 +15,10 @@
   ],
   "require": {
     "php": ">=5.3.0",
-    "composer-plugin-api": "^1.0"
+    "composer-plugin-api": "^1.0 || ^2.0"
   },
   "require-dev": {
-    "composer/composer": "~1.0",
+    "composer/composer": "~1.0 || ~2.0",
     "phpunit/phpunit": "~4.6"
   },
   "autoload": {
diff --git a/vendor/cweagans/composer-patches/composer.lock b/vendor/cweagans/composer-patches/composer.lock
index 2ca41b42d1..d5fe1777cc 100644
--- a/vendor/cweagans/composer-patches/composer.lock
+++ b/vendor/cweagans/composer-patches/composer.lock
@@ -1,47 +1,116 @@
 {
     "_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"
     ],
-    "hash": "a2cd6826c202b7ebefe3050efc2a7b7f",
-    "content-hash": "0ed9361502c0f5f22a5b440c16640193",
+    "content-hash": "4a5c841252204815536a37cad51d347b",
     "packages": [],
     "packages-dev": [
+        {
+            "name": "composer/ca-bundle",
+            "version": "dev-master",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/composer/ca-bundle.git",
+                "reference": "95c63ab2117a72f48f5a55da9740a3273d45b7fd"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/composer/ca-bundle/zipball/95c63ab2117a72f48f5a55da9740a3273d45b7fd",
+                "reference": "95c63ab2117a72f48f5a55da9740a3273d45b7fd",
+                "shasum": ""
+            },
+            "require": {
+                "ext-openssl": "*",
+                "ext-pcre": "*",
+                "php": "^5.3.2 || ^7.0 || ^8.0"
+            },
+            "require-dev": {
+                "phpunit/phpunit": "^4.8.35 || ^5.7 || 6.5 - 8",
+                "psr/log": "^1.0",
+                "symfony/process": "^2.5 || ^3.0 || ^4.0 || ^5.0"
+            },
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "1.x-dev"
+                }
+            },
+            "autoload": {
+                "psr-4": {
+                    "Composer\\CaBundle\\": "src"
+                }
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "MIT"
+            ],
+            "authors": [
+                {
+                    "name": "Jordi Boggiano",
+                    "email": "j.boggiano@seld.be",
+                    "homepage": "http://seld.be"
+                }
+            ],
+            "description": "Lets you find a path to the system CA bundle, and includes a fallback to the Mozilla CA bundle.",
+            "keywords": [
+                "cabundle",
+                "cacert",
+                "certificate",
+                "ssl",
+                "tls"
+            ],
+            "funding": [
+                {
+                    "url": "https://packagist.com",
+                    "type": "custom"
+                },
+                {
+                    "url": "https://tidelift.com/funding/github/packagist/composer/composer",
+                    "type": "tidelift"
+                }
+            ],
+            "time": "2020-04-08T08:27:21+00:00"
+        },
         {
             "name": "composer/composer",
             "version": "dev-master",
             "source": {
                 "type": "git",
                 "url": "https://github.com/composer/composer.git",
-                "reference": "a54f84f05f915c6d42bed94de0cdcb4406a4707b"
+                "reference": "870fdc59dfcffe0bd2d43ca2de4235761d0dec7a"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/composer/composer/zipball/f2d606ae0c705907d8bfa1c6f884bced1255b827",
-                "reference": "a54f84f05f915c6d42bed94de0cdcb4406a4707b",
+                "url": "https://api.github.com/repos/composer/composer/zipball/870fdc59dfcffe0bd2d43ca2de4235761d0dec7a",
+                "reference": "870fdc59dfcffe0bd2d43ca2de4235761d0dec7a",
                 "shasum": ""
             },
             "require": {
-                "composer/semver": "^1.0",
-                "composer/spdx-licenses": "^1.0",
-                "justinrainbow/json-schema": "^1.4.4",
-                "php": ">=5.3.2",
-                "seld/cli-prompt": "~1.0",
-                "seld/jsonlint": "~1.0",
-                "seld/phar-utils": "~1.0",
-                "symfony/console": "~2.5",
-                "symfony/filesystem": "~2.5",
-                "symfony/finder": "~2.2",
-                "symfony/process": "~2.1"
+                "composer/ca-bundle": "^1.0",
+                "composer/semver": "^3.0",
+                "composer/spdx-licenses": "^1.2",
+                "composer/xdebug-handler": "^1.1",
+                "justinrainbow/json-schema": "^5.2.10",
+                "php": "^5.3.2 || ^7.0 || ^8.0",
+                "psr/log": "^1.0",
+                "react/promise": "^1.2 || ^2.7",
+                "seld/jsonlint": "^1.4",
+                "seld/phar-utils": "^1.0",
+                "symfony/console": "^2.8.52 || ^3.4.35 || ^4.4 || ^5.0",
+                "symfony/filesystem": "^2.8.52 || ^3.4.35 || ^4.4 || ^5.0",
+                "symfony/finder": "^2.8.52 || ^3.4.35 || ^4.4 || ^5.0",
+                "symfony/process": "^2.8.52 || ^3.4.35 || ^4.4 || ^5.0"
             },
             "require-dev": {
-                "phpunit/phpunit": "~4.5|^5.0.5",
-                "phpunit/phpunit-mock-objects": "2.3.0|~3.0"
+                "phpspec/prophecy": "^1.10",
+                "symfony/phpunit-bridge": "^4.2 || ^5.0"
             },
             "suggest": {
                 "ext-openssl": "Enabling the openssl extension allows you to access https URLs for repositories and packages",
-                "ext-zip": "Enabling the zip extension allows you to unzip archives, and allows gzip compression of all internet traffic"
+                "ext-zip": "Enabling the zip extension allows you to unzip archives",
+                "ext-zlib": "Allow gzip compression of HTTP requests"
             },
             "bin": [
                 "bin/composer"
@@ -49,12 +118,12 @@
             "type": "library",
             "extra": {
                 "branch-alias": {
-                    "dev-master": "1.0-dev"
+                    "dev-master": "2.0-dev"
                 }
             },
             "autoload": {
-                "psr-0": {
-                    "Composer": "src/"
+                "psr-4": {
+                    "Composer\\": "src/Composer"
                 }
             },
             "notification-url": "https://packagist.org/downloads/",
@@ -65,48 +134,62 @@
                 {
                     "name": "Nils Adermann",
                     "email": "naderman@naderman.de",
-                    "homepage": "http://www.naderman.de"
+                    "homepage": "https://www.naderman.de"
                 },
                 {
                     "name": "Jordi Boggiano",
                     "email": "j.boggiano@seld.be",
-                    "homepage": "http://seld.be"
+                    "homepage": "https://seld.be"
                 }
             ],
-            "description": "Composer helps you declare, manage and install dependencies of PHP projects, ensuring you have the right stack everywhere.",
+            "description": "Composer helps you declare, manage and install dependencies of PHP projects. It ensures you have the right stack everywhere.",
             "homepage": "https://getcomposer.org/",
             "keywords": [
                 "autoload",
                 "dependency",
                 "package"
             ],
-            "time": "2015-10-13 13:09:04"
+            "funding": [
+                {
+                    "url": "https://packagist.com",
+                    "type": "custom"
+                },
+                {
+                    "url": "https://github.com/composer",
+                    "type": "github"
+                },
+                {
+                    "url": "https://tidelift.com/funding/github/packagist/composer/composer",
+                    "type": "tidelift"
+                }
+            ],
+            "time": "2020-07-15T15:02:16+00:00"
         },
         {
             "name": "composer/semver",
-            "version": "1.0.0",
+            "version": "dev-master",
             "source": {
                 "type": "git",
                 "url": "https://github.com/composer/semver.git",
-                "reference": "d0e1ccc6d44ab318b758d709e19176037da6b1ba"
+                "reference": "00915994bb1de62e750ae279669c9c5a57379957"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/composer/semver/zipball/d0e1ccc6d44ab318b758d709e19176037da6b1ba",
-                "reference": "d0e1ccc6d44ab318b758d709e19176037da6b1ba",
+                "url": "https://api.github.com/repos/composer/semver/zipball/00915994bb1de62e750ae279669c9c5a57379957",
+                "reference": "00915994bb1de62e750ae279669c9c5a57379957",
                 "shasum": ""
             },
             "require": {
-                "php": ">=5.3.2"
+                "php": "^5.3.2 || ^7.0 || ^8.0"
             },
             "require-dev": {
-                "phpunit/phpunit": "~4.5",
-                "phpunit/phpunit-mock-objects": "~2.3"
+                "phpstan/phpstan": "^0.12.19",
+                "symfony/phpunit-bridge": "^4.2 || ^5"
             },
             "type": "library",
             "extra": {
                 "branch-alias": {
-                    "dev-master": "0.1-dev"
+                    "dev-master": "3.x-dev"
                 }
             },
             "autoload": {
@@ -119,10 +202,6 @@
                 "MIT"
             ],
             "authors": [
-                {
-                    "name": "Rob Bast",
-                    "email": "rob.bast@gmail.com"
-                },
                 {
                     "name": "Nils Adermann",
                     "email": "naderman@naderman.de",
@@ -132,6 +211,11 @@
                     "name": "Jordi Boggiano",
                     "email": "j.boggiano@seld.be",
                     "homepage": "http://seld.be"
+                },
+                {
+                    "name": "Rob Bast",
+                    "email": "rob.bast@gmail.com",
+                    "homepage": "http://robbast.nl"
                 }
             ],
             "description": "Semver library that offers utilities, version constraint parsing and validation.",
@@ -141,7 +225,21 @@
                 "validation",
                 "versioning"
             ],
-            "time": "2015-09-21 09:42:36"
+            "funding": [
+                {
+                    "url": "https://packagist.com",
+                    "type": "custom"
+                },
+                {
+                    "url": "https://github.com/composer",
+                    "type": "github"
+                },
+                {
+                    "url": "https://tidelift.com/funding/github/packagist/composer/composer",
+                    "type": "tidelift"
+                }
+            ],
+            "time": "2020-05-31T11:44:06+00:00"
         },
         {
             "name": "composer/spdx-licenses",
@@ -149,20 +247,19 @@
             "source": {
                 "type": "git",
                 "url": "https://github.com/composer/spdx-licenses.git",
-                "reference": "b2dbc76d1c3f81f33857cdd49c0be6ce7b87897d"
+                "reference": "6946f785871e2314c60b4524851f3702ea4f2223"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/composer/spdx-licenses/zipball/022fc25ca664f612b1e7007e0d87642ef489f000",
-                "reference": "b2dbc76d1c3f81f33857cdd49c0be6ce7b87897d",
+                "url": "https://api.github.com/repos/composer/spdx-licenses/zipball/6946f785871e2314c60b4524851f3702ea4f2223",
+                "reference": "6946f785871e2314c60b4524851f3702ea4f2223",
                 "shasum": ""
             },
             "require": {
-                "php": ">=5.3.2"
+                "php": "^5.3.2 || ^7.0 || ^8.0"
             },
             "require-dev": {
-                "phpunit/phpunit": "~4.5",
-                "phpunit/phpunit-mock-objects": "~2.3"
+                "phpunit/phpunit": "^4.8.35 || ^5.7 || 6.5 - 7"
             },
             "type": "library",
             "extra": {
@@ -202,7 +299,79 @@
                 "spdx",
                 "validator"
             ],
-            "time": "2015-10-05 11:33:06"
+            "funding": [
+                {
+                    "url": "https://packagist.com",
+                    "type": "custom"
+                },
+                {
+                    "url": "https://github.com/composer",
+                    "type": "github"
+                },
+                {
+                    "url": "https://tidelift.com/funding/github/packagist/composer/composer",
+                    "type": "tidelift"
+                }
+            ],
+            "time": "2020-07-15T15:35:07+00:00"
+        },
+        {
+            "name": "composer/xdebug-handler",
+            "version": "1.4.2",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/composer/xdebug-handler.git",
+                "reference": "fa2aaf99e2087f013a14f7432c1cd2dd7d8f1f51"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/composer/xdebug-handler/zipball/fa2aaf99e2087f013a14f7432c1cd2dd7d8f1f51",
+                "reference": "fa2aaf99e2087f013a14f7432c1cd2dd7d8f1f51",
+                "shasum": ""
+            },
+            "require": {
+                "php": "^5.3.2 || ^7.0 || ^8.0",
+                "psr/log": "^1.0"
+            },
+            "require-dev": {
+                "phpunit/phpunit": "^4.8.35 || ^5.7 || 6.5 - 8"
+            },
+            "type": "library",
+            "autoload": {
+                "psr-4": {
+                    "Composer\\XdebugHandler\\": "src"
+                }
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "MIT"
+            ],
+            "authors": [
+                {
+                    "name": "John Stevenson",
+                    "email": "john-stevenson@blueyonder.co.uk"
+                }
+            ],
+            "description": "Restarts a process without Xdebug.",
+            "keywords": [
+                "Xdebug",
+                "performance"
+            ],
+            "funding": [
+                {
+                    "url": "https://packagist.com",
+                    "type": "custom"
+                },
+                {
+                    "url": "https://github.com/composer",
+                    "type": "github"
+                },
+                {
+                    "url": "https://tidelift.com/funding/github/packagist/composer/composer",
+                    "type": "tidelift"
+                }
+            ],
+            "time": "2020-06-04T11:16:35+00:00"
         },
         {
             "name": "doctrine/instantiator",
@@ -256,29 +425,29 @@
                 "constructor",
                 "instantiate"
             ],
-            "time": "2015-06-14 21:17:01"
+            "time": "2015-06-14T21:17:01+00:00"
         },
         {
             "name": "justinrainbow/json-schema",
-            "version": "1.5.0",
+            "version": "5.x-dev",
             "source": {
                 "type": "git",
                 "url": "https://github.com/justinrainbow/json-schema.git",
-                "reference": "a4bee9f4b344b66e0a0d96c7afae1e92edf385fe"
+                "reference": "2ba9c8c862ecd5510ed16c6340aa9f6eadb4f31b"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/justinrainbow/json-schema/zipball/a4bee9f4b344b66e0a0d96c7afae1e92edf385fe",
-                "reference": "a4bee9f4b344b66e0a0d96c7afae1e92edf385fe",
+                "url": "https://api.github.com/repos/justinrainbow/json-schema/zipball/2ba9c8c862ecd5510ed16c6340aa9f6eadb4f31b",
+                "reference": "2ba9c8c862ecd5510ed16c6340aa9f6eadb4f31b",
                 "shasum": ""
             },
             "require": {
-                "php": ">=5.3.2"
+                "php": ">=5.3.3"
             },
             "require-dev": {
-                "json-schema/json-schema-test-suite": "1.1.0",
-                "phpdocumentor/phpdocumentor": "~2",
-                "phpunit/phpunit": "~3.7"
+                "friendsofphp/php-cs-fixer": "~2.2.20||~2.15.1",
+                "json-schema/json-schema-test-suite": "1.2.0",
+                "phpunit/phpunit": "^4.8.35"
             },
             "bin": [
                 "bin/validate-json"
@@ -286,7 +455,7 @@
             "type": "library",
             "extra": {
                 "branch-alias": {
-                    "dev-master": "1.4.x-dev"
+                    "dev-master": "5.0.x-dev"
                 }
             },
             "autoload": {
@@ -296,7 +465,7 @@
             },
             "notification-url": "https://packagist.org/downloads/",
             "license": [
-                "BSD-3-Clause"
+                "MIT"
             ],
             "authors": [
                 {
@@ -322,7 +491,7 @@
                 "json",
                 "schema"
             ],
-            "time": "2015-09-08 22:28:04"
+            "time": "2020-05-27T16:41:55+00:00"
         },
         {
             "name": "phpdocumentor/reflection-docblock",
@@ -371,7 +540,7 @@
                     "email": "mike.vanriel@naenius.com"
                 }
             ],
-            "time": "2015-02-03 12:10:50"
+            "time": "2015-02-03T12:10:50+00:00"
         },
         {
             "name": "phpspec/prophecy",
@@ -383,7 +552,7 @@
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/phpspec/prophecy/zipball/b02221e42163be673f9b44a0bc92a8b4907a7c6d",
+                "url": "https://api.github.com/repos/phpspec/prophecy/zipball/4f9b1eaf0a7da77c362f8d91cbc68ab1f4718d62",
                 "reference": "4f9b1eaf0a7da77c362f8d91cbc68ab1f4718d62",
                 "shasum": ""
             },
@@ -431,7 +600,7 @@
                 "spy",
                 "stub"
             ],
-            "time": "2015-09-22 14:49:23"
+            "time": "2015-09-22T14:49:23+00:00"
         },
         {
             "name": "phpunit/php-code-coverage",
@@ -493,7 +662,7 @@
                 "testing",
                 "xunit"
             ],
-            "time": "2015-10-06 15:47:00"
+            "time": "2015-10-06T15:47:00+00:00"
         },
         {
             "name": "phpunit/php-file-iterator",
@@ -540,7 +709,7 @@
                 "filesystem",
                 "iterator"
             ],
-            "time": "2015-06-21 13:08:43"
+            "time": "2015-06-21T13:08:43+00:00"
         },
         {
             "name": "phpunit/php-text-template",
@@ -581,7 +750,7 @@
             "keywords": [
                 "template"
             ],
-            "time": "2015-06-21 13:50:34"
+            "time": "2015-06-21T13:50:34+00:00"
         },
         {
             "name": "phpunit/php-timer",
@@ -622,7 +791,7 @@
             "keywords": [
                 "timer"
             ],
-            "time": "2015-06-21 08:01:12"
+            "time": "2015-06-21T08:01:12+00:00"
         },
         {
             "name": "phpunit/php-token-stream",
@@ -671,7 +840,7 @@
             "keywords": [
                 "tokenizer"
             ],
-            "time": "2015-09-23 14:46:55"
+            "time": "2015-09-23T14:46:55+00:00"
         },
         {
             "name": "phpunit/phpunit",
@@ -743,7 +912,7 @@
                 "testing",
                 "xunit"
             ],
-            "time": "2015-10-14 13:49:40"
+            "time": "2015-10-14T13:49:40+00:00"
         },
         {
             "name": "phpunit/phpunit-mock-objects",
@@ -799,7 +968,150 @@
                 "mock",
                 "xunit"
             ],
-            "time": "2015-10-02 06:51:40"
+            "abandoned": true,
+            "time": "2015-10-02T06:51:40+00:00"
+        },
+        {
+            "name": "psr/container",
+            "version": "dev-master",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/php-fig/container.git",
+                "reference": "fc1bc363ecf887921e3897c7b1dad3587ae154eb"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/php-fig/container/zipball/fc1bc363ecf887921e3897c7b1dad3587ae154eb",
+                "reference": "fc1bc363ecf887921e3897c7b1dad3587ae154eb",
+                "shasum": ""
+            },
+            "require": {
+                "php": ">=5.3.0"
+            },
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "1.0.x-dev"
+                }
+            },
+            "autoload": {
+                "psr-4": {
+                    "Psr\\Container\\": "src/"
+                }
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "MIT"
+            ],
+            "authors": [
+                {
+                    "name": "PHP-FIG",
+                    "homepage": "http://www.php-fig.org/"
+                }
+            ],
+            "description": "Common Container Interface (PHP FIG PSR-11)",
+            "homepage": "https://github.com/php-fig/container",
+            "keywords": [
+                "PSR-11",
+                "container",
+                "container-interface",
+                "container-interop",
+                "psr"
+            ],
+            "time": "2019-10-04T14:07:35+00:00"
+        },
+        {
+            "name": "psr/log",
+            "version": "dev-master",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/php-fig/log.git",
+                "reference": "0f73288fd15629204f9d42b7055f72dacbe811fc"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/php-fig/log/zipball/0f73288fd15629204f9d42b7055f72dacbe811fc",
+                "reference": "0f73288fd15629204f9d42b7055f72dacbe811fc",
+                "shasum": ""
+            },
+            "require": {
+                "php": ">=5.3.0"
+            },
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "1.1.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": "2020-03-23T09:12:05+00:00"
+        },
+        {
+            "name": "react/promise",
+            "version": "2.x-dev",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/reactphp/promise.git",
+                "reference": "f3cff96a19736714524ca0dd1d4130de73dbbbc4"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/reactphp/promise/zipball/f3cff96a19736714524ca0dd1d4130de73dbbbc4",
+                "reference": "f3cff96a19736714524ca0dd1d4130de73dbbbc4",
+                "shasum": ""
+            },
+            "require": {
+                "php": ">=5.4.0"
+            },
+            "require-dev": {
+                "phpunit/phpunit": "^7.0 || ^6.5 || ^5.7 || ^4.8.36"
+            },
+            "type": "library",
+            "autoload": {
+                "psr-4": {
+                    "React\\Promise\\": "src/"
+                },
+                "files": [
+                    "src/functions_include.php"
+                ]
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "MIT"
+            ],
+            "authors": [
+                {
+                    "name": "Jan Sorgalla",
+                    "email": "jsorgalla@gmail.com"
+                }
+            ],
+            "description": "A lightweight implementation of CommonJS Promises/A for PHP",
+            "keywords": [
+                "promise",
+                "promises"
+            ],
+            "time": "2020-05-12T15:16:56+00:00"
         },
         {
             "name": "sebastian/comparator",
@@ -863,7 +1175,7 @@
                 "compare",
                 "equality"
             ],
-            "time": "2015-07-26 15:48:44"
+            "time": "2015-07-26T15:48:44+00:00"
         },
         {
             "name": "sebastian/diff",
@@ -875,7 +1187,7 @@
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/13edfd8706462032c2f52b4b862974dd46b71c9e",
+                "url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/6899b3e33bfbd386d88b5eea5f65f563e8793051",
                 "reference": "6899b3e33bfbd386d88b5eea5f65f563e8793051",
                 "shasum": ""
             },
@@ -915,7 +1227,7 @@
             "keywords": [
                 "diff"
             ],
-            "time": "2015-06-22 14:15:55"
+            "time": "2015-06-22T14:15:55+00:00"
         },
         {
             "name": "sebastian/environment",
@@ -965,7 +1277,7 @@
                 "environment",
                 "hhvm"
             ],
-            "time": "2015-08-03 06:14:51"
+            "time": "2015-08-03T06:14:51+00:00"
         },
         {
             "name": "sebastian/exporter",
@@ -1032,7 +1344,7 @@
                 "export",
                 "exporter"
             ],
-            "time": "2015-08-09 04:23:41"
+            "time": "2015-08-09T04:23:41+00:00"
         },
         {
             "name": "sebastian/global-state",
@@ -1083,7 +1395,7 @@
             "keywords": [
                 "global state"
             ],
-            "time": "2015-10-12 03:26:01"
+            "time": "2015-10-12T03:26:01+00:00"
         },
         {
             "name": "sebastian/recursion-context",
@@ -1095,7 +1407,7 @@
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/sebastianbergmann/recursion-context/zipball/7ff5b1b3dcc55b8ab8ae61ef99d4730940856ee7",
+                "url": "https://api.github.com/repos/sebastianbergmann/recursion-context/zipball/994d4a811bafe801fb06dccbee797863ba2792ba",
                 "reference": "994d4a811bafe801fb06dccbee797863ba2792ba",
                 "shasum": ""
             },
@@ -1136,7 +1448,7 @@
             ],
             "description": "Provides functionality to recursively process PHP variables",
             "homepage": "http://www.github.com/sebastianbergmann/recursion-context",
-            "time": "2015-06-21 08:04:50"
+            "time": "2015-06-21T08:04:50+00:00"
         },
         {
             "name": "sebastian/version",
@@ -1171,72 +1483,27 @@
             ],
             "description": "Library that helps with managing the version number of Git-hosted PHP projects",
             "homepage": "https://github.com/sebastianbergmann/version",
-            "time": "2015-06-21 13:59:46"
-        },
-        {
-            "name": "seld/cli-prompt",
-            "version": "dev-master",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/Seldaek/cli-prompt.git",
-                "reference": "fe114c7a6ac5cb0ce76932ae4017024d9842a49c"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/Seldaek/cli-prompt/zipball/b27db1514f7d7bb7a366ad95d4eb2b17140a0691",
-                "reference": "fe114c7a6ac5cb0ce76932ae4017024d9842a49c",
-                "shasum": ""
-            },
-            "require": {
-                "php": ">=5.3"
-            },
-            "type": "library",
-            "extra": {
-                "branch-alias": {
-                    "dev-master": "1.x-dev"
-                }
-            },
-            "autoload": {
-                "psr-4": {
-                    "Seld\\CliPrompt\\": "src/"
-                }
-            },
-            "notification-url": "https://packagist.org/downloads/",
-            "license": [
-                "MIT"
-            ],
-            "authors": [
-                {
-                    "name": "Jordi Boggiano",
-                    "email": "j.boggiano@seld.be"
-                }
-            ],
-            "description": "Allows you to prompt for user input on the command line, and optionally hide the characters they type",
-            "keywords": [
-                "cli",
-                "console",
-                "hidden",
-                "input",
-                "prompt"
-            ],
-            "time": "2015-04-30 20:24:49"
+            "time": "2015-06-21T13:59:46+00:00"
         },
         {
             "name": "seld/jsonlint",
-            "version": "1.3.1",
+            "version": "1.8.0",
             "source": {
                 "type": "git",
                 "url": "https://github.com/Seldaek/jsonlint.git",
-                "reference": "863ae85c6d3ef60ca49cb12bd051c4a0648c40c4"
+                "reference": "ff2aa5420bfbc296cf6a0bc785fa5b35736de7c1"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/Seldaek/jsonlint/zipball/863ae85c6d3ef60ca49cb12bd051c4a0648c40c4",
-                "reference": "863ae85c6d3ef60ca49cb12bd051c4a0648c40c4",
+                "url": "https://api.github.com/repos/Seldaek/jsonlint/zipball/ff2aa5420bfbc296cf6a0bc785fa5b35736de7c1",
+                "reference": "ff2aa5420bfbc296cf6a0bc785fa5b35736de7c1",
                 "shasum": ""
             },
             "require": {
-                "php": ">=5.3.0"
+                "php": "^5.3 || ^7.0 || ^8.0"
+            },
+            "require-dev": {
+                "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.0"
             },
             "bin": [
                 "bin/jsonlint"
@@ -1265,20 +1532,30 @@
                 "parser",
                 "validator"
             ],
-            "time": "2015-01-04 21:18:15"
-        },
-        {
-            "name": "seld/phar-utils",
-            "version": "dev-master",
+            "funding": [
+                {
+                    "url": "https://github.com/Seldaek",
+                    "type": "github"
+                },
+                {
+                    "url": "https://tidelift.com/funding/github/packagist/seld/jsonlint",
+                    "type": "tidelift"
+                }
+            ],
+            "time": "2020-04-30T19:05:18+00:00"
+        },
+        {
+            "name": "seld/phar-utils",
+            "version": "dev-master",
             "source": {
                 "type": "git",
                 "url": "https://github.com/Seldaek/phar-utils.git",
-                "reference": "7009b5139491975ef6486545a39f3e6dad5ac30a"
+                "reference": "8674b1d84ffb47cc59a101f5d5a3b61e87d23796"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/Seldaek/phar-utils/zipball/7009b5139491975ef6486545a39f3e6dad5ac30a",
-                "reference": "7009b5139491975ef6486545a39f3e6dad5ac30a",
+                "url": "https://api.github.com/repos/Seldaek/phar-utils/zipball/8674b1d84ffb47cc59a101f5d5a3b61e87d23796",
+                "reference": "8674b1d84ffb47cc59a101f5d5a3b61e87d23796",
                 "shasum": ""
             },
             "require": {
@@ -1307,47 +1584,70 @@
             ],
             "description": "PHAR file format utilities, for when PHP phars you up",
             "keywords": [
-                "phra"
+                "phar"
             ],
-            "time": "2015-10-13 18:44:15"
+            "time": "2020-07-07T18:42:57+00:00"
         },
         {
             "name": "symfony/console",
-            "version": "2.8.x-dev",
+            "version": "dev-master",
             "source": {
                 "type": "git",
                 "url": "https://github.com/symfony/console.git",
-                "reference": "89a795226477f66745e8ea10415e769304114920"
+                "reference": "e4a70bd8c5a4382630197b7b87910b3fc0e6b526"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/symfony/console/zipball/56cc5caf051189720b8de974e4746090aaa10d44",
-                "reference": "89a795226477f66745e8ea10415e769304114920",
+                "url": "https://api.github.com/repos/symfony/console/zipball/e4a70bd8c5a4382630197b7b87910b3fc0e6b526",
+                "reference": "e4a70bd8c5a4382630197b7b87910b3fc0e6b526",
                 "shasum": ""
             },
             "require": {
-                "php": ">=5.3.9"
+                "php": ">=7.2.5",
+                "symfony/polyfill-mbstring": "~1.0",
+                "symfony/polyfill-php73": "^1.8",
+                "symfony/polyfill-php80": "^1.15",
+                "symfony/service-contracts": "^1.1|^2",
+                "symfony/string": "^5.1"
+            },
+            "conflict": {
+                "symfony/dependency-injection": "<4.4",
+                "symfony/dotenv": "<5.1",
+                "symfony/event-dispatcher": "<4.4",
+                "symfony/lock": "<4.4",
+                "symfony/process": "<4.4"
+            },
+            "provide": {
+                "psr/log-implementation": "1.0"
             },
             "require-dev": {
                 "psr/log": "~1.0",
-                "symfony/event-dispatcher": "~2.1|~3.0.0",
-                "symfony/process": "~2.1|~3.0.0"
+                "symfony/config": "^4.4|^5.0",
+                "symfony/dependency-injection": "^4.4|^5.0",
+                "symfony/event-dispatcher": "^4.4|^5.0",
+                "symfony/lock": "^4.4|^5.0",
+                "symfony/process": "^4.4|^5.0",
+                "symfony/var-dumper": "^4.4|^5.0"
             },
             "suggest": {
                 "psr/log": "For using the console logger",
                 "symfony/event-dispatcher": "",
+                "symfony/lock": "",
                 "symfony/process": ""
             },
             "type": "library",
             "extra": {
                 "branch-alias": {
-                    "dev-master": "2.8-dev"
+                    "dev-master": "5.2-dev"
                 }
             },
             "autoload": {
                 "psr-4": {
                     "Symfony\\Component\\Console\\": ""
-                }
+                },
+                "exclude-from-classmap": [
+                    "/Tests/"
+                ]
             },
             "notification-url": "https://packagist.org/downloads/",
             "license": [
@@ -1365,35 +1665,59 @@
             ],
             "description": "Symfony Console Component",
             "homepage": "https://symfony.com",
-            "time": "2015-10-12 10:31:17"
+            "keywords": [
+                "cli",
+                "command line",
+                "console",
+                "terminal"
+            ],
+            "funding": [
+                {
+                    "url": "https://symfony.com/sponsor",
+                    "type": "custom"
+                },
+                {
+                    "url": "https://github.com/fabpot",
+                    "type": "github"
+                },
+                {
+                    "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+                    "type": "tidelift"
+                }
+            ],
+            "time": "2020-07-06T13:25:45+00:00"
         },
         {
             "name": "symfony/filesystem",
-            "version": "2.8.x-dev",
+            "version": "dev-master",
             "source": {
                 "type": "git",
                 "url": "https://github.com/symfony/filesystem.git",
-                "reference": "fc3fe52fef85e1f3e7775ffad92539e16c20e0af"
+                "reference": "e7550993849f986f01a9161b302d4aed8d4aab0a"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/symfony/filesystem/zipball/65cb36b6539b1d446527d60457248f30d045464d",
-                "reference": "fc3fe52fef85e1f3e7775ffad92539e16c20e0af",
+                "url": "https://api.github.com/repos/symfony/filesystem/zipball/e7550993849f986f01a9161b302d4aed8d4aab0a",
+                "reference": "e7550993849f986f01a9161b302d4aed8d4aab0a",
                 "shasum": ""
             },
             "require": {
-                "php": ">=5.3.9"
+                "php": ">=7.2.5",
+                "symfony/polyfill-ctype": "~1.8"
             },
             "type": "library",
             "extra": {
                 "branch-alias": {
-                    "dev-master": "2.8-dev"
+                    "dev-master": "5.2-dev"
                 }
             },
             "autoload": {
                 "psr-4": {
                     "Symfony\\Component\\Filesystem\\": ""
-                }
+                },
+                "exclude-from-classmap": [
+                    "/Tests/"
+                ]
             },
             "notification-url": "https://packagist.org/downloads/",
             "license": [
@@ -1411,35 +1735,52 @@
             ],
             "description": "Symfony Filesystem Component",
             "homepage": "https://symfony.com",
-            "time": "2015-10-11 08:29:26"
+            "funding": [
+                {
+                    "url": "https://symfony.com/sponsor",
+                    "type": "custom"
+                },
+                {
+                    "url": "https://github.com/fabpot",
+                    "type": "github"
+                },
+                {
+                    "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+                    "type": "tidelift"
+                }
+            ],
+            "time": "2020-05-30T20:38:10+00:00"
         },
         {
             "name": "symfony/finder",
-            "version": "2.8.x-dev",
+            "version": "dev-master",
             "source": {
                 "type": "git",
                 "url": "https://github.com/symfony/finder.git",
-                "reference": "dcd5aaba34ca332abb7f33ec554ebd4d829cb202"
+                "reference": "2a63a45741144325f84d28ea1e67bc1b669b1748"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/symfony/finder/zipball/877bb4b16ea573cc8c024e9590888fcf7eb7e0f7",
-                "reference": "dcd5aaba34ca332abb7f33ec554ebd4d829cb202",
+                "url": "https://api.github.com/repos/symfony/finder/zipball/2a63a45741144325f84d28ea1e67bc1b669b1748",
+                "reference": "2a63a45741144325f84d28ea1e67bc1b669b1748",
                 "shasum": ""
             },
             "require": {
-                "php": ">=5.3.9"
+                "php": ">=7.2.5"
             },
             "type": "library",
             "extra": {
                 "branch-alias": {
-                    "dev-master": "2.8-dev"
+                    "dev-master": "5.2-dev"
                 }
             },
             "autoload": {
                 "psr-4": {
                     "Symfony\\Component\\Finder\\": ""
-                }
+                },
+                "exclude-from-classmap": [
+                    "/Tests/"
+                ]
             },
             "notification-url": "https://packagist.org/downloads/",
             "license": [
@@ -1457,35 +1798,521 @@
             ],
             "description": "Symfony Finder Component",
             "homepage": "https://symfony.com",
-            "time": "2015-10-11 08:29:26"
+            "funding": [
+                {
+                    "url": "https://symfony.com/sponsor",
+                    "type": "custom"
+                },
+                {
+                    "url": "https://github.com/fabpot",
+                    "type": "github"
+                },
+                {
+                    "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+                    "type": "tidelift"
+                }
+            ],
+            "time": "2020-05-20T17:44:07+00:00"
+        },
+        {
+            "name": "symfony/polyfill-ctype",
+            "version": "dev-master",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/symfony/polyfill-ctype.git",
+                "reference": "1c302646f6efc070cd46856e600e5e0684d6b454"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/1c302646f6efc070cd46856e600e5e0684d6b454",
+                "reference": "1c302646f6efc070cd46856e600e5e0684d6b454",
+                "shasum": ""
+            },
+            "require": {
+                "php": ">=5.3.3"
+            },
+            "suggest": {
+                "ext-ctype": "For best performance"
+            },
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "1.18-dev"
+                },
+                "thanks": {
+                    "name": "symfony/polyfill",
+                    "url": "https://github.com/symfony/polyfill"
+                }
+            },
+            "autoload": {
+                "psr-4": {
+                    "Symfony\\Polyfill\\Ctype\\": ""
+                },
+                "files": [
+                    "bootstrap.php"
+                ]
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "MIT"
+            ],
+            "authors": [
+                {
+                    "name": "Gert de Pagter",
+                    "email": "BackEndTea@gmail.com"
+                },
+                {
+                    "name": "Symfony Community",
+                    "homepage": "https://symfony.com/contributors"
+                }
+            ],
+            "description": "Symfony polyfill for ctype functions",
+            "homepage": "https://symfony.com",
+            "keywords": [
+                "compatibility",
+                "ctype",
+                "polyfill",
+                "portable"
+            ],
+            "funding": [
+                {
+                    "url": "https://symfony.com/sponsor",
+                    "type": "custom"
+                },
+                {
+                    "url": "https://github.com/fabpot",
+                    "type": "github"
+                },
+                {
+                    "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+                    "type": "tidelift"
+                }
+            ],
+            "time": "2020-07-14T12:35:20+00:00"
+        },
+        {
+            "name": "symfony/polyfill-intl-grapheme",
+            "version": "dev-master",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/symfony/polyfill-intl-grapheme.git",
+                "reference": "b740103edbdcc39602239ee8860f0f45a8eb9aa5"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/symfony/polyfill-intl-grapheme/zipball/b740103edbdcc39602239ee8860f0f45a8eb9aa5",
+                "reference": "b740103edbdcc39602239ee8860f0f45a8eb9aa5",
+                "shasum": ""
+            },
+            "require": {
+                "php": ">=5.3.3"
+            },
+            "suggest": {
+                "ext-intl": "For best performance"
+            },
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "1.18-dev"
+                },
+                "thanks": {
+                    "name": "symfony/polyfill",
+                    "url": "https://github.com/symfony/polyfill"
+                }
+            },
+            "autoload": {
+                "psr-4": {
+                    "Symfony\\Polyfill\\Intl\\Grapheme\\": ""
+                },
+                "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 intl's grapheme_* functions",
+            "homepage": "https://symfony.com",
+            "keywords": [
+                "compatibility",
+                "grapheme",
+                "intl",
+                "polyfill",
+                "portable",
+                "shim"
+            ],
+            "funding": [
+                {
+                    "url": "https://symfony.com/sponsor",
+                    "type": "custom"
+                },
+                {
+                    "url": "https://github.com/fabpot",
+                    "type": "github"
+                },
+                {
+                    "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+                    "type": "tidelift"
+                }
+            ],
+            "time": "2020-07-14T12:35:20+00:00"
+        },
+        {
+            "name": "symfony/polyfill-intl-normalizer",
+            "version": "dev-master",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/symfony/polyfill-intl-normalizer.git",
+                "reference": "37078a8dd4a2a1e9ab0231af7c6cb671b2ed5a7e"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/symfony/polyfill-intl-normalizer/zipball/37078a8dd4a2a1e9ab0231af7c6cb671b2ed5a7e",
+                "reference": "37078a8dd4a2a1e9ab0231af7c6cb671b2ed5a7e",
+                "shasum": ""
+            },
+            "require": {
+                "php": ">=5.3.3"
+            },
+            "suggest": {
+                "ext-intl": "For best performance"
+            },
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "1.18-dev"
+                },
+                "thanks": {
+                    "name": "symfony/polyfill",
+                    "url": "https://github.com/symfony/polyfill"
+                }
+            },
+            "autoload": {
+                "psr-4": {
+                    "Symfony\\Polyfill\\Intl\\Normalizer\\": ""
+                },
+                "files": [
+                    "bootstrap.php"
+                ],
+                "classmap": [
+                    "Resources/stubs"
+                ]
+            },
+            "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 intl's Normalizer class and related functions",
+            "homepage": "https://symfony.com",
+            "keywords": [
+                "compatibility",
+                "intl",
+                "normalizer",
+                "polyfill",
+                "portable",
+                "shim"
+            ],
+            "funding": [
+                {
+                    "url": "https://symfony.com/sponsor",
+                    "type": "custom"
+                },
+                {
+                    "url": "https://github.com/fabpot",
+                    "type": "github"
+                },
+                {
+                    "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+                    "type": "tidelift"
+                }
+            ],
+            "time": "2020-07-14T12:35:20+00:00"
+        },
+        {
+            "name": "symfony/polyfill-mbstring",
+            "version": "dev-master",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/symfony/polyfill-mbstring.git",
+                "reference": "a6977d63bf9a0ad4c65cd352709e230876f9904a"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/a6977d63bf9a0ad4c65cd352709e230876f9904a",
+                "reference": "a6977d63bf9a0ad4c65cd352709e230876f9904a",
+                "shasum": ""
+            },
+            "require": {
+                "php": ">=5.3.3"
+            },
+            "suggest": {
+                "ext-mbstring": "For best performance"
+            },
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "1.18-dev"
+                },
+                "thanks": {
+                    "name": "symfony/polyfill",
+                    "url": "https://github.com/symfony/polyfill"
+                }
+            },
+            "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"
+            ],
+            "funding": [
+                {
+                    "url": "https://symfony.com/sponsor",
+                    "type": "custom"
+                },
+                {
+                    "url": "https://github.com/fabpot",
+                    "type": "github"
+                },
+                {
+                    "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+                    "type": "tidelift"
+                }
+            ],
+            "time": "2020-07-14T12:35:20+00:00"
+        },
+        {
+            "name": "symfony/polyfill-php73",
+            "version": "dev-master",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/symfony/polyfill-php73.git",
+                "reference": "fffa1a52a023e782cdcc221d781fe1ec8f87fcca"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/symfony/polyfill-php73/zipball/fffa1a52a023e782cdcc221d781fe1ec8f87fcca",
+                "reference": "fffa1a52a023e782cdcc221d781fe1ec8f87fcca",
+                "shasum": ""
+            },
+            "require": {
+                "php": ">=5.3.3"
+            },
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "1.18-dev"
+                },
+                "thanks": {
+                    "name": "symfony/polyfill",
+                    "url": "https://github.com/symfony/polyfill"
+                }
+            },
+            "autoload": {
+                "psr-4": {
+                    "Symfony\\Polyfill\\Php73\\": ""
+                },
+                "files": [
+                    "bootstrap.php"
+                ],
+                "classmap": [
+                    "Resources/stubs"
+                ]
+            },
+            "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.3+ features to lower PHP versions",
+            "homepage": "https://symfony.com",
+            "keywords": [
+                "compatibility",
+                "polyfill",
+                "portable",
+                "shim"
+            ],
+            "funding": [
+                {
+                    "url": "https://symfony.com/sponsor",
+                    "type": "custom"
+                },
+                {
+                    "url": "https://github.com/fabpot",
+                    "type": "github"
+                },
+                {
+                    "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+                    "type": "tidelift"
+                }
+            ],
+            "time": "2020-07-14T12:35:20+00:00"
+        },
+        {
+            "name": "symfony/polyfill-php80",
+            "version": "dev-master",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/symfony/polyfill-php80.git",
+                "reference": "d87d5766cbf48d72388a9f6b85f280c8ad51f981"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/symfony/polyfill-php80/zipball/d87d5766cbf48d72388a9f6b85f280c8ad51f981",
+                "reference": "d87d5766cbf48d72388a9f6b85f280c8ad51f981",
+                "shasum": ""
+            },
+            "require": {
+                "php": ">=7.0.8"
+            },
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "1.18-dev"
+                },
+                "thanks": {
+                    "name": "symfony/polyfill",
+                    "url": "https://github.com/symfony/polyfill"
+                }
+            },
+            "autoload": {
+                "psr-4": {
+                    "Symfony\\Polyfill\\Php80\\": ""
+                },
+                "files": [
+                    "bootstrap.php"
+                ],
+                "classmap": [
+                    "Resources/stubs"
+                ]
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "MIT"
+            ],
+            "authors": [
+                {
+                    "name": "Ion Bazan",
+                    "email": "ion.bazan@gmail.com"
+                },
+                {
+                    "name": "Nicolas Grekas",
+                    "email": "p@tchwork.com"
+                },
+                {
+                    "name": "Symfony Community",
+                    "homepage": "https://symfony.com/contributors"
+                }
+            ],
+            "description": "Symfony polyfill backporting some PHP 8.0+ features to lower PHP versions",
+            "homepage": "https://symfony.com",
+            "keywords": [
+                "compatibility",
+                "polyfill",
+                "portable",
+                "shim"
+            ],
+            "funding": [
+                {
+                    "url": "https://symfony.com/sponsor",
+                    "type": "custom"
+                },
+                {
+                    "url": "https://github.com/fabpot",
+                    "type": "github"
+                },
+                {
+                    "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+                    "type": "tidelift"
+                }
+            ],
+            "time": "2020-07-14T12:35:20+00:00"
         },
         {
             "name": "symfony/process",
-            "version": "2.8.x-dev",
+            "version": "dev-master",
             "source": {
                 "type": "git",
                 "url": "https://github.com/symfony/process.git",
-                "reference": "4e1daf58b375ea7c506d525dc7801df1c9a6ebbd"
+                "reference": "d158a452d952049e0e55b7cfe5f360c973edc57c"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/symfony/process/zipball/7dedd5b60550f33dca16dd7e94ef8aca8b67bbfe",
-                "reference": "4e1daf58b375ea7c506d525dc7801df1c9a6ebbd",
+                "url": "https://api.github.com/repos/symfony/process/zipball/d158a452d952049e0e55b7cfe5f360c973edc57c",
+                "reference": "d158a452d952049e0e55b7cfe5f360c973edc57c",
                 "shasum": ""
             },
             "require": {
-                "php": ">=5.3.9"
+                "php": ">=7.2.5",
+                "symfony/polyfill-php80": "^1.15"
             },
             "type": "library",
             "extra": {
                 "branch-alias": {
-                    "dev-master": "2.8-dev"
+                    "dev-master": "5.2-dev"
                 }
             },
             "autoload": {
                 "psr-4": {
                     "Symfony\\Component\\Process\\": ""
-                }
+                },
+                "exclude-from-classmap": [
+                    "/Tests/"
+                ]
             },
             "notification-url": "https://packagist.org/downloads/",
             "license": [
@@ -1503,7 +2330,182 @@
             ],
             "description": "Symfony Process Component",
             "homepage": "https://symfony.com",
-            "time": "2015-10-11 08:29:26"
+            "funding": [
+                {
+                    "url": "https://symfony.com/sponsor",
+                    "type": "custom"
+                },
+                {
+                    "url": "https://github.com/fabpot",
+                    "type": "github"
+                },
+                {
+                    "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+                    "type": "tidelift"
+                }
+            ],
+            "time": "2020-07-06T13:25:45+00:00"
+        },
+        {
+            "name": "symfony/service-contracts",
+            "version": "dev-master",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/symfony/service-contracts.git",
+                "reference": "58c7475e5457c5492c26cc740cc0ad7464be9442"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/symfony/service-contracts/zipball/58c7475e5457c5492c26cc740cc0ad7464be9442",
+                "reference": "58c7475e5457c5492c26cc740cc0ad7464be9442",
+                "shasum": ""
+            },
+            "require": {
+                "php": ">=7.2.5",
+                "psr/container": "^1.0"
+            },
+            "suggest": {
+                "symfony/service-implementation": ""
+            },
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "2.1-dev"
+                },
+                "thanks": {
+                    "name": "symfony/contracts",
+                    "url": "https://github.com/symfony/contracts"
+                }
+            },
+            "autoload": {
+                "psr-4": {
+                    "Symfony\\Contracts\\Service\\": ""
+                }
+            },
+            "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": "Generic abstractions related to writing services",
+            "homepage": "https://symfony.com",
+            "keywords": [
+                "abstractions",
+                "contracts",
+                "decoupling",
+                "interfaces",
+                "interoperability",
+                "standards"
+            ],
+            "funding": [
+                {
+                    "url": "https://symfony.com/sponsor",
+                    "type": "custom"
+                },
+                {
+                    "url": "https://github.com/fabpot",
+                    "type": "github"
+                },
+                {
+                    "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+                    "type": "tidelift"
+                }
+            ],
+            "time": "2020-07-06T13:23:11+00:00"
+        },
+        {
+            "name": "symfony/string",
+            "version": "dev-master",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/symfony/string.git",
+                "reference": "b7914561c03f8d78f83eec3ec4502adbdc343c48"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/symfony/string/zipball/b7914561c03f8d78f83eec3ec4502adbdc343c48",
+                "reference": "b7914561c03f8d78f83eec3ec4502adbdc343c48",
+                "shasum": ""
+            },
+            "require": {
+                "php": ">=7.2.5",
+                "symfony/polyfill-ctype": "~1.8",
+                "symfony/polyfill-intl-grapheme": "~1.0",
+                "symfony/polyfill-intl-normalizer": "~1.0",
+                "symfony/polyfill-mbstring": "~1.0",
+                "symfony/polyfill-php80": "~1.15"
+            },
+            "require-dev": {
+                "symfony/error-handler": "^4.4|^5.0",
+                "symfony/http-client": "^4.4|^5.0",
+                "symfony/translation-contracts": "^1.1|^2",
+                "symfony/var-exporter": "^4.4|^5.0"
+            },
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "5.2-dev"
+                }
+            },
+            "autoload": {
+                "psr-4": {
+                    "Symfony\\Component\\String\\": ""
+                },
+                "files": [
+                    "Resources/functions.php"
+                ],
+                "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 String component",
+            "homepage": "https://symfony.com",
+            "keywords": [
+                "grapheme",
+                "i18n",
+                "string",
+                "unicode",
+                "utf-8",
+                "utf8"
+            ],
+            "funding": [
+                {
+                    "url": "https://symfony.com/sponsor",
+                    "type": "custom"
+                },
+                {
+                    "url": "https://github.com/fabpot",
+                    "type": "github"
+                },
+                {
+                    "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+                    "type": "tidelift"
+                }
+            ],
+            "time": "2020-07-08T08:28:10+00:00"
         },
         {
             "name": "symfony/yaml",
@@ -1549,7 +2551,7 @@
             ],
             "description": "Symfony Yaml Component",
             "homepage": "https://symfony.com",
-            "time": "2015-10-13 16:01:35"
+            "time": "2015-10-13T16:01:35+00:00"
         }
     ],
     "aliases": [],
@@ -1558,7 +2560,9 @@
     "prefer-stable": false,
     "prefer-lowest": false,
     "platform": {
-        "php": ">=5.3.0"
+        "php": ">=5.3.0",
+        "composer-plugin-api": "^1.0 || ^2.0"
     },
-    "platform-dev": []
+    "platform-dev": [],
+    "plugin-api-version": "1.1.0"
 }
diff --git a/vendor/cweagans/composer-patches/src/Patches.php b/vendor/cweagans/composer-patches/src/Patches.php
index 70c5b83421..0e36c7ff35 100644
--- a/vendor/cweagans/composer-patches/src/Patches.php
+++ b/vendor/cweagans/composer-patches/src/Patches.php
@@ -115,7 +115,7 @@ public function checkPatches(Event $event) {
           $this->installedPatches[$package->getName()] = $extra['patches'];
         }
         $patches = isset($extra['patches']) ? $extra['patches'] : array();
-        $tmp_patches = array_merge_recursive($tmp_patches, $patches);
+        $tmp_patches = $this->arrayMergeRecursiveDistinct($tmp_patches, $patches);
       }
 
       if ($tmp_patches == FALSE) {
@@ -129,7 +129,7 @@ public function checkPatches(Event $event) {
           $package_name = $package->getName();
           $extra = $package->getExtra();
           $has_patches = isset($tmp_patches[$package_name]);
-          $has_applied_patches = isset($extra['patches_applied']);
+          $has_applied_patches = isset($extra['patches_applied']) && count($extra['patches_applied']) > 0;
           if (($has_patches && !$has_applied_patches)
             || (!$has_patches && $has_applied_patches)
             || ($has_patches && $has_applied_patches && $tmp_patches[$package_name] !== $extra['patches_applied'])) {
@@ -176,7 +176,7 @@ public function gatherPatches(PackageEvent $event) {
     $operations = $event->getOperations();
     $this->io->write('<info>Gathering patches for dependencies. This might take a minute.</info>');
     foreach ($operations as $operation) {
-      if ($operation->getJobType() == 'install' || $operation->getJobType() == 'update') {
+      if ($operation instanceof InstallOperation || $operation instanceof UpdateOperation) {
         $package = $this->getPackageFromOperation($operation);
         $extra = $package->getExtra();
         if (isset($extra['patches'])) {
@@ -198,7 +198,7 @@ public function gatherPatches(PackageEvent $event) {
 
     // Merge installed patches from dependencies that did not receive an update.
     foreach ($this->installedPatches as $patches) {
-      $this->patches = array_merge_recursive($this->patches, $patches);
+      $this->patches = $this->arrayMergeRecursiveDistinct($this->patches, $patches);
     }
 
     // If we're in verbose mode, list the projects we're going to patch.
@@ -369,7 +369,14 @@ protected function getAndApplyPatch(RemoteFilesystem $downloader, $install_path,
 
       // Download file from remote filesystem to this location.
       $hostname = parse_url($patch_url, PHP_URL_HOST);
-      $downloader->copy($hostname, $patch_url, $filename, FALSE);
+
+      try {
+        $downloader->copy($hostname, $patch_url, $filename, false);
+      } catch (\Exception $e) {
+        // In case of an exception, retry once as the download might
+        // have failed due to intermittent network issues.
+        $downloader->copy($hostname, $patch_url, $filename, false);
+      }
     }
 
     // The order here is intentional. p1 is most likely to apply with git apply.
@@ -378,8 +385,9 @@ protected function getAndApplyPatch(RemoteFilesystem $downloader, $install_path,
     $patch_levels = array('-p1', '-p0', '-p2', '-p4');
 
     // Check for specified patch level for this package.
-    if (!empty($this->composer->getPackage()->getExtra()['patchLevel'][$package->getName()])){
-      $patch_levels = array($this->composer->getPackage()->getExtra()['patchLevel'][$package->getName()]);
+    $extra = $this->composer->getPackage()->getExtra();
+    if (!empty($extra['patchLevel'][$package->getName()])){
+      $patch_levels = array($extra['patchLevel'][$package->getName()]);
     }
     // Attempt to apply with git apply.
     $patched = $this->applyPatchWithGit($install_path, $patch_levels, $filename);
@@ -547,4 +555,18 @@ protected function applyPatchWithGit($install_path, $patch_levels, $filename) {
     return $patched;
   }
 
+    /**
+     * {@inheritDoc}
+     */
+    public function deactivate(Composer $composer, IOInterface $io)
+    {
+    }
+
+    /**
+     * {@inheritDoc}
+     */
+    public function uninstall(Composer $composer, IOInterface $io)
+    {
+    }
+
 }
diff --git a/vendor/dnoegel/php-xdg-base-dir/.gitignore b/vendor/dnoegel/php-xdg-base-dir/.gitignore
deleted file mode 100644
index 57872d0f1e..0000000000
--- a/vendor/dnoegel/php-xdg-base-dir/.gitignore
+++ /dev/null
@@ -1 +0,0 @@
-/vendor/
diff --git a/vendor/dnoegel/php-xdg-base-dir/README.md b/vendor/dnoegel/php-xdg-base-dir/README.md
index 9e51bbb5b5..ee06b2d646 100644
--- a/vendor/dnoegel/php-xdg-base-dir/README.md
+++ b/vendor/dnoegel/php-xdg-base-dir/README.md
@@ -1,6 +1,9 @@
 # XDG Base Directory
 
+[![Latest Stable Version](https://img.shields.io/packagist/v/dnoegel/php-xdg-base-dir.svg?style=flat-square)](https://packagist.org/packages/dnoegel/php-xdg-base-dir)
+[![Total Downloads](https://img.shields.io/packagist/dt/dnoegel/php-xdg-base-dir.svg?style=flat-square)](https://packagist.org/packages/dnoegel/php-xdg-base-dir)
 [![Software License](https://img.shields.io/badge/license-MIT-brightgreen.svg?style=flat-square)](LICENSE.md)
+[![Build Status](https://img.shields.io/travis/dnoegel/php-xdg-base-dir/master.svg?style=flat-square)](https://travis-ci.org/dnoegel/php-xdg-base-dir)
 
 Implementation of XDG Base Directory  specification for php
 
@@ -15,16 +18,16 @@ $ composer require dnoegel/php-xdg-base-dir
 ## Usage
 
 ``` php
-$xdg = \XdgBaseDir\Xdg();
+$xdg = new \XdgBaseDir\Xdg();
 
 echo $xdg->getHomeDir();
-echo $xdg->getHomeConfigDir()
-echo $xdg->getHomeDataDir()
-echo $xdg->getHomeCacheDir()
-echo $xdg->getRuntimeDir()
+echo $xdg->getHomeConfigDir();
+echo $xdg->getHomeDataDir();
+echo $xdg->getHomeCacheDir();
+echo $xdg->getRuntimeDir();
 
-$xdg->getDataDirs() // returns array
-$xdg->getConfigDirs() // returns array
+print_r($xdg->getDataDirs()); // returns array
+print_r($xdg->getConfigDirs()); // returns array
 ```
 
 ## Testing
diff --git a/vendor/dnoegel/php-xdg-base-dir/composer.json b/vendor/dnoegel/php-xdg-base-dir/composer.json
index f6caf31a29..94c463745b 100644
--- a/vendor/dnoegel/php-xdg-base-dir/composer.json
+++ b/vendor/dnoegel/php-xdg-base-dir/composer.json
@@ -1,13 +1,13 @@
 {
     "name": "dnoegel/php-xdg-base-dir",
     "description": "implementation of xdg base directory specification for php",
-    "type": "project",
+    "type": "library",
     "license": "MIT",
     "require": {
         "php": ">=5.3.2"
     },
     "require-dev": {
-        "phpunit/phpunit": "@stable"
+        "phpunit/phpunit": "~7.0|~6.0|~5.0|~4.8.35"
     },
     "autoload": {
         "psr-4": {
diff --git a/vendor/dnoegel/php-xdg-base-dir/phpunit.xml.dist b/vendor/dnoegel/php-xdg-base-dir/phpunit.xml.dist
deleted file mode 100644
index 4000c012dc..0000000000
--- a/vendor/dnoegel/php-xdg-base-dir/phpunit.xml.dist
+++ /dev/null
@@ -1,24 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-
-<phpunit colors="true"
-         convertErrorsToExceptions="true"
-         convertNoticesToExceptions="true"
-         convertWarningsToExceptions="true"
-         processIsolation="false"
-         stopOnFailure="false"
-         syntaxCheck="false"
-         bootstrap="vendor/autoload.php"
-        >
-
-    <testsuites>
-        <testsuite name="php-xdg-base-dir unit tests">
-            <directory>./tests/</directory>
-        </testsuite>
-    </testsuites>
-
-    <filter>
-        <whitelist>
-            <directory>./src/</directory>
-        </whitelist>
-    </filter>
-</phpunit>
diff --git a/vendor/dnoegel/php-xdg-base-dir/src/Xdg.php b/vendor/dnoegel/php-xdg-base-dir/src/Xdg.php
index e2acda19d0..2dd314d0bc 100644
--- a/vendor/dnoegel/php-xdg-base-dir/src/Xdg.php
+++ b/vendor/dnoegel/php-xdg-base-dir/src/Xdg.php
@@ -6,9 +6,6 @@
  * Simple implementation of the XDG standard http://standards.freedesktop.org/basedir-spec/basedir-spec-latest.html
  *
  * Based on the python implementation https://github.com/takluyver/pyxdg/blob/master/xdg/BaseDirectory.py
- *
- * Class Xdg
- * @package ShopwareCli\Application
  */
 class Xdg
 {
@@ -30,7 +27,13 @@ public function getHomeDir()
      */
     public function getHomeConfigDir()
     {
-        $path = getenv('XDG_CONFIG_HOME') ?: $this->getHomeDir() . DIRECTORY_SEPARATOR . '.config';
+        if ($path = getenv('XDG_CONFIG_HOME')) {
+            return $path;
+        }
+
+        $homeDir = $this->getHomeDir();
+
+        $path = DIRECTORY_SEPARATOR === $homeDir ? $homeDir.'.config' : $homeDir . DIRECTORY_SEPARATOR . '.config';
 
         return $path;
     }
@@ -104,7 +107,7 @@ public function getRuntimeDir($strict=true)
         if (!$st['mode'] & self::S_IFDIR) {
             rmdir($fallback);
             $create = true;
-        } elseif ($st['uid'] != getmyuid() ||
+        } elseif ($st['uid'] != $this->getUid() ||
             $st['mode'] & (self::S_IRWXG | self::S_IRWXO)
         ) {
             rmdir($fallback);
@@ -118,4 +121,12 @@ public function getRuntimeDir($strict=true)
         return $fallback;
     }
 
+    private function getUid()
+    {
+        if (function_exists('posix_getuid')) {
+            return posix_getuid();
+        }
+
+        return getmyuid();
+    }
 }
diff --git a/vendor/dnoegel/php-xdg-base-dir/tests/XdgTest.php b/vendor/dnoegel/php-xdg-base-dir/tests/XdgTest.php
deleted file mode 100644
index 92c2e07ed4..0000000000
--- a/vendor/dnoegel/php-xdg-base-dir/tests/XdgTest.php
+++ /dev/null
@@ -1,116 +0,0 @@
-<?php
-
-class XdgTest extends PHPUnit_Framework_TestCase
-{
-    /**
-     * @return \XdgBaseDir\Xdg
-     */
-    public function getXdg()
-    {
-        return new \XdgBaseDir\Xdg();
-    }
-
-    public function testGetHomeDir()
-    {
-         putenv('HOME=/fake-dir');
-         $this->assertEquals('/fake-dir', $this->getXdg()->getHomeDir());
-    }
-
-    public function testGetFallbackHomeDir()
-    {
-        putenv('HOME=');
-        putenv('HOMEDRIVE=C:');
-        putenv('HOMEPATH=fake-dir');
-        $this->assertEquals('C:/fake-dir', $this->getXdg()->getHomeDir());
-    }
-
-    public function testXdgPutCache()
-    {
-        putenv('XDG_DATA_HOME=tmp/');
-        putenv('XDG_CONFIG_HOME=tmp/');
-        putenv('XDG_CACHE_HOME=tmp/');
-        $this->assertEquals('tmp/', $this->getXdg()->getHomeCacheDir());
-    }
-
-    public function testXdgPutData()
-    {
-        putenv('XDG_DATA_HOME=tmp/');
-        $this->assertEquals('tmp/', $this->getXdg()->getHomeDataDir());
-    }
-
-    public function testXdgPutConfig()
-    {
-        putenv('XDG_CONFIG_HOME=tmp/');
-        $this->assertEquals('tmp/', $this->getXdg()->getHomeConfigDir());
-    }
-
-    public function testXdgDataDirsShouldIncludeHomeDataDir()
-    {
-        putenv('XDG_DATA_HOME=tmp/');
-        putenv('XDG_CONFIG_HOME=tmp/');
-
-        $this->assertArrayHasKey('tmp/', array_flip($this->getXdg()->getDataDirs()));
-    }
-
-    public function testXdgConfigDirsShouldIncludeHomeConfigDir()
-    {
-        putenv('XDG_CONFIG_HOME=tmp/');
-
-        $this->assertArrayHasKey('tmp/', array_flip($this->getXdg()->getConfigDirs()));
-    }
-
-    /**
-     * If XDG_RUNTIME_DIR is set, it should be returned
-     */
-    public function testGetRuntimeDir()
-    {
-        putenv('XDG_RUNTIME_DIR=/tmp/');
-        $runtimeDir = $this->getXdg()->getRuntimeDir();
-
-        $this->assertEquals(is_dir($runtimeDir), true);
-    }
-
-    /**
-     * In strict mode, an exception should be shown if XDG_RUNTIME_DIR does not exist
-     *
-     * @expectedException \RuntimeException
-     */
-    public function testGetRuntimeDirShouldThrowException()
-    {
-        putenv('XDG_RUNTIME_DIR=');
-        $this->getXdg()->getRuntimeDir(true);
-    }
-
-    /**
-     * In fallback mode a directory should be created
-     */
-    public function testGetRuntimeDirShouldCreateDirectory()
-    {
-        putenv('XDG_RUNTIME_DIR=');
-        $dir = $this->getXdg()->getRuntimeDir(false);
-        $permission = decoct(fileperms($dir) & 0777);
-        $this->assertEquals(700, $permission);
-    }
-
-    /**
-     * Ensure, that the fallback directories are created with correct permission
-     */
-    public function testGetRuntimeShouldDeleteDirsWithWrongPermission()
-    {
-        $runtimeDir = sys_get_temp_dir() . DIRECTORY_SEPARATOR . XdgBaseDir\Xdg::RUNTIME_DIR_FALLBACK . getenv('USER');
-
-        rmdir($runtimeDir);
-        mkdir($runtimeDir, 0764, true);
-
-        // Permission should be wrong now
-        $permission = decoct(fileperms($runtimeDir) & 0777);
-        $this->assertEquals(764, $permission);
-
-        putenv('XDG_RUNTIME_DIR=');
-        $dir = $this->getXdg()->getRuntimeDir(false);
-
-        // Permission should be fixed
-        $permission = decoct(fileperms($dir) & 0777);
-        $this->assertEquals(700, $permission);
-    }
-}
diff --git a/vendor/drush/drush/.scenarios.lock/php5/composer.json b/vendor/drush/drush/.scenarios.lock/php5/composer.json
index 65c4379781..a72af60b86 100644
--- a/vendor/drush/drush/.scenarios.lock/php5/composer.json
+++ b/vendor/drush/drush/.scenarios.lock/php5/composer.json
@@ -70,7 +70,7 @@
         "psr/log": "~1.0",
         "psy/psysh": "~0.6",
         "symfony/console": "^3.4",
-        "symfony/event-dispatcher": "^3.4",
+        "symfony/event-dispatcher": "^3.4 || ^4.0",
         "symfony/finder": "^3.4 || ^4.0",
         "symfony/process": "^3.4",
         "symfony/var-dumper": "^3.4 || ^4.0",
diff --git a/vendor/drush/drush/.scenarios.lock/php5/composer.lock b/vendor/drush/drush/.scenarios.lock/php5/composer.lock
index 7d9fd00588..c375fa418e 100644
--- a/vendor/drush/drush/.scenarios.lock/php5/composer.lock
+++ b/vendor/drush/drush/.scenarios.lock/php5/composer.lock
@@ -4,20 +4,20 @@
         "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",
         "This file is @generated automatically"
     ],
-    "content-hash": "8266db40dd17b66e6932589b0401b424",
+    "content-hash": "591724784b2d04a184cc2b0de5e83fd2",
     "packages": [
         {
             "name": "chi-teck/drupal-code-generator",
-            "version": "1.29.2",
+            "version": "1.30.3",
             "source": {
                 "type": "git",
                 "url": "https://github.com/Chi-teck/drupal-code-generator.git",
-                "reference": "0d2cb5299e5b1361bab6c8b9ee6531e95d68df95"
+                "reference": "1da9f06843b6bf2b0e7d28fea4b6c1d79aead197"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/Chi-teck/drupal-code-generator/zipball/0d2cb5299e5b1361bab6c8b9ee6531e95d68df95",
-                "reference": "0d2cb5299e5b1361bab6c8b9ee6531e95d68df95",
+                "url": "https://api.github.com/repos/Chi-teck/drupal-code-generator/zipball/1da9f06843b6bf2b0e7d28fea4b6c1d79aead197",
+                "reference": "1da9f06843b6bf2b0e7d28fea4b6c1d79aead197",
                 "shasum": ""
             },
             "require": {
@@ -25,7 +25,7 @@
                 "php": ">=5.5.9",
                 "symfony/console": "^3.4 || ^4.0",
                 "symfony/filesystem": "^2.7 || ^3.4 || ^4.0",
-                "twig/twig": "^1.35"
+                "twig/twig": "^1.38.2 || ^2.10"
             },
             "bin": [
                 "bin/dcg"
@@ -49,7 +49,7 @@
                 "GPL-2.0-or-later"
             ],
             "description": "Drupal code generator",
-            "time": "2019-06-02T07:36:18+00:00"
+            "time": "2019-06-29T10:29:45+00:00"
         },
         {
             "name": "composer/semver",
@@ -550,16 +550,16 @@
         },
         {
             "name": "consolidation/robo",
-            "version": "1.4.9",
+            "version": "1.4.10",
             "source": {
                 "type": "git",
                 "url": "https://github.com/consolidation/Robo.git",
-                "reference": "5c6b3840a45afda1cbffbb3bb1f94dd5f9f83345"
+                "reference": "e5a6ca64cf1324151873672e484aceb21f365681"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/consolidation/Robo/zipball/5c6b3840a45afda1cbffbb3bb1f94dd5f9f83345",
-                "reference": "5c6b3840a45afda1cbffbb3bb1f94dd5f9f83345",
+                "url": "https://api.github.com/repos/consolidation/Robo/zipball/e5a6ca64cf1324151873672e484aceb21f365681",
+                "reference": "e5a6ca64cf1324151873672e484aceb21f365681",
                 "shasum": ""
             },
             "require": {
@@ -654,7 +654,7 @@
                 }
             ],
             "description": "Modern task runner",
-            "time": "2019-03-19T18:07:19+00:00"
+            "time": "2019-07-29T15:40:50+00:00"
         },
         {
             "name": "consolidation/self-update",
@@ -780,16 +780,16 @@
         },
         {
             "name": "consolidation/site-process",
-            "version": "2.0.3",
+            "version": "2.0.4",
             "source": {
                 "type": "git",
                 "url": "https://github.com/consolidation/site-process.git",
-                "reference": "e25265f4a48c13284ebb6f9e0906ecd415d451df"
+                "reference": "e159f849abce696c2f5081c149a1f8ec8717dd97"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/consolidation/site-process/zipball/e25265f4a48c13284ebb6f9e0906ecd415d451df",
-                "reference": "e25265f4a48c13284ebb6f9e0906ecd415d451df",
+                "url": "https://api.github.com/repos/consolidation/site-process/zipball/e159f849abce696c2f5081c149a1f8ec8717dd97",
+                "reference": "e159f849abce696c2f5081c149a1f8ec8717dd97",
                 "shasum": ""
             },
             "require": {
@@ -838,17 +838,17 @@
                 "MIT"
             ],
             "authors": [
-                {
-                    "name": "Moshe Weitzman",
-                    "email": "weitzman@tejasa.com"
-                },
                 {
                     "name": "Greg Anderson",
                     "email": "greg.1.anderson@greenknowe.org"
+                },
+                {
+                    "name": "Moshe Weitzman",
+                    "email": "weitzman@tejasa.com"
                 }
             ],
             "description": "A thin wrapper around the Symfony Process Component that allows applications to use the Site Alias library to specify the target for a remote call.",
-            "time": "2019-06-04T22:23:52+00:00"
+            "time": "2019-08-12T23:10:26+00:00"
         },
         {
             "name": "container-interop/container-interop",
@@ -1632,16 +1632,16 @@
         },
         {
             "name": "symfony/filesystem",
-            "version": "v3.4.28",
+            "version": "v3.4.30",
             "source": {
                 "type": "git",
                 "url": "https://github.com/symfony/filesystem.git",
-                "reference": "acf99758b1df8e9295e6b85aa69f294565c9fedb"
+                "reference": "70adda061ef83bb7def63a17953dc41f203308a7"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/symfony/filesystem/zipball/acf99758b1df8e9295e6b85aa69f294565c9fedb",
-                "reference": "acf99758b1df8e9295e6b85aa69f294565c9fedb",
+                "url": "https://api.github.com/repos/symfony/filesystem/zipball/70adda061ef83bb7def63a17953dc41f203308a7",
+                "reference": "70adda061ef83bb7def63a17953dc41f203308a7",
                 "shasum": ""
             },
             "require": {
@@ -1678,20 +1678,20 @@
             ],
             "description": "Symfony Filesystem Component",
             "homepage": "https://symfony.com",
-            "time": "2019-02-04T21:34:32+00:00"
+            "time": "2019-06-23T09:29:17+00:00"
         },
         {
             "name": "symfony/finder",
-            "version": "v3.4.28",
+            "version": "v3.4.30",
             "source": {
                 "type": "git",
                 "url": "https://github.com/symfony/finder.git",
-                "reference": "fa5d962a71f2169dfe1cbae217fa5a2799859f6c"
+                "reference": "1e762fdf73ace6ceb42ba5a6ca280be86082364a"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/symfony/finder/zipball/fa5d962a71f2169dfe1cbae217fa5a2799859f6c",
-                "reference": "fa5d962a71f2169dfe1cbae217fa5a2799859f6c",
+                "url": "https://api.github.com/repos/symfony/finder/zipball/1e762fdf73ace6ceb42ba5a6ca280be86082364a",
+                "reference": "1e762fdf73ace6ceb42ba5a6ca280be86082364a",
                 "shasum": ""
             },
             "require": {
@@ -1727,7 +1727,7 @@
             ],
             "description": "Symfony Finder Component",
             "homepage": "https://symfony.com",
-            "time": "2019-05-24T12:25:55+00:00"
+            "time": "2019-06-28T08:02:59+00:00"
         },
         {
             "name": "symfony/polyfill-ctype",
@@ -1897,16 +1897,16 @@
         },
         {
             "name": "symfony/var-dumper",
-            "version": "v3.4.28",
+            "version": "v3.4.30",
             "source": {
                 "type": "git",
                 "url": "https://github.com/symfony/var-dumper.git",
-                "reference": "ca5fef348a0440411bbca0f9ec14e9a11625bd6a"
+                "reference": "b6a45abfe961183a4c26fad98a6112c487e983bf"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/symfony/var-dumper/zipball/ca5fef348a0440411bbca0f9ec14e9a11625bd6a",
-                "reference": "ca5fef348a0440411bbca0f9ec14e9a11625bd6a",
+                "url": "https://api.github.com/repos/symfony/var-dumper/zipball/b6a45abfe961183a4c26fad98a6112c487e983bf",
+                "reference": "b6a45abfe961183a4c26fad98a6112c487e983bf",
                 "shasum": ""
             },
             "require": {
@@ -1962,7 +1962,7 @@
                 "debug",
                 "dump"
             ],
-            "time": "2019-05-01T09:52:10+00:00"
+            "time": "2019-07-26T11:29:23+00:00"
         },
         {
             "name": "symfony/yaml",
@@ -2067,19 +2067,19 @@
             "authors": [
                 {
                     "name": "Fabien Potencier",
+                    "role": "Lead Developer",
                     "email": "fabien@symfony.com",
-                    "homepage": "http://fabien.potencier.org",
-                    "role": "Lead Developer"
+                    "homepage": "http://fabien.potencier.org"
                 },
                 {
                     "name": "Armin Ronacher",
-                    "email": "armin.ronacher@active-4.com",
-                    "role": "Project Founder"
+                    "role": "Project Founder",
+                    "email": "armin.ronacher@active-4.com"
                 },
                 {
                     "name": "Twig Team",
-                    "homepage": "https://twig.symfony.com/contributors",
-                    "role": "Contributors"
+                    "role": "Contributors",
+                    "homepage": "https://twig.symfony.com/contributors"
                 }
             ],
             "description": "Twig, the flexible, fast, and secure template language for PHP",
@@ -2091,18 +2091,21 @@
         },
         {
             "name": "webflo/drupal-finder",
-            "version": "1.1.0",
+            "version": "1.2.0",
             "source": {
                 "type": "git",
                 "url": "https://github.com/webflo/drupal-finder.git",
-                "reference": "8a7886c575d6eaa67a425dceccc84e735c0b9637"
+                "reference": "123e248e14ee8dd3fbe89fb5a733a6cf91f5820e"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/webflo/drupal-finder/zipball/8a7886c575d6eaa67a425dceccc84e735c0b9637",
-                "reference": "8a7886c575d6eaa67a425dceccc84e735c0b9637",
+                "url": "https://api.github.com/repos/webflo/drupal-finder/zipball/123e248e14ee8dd3fbe89fb5a733a6cf91f5820e",
+                "reference": "123e248e14ee8dd3fbe89fb5a733a6cf91f5820e",
                 "shasum": ""
             },
+            "require": {
+                "ext-json": "*"
+            },
             "require-dev": {
                 "mikey179/vfsstream": "^1.6",
                 "phpunit/phpunit": "^4.8"
@@ -2124,7 +2127,7 @@
                 }
             ],
             "description": "Helper class to locate a Drupal installation from a given path.",
-            "time": "2017-10-24T08:12:11+00:00"
+            "time": "2019-08-02T08:06:18+00:00"
         },
         {
             "name": "webmozart/assert",
@@ -2283,12 +2286,12 @@
             "source": {
                 "type": "git",
                 "url": "https://github.com/minkphp/Mink.git",
-                "reference": "6d637f7af4816c26ad8a943da2e3f7eef1231bea"
+                "reference": "a534fe7dac9525e8e10ca68e737c3d7e5058ec83"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/minkphp/Mink/zipball/6d637f7af4816c26ad8a943da2e3f7eef1231bea",
-                "reference": "6d637f7af4816c26ad8a943da2e3f7eef1231bea",
+                "url": "https://api.github.com/repos/minkphp/Mink/zipball/a534fe7dac9525e8e10ca68e737c3d7e5058ec83",
+                "reference": "a534fe7dac9525e8e10ca68e737c3d7e5058ec83",
                 "shasum": ""
             },
             "require": {
@@ -2296,7 +2299,7 @@
                 "symfony/css-selector": "^2.7|^3.0|^4.0"
             },
             "require-dev": {
-                "symfony/phpunit-bridge": "^3.3|^4.0"
+                "symfony/phpunit-bridge": "^4.2"
             },
             "suggest": {
                 "behat/mink-browserkit-driver": "extremely fast headless driver for Symfony\\Kernel-based apps (Sf2, Silex)",
@@ -2334,7 +2337,7 @@
                 "testing",
                 "web"
             ],
-            "time": "2019-05-14T09:56:49+00:00"
+            "time": "2019-07-15T12:45:29+00:00"
         },
         {
             "name": "behat/mink-browserkit-driver",
@@ -3238,11 +3241,11 @@
         },
         {
             "name": "drupal/coder",
-            "version": "8.3.5",
+            "version": "8.3.6",
             "source": {
                 "type": "git",
-                "url": "https://git.drupal.org/project/coder.git",
-                "reference": "35277fc8675b6a2cbb194f8880145a9c85c845c4"
+                "url": "https://git.drupalcode.org/project/coder.git",
+                "reference": "4337ddf58d28dbdee4e1367bf71ee13393ab9820"
             },
             "require": {
                 "ext-mbstring": "*",
@@ -3271,7 +3274,7 @@
                 "phpcs",
                 "standards"
             ],
-            "time": "2019-06-14T15:06:06+00:00"
+            "time": "2019-08-09T09:27:26+00:00"
         },
         {
             "name": "drupal/core",
@@ -4329,24 +4332,24 @@
             "time": "2017-09-04T12:26:28+00:00"
         },
         {
-            "name": "mikey179/vfsStream",
-            "version": "v1.6.6",
+            "name": "mikey179/vfsstream",
+            "version": "v1.6.7",
             "source": {
                 "type": "git",
                 "url": "https://github.com/bovigo/vfsStream.git",
-                "reference": "095238a0711c974ae5b4ebf4c4534a23f3f6c99d"
+                "reference": "2b544ac3a21bcc4dde5d90c4ae8d06f4319055fb"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/bovigo/vfsStream/zipball/095238a0711c974ae5b4ebf4c4534a23f3f6c99d",
-                "reference": "095238a0711c974ae5b4ebf4c4534a23f3f6c99d",
+                "url": "https://api.github.com/repos/bovigo/vfsStream/zipball/2b544ac3a21bcc4dde5d90c4ae8d06f4319055fb",
+                "reference": "2b544ac3a21bcc4dde5d90c4ae8d06f4319055fb",
                 "shasum": ""
             },
             "require": {
                 "php": ">=5.3.0"
             },
             "require-dev": {
-                "phpunit/phpunit": "~4.5"
+                "phpunit/phpunit": "^4.5|^5.0"
             },
             "type": "library",
             "extra": {
@@ -4366,13 +4369,13 @@
             "authors": [
                 {
                     "name": "Frank Kleine",
-                    "homepage": "http://frankkleine.de/",
-                    "role": "Developer"
+                    "role": "Developer",
+                    "homepage": "http://frankkleine.de/"
                 }
             ],
             "description": "Virtual file system to mock the real file system in unit tests.",
             "homepage": "http://vfs.bovigo.org/",
-            "time": "2019-04-08T13:54:32+00:00"
+            "time": "2019-08-01T01:38:37+00:00"
         },
         {
             "name": "paragonie/random_compat",
@@ -4681,8 +4684,8 @@
             "authors": [
                 {
                     "name": "Sebastian Bergmann",
-                    "email": "sb@sebastian-bergmann.de",
-                    "role": "lead"
+                    "role": "lead",
+                    "email": "sb@sebastian-bergmann.de"
                 }
             ],
             "description": "Library that provides collection, processing, and rendering functionality for PHP code coverage information.",
@@ -4939,8 +4942,8 @@
             "authors": [
                 {
                     "name": "Sebastian Bergmann",
-                    "email": "sebastian@phpunit.de",
-                    "role": "lead"
+                    "role": "lead",
+                    "email": "sebastian@phpunit.de"
                 }
             ],
             "description": "The PHP Unit Testing framework.",
@@ -5423,8 +5426,8 @@
             "authors": [
                 {
                     "name": "Sebastian Bergmann",
-                    "email": "sebastian@phpunit.de",
-                    "role": "lead"
+                    "role": "lead",
+                    "email": "sebastian@phpunit.de"
                 }
             ],
             "description": "Library that helps with managing the version number of Git-hosted PHP projects",
@@ -5592,16 +5595,16 @@
         },
         {
             "name": "symfony/browser-kit",
-            "version": "v3.4.28",
+            "version": "v3.4.30",
             "source": {
                 "type": "git",
                 "url": "https://github.com/symfony/browser-kit.git",
-                "reference": "7f2b0843d5045468225f9a9b27a0cb171ae81828"
+                "reference": "53266c9a1536e2dc673eb1efb6a6142ef84c6282"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/symfony/browser-kit/zipball/7f2b0843d5045468225f9a9b27a0cb171ae81828",
-                "reference": "7f2b0843d5045468225f9a9b27a0cb171ae81828",
+                "url": "https://api.github.com/repos/symfony/browser-kit/zipball/53266c9a1536e2dc673eb1efb6a6142ef84c6282",
+                "reference": "53266c9a1536e2dc673eb1efb6a6142ef84c6282",
                 "shasum": ""
             },
             "require": {
@@ -5645,7 +5648,7 @@
             ],
             "description": "Symfony BrowserKit Component",
             "homepage": "https://symfony.com",
-            "time": "2019-04-06T19:33:58+00:00"
+            "time": "2019-06-09T14:27:26+00:00"
         },
         {
             "name": "symfony/class-loader",
@@ -5705,7 +5708,7 @@
         },
         {
             "name": "symfony/css-selector",
-            "version": "v3.4.28",
+            "version": "v3.4.30",
             "source": {
                 "type": "git",
                 "url": "https://github.com/symfony/css-selector.git",
@@ -5739,14 +5742,14 @@
                 "MIT"
             ],
             "authors": [
-                {
-                    "name": "Jean-François Simon",
-                    "email": "jeanfrancois.simon@sensiolabs.com"
-                },
                 {
                     "name": "Fabien Potencier",
                     "email": "fabien@symfony.com"
                 },
+                {
+                    "name": "Jean-François Simon",
+                    "email": "jeanfrancois.simon@sensiolabs.com"
+                },
                 {
                     "name": "Symfony Community",
                     "homepage": "https://symfony.com/contributors"
@@ -5829,16 +5832,16 @@
         },
         {
             "name": "symfony/dom-crawler",
-            "version": "v3.4.28",
+            "version": "v3.4.30",
             "source": {
                 "type": "git",
                 "url": "https://github.com/symfony/dom-crawler.git",
-                "reference": "d40023c057393fb25f7ca80af2a56ed948c45a09"
+                "reference": "adb96e63af6fb0cc721cc69861001d60d0133d0c"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/symfony/dom-crawler/zipball/d40023c057393fb25f7ca80af2a56ed948c45a09",
-                "reference": "d40023c057393fb25f7ca80af2a56ed948c45a09",
+                "url": "https://api.github.com/repos/symfony/dom-crawler/zipball/adb96e63af6fb0cc721cc69861001d60d0133d0c",
+                "reference": "adb96e63af6fb0cc721cc69861001d60d0133d0c",
                 "shasum": ""
             },
             "require": {
@@ -5882,7 +5885,7 @@
             ],
             "description": "Symfony DomCrawler Component",
             "homepage": "https://symfony.com",
-            "time": "2019-02-23T15:06:07+00:00"
+            "time": "2019-05-30T15:47:52+00:00"
         },
         {
             "name": "symfony/http-foundation",
@@ -6029,16 +6032,16 @@
         },
         {
             "name": "symfony/phpunit-bridge",
-            "version": "v3.4.28",
+            "version": "v3.4.30",
             "source": {
                 "type": "git",
                 "url": "https://github.com/symfony/phpunit-bridge.git",
-                "reference": "a43a2f6c465a2d99635fea0addbebddc3864ad97"
+                "reference": "8f1f27c186496128b861810809c27d956d342417"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/symfony/phpunit-bridge/zipball/a43a2f6c465a2d99635fea0addbebddc3864ad97",
-                "reference": "a43a2f6c465a2d99635fea0addbebddc3864ad97",
+                "url": "https://api.github.com/repos/symfony/phpunit-bridge/zipball/8f1f27c186496128b861810809c27d956d342417",
+                "reference": "8f1f27c186496128b861810809c27d956d342417",
                 "shasum": ""
             },
             "require": {
@@ -6090,7 +6093,7 @@
             ],
             "description": "Symfony PHPUnit Bridge",
             "homepage": "https://symfony.com",
-            "time": "2019-04-16T09:03:16+00:00"
+            "time": "2019-07-05T06:33:19+00:00"
         },
         {
             "name": "symfony/polyfill-iconv",
diff --git a/vendor/drush/drush/.travis.yml b/vendor/drush/drush/.travis.yml
index 3b88416f57..0aa8df0a6b 100644
--- a/vendor/drush/drush/.travis.yml
+++ b/vendor/drush/drush/.travis.yml
@@ -2,6 +2,7 @@
 branches:
   only:
     - master
+    - 9.x
     - 8.x
     - 7.x
     - 6.x
diff --git a/vendor/drush/drush/composer.json b/vendor/drush/drush/composer.json
index d560da1e54..6762905e03 100644
--- a/vendor/drush/drush/composer.json
+++ b/vendor/drush/drush/composer.json
@@ -46,7 +46,7 @@
     "psr/log": "~1.0",
     "psy/psysh": "~0.6",
     "symfony/console": "^3.4",
-    "symfony/event-dispatcher": "^3.4",
+    "symfony/event-dispatcher": "^3.4 || ^4.0",
     "symfony/finder": "^3.4 || ^4.0",
     "symfony/process": "^3.4",
     "symfony/var-dumper": "^3.4 || ^4.0",
diff --git a/vendor/drush/drush/composer.lock b/vendor/drush/drush/composer.lock
index 45b1460fca..e7bf2d9540 100644
--- a/vendor/drush/drush/composer.lock
+++ b/vendor/drush/drush/composer.lock
@@ -4,7 +4,7 @@
         "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",
         "This file is @generated automatically"
     ],
-    "content-hash": "69702ffaac43e1fe89a91880704d07f6",
+    "content-hash": "a65aaf0ce53f8027c91fc0bc277d1b55",
     "packages": [
         {
             "name": "chi-teck/drupal-code-generator",
@@ -3244,7 +3244,7 @@
             "version": "8.3.3",
             "source": {
                 "type": "git",
-                "url": "https://git.drupal.org/project/coder.git",
+                "url": "https://git.drupalcode.org/project/coder.git",
                 "reference": "a33d3388fb2e1d94bd2aee36a8ff79186e9d8f43"
             },
             "require": {
@@ -4408,7 +4408,7 @@
             "time": "2017-09-04T12:26:28+00:00"
         },
         {
-            "name": "mikey179/vfsStream",
+            "name": "mikey179/vfsstream",
             "version": "v1.6.6",
             "source": {
                 "type": "git",
@@ -4445,8 +4445,8 @@
             "authors": [
                 {
                     "name": "Frank Kleine",
-                    "homepage": "http://frankkleine.de/",
-                    "role": "Developer"
+                    "role": "Developer",
+                    "homepage": "http://frankkleine.de/"
                 }
             ],
             "description": "Virtual file system to mock the real file system in unit tests.",
@@ -7263,8 +7263,8 @@
             "authors": [
                 {
                     "name": "Arne Blankerts",
-                    "email": "arne@blankerts.de",
-                    "role": "Developer"
+                    "role": "Developer",
+                    "email": "arne@blankerts.de"
                 }
             ],
             "description": "A small library for converting tokenized PHP source code into XML and potentially other formats",
diff --git a/vendor/drush/drush/drush.info b/vendor/drush/drush/drush.info
index f5951dedb9..4c73b42b8a 100644
--- a/vendor/drush/drush/drush.info
+++ b/vendor/drush/drush/drush.info
@@ -1 +1 @@
-drush_version=9.7.1
+drush_version=9.7.2
diff --git a/vendor/drush/drush/examples/Commands/SiteAliasAlterCommands.php b/vendor/drush/drush/examples/Commands/SiteAliasAlterCommands.php
index 28ebdcdc26..a0f0c7e96b 100644
--- a/vendor/drush/drush/examples/Commands/SiteAliasAlterCommands.php
+++ b/vendor/drush/drush/examples/Commands/SiteAliasAlterCommands.php
@@ -34,6 +34,19 @@ public function alter(InputInterface $input, AnnotationData $annotationData)
 
             // Change the SSH user.
             $input->setOption('remote-user', 'mw2');
+
+            // Test to see if specific environment really exists in wildcard
+            // aliases, but only if the target is a specific host.
+            $host = $self->get('host');
+            if (preg_match('#\.myserver.com$#', $host)) {
+                $ip = gethostbyname($host);
+                // If the return value of gethostbyname equals its input parameter,
+                // that indicates failure.
+                if ($host == $ip) {
+                    $aliasName = $self->name();
+                    throw new \Exception("The alias $aliasName refers to an environment that does not exist.");
+                }
+            }
         }
     }
 }
diff --git a/vendor/drush/drush/examples/Commands/art/sandwich.txt b/vendor/drush/drush/examples/Commands/art/sandwich.txt
index dac8ca02e4..6c4c3097bf 100644
--- a/vendor/drush/drush/examples/Commands/art/sandwich.txt
+++ b/vendor/drush/drush/examples/Commands/art/sandwich.txt
@@ -1,24 +1,24 @@
- . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
- . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
- . . .  . . . . . . . .:8 ;t;;t;;;;:..:;%SX888@X%t;.. . . . 
- . .  .. . . . . . .%t%;%@%%%%%%%%%%X@8888XS%t;...:;ttt%X. .
- . . .  . . . . . .X:8%X%%%XS%%%%%%%XS%%%%%@%%%%X%%%@%S88 . 
- . . . . . .  .  . X@ @%%%X8X%%%88%%%8X%%%%%%%%%XXt@8@88@. .
- . . . . .  . . .t@tS;%%8XSX%@XSX%@XSS%8@@88X@888X8SS S;S.  
- . . . . . . .@%XS%%%%%S8@X%@8%XXSSXX%S@SSSX888.;@ 888@ . . 
- . . . . . :.8:S%%%XS8X@@X%S@SSSS8SXSXXX%X88X:;@8@:S  88S. .
- . . .  .8%S8%%%%%%8@SSSXXXSXSXSXSXSSS8S888 :@%:%XX:%8%:X:  
- . .  .:8 %%%%@%%8@S%%XXSXSSSS8S@X%XSXX88 ;@X;SX88X8;%X88t. 
- . . 88S%S%%%%8XSSXSX@@S@%XS8@SS%@S%888 88@S:8. .;.@%X:@8;. 
- . .  88.8888888@XX   888888%X%@XX 88SS8@@;S@8.%;8@S%%:8   .
- . .  S%:8 @SSSS8 @@8@8 8 88888888@%S:8:S8 @..%S SXX8888;. .
- . . %:8S8888@88SXS S S::X@.8.8 X%S%8X:X88..% @@.S.%% .;. . 
- .    .XX8@8;;%%t;;;;:@X@888888@888888.88S;8:8  ...    . . .
- . . 8.;;@8@8:%%%%%t.8@%ttX@8@@@S8%8 X8S;X:@; :... . . . . .
- . tS:8@;88.;:8888X8S:.tX88888X88  S8tStS88 :.. . . . . . . 
- .:X;;:t%;tt%888S@8XS888@8.:tt@;88.tXXX8:::... . . . . . . .
- .:X8St:8SXS XS8@X 8.8%888%X8@@X88tXS8t; . . . . . . .  . . 
- .    :8888.88888888X@@X @ X X%S%;88;8t .. . .  . . . . .  .
- ... ..: .    .@@888%St    @ @ 8SS 8:; . . . . . . . . . . .
-   .  .  .      ..::. ..:;;::::. ... . . . . . . . . . . . .
- .. . . .     . .. . .  .  .  .. . . . . . .  . . . . . . . 
+ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
+ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
+ . . .  . . . . . . . .:8 ;t;;t;;;;:..:;%SX888@X%t;.. . . . 
+ . .  .. . . . . . .%t%;%@%%%%%%%%%%X@8888XS%t;...:;ttt%X. .
+ . . .  . . . . . .X:8%X%%%XS%%%%%%%XS%%%%%@%%%%X%%%@%S88 . 
+ . . . . . .  .  . X@ @%%%X8X%%%88%%%8X%%%%%%%%%XXt@8@88@. .
+ . . . . .  . . .t@tS;%%8XSX%@XSX%@XSS%8@@88X@888X8SS S;S.  
+ . . . . . . .@%XS%%%%%S8@X%@8%XXSSXX%S@SSSX888.;@ 888@ . . 
+ . . . . . :.8:S%%%XS8X@@X%S@SSSS8SXSXXX%X88X:;@8@:S  88S. .
+ . . .  .8%S8%%%%%%8@SSSXXXSXSXSXSXSSS8S888 :@%:%XX:%8%:X:  
+ . .  .:8 %%%%@%%8@S%%XXSXSSSS8S@X%XSXX88 ;@X;SX88X8;%X88t. 
+ . . 88S%S%%%%8XSSXSX@@S@%XS8@SS%@S%888 88@S:8. .;.@%X:@8;. 
+ . .  88.8888888@XX   888888%X%@XX 88SS8@@;S@8.%;8@S%%:8   .
+ . .  S%:8 @SSSS8 @@8@8 8 88888888@%S:8:S8 @..%S SXX8888;. .
+ . . %:8S8888@88SXS S S::X@.8.8 X%S%8X:X88..% @@.S.%% .;. . 
+ .    .XX8@8;;%%t;;;;:@X@888888@888888.88S;8:8  ...    . . .
+ . . 8.;;@8@8:%%%%%t.8@%ttX@8@@@S8%8 X8S;X:@; :... . . . . .
+ . tS:8@;88.;:8888X8S:.tX88888X88  S8tStS88 :.. . . . . . . 
+ .:X;;:t%;tt%888S@8XS888@8.:tt@;88.tXXX8:::... . . . . . . .
+ .:X8St:8SXS XS8@X 8.8%888%X8@@X88tXS8t; . . . . . . .  . . 
+ .    :8888.88888888X@@X @ X X%S%;88;8t .. . .  . . . . .  .
+ ... ..: .    .@@888%St    @ @ 8SS 8:; . . . . . . . . . . .
+   .  .  .      ..::. ..:;;::::. ... . . . . . . . . . . . .
+ .. . . .     . .. . .  .  .  .. . . . . . .  . . . . . . . 
diff --git a/vendor/drush/drush/examples/example.drush.yml b/vendor/drush/drush/examples/example.drush.yml
index 0138224fec..26c1d19b71 100644
--- a/vendor/drush/drush/examples/example.drush.yml
+++ b/vendor/drush/drush/examples/example.drush.yml
@@ -32,7 +32,7 @@
 
 # Environment variables
 #
-# Your Drush config file may reference environment variables using a syntax like ${env.home}.
+# Your Drush config file may reference environment variables using a syntax like ${env.HOME}.
 # For example see the drush.paths examples below.
 #
 # An alternative way to populate Drush configuration is to define environment variables that
@@ -46,7 +46,7 @@ drush:
     # Specify config files to load.
     config:
       # Load any personal config files. Is silently skipped if not found. Filename must be drush.yml
-      - ${env.home}/.drush/config/drush.yml
+      - ${env.HOME}/.drush/config/drush.yml
 
 
     # Specify folders to search for Drush command files.  These locations
@@ -63,7 +63,7 @@ drush:
     #  include:
     #    'Commands/example_drush_extension': '${env.PWD}'
     include:
-      - '${env.home}/.drush/commands'
+      - '${env.HOME}/.drush/commands'
       - /usr/share/drush/commands
 
     # Specify the folders to search for Drush alias files (*.site.yml). These
@@ -74,7 +74,7 @@ drush:
     # Drush 8 and earlier did a deep search in ~/.drush and /etc/drush when
     # loading alias files.
     alias-path:
-      - '${env.home}/.drush/sites'
+      - '${env.HOME}/.drush/sites'
       - /etc/drush/sites
 
     # Specify a folder where Drush should store its file based caches. If unspecified, defaults to $HOME/.drush.
diff --git a/vendor/drush/drush/examples/example.site.yml b/vendor/drush/drush/examples/example.site.yml
index f759fe76b2..aa536ad49e 100644
--- a/vendor/drush/drush/examples/example.site.yml
+++ b/vendor/drush/drush/examples/example.site.yml
@@ -78,7 +78,7 @@
 # drush:
 #   paths:
 #     alias-path:
-#       - '${env.home}/.drush/sites'
+#       - '${env.HOME}/.drush/sites'
 #       - /etc/drush/sites
 # @endcode
 #
@@ -194,14 +194,14 @@
 # There are a number of service providers that manage Drupal sites as a
 # service. Drush allows service providers to create collections of site alias
 # files to reference all of the sites available to a single user. In order
-# to so this, a new location must be defined in your Drush configuration
+# to do this, a new location must be defined in your Drush configuration
 # file:
 #
 # @code
 # drush:
 #   paths:
 #     alias-path:
-#       - '${env.home}/.drush/sites/provider-name'
+#       - '${env.HOME}/.drush/sites/provider-name'
 # @endcode
 #
 # Site aliases stored in this directory may then be referenced by its
@@ -222,6 +222,35 @@
 # Add the option `--format=list` to show only the names of each site and
 # environment without also showing the values in each alias record.
 
+# Wildcard Aliases for Service Providers
+#
+# Some service providers that manage Drupal sites allow customers to create
+# multiple "environments" for a site. It is common for these providers to
+# also have a feature to automatically create Drush aliases for all of a
+# user's sites. Rather than write one record for every environment in that
+# site, it is also possible to write a single "wildcard" alias that represents
+# all possible environments. This is possible if the contents of each
+# environment alias are identical save for the name of the environment in
+# one or more values. The variable `${env-name}` will be substituted with the
+# environment name wherever it appears.
+#
+# Example wildcard record:
+#
+# @code
+# # File: remote-example.site.yml
+# '*':
+#   host: ${env-name}.server.domain.com
+#   user: www-admin
+#   root: /path/to/${env-name}
+#   uri: http://${env-name}.remote-example.com
+# @endcode
+#
+# With a wildcard record, any environment name may be used, and will always
+# match. This is not desirable in instances where the specified environment
+# does not exist (e.g. if the user made a typo). An alias alter hook in a
+# policy file may be used to catch these mistakes and report an error.
+# @see SiteAliasAlterCommands for an example on how to do this.
+
 # Developer Information
 #
 # See https://github.com/consolidation/site-alias for more developer
diff --git a/vendor/drush/drush/includes/drush.inc b/vendor/drush/drush/includes/drush.inc
index 1e7f59cf43..a8f356ff8d 100644
--- a/vendor/drush/drush/includes/drush.inc
+++ b/vendor/drush/drush/includes/drush.inc
@@ -696,7 +696,7 @@ function drush_errors_on($errors = null) {
 function drush_memory_limit() {
   $value = trim(ini_get('memory_limit'));
   $last = strtolower($value[strlen($value)-1]);
-  $size = (int) substr($value, 0, -1);
+  $size = (int) rtrim($value, 'GgMmKk');
   switch ($last) {
     case 'g':
       $size *= DRUSH_KILOBYTE;
diff --git a/vendor/drush/drush/src/Boot/DrupalBoot8.php b/vendor/drush/drush/src/Boot/DrupalBoot8.php
index 472ed86eba..d2b6ef541e 100644
--- a/vendor/drush/drush/src/Boot/DrupalBoot8.php
+++ b/vendor/drush/drush/src/Boot/DrupalBoot8.php
@@ -235,7 +235,7 @@ public function bootstrapDrupalFull(BootstrapManager $manager)
     {
         $this->logger->debug(dt('Start bootstrap of the Drupal Kernel.'));
         $this->kernel->boot();
-        $this->kernel->prepareLegacyRequest($this->getRequest());
+        $this->kernel->preHandle($this->getRequest());
         $this->logger->debug(dt('Finished bootstrap of the Drupal Kernel.'));
 
         parent::bootstrapDrupalFull($manager);
diff --git a/vendor/drush/drush/src/Commands/core/EditCommands.php b/vendor/drush/drush/src/Commands/core/EditCommands.php
index bb3be30952..fced23a9e9 100644
--- a/vendor/drush/drush/src/Commands/core/EditCommands.php
+++ b/vendor/drush/drush/src/Commands/core/EditCommands.php
@@ -132,7 +132,7 @@ public static function phpIniFiles()
         return $ini_files;
     }
 
-    public static function bashFiles()
+    public function bashFiles()
     {
         $bashFiles = [];
         $home = $this->getConfig()->home();
diff --git a/vendor/drush/drush/src/Commands/core/LoginCommands.php b/vendor/drush/drush/src/Commands/core/LoginCommands.php
index 98c7840d68..370732bd10 100644
--- a/vendor/drush/drush/src/Commands/core/LoginCommands.php
+++ b/vendor/drush/drush/src/Commands/core/LoginCommands.php
@@ -7,6 +7,7 @@
 use Drush\Exec\ExecTrait;
 use Consolidation\SiteAlias\SiteAliasManagerAwareInterface;
 use Consolidation\SiteAlias\SiteAliasManagerAwareTrait;
+use Drupal\Core\Url;
 
 class LoginCommands extends DrushCommands implements SiteAliasManagerAwareInterface
 {
@@ -71,10 +72,20 @@ public function login($path = '', $options = ['name' => null, 'uid' => null, 'ma
                 $account = User::load(1);
             }
 
-            $link = user_pass_reset_url($account). '/login';
-            if ($path) {
-                $link .= '?destination=' . $path;
-            }
+            $timestamp = \Drupal::time()->getRequestTime();
+            $link = Url::fromRoute(
+                'user.reset.login',
+                [
+                  'uid' => $account->id(),
+                  'timestamp' => $timestamp,
+                  'hash' => user_pass_rehash($account, $timestamp),
+                ],
+                [
+                  'absolute' => true,
+                  'query' => $path ? ['destination' => $path] : [],
+                  'language' => \Drupal::languageManager()->getLanguage($account->getPreferredLangcode()),
+                ]
+            )->toString();
         }
         $port = $options['redirect-port'];
         $this->startBrowser($link, false, $port, $options['browser']);
diff --git a/vendor/drush/drush/src/Commands/core/RsyncCommands.php b/vendor/drush/drush/src/Commands/core/RsyncCommands.php
index e7bf12b1b7..5529fde729 100644
--- a/vendor/drush/drush/src/Commands/core/RsyncCommands.php
+++ b/vendor/drush/drush/src/Commands/core/RsyncCommands.php
@@ -3,6 +3,7 @@
 
 use Consolidation\AnnotatedCommand\CommandData;
 use Consolidation\SiteProcess\ProcessBase;
+use Consolidation\SiteProcess\Util\Escape;
 use Drush\Commands\DrushCommands;
 use Drush\Drush;
 use Drush\Exceptions\UserAbortException;
@@ -62,15 +63,15 @@ public function rsync($source, $target, array $extra, $options = ['exclude-paths
         // Prompt for confirmation. This is destructive.
         if (!$this->getConfig()->simulate()) {
             $replacements = ['!source' => $this->sourceEvaluatedPath->fullyQualifiedPathPreservingTrailingSlash(), '!target' => $this->targetEvaluatedPath->fullyQualifiedPath()];
-            if (!$this->io()->confirm(dt("Replace files in !target with !source?", $replacements))) {
+            if (!$this->io()->confirm(dt("Copy new and override existing files at !target. The source is !source?", $replacements))) {
                 throw new UserAbortException();
             }
         }
 
         $rsync_options = $this->rsyncOptions($options);
         $parameters = array_merge([$rsync_options], $extra);
-        $parameters[] = $this->sourceEvaluatedPath->fullyQualifiedPathPreservingTrailingSlash();
-        $parameters[] = $this->targetEvaluatedPath->fullyQualifiedPath();
+        $parameters[] = Escape::shellArg($this->sourceEvaluatedPath->fullyQualifiedPathPreservingTrailingSlash());
+        $parameters[] = Escape::shellArg($this->targetEvaluatedPath->fullyQualifiedPath());
 
         $ssh_options = $this->getConfig()->get('ssh.options', '');
         $exec = "rsync -e 'ssh $ssh_options'". ' '. implode(' ', array_filter($parameters));
diff --git a/vendor/drush/drush/src/Commands/core/SiteInstallCommands.php b/vendor/drush/drush/src/Commands/core/SiteInstallCommands.php
index 3ddc7ce95e..56c35dee4e 100644
--- a/vendor/drush/drush/src/Commands/core/SiteInstallCommands.php
+++ b/vendor/drush/drush/src/Commands/core/SiteInstallCommands.php
@@ -390,7 +390,7 @@ protected function getSitesSubdirFromUri($root, $uri)
         if (file_exists($sites_file)) {
             include $sites_file;
             /** @var array $sites */
-            if (array_key_exists($uri, $sites)) {
+            if (isset($sites) && array_key_exists($uri, $sites)) {
                 return $sites[$uri];
             }
         }
diff --git a/vendor/drush/drush/src/Commands/core/SshCommands.php b/vendor/drush/drush/src/Commands/core/SshCommands.php
index c7036ab8e3..2e8d012822 100644
--- a/vendor/drush/drush/src/Commands/core/SshCommands.php
+++ b/vendor/drush/drush/src/Commands/core/SshCommands.php
@@ -11,7 +11,8 @@ class SshCommands extends DrushCommands implements SiteAliasManagerAwareInterfac
     use SiteAliasManagerAwareTrait;
 
     /**
-     * Connect to a Drupal site's server via SSH.
+     * Connect to a Drupal site's server via SSH, and optionally run a shell
+     * command.
      *
      * @command site:ssh
      * @option cd Directory to change to. Defaults to Drupal root.
@@ -23,15 +24,14 @@ class SshCommands extends DrushCommands implements SiteAliasManagerAwareInterfac
      *   Run "ls /tmp" on @prod site.
      * @usage drush @prod ssh git pull
      *   Run "git pull" on the Drupal root directory on the @prod site.
+     * @usage drush ssh git pull
+     *   Run "git pull" on the local Drupal root directory.
      * @aliases ssh,site-ssh
      * @topics docs:aliases
      */
     public function ssh(array $args, $options = ['cd' => self::REQ, 'tty' => false])
     {
         $alias = $this->siteAliasManager()->getSelf();
-        if ($alias->isNone()) {
-            throw new \Exception('A site alias is required. The way you call ssh command has changed to `drush @alias ssh`.');
-        }
 
         if (empty($args)) {
             $args[] = 'bash';
diff --git a/vendor/drush/drush/src/Commands/sql/SqlSyncCommands.php b/vendor/drush/drush/src/Commands/sql/SqlSyncCommands.php
index 4c7e556519..24b3f40e37 100644
--- a/vendor/drush/drush/src/Commands/sql/SqlSyncCommands.php
+++ b/vendor/drush/drush/src/Commands/sql/SqlSyncCommands.php
@@ -37,8 +37,6 @@ class SqlSyncCommands extends DrushCommands implements SiteAliasManagerAwareInte
      *   Copy the database from the local site to the site with the alias 'target'.
      * @usage drush sql:sync #prod #dev
      *   Copy the database from the site in /sites/prod to the site in /sites/dev (multisite installation).
-     * @usage drush sql:sync @source @self --database=foo --strict=0
-     *   Copy a secondary database whose $databases key is named 'foo'. Additional options to sql:dump may also be passed.
      * @topics docs:aliases,docs:policy,docs:configuration,docs:example-sync-via-http
      * @throws \Exception
      */
@@ -221,7 +219,7 @@ public function rsync($options, SiteAlias $sourceRecord, SiteAlias $targetRecord
                 $runner = $targetRecord;
             }
             $this->logger()->notice(dt('Copying dump file from source to target.'));
-            $process = $this->processManager()->drush($runner, 'core-rsync', [$sourceRecord->name() . ":$source_dump_path", $targetRecord->name() . ":$target_dump_path"], [], $double_dash_options);
+            $process = $this->processManager()->drush($runner, 'core-rsync', [$sourceRecord->name() . ":$source_dump_path", $targetRecord->name() . ":$target_dump_path"], ['yes' => true], $double_dash_options);
             $process->mustRun($process->showRealtime());
         }
         return $target_dump_path;
diff --git a/vendor/drush/drush/src/Drupal/Commands/core/DrupalCommands.php b/vendor/drush/drush/src/Drupal/Commands/core/DrupalCommands.php
index e1a4486acd..1c93d6bbb1 100644
--- a/vendor/drush/drush/src/Drupal/Commands/core/DrupalCommands.php
+++ b/vendor/drush/drush/src/Drupal/Commands/core/DrupalCommands.php
@@ -56,10 +56,7 @@ public function __construct(CronInterface $cron, ModuleHandlerInterface $moduleH
      */
     public function cron()
     {
-        $result = $this->getCron()->run();
-        if (!$result) {
-            throw new \Exception(dt('Cron run failed.'));
-        }
+        $this->getCron()->run();
     }
 
     /**
diff --git a/vendor/drush/drush/src/Drupal/Commands/core/QueueCommands.php b/vendor/drush/drush/src/Drupal/Commands/core/QueueCommands.php
index 3bf4b514d2..c63c8c58e6 100644
--- a/vendor/drush/drush/src/Drupal/Commands/core/QueueCommands.php
+++ b/vendor/drush/drush/src/Drupal/Commands/core/QueueCommands.php
@@ -57,17 +57,19 @@ public function getQueueService()
      * @param string $name The name of the queue to run, as defined in either hook_queue_info or hook_cron_queue_info.
      * @validate-queue name
      * @option time-limit The maximum number of seconds allowed to run the queue
+     * @option items-limit The maximum number of items allowed to run the queue
      */
-    public function run($name, $options = ['time-limit' => self::REQ])
+    public function run($name, $options = ['time-limit' => self::REQ, 'items-limit' => self::OPT])
     {
         $time_limit = (int) $options['time-limit'];
+        $items_limit = (int) $options['items-limit'];
         $start = microtime(true);
         $worker = $this->getWorkerManager()->createInstance($name);
         $end = time() + $time_limit;
         $queue = $this->getQueue($name);
         $count = 0;
 
-        while ((!$time_limit || time() < $end) && ($item = $queue->claimItem())) {
+        while ((!$time_limit || time() < $end) && (!$items_limit || $count < $items_limit) && ($item = $queue->claimItem())) {
             try {
                 $this->logger()->info(dt('Processing item @id from @name queue.', ['@name' => $name, '@id' => $item->item_id]));
                 $worker->processItem($item->data);
diff --git a/vendor/drush/drush/src/Runtime/ShutdownHandler.php b/vendor/drush/drush/src/Runtime/ShutdownHandler.php
index feb1e17c87..1c40d2a765 100644
--- a/vendor/drush/drush/src/Runtime/ShutdownHandler.php
+++ b/vendor/drush/drush/src/Runtime/ShutdownHandler.php
@@ -42,7 +42,7 @@ public function shutdownHandler()
         }
 
         if (!Drush::config()->get(Runtime::DRUSH_RUNTIME_COMPLETED_NAMESPACE)) {
-            Drush::logger()->warning('Drush command terminated abnormally. Check for an exit() in your Drupal site.');
+            Drush::logger()->warning('Drush command terminated abnormally.');
             // Make sure that we will return an error code when we exit,
             // even if the code that got us here did not.
             if (!Runtime::exitCode()) {
diff --git a/vendor/jakub-onderka/php-console-color/.gitignore b/vendor/jakub-onderka/php-console-color/.gitignore
deleted file mode 100644
index 05ab16b84f..0000000000
--- a/vendor/jakub-onderka/php-console-color/.gitignore
+++ /dev/null
@@ -1,3 +0,0 @@
-build
-vendor
-composer.lock
diff --git a/vendor/jakub-onderka/php-console-color/.travis.yml b/vendor/jakub-onderka/php-console-color/.travis.yml
deleted file mode 100644
index 49175a9969..0000000000
--- a/vendor/jakub-onderka/php-console-color/.travis.yml
+++ /dev/null
@@ -1,24 +0,0 @@
-language: php
-
-php:
-  - 5.4
-  - 5.5
-  - 5.6
-  - 7.0
-  - 7.1
-  - 7.2
-
-sudo: false
-
-cache:
-  directories:
-    - vendor
-    - $HOME/.composer/cache
-
-before_script:
-  - composer install --no-interaction --prefer-source
-
-script:
-  - ant phplint
-  - ant phpcs
-  - ant phpunit
diff --git a/vendor/jakub-onderka/php-console-color/LICENSE b/vendor/jakub-onderka/php-console-color/LICENSE
deleted file mode 100644
index 0954fc941f..0000000000
--- a/vendor/jakub-onderka/php-console-color/LICENSE
+++ /dev/null
@@ -1,27 +0,0 @@
-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
deleted file mode 100644
index 39e55d9255..0000000000
--- a/vendor/jakub-onderka/php-console-color/README.md
+++ /dev/null
@@ -1,10 +0,0 @@
-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/build.xml b/vendor/jakub-onderka/php-console-color/build.xml
deleted file mode 100644
index bb4ba66d8f..0000000000
--- a/vendor/jakub-onderka/php-console-color/build.xml
+++ /dev/null
@@ -1,93 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<project default="build">
-    <!-- Set executables according to OS -->
-    <condition property="phpunit" value="${basedir}/vendor/bin/phpunit.bat" else="${basedir}/vendor/bin/phpunit">
-        <os family="windows" />
-    </condition>
-
-    <condition property="phpcs" value="${basedir}/vendor/bin/phpcs.bat" else="${basedir}/vendor/bin/phpcs">
-        <os family="windows" />
-    </condition>
-
-    <condition property="parallel-lint" value="${basedir}/vendor/bin/parallel-lint.bat" else="${basedir}/vendor/bin/parallel-lint">
-        <os family="windows" />
-    </condition>
-
-    <condition property="var-dump-check" value="${basedir}/vendor/bin/var-dump-check.bat" else="${basedir}/vendor/bin/var-dump-check">
-        <os family="windows"/>
-    </condition>
-
-    <!-- Use colors in output can be disabled when calling ant with -Duse-colors=false -->
-    <property name="use-colors" value="true" />
-
-    <condition property="colors-arg.color" value="--colors" else="">
-        <equals arg1="${use-colors}" arg2="true" />
-    </condition>
-
-    <condition property="colors-arg.no-colors" value="" else="--no-colors">
-        <equals arg1="${use-colors}" arg2="true" />
-    </condition>
-
-    <!-- Targets -->
-    <target name="prepare" description="Create build directory">
-        <mkdir dir="${basedir}/build/logs" />
-    </target>
-
-    <target name="phplint" description="Check syntax errors in PHP files">
-        <exec executable="${parallel-lint}" failonerror="true">
-            <arg line='--exclude ${basedir}/vendor/' />
-            <arg line='${colors-arg.no-colors}' />
-            <arg line='${basedir}' />
-        </exec>
-    </target>
-
-    <target name="var-dump-check" description="Check PHP files for forgotten variable dumps">
-        <exec executable="${var-dump-check}" failonerror="true">
-            <arg line='--exclude ${basedir}/vendor/' />
-            <arg line='${colors-arg.no-colors}' />
-            <arg line='${basedir}' />
-        </exec>
-    </target>
-
-    <target name="phpcs" depends="prepare" description="Check PHP code style">
-        <delete file="${basedir}/build/logs/checkstyle.xml" quiet="true" />
-
-        <exec executable="${phpcs}">
-            <arg line='--extensions=php' />
-            <arg line='--standard="${basedir}/vendor/jakub-onderka/php-code-style/ruleset.xml"' />
-            <arg line='--report-checkstyle="${basedir}/build/logs/checkstyle.xml"' />
-            <arg line='--report-full' />
-            <arg line='"${basedir}/src"' />
-        </exec>
-    </target>
-
-    <target name="phpunit" depends="prepare" description="PHP unit">
-        <delete file="${basedir}/build/logs/phpunit.xml" quiet="true" />
-
-        <exec executable="${phpunit}">
-            <arg line='--configuration ${basedir}/phpunit.xml' />
-            <arg line='-d memory_limit=256M' />
-            <arg line='--log-junit "${basedir}/build/logs/phpunit.xml"' />
-            <arg line='${colors-arg.color}' />
-        </exec>
-    </target>
-
-    <target name="phpunit-coverage" depends="prepare" description="PHP unit with code coverage">
-        <delete file="${basedir}/build/logs/phpunit.xml" quiet="true" />
-        <delete file="${basedir}/build/logs/clover.xml" quiet="true" />
-        <delete dir="${basedir}/build/coverage" quiet="true" />
-        <mkdir dir="${basedir}/build/coverage" />
-
-        <exec executable="${phpunit}">
-            <arg line='--configuration ${basedir}/phpunit.xml' />
-            <arg line='-d memory_limit=256M' />
-            <arg line='--log-junit "${basedir}/build/logs/phpunit.xml"' />
-            <arg line='--coverage-clover "${basedir}/build/logs/clover.xml"' />
-            <arg line='--coverage-html "${basedir}/build/coverage/"' />
-            <arg line='${colors-arg.color}' />
-        </exec>
-    </target>
-
-    <target name="build" depends="phplint,var-dump-check,phpcs,phpunit" />
-
-</project>
\ 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
deleted file mode 100644
index 6481cb51d0..0000000000
--- a/vendor/jakub-onderka/php-console-color/composer.json
+++ /dev/null
@@ -1,23 +0,0 @@
-{
-    "name": "jakub-onderka/php-console-color",
-    "license": "BSD-2-Clause",
-    "authors": [
-        {
-            "name": "Jakub Onderka",
-            "email": "jakub.onderka@gmail.com"
-        }
-    ],
-    "autoload": {
-        "psr-4": {"JakubOnderka\\PhpConsoleColor\\": "src/"}
-    },
-    "require": {
-        "php": ">=5.4.0"
-    },
-    "require-dev": {
-        "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"
-    }
-}
diff --git a/vendor/jakub-onderka/php-console-color/example.php b/vendor/jakub-onderka/php-console-color/example.php
deleted file mode 100644
index 5e698a24ec..0000000000
--- a/vendor/jakub-onderka/php-console-color/example.php
+++ /dev/null
@@ -1,38 +0,0 @@
-<?php
-$loader = require_once __DIR__ . '/vendor/autoload.php';
-
-$consoleColor = new JakubOnderka\PhpConsoleColor\ConsoleColor();
-
-echo "Colors are supported: " . ($consoleColor->isSupported() ? 'Yes' : 'No') . "\n";
-echo "256 colors are supported: " . ($consoleColor->are256ColorsSupported() ? 'Yes' : 'No') . "\n\n";
-
-if ($consoleColor->isSupported()) {
-    foreach ($consoleColor->getPossibleStyles() as $style) {
-        echo $consoleColor->apply($style, $style) . "\n";
-    }
-}
-
-echo "\n";
-
-if ($consoleColor->are256ColorsSupported()) {
-    echo "Foreground colors:\n";
-    for ($i = 1; $i <= 255; $i++) {
-        echo $consoleColor->apply("color_$i", str_pad($i, 6, ' ', STR_PAD_BOTH));
-
-        if ($i % 15 === 0) {
-            echo "\n";
-        }
-    }
-
-    echo "\nBackground colors:\n";
-
-    for ($i = 1; $i <= 255; $i++) {
-        echo $consoleColor->apply("bg_color_$i", str_pad($i, 6, ' ', STR_PAD_BOTH));
-
-        if ($i % 15 === 0) {
-            echo "\n";
-        }
-    }
-
-    echo "\n";
-}
diff --git a/vendor/jakub-onderka/php-console-color/phpunit.xml b/vendor/jakub-onderka/php-console-color/phpunit.xml
deleted file mode 100644
index f1105cc4e2..0000000000
--- a/vendor/jakub-onderka/php-console-color/phpunit.xml
+++ /dev/null
@@ -1,16 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<phpunit
-    bootstrap="./vendor/autoload.php">
-    <testsuites>
-        <testsuite>
-            <directory suffix="Test.php">tests</directory>
-        </testsuite>
-    </testsuites>
-
-    <!-- Ignore vendor folder for code coverage -->
-    <filter>
-        <blacklist>
-            <directory>vendor</directory>
-        </blacklist>
-    </filter>
-</phpunit>
diff --git a/vendor/jakub-onderka/php-console-color/src/ConsoleColor.php b/vendor/jakub-onderka/php-console-color/src/ConsoleColor.php
deleted file mode 100644
index 90fd125286..0000000000
--- a/vendor/jakub-onderka/php-console-color/src/ConsoleColor.php
+++ /dev/null
@@ -1,287 +0,0 @@
-<?php
-namespace JakubOnderka\PhpConsoleColor;
-
-class ConsoleColor
-{
-    const FOREGROUND = 38,
-        BACKGROUND = 48;
-
-    const COLOR256_REGEXP = '~^(bg_)?color_([0-9]{1,3})$~';
-
-    const RESET_STYLE = 0;
-
-    /** @var bool */
-    private $isSupported;
-
-    /** @var bool */
-    private $forceStyle = false;
-
-    /** @var array */
-    private $styles = array(
-        'none' => null,
-        'bold' => '1',
-        'dark' => '2',
-        'italic' => '3',
-        'underline' => '4',
-        'blink' => '5',
-        'reverse' => '7',
-        'concealed' => '8',
-
-        'default' => '39',
-        'black' => '30',
-        'red' => '31',
-        'green' => '32',
-        'yellow' => '33',
-        'blue' => '34',
-        'magenta' => '35',
-        'cyan' => '36',
-        'light_gray' => '37',
-
-        'dark_gray' => '90',
-        'light_red' => '91',
-        'light_green' => '92',
-        'light_yellow' => '93',
-        'light_blue' => '94',
-        'light_magenta' => '95',
-        'light_cyan' => '96',
-        'white' => '97',
-
-        'bg_default' => '49',
-        'bg_black' => '40',
-        'bg_red' => '41',
-        'bg_green' => '42',
-        'bg_yellow' => '43',
-        'bg_blue' => '44',
-        'bg_magenta' => '45',
-        'bg_cyan' => '46',
-        'bg_light_gray' => '47',
-
-        'bg_dark_gray' => '100',
-        'bg_light_red' => '101',
-        'bg_light_green' => '102',
-        'bg_light_yellow' => '103',
-        'bg_light_blue' => '104',
-        'bg_light_magenta' => '105',
-        'bg_light_cyan' => '106',
-        'bg_white' => '107',
-    );
-
-    /** @var array */
-    private $themes = array();
-
-    public function __construct()
-    {
-        $this->isSupported = $this->isSupported();
-    }
-
-    /**
-     * @param string|array $style
-     * @param string $text
-     * @return string
-     * @throws InvalidStyleException
-     * @throws \InvalidArgumentException
-     */
-    public function apply($style, $text)
-    {
-        if (!$this->isStyleForced() && !$this->isSupported()) {
-            return $text;
-        }
-
-        if (is_string($style)) {
-            $style = array($style);
-        }
-        if (!is_array($style)) {
-            throw new \InvalidArgumentException("Style must be string or array.");
-        }
-
-        $sequences = array();
-
-        foreach ($style as $s) {
-            if (isset($this->themes[$s])) {
-                $sequences = array_merge($sequences, $this->themeSequence($s));
-            } else if ($this->isValidStyle($s)) {
-                $sequences[] = $this->styleSequence($s);
-            } else {
-                throw new InvalidStyleException($s);
-            }
-        }
-
-        $sequences = array_filter($sequences, function ($val) {
-            return $val !== null;
-        });
-
-        if (empty($sequences)) {
-            return $text;
-        }
-
-        return $this->escSequence(implode(';', $sequences)) . $text . $this->escSequence(self::RESET_STYLE);
-    }
-
-    /**
-     * @param bool $forceStyle
-     */
-    public function setForceStyle($forceStyle)
-    {
-        $this->forceStyle = (bool) $forceStyle;
-    }
-
-    /**
-     * @return bool
-     */
-    public function isStyleForced()
-    {
-        return $this->forceStyle;
-    }
-
-    /**
-     * @param array $themes
-     * @throws InvalidStyleException
-     * @throws \InvalidArgumentException
-     */
-    public function setThemes(array $themes)
-    {
-        $this->themes = array();
-        foreach ($themes as $name => $styles) {
-            $this->addTheme($name, $styles);
-        }
-    }
-
-    /**
-     * @param string $name
-     * @param array|string $styles
-     * @throws \InvalidArgumentException
-     * @throws InvalidStyleException
-     */
-    public function addTheme($name, $styles)
-    {
-        if (is_string($styles)) {
-            $styles = array($styles);
-        }
-        if (!is_array($styles)) {
-            throw new \InvalidArgumentException("Style must be string or array.");
-        }
-
-        foreach ($styles as $style) {
-            if (!$this->isValidStyle($style)) {
-                throw new InvalidStyleException($style);
-            }
-        }
-
-        $this->themes[$name] = $styles;
-    }
-
-    /**
-     * @return array
-     */
-    public function getThemes()
-    {
-        return $this->themes;
-    }
-
-    /**
-     * @param string $name
-     * @return bool
-     */
-    public function hasTheme($name)
-    {
-        return isset($this->themes[$name]);
-    }
-
-    /**
-     * @param string $name
-     */
-    public function removeTheme($name)
-    {
-        unset($this->themes[$name]);
-    }
-
-    /**
-     * @return bool
-     */
-    public function isSupported()
-    {
-        if (DIRECTORY_SEPARATOR === '\\') {
-            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 bool
-     */
-    public function are256ColorsSupported()
-    {
-        if (DIRECTORY_SEPARATOR === '\\') {
-            return function_exists('sapi_windows_vt100_support') && @sapi_windows_vt100_support(STDOUT);
-        } else {
-            return strpos(getenv('TERM'), '256color') !== false;
-        }
-    }
-
-    /**
-     * @return array
-     */
-    public function getPossibleStyles()
-    {
-        return array_keys($this->styles);
-    }
-
-    /**
-     * @param string $name
-     * @return string[]
-     */
-    private function themeSequence($name)
-    {
-        $sequences = array();
-        foreach ($this->themes[$name] as $style) {
-            $sequences[] = $this->styleSequence($style);
-        }
-        return $sequences;
-    }
-
-    /**
-     * @param string $style
-     * @return string
-     */
-    private function styleSequence($style)
-    {
-        if (array_key_exists($style, $this->styles)) {
-            return $this->styles[$style];
-        }
-
-        if (!$this->are256ColorsSupported()) {
-            return null;
-        }
-
-        preg_match(self::COLOR256_REGEXP, $style, $matches);
-
-        $type = $matches[1] === 'bg_' ? self::BACKGROUND : self::FOREGROUND;
-        $value = $matches[2];
-
-        return "$type;5;$value";
-    }
-
-    /**
-     * @param string $style
-     * @return bool
-     */
-    private function isValidStyle($style)
-    {
-        return array_key_exists($style, $this->styles) || preg_match(self::COLOR256_REGEXP, $style);
-    }
-
-    /**
-     * @param string|int $value
-     * @return string
-     */
-    private function escSequence($value)
-    {
-        return "\033[{$value}m";
-    }
-}
diff --git a/vendor/jakub-onderka/php-console-color/src/InvalidStyleException.php b/vendor/jakub-onderka/php-console-color/src/InvalidStyleException.php
deleted file mode 100644
index 6f1586f62e..0000000000
--- a/vendor/jakub-onderka/php-console-color/src/InvalidStyleException.php
+++ /dev/null
@@ -1,10 +0,0 @@
-<?php
-namespace JakubOnderka\PhpConsoleColor;
-
-class InvalidStyleException extends \Exception
-{
-    public function __construct($styleName)
-    {
-        parent::__construct("Invalid style $styleName.");
-    }
-}
\ No newline at end of file
diff --git a/vendor/jakub-onderka/php-console-color/tests/ConsoleColorTest.php b/vendor/jakub-onderka/php-console-color/tests/ConsoleColorTest.php
deleted file mode 100644
index aaa1a224a3..0000000000
--- a/vendor/jakub-onderka/php-console-color/tests/ConsoleColorTest.php
+++ /dev/null
@@ -1,184 +0,0 @@
-<?php
-use JakubOnderka\PhpConsoleColor\ConsoleColor;
-
-class ConsoleColorWithForceSupport extends ConsoleColor
-{
-    private $isSupportedForce = true;
-
-    private $are256ColorsSupportedForce = true;
-
-    public function setIsSupported($isSupported)
-    {
-        $this->isSupportedForce = $isSupported;
-    }
-
-    public function isSupported()
-    {
-        return $this->isSupportedForce;
-    }
-
-    public function setAre256ColorsSupported($are256ColorsSupported)
-    {
-        $this->are256ColorsSupportedForce = $are256ColorsSupported;
-    }
-
-    public function are256ColorsSupported()
-    {
-        return $this->are256ColorsSupportedForce;
-    }
-}
-
-class ConsoleColorTest extends \PHPUnit_Framework_TestCase
-{
-    /** @var ConsoleColorWithForceSupport */
-    private $uut;
-
-    protected function setUp()
-    {
-        $this->uut = new ConsoleColorWithForceSupport();
-    }
-
-    public function testNone()
-    {
-        $output = $this->uut->apply('none', 'text');
-        $this->assertEquals("text", $output);
-    }
-
-    public function testBold()
-    {
-        $output = $this->uut->apply('bold', 'text');
-        $this->assertEquals("\033[1mtext\033[0m", $output);
-    }
-
-    public function testBoldColorsAreNotSupported()
-    {
-        $this->uut->setIsSupported(false);
-
-        $output = $this->uut->apply('bold', 'text');
-        $this->assertEquals("text", $output);
-    }
-
-    public function testBoldColorsAreNotSupportedButAreForced()
-    {
-        $this->uut->setIsSupported(false);
-        $this->uut->setForceStyle(true);
-
-        $output = $this->uut->apply('bold', 'text');
-        $this->assertEquals("\033[1mtext\033[0m", $output);
-    }
-
-    public function testDark()
-    {
-        $output = $this->uut->apply('dark', 'text');
-        $this->assertEquals("\033[2mtext\033[0m", $output);
-    }
-
-    public function testBoldAndDark()
-    {
-        $output = $this->uut->apply(array('bold', 'dark'), 'text');
-        $this->assertEquals("\033[1;2mtext\033[0m", $output);
-    }
-
-    public function test256ColorForeground()
-    {
-        $output = $this->uut->apply('color_255', 'text');
-        $this->assertEquals("\033[38;5;255mtext\033[0m", $output);
-    }
-
-    public function test256ColorWithoutSupport()
-    {
-        $this->uut->setAre256ColorsSupported(false);
-
-        $output = $this->uut->apply('color_255', 'text');
-        $this->assertEquals("text", $output);
-    }
-
-    public function test256ColorBackground()
-    {
-        $output = $this->uut->apply('bg_color_255', 'text');
-        $this->assertEquals("\033[48;5;255mtext\033[0m", $output);
-    }
-
-    public function test256ColorForegroundAndBackground()
-    {
-        $output = $this->uut->apply(array('color_200', 'bg_color_255'), 'text');
-        $this->assertEquals("\033[38;5;200;48;5;255mtext\033[0m", $output);
-    }
-
-    public function testSetOwnTheme()
-    {
-        $this->uut->setThemes(array('bold_dark' => array('bold', 'dark')));
-        $output = $this->uut->apply(array('bold_dark'), 'text');
-        $this->assertEquals("\033[1;2mtext\033[0m", $output);
-    }
-
-    public function testAddOwnTheme()
-    {
-        $this->uut->addTheme('bold_own', 'bold');
-        $output = $this->uut->apply(array('bold_own'), 'text');
-        $this->assertEquals("\033[1mtext\033[0m", $output);
-    }
-
-    public function testAddOwnThemeArray()
-    {
-        $this->uut->addTheme('bold_dark', array('bold', 'dark'));
-        $output = $this->uut->apply(array('bold_dark'), 'text');
-        $this->assertEquals("\033[1;2mtext\033[0m", $output);
-    }
-
-    public function testOwnWithStyle()
-    {
-        $this->uut->addTheme('bold_dark', array('bold', 'dark'));
-        $output = $this->uut->apply(array('bold_dark', 'italic'), 'text');
-        $this->assertEquals("\033[1;2;3mtext\033[0m", $output);
-    }
-
-    public function testHasAndRemoveTheme()
-    {
-        $this->assertFalse($this->uut->hasTheme('bold_dark'));
-
-        $this->uut->addTheme('bold_dark', array('bold', 'dark'));
-        $this->assertTrue($this->uut->hasTheme('bold_dark'));
-
-        $this->uut->removeTheme('bold_dark');
-        $this->assertFalse($this->uut->hasTheme('bold_dark'));
-    }
-
-    public function testApplyInvalidArgument()
-    {
-        $this->setExpectedException('\InvalidArgumentException');
-        $this->uut->apply(new stdClass(), 'text');
-    }
-
-    public function testApplyInvalidStyleName()
-    {
-        $this->setExpectedException('\JakubOnderka\PhpConsoleColor\InvalidStyleException');
-        $this->uut->apply('invalid', 'text');
-    }
-
-    public function testApplyInvalid256Color()
-    {
-        $this->setExpectedException('\JakubOnderka\PhpConsoleColor\InvalidStyleException');
-        $this->uut->apply('color_2134', 'text');
-    }
-
-    public function testThemeInvalidStyle()
-    {
-        $this->setExpectedException('\JakubOnderka\PhpConsoleColor\InvalidStyleException');
-        $this->uut->addTheme('invalid', array('invalid'));
-    }
-
-    public function testForceStyle()
-    {
-        $this->assertFalse($this->uut->isStyleForced());
-        $this->uut->setForceStyle(true);
-        $this->assertTrue($this->uut->isStyleForced());
-    }
-
-    public function testGetPossibleStyles()
-    {
-        $this->assertInternalType('array', $this->uut->getPossibleStyles());
-        $this->assertNotEmpty($this->uut->getPossibleStyles());
-    }
-}
-
diff --git a/vendor/jakub-onderka/php-console-highlighter/.gitignore b/vendor/jakub-onderka/php-console-highlighter/.gitignore
deleted file mode 100644
index 70f6ec0695..0000000000
--- a/vendor/jakub-onderka/php-console-highlighter/.gitignore
+++ /dev/null
@@ -1,4 +0,0 @@
-/.idea/
-/build/
-/vendor/
-/composer.lock
\ 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
deleted file mode 100644
index c88c4ec9d4..0000000000
--- a/vendor/jakub-onderka/php-console-highlighter/.travis.yml
+++ /dev/null
@@ -1,22 +0,0 @@
-language: php
-
-php:
-  - 5.4
-  - 5.5
-  - 5.6
-  - 7.0
-  - 7.1
-  - 7.2
-  
-sudo: false
-
-cache:
-  directories:
-    - vendor
-    - $HOME/.composer/cache
-
-before_script:
-  - composer install --no-interaction --prefer-source
-
-script:
-  - ant
diff --git a/vendor/jakub-onderka/php-console-highlighter/README.md b/vendor/jakub-onderka/php-console-highlighter/README.md
deleted file mode 100644
index 1ef3d1340d..0000000000
--- a/vendor/jakub-onderka/php-console-highlighter/README.md
+++ /dev/null
@@ -1,42 +0,0 @@
-PHP Console Highlighter
-=======================
-
-Highlight PHP code in console (terminal).
-
-Example
--------
-![Example](http://jakubonderka.github.io/php-console-highlight-example.png)
-
-Install
--------
-
-Just create a `composer.json` file and run the `php composer.phar install` command to install it:
-
-```json
-{
-    "require": {
-        "jakub-onderka/php-console-highlighter": "0.*"
-    }
-}
-```
-
-Usage
--------
-```php
-<?php
-use JakubOnderka\PhpConsoleColor\ConsoleColor;
-use JakubOnderka\PhpConsoleHighlighter\Highlighter;
-
-require __DIR__ . '/vendor/autoload.php';
-
-$highlighter = new Highlighter(new ConsoleColor());
-
-$fileContent = file_get_contents(__FILE__);
-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/build.xml b/vendor/jakub-onderka/php-console-highlighter/build.xml
deleted file mode 100644
index d656ea9d4b..0000000000
--- a/vendor/jakub-onderka/php-console-highlighter/build.xml
+++ /dev/null
@@ -1,93 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<project default="build">
-    <!-- Set executables according to OS -->
-    <condition property="phpunit" value="${basedir}/vendor/bin/phpunit.bat" else="${basedir}/vendor/bin/phpunit">
-        <os family="windows" />
-    </condition>
-
-    <condition property="phpcs" value="${basedir}/vendor/bin/phpcs.bat" else="${basedir}/vendor/bin/phpcs">
-        <os family="windows" />
-    </condition>
-
-    <condition property="parallel-lint" value="${basedir}/vendor/bin/parallel-lint.bat" else="${basedir}/vendor/bin/parallel-lint">
-        <os family="windows" />
-    </condition>
-
-    <condition property="var-dump-check" value="${basedir}/vendor/bin/var-dump-check.bat" else="${basedir}/vendor/bin/var-dump-check">
-        <os family="windows"/>
-    </condition>
-
-    <!-- Use colors in output can be disabled when calling ant with -Duse-colors=false -->
-    <property name="use-colors" value="true" />
-
-    <condition property="colors-arg.color" value="--colors" else="">
-        <equals arg1="${use-colors}" arg2="true" />
-    </condition>
-
-    <condition property="colors-arg.no-colors" value="" else="--no-colors">
-        <equals arg1="${use-colors}" arg2="true" />
-    </condition>
-
-    <!-- Targets -->
-    <target name="prepare" description="Create build directory">
-        <mkdir dir="${basedir}/build/logs" />
-    </target>
-
-    <target name="phplint" description="Check syntax errors in PHP files">
-        <exec executable="${parallel-lint}" failonerror="true">
-            <arg line='--exclude ${basedir}/vendor/' />
-            <arg line='${colors-arg.no-colors}' />
-            <arg line='${basedir}' />
-        </exec>
-    </target>
-
-    <target name="var-dump-check" description="Check PHP files for forgotten variable dumps">
-        <exec executable="${var-dump-check}" failonerror="true">
-            <arg line='--exclude ${basedir}/vendor/' />
-            <arg line='${colors-arg.no-colors}' />
-            <arg line='${basedir}' />
-        </exec>
-    </target>
-
-    <target name="phpcs" depends="prepare" description="Check PHP code style">
-        <delete file="${basedir}/build/logs/checkstyle.xml" quiet="true" />
-
-        <exec executable="${phpcs}">
-            <arg line='--extensions=php' />
-            <arg line='--standard="${basedir}/vendor/jakub-onderka/php-code-style/ruleset.xml"' />
-            <arg line='--report-checkstyle="${basedir}/build/logs/checkstyle.xml"' />
-            <arg line='--report-full' />
-            <arg line='"${basedir}/src"' />
-        </exec>
-    </target>
-
-    <target name="phpunit" depends="prepare" description="PHP unit">
-        <delete file="${basedir}/build/logs/phpunit.xml" quiet="true" />
-
-        <exec executable="${phpunit}">
-            <arg line='--configuration ${basedir}/phpunit.xml' />
-            <arg line='-d memory_limit=256M' />
-            <arg line='--log-junit "${basedir}/build/logs/phpunit.xml"' />
-            <arg line='${colors-arg.color}' />
-        </exec>
-    </target>
-
-    <target name="phpunit-coverage" depends="prepare" description="PHP unit with code coverage">
-        <delete file="${basedir}/build/logs/phpunit.xml" quiet="true" />
-        <delete file="${basedir}/build/logs/clover.xml" quiet="true" />
-        <delete dir="${basedir}/build/coverage" quiet="true" />
-        <mkdir dir="${basedir}/build/coverage" />
-
-        <exec executable="${phpunit}" failonerror="true">
-            <arg line='--configuration ${basedir}/phpunit.xml' />
-            <arg line='-d memory_limit=256M' />
-            <arg line='--log-junit "${basedir}/build/logs/phpunit.xml"' />
-            <arg line='--coverage-clover "${basedir}/build/logs/clover.xml"' />
-            <arg line='--coverage-html "${basedir}/build/coverage/"' />
-            <arg line='${colors-arg.color}' />
-        </exec>
-    </target>
-
-    <target name="build" depends="phplint,var-dump-check,phpcs,phpunit" />
-
-</project>
\ No newline at end of file
diff --git a/vendor/jakub-onderka/php-console-highlighter/composer.json b/vendor/jakub-onderka/php-console-highlighter/composer.json
deleted file mode 100644
index 21c29f710a..0000000000
--- a/vendor/jakub-onderka/php-console-highlighter/composer.json
+++ /dev/null
@@ -1,28 +0,0 @@
-{
-    "name": "jakub-onderka/php-console-highlighter",
-    "description": "Highlight PHP code in terminal",
-    "type": "library",
-    "license": "MIT",
-    "authors": [
-        {
-            "name": "Jakub Onderka",
-            "email": "acci@acci.cz",
-            "homepage": "http://www.acci.cz/"
-        }
-    ],
-    "autoload": {
-        "psr-4": {"JakubOnderka\\PhpConsoleHighlighter\\": "src/"}
-    },
-    "require": {
-        "php": ">=5.4.0",
-        "ext-tokenizer": "*",
-        "jakub-onderka/php-console-color": "~0.2"
-    },
-    "require-dev": {
-        "phpunit/phpunit": "~4.0",
-        "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/examples/snippet.php b/vendor/jakub-onderka/php-console-highlighter/examples/snippet.php
deleted file mode 100644
index 1bf6ac3bd7..0000000000
--- a/vendor/jakub-onderka/php-console-highlighter/examples/snippet.php
+++ /dev/null
@@ -1,10 +0,0 @@
-<?php
-use JakubOnderka\PhpConsoleColor\ConsoleColor;
-use JakubOnderka\PhpConsoleHighlighter\Highlighter;
-
-require __DIR__ . '/../vendor/autoload.php';
-
-$highlighter = new Highlighter(new ConsoleColor());
-
-$fileContent = file_get_contents(__FILE__);
-echo $highlighter->getCodeSnippet($fileContent, 3);
\ No newline at end of file
diff --git a/vendor/jakub-onderka/php-console-highlighter/examples/whole_file.php b/vendor/jakub-onderka/php-console-highlighter/examples/whole_file.php
deleted file mode 100644
index 2a023d80ab..0000000000
--- a/vendor/jakub-onderka/php-console-highlighter/examples/whole_file.php
+++ /dev/null
@@ -1,10 +0,0 @@
-<?php
-use JakubOnderka\PhpConsoleColor\ConsoleColor;
-use JakubOnderka\PhpConsoleHighlighter\Highlighter;
-
-require __DIR__ . '/../vendor/autoload.php';
-
-$highlighter = new Highlighter(new ConsoleColor());
-
-$fileContent = file_get_contents(__FILE__);
-echo $highlighter->getWholeFile($fileContent);
\ No newline at end of file
diff --git a/vendor/jakub-onderka/php-console-highlighter/examples/whole_file_line_numbers.php b/vendor/jakub-onderka/php-console-highlighter/examples/whole_file_line_numbers.php
deleted file mode 100644
index f9178f2d13..0000000000
--- a/vendor/jakub-onderka/php-console-highlighter/examples/whole_file_line_numbers.php
+++ /dev/null
@@ -1,10 +0,0 @@
-<?php
-use JakubOnderka\PhpConsoleColor\ConsoleColor;
-use JakubOnderka\PhpConsoleHighlighter\Highlighter;
-
-require __DIR__ . '/../vendor/autoload.php';
-
-$highlighter = new Highlighter(new ConsoleColor());
-
-$fileContent = file_get_contents(__FILE__);
-echo $highlighter->getWholeFileWithLineNumbers($fileContent);
\ No newline at end of file
diff --git a/vendor/jakub-onderka/php-console-highlighter/phpunit.xml b/vendor/jakub-onderka/php-console-highlighter/phpunit.xml
deleted file mode 100644
index 9c653a680a..0000000000
--- a/vendor/jakub-onderka/php-console-highlighter/phpunit.xml
+++ /dev/null
@@ -1,15 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<phpunit bootstrap="./vendor/autoload.php">
-    <testsuites>
-        <testsuite>
-            <directory suffix="Test.php">tests</directory>
-        </testsuite>
-    </testsuites>
-
-    <!-- Ignore vendor folder for code coverage -->
-    <filter>
-        <blacklist>
-            <directory>vendor</directory>
-        </blacklist>
-    </filter>
-</phpunit>
diff --git a/vendor/jakub-onderka/php-console-highlighter/src/Highlighter.php b/vendor/jakub-onderka/php-console-highlighter/src/Highlighter.php
deleted file mode 100644
index 47ce30d2c0..0000000000
--- a/vendor/jakub-onderka/php-console-highlighter/src/Highlighter.php
+++ /dev/null
@@ -1,263 +0,0 @@
-<?php
-namespace JakubOnderka\PhpConsoleHighlighter;
-
-use JakubOnderka\PhpConsoleColor\ConsoleColor;
-
-class Highlighter
-{
-    const TOKEN_DEFAULT = 'token_default',
-        TOKEN_COMMENT = 'token_comment',
-        TOKEN_STRING = 'token_string',
-        TOKEN_HTML = 'token_html',
-        TOKEN_KEYWORD = 'token_keyword';
-
-    const ACTUAL_LINE_MARK = 'actual_line_mark',
-        LINE_NUMBER = 'line_number';
-
-    /** @var ConsoleColor */
-    private $color;
-
-    /** @var array */
-    private $defaultTheme = array(
-        self::TOKEN_STRING => 'red',
-        self::TOKEN_COMMENT => 'yellow',
-        self::TOKEN_KEYWORD => 'green',
-        self::TOKEN_DEFAULT => 'default',
-        self::TOKEN_HTML => 'cyan',
-
-        self::ACTUAL_LINE_MARK  => 'red',
-        self::LINE_NUMBER => 'dark_gray',
-    );
-
-    /**
-     * @param ConsoleColor $color
-     * @throws \JakubOnderka\PhpConsoleColor\InvalidStyleException
-     */
-    public function __construct(ConsoleColor $color)
-    {
-        $this->color = $color;
-
-        foreach ($this->defaultTheme as $name => $styles) {
-            if (!$this->color->hasTheme($name)) {
-                $this->color->addTheme($name, $styles);
-            }
-        }
-    }
-
-    /**
-     * @param string $source
-     * @param int $lineNumber
-     * @param int $linesBefore
-     * @param int $linesAfter
-     * @return string
-     * @throws \JakubOnderka\PhpConsoleColor\InvalidStyleException
-     * @throws \InvalidArgumentException
-     */
-    public function getCodeSnippet($source, $lineNumber, $linesBefore = 2, $linesAfter = 2)
-    {
-        $tokenLines = $this->getHighlightedLines($source);
-
-        $offset = $lineNumber - $linesBefore - 1;
-        $offset = max($offset, 0);
-        $length = $linesAfter + $linesBefore + 1;
-        $tokenLines = array_slice($tokenLines, $offset, $length, $preserveKeys = true);
-
-        $lines = $this->colorLines($tokenLines);
-
-        return $this->lineNumbers($lines, $lineNumber);
-    }
-
-    /**
-     * @param string $source
-     * @return string
-     * @throws \JakubOnderka\PhpConsoleColor\InvalidStyleException
-     * @throws \InvalidArgumentException
-     */
-    public function getWholeFile($source)
-    {
-        $tokenLines = $this->getHighlightedLines($source);
-        $lines = $this->colorLines($tokenLines);
-        return implode(PHP_EOL, $lines);
-    }
-
-    /**
-     * @param string $source
-     * @return string
-     * @throws \JakubOnderka\PhpConsoleColor\InvalidStyleException
-     * @throws \InvalidArgumentException
-     */
-    public function getWholeFileWithLineNumbers($source)
-    {
-        $tokenLines = $this->getHighlightedLines($source);
-        $lines = $this->colorLines($tokenLines);
-        return $this->lineNumbers($lines);
-    }
-
-    /**
-     * @param string $source
-     * @return array
-     */
-    private function getHighlightedLines($source)
-    {
-        $source = str_replace(array("\r\n", "\r"), "\n", $source);
-        $tokens = $this->tokenize($source);
-        return $this->splitToLines($tokens);
-    }
-
-    /**
-     * @param string $source
-     * @return array
-     */
-    private function tokenize($source)
-    {
-        $tokens = token_get_all($source);
-
-        $output = array();
-        $currentType = null;
-        $buffer = '';
-
-        foreach ($tokens as $token) {
-            if (is_array($token)) {
-                switch ($token[0]) {
-                    case T_WHITESPACE:
-                        break;
-
-                    case T_OPEN_TAG:
-                    case T_OPEN_TAG_WITH_ECHO:
-                    case T_CLOSE_TAG:
-                    case T_STRING:
-                    case T_VARIABLE:
-
-                    // Constants
-                    case T_DIR:
-                    case T_FILE:
-                    case T_METHOD_C:
-                    case T_DNUMBER:
-                    case T_LNUMBER:
-                    case T_NS_C:
-                    case T_LINE:
-                    case T_CLASS_C:
-                    case T_FUNC_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:
-                        $newType = self::TOKEN_KEYWORD;
-                }
-            } else {
-                $newType = $token === '"' ? self::TOKEN_STRING : self::TOKEN_KEYWORD;
-            }
-
-            if ($currentType === null) {
-                $currentType = $newType;
-            }
-
-            if ($currentType !== $newType) {
-                $output[] = array($currentType, $buffer);
-                $buffer = '';
-                $currentType = $newType;
-            }
-
-            $buffer .= is_array($token) ? $token[1] : $token;
-        }
-
-        if (isset($newType)) {
-            $output[] = array($newType, $buffer);
-        }
-
-        return $output;
-    }
-
-    /**
-     * @param array $tokens
-     * @return array
-     */
-    private function splitToLines(array $tokens)
-    {
-        $lines = array();
-
-        $line = array();
-        foreach ($tokens as $token) {
-            foreach (explode("\n", $token[1]) as $count => $tokenLine) {
-                if ($count > 0) {
-                    $lines[] = $line;
-                    $line = array();
-                }
-
-                if ($tokenLine === '') {
-                    continue;
-                }
-
-                $line[] = array($token[0], $tokenLine);
-            }
-        }
-
-        $lines[] = $line;
-
-        return $lines;
-    }
-
-    /**
-     * @param array $tokenLines
-     * @return array
-     * @throws \JakubOnderka\PhpConsoleColor\InvalidStyleException
-     * @throws \InvalidArgumentException
-     */
-    private function colorLines(array $tokenLines)
-    {
-        $lines = array();
-        foreach ($tokenLines as $lineCount => $tokenLine) {
-            $line = '';
-            foreach ($tokenLine as $token) {
-                list($tokenType, $tokenValue) = $token;
-                if ($this->color->hasTheme($tokenType)) {
-                    $line .= $this->color->apply($tokenType, $tokenValue);
-                } else {
-                    $line .= $tokenValue;
-                }
-            }
-            $lines[$lineCount] = $line;
-        }
-
-        return $lines;
-    }
-
-    /**
-     * @param array $lines
-     * @param null|int $markLine
-     * @return string
-     * @throws \JakubOnderka\PhpConsoleColor\InvalidStyleException
-     */
-    private function lineNumbers(array $lines, $markLine = null)
-    {
-        end($lines);
-        $lineStrlen = strlen(key($lines) + 1);
-
-        $snippet = '';
-        foreach ($lines as $i => $line) {
-            if ($markLine !== null) {
-                $snippet .= ($markLine === $i + 1 ? $this->color->apply(self::ACTUAL_LINE_MARK, '  > ') : '    ');
-            }
-
-            $snippet .= $this->color->apply(self::LINE_NUMBER, str_pad($i + 1, $lineStrlen, ' ', STR_PAD_LEFT) . '| ');
-            $snippet .= $line . PHP_EOL;
-        }
-
-        return $snippet;
-    }
-}
\ No newline at end of file
diff --git a/vendor/jakub-onderka/php-console-highlighter/tests/HigligterTest.php b/vendor/jakub-onderka/php-console-highlighter/tests/HigligterTest.php
deleted file mode 100644
index 187beb67bb..0000000000
--- a/vendor/jakub-onderka/php-console-highlighter/tests/HigligterTest.php
+++ /dev/null
@@ -1,274 +0,0 @@
-<?php
-namespace JakubOnderka\PhpConsoleHighlighter;
-
-class HighlighterTest extends \PHPUnit_Framework_TestCase
-{
-    /** @var Highlighter */
-    private $uut;
-
-    protected function getConsoleColorMock()
-    {
-        $mock = method_exists($this, 'createMock')
-            ? $this->createMock('\JakubOnderka\PhpConsoleColor\ConsoleColor')
-            : $this->getMock('\JakubOnderka\PhpConsoleColor\ConsoleColor');
-
-        $mock->expects($this->any())
-            ->method('apply')
-            ->will($this->returnCallback(function ($style, $text) {
-                return "<$style>$text</$style>";
-            }));
-
-        $mock->expects($this->any())
-            ->method('hasTheme')
-            ->will($this->returnValue(true));
-
-        return $mock;
-    }
-
-    protected function setUp()
-    {
-        $this->uut = new Highlighter($this->getConsoleColorMock());
-    }
-
-    protected function compare($original, $expected)
-    {
-        $output = $this->uut->getWholeFile($original);
-        $this->assertEquals($expected, $output);
-    }
-
-    public function testVariable()
-    {
-        $this->compare(
-            <<<EOL
-<?php
-echo \$a;
-EOL
-            ,
-            <<<EOL
-<token_default><?php</token_default>
-<token_keyword>echo </token_keyword><token_default>\$a</token_default><token_keyword>;</token_keyword>
-EOL
-        );
-    }
-
-    public function testInteger()
-    {
-        $this->compare(
-            <<<EOL
-<?php
-echo 43;
-EOL
-            ,
-            <<<EOL
-<token_default><?php</token_default>
-<token_keyword>echo </token_keyword><token_default>43</token_default><token_keyword>;</token_keyword>
-EOL
-        );
-    }
-
-    public function testFloat()
-    {
-        $this->compare(
-            <<<EOL
-<?php
-echo 43.3;
-EOL
-            ,
-            <<<EOL
-<token_default><?php</token_default>
-<token_keyword>echo </token_keyword><token_default>43.3</token_default><token_keyword>;</token_keyword>
-EOL
-        );
-    }
-
-    public function testHex()
-    {
-        $this->compare(
-            <<<EOL
-<?php
-echo 0x43;
-EOL
-            ,
-            <<<EOL
-<token_default><?php</token_default>
-<token_keyword>echo </token_keyword><token_default>0x43</token_default><token_keyword>;</token_keyword>
-EOL
-        );
-    }
-
-    public function testBasicFunction()
-    {
-        $this->compare(
-            <<<EOL
-<?php
-function plus(\$a, \$b) {
-    return \$a + \$b;
-}
-EOL
-            ,
-            <<<EOL
-<token_default><?php</token_default>
-<token_keyword>function </token_keyword><token_default>plus</token_default><token_keyword>(</token_keyword><token_default>\$a</token_default><token_keyword>, </token_keyword><token_default>\$b</token_default><token_keyword>) {</token_keyword>
-<token_keyword>    return </token_keyword><token_default>\$a </token_default><token_keyword>+ </token_keyword><token_default>\$b</token_default><token_keyword>;</token_keyword>
-<token_keyword>}</token_keyword>
-EOL
-        );
-    }
-
-    public function testStringNormal()
-    {
-        $this->compare(
-            <<<EOL
-<?php
-echo 'Ahoj světe';
-EOL
-            ,
-            <<<EOL
-<token_default><?php</token_default>
-<token_keyword>echo </token_keyword><token_string>'Ahoj světe'</token_string><token_keyword>;</token_keyword>
-EOL
-        );
-    }
-
-    public function testStringDouble()
-    {
-        $this->compare(
-            <<<EOL
-<?php
-echo "Ahoj světe";
-EOL
-            ,
-            <<<EOL
-<token_default><?php</token_default>
-<token_keyword>echo </token_keyword><token_string>"Ahoj světe"</token_string><token_keyword>;</token_keyword>
-EOL
-        );
-    }
-
-    public function testInstanceof()
-    {
-        $this->compare(
-            <<<EOL
-<?php
-\$a instanceof stdClass;
-EOL
-            ,
-            <<<EOL
-<token_default><?php</token_default>
-<token_default>\$a </token_default><token_keyword>instanceof </token_keyword><token_default>stdClass</token_default><token_keyword>;</token_keyword>
-EOL
-        );
-    }
-
-    /*
-     * Constants
-     */
-    public function testConstant()
-    {
-        $constants = array(
-            '__FILE__',
-            '__LINE__',
-            '__CLASS__',
-            '__FUNCTION__',
-            '__METHOD__',
-            '__TRAIT__',
-            '__DIR__',
-            '__NAMESPACE__'
-        );
-
-        foreach ($constants as $constant) {
-            $this->compare(
-                <<<EOL
-<?php
-$constant;
-EOL
-                ,
-                <<<EOL
-<token_default><?php</token_default>
-<token_default>$constant</token_default><token_keyword>;</token_keyword>
-EOL
-            );
-        }
-    }
-
-    /*
-     * Comments
-     */
-    public function testComment()
-    {
-        $this->compare(
-            <<<EOL
-<?php
-/* Ahoj */
-EOL
-            ,
-            <<<EOL
-<token_default><?php</token_default>
-<token_comment>/* Ahoj */</token_comment>
-EOL
-        );
-    }
-
-    public function testDocComment()
-    {
-        $this->compare(
-            <<<EOL
-<?php
-/** Ahoj */
-EOL
-            ,
-            <<<EOL
-<token_default><?php</token_default>
-<token_comment>/** Ahoj */</token_comment>
-EOL
-        );
-    }
-
-    public function testInlineComment()
-    {
-        $this->compare(
-            <<<EOL
-<?php
-// Ahoj
-EOL
-            ,
-            <<<EOL
-<token_default><?php</token_default>
-<token_comment>// Ahoj</token_comment>
-EOL
-        );
-    }
-
-    public function testHashComment()
-    {
-        $this->compare(
-            <<<EOL
-<?php
-# Ahoj
-EOL
-            ,
-            <<<EOL
-<token_default><?php</token_default>
-<token_comment># Ahoj</token_comment>
-EOL
-        );
-    }
-
-    public function testEmpty()
-    {
-        $this->compare(
-            ''
-            ,
-            ''
-        );
-    }
-
-    public function testWhitespace()
-    {
-        $this->compare(
-            ' '
-            ,
-            '<token_html> </token_html>'
-        );
-    }
-}
diff --git a/vendor/nikic/php-parser/.gitignore b/vendor/nikic/php-parser/.gitignore
deleted file mode 100644
index 8c7db2a6ef..0000000000
--- a/vendor/nikic/php-parser/.gitignore
+++ /dev/null
@@ -1,4 +0,0 @@
-vendor/
-composer.lock
-grammar/kmyacc.exe
-grammar/y.output
diff --git a/vendor/nikic/php-parser/.travis.yml b/vendor/nikic/php-parser/.travis.yml
deleted file mode 100644
index d33d7a8b50..0000000000
--- a/vendor/nikic/php-parser/.travis.yml
+++ /dev/null
@@ -1,31 +0,0 @@
-language: php
-dist: xenial
-sudo: false
-
-cache:
-  directories:
-    - $HOME/.composer/cache
-
-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 --ignore-platform-reqs
-
-matrix:
-  allow_failures:
-    - php: nightly
-  fast_finish: true
-
-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.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
deleted file mode 100644
index c3045d91c1..0000000000
--- a/vendor/nikic/php-parser/CHANGELOG.md
+++ /dev/null
@@ -1,659 +0,0 @@
-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)
---------------------------
-
-### Fixed
-
-* Fixed possible undefined offset notice in formatting-preserving printer. (#513)
-
-### Added
-
-* Improved error recovery inside arrays.
-* Preserve trailing comment inside classes. **Note:** This change is possibly BC breaking if your
-  code validates that classes can only contain certain statement types. After this change, classes
-  can also contain Nop statements, while this was not previously possible. (#509)
-
-Version 4.0.2 (2018-06-03)
---------------------------
-
-### Added
-
-* Improved error recovery inside classes.
-* Support error recovery for `foreach` without `as`.
-* Support error recovery for parameters without variable (`function (Type ) {}`).
-* Support error recovery for functions without body (`function ($foo)`).
-
-Version 4.0.1 (2018-03-25)
---------------------------
-
-### Added
-
-* [PHP 7.3] Added support for trailing commas in function calls.
-* [PHP 7.3] Added support for by-reference array destructuring. 
-* Added checks to node traverser to prevent replacing a statement with an expression or vice versa.
-  This should prevent common mistakes in the implementation of node visitors.
-* Added the following methods to `BuilderFactory`, to simplify creation of expressions:
-  * `funcCall()`
-  * `methodCall()`
-  * `staticCall()`
-  * `new()`
-  * `constFetch()`
-  * `classConstFetch()`
-
-Version 4.0.0 (2018-02-28)
---------------------------
-
-* No significant code changes since the beta 1 release.
-
-Version 4.0.0-beta1 (2018-01-27)
---------------------------------
-
-### Fixed
-
-* In formatting-preserving pretty printer: Fixed indentation when inserting into lists. (#466)
-
-### Added
-
-* In formatting-preserving pretty printer: Improved formatting of elements inserted into multi-line
-  arrays.
-
-### Removed
-
-* The `Autoloader` class has been removed. It is now required to use the Composer autoloader.
-
-Version 4.0.0-alpha3 (2017-12-26)
----------------------------------
-
-### Fixed
-
-* In the formatting-preserving pretty printer:
-  * Fixed comment indentation.
-  * Fixed handling of inline HTML in the fallback case.
-  * Fixed insertion into list nodes that require creation of a code block.
-
-### Added
-
-* Added support for inserting at the start of list nodes in formatting-preserving pretty printer.
-
-Version 4.0.0-alpha2 (2017-11-10)
----------------------------------
-
-### Added
-
-* In the formatting-preserving pretty printer:
-  * Added support for changing modifiers.
-  * Added support for anonymous classes.
-  * Added support for removing from list nodes.
-  * Improved support for changing comments.
-* Added start token offsets to comments.
-
-Version 4.0.0-alpha1 (2017-10-18)
----------------------------------
-
-### Added
-
-* Added experimental support for format-preserving pretty-printing. In this mode formatting will be
-  preserved for parts of the code which have not been modified.
-* Added `replaceNodes` option to `NameResolver`, defaulting to true. If this option is disabled,
-  resolved names will be added as `resolvedName` attributes, instead of replacing the original
-  names.
-* Added `NodeFinder` class, which can be used to find nodes based on a callback or class name. This
-  is a utility to avoid custom node visitor implementations for simple search operations.
-* Added `ClassMethod::isMagic()` method.
-* Added `BuilderFactory` methods: `val()` method for creating an AST for a simple value, `concat()`
-  for creating concatenation trees, `args()` for preparing function arguments.
-* Added `NameContext` class, which encapsulates the `NameResolver` logic independently of the actual
-  AST traversal. This facilitates use in other context, such as class names in doc comments.
-  Additionally it provides an API for getting the shortest representation of a name.
-* Added `Node::setAttributes()` method.
-* Added `JsonDecoder`. This allows conversion JSON back into an AST.
-* Added `Name` methods `toLowerString()` and `isSpecialClassName()`.
-* Added `Identifier` and `VarLikeIdentifier` nodes, which are used in place of simple strings in
-  many places.
-* Added `getComments()`, `getStartLine()`, `getEndLine()`, `getStartTokenPos()`, `getEndTokenPos()`,
-  `getStartFilePos()` and `getEndFilePos()` methods to `Node`. These provide a more obvious access
-  point for the already existing attributes of the same name.
-* Added `ConstExprEvaluator` to evaluate constant expressions to PHP values.
-* Added `Expr\BinaryOp::getOperatorSigil()`, returning `+` for `Expr\BinaryOp\Plus`, etc.
-
-### Changed
-
-* Many subnodes that previously held simple strings now use `Identifier` (or `VarLikeIdentifier`)
-  nodes. Please see the UPGRADE-4.0 file for an exhaustive list of affected nodes and some notes on
-  possible impact.
-* Expression statements (`expr;`) are now represented using a `Stmt\Expression` node. Previously
-  these statements were directly represented as their constituent expression.
-* The `name` subnode of `Param` has been renamed to `var` and now contains a `Variable` rather than
-  a plain string.
-* The `name` subnode of `StaticVar` has been renamed to `var` and now contains a `Variable` rather
-  than a plain string.
-* The `var` subnode of `ClosureUse` now contains a `Variable` rather than a plain string.
-* The `var` subnode of `Catch` now contains a `Variable` rather than a plain string.
-* The `alias` subnode of `UseUse` is now `null` if no explicit alias is given. As such,
-  `use Foo\Bar` and `use Foo\Bar as Bar` are now represented differently. The `getAlias()` method
-  can be used to get the effective alias, even if it is not explicitly given.
-
-### Removed
-
-* Support for running on PHP 5 and HHVM has been removed. You can however still parse code of old
-  PHP versions (such as PHP 5.2), while running on PHP 7.
-* Removed `type` subnode on `Class`, `ClassMethod` and `Property` nodes. Use `flags` instead.
-* The `ClassConst::isStatic()` method has been removed. Constants cannot have a static modifier.
-* The `NodeTraverser` no longer accepts `false` as a return value from a `leaveNode()` method.
-  `NodeTraverser::REMOVE_NODE` should be returned instead.
-* The `Node::setLine()` method has been removed. If you really need to, you can use `setAttribute()`
-  instead.
-* The misspelled `Class_::VISIBILITY_MODIFER_MASK` constant has been dropped in favor of
-  `Class_::VISIBILITY_MODIFIER_MASK`.
-* The XML serializer has been removed. As such, the classes `Serializer\XML`, and
-  `Unserializer\XML`, as well as the interfaces `Serializer` and `Unserializer` no longer exist.
-* The `BuilderAbstract` class has been removed. It's functionality is moved into `BuilderHelpers`.
-  However, this is an internal class and should not be used directly.
-
-Version 3.1.5 (2018-02-28)
---------------------------
-
-### Fixed
-
-* Fixed duplicate comment assignment in switch statements. (#469)
-* Improve compatibility with PHP-Scoper. (#477)
-
-Version 3.1.4 (2018-01-25)
---------------------------
-
-### Fixed
-
-* Fixed pretty printing of `-(-$x)` and `+(+$x)`. (#459)
-
-Version 3.1.3 (2017-12-26)
---------------------------
-
-### Fixed
-
-* Improve compatibility with php-scoper, by supporting prefixed namespaces in
-  `NodeAbstract::getType()`.
-
-Version 3.1.2 (2017-11-04)
---------------------------
-
-### Fixed
-
-* Comments on empty blocks are now preserved on a `Stmt\Nop` node. (#382)
-
-### Added
-
-* Added `kind` attribute for `Stmt\Namespace_` node, which is one of `KIND_SEMICOLON` or
-  `KIND_BRACED`. (#417)
-* Added `setDocComment()` method to namespace builder. (#437)
-
-Version 3.1.1 (2017-09-02)
---------------------------
-
-### Fixed
-
-* Fixed syntax error on comment after brace-style namespace declaration. (#412)
-* Added support for TraitUse statements in trait builder. (#413)
-
-Version 3.1.0 (2017-07-28)
---------------------------
-
-### Added
-
-* [PHP 7.2] Added support for trailing comma in group use statements.
-* [PHP 7.2] Added support for `object` type. This means `object` types will now be represented as a
-  builtin type (a simple `"object"` string), rather than a class `Name`.
-
-### Fixed
-
-* Floating-point numbers are now printed correctly if the LC_NUMERIC locale uses a comma as decimal
-  separator.
-
-### Changed
-
-* `Name::$parts` is no longer deprecated.
-
-Version 3.0.6 (2017-06-28)
---------------------------
-
-### Fixed
-
-* Fixed the spelling of `Class_::VISIBILITY_MODIFIER_MASK`. The previous spelling of
-  `Class_::VISIBILITY_MODIFER_MASK` is preserved for backwards compatibility.
-* The pretty printing will now preserve comments inside array literals and function calls by
-  printing the array items / function arguments on separate lines. Array literals and functions that
-  do not contain comments are not affected.
-
-### Added
-
-* Added `Builder\Param::makeVariadic()`.
-
-### Deprecated
-
-* The `Node::setLine()` method has been deprecated.
-
-Version 3.0.5 (2017-03-05)
---------------------------
-
-### Fixed
-
-* Name resolution of `NullableType`s is now performed earlier, so that a fully resolved signature is
-  available when a function is entered. (#360)
-* `Error` nodes are now considered empty, while previously they extended until the token where the
-  error occurred. This made some nodes larger than expected. (#359)
-* Fixed notices being thrown during error recovery in some situations. (#362)
-
-Version 3.0.4 (2017-02-10)
---------------------------
-
-### Fixed
-
-* Fixed some extensibility issues in pretty printer (`pUseType()` is now public and `pPrec()` calls
-  into `p()`, instead of directly dispatching to the type-specific printing method).
-* Fixed notice in `bin/php-parse` script.
-
-### Added
-
-* Error recovery from missing semicolons is now supported in more cases.
-* Error recovery from trailing commas in positions where PHP does not support them is now supported.
-
-Version 3.0.3 (2017-02-03)
---------------------------
-
-### Fixed
-
-* In `"$foo[0]"` the `0` is now parsed as an `LNumber` rather than `String`. (#325)
-* Ensure integers and floats are always pretty printed preserving semantics, even if the particular
-  value can only be manually constructed.
-* Throw a `LogicException` when trying to pretty-print an `Error` node. Previously this resulted in
-  an undefined method exception or fatal error.
-
-### Added
-
-* [PHP 7.1] Added support for negative interpolated offsets: `"$foo[-1]"`
-* Added `preserveOriginalNames` option to `NameResolver`. If this option is enabled, an
-  `originalName` attribute, containing the unresolved name, will be added to each resolved name.
-* Added `php-parse --with-positions` option, which dumps nodes with position information.
-
-### Deprecated
-
-* The XML serializer has been deprecated. In particular, the classes `Serializer\XML`,
-  `Unserializer\XML`, as well as the interfaces `Serializer` and `Unserializer` are deprecated.
-
-Version 3.0.2 (2016-12-06)
---------------------------
-
-### Fixed
-
-* Fixed name resolution of nullable types. (#324)
-* Fixed pretty-printing of nullable types.
-
-Version 3.0.1 (2016-12-01)
---------------------------
-
-### Fixed
-
-* Fixed handling of nested `list()`s: If the nested list was unkeyed, it was directly included in
-  the list items. If it was keyed, it was wrapped in `ArrayItem`. Now nested `List_` nodes are
-  always wrapped in `ArrayItem`s. (#321)
-
-Version 3.0.0 (2016-11-30)
---------------------------
-
-### Added
-
-* Added support for dumping node positions in the NodeDumper through the `dumpPositions` option.
-* Added error recovery support for `$`, `new`, `Foo::`.
-
-Version 3.0.0-beta2 (2016-10-29)
---------------------------------
-
-This release primarily improves our support for error recovery.
-
-### Added
-
-* Added `Node::setDocComment()` method.
-* Added `Error::getMessageWithColumnInfo()` method.
-* Added support for recovery from lexer errors.
-* Added support for recovering from "special" errors (i.e. non-syntax parse errors).
-* Added precise location information for lexer errors.
-* Added `ErrorHandler` interface, and `ErrorHandler\Throwing` and `ErrorHandler\Collecting` as
-  specific implementations. These provide a general mechanism for handling error recovery.
-* Added optional `ErrorHandler` argument to `Parser::parse()`, `Lexer::startLexing()` and
-  `NameResolver::__construct()`.
-* The `NameResolver` now adds a `namespacedName` attribute on name nodes that cannot be statically
-  resolved (unqualified unaliased function or constant names in namespaces).
-
-### Fixed
-
-* Fixed attribute assignment for `GroupUse` prefix and variables in interpolated strings.
-
-### Changed
-
-* The constants on `NameTraverserInterface` have been moved into the `NameTraverser` class.
-* Due to the error handling changes, the `Parser` interface and `Lexer` API have changed.
-* The emulative lexer now directly postprocesses tokens, instead of using `~__EMU__~` sequences.
-  This changes the protected API of the lexer.
-* The `Name::slice()` method now returns `null` for empty slices, previously `new Name([])` was
-  used. `Name::concat()` now also supports concatenation with `null`.
-
-### Removed
-
-* Removed `Name::append()` and `Name::prepend()`. These mutable methods have been superseded by
-  the immutable `Name::concat()`.
-* Removed `Error::getRawLine()` and `Error::setRawLine()`. These methods have been superseded by
-  `Error::getStartLine()` and `Error::setStartLine()`.
-* Removed support for node cloning in the `NodeTraverser`.
-* Removed `$separator` argument from `Name::toString()`.
-* Removed `throw_on_error` parser option and `Parser::getErrors()` method. Use the `ErrorHandler`
-  mechanism instead.
-
-Version 3.0.0-beta1 (2016-09-16)
---------------------------------
-
-### Added
-
-* [7.1] Function/method and parameter builders now support PHP 7.1 type hints (void, iterable and
-  nullable types).
-* Nodes and Comments now implement `JsonSerializable`. The node kind is stored in a `nodeType`
-  property.
-* The `InlineHTML` node now has an `hasLeadingNewline` attribute, that specifies whether the
-  preceding closing tag contained a newline. The pretty printer honors this attribute.
-* Partial parsing of `$obj->` (with missing property name) is now supported in error recovery mode.
-* The error recovery mode is now exposed in the `php-parse` script through the `--with-recovery`
-  or `-r` flags.
-
-The following changes are also part of PHP-Parser 2.1.1:
-
-* The PHP 7 parser will now generate a parse error for `$var =& new Obj` assignments.
-* Comments on free-standing code blocks will now be retained as comments on the first statement in
-  the code block.
-
-Version 3.0.0-alpha1 (2016-07-25)
----------------------------------
-
-### Added
-
-* [7.1] Added support for `void` and `iterable` types. These will now be represented as strings
-  (instead of `Name` instances) similar to other builtin types.
-* [7.1] Added support for class constant visibility. The `ClassConst` node now has a `flags` subnode
-  holding the visibility modifier, as well as `isPublic()`, `isProtected()` and `isPrivate()`
-  methods. The constructor changed to accept the additional subnode.
-* [7.1] Added support for nullable types. These are represented using a new `NullableType` node
-  with a single `type` subnode.
-* [7.1] Added support for short array destructuring syntax. This means that `Array` nodes may now
-  appear as the left-hand-side of assignments and foreach value targets. Additionally the array
-  items may now contain `null` values if elements are skipped.
-* [7.1] Added support for keys in list() destructuring. The `List` subnode `vars` has been renamed
-  to `items` and now contains `ArrayItem`s instead of plain variables.
-* [7.1] Added support for multi-catch. The `Catch` subnode `type` has been renamed to `types` and
-  is now an array of `Name`s.
-* `Name::slice()` now supports lengths and negative offsets. This brings it in line with
-  `array_slice()` functionality.
-
-### Changed
-
-Due to PHP 7.1 support additions described above, the node structure changed as follows:
-
-* `void` and `iterable` types are now stored as strings if the PHP 7 parser is used.
-* The `ClassConst` constructor changed to accept an additional `flags` subnode.
-* The `Array` subnode `items` may now contain `null` elements (destructuring).
-* The `List` subnode `vars` has been renamed to `items` and now contains `ArrayItem`s instead of
-  plain variables.
-* The `Catch` subnode `type` has been renamed to `types` and is now an array of `Name`s.
-
-Additionally the following changes were made:
-
-* The `type` subnode on `Class`, `ClassMethod` and `Property` has been renamed to `flags`. The
-  `type` subnode has retained for backwards compatibility and is populated to the same value as
-  `flags`. However, writes to `type` will not update `flags`.
-* The `TryCatch` subnode `finallyStmts` has been replaced with a `finally` subnode that holds an
-  explicit `Finally` node. This allows for more accurate attribute assignment.
-* The `Trait` constructor now has the same form as the `Class` and `Interface` constructors: It
-  takes an array of subnodes. Unlike classes/interfaces, traits can only have a `stmts` subnode.
-* The `NodeDumper` now prints class/method/property/constant modifiers, as well as the include and
-  use type in a textual representation, instead of only showing the number.
-* All methods on `PrettyPrinter\Standard` are now protected. Previously most of them were public.
-
-### Removed
-
-* Removed support for running on PHP 5.4. It is however still possible to parse PHP 5.2-5.4 code
-  while running on a newer version.
-* The deprecated `Comment::setLine()` and `Comment::setText()` methods have been removed.
-* The deprecated `Name::set()`, `Name::setFirst()` and `Name::setLast()` methods have been removed.
-
-Version 2.1.1 (2016-09-16)
---------------------------
-
-### Changed
-
-* The pretty printer will now escape all control characters in the range `\x00-\x1F` inside double
-  quoted strings. If no special escape sequence is available, an octal escape will be used.
-* The quality of the error recovery has been improved. In particular unterminated expressions should
-  be handled more gracefully.
-* The PHP 7 parser will now generate a parse error for `$var =& new Obj` assignments.
-* Comments on free-standing code blocks will no be retained as comments on the first statement in
-  the code block.
-
-Version 2.1.0 (2016-04-19)
---------------------------
-
-### Fixed
-
-* Properly support `B""` strings (with uppercase `B`) in a number of places.
-* Fixed reformatting of indented parts in a certain non-standard comment style.
-
-### Added
-
-* Added `dumpComments` option to node dumper, to enable dumping of comments associated with nodes.
-* Added `Stmt\Nop` node, that is used to collect comments located at the end of a block or at the
-  end of a file (without a following node with which they could otherwise be associated).
-* Added `kind` attribute to `Expr\Exit` to distinguish between `exit` and `die`.
-* Added `kind` attribute to `Scalar\LNumber` to distinguish between decimal, binary, octal and
-  hexadecimal numbers.
-* Added `kind` attribute to `Expr\Array` to distinguish between `array()` and `[]`.
-* Added `kind` attribute to `Scalar\String` and `Scalar\Encapsed` to distinguish between
-  single-quoted, double-quoted, heredoc and nowdoc string.
-* Added `docLabel` attribute to `Scalar\String` and `Scalar\Encapsed`, if it is a heredoc or
-  nowdoc string.
-* Added start file offset information to `Comment` nodes.
-* Added `setReturnType()` method to function and method builders.
-* Added `-h` and `--help` options to `php-parse` script.
-
-### Changed
-
-* Invalid octal literals now throw a parse error in PHP 7 mode.
-* The pretty printer takes all the new attributes mentioned in the previous section into account.
-* The protected `AbstractPrettyPrinter::pComments()` method no longer returns a trailing newline.
-* The bundled autoloader supports library files being stored in a different directory than
-  `PhpParser` for easier downstream distribution.
-
-### Deprecated
-
-* The `Comment::setLine()` and `Comment::setText()` methods have been deprecated. Construct new
-  objects instead.
-
-### Removed
-
-* The internal (but public) method `Scalar\LNumber::parse()` has been removed. A non-internal
-  `LNumber::fromString()` method has been added instead.
-
-Version 2.0.1 (2016-02-28)
---------------------------
-
-### Fixed
-
-* `declare() {}` and `declare();` are not semantically equivalent and will now result in different
-  ASTs. The format case will have an empty `stmts` array, while the latter will set `stmts` to
-  `null`.
-* Magic constants are now supported as semi-reserved keywords.
-* A shebang line like `#!/usr/bin/env php` is now allowed at the start of a namespaced file.
-  Previously this generated an exception.
-* The `prettyPrintFile()` method will not strip a trailing `?>` from the raw data that follows a
-  `__halt_compiler()` statement.
-* The `prettyPrintFile()` method will not strip an opening `<?php` if the file starts with a
-  comment followed by InlineHTML.
-
-Version 2.0.0 (2015-12-04)
---------------------------
-
-### Changed
-
-* String parts of encapsed strings are now represented using `Scalar\EncapsStringPart` nodes.
-  Previously raw strings were used. This affects the `parts` child of `Scalar\Encaps` and
-  `Expr\ShellExec`. The change has been done to allow assignment of attributes to encapsed string
-  parts.
-
-Version 2.0.0-beta1 (2015-10-21)
---------------------------------
-
-### Fixed
-
-* Fixed issue with too many newlines being stripped at the end of heredoc/nowdoc strings in some
-  cases. (#227)
-
-### Changed
-
-* Update group use support to be in line with recent PHP 7.0 builds.
-* Renamed `php-parse.php` to `php-parse` and registered it as a composer bin.
-* Use composer PSR-4 autoloader instead of custom autoloader.
-* Specify phpunit as a dev dependency.
-
-### Added
-
-* Added `shortArraySyntax` option to pretty printer, to print all arrays using short syntax.
-
-Version 2.0.0-alpha1 (2015-07-14)
----------------------------------
-
-A more detailed description of backwards incompatible changes can be found in the
-[upgrading guide](UPGRADE-2.0.md).
-
-### Removed
-
-* Removed support for running on PHP 5.3. It is however still possible to parse PHP 5.2 and PHP 5.3
-  code while running on a newer version.
-* Removed legacy class name aliases. This includes the old non-namespaced class names and the old
-  names for classes that were renamed for PHP 7 compatibility.
-* Removed support for legacy node format. All nodes must have a `getSubNodeNames()` method now.
-
-### Added
-
-* Added support for remaining PHP 7 features that were not present in 1.x:
-  * Group use declarations. These are represented using `Stmt\GroupUse` nodes. Furthermore a `type`
-    attribute was added to `Stmt\UseUse` to handle mixed group use declarations.
-  * Uniform variable syntax.
-  * Generalized yield operator.
-  * Scalar type declarations. These are presented using `'bool'`, `'int'`, `'float'` and `'string'`
-    as the type. The PHP 5 parser also accepts these, however they'll be `Name` instances there.
-  * Unicode escape sequences.
-* Added `PhpParser\ParserFactory` class, which should be used to create parser instances.
-* Added `Name::concat()` which concatenates two names.
-* Added `Name->slice()` which takes a subslice of a name.
-
-### Changed
-
-* `PhpParser\Parser` is now an interface, implemented by `Parser\Php5`, `Parser\Php7` and
-  `Parser\Multiple`. The `Multiple` parser will try multiple parsers, until one succeeds.
-* Token constants are now defined on `PhpParser\Parser\Tokens` rather than `PhpParser\Parser`.
-* The `Name->set()`, `Name->append()`, `Name->prepend()` and `Name->setFirst()` methods are
-  deprecated in favor of `Name::concat()` and `Name->slice()`.
-* The `NodeTraverser` no longer clones nodes by default. The old behavior can be restored by
-  passing `true` to the constructor.
-* The constructor for `Scalar` nodes no longer has a default value. E.g. `new LNumber()` should now
-  be written as `new LNumber(0)`.
-
----
-
-**This changelog only includes changes from the 2.0 series. For older changes see the
-[1.x series changelog](https://github.com/nikic/PHP-Parser/blob/1.x/CHANGELOG.md) and the
-[0.9 series changelog](https://github.com/nikic/PHP-Parser/blob/0.9/CHANGELOG.md).**
diff --git a/vendor/nikic/php-parser/LICENSE b/vendor/nikic/php-parser/LICENSE
index 920cc5b1f4..2e56718358 100644
--- a/vendor/nikic/php-parser/LICENSE
+++ b/vendor/nikic/php-parser/LICENSE
@@ -1,31 +1,29 @@
-Copyright (c) 2011-2018 by Nikita Popov.
+BSD 3-Clause License
 
-Some rights reserved.
+Copyright (c) 2011, Nikita Popov
+All rights reserved.
 
 Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions are
-met:
+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.
+1. 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.
+2. 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.
 
-    * The names of the contributors may not be used to endorse or
-      promote products derived from this software without specific
-      prior written permission.
+3. Neither the name of the copyright holder nor the names of its
+   contributors may be used to endorse or promote products derived from
+   this software without specific prior written permission.
 
-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
-OWNER 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
+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/nikic/php-parser/README.md b/vendor/nikic/php-parser/README.md
index e62748eb1c..f1dd929d7f 100644
--- a/vendor/nikic/php-parser/README.md
+++ b/vendor/nikic/php-parser/README.md
@@ -3,10 +3,10 @@ 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.3 parser written in PHP. Its purpose is to simplify static code analysis and
+This is a PHP 5.2 to PHP 7.4 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.3).
+[**Documentation for version 4.x**][doc_master] (stable; for running on PHP >= 7.0; for parsing PHP 5.2 to PHP 7.4).
 
 [Documentation for version 3.x][doc_3_x] (unsupported; for running on PHP >= 5.5; for parsing PHP 5.2 to PHP 7.2).
 
diff --git a/vendor/nikic/php-parser/UPGRADE-1.0.md b/vendor/nikic/php-parser/UPGRADE-1.0.md
deleted file mode 100644
index 6a9ee2622b..0000000000
--- a/vendor/nikic/php-parser/UPGRADE-1.0.md
+++ /dev/null
@@ -1,121 +0,0 @@
-Upgrading from PHP-Parser 0.9 to 1.0
-====================================
-
-### PHP version requirements
-
-PHP-Parser now requires PHP 5.3 or newer to run. It is however still possible to *parse* PHP 5.2 source code, while
-running on a newer version.
-
-### Move to namespaced names
-
-The library has been moved to use namespaces with the `PhpParser` vendor prefix. However, the old names using
-underscores are still available as aliases, as such most code should continue running on the new version without
-further changes.
-
-Old (still works, but discouraged):
-
-```php
-$parser = new \PHPParser_Parser(new \PHPParser_Lexer_Emulative);
-$prettyPrinter = new \PHPParser_PrettyPrinter_Default;
-```
-
-New:
-
-```php
-$parser = new \PhpParser\Parser(new PhpParser\Lexer\Emulative);
-$prettyPrinter = new \PhpParser\PrettyPrinter\Standard;
-```
-
-Note that the `PHPParser` prefix was changed to `PhpParser`. While PHP class names are technically case-insensitive,
-the autoloader will not be able to load `PHPParser\Parser` or other case variants.
-
-Due to conflicts with reserved keywords, some class names now end with an underscore, e.g. `PHPParser_Node_Stmt_Class`
-is now `PhpParser\Node\Stmt\Class_`. (But as usual, the old name is still available.)
-
-### Changes to `Node::getType()`
-
-The `Node::getType()` method continues to return names using underscores instead of namespace separators and also does
-not contain the trailing underscore that may be present in the class name. As such its output will not change in many
-cases.
-
-However, some node classes have been moved to a different namespace or renamed, which will result in a different
-`Node::getType()` output:
-
-```
-Expr_AssignBitwiseAnd => Expr_AssignOp_BitwiseAnd
-Expr_AssignBitwiseOr  => Expr_AssignOp_BitwiseOr
-Expr_AssignBitwiseXor => Expr_AssignOp_BitwiseXor
-Expr_AssignConcat     => Expr_AssignOp_Concat
-Expr_AssignDiv        => Expr_AssignOp_Div
-Expr_AssignMinus      => Expr_AssignOp_Minus
-Expr_AssignMod        => Expr_AssignOp_Mod
-Expr_AssignMul        => Expr_AssignOp_Mul
-Expr_AssignPlus       => Expr_AssignOp_Plus
-Expr_AssignShiftLeft  => Expr_AssignOp_ShiftLeft
-Expr_AssignShiftRight => Expr_AssignOp_ShiftRight
-
-Expr_BitwiseAnd       => Expr_BinaryOp_BitwiseAnd
-Expr_BitwiseOr        => Expr_BinaryOp_BitwiseOr
-Expr_BitwiseXor       => Expr_BinaryOp_BitwiseXor
-Expr_BooleanAnd       => Expr_BinaryOp_BooleanAnd
-Expr_BooleanOr        => Expr_BinaryOp_BooleanOr
-Expr_Concat           => Expr_BinaryOp_Concat
-Expr_Div              => Expr_BinaryOp_Div
-Expr_Equal            => Expr_BinaryOp_Equal
-Expr_Greater          => Expr_BinaryOp_Greater
-Expr_GreaterOrEqual   => Expr_BinaryOp_GreaterOrEqual
-Expr_Identical        => Expr_BinaryOp_Identical
-Expr_LogicalAnd       => Expr_BinaryOp_LogicalAnd
-Expr_LogicalOr        => Expr_BinaryOp_LogicalOr
-Expr_LogicalXor       => Expr_BinaryOp_LogicalXor
-Expr_Minus            => Expr_BinaryOp_Minus
-Expr_Mod              => Expr_BinaryOp_Mod
-Expr_Mul              => Expr_BinaryOp_Mul
-Expr_NotEqual         => Expr_BinaryOp_NotEqual
-Expr_NotIdentical     => Expr_BinaryOp_NotIdentical
-Expr_Plus             => Expr_BinaryOp_Plus
-Expr_ShiftLeft        => Expr_BinaryOp_ShiftLeft
-Expr_ShiftRight       => Expr_BinaryOp_ShiftRight
-Expr_Smaller          => Expr_BinaryOp_Smaller
-Expr_SmallerOrEqual   => Expr_BinaryOp_SmallerOrEqual
-
-Scalar_ClassConst     => Scalar_MagicConst_Class
-Scalar_DirConst       => Scalar_MagicConst_Dir
-Scalar_FileConst      => Scalar_MagicConst_File
-Scalar_FuncConst      => Scalar_MagicConst_Function
-Scalar_LineConst      => Scalar_MagicConst_Line
-Scalar_MethodConst    => Scalar_MagicConst_Method
-Scalar_NSConst        => Scalar_MagicConst_Namespace
-Scalar_TraitConst     => Scalar_MagicConst_Trait
-```
-
-These changes may affect custom pretty printers and code comparing the return value of `Node::getType()` to specific
-strings.
-
-### Miscellaneous
-
-  * The classes `Template` and `TemplateLoader` have been removed. You should use some other [code generation][code_gen]
-    project built on top of PHP-Parser instead.
-
-  * The `PrettyPrinterAbstract::pStmts()` method now emits a leading newline if the statement list is not empty.
-    Custom pretty printers should remove the explicit newline before `pStmts()` calls.
-
-    Old:
-
-    ```php
-    public function pStmt_Trait(PHPParser_Node_Stmt_Trait $node) {
-        return 'trait ' . $node->name
-             . "\n" . '{' . "\n" . $this->pStmts($node->stmts) . "\n" . '}';
-    }
-    ```
-
-    New:
-
-    ```php
-    public function pStmt_Trait(Stmt\Trait_ $node) {
-        return 'trait ' . $node->name
-             . "\n" . '{' . $this->pStmts($node->stmts) . "\n" . '}';
-    }
-    ```
-
-  [code_gen]: https://github.com/nikic/PHP-Parser/wiki/Projects-using-the-PHP-Parser#code-generation
\ No newline at end of file
diff --git a/vendor/nikic/php-parser/UPGRADE-2.0.md b/vendor/nikic/php-parser/UPGRADE-2.0.md
deleted file mode 100644
index 1c61de54fb..0000000000
--- a/vendor/nikic/php-parser/UPGRADE-2.0.md
+++ /dev/null
@@ -1,74 +0,0 @@
-Upgrading from PHP-Parser 1.x to 2.0
-====================================
-
-### PHP version requirements
-
-PHP-Parser now requires PHP 5.4 or newer to run. It is however still possible to *parse* PHP 5.2 and
-PHP 5.3 source code, while running on a newer version.
-
-### Creating a parser instance
-
-Parser instances should now be created through the `ParserFactory`. Old direct instantiation code
-will not work, because the parser class was renamed.
-
-Old:
-
-```php
-use PhpParser\Parser, PhpParser\Lexer;
-$parser = new Parser(new Lexer\Emulative);
-```
-
-New:
-
-```php
-use PhpParser\ParserFactory;
-$parser = (new ParserFactory)->create(ParserFactory::PREFER_PHP7);
-```
-
-The first argument to `ParserFactory` determines how different PHP versions are handled. The
-possible values are:
-
- * `ParserFactory::PREFER_PHP7`: Try to parse code as PHP 7. If this fails, try to parse it as PHP 5.
- * `ParserFactory::PREFER_PHP5`: Try to parse code as PHP 5. If this fails, try to parse it as PHP 7.
- * `ParserFactory::ONLY_PHP7`: Parse code as PHP 7.
- * `ParserFactory::ONLY_PHP5`: Parse code as PHP 5.
-
-For most practical purposes the difference between `PREFER_PHP7` and `PREFER_PHP5` is mainly whether
-a scalar type hint like `string` will be stored as `'string'` (PHP 7) or as `new Name('string')`
-(PHP 5).
-
-To use a custom lexer, pass it as the second argument to the `create()` method:
-
-```php
-use PhpParser\ParserFactory;
-$lexer = new MyLexer;
-$parser = (new ParserFactory)->create(ParserFactory::PREFER_PHP7, $lexer);
-```
-
-### Rename of the `PhpParser\Parser` class
-
-`PhpParser\Parser` is now an interface, which is implemented by `Parser\Php5`, `Parser\Php7` and
-`Parser\Multiple`. Parser tokens are now defined in `Parser\Tokens`. If you use the `ParserFactory`
-described above to create your parser instance, these changes should have no further impact on you.
-
-### Removal of legacy aliases
-
-All legacy aliases for classes have been removed. This includes the old non-namespaced `PHPParser_`
-classes, as well as the classes that had to be renamed for PHP 7 support.
-
-### Deprecations
-
-The `set()`, `setFirst()`, `append()` and `prepend()` methods of the `Node\Name` class have been
-deprecated. Instead `Name::concat()` and `Name->slice()` should be used.
-
-### Miscellaneous
-
-* The `NodeTraverser` no longer clones nodes by default. If you want to restore the old behavior,
-  pass `true` to the constructor.
-* The legacy node format has been removed. If you use custom nodes, they are now expected to
-  implement a `getSubNodeNames()` method.
-* The default value for `Scalar` node constructors was removed. This means that something like
-  `new LNumber()` should be replaced by `new LNumber(0)`.
-* String parts of encapsed strings are now represented using `Scalar\EncapsStringPart` nodes, while
-  previously raw strings were used. This affects the `parts` child of `Scalar\Encaps` and
-  `Expr\ShellExec`.
\ No newline at end of file
diff --git a/vendor/nikic/php-parser/UPGRADE-3.0.md b/vendor/nikic/php-parser/UPGRADE-3.0.md
deleted file mode 100644
index 9a2895f426..0000000000
--- a/vendor/nikic/php-parser/UPGRADE-3.0.md
+++ /dev/null
@@ -1,160 +0,0 @@
-Upgrading from PHP-Parser 2.x to 3.0
-====================================
-
-The backwards-incompatible changes in this release may be summarized as follows:
-
- * The specific details of the node representation have changed in some cases, primarily to
-   accommodate new PHP 7.1 features.
- * There have been significant changes to the error recovery implementation. This may affect you,
-   if you used the error recovery mode or have a custom lexer implementation.
- * A number of deprecated methods were removed.
-
-### PHP version requirements
-
-PHP-Parser now requires PHP 5.5 or newer to run. It is however still possible to *parse* PHP 5.2,
-5.3 and 5.4 source code, while running on a newer version.
-
-### Changes to the node structure
-
-The following changes are likely to require code changes if the respective nodes are used:
-
- * The `List` subnode `vars` has been renamed to `items` and now contains `ArrayItem`s instead of
-   plain variables.
- * The `Catch` subnode `type` has been renamed to `types` and is now an array of `Name`s.
- * The `TryCatch` subnode `finallyStmts` has been replaced with a `finally` subnode that holds an
-   explicit `Finally` node.
- * The `type` subnode on `Class`, `ClassMethod` and `Property` has been renamed to `flags`. The
-   `type` subnode has retained for backwards compatibility and is populated to the same value as
-   `flags`. However, writes to `type` will not update `flags` and use of `type` is discouraged.
-
-The following changes are unlikely to require code changes:
-
- * The `ClassConst` constructor changed to accept an additional `flags` subnode.
- * The `Trait` constructor now has the same form as the `Class` and `Interface` constructors: It
-   takes an array of subnodes. Unlike classes/interfaces, traits can only have a `stmts` subnode.
- * The `Array` subnode `items` may now contain `null` elements (due to destructuring).
- * `void` and `iterable` types are now stored as strings if the PHP 7 parser is used. Previously
-   these would have been represented as `Name` instances.
-
-### Changes to error recovery mode
-
-Previously, error recovery mode was enabled by setting the `throwOnError` option to `false` when
-creating the parser, while collected errors were retrieved using the `getErrors()` method:
-
-```php
-$lexer = ...;
-$parser = (new ParserFactory)->create(ParserFactor::ONLY_PHP7, $lexer, [
-    'throwOnError' => true,
-]);
-
-$stmts = $parser->parse($code);
-$errors = $parser->getErrors();
-if ($errors) {
-    handleErrors($errors);
-}
-processAst($stmts);
-```
-
-Both the `throwOnError` option and the `getErrors()` method have been removed in PHP-Parser 3.0.
-Instead an instance of `ErrorHandler\Collecting` should be passed to the `parse()` method:
-
-```php
-$lexer = ...;
-$parser = (new ParserFactory)->create(ParserFactor::ONLY_PHP7, $lexer);
-
-$errorHandler = new ErrorHandler\Collecting;
-$stmts = $parser->parse($code, $errorHandler);
-if ($errorHandler->hasErrors()) {
-    handleErrors($errorHandler->getErrors());
-}
-processAst($stmts);
-```
-
-#### Multiple parser fallback in error recovery mode
-
-As a result of this change, if a `Multiple` parser is used (e.g. through the `ParserFactory` using
-`PREFER_PHP7` or `PREFER_PHP5`), it will now return the result of the first *non-throwing* parse. As
-parsing never throws in error recovery mode, the result from the first parser will always be
-returned.
-
-The PHP 7 parser is a superset of the PHP 5 parser, with the exceptions that `=& new` and
-`global $$foo->bar` are not supported (other differences are in representation only). The PHP 7
-parser will be able to recover from the error in both cases. For this reason, this change will
-likely pass unnoticed if you do not specifically test for this syntax.
-
-It is possible to restore the precise previous behavior with the following code:
-
-```php
-$lexer = ...;
-$parser7 = new Parser\Php7($lexer);
-$parser5 = new Parser\Php5($lexer);
-
-$errors7 = new ErrorHandler\Collecting();
-$stmts7 = $parser7->parse($code, $errors7);
-if ($errors7->hasErrors()) {
-    $errors5 = new ErrorHandler\Collecting();
-    $stmts5 = $parser5->parse($code, $errors5);
-    if (!$errors5->hasErrors()) {
-        // If PHP 7 parse has errors but PHP 5 parse has no errors, use PHP 5 result
-        return [$stmts5, $errors5];
-    }
-}
-// If PHP 7 succeeds or both fail use PHP 7 result
-return [$stmts7, $errors7];
-```
-
-#### Error handling in the lexer
-
-In order to support recovery from lexer errors, the signature of the `startLexing()` method changed
-to optionally accept an `ErrorHandler`:
-
-```php
-// OLD
-public function startLexing($code);
-// NEW
-public function startLexing($code, ErrorHandler $errorHandler = null);
-```
-
-If you use a custom lexer with overridden `startLexing()` method, it needs to be changed to accept
-the extra parameter. The value should be passed on to the parent method.
-
-#### Error checks in node constructors
-
-The constructors of certain nodes used to contain additional checks for semantic errors, such as
-creating a try block without either catch or finally. These checks have been moved from the node
-constructors into the parser. This allows recovery from such errors, as well as representing the
-resulting (invalid) AST.
-
-This means that certain error conditions are no longer checked for manually constructed nodes.
-
-### Removed methods, arguments, options
-
-The following methods, arguments or options have been removed:
-
- * `Comment::setLine()`, `Comment::setText()`: Create new `Comment` instances instead.
- * `Name::set()`, `Name::setFirst()`, `Name::setLast()`, `Name::append()`, `Name::prepend()`:
-    Use `Name::concat()` in combination with `Name::slice()` instead.
- * `Error::getRawLine()`, `Error::setRawLine()`. Use `Error::getStartLine()` and
-   `Error::setStartLine()` instead.
- * `Parser::getErrors()`. Use `ErrorHandler\Collecting` instead.
- * `$separator` argument of `Name::toString()`. Use `strtr()` instead, if you really need it.
- * `$cloneNodes` argument of `NodeTraverser::__construct()`. Explicitly clone nodes in the visitor
-   instead.
- * `throwOnError` parser option. Use `ErrorHandler\Collecting` instead.
-
-### Miscellaneous
-
- * The `NameResolver` will now resolve unqualified function and constant names in the global
-   namespace into fully qualified names. For example `foo()` in the global namespace resolves to
-   `\foo()`. For names where no static resolution is possible, a `namespacedName` attribute is
-   added now, containing the namespaced variant of the name.
- * All methods on `PrettyPrinter\Standard` are now protected. Previously most of them were public.
-   The pretty printer should only be invoked using the `prettyPrint()`, `prettyPrintFile()` and
-   `prettyPrintExpr()` methods.
- * The node dumper now prints numeric values that act as enums/flags in a string representation.
-   If node dumper results are used in tests, updates may be needed to account for this.
- * The constants on `NameTraverserInterface` have been moved into the `NameTraverser` class.
- * The emulative lexer now directly postprocesses tokens, instead of using `~__EMU__~` sequences.
-   This changes the protected API of the emulative lexer.
- * The `Name::slice()` method now returns `null` for empty slices, previously `new Name([])` was
-   used. `Name::concat()` now also supports concatenation with `null`.
diff --git a/vendor/nikic/php-parser/UPGRADE-4.0.md b/vendor/nikic/php-parser/UPGRADE-4.0.md
deleted file mode 100644
index 628bdbdc58..0000000000
--- a/vendor/nikic/php-parser/UPGRADE-4.0.md
+++ /dev/null
@@ -1,77 +0,0 @@
-Upgrading from PHP-Parser 3.x to 4.0
-====================================
-
-### PHP version requirements
-
-PHP-Parser now requires PHP 7.0 or newer to run. It is however still possible to *parse* PHP 5.2-5.6
-source code, while running on a newer version.
-
-HHVM is no longer actively supported.
-
-### Changes to the node structure
-
-* Many subnodes that previously held simple strings now store `Identifier` nodes instead (or
-  `VarLikeIdentifier` nodes if they have form `$ident`). The constructors of the affected nodes will
-  automatically convert strings to `Identifier`s and `Identifier`s implement `__toString()`. As such
-  some code continues to work without changes, but anything using `is_string()`, type-strict
-  comparisons or strict-mode may require adjustment. The following is an exhaustive list of all
-  affected subnodes:
-
-   * `Const_::$name`
-   * `NullableType::$type` (for simple types)
-   * `Param::$type` (for simple types)
-   * `Expr\ClassConstFetch::$name`
-   * `Expr\Closure::$returnType` (for simple types)
-   * `Expr\MethodCall::$name`
-   * `Expr\PropertyFetch::$name`
-   * `Expr\StaticCall::$name`
-   * `Expr\StaticPropertyFetch::$name` (uses `VarLikeIdentifier`)
-   * `Stmt\Class_::$name`
-   * `Stmt\ClassMethod::$name`
-   * `Stmt\ClassMethod::$returnType` (for simple types)
-   * `Stmt\Function_::$name`
-   * `Stmt\Function_::$returnType` (for simple types)
-   * `Stmt\Goto_::$name`
-   * `Stmt\Interface_::$name`
-   * `Stmt\Label::$name`
-   * `Stmt\PropertyProperty::$name` (uses `VarLikeIdentifier`)
-   * `Stmt\TraitUseAdaptation\Alias::$method`
-   * `Stmt\TraitUseAdaptation\Alias::$newName`
-   * `Stmt\TraitUseAdaptation\Precedence::$method`
-   * `Stmt\Trait_::$name`
-   * `Stmt\UseUse::$alias`
-
-* Expression statements (`expr;`) are now represented using a `Stmt\Expression` node. Previously
-  these statements were directly represented as their constituent expression.
-* The `name` subnode of `Param` has been renamed to `var` and now contains a `Variable` rather than
-  a plain string.
-* The `name` subnode of `StaticVar` has been renamed to `var` and now contains a `Variable` rather
-  than a plain string.
-* The `var` subnode of `ClosureUse` now contains a `Variable` rather than a plain string.
-* The `var` subnode of `Catch_` now contains a `Variable` rather than a plain string.
-* The `alias` subnode of `UseUse` is now `null` if no explicit alias is given. As such,
-  `use Foo\Bar` and `use Foo\Bar as Bar` are now represented differently. The `getAlias()` method
-  can be used to get the effective alias, even if it is not explicitly given.
-
-### Miscellaneous
-
-* The indentation handling in the pretty printer has been changed (this is only relevant if you
-  extend the pretty printer). Previously indentation was automatic, and parts were excluded using
-  `pNoindent()`. Now no-indent is the default and newlines that require indentation should use
-  `$this->nl`.
-
-### Removed functionality
-
-* Removed `type` subnode on `Class_`, `ClassMethod` and `Property` nodes. Use `flags` instead.
-* The `ClassConst::isStatic()` method has been removed. Constants cannot have a static modifier.
-* The `NodeTraverser` no longer accepts `false` as a return value from a `leaveNode()` method.
-  `NodeTraverser::REMOVE_NODE` should be returned instead.
-* The `Node::setLine()` method has been removed. If you really need to, you can use `setAttribute()`
-  instead.
-* The misspelled `Class_::VISIBILITY_MODIFER_MASK` constant has been dropped in favor of
-  `Class_::VISIBILITY_MODIFIER_MASK`.
-* The XML serializer has been removed. As such, the classes `Serializer\XML`, and
-  `Unserializer\XML`, as well as the interfaces `Serializer` and `Unserializer` no longer exist.
-* The `BuilderAbstract` class has been removed. It's functionality is moved into `BuilderHelpers`.
-  However, this is an internal class and should not be used directly.
-* The `Autoloader` class has been removed in favor of relying on the Composer autoloader.
diff --git a/vendor/nikic/php-parser/composer.json b/vendor/nikic/php-parser/composer.json
index 9742853927..2fd064a212 100644
--- a/vendor/nikic/php-parser/composer.json
+++ b/vendor/nikic/php-parser/composer.json
@@ -17,11 +17,12 @@
         "ext-tokenizer": "*"
     },
     "require-dev": {
-        "phpunit/phpunit": "^6.5 || ^7.0"
+        "phpunit/phpunit": "^6.5 || ^7.0 || ^8.0 || ^9.0",
+        "ircmaxell/php-yacc": "^0.0.7"
     },
     "extra": {
         "branch-alias": {
-            "dev-master": "4.2-dev"
+            "dev-master": "4.9-dev"
         }
     },
     "autoload": {
diff --git a/vendor/nikic/php-parser/doc/0_Introduction.markdown b/vendor/nikic/php-parser/doc/0_Introduction.markdown
deleted file mode 100644
index abc40f2bb8..0000000000
--- a/vendor/nikic/php-parser/doc/0_Introduction.markdown
+++ /dev/null
@@ -1,80 +0,0 @@
-Introduction
-============
-
-This project is a PHP 5.2 to PHP 7.3 parser **written in PHP itself**.
-
-What is this for?
------------------
-
-A parser is useful for [static analysis][0], manipulation of code and basically any other
-application dealing with code programmatically. A parser constructs an [Abstract Syntax Tree][1]
-(AST) of the code and thus allows dealing with it in an abstract and robust way.
-
-There are other ways of processing source code. One that PHP supports natively is using the
-token stream generated by [`token_get_all`][2]. The token stream is much more low level than
-the AST and thus has different applications: It allows to also analyze the exact formatting of
-a file. On the other hand the token stream is much harder to deal with for more complex analysis.
-For example, an AST abstracts away the fact that, in PHP, variables can be written as `$foo`, but also
-as `$$bar`, `${'foobar'}` or even `${!${''}=barfoo()}`. You don't have to worry about recognizing
-all the different syntaxes from a stream of tokens.
-
-Another question is: Why would I want to have a PHP parser *written in PHP*? Well, PHP might not be
-a language especially suited for fast parsing, but processing the AST is much easier in PHP than it
-would be in other, faster languages like C. Furthermore the people most probably wanting to do
-programmatic PHP code analysis are incidentally PHP developers, not C developers.
-
-What can it parse?
-------------------
-
-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.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?
-----------------------------
-
-The parser produces an [Abstract Syntax Tree][1] (AST) also known as a node tree. How this looks
-can best be seen in an example. The program `<?php echo 'Hi', 'World';` will give you a node tree
-roughly looking like this:
-
-```
-array(
-    0: Stmt_Echo(
-        exprs: array(
-            0: Scalar_String(
-                value: Hi
-            )
-            1: Scalar_String(
-                value: World
-            )
-        )
-    )
-)
-```
-
-This matches the structure of the code: An echo statement, which takes two strings as expressions,
-with the values `Hi` and `World!`.
-
-You can also see that the AST does not contain any whitespace information (but most comments are saved).
-So using it for formatting analysis is not possible.
-
-What else can it do?
---------------------
-
-Apart from the parser itself this package also bundles support for some other, related features:
-
- * Support for pretty printing, which is the act of converting an AST into PHP code. Please note
-   that "pretty printing" does not imply that the output is especially pretty. It's just how it's
-   called ;)
- * Support for serializing and unserializing the node tree to JSON
- * Support for dumping the node tree in a human readable form (see the section above for an
-   example of how the output looks like)
- * Infrastructure for traversing and changing the AST (node traverser and node visitors)
- * A node visitor for resolving namespaced names
-
- [0]: http://en.wikipedia.org/wiki/Static_program_analysis
- [1]: http://en.wikipedia.org/wiki/Abstract_syntax_tree
- [2]: http://php.net/token_get_all
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
deleted file mode 100644
index 9a809ec8e6..0000000000
--- a/vendor/nikic/php-parser/doc/2_Usage_of_basic_components.markdown
+++ /dev/null
@@ -1,516 +0,0 @@
-Usage of basic components
-=========================
-
-This document explains how to use the parser, the pretty printer and the node traverser.
-
-Bootstrapping
--------------
-
-To bootstrap the library, include the autoloader generated by composer:
-
-```php
-require 'path/to/vendor/autoload.php';
-```
-
-Additionally you may want to set the `xdebug.max_nesting_level` ini option to a higher value:
-
-```php
-ini_set('xdebug.max_nesting_level', 3000);
-```
-
-This ensures that there will be no errors when traversing highly nested node trees. However, it is
-preferable to disable XDebug completely, as it can easily make this library more than five times
-slower.
-
-Parsing
--------
-
-In order to parse code, you first have to create a parser instance:
-
-```php
-use PhpParser\ParserFactory;
-$parser = (new ParserFactory)->create(ParserFactory::PREFER_PHP7);
-```
-
-The factory accepts a kind argument, that determines how different PHP versions are treated:
-
-Kind | Behavior
------|---------
-`ParserFactory::PREFER_PHP7` | Try to parse code as PHP 7. If this fails, try to parse it as PHP 5.
-`ParserFactory::PREFER_PHP5` | Try to parse code as PHP 5. If this fails, try to parse it as PHP 7.
-`ParserFactory::ONLY_PHP7` | Parse code as PHP 7.
-`ParserFactory::ONLY_PHP5` | Parse code as PHP 5.
-
-Unless you have a strong reason to use something else, `PREFER_PHP7` is a reasonable default.
-
-The `create()` method optionally accepts a `Lexer` instance as the second argument. Some use cases
-that require customized lexers are discussed in the [lexer documentation](component/Lexer.markdown).
-
-Subsequently you can pass PHP code (including the opening `<?php` tag) to the `parse` method in order to
-create a syntax tree. If a syntax error is encountered, an `PhpParser\Error` exception will be thrown:
-
-```php
-<?php
-use PhpParser\Error;
-use PhpParser\ParserFactory;
-
-$code = <<<'CODE'
-<?php
-function printLine($msg) {
-    echo $msg, "\n";
-}
-printLine('Hello World!!!');
-CODE;
-
-$parser = (new ParserFactory)->create(ParserFactory::PREFER_PHP7);
-
-try {
-    $stmts = $parser->parse($code);
-    // $stmts is an array of statement nodes
-} catch (Error $e) {
-    echo 'Parse Error: ', $e->getMessage();
-}
-```
-
-A parser instance can be reused to parse multiple files.
-
-Node dumping
-------------
-
-To dump the abstact syntax tree in human readable form, a `NodeDumper` can be used:
-
-```php
-<?php
-use PhpParser\NodeDumper;
-
-$nodeDumper = new NodeDumper;
-echo $nodeDumper->dump($stmts), "\n";
-```
-
-For the sample code from the previous section, this will produce the following output:
-
-```
-array(
-    0: Stmt_Function(
-        byRef: false
-        name: Identifier(
-            name: printLine
-        )
-        params: array(
-            0: Param(
-                type: null
-                byRef: false
-                variadic: false
-                var: Expr_Variable(
-                    name: msg
-                )
-                default: null
-            )
-        )
-        returnType: null
-        stmts: array(
-            0: Stmt_Echo(
-                exprs: array(
-                    0: Expr_Variable(
-                        name: msg
-                    )
-                    1: Scalar_String(
-                        value:
-
-                    )
-                )
-            )
-        )
-    )
-    1: Stmt_Expression(
-        expr: Expr_FuncCall(
-            name: Name(
-                parts: array(
-                    0: printLine
-                )
-            )
-            args: array(
-                0: Arg(
-                    value: Scalar_String(
-                        value: Hello World!!!
-                    )
-                    byRef: false
-                    unpack: false
-                )
-            )
-        )
-    )
-)
-```
-
-You can also use the `php-parse` script to obtain such a node dump by calling it either with a file
-name or code string:
-
-```sh
-vendor/bin/php-parse file.php
-vendor/bin/php-parse "<?php foo();"
-```
-
-This can be very helpful if you want to quickly check how certain syntax is represented in the AST.
-
-Node tree structure
--------------------
-
-Looking at the node dump above, you can see that `$stmts` for this example code is an array of two
-nodes, a `Stmt_Function` and a `Stmt_Expression`. The corresponding class names are:
-
- * `Stmt_Function -> PhpParser\Node\Stmt\Function_`
- * `Stmt_Expression -> PhpParser\Node\Stmt\Expression`
-
-The additional `_` at the end of the first class name is necessary, because `Function` is a
-reserved keyword. Many node class names in this library have a trailing `_` to avoid clashing with
-a keyword.
-
-As PHP is a large language there are approximately 140 different nodes. In order to make working
-with them easier they are grouped into three categories:
-
- * `PhpParser\Node\Stmt`s are statement nodes, i.e. language constructs that do not return
-   a value and can not occur in an expression. For example a class definition is a statement.
-   It doesn't return a value and you can't write something like `func(class A {});`.
- * `PhpParser\Node\Expr`s are expression nodes, i.e. language constructs that return a value
-   and thus can occur in other expressions. Examples of expressions are `$var`
-   (`PhpParser\Node\Expr\Variable`) and `func()` (`PhpParser\Node\Expr\FuncCall`).
- * `PhpParser\Node\Scalar`s are nodes representing scalar values, like `'string'`
-   (`PhpParser\Node\Scalar\String_`), `0` (`PhpParser\Node\Scalar\LNumber`) or magic constants
-   like `__FILE__` (`PhpParser\Node\Scalar\MagicConst\File`). All `PhpParser\Node\Scalar`s extend
-   `PhpParser\Node\Expr`, as scalars are expressions, too.
- * There are some nodes not in either of these groups, for example names (`PhpParser\Node\Name`)
-   and call arguments (`PhpParser\Node\Arg`).
-
-The `Node\Stmt\Expression` node is somewhat confusing in that it contains both the terms "statement"
-and "expression". This node distinguishes `expr`, which is a `Node\Expr`, from `expr;`, which is
-an "expression statement" represented by `Node\Stmt\Expression` and containing `expr` as a sub-node.
-
-Every node has a (possibly zero) number of subnodes. You can access subnodes by writing
-`$node->subNodeName`. The `Stmt\Echo_` node has only one subnode `exprs`. So in order to access it
-in the above example you would write `$stmts[0]->exprs`. If you wanted to access the name of the function
-call, you would write `$stmts[0]->exprs[1]->name`.
-
-All nodes also define a `getType()` method that returns the node type. The type is the class name
-without the `PhpParser\Node\` prefix and `\` replaced with `_`. It also does not contain a trailing
-`_` for reserved-keyword class names.
-
-It is possible to associate custom metadata with a node using the `setAttribute()` method. This data
-can then be retrieved using `hasAttribute()`, `getAttribute()` and `getAttributes()`.
-
-By default the lexer adds the `startLine`, `endLine` and `comments` attributes. `comments` is an array
-of `PhpParser\Comment[\Doc]` instances.
-
-The start line can also be accessed using `getLine()`/`setLine()` (instead of `getAttribute('startLine')`).
-The last doc comment from the `comments` attribute can be obtained using `getDocComment()`.
-
-Pretty printer
---------------
-
-The pretty printer component compiles the AST back to PHP code. As the parser does not retain formatting
-information the formatting is done using a specified scheme. Currently there is only one scheme available,
-namely `PhpParser\PrettyPrinter\Standard`.
-
-```php
-use PhpParser\Error;
-use PhpParser\ParserFactory;
-use PhpParser\PrettyPrinter;
-
-$code = "<?php echo 'Hi ', hi\\getTarget();";
-
-$parser = (new ParserFactory)->create(ParserFactory::PREFER_PHP7);
-$prettyPrinter = new PrettyPrinter\Standard;
-
-try {
-    // parse
-    $stmts = $parser->parse($code);
-
-    // change
-    $stmts[0]         // the echo statement
-          ->exprs     // sub expressions
-          [0]         // the first of them (the string node)
-          ->value     // it's value, i.e. 'Hi '
-          = 'Hello '; // change to 'Hello '
-
-    // pretty print
-    $code = $prettyPrinter->prettyPrint($stmts);
-
-    echo $code;
-} catch (Error $e) {
-    echo 'Parse Error: ', $e->getMessage();
-}
-```
-
-The above code will output:
-
-    echo 'Hello ', hi\getTarget();
-
-As you can see the source code was first parsed using `PhpParser\Parser->parse()`, then changed and then
-again converted to code using `PhpParser\PrettyPrinter\Standard->prettyPrint()`.
-
-The `prettyPrint()` method pretty prints a statements array. It is also possible to pretty print only a
-single expression using `prettyPrintExpr()`.
-
-The `prettyPrintFile()` method can be used to print an entire file. This will include the opening `<?php` tag
-and handle inline HTML as the first/last statement more gracefully.
-
-> Read more: [Pretty printing documentation](component/Pretty_printing.markdown)
-
-Node traversation
------------------
-
-The above pretty printing example used the fact that the source code was known and thus it was easy to
-write code that accesses a certain part of a node tree and changes it. Normally this is not the case.
-Usually you want to change / analyze code in a generic way, where you don't know how the node tree is
-going to look like.
-
-For this purpose the parser provides a component for traversing and visiting the node tree. The basic
-structure of a program using this `PhpParser\NodeTraverser` looks like this:
-
-```php
-use PhpParser\NodeTraverser;
-use PhpParser\ParserFactory;
-use PhpParser\PrettyPrinter;
-
-$parser        = (new ParserFactory)->create(ParserFactory::PREFER_PHP7);
-$traverser     = new NodeTraverser;
-$prettyPrinter = new PrettyPrinter\Standard;
-
-// add your visitor
-$traverser->addVisitor(new MyNodeVisitor);
-
-try {
-    $code = file_get_contents($fileName);
-
-    // parse
-    $stmts = $parser->parse($code);
-
-    // traverse
-    $stmts = $traverser->traverse($stmts);
-
-    // pretty print
-    $code = $prettyPrinter->prettyPrintFile($stmts);
-
-    echo $code;
-} catch (PhpParser\Error $e) {
-    echo 'Parse Error: ', $e->getMessage();
-}
-```
-
-The corresponding node visitor might look like this:
-
-```php
-use PhpParser\Node;
-use PhpParser\NodeVisitorAbstract;
-
-class MyNodeVisitor extends NodeVisitorAbstract
-{
-    public function leaveNode(Node $node) {
-        if ($node instanceof Node\Scalar\String_) {
-            $node->value = 'foo';
-        }
-    }
-}
-```
-
-The above node visitor would change all string literals in the program to `'foo'`.
-
-All visitors must implement the `PhpParser\NodeVisitor` interface, which defines the following four
-methods:
-
-```php
-public function beforeTraverse(array $nodes);
-public function enterNode(\PhpParser\Node $node);
-public function leaveNode(\PhpParser\Node $node);
-public function afterTraverse(array $nodes);
-```
-
-The `beforeTraverse()` method is called once before the traversal begins and is passed the nodes the
-traverser was called with. This method can be used for resetting values before traversation or
-preparing the tree for traversal.
-
-The `afterTraverse()` method is similar to the `beforeTraverse()` method, with the only difference that
-it is called once after the traversal.
-
-The `enterNode()` and `leaveNode()` methods are called on every node, the former when it is entered,
-i.e. before its subnodes are traversed, the latter when it is left.
-
-All four methods can either return the changed node or not return at all (i.e. `null`) in which
-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. 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
-an array of nodes, which will be merged into the parent array at the offset of the current node.
-I.e. if in `array(A, B, C)` the node `B` should be replaced with `array(X, Y, Z)` the result will
-be `array(A, X, Y, Z, C)`.
-
-Instead of manually implementing the `NodeVisitor` interface you can also extend the `NodeVisitorAbstract`
-class, which will define empty default implementations for all the above methods.
-
-> Read more: [Walking the AST](component/Walking_the_AST.markdown)
-
-The NameResolver node visitor
------------------------------
-
-One visitor that is already bundled with the package is `PhpParser\NodeVisitor\NameResolver`. This visitor
-helps you work with namespaced code by trying to resolve most names to fully qualified ones.
-
-For example, consider the following code:
-
-    use A as B;
-    new B\C();
-
-In order to know that `B\C` really is `A\C` you would need to track aliases and namespaces yourself.
-The `NameResolver` takes care of that and resolves names as far as possible.
-
-After running it, most names will be fully qualified. The only names that will stay unqualified are
-unqualified function and constant names. These are resolved at runtime and thus the visitor can't
-know which function they are referring to. In most cases this is a non-issue as the global functions
-are meant.
-
-Also the `NameResolver` adds a `namespacedName` subnode to class, function and constant declarations
-that contains the namespaced name instead of only the shortname that is available via `name`.
-
-> Read more: [Name resolution documentation](component/Name_resolution.markdown)
-
-Example: Converting namespaced code to pseudo namespaces
---------------------------------------------------------
-
-A small example to understand the concept: We want to convert namespaced code to pseudo namespaces
-so it works on 5.2, i.e. names like `A\\B` should be converted to `A_B`. Note that such conversions
-are fairly complicated if you take PHP's dynamic features into account, so our conversion will
-assume that no dynamic features are used.
-
-We start off with the following base code:
-
-```php
-use PhpParser\ParserFactory;
-use PhpParser\PrettyPrinter;
-use PhpParser\NodeTraverser;
-use PhpParser\NodeVisitor\NameResolver;
-
-$inDir  = '/some/path';
-$outDir = '/some/other/path';
-
-$parser        = (new ParserFactory)->create(ParserFactory::PREFER_PHP7);
-$traverser     = new NodeTraverser;
-$prettyPrinter = new PrettyPrinter\Standard;
-
-$traverser->addVisitor(new NameResolver); // we will need resolved names
-$traverser->addVisitor(new NamespaceConverter); // our own node visitor
-
-// iterate over all .php files in the directory
-$files = new \RecursiveIteratorIterator(new \RecursiveDirectoryIterator($inDir));
-$files = new \RegexIterator($files, '/\.php$/');
-
-foreach ($files as $file) {
-    try {
-        // read the file that should be converted
-        $code = file_get_contents($file->getPathName());
-
-        // parse
-        $stmts = $parser->parse($code);
-
-        // traverse
-        $stmts = $traverser->traverse($stmts);
-
-        // pretty print
-        $code = $prettyPrinter->prettyPrintFile($stmts);
-
-        // write the converted file to the target directory
-        file_put_contents(
-            substr_replace($file->getPathname(), $outDir, 0, strlen($inDir)),
-            $code
-        );
-    } catch (PhpParser\Error $e) {
-        echo 'Parse Error: ', $e->getMessage();
-    }
-}
-```
-
-Now lets start with the main code, the `NodeVisitor\NamespaceConverter`. One thing it needs to do
-is convert `A\\B` style names to `A_B` style ones.
-
-```php
-use PhpParser\Node;
-
-class NamespaceConverter extends \PhpParser\NodeVisitorAbstract
-{
-    public function leaveNode(Node $node) {
-        if ($node instanceof Node\Name) {
-            return new Node\Name(str_replace('\\', '_', $node->toString()));
-        }
-    }
-}
-```
-
-The above code profits from the fact that the `NameResolver` already resolved all names as far as
-possible, so we don't need to do that. We only need to create a string with the name parts separated
-by underscores instead of backslashes. This is what `str_replace('\\', '_', $node->toString())` does. (If you want to
-create a name with backslashes either write `$node->toString()` or `(string) $node`.) Then we create
-a new name from the string and return it. Returning a new node replaces the old node.
-
-Another thing we need to do is change the class/function/const declarations. Currently they contain
-only the shortname (i.e. the last part of the name), but they need to contain the complete name including
-the namespace prefix:
-
-```php
-use PhpParser\Node;
-use PhpParser\Node\Stmt;
-
-class NodeVisitor_NamespaceConverter extends \PhpParser\NodeVisitorAbstract
-{
-    public function leaveNode(Node $node) {
-        if ($node instanceof Node\Name) {
-            return new Node\Name(str_replace('\\', '_', $node->toString()));
-        } elseif ($node instanceof Stmt\Class_
-                  || $node instanceof Stmt\Interface_
-                  || $node instanceof Stmt\Function_) {
-            $node->name = str_replace('\\', '_', $node->namespacedName->toString());
-        } elseif ($node instanceof Stmt\Const_) {
-            foreach ($node->consts as $const) {
-                $const->name = str_replace('\\', '_', $const->namespacedName->toString());
-            }
-        }
-    }
-}
-```
-
-There is not much more to it than converting the namespaced name to string with `_` as separator.
-
-The last thing we need to do is remove the `namespace` and `use` statements:
-
-```php
-use PhpParser\Node;
-use PhpParser\Node\Stmt;
-use PhpParser\NodeTraverser;
-
-class NodeVisitor_NamespaceConverter extends \PhpParser\NodeVisitorAbstract
-{
-    public function leaveNode(Node $node) {
-        if ($node instanceof Node\Name) {
-            return new Node\Name(str_replace('\\', '_', $node->toString()));
-        } elseif ($node instanceof Stmt\Class_
-                  || $node instanceof Stmt\Interface_
-                  || $node instanceof Stmt\Function_) {
-            $node->name = str_replace('\\', '_', $node->namespacedName->toString();
-        } elseif ($node instanceof Stmt\Const_) {
-            foreach ($node->consts as $const) {
-                $const->name = str_replace('\\', '_', $const->namespacedName->toString());
-            }
-        } elseif ($node instanceof Stmt\Namespace_) {
-            // returning an array merges is into the parent array
-            return $node->stmts;
-        } elseif ($node instanceof Stmt\Use_) {
-            // remove use nodes altogether
-            return NodeTraverser::REMOVE_NODE;
-        }
-    }
-}
-```
-
-That's all.
diff --git a/vendor/nikic/php-parser/doc/README.md b/vendor/nikic/php-parser/doc/README.md
deleted file mode 100644
index 3b8cd76563..0000000000
--- a/vendor/nikic/php-parser/doc/README.md
+++ /dev/null
@@ -1,46 +0,0 @@
-Table of Contents
-=================
-
-Guide
------
-
-  1. [Introduction](0_Introduction.markdown)
-  2. [Usage of basic components](2_Usage_of_basic_components.markdown)
-
-Component documentation
------------------------
-
-  * [Walking the AST](component/Walking_the_AST.markdown)
-    * Node visitors
-    * Modifying the AST from a visitor
-    * Short-circuiting traversals
-    * Interleaved visitors
-    * Simple node finding API
-    * Parent and sibling references
-  * [Name resolution](component/Name_resolution.markdown)
-    * Name resolver options
-    * Name resolution context
-  * [Pretty printing](component/Pretty_printing.markdown)
-    * Converting AST back to PHP code
-    * Customizing formatting
-    * Formatting-preserving code transformations
-  * [AST builders](component/AST_builders.markdown)
-    * Fluent builders for AST nodes
-  * [Lexer](component/Lexer.markdown)
-    * Lexer options
-    * Token and file positions for nodes
-    * Custom attributes
-  * [Error handling](component/Error_handling.markdown)
-    * Column information for errors
-    * Error recovery (parsing of syntactically incorrect code)
-  * [Constant expression evaluation](component/Constant_expression_evaluation.markdown)
-    * Evaluating constant/property/etc initializers
-    * Handling errors and unsupported expressions
-  * [JSON representation](component/JSON_representation.markdown)
-    * JSON encoding and decoding of ASTs
-  * [Performance](component/Performance.markdown)
-    * Disabling XDebug
-    * Reusing objects
-    * Garbage collection impact
-  * [Frequently asked questions](component/FAQ.markdown)
-    * Parent and sibling references
diff --git a/vendor/nikic/php-parser/doc/component/AST_builders.markdown b/vendor/nikic/php-parser/doc/component/AST_builders.markdown
deleted file mode 100644
index 60ae0192df..0000000000
--- a/vendor/nikic/php-parser/doc/component/AST_builders.markdown
+++ /dev/null
@@ -1,138 +0,0 @@
-AST builders
-============
-
-When PHP-Parser is used to generate (or modify) code by first creating an Abstract Syntax Tree and
-then using the [pretty printer](Pretty_printing.markdown) to convert it to PHP code, it can often
-be tedious to manually construct AST nodes. The project provides a number of utilities to simplify
-the construction of common AST nodes.
-
-Fluent builders
----------------
-
-The library comes with a number of builders, which allow creating node trees using a fluent
-interface. Builders are created using the `BuilderFactory` and the final constructed node is
-accessed through `getNode()`. Fluent builders are available for
-the following syntactic elements:
-
- * namespaces and use statements
- * classes, interfaces and traits
- * methods, functions and parameters
- * properties
-
-Here is an example:
-
-```php
-use PhpParser\BuilderFactory;
-use PhpParser\PrettyPrinter;
-use PhpParser\Node;
-
-$factory = new BuilderFactory;
-$node = $factory->namespace('Name\Space')
-    ->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') // ->makeReturnByRef()
-            ->addParam($factory->param('someParam')->setType('SomeClass'))
-            ->setDocComment('/**
-                              * This method does something.
-                              *
-                              * @param SomeClass And takes a parameter
-                              */')
-        )
-
-        ->addStmt($factory->method('anotherMethod')
-            ->makeProtected() // ->makePublic() [default], ->makePrivate()
-            ->addParam($factory->param('someParam')->setDefault('test'))
-            // it is possible to add manually created nodes
-            ->addStmt(new Node\Expr\Print_(new Node\Expr\Variable('someParam')))
-        )
-
-        // properties will be correctly reordered above the methods
-        ->addStmt($factory->property('someProperty')->makeProtected())
-        ->addStmt($factory->property('anotherProperty')->makePrivate()->setDefault(array(1, 2, 3)))
-    )
-
-    ->getNode()
-;
-
-$stmts = array($node);
-$prettyPrinter = new PrettyPrinter\Standard();
-echo $prettyPrinter->prettyPrintFile($stmts);
-```
-
-This will produce the following output with the standard pretty printer:
-
-```php
-<?php
-
-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);
-    /**
-     * This method does something.
-     *
-     * @param SomeClass And takes a parameter
-     */
-    public abstract function someMethod(SomeClass $someParam) : bool;
-    protected function anotherMethod($someParam = 'test')
-    {
-        print $someParam;
-    }
-}
-```
-
-Additional helper methods
--------------------------
-
-The `BuilderFactory` also provides a number of additional helper methods, which directly return
-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`
-   node and normalizes arguments.
- * `methodCall(Expr $var, $name, array $args = [])`: Create a method call node. Converts `$name` to
-   an `Identifier` node and normalizes arguments.
- * `staticCall($class, $name, array $args = [])`: Create a static method call node. Converts
-   `$class` to a `Name` node, `$name` to an `Identifier` node and normalizes arguments.
- * `new($class, array $args = [])`: Create a "new" (object creation) node. Converts `$class` to a
-   `Name` node.
- * `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.
diff --git a/vendor/nikic/php-parser/doc/component/Constant_expression_evaluation.markdown b/vendor/nikic/php-parser/doc/component/Constant_expression_evaluation.markdown
deleted file mode 100644
index 9ab4f5c395..0000000000
--- a/vendor/nikic/php-parser/doc/component/Constant_expression_evaluation.markdown
+++ /dev/null
@@ -1,115 +0,0 @@
-Constant expression evaluation
-==============================
-
-Initializers for constants, properties, parameters, etc. have limited support for expressions. For
-example:
-
-```php
-<?php
-class Test {
-    const SECONDS_IN_HOUR = 60 * 60;
-    const SECONDS_IN_DAY = 24 * self::SECONDS_IN_HOUR;
-}
-```
-
-PHP-Parser supports evaluation of such constant expressions through the `ConstExprEvaluator` class:
-
-```php
-<?php
-
-use PhpParser\{ConstExprEvaluator, ConstExprEvaluationException};
-
-$evalutator = new ConstExprEvaluator();
-try {
-    $value = $evalutator->evaluateSilently($someExpr);
-} catch (ConstExprEvaluationException $e) {
-    // Either the expression contains unsupported expression types,
-    // or an error occurred during evaluation
-}
-```
-
-Error handling
---------------
-
-The constant evaluator provides two methods, `evaluateDirectly()` and `evaluateSilently()`, which
-differ in error behavior. `evaluateDirectly()` will evaluate the expression as PHP would, including
-any generated warnings or Errors. `evaluateSilently()` will instead convert warnings and Errors into
-a `ConstExprEvaluationException`. For example:
-
-```php
-<?php
-
-use PhpParser\{ConstExprEvaluator, ConstExprEvaluationException};
-use PhpParser\Node\{Expr, Scalar};
-
-$evaluator = new ConstExprEvaluator();
-
-// 10 / 0
-$expr = new Expr\BinaryOp\Div(new Scalar\LNumber(10), new Scalar\LNumber(0));
-
-var_dump($evaluator->evaluateDirectly($expr)); // float(INF)
-// Warning: Division by zero
-
-try {
-    $evaluator->evaluateSilently($expr);
-} catch (ConstExprEvaluationException $e) {
-    var_dump($e->getPrevious()->getMessage()); // Division by zero
-}
-```
-
-For the purposes of static analysis, you will likely want to use `evaluateSilently()` and leave
-erroring expressions unevaluated.
-
-Unsupported expressions and evaluator fallback
-----------------------------------------------
-
-The constant expression evaluator supports all expression types that are permitted in constant
-expressions, apart from the following:
-
- * `Scalar\MagicConst\*`
- * `Expr\ConstFetch` (only null/false/true are handled)
- * `Expr\ClassConstFetch`
-
-Handling these expression types requires non-local information, such as which global constants are
-defined. By default, the evaluator will throw a `ConstExprEvaluationException` when it encounters
-an unsupported expression type.
-
-It is possible to override this behavior and support resolution for these expression types by
-specifying an evaluation fallback function:
-
-```php
-<?php
-
-use PhpParser\{ConstExprEvaluator, ConstExprEvaluationException};
-use PhpParser\Node\Expr;
-
-$evalutator = new ConstExprEvaluator(function(Expr $expr) {
-    if ($expr instanceof Expr\ConstFetch) {
-        return fetchConstantSomehow($expr);
-    }
-    if ($expr instanceof Expr\ClassConstFetch) {
-        return fetchClassConstantSomehow($expr);
-    }
-    // etc.
-    throw new ConstExprEvaluationException(
-        "Expression of type {$expr->getType()} cannot be evaluated");
-});
-
-try {
-    $evalutator->evaluateSilently($someExpr);
-} catch (ConstExprEvaluationException $e) {
-    // Handle exception
-}
-```
-
-Implementers are advised to ensure that evaluation of indirect constant references cannot lead to
-infinite recursion. For example, the following code could lead to infinite recursion if constant
-lookup is implemented naively.
-
-```php
-<?php
-class Test {
-    const A = self::B;
-    const B = self::A;
-}
-```
\ No newline at end of file
diff --git a/vendor/nikic/php-parser/doc/component/Error_handling.markdown b/vendor/nikic/php-parser/doc/component/Error_handling.markdown
deleted file mode 100644
index 55bb5153b7..0000000000
--- a/vendor/nikic/php-parser/doc/component/Error_handling.markdown
+++ /dev/null
@@ -1,75 +0,0 @@
-Error handling
-==============
-
-Errors during parsing or analysis are represented using the `PhpParser\Error` exception class. In addition to an error
-message, an error can also store additional information about the location the error occurred at.
-
-How much location information is available depends on the origin of the error and how many lexer attributes have been
-enabled. At a minimum the start line of the error is usually available.
-
-Column information
-------------------
-
-In order to receive information about not only the line, but also the column span an error occurred at, the file
-position attributes in the lexer need to be enabled:
-
-```php
-$lexer = new PhpParser\Lexer(array(
-    'usedAttributes' => array('comments', 'startLine', 'endLine', 'startFilePos', 'endFilePos'),
-));
-$parser = (new PhpParser\ParserFactory)->create(PhpParser\ParserFactory::PREFER_PHP7, $lexer);
-
-try {
-    $stmts = $parser->parse($code);
-    // ...
-} catch (PhpParser\Error $e) {
-    // ...
-}
-```
-
-Before using column information, its availability needs to be checked with `$e->hasColumnInfo()`, as the precise
-location of an error cannot always be determined. The methods for retrieving column information also have to be passed
-the source code of the parsed file. An example for printing an error:
-
-```php
-if ($e->hasColumnInfo()) {
-    echo $e->getRawMessage() . ' from ' . $e->getStartLine() . ':' . $e->getStartColumn($code)
-        . ' to ' . $e->getEndLine() . ':' . $e->getEndColumn($code);
-    // or:
-    echo $e->getMessageWithColumnInfo();
-} else {
-    echo $e->getMessage();
-}
-```
-
-Both line numbers and column numbers are 1-based. EOF errors will be located at the position one past the end of the
-file.
-
-Error recovery
---------------
-
-The error behavior of the parser (and other components) is controlled by an `ErrorHandler`. Whenever an error is
-encountered, `ErrorHandler::handleError()` is invoked. The default error handling strategy is `ErrorHandler\Throwing`,
-which will immediately throw when an error is encountered.
-
-To instead collect all encountered errors into an array, while trying to continue parsing the rest of the source code,
-an instance of `ErrorHandler\Collecting` can be passed to the `Parser::parse()` method. A usage example:
-
-```php
-$parser = (new PhpParser\ParserFactory)->create(PhpParser\ParserFactory::ONLY_PHP7);
-$errorHandler = new PhpParser\ErrorHandler\Collecting;
-
-$stmts = $parser->parse($code, $errorHandler);
-
-if ($errorHandler->hasErrors()) {
-    foreach ($errorHandler->getErrors() as $error) {
-        // $error is an ordinary PhpParser\Error
-    }
-}
-
-if (null !== $stmts) {
-    // $stmts is a best-effort partial AST
-}
-```
-
-The `NameResolver` visitor also accepts an `ErrorHandler` as a constructor argument.
\ No newline at end of file
diff --git a/vendor/nikic/php-parser/doc/component/FAQ.markdown b/vendor/nikic/php-parser/doc/component/FAQ.markdown
deleted file mode 100644
index b8bf834b66..0000000000
--- a/vendor/nikic/php-parser/doc/component/FAQ.markdown
+++ /dev/null
@@ -1,68 +0,0 @@
-Frequently Asked Questions
-==========================
-
- * [How can the parent of a node be obtained?](#how-can-the-parent-of-a-node-be-obtained)
- * [How can the next/previous sibling of a node be obtained?](#how-can-the-nextprevious-sibling-of-a-node-be-obtained)
-
-How can the parent of a node be obtained?
------
-
-The AST does not store parent nodes by default. However, it is easy to add a custom parent node
-attribute using a custom node visitor:
-
-```php
-use PhpParser\Node;
-use PhpParser\NodeVisitorAbstract;
-
-class ParentConnector extends NodeVisitorAbstract {
-    private $stack;
-    public function beforeTraverse(array $nodes) {
-        $this->stack = [];
-    }
-    public function enterNode(Node $node) {
-        if (!empty($this->stack)) {
-            $node->setAttribute('parent', $this->stack[count($this->stack)-1]);
-        }
-        $this->stack[] = $node;
-    }
-    public function leaveNode(Node $node) {
-        array_pop($this->stack);
-    }
-}
-```
-
-After running this visitor, the parent node can be obtained through `$node->getAttribute('parent')`.
-
-How can the next/previous sibling of a node be obtained?
------
-
-Again, siblings are not stored by default, but the visitor from the previous entry can be easily
-extended to store the previous / next node with a common parent as well:
-
-```php
-use PhpParser\Node;
-use PhpParser\NodeVisitorAbstract;
-
-class NodeConnector extends NodeVisitorAbstract {
-    private $stack;
-    private $prev;
-    public function beforeTraverse(array $nodes) {
-        $this->stack = [];
-        $this->prev = null;
-    }
-    public function enterNode(Node $node) {
-        if (!empty($this->stack)) {
-            $node->setAttribute('parent', $this->stack[count($this->stack)-1]);
-        }
-        if ($this->prev && $this->prev->getAttribute('parent') == $node->getAttribute('parent')) {
-            $node->setAttribute('prev', $this->prev);
-            $this->prev->setAttribute('next', $node);
-        }
-        $this->stack[] = $node;
-    }
-    public function leaveNode(Node $node) {
-        $this->prev = $node;
-        array_pop($this->stack);
-    }
-}
-```
diff --git a/vendor/nikic/php-parser/doc/component/JSON_representation.markdown b/vendor/nikic/php-parser/doc/component/JSON_representation.markdown
deleted file mode 100644
index 47c3429c07..0000000000
--- a/vendor/nikic/php-parser/doc/component/JSON_representation.markdown
+++ /dev/null
@@ -1,131 +0,0 @@
-JSON representation
-===================
-
-Nodes (and comments) implement the `JsonSerializable` interface. As such, it is possible to JSON
-encode the AST directly using `json_encode()`:
-
-```php
-<?php
-
-use PhpParser\ParserFactory;
-
-$code = <<<'CODE'
-<?php
-
-/** @param string $msg */
-function printLine($msg) {
-    echo $msg, "\n";
-}
-CODE;
-
-$parser = (new ParserFactory)->create(ParserFactory::PREFER_PHP7);
-
-try {
-    $stmts = $parser->parse($code);
-
-    echo json_encode($stmts, JSON_PRETTY_PRINT), "\n";
-} catch (PhpParser\Error $e) {
-    echo 'Parse Error: ', $e->getMessage();
-}
-```
-
-This will result in the following output (which includes attributes):
-
-```json
-[
-    {
-        "nodeType": "Stmt_Function",
-        "byRef": false,
-        "name": {
-            "nodeType": "Identifier",
-            "name": "printLine",
-            "attributes": {
-                "startLine": 4,
-                "endLine": 4
-            }
-        },
-        "params": [
-            {
-                "nodeType": "Param",
-                "type": null,
-                "byRef": false,
-                "variadic": false,
-                "var": {
-                    "nodeType": "Expr_Variable",
-                    "name": "msg",
-                    "attributes": {
-                        "startLine": 4,
-                        "endLine": 4
-                    }
-                },
-                "default": null,
-                "attributes": {
-                    "startLine": 4,
-                    "endLine": 4
-                }
-            }
-        ],
-        "returnType": null,
-        "stmts": [
-            {
-                "nodeType": "Stmt_Echo",
-                "exprs": [
-                    {
-                        "nodeType": "Expr_Variable",
-                        "name": "msg",
-                        "attributes": {
-                            "startLine": 5,
-                            "endLine": 5
-                        }
-                    },
-                    {
-                        "nodeType": "Scalar_String",
-                        "value": "\n",
-                        "attributes": {
-                            "startLine": 5,
-                            "endLine": 5,
-                            "kind": 2
-                        }
-                    }
-                ],
-                "attributes": {
-                    "startLine": 5,
-                    "endLine": 5
-                }
-            }
-        ],
-        "attributes": {
-            "startLine": 4,
-            "comments": [
-                {
-                    "nodeType": "Comment_Doc",
-                    "text": "\/** @param string $msg *\/",
-                    "line": 3,
-                    "filePos": 9,
-                    "tokenPos": 2
-                }
-            ],
-            "endLine": 6
-        }
-    }
-]
-```
-
-The JSON representation may be converted back into an AST using the `JsonDecoder`:
-
-```php
-<?php
-
-$jsonDecoder = new PhpParser\JsonDecoder();
-$ast = $jsonDecoder->decode($json);
-```
-
-Note that not all ASTs can be represented using JSON. In particular:
-
- * JSON only supports UTF-8 strings.
- * JSON does not support non-finite floating-point numbers. This can occur if the original source
-   code contains non-representable floating-pointing literals such as `1e1000`.
-
-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`.
diff --git a/vendor/nikic/php-parser/doc/component/Lexer.markdown b/vendor/nikic/php-parser/doc/component/Lexer.markdown
deleted file mode 100644
index be26e381e5..0000000000
--- a/vendor/nikic/php-parser/doc/component/Lexer.markdown
+++ /dev/null
@@ -1,159 +0,0 @@
-Lexer component documentation
-=============================
-
-The lexer is responsible for providing tokens to the parser. The project comes with two lexers: `PhpParser\Lexer` and
-`PhpParser\Lexer\Emulative`. The latter is an extension of the former, which adds the ability to emulate tokens of
-newer PHP versions and thus allows parsing of new code on older versions.
-
-This documentation discusses options available for the default lexers and explains how lexers can be extended.
-
-Lexer options
--------------
-
-The two default lexers accept an `$options` array in the constructor. Currently only the `'usedAttributes'` option is
-supported, which allows you to specify which attributes will be added to the AST nodes. The attributes can then be
-accessed using `$node->getAttribute()`, `$node->setAttribute()`, `$node->hasAttribute()` and `$node->getAttributes()`
-methods. A sample options array:
-
-```php
-$lexer = new PhpParser\Lexer(array(
-    'usedAttributes' => array(
-        'comments', 'startLine', 'endLine'
-    )
-));
-```
-
-The attributes used in this example match the default behavior of the lexer. The following attributes are supported:
-
- * `comments`: Array of `PhpParser\Comment` or `PhpParser\Comment\Doc` instances, representing all comments that occurred
-   between the previous non-discarded token and the current one. Use of this attribute is required for the
-   `$node->getComments()` and `$node->getDocComment()` methods to work. The attribute is also needed if you wish the pretty
-   printer to retain comments present in the original code.
- * `startLine`: Line in which the node starts. This attribute is required for the `$node->getLine()` to work. It is also
-   required if syntax errors should contain line number information.
- * `endLine`: Line in which the node ends. Required for `$node->getEndLine()`.
- * `startTokenPos`: Offset into the token array of the first token in the node. Required for `$node->getStartTokenPos()`.
- * `endTokenPos`: Offset into the token array of the last token in the node. Required for `$node->getEndTokenPos()`.
- * `startFilePos`: Offset into the code string of the first character that is part of the node. Required for `$node->getStartFilePos()`.
- * `endFilePos`: Offset into the code string of the last character that is part of the node. Required for `$node->getEndFilePos()`.
-
-### Using token positions
-
-> **Note:** The example in this section is outdated in that this information is directly available in the AST: While
-> `$property->isPublic()` does not distinguish between `public` and `var`, directly checking `$property->flags` for
-> the `$property->flags & Class_::VISIBILITY_MODIFIER_MASK) === 0` allows making this distinction without resorting to
-> tokens. However the general idea behind the example still applies in other cases.
-
-The token offset information is useful if you wish to examine the exact formatting used for a node. For example the AST
-does not distinguish whether a property was declared using `public` or using `var`, but you can retrieve this
-information based on the token position:
-
-```php
-function isDeclaredUsingVar(array $tokens, PhpParser\Node\Stmt\Property $prop) {
-    $i = $prop->getAttribute('startTokenPos');
-    return $tokens[$i][0] === T_VAR;
-}
-```
-
-In order to make use of this function, you will have to provide the tokens from the lexer to your node visitor using
-code similar to the following:
-
-```php
-class MyNodeVisitor extends PhpParser\NodeVisitorAbstract {
-    private $tokens;
-    public function setTokens(array $tokens) {
-        $this->tokens = $tokens;
-    }
-
-    public function leaveNode(PhpParser\Node $node) {
-        if ($node instanceof PhpParser\Node\Stmt\Property) {
-            var_dump(isDeclaredUsingVar($this->tokens, $node));
-        }
-    }
-}
-
-$lexer = new PhpParser\Lexer(array(
-    'usedAttributes' => array(
-        'comments', 'startLine', 'endLine', 'startTokenPos', 'endTokenPos'
-    )
-));
-$parser = (new PhpParser\ParserFactory)->create(PhpParser\ParserFactory::ONLY_PHP7, $lexer);
-
-$visitor = new MyNodeVisitor();
-$traverser = new PhpParser\NodeTraverser();
-$traverser->addVisitor($visitor);
-
-try {
-    $stmts = $parser->parse($code);
-    $visitor->setTokens($lexer->getTokens());
-    $stmts = $traverser->traverse($stmts);
-} catch (PhpParser\Error $e) {
-    echo 'Parse Error: ', $e->getMessage();
-}
-```
-
-The same approach can also be used to perform specific modifications in the code, without changing the formatting in
-other places (which is the case when using the pretty printer).
-
-Lexer extension
----------------
-
-A lexer has to define the following public interface:
-
-```php
-function startLexing(string $code, ErrorHandler $errorHandler = null): void;
-function getTokens(): array;
-function handleHaltCompiler(): string;
-function getNextToken(string &$value = null, array &$startAttributes = null, array &$endAttributes = null): int;
-```
-
-The `startLexing()` method is invoked whenever the `parse()` method of the parser is called and is passed the source
-code that is to be lexed (including the opening tag). It can be used to reset state or preprocess the source code or tokens. The
-passed `ErrorHandler` should be used to report lexing errors.
-
-The `getTokens()` method returns the current token array, in the usual `token_get_all()` format. This method is not
-used by the parser (which uses `getNextToken()`), but is useful in combination with the token position attributes.
-
-The `handleHaltCompiler()` method is called whenever a `T_HALT_COMPILER` token is encountered. It has to return the
-remaining string after the construct (not including `();`).
-
-The `getNextToken()` method returns the ID of the next token (as defined by the `Parser::T_*` constants). If no more
-tokens are available it must return `0`, which is the ID of the `EOF` token. Furthermore the string content of the
-token should be written into the by-reference `$value` parameter (which will then be available as `$n` in the parser).
-
-### Attribute handling
-
-The other two by-ref variables `$startAttributes` and `$endAttributes` define which attributes will eventually be
-assigned to the generated nodes: The parser will take the `$startAttributes` from the first token which is part of the
-node and the `$endAttributes` from the last token that is part of the node.
-
-E.g. if the tokens `T_FUNCTION T_STRING ... '{' ... '}'` constitute a node, then the `$startAttributes` from the
-`T_FUNCTION` token will be taken and the `$endAttributes` from the `'}'` token.
-
-An application of custom attributes is storing the exact original formatting of literals: While the parser does retain
-some information about the formatting of integers (like decimal vs. hexadecimal) or strings (like used quote type), it
-does not preserve the exact original formatting (e.g. leading zeros for integers or escape sequences in strings). This
-can be remedied by storing the original value in an attribute:
-
-```php
-use PhpParser\Lexer;
-use PhpParser\Parser\Tokens;
-
-class KeepOriginalValueLexer extends Lexer // or Lexer\Emulative
-{
-    public function getNextToken(&$value = null, &$startAttributes = null, &$endAttributes = null) {
-        $tokenId = parent::getNextToken($value, $startAttributes, $endAttributes);
-
-        if ($tokenId == Tokens::T_CONSTANT_ENCAPSED_STRING   // non-interpolated string
-            || $tokenId == Tokens::T_ENCAPSED_AND_WHITESPACE // interpolated string
-            || $tokenId == Tokens::T_LNUMBER                 // integer
-            || $tokenId == Tokens::T_DNUMBER                 // floating point number
-        ) {
-            // could also use $startAttributes, doesn't really matter here
-            $endAttributes['originalValue'] = $value;
-        }
-
-        return $tokenId;
-    }
-}
-```
diff --git a/vendor/nikic/php-parser/doc/component/Name_resolution.markdown b/vendor/nikic/php-parser/doc/component/Name_resolution.markdown
deleted file mode 100644
index 2a7eb603a9..0000000000
--- a/vendor/nikic/php-parser/doc/component/Name_resolution.markdown
+++ /dev/null
@@ -1,87 +0,0 @@
-Name resolution
-===============
-
-Since the introduction of namespaces in PHP 5.3, literal names in PHP code are subject to a
-relatively complex name resolution process, which is based on the current namespace, the current
-import table state, as well the type of the referenced symbol. PHP-Parser implements name
-resolution and related functionality, both as reusable logic (NameContext), as well as a node
-visitor (NameResolver) based on it.
-
-The NameResolver visitor
-------------------------
-
-The `NameResolver` visitor can (and for nearly all uses of the AST, is) be applied to resolve names
-to their fully-qualified form, to the degree that this is possible.
-
-```php
-$nameResolver = new PhpParser\NodeVisitor\NameResolver;
-$nodeTraverser = new PhpParser\NodeTraverser;
-$nodeTraverser->addVisitor($nameResolver);
-
-// Resolve names
-$stmts = $nodeTraverser->traverse($stmts);
-```
-
-In the default configuration, the name resolver will perform three actions:
-
- * Declarations of functions, classes, interfaces, traits and global constants will have a
-   `namespacedName` property added, which contains the function/class/etc name including the
-   namespace prefix. For historic reasons this is a **property** rather than an attribute.
- * Names will be replaced by fully qualified resolved names, which are instances of
-   `Node\Name\FullyQualified`.
- * Unqualified function and constant names inside a namespace cannot be statically resolved. Inside
-   a namespace `Foo`, a call to `strlen()` may either refer to the namespaced `\Foo\strlen()`, or
-   the global `\strlen()`. Because PHP-Parser does not have the necessary context to decide this,
-   such names are left unresolved. Additionally a `namespacedName` **attribute** is added to the
-   name node.
-
-The name resolver accepts an option array as the second argument, with the following default values:
-
-```php
-$nameResolver = new PhpParser\NodeVisitor\NameResolver(null, [
-    'preserveOriginalNames' => false,
-    'replaceNodes' => true,
-]);
-```
-
-If the `preserveOriginalNames` option is enabled, then the resolved (fully qualified) name will have
-an `originalName` attribute, which contains the unresolved name.
-
-If the `replaceNodes` option is disabled, then names will no longer be resolved in-place. Instead a
-`resolvedName` attribute will be added to each name, which contains the resolved (fully qualified)
-name. Once again, if an unqualified function or constant name cannot be resolved, then the
-`resolvedName` attribute will not be present, and instead a `namespacedName` attribute is added.
-
-The `replaceNodes` attribute is useful if you wish to perform modifications on the AST, as you
-probably do not wish the resoluting code to have fully resolved names as a side-effect.
-
-The NameContext
----------------
-
-The actual name resolution logic is implemented in the `NameContext` class, which has the following
-public API:
-
-```php
-class NameContext {
-    public function __construct(ErrorHandler $errorHandler);
-    public function startNamespace(Name $namespace = null);
-    public function addAlias(Name $name, string $aliasName, int $type, array $errorAttrs = []);
-
-    public function getNamespace();
-    public function getResolvedName(Name $name, int $type);
-    public function getResolvedClassName(Name $name) : Name;
-    public function getPossibleNames(string $name, int $type) : array;
-    public function getShortName(string $name, int $type) : Name;
-}
-```
-
-The `$type` parameters accept on of the `Stmt\Use_::TYPE_*` constants, which represent the three
-basic symbol types in PHP (functions, constants and everything else).
-
-Next to name resolution, the `NameContext` also supports the reverse operation of finding a short
-representation of a name given the current name resolution environment.
-
-The name context is intended to be used for name resolution operations outside the AST itself, such
-as class names inside doc comments. A visitor running in parallel with the name resolver can access
-the name context using `$nameResolver->getNameContext()`. Alternatively a visitor can use an
-independent context and explicitly feed `Namespace` and `Use` nodes to it.
\ No newline at end of file
diff --git a/vendor/nikic/php-parser/doc/component/Performance.markdown b/vendor/nikic/php-parser/doc/component/Performance.markdown
deleted file mode 100644
index 4281ce8cbe..0000000000
--- a/vendor/nikic/php-parser/doc/component/Performance.markdown
+++ /dev/null
@@ -1,65 +0,0 @@
-Performance
-===========
-
-Parsing is computationally expensive task, to which the PHP language is not very well suited.
-Nonetheless, there are a few things you can do to improve the performance of this library, which are
-described in the following.
-
-Xdebug
-------
-
-Running PHP with XDebug adds a lot of overhead, especially for code that performs many method calls.
-Just by loading XDebug (without enabling profiling or other more intrusive XDebug features), you
-can expect that code using PHP-Parser will be approximately *five times slower*.
-
-As such, you should make sure that XDebug is not loaded when using this library. Note that setting
-the `xdebug.default_enable=0` ini option does *not* disable XDebug. The *only* way to disable
-XDebug is to not load the extension in the first place.
-
-If you are building a command-line utility for use by developers (who often have XDebug enabled),
-you may want to consider automatically restarting PHP with XDebug unloaded. The
-[composer/xdebug-handler](https://github.com/composer/xdebug-handler) package can be used to do
-this.
-
-If you do run with XDebug, you may need to increase the `xdebug.max_nesting_level` option to a
-higher level, such as 3000. While the parser itself is recursion free, most other code working on
-the AST uses recursion and will generate an error if the value of this option is too low.
-
-Assertions
-----------
-
-Assertions should be disabled in a production context by setting `zend.assertions=-1` (or
-`zend.assertions=0` if set at runtime). The library currently doesn't make heavy use of assertions,
-but they are used in an increasing number of places.
-
-Object reuse
-------------
-
-Many objects in this project are designed for reuse. For example, one `Parser` object can be used to
-parse multiple files.
-
-When possible, objects should be reused rather than being newly instantiated for every use. Some
-objects have expensive initialization procedures, which will be unnecessarily repeated if the object
-is not reused. (Currently two objects with particularly expensive setup are lexers and pretty
-printers, though the details might change between versions of this library.)
-
-Garbage collection
-------------------
-
-A limitation in PHP's cyclic garbage collector may lead to major performance degradation when the
-active working set exceeds 10000 objects (or arrays). Especially when parsing very large files this
-limit is significantly exceeded and PHP will spend the majority of time performing unnecessary
-garbage collection attempts.
-
-Without GC, parsing time is roughly linear in the input size. With GC, this degenerates to quadratic
-runtime for large files. While the specifics may differ, as a rough guideline you may expect a 2.5x
-GC overhead for 500KB files and a 5x overhead for 1MB files.
-
-Because this a limitation in PHP's implementation, there is no easy way to work around this. If
-possible, you should avoid parsing very large files, as they will impact overall execution time
-disproportionally (and are usually generated anyway).
-
-Of course, you can also try to (temporarily) disable GC. By design the AST generated by PHP-Parser
-is cycle-free, so the AST itself will never cause leaks with GC disabled. However, other code
-(including for example the parser object itself) may hold cycles, so disabling of GC should be
-approached with care.
\ No newline at end of file
diff --git a/vendor/nikic/php-parser/doc/component/Pretty_printing.markdown b/vendor/nikic/php-parser/doc/component/Pretty_printing.markdown
deleted file mode 100644
index d6198e315f..0000000000
--- a/vendor/nikic/php-parser/doc/component/Pretty_printing.markdown
+++ /dev/null
@@ -1,96 +0,0 @@
-Pretty printing
-===============
-
-Pretty printing is the process of converting a syntax tree back to PHP code. In its basic mode of
-operation the pretty printer provided by this library will print the AST using a certain predefined
-code style and will discard (nearly) all formatting of the original code. Because programmers tend
-to be rather picky about their code formatting, this mode of operation is not very suitable for
-refactoring code, but can be used for automatically generated code, which is usually only read for
-debugging purposes.
-
-Basic usage
------------
-
-```php
-$stmts = $parser->parse($code);
-
-// MODIFY $stmts here
-
-$prettyPrinter = new PhpParser\PrettyPrinter\Standard;
-$newCode = $prettyPrinter->prettyPrintFile($stmts);
-```
-
-The pretty printer has three basic printing methods: `prettyPrint()`, `prettyPrintFile()` and
-`prettyPrintExpr()`. The one that is most commonly useful is `prettyPrintFile()`, which takes an
-array of statements and produces a full PHP file, including opening `<?php`.
-
-`prettyPrint()` also takes a statement array, but produces code which is valid inside an already
-open `<?php` context. Lastly, `prettyPrintExpr()` takes an `Expr` node and prints only a single
-expression.
-
-Customizing the formatting
---------------------------
-
-Apart from an `shortArraySyntax` option, the default pretty printer does not provide any
-functionality to customize the formatting of the generated code. The pretty printer does respect a
-number of `kind` attributes used by some notes (e.g., whether an integer should be printed as
-decimal, hexadecimal, etc), but there are no options to control brace placement or similar.
-
-If you want to make minor changes to the formatting, the easiest way is to extend the pretty printer
-and override the methods responsible for the node types you are interested in.
-
-If you want to have more fine-grained formatting control, the recommended method is to combine the
-default pretty printer with an existing library for code reformatting, such as
-[PHP-CS-Fixer](https://github.com/FriendsOfPHP/PHP-CS-Fixer).
-
-Formatting-preserving pretty printing
--------------------------------------
-
-> **Note:** This functionality is **experimental** and not yet complete.
-
-For automated code refactoring, migration and similar, you will usually only want to modify a small
-portion of the code and leave the remainder alone. The basic pretty printer is not suitable for
-this, because it will also reformat parts of the code which have not been modified.
-
-Since PHP-Parser 4.0, an experimental formatting-preserving pretty-printing mode is available, which
-attempts to preserve the formatting of code (those AST nodes that have not changed) and only reformat
-code which has been modified or newly inserted.
-
-Use of the formatting-preservation functionality requires some additional preparatory steps:
-
-```php
-use PhpParser\{Lexer, NodeTraverser, NodeVisitor, Parser, PrettyPrinter};
-
-$lexer = new Lexer\Emulative([
-    'usedAttributes' => [
-        'comments',
-        'startLine', 'endLine',
-        'startTokenPos', 'endTokenPos',
-    ],
-]);
-$parser = new Parser\Php7($lexer);
-
-$traverser = new NodeTraverser();
-$traverser->addVisitor(new NodeVisitor\CloningVisitor());
-
-$printer = new PrettyPrinter\Standard();
-
-$oldStmts = $parser->parse($code);
-$oldTokens = $lexer->getTokens();
-
-$newStmts = $traverser->traverse($oldStmts);
-
-// MODIFY $newStmts HERE
-
-$newCode = $printer->printFormatPreserving($newStmts, $oldStmts, $oldTokens);
-```
-
-If you make use of the name resolution functionality, you will likely want to disable the
-`replaceNodes` option. This will add resolved names as attributes, instead of directlying modifying
-the AST and causing spurious changes to the pretty printed code. For more information, see the
-[name resolution documentation](Name_resolution.markdown).
-
-This functionality is experimental and not yet fully implemented. It should not provide incorrect
-code, but it may sometimes reformat more code than necessary. Open issues are tracked in
-[issue #344](https://github.com/nikic/PHP-Parser/issues/344). If you encounter problems while using
-this functionality, please open an issue, so we know what to prioritize.
diff --git a/vendor/nikic/php-parser/doc/component/Walking_the_AST.markdown b/vendor/nikic/php-parser/doc/component/Walking_the_AST.markdown
deleted file mode 100644
index 69af1e832f..0000000000
--- a/vendor/nikic/php-parser/doc/component/Walking_the_AST.markdown
+++ /dev/null
@@ -1,337 +0,0 @@
-Walking the AST
-===============
-
-The most common way to work with the AST is by using a node traverser and one or more node visitors.
-As a basic example, the following code changes all literal integers in the AST into strings (e.g.,
-`42` becomes `'42'`.)
-
-```php
-use PhpParser\{Node, NodeTraverser, NodeVisitorAbstract};
-
-$traverser = new NodeTraverser;
-$traverser->addVisitor(new class extends NodeVisitorAbstract {
-    public function leaveNode(Node $node) {
-        if ($node instanceof Node\Scalar\LNumber) {
-            return new Node\Scalar\String_((string) $node->value);
-        }
-    }
-});
-
-$stmts = ...;
-$modifiedStmts = $traverser->traverse($stmts);
-```
-
-Node visitors
--------------
-
-Each node visitor implements an interface with following four methods:
-
-```php
-interface NodeVisitor {
-    public function beforeTraverse(array $nodes);
-    public function enterNode(Node $node);
-    public function leaveNode(Node $node);
-    public function afterTraverse(array $nodes);
-}
-```
-
-The `beforeTraverse()` and `afterTraverse()` methods are called before and after the traversal
-respectively, and are passed the entire AST. They can be used to perform any necessary state
-setup or cleanup.
-
-The `enterNode()` method is called when a node is first encountered, before its children are
-processed ("preorder"). The `leaveNode()` method is called after all children have been visited
-("postorder").
-
-For example, if we have the following excerpt of an AST
-
-```
-Expr_FuncCall(
-    name: Name(
-        parts: array(
-            0: printLine
-        )
-    )
-    args: array(
-        0: Arg(
-            value: Scalar_String(
-                value: Hello World!!!
-            )
-            byRef: false
-            unpack: false
-        )
-    )
-)
-```
-
-then the enter/leave methods will be called in the following order:
-
-```
-enterNode(Expr_FuncCall)
-enterNode(Name)
-leaveNode(Name)
-enterNode(Arg)
-enterNode(Scalar_String)
-leaveNode(Scalar_String)
-leaveNode(Arg)
-leaveNode(Expr_FuncCall)
-```
-
-A common pattern is that `enterNode` is used to collect some information and then `leaveNode`
-performs modifications based on that. At the time when `leaveNode` is called, all the code inside
-the node will have already been visited and necessary information collected.
-
-As you usually do not want to implement all four methods, it is recommended that you extend
-`NodeVisitorAbstract` instead of implementing the interface directly. The abstract class provides
-empty default implementations.
-
-Modifying the AST
------------------
-
-There are a number of ways in which the AST can be modified from inside a node visitor. The first
-and simplest is to simply change AST properties inside the visitor:
-
-```php
-public function leaveNode(Node $node) {
-    if ($node instanceof Node\Scalar\LNumber) {
-        // increment all integer literals
-        $node->value++;
-    }
-}
-```
-
-The second is to replace a node entirely by returning a new node:
-
-```php
-public function leaveNode(Node $node) {
-    if ($node instanceof Node\Expr\BinaryOp\BooleanAnd) {
-        // Convert all $a && $b expressions into !($a && $b)
-        return new Node\Expr\BooleanNot($node);
-    }
-}
-```
-
-Doing this is supported both inside enterNode and leaveNode. However, you have to be mindful about
-where you perform the replacement: If a node is replaced in enterNode, then the recursive traversal
-will also consider the children of the new node. If you aren't careful, this can lead to infinite
-recursion. For example, let's take the previous code sample and use enterNode instead:
-
-```php
-public function enterNode(Node $node) {
-    if ($node instanceof Node\Expr\BinaryOp\BooleanAnd) {
-        // Convert all $a && $b expressions into !($a && $b)
-        return new Node\Expr\BooleanNot($node);
-    }
-}
-```
-
-Now `$a && $b` will be replaced by `!($a && $b)`. Then the traverser will go into the first (and
-only) child of `!($a && $b)`, which is `$a && $b`. The transformation applies again and we end up
-with `!!($a && $b)`. This will continue until PHP hits the memory limit.
-
-Finally, two special replacement types are supported only by leaveNode. The first is removal of a
-node:
-
-```php
-public function leaveNode(Node $node) {
-    if ($node instanceof Node\Stmt\Return_) {
-        // Remove all return statements
-        return NodeTraverser::REMOVE_NODE;
-    }
-}
-```
-
-Node removal only works if the parent structure is an array. This means that usually it only makes
-sense to remove nodes of type `Node\Stmt`, as they always occur inside statement lists (and a few
-more node types like `Arg` or `Expr\ArrayItem`, which are also always part of lists).
-
-On the other hand, removing a `Node\Expr` does not make sense: If you have `$a * $b`, there is no
-meaningful way in which the `$a` part could be removed. If you want to remove an expression, you
-generally want to remove it together with a surrounding expression statement:
-
-```php
-public function leaveNode(Node $node) {
-    if ($node instanceof Node\Stmt\Expression
-        && $node->expr instanceof Node\Expr\FuncCall
-        && $node->expr->name instanceof Node\Name
-        && $node->expr->name->toString() === 'var_dump'
-    ) {
-        return NodeTraverser::REMOVE_NODE;
-    }
-}
-```
-
-This example will remove all calls to `var_dump()` which occur as expression statements. This means
-that `var_dump($a);` will be removed, but `if (var_dump($a))` will not be removed (and there is no
-obvious way in which it can be removed).
-
-Next to removing nodes, it is also possible to replace one node with multiple nodes. Again, this
-only works inside leaveNode and only if the parent structure is an array.
-
-```php
-public function leaveNode(Node $node) {
-    if ($node instanceof Node\Stmt\Return_ && $node->expr !== null) {
-        // Convert "return foo();" into "$retval = foo(); return $retval;"
-        $var = new Node\Expr\Variable('retval');
-        return [
-            new Node\Stmt\Expression(new Node\Expr\Assign($var, $node->expr)),
-            new Node\Stmt\Return_($var),
-        ];
-    }
-}
-```
-
-Short-circuiting traversal
---------------------------
-
-An AST can easily contain thousands of nodes, and traversing over all of them may be slow,
-especially if you have more than one visitor. In some cases, it is possible to avoid a full
-traversal.
-
-If you are looking for all class declarations in a file (and assuming you're not interested in
-anonymous classes), you know that once you've seen a class declaration, there is no point in also
-checking all it's child nodes, because PHP does not allow nesting classes. In this case, you can
-instruct the traverser to not recurse into the class node:
-
-```
-private $classes = [];
-public function enterNode(Node $node) {
-    if ($node instanceof Node\Stmt\Class_) {
-        $this->classes[] = $node;
-        return NodeTraverser::DONT_TRAVERSE_CHILDREN;
-    }
-}
-```
-
-Of course, this option is only available in enterNode, because it's already too late by the time
-leaveNode is reached.
-
-If you are only looking for one specific node, it is also possible to abort the traversal entirely
-after finding it. For example, if you are looking for the node of a class with a certain name (and
-discounting exotic cases like conditionally defining a class two times), you can stop traversal
-once you found it:
-
-```
-private $class = null;
-public function enterNode(Node $node) {
-    if ($node instanceof Node\Stmt\Class_ &&
-        $node->namespacedName->toString() === 'Foo\Bar\Baz'
-    ) {
-        $this->class = $node;
-        return NodeTraverser::STOP_TRAVERSAL;
-    }
-}
-```
-
-This works both in enterNode and leaveNode. Note that this particular case can also be more easily
-handled using a NodeFinder, which will be introduced below.
-
-Multiple visitors
------------------
-
-A single traverser can be used with multiple visitors:
-
-```php
-$traverser = new NodeTraverser;
-$traverser->addVisitor($visitorA);
-$traverser->addVisitor($visitorB);
-$stmts = $traverser->traverse($stmts);
-```
-
-It is important to understand that if a traverser is run with multiple visitors, the visitors will
-be interleaved. Given the following AST excerpt
-
-```
-Stmt_Return(
-    expr: Expr_Variable(
-        name: foobar
-    )
-)
-```
-
-the following method calls will be performed:
-
-```
-$visitorA->enterNode(Stmt_Return)
-$visitorB->enterNode(Stmt_Return)
-$visitorA->enterNode(Expr_Variable)
-$visitorB->enterNode(Expr_Variable)
-$visitorA->leaveNode(Expr_Variable)
-$visitorB->leaveNode(Expr_Variable)
-$visitorA->leaveNode(Stmt_Return)
-$visitorB->leaveNode(Stmt_Return)
-```
-
-That is, when visiting a node, enterNode and leaveNode will always be called for all visitors.
-Running multiple visitors in parallel improves performance, as the AST only has to be traversed
-once. However, it is not always possible to write visitors in a way that allows interleaved
-execution. In this case, you can always fall back to performing multiple traversals:
-
-```php
-$traverserA = new NodeTraverser;
-$traverserA->addVisitor($visitorA);
-$traverserB = new NodeTraverser;
-$traverserB->addVisitor($visitorB);
-$stmts = $traverserA->traverser($stmts);
-$stmts = $traverserB->traverser($stmts);
-```
-
-When using multiple visitors, it is important to understand how they interact with the various
-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.
- * If a visitor returns `REMOVE_NODE`, subsequent visitors will not see this node.
- * If a visitor returns an array of replacement nodes, subsequent visitors will see neither the node
-   that was replaced, nor the replacement nodes.
-
-Simple node finding
--------------------
-
-While the node visitor mechanism is very flexible, creating a node visitor can be overly cumbersome
-for minor tasks. For this reason a `NodeFinder` is provided, which can find AST nodes that either
-satisfy a certain callback, or which are instanced of a certain node type. A couple of examples are
-shown in the following:
-
-```php
-use PhpParser\{Node, NodeFinder};
-
-$nodeFinder = new NodeFinder;
-
-// Find all class nodes.
-$classes = $nodeFinder->findInstanceOf($stmts, Node\Stmt\Class_::class);
-
-// Find all classes that extend another class
-$extendingClasses = $nodeFinder->find($stmts, function(Node $node) {
-    return $node instanceof Node\Stmt\Class_
-        && $node->extends !== null;
-});
-
-// Find first class occuring in the AST. Returns null if no class exists.
-$class = $nodeFinder->findFirstInstanceOf($stmts, Node\Stmt\Class_::class);
-
-// Find first class that has name $name
-$class = $nodeFinder->findFirst($stmts, function(Node $node) use ($name) {
-    return $node instanceof Node\Stmt\Class_
-        && $node->resolvedName->toString() === $name;
-});
-```
-
-Internally, the `NodeFinder` also uses a node traverser. It only simplifies the interface for a
-common use case.
-
-Parent and sibling references
------------------------------
-
-The node visitor mechanism is somewhat rigid, in that it prescribes an order in which nodes should
-be accessed: From parents to children. However, it can often be convenient to operate in the
-reverse direction: When working on a node, you might want to check if the parent node satisfies a
-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.
diff --git a/vendor/nikic/php-parser/grammar/README.md b/vendor/nikic/php-parser/grammar/README.md
index 90988cf444..4bae11d826 100644
--- a/vendor/nikic/php-parser/grammar/README.md
+++ b/vendor/nikic/php-parser/grammar/README.md
@@ -21,8 +21,10 @@ applied to it:
 Building the parser
 ===================
 
-In order to rebuild the parser, you need [moriyoshi's fork of kmyacc](https://github.com/moriyoshi/kmyacc-forked).
-After you compiled/installed it, run the `rebuildParsers.php` script.
+Run `php grammar/rebuildParsers.php` to rebuild the parsers. Additional options:
 
-By default only the `Parser.php` is built. If you want to additionally emit debug symbols and create `y.output`, run the
-script with `--debug`. If you want to retain the preprocessed grammar pass `--keep-tmp-grammar`.
+ * The `KMYACC` environment variable can be used to specify an alternative `kmyacc` binary.
+   By default the `phpyacc` dev dependency will be used. To use the original `kmyacc`, you
+   need to compile [moriyoshi's fork](https://github.com/moriyoshi/kmyacc-forked).
+ * The `--debug` option enables emission of debug symbols and creates the `y.output` file.
+ * The `--keep-tmp-grammar` option preserves the preprocessed grammar file.
diff --git a/vendor/nikic/php-parser/grammar/php5.y b/vendor/nikic/php-parser/grammar/php5.y
index e775f2cab7..c7d245dc78 100644
--- a/vendor/nikic/php-parser/grammar/php5.y
+++ b/vendor/nikic/php-parser/grammar/php5.y
@@ -28,6 +28,7 @@ reserved_non_modifiers:
     | 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_FN
+    | T_MATCH
 ;
 
 semi_reserved:
@@ -48,13 +49,14 @@ reserved_non_modifiers_identifier:
       reserved_non_modifiers                                { $$ = Node\Identifier[$1]; }
 ;
 
-namespace_name_parts:
-      T_STRING                                              { init($1); }
-    | namespace_name_parts T_NS_SEPARATOR T_STRING          { push($1, $3); }
+namespace_name:
+      T_STRING                                              { $$ = Name[$1]; }
+    | T_NAME_QUALIFIED                                      { $$ = Name[$1]; }
 ;
 
-namespace_name:
-      namespace_name_parts                                  { $$ = Name[$1]; }
+legacy_namespace_name:
+      namespace_name                                        { $$ = $1; }
+    | T_NAME_FULLY_QUALIFIED                                { $$ = Name[substr($1, 1)]; }
 ;
 
 plain_variable:
@@ -90,16 +92,11 @@ use_type:
     | T_CONST                                               { $$ = Stmt\Use_::TYPE_CONSTANT; }
 ;
 
-/* Using namespace_name_parts here to avoid s/r conflict on T_NS_SEPARATOR */
 group_use_declaration:
-      T_USE use_type namespace_name_parts T_NS_SEPARATOR '{' unprefixed_use_declarations '}'
-          { $$ = Stmt\GroupUse[new Name($3, stackAttributes(#3)), $6, $2]; }
-    | T_USE use_type T_NS_SEPARATOR namespace_name_parts T_NS_SEPARATOR '{' unprefixed_use_declarations '}'
-          { $$ = Stmt\GroupUse[new Name($4, stackAttributes(#4)), $7, $2]; }
-    | T_USE namespace_name_parts T_NS_SEPARATOR '{' inline_use_declarations '}'
-          { $$ = Stmt\GroupUse[new Name($2, stackAttributes(#2)), $5, Stmt\Use_::TYPE_UNKNOWN]; }
-    | T_USE T_NS_SEPARATOR namespace_name_parts T_NS_SEPARATOR '{' inline_use_declarations '}'
-          { $$ = Stmt\GroupUse[new Name($3, stackAttributes(#3)), $6, Stmt\Use_::TYPE_UNKNOWN]; }
+      T_USE use_type legacy_namespace_name T_NS_SEPARATOR '{' unprefixed_use_declarations '}'
+          { $$ = Stmt\GroupUse[$3, $6, $2]; }
+    | T_USE legacy_namespace_name T_NS_SEPARATOR '{' inline_use_declarations '}'
+          { $$ = Stmt\GroupUse[$2, $5, Stmt\Use_::TYPE_UNKNOWN]; }
 ;
 
 unprefixed_use_declarations:
@@ -126,8 +123,10 @@ unprefixed_use_declaration:
 ;
 
 use_declaration:
-      unprefixed_use_declaration                            { $$ = $1; }
-    | T_NS_SEPARATOR unprefixed_use_declaration             { $$ = $2; }
+      legacy_namespace_name
+          { $$ = Stmt\UseUse[$1, null, Stmt\Use_::TYPE_UNKNOWN]; $this->checkUseUse($$, #1); }
+    | legacy_namespace_name T_AS identifier
+          { $$ = Stmt\UseUse[$1, $3, Stmt\Use_::TYPE_UNKNOWN]; $this->checkUseUse($$, #3); }
 ;
 
 inline_use_declaration:
@@ -733,9 +732,10 @@ class_name:
 ;
 
 name:
-      namespace_name_parts                                  { $$ = Name[$1]; }
-    | T_NS_SEPARATOR namespace_name_parts                   { $$ = Name\FullyQualified[$2]; }
-    | T_NAMESPACE T_NS_SEPARATOR namespace_name_parts       { $$ = Name\Relative[$3]; }
+      T_STRING                                              { $$ = Name[$1]; }
+    | T_NAME_QUALIFIED                                      { $$ = Name[$1]; }
+    | T_NAME_FULLY_QUALIFIED                                { $$ = Name\FullyQualified[substr($1, 1)]; }
+    | T_NAME_RELATIVE                                       { $$ = Name\Relative[substr($1, 10)]; }
 ;
 
 class_name_reference:
diff --git a/vendor/nikic/php-parser/grammar/php7.y b/vendor/nikic/php-parser/grammar/php7.y
index 23b193bbba..8add783387 100644
--- a/vendor/nikic/php-parser/grammar/php7.y
+++ b/vendor/nikic/php-parser/grammar/php7.y
@@ -28,6 +28,7 @@ reserved_non_modifiers:
     | 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_FN
+    | T_MATCH
 ;
 
 semi_reserved:
@@ -48,13 +49,20 @@ reserved_non_modifiers_identifier:
       reserved_non_modifiers                                { $$ = Node\Identifier[$1]; }
 ;
 
-namespace_name_parts:
-      T_STRING                                              { init($1); }
-    | namespace_name_parts T_NS_SEPARATOR T_STRING          { push($1, $3); }
+namespace_declaration_name:
+      T_STRING                                              { $$ = Name[$1]; }
+    | semi_reserved                                         { $$ = Name[$1]; }
+    | T_NAME_QUALIFIED                                      { $$ = Name[$1]; }
 ;
 
 namespace_name:
-      namespace_name_parts                                  { $$ = Name[$1]; }
+      T_STRING                                              { $$ = Name[$1]; }
+    | T_NAME_QUALIFIED                                      { $$ = Name[$1]; }
+;
+
+legacy_namespace_name:
+      namespace_name                                        { $$ = $1; }
+    | T_NAME_FULLY_QUALIFIED                                { $$ = Name[substr($1, 1)]; }
 ;
 
 plain_variable:
@@ -74,6 +82,31 @@ no_comma:
 optional_comma:
       /* empty */
     | ','
+;
+
+attribute_decl:
+      class_name                                            { $$ = Node\Attribute[$1, []]; }
+    | class_name argument_list                              { $$ = Node\Attribute[$1, $2]; }
+;
+
+attribute_group:
+      attribute_decl                                        { init($1); }
+    | attribute_group ',' attribute_decl                    { push($1, $3); }
+;
+
+attribute:
+      T_ATTRIBUTE attribute_group optional_comma ']'        { $$ = Node\AttributeGroup[$2]; }
+;
+
+attributes:
+      attribute                                             { init($1); }
+    | attributes attribute                                  { push($1, $2); }
+;
+
+optional_attributes:
+      /* empty */                                           { $$ = []; }
+    | attributes                                            { $$ = $1; }
+;
 
 top_statement:
       statement                                             { $$ = $1; }
@@ -81,11 +114,11 @@ top_statement:
     | class_declaration_statement                           { $$ = $1; }
     | T_HALT_COMPILER
           { $$ = Stmt\HaltCompiler[$this->lexer->handleHaltCompiler()]; }
-    | T_NAMESPACE namespace_name semi
+    | T_NAMESPACE namespace_declaration_name semi
           { $$ = Stmt\Namespace_[$2, null];
             $$->setAttribute('kind', Stmt\Namespace_::KIND_SEMICOLON);
             $this->checkNamespace($$); }
-    | T_NAMESPACE namespace_name '{' top_statement_list '}'
+    | T_NAMESPACE namespace_declaration_name '{' top_statement_list '}'
           { $$ = Stmt\Namespace_[$2, $4];
             $$->setAttribute('kind', Stmt\Namespace_::KIND_BRACED);
             $this->checkNamespace($$); }
@@ -104,16 +137,11 @@ use_type:
     | T_CONST                                               { $$ = Stmt\Use_::TYPE_CONSTANT; }
 ;
 
-/* Using namespace_name_parts here to avoid s/r conflict on T_NS_SEPARATOR */
 group_use_declaration:
-      T_USE use_type namespace_name_parts T_NS_SEPARATOR '{' unprefixed_use_declarations '}'
-          { $$ = Stmt\GroupUse[new Name($3, stackAttributes(#3)), $6, $2]; }
-    | T_USE use_type T_NS_SEPARATOR namespace_name_parts T_NS_SEPARATOR '{' unprefixed_use_declarations '}'
-          { $$ = Stmt\GroupUse[new Name($4, stackAttributes(#4)), $7, $2]; }
-    | T_USE namespace_name_parts T_NS_SEPARATOR '{' inline_use_declarations '}'
-          { $$ = Stmt\GroupUse[new Name($2, stackAttributes(#2)), $5, Stmt\Use_::TYPE_UNKNOWN]; }
-    | T_USE T_NS_SEPARATOR namespace_name_parts T_NS_SEPARATOR '{' inline_use_declarations '}'
-          { $$ = Stmt\GroupUse[new Name($3, stackAttributes(#3)), $6, Stmt\Use_::TYPE_UNKNOWN]; }
+      T_USE use_type legacy_namespace_name T_NS_SEPARATOR '{' unprefixed_use_declarations '}'
+          { $$ = Stmt\GroupUse[$3, $6, $2]; }
+    | T_USE legacy_namespace_name T_NS_SEPARATOR '{' inline_use_declarations '}'
+          { $$ = Stmt\GroupUse[$2, $5, Stmt\Use_::TYPE_UNKNOWN]; }
 ;
 
 unprefixed_use_declarations:
@@ -153,8 +181,10 @@ unprefixed_use_declaration:
 ;
 
 use_declaration:
-      unprefixed_use_declaration                            { $$ = $1; }
-    | T_NS_SEPARATOR unprefixed_use_declaration             { $$ = $2; }
+      legacy_namespace_name
+          { $$ = Stmt\UseUse[$1, null, Stmt\Use_::TYPE_UNKNOWN]; $this->checkUseUse($$, #1); }
+    | legacy_namespace_name T_AS identifier
+          { $$ = Stmt\UseUse[$1, $3, Stmt\Use_::TYPE_UNKNOWN]; $this->checkUseUse($$, #3); }
 ;
 
 inline_use_declaration:
@@ -232,9 +262,18 @@ non_empty_statement:
     | T_RETURN optional_expr semi                           { $$ = Stmt\Return_[$2]; }
     | T_GLOBAL global_var_list semi                         { $$ = Stmt\Global_[$2]; }
     | T_STATIC static_var_list semi                         { $$ = Stmt\Static_[$2]; }
-    | T_ECHO expr_list semi                                 { $$ = Stmt\Echo_[$2]; }
+    | T_ECHO expr_list_forbid_comma semi                    { $$ = Stmt\Echo_[$2]; }
     | T_INLINE_HTML                                         { $$ = Stmt\InlineHTML[$1]; }
-    | expr semi                                             { $$ = Stmt\Expression[$1]; }
+    | expr semi {
+        $e = $1;
+        if ($e instanceof Expr\Throw_) {
+            // For backwards-compatibility reasons, convert throw in statement position into
+            // Stmt\Throw_ rather than Stmt\Expression(Expr\Throw_).
+            $$ = Stmt\Throw_[$e->expr];
+        } else {
+            $$ = Stmt\Expression[$e];
+        }
+    }
     | T_UNSET '(' variables_list ')' semi                   { $$ = Stmt\Unset_[$3]; }
     | T_FOREACH '(' expr T_AS foreach_variable ')' foreach_statement
           { $$ = Stmt\Foreach_[$3, $5[0], ['keyVar' => null, 'byRef' => $5[1], 'stmts' => $7]]; }
@@ -245,7 +284,6 @@ non_empty_statement:
     | T_DECLARE '(' declare_list ')' declare_statement      { $$ = Stmt\Declare_[$3, $5]; }
     | T_TRY '{' inner_statement_list '}' catches optional_finally
           { $$ = Stmt\TryCatch[$3, $5, $6]; $this->checkTryCatch($$); }
-    | T_THROW expr semi                                     { $$ = Stmt\Throw_[$2]; }
     | T_GOTO identifier semi                                { $$ = Stmt\Goto_[$2]; }
     | identifier ':'                                        { $$ = Stmt\Label[$1]; }
     | error                                                 { $$ = array(); /* means: no statement */ }
@@ -269,7 +307,7 @@ name_union:
 ;
 
 catch:
-    T_CATCH '(' name_union plain_variable ')' '{' inner_statement_list '}'
+    T_CATCH '(' name_union optional_plain_variable ')' '{' inner_statement_list '}'
         { $$ = Stmt\Catch_[$3, $4, $7]; }
 ;
 
@@ -303,19 +341,24 @@ block_or_error:
 ;
 
 function_declaration_statement:
-    T_FUNCTION optional_ref identifier '(' parameter_list ')' optional_return_type block_or_error
-        { $$ = Stmt\Function_[$3, ['byRef' => $2, 'params' => $5, 'returnType' => $7, 'stmts' => $8]]; }
+      T_FUNCTION optional_ref identifier '(' parameter_list ')' optional_return_type block_or_error
+          { $$ = Stmt\Function_[$3, ['byRef' => $2, 'params' => $5, 'returnType' => $7, 'stmts' => $8, 'attrGroups' => []]]; }
+    | attributes T_FUNCTION optional_ref identifier '(' parameter_list ')' optional_return_type block_or_error
+          { $$ = Stmt\Function_[$4, ['byRef' => $3, 'params' => $6, 'returnType' => $8, 'stmts' => $9, 'attrGroups' => $1]]; }
 ;
 
 class_declaration_statement:
       class_entry_type identifier extends_from implements_list '{' class_statement_list '}'
-          { $$ = Stmt\Class_[$2, ['type' => $1, 'extends' => $3, 'implements' => $4, 'stmts' => $6]];
+          { $$ = Stmt\Class_[$2, ['type' => $1, 'extends' => $3, 'implements' => $4, 'stmts' => $6, 'attrGroups' => []]];
             $this->checkClass($$, #2); }
-    | T_INTERFACE identifier interface_extends_list '{' class_statement_list '}'
-          { $$ = Stmt\Interface_[$2, ['extends' => $3, 'stmts' => $5]];
-            $this->checkInterface($$, #2); }
-    | T_TRAIT identifier '{' class_statement_list '}'
-          { $$ = Stmt\Trait_[$2, ['stmts' => $4]]; }
+    | attributes class_entry_type identifier extends_from implements_list '{' class_statement_list '}'
+          { $$ = Stmt\Class_[$3, ['type' => $2, 'extends' => $4, 'implements' => $5, 'stmts' => $7, 'attrGroups' => $1]];
+            $this->checkClass($$, #3); }
+    | optional_attributes T_INTERFACE identifier interface_extends_list '{' class_statement_list '}'
+          { $$ = Stmt\Interface_[$3, ['extends' => $4, 'stmts' => $6, 'attrGroups' => $1]];
+            $this->checkInterface($$, #3); }
+    | optional_attributes T_TRAIT identifier '{' class_statement_list '}'
+          { $$ = Stmt\Trait_[$3, ['stmts' => $5, 'attrGroups' => $1]]; }
 ;
 
 class_entry_type:
@@ -399,6 +442,25 @@ case_separator:
     | ';'
 ;
 
+match:
+      T_MATCH '(' expr ')' '{' match_arm_list '}'           { $$ = Expr\Match_[$3, $6]; }
+;
+
+match_arm_list:
+      /* empty */                                           { $$ = []; }
+    | non_empty_match_arm_list optional_comma               { $$ = $1; }
+;
+
+non_empty_match_arm_list:
+      match_arm                                             { init($1); }
+    | non_empty_match_arm_list ',' match_arm                { push($1, $3); }
+;
+
+match_arm:
+      expr_list_allow_comma T_DOUBLE_ARROW expr             { $$ = Node\MatchArm[$1, $3]; }
+    | T_DEFAULT optional_comma T_DOUBLE_ARROW expr          { $$ = Node\MatchArm[null, $4]; }
+;
+
 while_statement:
       statement                                             { $$ = toArray($1); }
     | ':' inner_statement_list T_ENDWHILE ';'               { $$ = $2; }
@@ -440,7 +502,7 @@ foreach_variable:
 ;
 
 parameter_list:
-      non_empty_parameter_list no_comma                     { $$ = $1; }
+      non_empty_parameter_list optional_comma               { $$ = $1; }
     | /* empty */                                           { $$ = array(); }
 ;
 
@@ -449,29 +511,60 @@ non_empty_parameter_list:
     | non_empty_parameter_list ',' parameter                { push($1, $3); }
 ;
 
+optional_visibility_modifier:
+      /* empty */               { $$ = 0; }
+    | T_PUBLIC                  { $$ = Stmt\Class_::MODIFIER_PUBLIC; }
+    | T_PROTECTED               { $$ = Stmt\Class_::MODIFIER_PROTECTED; }
+    | T_PRIVATE                 { $$ = Stmt\Class_::MODIFIER_PRIVATE; }
+;
+
 parameter:
-      optional_type optional_ref optional_ellipsis plain_variable
-          { $$ = Node\Param[$4, null, $1, $2, $3]; $this->checkParam($$); }
-    | optional_type optional_ref optional_ellipsis plain_variable '=' expr
-          { $$ = Node\Param[$4, $6, $1, $2, $3]; $this->checkParam($$); }
-    | optional_type optional_ref optional_ellipsis error
-          { $$ = Node\Param[Expr\Error[], null, $1, $2, $3]; }
+      optional_attributes optional_visibility_modifier optional_type_without_static optional_ref optional_ellipsis plain_variable
+          { $$ = new Node\Param($6, null, $3, $4, $5, attributes(), $2, $1);
+            $this->checkParam($$); }
+    | optional_attributes optional_visibility_modifier optional_type_without_static optional_ref optional_ellipsis plain_variable '=' expr
+          { $$ = new Node\Param($6, $8, $3, $4, $5, attributes(), $2, $1);
+            $this->checkParam($$); }
+    | optional_attributes optional_visibility_modifier optional_type_without_static optional_ref optional_ellipsis error
+          { $$ = new Node\Param(Expr\Error[], null, $3, $4, $5, attributes(), $2, $1); }
 ;
 
 type_expr:
       type                                                  { $$ = $1; }
     | '?' type                                              { $$ = Node\NullableType[$2]; }
+    | union_type                                            { $$ = Node\UnionType[$1]; }
 ;
 
 type:
+      type_without_static                                   { $$ = $1; }
+    | T_STATIC                                              { $$ = Node\Name['static']; }
+;
+
+type_without_static:
       name                                                  { $$ = $this->handleBuiltinTypes($1); }
     | T_ARRAY                                               { $$ = Node\Identifier['array']; }
     | T_CALLABLE                                            { $$ = Node\Identifier['callable']; }
 ;
 
-optional_type:
+union_type:
+      type '|' type                                         { init($1, $3); }
+    | union_type '|' type                                   { push($1, $3); }
+;
+
+union_type_without_static:
+      type_without_static '|' type_without_static           { init($1, $3); }
+    | union_type_without_static '|' type_without_static     { push($1, $3); }
+;
+
+type_expr_without_static:
+      type_without_static                                   { $$ = $1; }
+    | '?' type_without_static                               { $$ = Node\NullableType[$2]; }
+    | union_type_without_static                             { $$ = Node\UnionType[$1]; }
+;
+
+optional_type_without_static:
       /* empty */                                           { $$ = null; }
-    | type_expr                                             { $$ = $1; }
+    | type_expr_without_static                              { $$ = $1; }
 ;
 
 optional_return_type:
@@ -494,6 +587,8 @@ argument:
       expr                                                  { $$ = Node\Arg[$1, false, false]; }
     | '&' variable                                          { $$ = Node\Arg[$2, true, false]; }
     | T_ELLIPSIS expr                                       { $$ = Node\Arg[$2, false, true]; }
+    | identifier_ex ':' expr
+          { $$ = new Node\Arg($3, false, false, attributes(), $1); }
 ;
 
 global_var_list:
@@ -535,14 +630,15 @@ class_statement_list:
 ;
 
 class_statement:
-      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
-          { $$ = Stmt\ClassMethod[$4, ['type' => $1, 'byRef' => $3, 'params' => $6, 'returnType' => $8, 'stmts' => $9]];
-            $this->checkClassMethod($$, #1); }
+      optional_attributes variable_modifiers optional_type_without_static property_declaration_list semi
+          { $$ = new Stmt\Property($2, $4, attributes(), $3, $1);
+            $this->checkProperty($$, #2); }
+    | optional_attributes method_modifiers T_CONST class_const_list semi
+          { $$ = new Stmt\ClassConst($4, $2, attributes(), $1);
+            $this->checkClassConst($$, #2); }
+    | optional_attributes method_modifiers T_FUNCTION optional_ref identifier_ex '(' parameter_list ')' optional_return_type method_body
+          { $$ = Stmt\ClassMethod[$5, ['type' => $2, 'byRef' => $4, 'params' => $7, 'returnType' => $9, 'stmts' => $10, 'attrGroups' => $1]];
+            $this->checkClassMethod($$, #2); }
     | T_USE class_name_list trait_adaptations               { $$ = Stmt\TraitUse[$2, $3]; }
     | error                                                 { $$ = null; /* will be skipped */ }
 ;
@@ -626,10 +722,14 @@ property_declaration:
     | property_decl_name '=' expr                           { $$ = Stmt\PropertyProperty[$1, $3]; }
 ;
 
-expr_list:
+expr_list_forbid_comma:
       non_empty_expr_list no_comma                          { $$ = $1; }
 ;
 
+expr_list_allow_comma:
+      non_empty_expr_list optional_comma                    { $$ = $1; }
+;
+
 non_empty_expr_list:
       non_empty_expr_list ',' expr                          { push($1, $3); }
     | expr                                                  { init($1); }
@@ -637,7 +737,7 @@ non_empty_expr_list:
 
 for_expr:
       /* empty */                                           { $$ = array(); }
-    | expr_list                                             { $$ = $1; }
+    | expr_list_forbid_comma                                { $$ = $1; }
 ;
 
 expr:
@@ -647,6 +747,7 @@ expr:
     | variable '=' expr                                     { $$ = Expr\Assign[$1, $3]; }
     | variable '=' '&' variable                             { $$ = Expr\AssignRef[$1, $4]; }
     | new_expr                                              { $$ = $1; }
+    | match                                                 { $$ = $1; }
     | T_CLONE expr                                          { $$ = Expr\Clone_[$2]; }
     | variable T_PLUS_EQUAL expr                            { $$ = Expr\AssignOp\Plus      [$1, $3]; }
     | variable T_MINUS_EQUAL expr                           { $$ = Expr\AssignOp\Minus     [$1, $3]; }
@@ -700,7 +801,7 @@ expr:
     | expr '?' expr ':' expr                                { $$ = Expr\Ternary[$1, $3,   $5]; }
     | expr '?' ':' expr                                     { $$ = Expr\Ternary[$1, null, $4]; }
     | expr T_COALESCE expr                                  { $$ = Expr\BinaryOp\Coalesce[$1, $3]; }
-    | T_ISSET '(' variables_list ')'                        { $$ = Expr\Isset_[$3]; }
+    | T_ISSET '(' expr_list_allow_comma ')'                 { $$ = Expr\Isset_[$3]; }
     | T_EMPTY '(' expr ')'                                  { $$ = Expr\Empty_[$3]; }
     | T_INCLUDE expr                                        { $$ = Expr\Include_[$2, Expr\Include_::TYPE_INCLUDE]; }
     | T_INCLUDE_ONCE expr                                   { $$ = Expr\Include_[$2, Expr\Include_::TYPE_INCLUDE_ONCE]; }
@@ -729,23 +830,30 @@ 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_THROW expr                                          { $$ = Expr\Throw_[$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]]; }
+          { $$ = Expr\ArrowFunction[['static' => false, 'byRef' => $2, 'params' => $4, 'returnType' => $6, 'expr' => $8, 'attrGroups' => []]]; }
     | 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]]; }
-    | T_STATIC T_FUNCTION optional_ref '(' parameter_list ')' lexical_vars optional_return_type
-      block_or_error
-          { $$ = Expr\Closure[['static' => true, 'byRef' => $3, 'params' => $5, 'uses' => $7, 'returnType' => $8, 'stmts' => $9]]; }
+          { $$ = Expr\ArrowFunction[['static' => true, 'byRef' => $3, 'params' => $5, 'returnType' => $7, 'expr' => $9, 'attrGroups' => []]]; }
+    | 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, 'attrGroups' => []]]; }
+    | T_STATIC T_FUNCTION optional_ref '(' parameter_list ')' lexical_vars optional_return_type       block_or_error
+          { $$ = Expr\Closure[['static' => true, 'byRef' => $3, 'params' => $5, 'uses' => $7, 'returnType' => $8, 'stmts' => $9, 'attrGroups' => []]]; }
+
+    | attributes T_FN optional_ref '(' parameter_list ')' optional_return_type T_DOUBLE_ARROW expr
+          { $$ = Expr\ArrowFunction[['static' => false, 'byRef' => $3, 'params' => $5, 'returnType' => $7, 'expr' => $9, 'attrGroups' => $1]]; }
+    | attributes T_STATIC T_FN optional_ref '(' parameter_list ')' optional_return_type T_DOUBLE_ARROW expr
+          { $$ = Expr\ArrowFunction[['static' => true, 'byRef' => $4, 'params' => $6, 'returnType' => $8, 'expr' => $10, 'attrGroups' => $1]]; }
+    | attributes T_FUNCTION optional_ref '(' parameter_list ')' lexical_vars optional_return_type block_or_error
+          { $$ = Expr\Closure[['static' => false, 'byRef' => $3, 'params' => $5, 'uses' => $7, 'returnType' => $8, 'stmts' => $9, 'attrGroups' => $1]]; }
+    | attributes T_STATIC T_FUNCTION optional_ref '(' parameter_list ')' lexical_vars optional_return_type       block_or_error
+          { $$ = Expr\Closure[['static' => true, 'byRef' => $4, 'params' => $6, 'uses' => $8, 'returnType' => $9, 'stmts' => $10, 'attrGroups' => $1]]; }
 ;
 
 anonymous_class:
-      T_CLASS ctor_arguments extends_from implements_list '{' class_statement_list '}'
-          { $$ = array(Stmt\Class_[null, ['type' => 0, 'extends' => $3, 'implements' => $4, 'stmts' => $6]], $2);
+      optional_attributes T_CLASS ctor_arguments extends_from implements_list '{' class_statement_list '}'
+          { $$ = array(Stmt\Class_[null, ['type' => 0, 'extends' => $4, 'implements' => $5, 'stmts' => $7, 'attrGroups' => $1]], $3);
             $this->checkClass($$[0], -1); }
 ;
 
@@ -761,7 +869,7 @@ lexical_vars:
 ;
 
 lexical_var_list:
-      non_empty_lexical_var_list no_comma                   { $$ = $1; }
+      non_empty_lexical_var_list optional_comma             { $$ = $1; }
 ;
 
 non_empty_lexical_var_list:
@@ -786,20 +894,22 @@ class_name:
 ;
 
 name:
-      namespace_name_parts                                  { $$ = Name[$1]; }
-    | T_NS_SEPARATOR namespace_name_parts                   { $$ = Name\FullyQualified[$2]; }
-    | T_NAMESPACE T_NS_SEPARATOR namespace_name_parts       { $$ = Name\Relative[$3]; }
+      T_STRING                                              { $$ = Name[$1]; }
+    | T_NAME_QUALIFIED                                      { $$ = Name[$1]; }
+    | T_NAME_FULLY_QUALIFIED                                { $$ = Name\FullyQualified[substr($1, 1)]; }
+    | T_NAME_RELATIVE                                       { $$ = Name\Relative[substr($1, 10)]; }
 ;
 
 class_name_reference:
       class_name                                            { $$ = $1; }
     | new_variable                                          { $$ = $1; }
+    | '(' expr ')'                                          { $$ = $2; }
     | error                                                 { $$ = Expr\Error[]; $this->errorState = 2; }
 ;
 
 class_name_or_var:
       class_name                                            { $$ = $1; }
-    | dereferencable                                        { $$ = $1; }
+    | fully_dereferencable                                  { $$ = $1; }
 ;
 
 exit_expr:
@@ -821,9 +931,20 @@ ctor_arguments:
 
 constant:
       name                                                  { $$ = Expr\ConstFetch[$1]; }
-    | class_name_or_var T_PAAMAYIM_NEKUDOTAYIM identifier_ex
+    | T_LINE                                                { $$ = Scalar\MagicConst\Line[]; }
+    | T_FILE                                                { $$ = Scalar\MagicConst\File[]; }
+    | T_DIR                                                 { $$ = Scalar\MagicConst\Dir[]; }
+    | T_CLASS_C                                             { $$ = Scalar\MagicConst\Class_[]; }
+    | T_TRAIT_C                                             { $$ = Scalar\MagicConst\Trait_[]; }
+    | T_METHOD_C                                            { $$ = Scalar\MagicConst\Method[]; }
+    | T_FUNC_C                                              { $$ = Scalar\MagicConst\Function_[]; }
+    | T_NS_C                                                { $$ = Scalar\MagicConst\Namespace_[]; }
+;
+
+class_constant:
+      class_name_or_var T_PAAMAYIM_NEKUDOTAYIM identifier_ex
           { $$ = Expr\ClassConstFetch[$1, $3]; }
-    /* We interpret and isolated FOO:: as an unfinished class constant fetch. It could also be
+    /* We interpret an isolated FOO:: as an unfinished class constant fetch. It could also be
        an unfinished static property fetch or unfinished scoped call. */
     | class_name_or_var T_PAAMAYIM_NEKUDOTAYIM error
           { $$ = Expr\ClassConstFetch[$1, new Expr\Error(stackAttributes(#3))]; $this->errorState = 2; }
@@ -843,28 +964,21 @@ dereferencable_scalar:
     | T_CONSTANT_ENCAPSED_STRING
           { $attrs = attributes(); $attrs['kind'] = strKind($1);
             $$ = new Scalar\String_(Scalar\String_::parse($1), $attrs); }
+    | '"' encaps_list '"'
+          { $attrs = attributes(); $attrs['kind'] = Scalar\String_::KIND_DOUBLE_QUOTED;
+            parseEncapsed($2, '"', true); $$ = new Scalar\Encapsed($2, $attrs); }
 ;
 
 scalar:
       T_LNUMBER                                             { $$ = $this->parseLNumber($1, attributes()); }
     | T_DNUMBER                                             { $$ = Scalar\DNumber[Scalar\DNumber::parse($1)]; }
-    | T_LINE                                                { $$ = Scalar\MagicConst\Line[]; }
-    | T_FILE                                                { $$ = Scalar\MagicConst\File[]; }
-    | T_DIR                                                 { $$ = Scalar\MagicConst\Dir[]; }
-    | T_CLASS_C                                             { $$ = Scalar\MagicConst\Class_[]; }
-    | T_TRAIT_C                                             { $$ = Scalar\MagicConst\Trait_[]; }
-    | T_METHOD_C                                            { $$ = Scalar\MagicConst\Method[]; }
-    | T_FUNC_C                                              { $$ = Scalar\MagicConst\Function_[]; }
-    | T_NS_C                                                { $$ = Scalar\MagicConst\Namespace_[]; }
     | dereferencable_scalar                                 { $$ = $1; }
     | constant                                              { $$ = $1; }
+    | class_constant                                        { $$ = $1; }
     | T_START_HEREDOC T_ENCAPSED_AND_WHITESPACE T_END_HEREDOC
           { $$ = $this->parseDocString($1, $2, $3, attributes(), stackAttributes(#3), true); }
     | T_START_HEREDOC T_END_HEREDOC
           { $$ = $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
           { $$ = $this->parseDocString($1, $2, $3, attributes(), stackAttributes(#3), true); }
 ;
@@ -874,10 +988,16 @@ optional_expr:
     | expr                                                  { $$ = $1; }
 ;
 
-dereferencable:
+fully_dereferencable:
       variable                                              { $$ = $1; }
     | '(' expr ')'                                          { $$ = $2; }
     | dereferencable_scalar                                 { $$ = $1; }
+    | class_constant                                        { $$ = $1; }
+;
+
+array_object_dereferencable:
+      fully_dereferencable                                  { $$ = $1; }
+    | constant                                              { $$ = $1; }
 ;
 
 callable_expr:
@@ -888,18 +1008,27 @@ callable_expr:
 
 callable_variable:
       simple_variable                                       { $$ = Expr\Variable[$1]; }
-    | dereferencable '[' optional_expr ']'                  { $$ = Expr\ArrayDimFetch[$1, $3]; }
-    | constant '[' optional_expr ']'                        { $$ = Expr\ArrayDimFetch[$1, $3]; }
-    | dereferencable '{' expr '}'                           { $$ = Expr\ArrayDimFetch[$1, $3]; }
+    | array_object_dereferencable '[' optional_expr ']'     { $$ = Expr\ArrayDimFetch[$1, $3]; }
+    | array_object_dereferencable '{' expr '}'              { $$ = Expr\ArrayDimFetch[$1, $3]; }
     | function_call                                         { $$ = $1; }
-    | dereferencable T_OBJECT_OPERATOR property_name argument_list
+    | array_object_dereferencable T_OBJECT_OPERATOR property_name argument_list
           { $$ = Expr\MethodCall[$1, $3, $4]; }
+    | array_object_dereferencable T_NULLSAFE_OBJECT_OPERATOR property_name argument_list
+          { $$ = Expr\NullsafeMethodCall[$1, $3, $4]; }
+;
+
+optional_plain_variable:
+      /* empty */                                           { $$ = null; }
+    | plain_variable                                        { $$ = $1; }
 ;
 
 variable:
       callable_variable                                     { $$ = $1; }
     | static_member                                         { $$ = $1; }
-    | dereferencable T_OBJECT_OPERATOR property_name        { $$ = Expr\PropertyFetch[$1, $3]; }
+    | array_object_dereferencable T_OBJECT_OPERATOR property_name
+          { $$ = Expr\PropertyFetch[$1, $3]; }
+    | array_object_dereferencable T_NULLSAFE_OBJECT_OPERATOR property_name
+          { $$ = Expr\NullsafePropertyFetch[$1, $3]; }
 ;
 
 simple_variable:
@@ -924,6 +1053,7 @@ new_variable:
     | new_variable '[' optional_expr ']'                    { $$ = Expr\ArrayDimFetch[$1, $3]; }
     | new_variable '{' expr '}'                             { $$ = Expr\ArrayDimFetch[$1, $3]; }
     | new_variable T_OBJECT_OPERATOR property_name          { $$ = Expr\PropertyFetch[$1, $3]; }
+    | new_variable T_NULLSAFE_OBJECT_OPERATOR property_name { $$ = Expr\NullsafePropertyFetch[$1, $3]; }
     | class_name T_PAAMAYIM_NEKUDOTAYIM static_member_prop_name
           { $$ = Expr\StaticPropertyFetch[$1, $3]; }
     | new_variable T_PAAMAYIM_NEKUDOTAYIM static_member_prop_name
@@ -932,34 +1062,19 @@ new_variable:
 
 member_name:
       identifier_ex                                         { $$ = $1; }
-    | '{' expr '}'	                                        { $$ = $2; }
-    | simple_variable	                                    { $$ = Expr\Variable[$1]; }
+    | '{' expr '}'                                          { $$ = $2; }
+    | simple_variable                                       { $$ = Expr\Variable[$1]; }
 ;
 
 property_name:
       identifier                                            { $$ = $1; }
-    | '{' expr '}'	                                        { $$ = $2; }
-    | simple_variable	                                    { $$ = Expr\Variable[$1]; }
+    | '{' expr '}'                                          { $$ = $2; }
+    | simple_variable                                       { $$ = Expr\Variable[$1]; }
     | error                                                 { $$ = Expr\Error[]; $this->errorState = 2; }
 ;
 
 list_expr:
-      T_LIST '(' list_expr_elements ')'                     { $$ = Expr\List_[$3]; }
-;
-
-list_expr_elements:
-      list_expr_elements ',' list_expr_element              { push($1, $3); }
-    | list_expr_element                                     { init($1); }
-;
-
-list_expr_element:
-      variable                                              { $$ = Expr\ArrayItem[$1, null, false]; }
-    | '&' variable                                          { $$ = Expr\ArrayItem[$2, null, true]; }
-    | list_expr                                             { $$ = Expr\ArrayItem[$1, null, false]; }
-    | expr T_DOUBLE_ARROW variable                          { $$ = Expr\ArrayItem[$3, $1, false]; }
-    | expr T_DOUBLE_ARROW '&' variable                      { $$ = Expr\ArrayItem[$4, $1, true]; }
-    | expr T_DOUBLE_ARROW list_expr                         { $$ = Expr\ArrayItem[$3, $1, false]; }
-    | /* empty */                                           { $$ = null; }
+      T_LIST '(' inner_array_pair_list ')'                  { $$ = Expr\List_[$3]; }
 ;
 
 array_pair_list:
@@ -979,10 +1094,12 @@ inner_array_pair_list:
 ;
 
 array_pair:
-      expr T_DOUBLE_ARROW expr                              { $$ = Expr\ArrayItem[$3, $1,   false]; }
-    | expr                                                  { $$ = Expr\ArrayItem[$1, null, false]; }
-    | expr T_DOUBLE_ARROW '&' variable                      { $$ = Expr\ArrayItem[$4, $1,   true]; }
+      expr                                                  { $$ = Expr\ArrayItem[$1, null, false]; }
     | '&' variable                                          { $$ = Expr\ArrayItem[$2, null, true]; }
+    | list_expr                                             { $$ = Expr\ArrayItem[$1, null, false]; }
+    | expr T_DOUBLE_ARROW expr                              { $$ = Expr\ArrayItem[$3, $1,   false]; }
+    | expr T_DOUBLE_ARROW '&' variable                      { $$ = Expr\ArrayItem[$4, $1,   true]; }
+    | expr T_DOUBLE_ARROW list_expr                         { $$ = Expr\ArrayItem[$3, $1,   false]; }
     | T_ELLIPSIS expr                                       { $$ = Expr\ArrayItem[$2, null, false, attributes(), true]; }
     | /* empty */                                           { $$ = null; }
 ;
@@ -1006,6 +1123,7 @@ encaps_var:
       plain_variable                                        { $$ = $1; }
     | plain_variable '[' encaps_var_offset ']'              { $$ = Expr\ArrayDimFetch[$1, $3]; }
     | plain_variable T_OBJECT_OPERATOR identifier           { $$ = Expr\PropertyFetch[$1, $3]; }
+    | plain_variable T_NULLSAFE_OBJECT_OPERATOR identifier  { $$ = Expr\NullsafePropertyFetch[$1, $3]; }
     | T_DOLLAR_OPEN_CURLY_BRACES expr '}'                   { $$ = Expr\Variable[$2]; }
     | T_DOLLAR_OPEN_CURLY_BRACES T_STRING_VARNAME '}'       { $$ = Expr\Variable[$2]; }
     | T_DOLLAR_OPEN_CURLY_BRACES encaps_str_varname '[' expr ']' '}'
diff --git a/vendor/nikic/php-parser/grammar/rebuildParsers.php b/vendor/nikic/php-parser/grammar/rebuildParsers.php
index b913cdacaf..88a53f1334 100644
--- a/vendor/nikic/php-parser/grammar/rebuildParsers.php
+++ b/vendor/nikic/php-parser/grammar/rebuildParsers.php
@@ -13,13 +13,10 @@
 $resultDir = __DIR__ . '/../lib/PhpParser/Parser';
 $tokensResultsFile = $resultDir . '/Tokens.php';
 
-// 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';
+$kmyacc = getenv('KMYACC');
+if (!$kmyacc) {
+    // Use phpyacc from dev dependencies by default.
+    $kmyacc = __DIR__ . '/../vendor/bin/phpyacc';
 }
 
 $options = array_flip($argv);
@@ -62,8 +59,7 @@
     $additionalArgs = $optionDebug ? '-t -v' : '';
 
     echo "Building $name parser.\n";
-    $output = trim(shell_exec("$kmyacc $additionalArgs -l -m $skeletonFile -p $name $tmpGrammarFile 2>&1"));
-    echo "Output: \"$output\"\n";
+    $output = execCmd("$kmyacc $additionalArgs -m $skeletonFile -p $name $tmpGrammarFile");
 
     $resultCode = file_get_contents($tmpResultFile);
     $resultCode = removeTrailingWhitespace($resultCode);
@@ -73,8 +69,7 @@
     unlink($tmpResultFile);
 
     echo "Building token definition.\n";
-    $output = trim(shell_exec("$kmyacc -l -m $tokensTemplate $tmpGrammarFile 2>&1"));
-    assert($output === '');
+    $output = execCmd("$kmyacc -m $tokensTemplate $tmpGrammarFile");
     rename($tmpResultFile, $tokensResultsFile);
 
     if (!$optionKeepTmpGrammar) {
@@ -122,28 +117,28 @@ function($matches) {
                 $matches['args']
             );
 
-            if ('attributes' == $name) {
+            if ('attributes' === $name) {
                 assertArgs(0, $args, $name);
                 return '$this->startAttributeStack[#1] + $this->endAttributes';
             }
 
-            if ('stackAttributes' == $name) {
+            if ('stackAttributes' === $name) {
                 assertArgs(1, $args, $name);
                 return '$this->startAttributeStack[' . $args[0] . ']'
                      . ' + $this->endAttributeStack[' . $args[0] . ']';
             }
 
-            if ('init' == $name) {
+            if ('init' === $name) {
                 return '$$ = array(' . implode(', ', $args) . ')';
             }
 
-            if ('push' == $name) {
+            if ('push' === $name) {
                 assertArgs(2, $args, $name);
 
                 return $args[0] . '[] = ' . $args[1] . '; $$ = ' . $args[0];
             }
 
-            if ('pushNormalizing' == $name) {
+            if ('pushNormalizing' === $name) {
                 assertArgs(2, $args, $name);
 
                 return 'if (is_array(' . $args[1] . ')) { $$ = array_merge(' . $args[0] . ', ' . $args[1] . '); }'
@@ -156,20 +151,20 @@ function($matches) {
                 return 'is_array(' . $args[0] . ') ? ' . $args[0] . ' : array(' . $args[0] . ')';
             }
 
-            if ('parseVar' == $name) {
+            if ('parseVar' === $name) {
                 assertArgs(1, $args, $name);
 
                 return 'substr(' . $args[0] . ', 1)';
             }
 
-            if ('parseEncapsed' == $name) {
+            if ('parseEncapsed' === $name) {
                 assertArgs(3, $args, $name);
 
                 return 'foreach (' . $args[0] . ' as $s) { if ($s instanceof Node\Scalar\EncapsedStringPart) {'
                      . ' $s->value = Node\Scalar\String_::parseEscapeSequences($s->value, ' . $args[1] . ', ' . $args[2] . '); } }';
             }
 
-            if ('makeNop' == $name) {
+            if ('makeNop' === $name) {
                 assertArgs(3, $args, $name);
 
                 return '$startAttributes = ' . $args[1] . ';'
@@ -183,11 +178,11 @@ function($matches) {
 
                 return '$startAttributes = ' . $args[1] . ';'
                     . ' if (isset($startAttributes[\'comments\']))'
-                    . ' { ' . $args[0] . ' = new Stmt\Nop($this->createZeroLengthAttributes($startAttributes)); }'
+                    . ' { ' . $args[0] . ' = new Stmt\Nop($this->createCommentNopAttributes($startAttributes[\'comments\'])); }'
                     . ' else { ' . $args[0] . ' = null; }';
             }
 
-            if ('strKind' == $name) {
+            if ('strKind' === $name) {
                 assertArgs(1, $args, $name);
 
                 return '(' . $args[0] . '[0] === "\'" || (' . $args[0] . '[1] === "\'" && '
@@ -195,7 +190,7 @@ function($matches) {
                      . '? Scalar\String_::KIND_SINGLE_QUOTED : Scalar\String_::KIND_DOUBLE_QUOTED)';
             }
 
-            if ('prependLeadingComments' == $name) {
+            if ('prependLeadingComments' === $name) {
                 assertArgs(1, $args, $name);
 
                 return '$attrs = $this->startAttributeStack[#1]; $stmts = ' . $args[0] . '; '
@@ -234,6 +229,15 @@ function ensureDirExists($dir) {
     }
 }
 
+function execCmd($cmd) {
+    $output = trim(shell_exec("$cmd 2>&1"));
+    if ($output !== "") {
+        echo "> " . $cmd . "\n";
+        echo $output;
+    }
+    return $output;
+}
+
 //////////////////////////////
 /// Regex helper functions ///
 //////////////////////////////
diff --git a/vendor/nikic/php-parser/grammar/tokens.y b/vendor/nikic/php-parser/grammar/tokens.y
index dd83a6f83d..b0b0360cd2 100644
--- a/vendor/nikic/php-parser/grammar/tokens.y
+++ b/vendor/nikic/php-parser/grammar/tokens.y
@@ -1,6 +1,7 @@
 /* We currently rely on the token ID mapping to be the same between PHP 5 and PHP 7 - so the same lexer can be used for
  * both. This is enforced by sharing this token file. */
 
+%right T_THROW
 %left T_INCLUDE T_INCLUDE_ONCE T_EVAL T_REQUIRE T_REQUIRE_ONCE
 %left ','
 %left T_LOGICAL_OR
@@ -41,8 +42,6 @@
 %token T_VARIABLE
 %token T_NUM_STRING
 %token T_INLINE_HTML
-%token T_CHARACTER
-%token T_BAD_CHARACTER
 %token T_ENCAPSED_AND_WHITESPACE
 %token T_CONSTANT_ENCAPSED_STRING
 %token T_ECHO
@@ -57,6 +56,7 @@
 %token T_ENDDECLARE
 %token T_AS
 %token T_SWITCH
+%token T_MATCH
 %token T_ENDSWITCH
 %token T_CASE
 %token T_DEFAULT
@@ -86,6 +86,7 @@
 %token T_EXTENDS
 %token T_IMPLEMENTS
 %token T_OBJECT_OPERATOR
+%token T_NULLSAFE_OBJECT_OPERATOR
 %token T_DOUBLE_ARROW
 %token T_LIST
 %token T_ARRAY
@@ -96,12 +97,6 @@
 %token T_FUNC_C
 %token T_LINE
 %token T_FILE
-%token T_COMMENT
-%token T_DOC_COMMENT
-%token T_OPEN_TAG
-%token T_OPEN_TAG_WITH_ECHO
-%token T_CLOSE_TAG
-%token T_WHITESPACE
 %token T_START_HEREDOC
 %token T_END_HEREDOC
 %token T_DOLLAR_OPEN_CURLY_BRACES
@@ -112,3 +107,7 @@
 %token T_DIR
 %token T_NS_SEPARATOR
 %token T_ELLIPSIS
+%token T_NAME_FULLY_QUALIFIED
+%token T_NAME_QUALIFIED
+%token T_NAME_RELATIVE
+%token T_ATTRIBUTE
\ No newline at end of file
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Builder/Param.php b/vendor/nikic/php-parser/lib/PhpParser/Builder/Param.php
index 184813a657..c6491786e3 100644
--- a/vendor/nikic/php-parser/lib/PhpParser/Builder/Param.php
+++ b/vendor/nikic/php-parser/lib/PhpParser/Builder/Param.php
@@ -12,7 +12,7 @@ class Param implements PhpParser\Builder
 
     protected $default = null;
 
-    /** @var string|Node\Name|Node\NullableType|null */
+    /** @var Node\Identifier|Node\Name|Node\NullableType|null */
     protected $type = null;
 
     protected $byRef = false;
@@ -44,7 +44,7 @@ public function setDefault($value) {
     /**
      * Sets type for the parameter.
      *
-     * @param string|Node\Name|Node\NullableType $type Parameter type
+     * @param string|Node\Name|Node\NullableType|Node\UnionType $type Parameter type
      *
      * @return $this The builder instance (for fluid interface)
      */
@@ -60,7 +60,7 @@ public function setType($type) {
     /**
      * Sets type for the parameter.
      *
-     * @param string|Node\Name|Node\NullableType $type Parameter type
+     * @param string|Node\Name|Node\NullableType|Node\UnionType $type Parameter type
      *
      * @return $this The builder instance (for fluid interface)
      *
diff --git a/vendor/nikic/php-parser/lib/PhpParser/BuilderHelpers.php b/vendor/nikic/php-parser/lib/PhpParser/BuilderHelpers.php
index 790e8877eb..180bf35d0e 100644
--- a/vendor/nikic/php-parser/lib/PhpParser/BuilderHelpers.php
+++ b/vendor/nikic/php-parser/lib/PhpParser/BuilderHelpers.php
@@ -8,6 +8,7 @@
 use PhpParser\Node\NullableType;
 use PhpParser\Node\Scalar;
 use PhpParser\Node\Stmt;
+use PhpParser\Node\UnionType;
 
 /**
  * This class defines helpers used in the implementation of builders. Don't use it directly.
@@ -158,16 +159,19 @@ private static function normalizeNameCommon($name, bool $allowExpr) {
      * In particular, builtin types become Identifiers, custom types become Names and nullables
      * are wrapped in NullableType nodes.
      *
-     * @param string|Name|Identifier|NullableType $type The type to normalize
+     * @param string|Name|Identifier|NullableType|UnionType $type The type to normalize
      *
-     * @return Name|Identifier|NullableType The normalized type
+     * @return Name|Identifier|NullableType|UnionType The normalized type
      */
     public static function normalizeType($type) {
         if (!is_string($type)) {
-            if (!$type instanceof Name && !$type instanceof Identifier
-                    && !$type instanceof NullableType) {
+            if (
+                !$type instanceof Name && !$type instanceof Identifier &&
+                !$type instanceof NullableType && !$type instanceof UnionType
+            ) {
                 throw new \LogicException(
-                    'Type must be a string, or an instance of Name, Identifier or NullableType');
+                    'Type must be a string, or an instance of Name, Identifier, NullableType or UnionType'
+                );
             }
             return $type;
         }
@@ -179,7 +183,7 @@ public static function normalizeType($type) {
         }
 
         $builtinTypes = [
-            'array', 'callable', 'string', 'int', 'float', 'bool', 'iterable', 'void', 'object'
+            'array', 'callable', 'string', 'int', 'float', 'bool', 'iterable', 'void', 'object', 'mixed'
         ];
 
         $lowerType = strtolower($type);
@@ -193,7 +197,11 @@ public static function normalizeType($type) {
             throw new \LogicException('void type cannot be nullable');
         }
 
-        return $nullable ? new Node\NullableType($type) : $type;
+        if ($nullable && (string) $type === 'mixed') {
+            throw new \LogicException('mixed type cannot be nullable');
+        }
+
+        return $nullable ? new NullableType($type) : $type;
     }
 
     /**
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Comment.php b/vendor/nikic/php-parser/lib/PhpParser/Comment.php
index 5da8420958..61e98d3dca 100644
--- a/vendor/nikic/php-parser/lib/PhpParser/Comment.php
+++ b/vendor/nikic/php-parser/lib/PhpParser/Comment.php
@@ -5,9 +5,12 @@
 class Comment implements \JsonSerializable
 {
     protected $text;
-    protected $line;
-    protected $filePos;
-    protected $tokenPos;
+    protected $startLine;
+    protected $startFilePos;
+    protected $startTokenPos;
+    protected $endLine;
+    protected $endFilePos;
+    protected $endTokenPos;
 
     /**
      * Constructs a comment node.
@@ -18,12 +21,17 @@ class Comment implements \JsonSerializable
      * @param int    $startTokenPos Token offset the comment started on
      */
     public function __construct(
-        string $text, int $startLine = -1, int $startFilePos = -1, int $startTokenPos = -1
+        string $text,
+        int $startLine = -1, int $startFilePos = -1, int $startTokenPos = -1,
+        int $endLine = -1, int $endFilePos = -1, int $endTokenPos = -1
     ) {
         $this->text = $text;
-        $this->line = $startLine;
-        $this->filePos = $startFilePos;
-        $this->tokenPos = $startTokenPos;
+        $this->startLine = $startLine;
+        $this->startFilePos = $startFilePos;
+        $this->startTokenPos = $startTokenPos;
+        $this->endLine = $endLine;
+        $this->endFilePos = $endFilePos;
+        $this->endTokenPos = $endTokenPos;
     }
 
     /**
@@ -38,28 +46,88 @@ public function getText() : string {
     /**
      * Gets the line number the comment started on.
      *
+     * @return int Line number (or -1 if not available)
+     */
+    public function getStartLine() : int {
+        return $this->startLine;
+    }
+
+    /**
+     * Gets the file offset the comment started on.
+     *
+     * @return int File offset (or -1 if not available)
+     */
+    public function getStartFilePos() : int {
+        return $this->startFilePos;
+    }
+
+    /**
+     * Gets the token offset the comment started on.
+     *
+     * @return int Token offset (or -1 if not available)
+     */
+    public function getStartTokenPos() : int {
+        return $this->startTokenPos;
+    }
+
+    /**
+     * Gets the line number the comment ends on.
+     *
+     * @return int Line number (or -1 if not available)
+     */
+    public function getEndLine() : int {
+        return $this->endLine;
+    }
+
+    /**
+     * Gets the file offset the comment ends on.
+     *
+     * @return int File offset (or -1 if not available)
+     */
+    public function getEndFilePos() : int {
+        return $this->endFilePos;
+    }
+
+    /**
+     * Gets the token offset the comment ends on.
+     *
+     * @return int Token offset (or -1 if not available)
+     */
+    public function getEndTokenPos() : int {
+        return $this->endTokenPos;
+    }
+
+    /**
+     * Gets the line number the comment started on.
+     *
+     * @deprecated Use getStartLine() instead
+     *
      * @return int Line number
      */
     public function getLine() : int {
-        return $this->line;
+        return $this->startLine;
     }
 
     /**
      * Gets the file offset the comment started on.
      *
+     * @deprecated Use getStartFilePos() instead
+     *
      * @return int File offset
      */
     public function getFilePos() : int {
-        return $this->filePos;
+        return $this->startFilePos;
     }
 
     /**
      * Gets the token offset the comment started on.
      *
+     * @deprecated Use getStartTokenPos() instead
+     *
      * @return int Token offset
      */
     public function getTokenPos() : int {
-        return $this->tokenPos;
+        return $this->startTokenPos;
     }
 
     /**
@@ -159,9 +227,13 @@ public function jsonSerialize() : array {
         return [
             'nodeType' => $type,
             'text' => $this->text,
-            'line' => $this->line,
-            'filePos' => $this->filePos,
-            'tokenPos' => $this->tokenPos,
+            // TODO: Rename these to include "start".
+            'line' => $this->startLine,
+            'filePos' => $this->startFilePos,
+            'tokenPos' => $this->startTokenPos,
+            'endLine' => $this->endLine,
+            'endFilePos' => $this->endFilePos,
+            'endTokenPos' => $this->endTokenPos,
         ];
     }
 }
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Internal/PrintableNewAnonClassNode.php b/vendor/nikic/php-parser/lib/PhpParser/Internal/PrintableNewAnonClassNode.php
index 7b019db812..3eeac04a41 100644
--- a/vendor/nikic/php-parser/lib/PhpParser/Internal/PrintableNewAnonClassNode.php
+++ b/vendor/nikic/php-parser/lib/PhpParser/Internal/PrintableNewAnonClassNode.php
@@ -17,6 +17,8 @@
  */
 class PrintableNewAnonClassNode extends Expr
 {
+    /** @var Node\AttributeGroup[] PHP attribute groups */
+    public $attrGroups;
     /** @var Node\Arg[] Arguments */
     public $args;
     /** @var null|Node\Name Name of extended class */
@@ -27,9 +29,11 @@ class PrintableNewAnonClassNode extends Expr
     public $stmts;
 
     public function __construct(
-        array $args, Node\Name $extends = null, array $implements, array $stmts, array $attributes
+        array $attrGroups, array $args, Node\Name $extends = null, array $implements,
+        array $stmts, array $attributes
     ) {
         parent::__construct($attributes);
+        $this->attrGroups = $attrGroups;
         $this->args = $args;
         $this->extends = $extends;
         $this->implements = $implements;
@@ -42,7 +46,7 @@ public static function fromNewNode(Expr\New_ $newNode) {
         // 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->attrGroups, $newNode->args, $class->extends, $class->implements,
             $class->stmts, $newNode->getAttributes()
         );
     }
@@ -52,6 +56,6 @@ public function getType() : string {
     }
 
     public function getSubNodeNames() : array {
-        return ['args', 'extends', 'implements', 'stmts'];
+        return ['attrGroups', 'args', 'extends', 'implements', 'stmts'];
     }
 }
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Internal/TokenStream.php b/vendor/nikic/php-parser/lib/PhpParser/Internal/TokenStream.php
index cf9e00abf3..39308ae629 100644
--- a/vendor/nikic/php-parser/lib/PhpParser/Internal/TokenStream.php
+++ b/vendor/nikic/php-parser/lib/PhpParser/Internal/TokenStream.php
@@ -33,7 +33,7 @@ public function __construct(array $tokens) {
      * @return bool
      */
     public function haveParens(int $startPos, int $endPos) : bool {
-        return $this->haveTokenImmediativelyBefore($startPos, '(')
+        return $this->haveTokenImmediatelyBefore($startPos, '(')
             && $this->haveTokenImmediatelyAfter($endPos, ')');
     }
 
@@ -46,7 +46,7 @@ public function haveParens(int $startPos, int $endPos) : bool {
      * @return bool
      */
     public function haveBraces(int $startPos, int $endPos) : bool {
-        return $this->haveTokenImmediativelyBefore($startPos, '{')
+        return $this->haveTokenImmediatelyBefore($startPos, '{')
             && $this->haveTokenImmediatelyAfter($endPos, '}');
     }
 
@@ -60,7 +60,7 @@ public function haveBraces(int $startPos, int $endPos) : bool {
      *
      * @return bool Whether the expected token was found
      */
-    public function haveTokenImmediativelyBefore(int $pos, $expectedTokenType) : bool {
+    public function haveTokenImmediatelyBefore(int $pos, $expectedTokenType) : bool {
         $tokens = $this->tokens;
         $pos--;
         for (; $pos >= 0; $pos--) {
@@ -170,7 +170,7 @@ public function skipRightWhitespace(int $pos) {
         return $pos;
     }
 
-    public function findRight($pos, $findTokenType) {
+    public function findRight(int $pos, $findTokenType) {
         $tokens = $this->tokens;
         for ($count = \count($tokens); $pos < $count; $pos++) {
             $type = $tokens[$pos][0];
@@ -181,6 +181,29 @@ public function findRight($pos, $findTokenType) {
         return -1;
     }
 
+    /**
+     * Whether the given position range contains a certain token type.
+     *
+     * @param int $startPos Starting position (inclusive)
+     * @param int $endPos Ending position (exclusive)
+     * @param int|string $tokenType Token type to look for
+     * @return bool Whether the token occurs in the given range
+     */
+    public function haveTokenInRange(int $startPos, int $endPos, $tokenType) {
+        $tokens = $this->tokens;
+        for ($pos = $startPos; $pos < $endPos; $pos++) {
+            if ($tokens[$pos][0] === $tokenType) {
+                return true;
+            }
+        }
+        return false;
+    }
+
+    public function haveBracesInRange(int $startPos, int $endPos) {
+        return $this->haveTokenInRange($startPos, $endPos, '{')
+            || $this->haveTokenInRange($startPos, $endPos, '}');
+    }
+
     /**
      * Get indentation before token position.
      *
diff --git a/vendor/nikic/php-parser/lib/PhpParser/JsonDecoder.php b/vendor/nikic/php-parser/lib/PhpParser/JsonDecoder.php
index 25d1c6abee..47d2003d4b 100644
--- a/vendor/nikic/php-parser/lib/PhpParser/JsonDecoder.php
+++ b/vendor/nikic/php-parser/lib/PhpParser/JsonDecoder.php
@@ -73,7 +73,9 @@ private function decodeComment(array $value) : Comment {
         }
 
         return new $className(
-            $value['text'], $value['line'] ?? -1, $value['filePos'] ?? -1, $value['tokenPos'] ?? -1
+            $value['text'],
+            $value['line'] ?? -1, $value['filePos'] ?? -1, $value['tokenPos'] ?? -1,
+            $value['endLine'] ?? -1, $value['endFilePos'] ?? -1, $value['endTokenPos'] ?? -1
         );
     }
 
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Lexer.php b/vendor/nikic/php-parser/lib/PhpParser/Lexer.php
index dc5e5332c2..b0c21ead26 100644
--- a/vendor/nikic/php-parser/lib/PhpParser/Lexer.php
+++ b/vendor/nikic/php-parser/lib/PhpParser/Lexer.php
@@ -15,6 +15,7 @@ class Lexer
 
     protected $tokenMap;
     protected $dropTokens;
+    protected $identifierTokens;
 
     private $attributeStartLineUsed;
     private $attributeEndLineUsed;
@@ -34,13 +35,15 @@ class Lexer
      *                       first three. For more info see getNextToken() docs.
      */
     public function __construct(array $options = []) {
-        // map from internal tokens to PhpParser tokens
+        // Create Map from internal tokens to PhpParser tokens.
+        $this->defineCompatibilityTokens();
         $this->tokenMap = $this->createTokenMap();
+        $this->identifierTokens = $this->createIdentifierTokenMap();
 
         // map of tokens to drop while lexing (the map is only used for isset lookup,
         // that's why the value is simply set to 1; the value is never actually used.)
         $this->dropTokens = array_fill_keys(
-            [\T_WHITESPACE, \T_OPEN_TAG, \T_COMMENT, \T_DOC_COMMENT], 1
+            [\T_WHITESPACE, \T_OPEN_TAG, \T_COMMENT, \T_DOC_COMMENT, \T_BAD_CHARACTER], 1
         );
 
         $defaultAttributes = ['comments', 'startLine', 'endLine'];
@@ -84,7 +87,7 @@ public function startLexing(string $code, ErrorHandler $errorHandler = null) {
 
         error_clear_last();
         $this->tokens = @token_get_all($code);
-        $this->handleErrors($errorHandler);
+        $this->postprocessTokens($errorHandler);
 
         if (false !== $scream) {
             ini_set('xdebug.scream', $scream);
@@ -92,13 +95,9 @@ public function startLexing(string $code, ErrorHandler $errorHandler = null) {
     }
 
     private function handleInvalidCharacterRange($start, $end, $line, ErrorHandler $errorHandler) {
+        $tokens = [];
         for ($i = $start; $i < $end; $i++) {
             $chr = $this->code[$i];
-            if ($chr === 'b' || $chr === 'B') {
-                // HHVM does not treat b" tokens correctly, so ignore these
-                continue;
-            }
-
             if ($chr === "\0") {
                 // PHP cuts error message after null byte, so need special case
                 $errorMsg = 'Unexpected null byte';
@@ -108,6 +107,7 @@ private function handleInvalidCharacterRange($start, $end, $line, ErrorHandler $
                 );
             }
 
+            $tokens[] = [\T_BAD_CHARACTER, $chr, $line];
             $errorHandler->handleError(new Error($errorMsg, [
                 'startLine' => $line,
                 'endLine' => $line,
@@ -115,6 +115,7 @@ private function handleInvalidCharacterRange($start, $end, $line, ErrorHandler $
                 'endFilePos' => $i,
             ]));
         }
+        return $tokens;
     }
 
     /**
@@ -128,43 +129,99 @@ private function isUnterminatedComment($token) : bool {
             && substr($token[1], -2) !== '*/';
     }
 
-    /**
-     * Check whether an error *may* have occurred during tokenization.
-     *
-     * @return bool
-     */
-    private function errorMayHaveOccurred() : bool {
-        if (defined('HHVM_VERSION')) {
-            // In HHVM token_get_all() does not throw warnings, so we need to conservatively
-            // assume that an error occurred
-            return true;
-        }
-
-        return null !== error_get_last();
-    }
-
-    protected function handleErrors(ErrorHandler $errorHandler) {
-        if (!$this->errorMayHaveOccurred()) {
-            return;
-        }
-
+    protected function postprocessTokens(ErrorHandler $errorHandler) {
         // PHP's error handling for token_get_all() is rather bad, so if we want detailed
         // error information we need to compute it ourselves. Invalid character errors are
         // detected by finding "gaps" in the token array. Unterminated comments are detected
         // by checking if a trailing comment has a "*/" at the end.
+        //
+        // Additionally, we canonicalize to the PHP 8 comment format here, which does not include
+        // the trailing whitespace anymore.
+        //
+        // We also canonicalize to the PHP 8 T_NAME_* tokens.
 
         $filePos = 0;
         $line = 1;
-        foreach ($this->tokens as $token) {
+        $numTokens = \count($this->tokens);
+        for ($i = 0; $i < $numTokens; $i++) {
+            $token = $this->tokens[$i];
+
+            // Since PHP 7.4 invalid characters are represented by a T_BAD_CHARACTER token.
+            // In this case we only need to emit an error.
+            if ($token[0] === \T_BAD_CHARACTER) {
+                $this->handleInvalidCharacterRange($filePos, $filePos + 1, $line, $errorHandler);
+            }
+
+            if ($token[0] === \T_COMMENT && substr($token[1], 0, 2) !== '/*'
+                    && preg_match('/(\r\n|\n|\r)$/D', $token[1], $matches)) {
+                $trailingNewline = $matches[0];
+                $token[1] = substr($token[1], 0, -strlen($trailingNewline));
+                $this->tokens[$i] = $token;
+                if (isset($this->tokens[$i + 1]) && $this->tokens[$i + 1][0] === \T_WHITESPACE) {
+                    // Move trailing newline into following T_WHITESPACE token, if it already exists.
+                    $this->tokens[$i + 1][1] = $trailingNewline . $this->tokens[$i + 1][1];
+                    $this->tokens[$i + 1][2]--;
+                } else {
+                    // Otherwise, we need to create a new T_WHITESPACE token.
+                    array_splice($this->tokens, $i + 1, 0, [
+                        [\T_WHITESPACE, $trailingNewline, $line],
+                    ]);
+                    $numTokens++;
+                }
+            }
+
+            // Emulate PHP 8 T_NAME_* tokens, by combining sequences of T_NS_SEPARATOR and T_STRING
+            // into a single token.
+            if (\is_array($token)
+                    && ($token[0] === \T_NS_SEPARATOR || isset($this->identifierTokens[$token[0]]))) {
+                $lastWasSeparator = $token[0] === \T_NS_SEPARATOR;
+                $text = $token[1];
+                for ($j = $i + 1; isset($this->tokens[$j]); $j++) {
+                    if ($lastWasSeparator) {
+                        if (!isset($this->identifierTokens[$this->tokens[$j][0]])) {
+                            break;
+                        }
+                        $lastWasSeparator = false;
+                    } else {
+                        if ($this->tokens[$j][0] !== \T_NS_SEPARATOR) {
+                            break;
+                        }
+                        $lastWasSeparator = true;
+                    }
+                    $text .= $this->tokens[$j][1];
+                }
+                if ($lastWasSeparator) {
+                    // Trailing separator is not part of the name.
+                    $j--;
+                    $text = substr($text, 0, -1);
+                }
+                if ($j > $i + 1) {
+                    if ($token[0] === \T_NS_SEPARATOR) {
+                        $type = \T_NAME_FULLY_QUALIFIED;
+                    } else if ($token[0] === \T_NAMESPACE) {
+                        $type = \T_NAME_RELATIVE;
+                    } else {
+                        $type = \T_NAME_QUALIFIED;
+                    }
+                    $token = [$type, $text, $line];
+                    array_splice($this->tokens, $i, $j - $i, [$token]);
+                    $numTokens -= $j - $i - 1;
+                }
+            }
+
             $tokenValue = \is_string($token) ? $token : $token[1];
             $tokenLen = \strlen($tokenValue);
 
             if (substr($this->code, $filePos, $tokenLen) !== $tokenValue) {
                 // Something is missing, must be an invalid character
                 $nextFilePos = strpos($this->code, $tokenValue, $filePos);
-                $this->handleInvalidCharacterRange(
+                $badCharTokens = $this->handleInvalidCharacterRange(
                     $filePos, $nextFilePos, $line, $errorHandler);
                 $filePos = (int) $nextFilePos;
+
+                array_splice($this->tokens, $i, 0, $badCharTokens);
+                $numTokens += \count($badCharTokens);
+                $i += \count($badCharTokens);
             }
 
             $filePos += $tokenLen;
@@ -187,8 +244,9 @@ protected function handleErrors(ErrorHandler $errorHandler) {
                 $this->tokens[] = [$isDocComment ? \T_DOC_COMMENT : \T_COMMENT, $comment, $line];
             } else {
                 // Invalid characters at the end of the input
-                $this->handleInvalidCharacterRange(
+                $badCharTokens = $this->handleInvalidCharacterRange(
                     $filePos, \strlen($this->code), $line, $errorHandler);
+                $this->tokens = array_merge($this->tokens, $badCharTokens);
             }
             return;
         }
@@ -273,17 +331,23 @@ public function getNextToken(&$value = null, &$startAttributes = null, &$endAttr
                 $this->line += substr_count($value, "\n");
                 $this->filePos += \strlen($value);
             } else {
+                $origLine = $this->line;
+                $origFilePos = $this->filePos;
+                $this->line += substr_count($token[1], "\n");
+                $this->filePos += \strlen($token[1]);
+
                 if (\T_COMMENT === $token[0] || \T_DOC_COMMENT === $token[0]) {
                     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);
+                            ? new Comment\Doc($token[1],
+                                $origLine, $origFilePos, $this->pos,
+                                $this->line, $this->filePos - 1, $this->pos)
+                            : new Comment($token[1],
+                                $origLine, $origFilePos, $this->pos,
+                                $this->line, $this->filePos - 1, $this->pos);
                         $startAttributes['comments'][] = $comment;
                     }
                 }
-
-                $this->line += substr_count($token[1], "\n");
-                $this->filePos += \strlen($token[1]);
                 continue;
             }
 
@@ -340,6 +404,61 @@ public function handleHaltCompiler() : string {
         return substr($textAfter, strlen($matches[0]));
     }
 
+    private function defineCompatibilityTokens() {
+        static $compatTokensDefined = false;
+        if ($compatTokensDefined) {
+            return;
+        }
+
+        $compatTokens = [
+            // PHP 7.4
+            'T_BAD_CHARACTER',
+            'T_FN',
+            'T_COALESCE_EQUAL',
+            // PHP 8.0
+            'T_NAME_QUALIFIED',
+            'T_NAME_FULLY_QUALIFIED',
+            'T_NAME_RELATIVE',
+            'T_MATCH',
+            'T_NULLSAFE_OBJECT_OPERATOR',
+            'T_ATTRIBUTE',
+        ];
+
+        // PHP-Parser might be used together with another library that also emulates some or all
+        // of these tokens. Perform a sanity-check that all already defined tokens have been
+        // assigned a unique ID.
+        $usedTokenIds = [];
+        foreach ($compatTokens as $token) {
+            if (\defined($token)) {
+                $tokenId = \constant($token);
+                $clashingToken = $usedTokenIds[$tokenId] ?? null;
+                if ($clashingToken !== null) {
+                    throw new \Error(sprintf(
+                        'Token %s has same ID as token %s, ' .
+                        'you may be using a library with broken token emulation',
+                        $token, $clashingToken
+                    ));
+                }
+                $usedTokenIds[$tokenId] = $token;
+            }
+        }
+
+        // Now define any tokens that have not yet been emulated. Try to assign IDs from -1
+        // downwards, but skip any IDs that may already be in use.
+        $newTokenId = -1;
+        foreach ($compatTokens as $token) {
+            if (!\defined($token)) {
+                while (isset($usedTokenIds[$newTokenId])) {
+                    $newTokenId--;
+                }
+                \define($token, $newTokenId);
+                $newTokenId--;
+            }
+        }
+
+        $compatTokensDefined = true;
+    }
+
     /**
      * Creates the token map.
      *
@@ -384,6 +503,32 @@ protected function createTokenMap() : array {
             $tokenMap[\T_COMPILER_HALT_OFFSET] = Tokens::T_STRING;
         }
 
+        // Assign tokens for which we define compatibility constants, as token_name() does not know them.
+        $tokenMap[\T_FN] = Tokens::T_FN;
+        $tokenMap[\T_COALESCE_EQUAL] = Tokens::T_COALESCE_EQUAL;
+        $tokenMap[\T_NAME_QUALIFIED] = Tokens::T_NAME_QUALIFIED;
+        $tokenMap[\T_NAME_FULLY_QUALIFIED] = Tokens::T_NAME_FULLY_QUALIFIED;
+        $tokenMap[\T_NAME_RELATIVE] = Tokens::T_NAME_RELATIVE;
+        $tokenMap[\T_MATCH] = Tokens::T_MATCH;
+        $tokenMap[\T_NULLSAFE_OBJECT_OPERATOR] = Tokens::T_NULLSAFE_OBJECT_OPERATOR;
+        $tokenMap[\T_ATTRIBUTE] = Tokens::T_ATTRIBUTE;
+
         return $tokenMap;
     }
+
+    private function createIdentifierTokenMap(): array {
+        // Based on semi_reserved production.
+        return array_fill_keys([
+            \T_STRING,
+            \T_STATIC, \T_ABSTRACT, \T_FINAL, \T_PRIVATE, \T_PROTECTED, \T_PUBLIC,
+            \T_INCLUDE, \T_INCLUDE_ONCE, \T_EVAL, \T_REQUIRE, \T_REQUIRE_ONCE, \T_LOGICAL_OR, \T_LOGICAL_XOR, \T_LOGICAL_AND,
+            \T_INSTANCEOF, \T_NEW, \T_CLONE, \T_EXIT, \T_IF, \T_ELSEIF, \T_ELSE, \T_ENDIF, \T_ECHO, \T_DO, \T_WHILE,
+            \T_ENDWHILE, \T_FOR, \T_ENDFOR, \T_FOREACH, \T_ENDFOREACH, \T_DECLARE, \T_ENDDECLARE, \T_AS, \T_TRY, \T_CATCH,
+            \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_FN,
+            \T_MATCH,
+        ], true);
+    }
 }
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Lexer/Emulative.php b/vendor/nikic/php-parser/lib/PhpParser/Lexer/Emulative.php
index 5d10b9af64..cf1f8e5a95 100644
--- a/vendor/nikic/php-parser/lib/PhpParser/Lexer/Emulative.php
+++ b/vendor/nikic/php-parser/lib/PhpParser/Lexer/Emulative.php
@@ -5,66 +5,85 @@
 use PhpParser\Error;
 use PhpParser\ErrorHandler;
 use PhpParser\Lexer;
+use PhpParser\Lexer\TokenEmulator\AttributeEmulator;
 use PhpParser\Lexer\TokenEmulator\CoaleseEqualTokenEmulator;
+use PhpParser\Lexer\TokenEmulator\FlexibleDocStringEmulator;
 use PhpParser\Lexer\TokenEmulator\FnTokenEmulator;
-use PhpParser\Lexer\TokenEmulator\TokenEmulatorInterface;
+use PhpParser\Lexer\TokenEmulator\MatchTokenEmulator;
+use PhpParser\Lexer\TokenEmulator\NullsafeTokenEmulator;
+use PhpParser\Lexer\TokenEmulator\NumericLiteralSeparatorEmulator;
+use PhpParser\Lexer\TokenEmulator\ReverseEmulator;
+use PhpParser\Lexer\TokenEmulator\TokenEmulator;
+use PhpParser\Parser\Tokens;
 
 class Emulative extends Lexer
 {
-    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;
+    const PHP_7_3 = '7.3dev';
+    const PHP_7_4 = '7.4dev';
+    const PHP_8_0 = '8.0dev';
 
     /** @var mixed[] Patches used to reverse changes introduced in the code */
     private $patches = [];
 
-    /** @var TokenEmulatorInterface[] */
-    private $tokenEmulators = [];
+    /** @var TokenEmulator[] */
+    private $emulators = [];
+
+    /** @var string */
+    private $targetPhpVersion;
 
     /**
-     * @param mixed[] $options
+     * @param mixed[] $options Lexer options. In addition to the usual options,
+     *                         accepts a 'phpVersion' string that specifies the
+     *                         version to emulated. Defaults to newest supported.
      */
     public function __construct(array $options = [])
     {
-        parent::__construct($options);
+        $this->targetPhpVersion = $options['phpVersion'] ?? Emulative::PHP_8_0;
+        unset($options['phpVersion']);
 
-        // prepare token emulators
-        $this->tokenEmulators[] = new FnTokenEmulator();
-        $this->tokenEmulators[] = new CoaleseEqualTokenEmulator();
+        parent::__construct($options);
 
-        // add emulated tokens here
-        foreach ($this->tokenEmulators as $emulativeToken) {
-            $this->tokenMap[$emulativeToken->getTokenId()] = $emulativeToken->getParserTokenId();
+        $emulators = [
+            new FlexibleDocStringEmulator(),
+            new FnTokenEmulator(),
+            new MatchTokenEmulator(),
+            new CoaleseEqualTokenEmulator(),
+            new NumericLiteralSeparatorEmulator(),
+            new NullsafeTokenEmulator(),
+            new AttributeEmulator(),
+        ];
+
+        // Collect emulators that are relevant for the PHP version we're running
+        // and the PHP version we're targeting for emulation.
+        foreach ($emulators as $emulator) {
+            $emulatorPhpVersion = $emulator->getPhpVersion();
+            if ($this->isForwardEmulationNeeded($emulatorPhpVersion)) {
+                $this->emulators[] = $emulator;
+            } else if ($this->isReverseEmulationNeeded($emulatorPhpVersion)) {
+                $this->emulators[] = new ReverseEmulator($emulator);
+            }
         }
     }
 
     public function startLexing(string $code, ErrorHandler $errorHandler = null) {
-        $this->patches = [];
+        $emulators = array_filter($this->emulators, function($emulator) use($code) {
+            return $emulator->isEmulationNeeded($code);
+        });
 
-        if ($this->isEmulationNeeded($code) === false) {
+        if (empty($emulators)) {
             // 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->patches = [];
+        foreach ($emulators as $emulator) {
+            $code = $emulator->preprocessCode($code, $this->patches);
         }
 
+        $collector = new ErrorHandler\Collecting();
+        parent::startLexing($code, $collector);
+        $this->sortPatches();
         $this->fixupTokens();
 
         $errors = $collector->getErrors();
@@ -74,72 +93,29 @@ public function startLexing(string $code, ErrorHandler $errorHandler = null) {
                 $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;
+        foreach ($emulators as $emulator) {
+            $this->tokens = $emulator->emulate($code, $this->tokens);
         }
-
-        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;
-            }
-        }
+    private function isForwardEmulationNeeded(string $emulatorPhpVersion): bool {
+        return version_compare(\PHP_VERSION, $emulatorPhpVersion, '<')
+            && version_compare($this->targetPhpVersion, $emulatorPhpVersion, '>=');
+    }
 
-        return $code;
+    private function isReverseEmulationNeeded(string $emulatorPhpVersion): bool {
+        return version_compare(\PHP_VERSION, $emulatorPhpVersion, '>=')
+            && version_compare($this->targetPhpVersion, $emulatorPhpVersion, '<');
     }
 
-    private function isEmulationNeeded(string $code): bool
+    private function sortPatches()
     {
-        foreach ($this->tokenEmulators as $emulativeToken) {
-            if ($emulativeToken->isEmulationNeeded($code)) {
-                return true;
-            }
-        }
-
-        return $this->isHeredocNowdocEmulationNeeded($code);
+        // Patches may be contributed by different emulators.
+        // Make sure they are sorted by increasing patch position.
+        usort($this->patches, function($p1, $p2) {
+            return $p1[0] <=> $p2[0];
+        });
     }
 
     private function fixupTokens()
@@ -158,7 +134,20 @@ private function fixupTokens()
         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
+                if ($patchPos === $pos) {
+                    // Only support replacement for string tokens.
+                    assert($patchType === 'replace');
+                    $this->tokens[$i] = $patchText;
+
+                    // Fetch the next patch
+                    $patchIdx++;
+                    if ($patchIdx >= \count($this->patches)) {
+                        // No more patches, we're done
+                        return;
+                    }
+                    list($patchPos, $patchType, $patchText) = $this->patches[$patchIdx];
+                }
+
                 $pos += \strlen($token);
                 continue;
             }
@@ -186,6 +175,11 @@ private function fixupTokens()
                         $token[1], $patchText, $patchPos - $pos + $posDelta, 0
                     );
                     $posDelta += $patchTextLen;
+                } else if ($patchType === 'replace') {
+                    // Replace inside the token string
+                    $this->tokens[$i][1] = substr_replace(
+                        $token[1], $patchText, $patchPos - $pos + $posDelta, $patchTextLen
+                    );
                 } else {
                     assert(false);
                 }
@@ -232,7 +226,7 @@ private function fixupErrors(array $errors) {
                 if ($patchType === 'add') {
                     $posDelta += strlen($patchText);
                     $lineDelta += substr_count($patchText, "\n");
-                } else {
+                } else if ($patchType === 'remove') {
                     $posDelta -= strlen($patchText);
                     $lineDelta -= substr_count($patchText, "\n");
                 }
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Lexer/TokenEmulator/AttributeEmulator.php b/vendor/nikic/php-parser/lib/PhpParser/Lexer/TokenEmulator/AttributeEmulator.php
new file mode 100644
index 0000000000..6776a51975
--- /dev/null
+++ b/vendor/nikic/php-parser/lib/PhpParser/Lexer/TokenEmulator/AttributeEmulator.php
@@ -0,0 +1,56 @@
+<?php declare(strict_types=1);
+
+namespace PhpParser\Lexer\TokenEmulator;
+
+use PhpParser\Lexer\Emulative;
+
+final class AttributeEmulator extends TokenEmulator
+{
+    public function getPhpVersion(): string
+    {
+        return Emulative::PHP_8_0;
+    }
+
+    public function isEmulationNeeded(string $code) : bool
+    {
+        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 ($tokens[$i] === '#' && isset($tokens[$i + 1]) && $tokens[$i + 1] === '[') {
+                array_splice($tokens, $i, 2, [
+                    [\T_ATTRIBUTE, '#[', $line]
+                ]);
+                $c--;
+                continue;
+            }
+            if (\is_array($tokens[$i])) {
+                $line += substr_count($tokens[$i][1], "\n");
+            }
+        }
+
+        return $tokens;
+    }
+
+    public function reverseEmulate(string $code, array $tokens): array
+    {
+        // TODO
+        return $tokens;
+    }
+
+    public function preprocessCode(string $code, array &$patches): string {
+        $pos = 0;
+        while (false !== $pos = strpos($code, '#[', $pos)) {
+            // Replace #[ with %[
+            $code[$pos] = '%';
+            $patches[] = [$pos, 'replace', '#'];
+            $pos += 2;
+        }
+        return $code;
+    }
+}
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Lexer/TokenEmulator/CoaleseEqualTokenEmulator.php b/vendor/nikic/php-parser/lib/PhpParser/Lexer/TokenEmulator/CoaleseEqualTokenEmulator.php
index ca6cf13400..d91da92143 100644
--- a/vendor/nikic/php-parser/lib/PhpParser/Lexer/TokenEmulator/CoaleseEqualTokenEmulator.php
+++ b/vendor/nikic/php-parser/lib/PhpParser/Lexer/TokenEmulator/CoaleseEqualTokenEmulator.php
@@ -3,29 +3,16 @@
 namespace PhpParser\Lexer\TokenEmulator;
 
 use PhpParser\Lexer\Emulative;
-use PhpParser\Parser\Tokens;
 
-final class CoaleseEqualTokenEmulator implements TokenEmulatorInterface
+final class CoaleseEqualTokenEmulator extends TokenEmulator
 {
-    const T_COALESCE_EQUAL = 1007;
-
-    public function getTokenId(): int
+    public function getPhpVersion(): string
     {
-        return self::T_COALESCE_EQUAL;
+        return Emulative::PHP_7_4;
     }
 
-    public function getParserTokenId(): int
+    public function isEmulationNeeded(string $code): bool
     {
-        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;
     }
 
@@ -38,7 +25,7 @@ public function emulate(string $code, array $tokens): array
             if (isset($tokens[$i + 1])) {
                 if ($tokens[$i][0] === T_COALESCE && $tokens[$i + 1] === '=') {
                     array_splice($tokens, $i, 2, [
-                        [self::T_COALESCE_EQUAL, '??=', $line]
+                        [\T_COALESCE_EQUAL, '??=', $line]
                     ]);
                     $c--;
                     continue;
@@ -51,4 +38,10 @@ public function emulate(string $code, array $tokens): array
 
         return $tokens;
     }
+
+    public function reverseEmulate(string $code, array $tokens): array
+    {
+        // ??= was not valid code previously, don't bother.
+        return $tokens;
+    }
 }
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Lexer/TokenEmulator/FlexibleDocStringEmulator.php b/vendor/nikic/php-parser/lib/PhpParser/Lexer/TokenEmulator/FlexibleDocStringEmulator.php
new file mode 100644
index 0000000000..c15d6271fc
--- /dev/null
+++ b/vendor/nikic/php-parser/lib/PhpParser/Lexer/TokenEmulator/FlexibleDocStringEmulator.php
@@ -0,0 +1,76 @@
+<?php declare(strict_types=1);
+
+namespace PhpParser\Lexer\TokenEmulator;
+
+use PhpParser\Lexer\Emulative;
+
+final class FlexibleDocStringEmulator extends TokenEmulator
+{
+    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-Z0-9_\x80-\xff])(?<separator>(?:;?[\r\n])?)/x
+REGEX;
+
+    public function getPhpVersion(): string
+    {
+        return Emulative::PHP_7_3;
+    }
+
+    public function isEmulationNeeded(string $code) : bool
+    {
+        return strpos($code, '<<<') !== false;
+    }
+
+    public function emulate(string $code, array $tokens): array
+    {
+        // Handled by preprocessing + fixup.
+        return $tokens;
+    }
+
+    public function reverseEmulate(string $code, array $tokens): array
+    {
+        // Not supported.
+        return $tokens;
+    }
+
+    public function preprocessCode(string $code, array &$patches): string {
+        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);
+                $patches[] = [$indentationStart + $posDelta, 'add', $indentation];
+                $posDelta -= $indentationLen;
+            }
+
+            if ($separator === '') {
+                // Insert newline as separator
+                $code = substr_replace($code, "\n", $separatorStart + $posDelta, 0);
+                $patches[] = [$separatorStart + $posDelta, 'remove', "\n"];
+                $posDelta += 1;
+            }
+        }
+
+        return $code;
+    }
+}
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Lexer/TokenEmulator/FnTokenEmulator.php b/vendor/nikic/php-parser/lib/PhpParser/Lexer/TokenEmulator/FnTokenEmulator.php
index 2059693ae1..eb7e49634a 100644
--- a/vendor/nikic/php-parser/lib/PhpParser/Lexer/TokenEmulator/FnTokenEmulator.php
+++ b/vendor/nikic/php-parser/lib/PhpParser/Lexer/TokenEmulator/FnTokenEmulator.php
@@ -3,64 +3,21 @@
 namespace PhpParser\Lexer\TokenEmulator;
 
 use PhpParser\Lexer\Emulative;
-use PhpParser\Parser\Tokens;
 
-final class FnTokenEmulator implements TokenEmulatorInterface
+final class FnTokenEmulator extends KeywordEmulator
 {
-    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
+    public function getPhpVersion(): string
     {
-        // skip version where this is supported
-        if (version_compare(\PHP_VERSION, Emulative::PHP_7_4, '>=')) {
-            return false;
-        }
-
-        return strpos($code, 'fn') !== false;
+        return Emulative::PHP_7_4;
     }
 
-    public function emulate(string $code, array $tokens): array
+    public function getKeywordString(): string
     {
-        // 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;
+        return 'fn';
     }
 
-    /**
-     * @param mixed[] $tokens
-     * @return mixed[]|null
-     */
-    private function getPreviousNonSpaceToken(array $tokens, int $start)
+    public function getKeywordToken(): int
     {
-        for ($i = $start - 1; $i >= 0; --$i) {
-            if ($tokens[$i][0] === T_WHITESPACE) {
-                continue;
-            }
-
-            return $tokens[$i];
-        }
-
-        return null;
+        return \T_FN;
     }
-}
+}
\ No newline at end of file
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Lexer/TokenEmulator/KeywordEmulator.php b/vendor/nikic/php-parser/lib/PhpParser/Lexer/TokenEmulator/KeywordEmulator.php
new file mode 100644
index 0000000000..e7c0512bd7
--- /dev/null
+++ b/vendor/nikic/php-parser/lib/PhpParser/Lexer/TokenEmulator/KeywordEmulator.php
@@ -0,0 +1,60 @@
+<?php declare(strict_types=1);
+
+namespace PhpParser\Lexer\TokenEmulator;
+
+abstract class KeywordEmulator extends TokenEmulator
+{
+    abstract function getKeywordString(): string;
+    abstract function getKeywordToken(): int;
+
+    public function isEmulationNeeded(string $code): bool
+    {
+        return strpos(strtolower($code), $this->getKeywordString()) !== false;
+    }
+
+    public function emulate(string $code, array $tokens): array
+    {
+        $keywordString = $this->getKeywordString();
+        foreach ($tokens as $i => $token) {
+            if ($token[0] === T_STRING && strtolower($token[1]) === $keywordString) {
+                $previousNonSpaceToken = $this->getPreviousNonSpaceToken($tokens, $i);
+                if ($previousNonSpaceToken !== null && $previousNonSpaceToken[0] === \T_OBJECT_OPERATOR) {
+                    continue;
+                }
+
+                $tokens[$i][0] = $this->getKeywordToken();
+            }
+        }
+
+        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;
+    }
+
+    public function reverseEmulate(string $code, array $tokens): array
+    {
+        $keywordToken = $this->getKeywordToken();
+        foreach ($tokens as $i => $token) {
+            if ($token[0] === $keywordToken) {
+                $tokens[$i][0] = \T_STRING;
+            }
+        }
+
+        return $tokens;
+    }
+}
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Lexer/TokenEmulator/MatchTokenEmulator.php b/vendor/nikic/php-parser/lib/PhpParser/Lexer/TokenEmulator/MatchTokenEmulator.php
new file mode 100644
index 0000000000..902a46dfcb
--- /dev/null
+++ b/vendor/nikic/php-parser/lib/PhpParser/Lexer/TokenEmulator/MatchTokenEmulator.php
@@ -0,0 +1,23 @@
+<?php declare(strict_types=1);
+
+namespace PhpParser\Lexer\TokenEmulator;
+
+use PhpParser\Lexer\Emulative;
+
+final class MatchTokenEmulator extends KeywordEmulator
+{
+    public function getPhpVersion(): string
+    {
+        return Emulative::PHP_8_0;
+    }
+
+    public function getKeywordString(): string
+    {
+        return 'match';
+    }
+
+    public function getKeywordToken(): int
+    {
+        return \T_MATCH;
+    }
+}
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Lexer/TokenEmulator/NullsafeTokenEmulator.php b/vendor/nikic/php-parser/lib/PhpParser/Lexer/TokenEmulator/NullsafeTokenEmulator.php
new file mode 100644
index 0000000000..1a29c676e4
--- /dev/null
+++ b/vendor/nikic/php-parser/lib/PhpParser/Lexer/TokenEmulator/NullsafeTokenEmulator.php
@@ -0,0 +1,67 @@
+<?php declare(strict_types=1);
+
+namespace PhpParser\Lexer\TokenEmulator;
+
+use PhpParser\Lexer\Emulative;
+
+final class NullsafeTokenEmulator extends TokenEmulator
+{
+    public function getPhpVersion(): string
+    {
+        return Emulative::PHP_8_0;
+    }
+
+    public function isEmulationNeeded(string $code): bool
+    {
+        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 ($tokens[$i] === '?' && isset($tokens[$i + 1]) && $tokens[$i + 1][0] === \T_OBJECT_OPERATOR) {
+                array_splice($tokens, $i, 2, [
+                    [\T_NULLSAFE_OBJECT_OPERATOR, '?->', $line]
+                ]);
+                $c--;
+                continue;
+            }
+
+            // Handle ?-> inside encapsed string.
+            if ($tokens[$i][0] === \T_ENCAPSED_AND_WHITESPACE && isset($tokens[$i - 1])
+                && $tokens[$i - 1][0] === \T_VARIABLE
+                && preg_match('/^\?->([a-zA-Z_\x80-\xff][a-zA-Z0-9_\x80-\xff]*)/', $tokens[$i][1], $matches)
+            ) {
+                $replacement = [
+                    [\T_NULLSAFE_OBJECT_OPERATOR, '?->', $line],
+                    [\T_STRING, $matches[1], $line],
+                ];
+                if (\strlen($matches[0]) !== \strlen($tokens[$i][1])) {
+                    $replacement[] = [
+                        \T_ENCAPSED_AND_WHITESPACE,
+                        \substr($tokens[$i][1], \strlen($matches[0])),
+                        $line
+                    ];
+                }
+                array_splice($tokens, $i, 1, $replacement);
+                $c += \count($replacement) - 1;
+                continue;
+            }
+
+            if (\is_array($tokens[$i])) {
+                $line += substr_count($tokens[$i][1], "\n");
+            }
+        }
+
+        return $tokens;
+    }
+
+    public function reverseEmulate(string $code, array $tokens): array
+    {
+        // ?-> was not valid code previously, don't bother.
+        return $tokens;
+    }
+}
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Lexer/TokenEmulator/NumericLiteralSeparatorEmulator.php b/vendor/nikic/php-parser/lib/PhpParser/Lexer/TokenEmulator/NumericLiteralSeparatorEmulator.php
new file mode 100644
index 0000000000..cdf793e46e
--- /dev/null
+++ b/vendor/nikic/php-parser/lib/PhpParser/Lexer/TokenEmulator/NumericLiteralSeparatorEmulator.php
@@ -0,0 +1,105 @@
+<?php declare(strict_types=1);
+
+namespace PhpParser\Lexer\TokenEmulator;
+
+use PhpParser\Lexer\Emulative;
+
+final class NumericLiteralSeparatorEmulator extends TokenEmulator
+{
+    const BIN = '(?:0b[01]+(?:_[01]+)*)';
+    const HEX = '(?:0x[0-9a-f]+(?:_[0-9a-f]+)*)';
+    const DEC = '(?:[0-9]+(?:_[0-9]+)*)';
+    const SIMPLE_FLOAT = '(?:' . self::DEC . '\.' . self::DEC . '?|\.' . self::DEC . ')';
+    const EXP = '(?:e[+-]?' . self::DEC . ')';
+    const FLOAT = '(?:' . self::SIMPLE_FLOAT . self::EXP . '?|' . self::DEC . self::EXP . ')';
+    const NUMBER = '~' . self::FLOAT . '|' . self::BIN . '|' . self::HEX . '|' . self::DEC . '~iA';
+
+    public function getPhpVersion(): string
+    {
+        return Emulative::PHP_7_4;
+    }
+
+    public function isEmulationNeeded(string $code) : bool
+    {
+        return preg_match('~[0-9]_[0-9]~', $code)
+            || preg_match('~0x[0-9a-f]+_[0-9a-f]~i', $code);
+    }
+
+    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
+        $codeOffset = 0;
+        for ($i = 0, $c = count($tokens); $i < $c; ++$i) {
+            $token = $tokens[$i];
+            $tokenLen = \strlen(\is_array($token) ? $token[1] : $token);
+
+            if ($token[0] !== T_LNUMBER && $token[0] !== T_DNUMBER) {
+                $codeOffset += $tokenLen;
+                continue;
+            }
+
+            $res = preg_match(self::NUMBER, $code, $matches, 0, $codeOffset);
+            assert($res, "No number at number token position");
+
+            $match = $matches[0];
+            $matchLen = \strlen($match);
+            if ($matchLen === $tokenLen) {
+                // Original token already holds the full number.
+                $codeOffset += $tokenLen;
+                continue;
+            }
+
+            $tokenKind = $this->resolveIntegerOrFloatToken($match);
+            $newTokens = [[$tokenKind, $match, $token[2]]];
+
+            $numTokens = 1;
+            $len = $tokenLen;
+            while ($matchLen > $len) {
+                $nextToken = $tokens[$i + $numTokens];
+                $nextTokenText = \is_array($nextToken) ? $nextToken[1] : $nextToken;
+                $nextTokenLen = \strlen($nextTokenText);
+
+                $numTokens++;
+                if ($matchLen < $len + $nextTokenLen) {
+                    // Split trailing characters into a partial token.
+                    assert(is_array($nextToken), "Partial token should be an array token");
+                    $partialText = substr($nextTokenText, $matchLen - $len);
+                    $newTokens[] = [$nextToken[0], $partialText, $nextToken[2]];
+                    break;
+                }
+
+                $len += $nextTokenLen;
+            }
+
+            array_splice($tokens, $i, $numTokens, $newTokens);
+            $c -= $numTokens - \count($newTokens);
+            $codeOffset += $matchLen;
+        }
+
+        return $tokens;
+    }
+
+    private function resolveIntegerOrFloatToken(string $str): int
+    {
+        $str = str_replace('_', '', $str);
+
+        if (stripos($str, '0b') === 0) {
+            $num = bindec($str);
+        } elseif (stripos($str, '0x') === 0) {
+            $num = hexdec($str);
+        } elseif (stripos($str, '0') === 0 && ctype_digit($str)) {
+            $num = octdec($str);
+        } else {
+            $num = +$str;
+        }
+
+        return is_float($num) ? T_DNUMBER : T_LNUMBER;
+    }
+
+    public function reverseEmulate(string $code, array $tokens): array
+    {
+        // Numeric separators were not legal code previously, don't bother.
+        return $tokens;
+    }
+}
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Lexer/TokenEmulator/ReverseEmulator.php b/vendor/nikic/php-parser/lib/PhpParser/Lexer/TokenEmulator/ReverseEmulator.php
new file mode 100644
index 0000000000..90093f66b2
--- /dev/null
+++ b/vendor/nikic/php-parser/lib/PhpParser/Lexer/TokenEmulator/ReverseEmulator.php
@@ -0,0 +1,36 @@
+<?php declare(strict_types=1);
+
+namespace PhpParser\Lexer\TokenEmulator;
+
+/**
+ * Reverses emulation direction of the inner emulator.
+ */
+final class ReverseEmulator extends TokenEmulator
+{
+    /** @var TokenEmulator Inner emulator */
+    private $emulator;
+
+    public function __construct(TokenEmulator $emulator) {
+        $this->emulator = $emulator;
+    }
+
+    public function getPhpVersion(): string {
+        return $this->emulator->getPhpVersion();
+    }
+
+    public function isEmulationNeeded(string $code): bool {
+        return $this->emulator->isEmulationNeeded($code);
+    }
+
+    public function emulate(string $code, array $tokens): array {
+        return $this->emulator->reverseEmulate($code, $tokens);
+    }
+
+    public function reverseEmulate(string $code, array $tokens): array {
+        return $this->emulator->emulate($code, $tokens);
+    }
+
+    public function preprocessCode(string $code, array &$patches): string {
+        return $code;
+    }
+}
\ No newline at end of file
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Lexer/TokenEmulator/TokenEmulator.php b/vendor/nikic/php-parser/lib/PhpParser/Lexer/TokenEmulator/TokenEmulator.php
new file mode 100644
index 0000000000..a020bc0ff4
--- /dev/null
+++ b/vendor/nikic/php-parser/lib/PhpParser/Lexer/TokenEmulator/TokenEmulator.php
@@ -0,0 +1,25 @@
+<?php declare(strict_types=1);
+
+namespace PhpParser\Lexer\TokenEmulator;
+
+/** @internal */
+abstract class TokenEmulator
+{
+    abstract public function getPhpVersion(): string;
+
+    abstract public function isEmulationNeeded(string $code): bool;
+
+    /**
+     * @return array Modified Tokens
+     */
+    abstract public function emulate(string $code, array $tokens): array;
+
+    /**
+     * @return array Modified Tokens
+     */
+    abstract public function reverseEmulate(string $code, array $tokens): array;
+
+    public function preprocessCode(string $code, array &$patches): string {
+        return $code;
+    }
+}
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Lexer/TokenEmulator/TokenEmulatorInterface.php b/vendor/nikic/php-parser/lib/PhpParser/Lexer/TokenEmulator/TokenEmulatorInterface.php
deleted file mode 100644
index 6ef5b9d068..0000000000
--- a/vendor/nikic/php-parser/lib/PhpParser/Lexer/TokenEmulator/TokenEmulatorInterface.php
+++ /dev/null
@@ -1,17 +0,0 @@
-<?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.php b/vendor/nikic/php-parser/lib/PhpParser/Node.php
index 7f04c3432c..befb256504 100644
--- a/vendor/nikic/php-parser/lib/PhpParser/Node.php
+++ b/vendor/nikic/php-parser/lib/PhpParser/Node.php
@@ -95,8 +95,6 @@ public function getComments() : array;
     /**
      * Gets the doc comment of the node.
      *
-     * The doc comment has to be the last comment associated with the node.
-     *
      * @return null|Comment\Doc Doc comment object or null
      */
     public function getDocComment();
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Node/Arg.php b/vendor/nikic/php-parser/lib/PhpParser/Node/Arg.php
index a585ddc3be..b25b0904a2 100644
--- a/vendor/nikic/php-parser/lib/PhpParser/Node/Arg.php
+++ b/vendor/nikic/php-parser/lib/PhpParser/Node/Arg.php
@@ -6,6 +6,8 @@
 
 class Arg extends NodeAbstract
 {
+    /** @var Identifier|null Parameter name (for named parameters) */
+    public $name;
     /** @var Expr Value to pass */
     public $value;
     /** @var bool Whether to pass by ref */
@@ -20,16 +22,21 @@ class Arg extends NodeAbstract
      * @param bool  $byRef      Whether to pass by ref
      * @param bool  $unpack     Whether to unpack the argument
      * @param array $attributes Additional attributes
+     * @param Identifier|null $name Parameter name (for named parameters)
      */
-    public function __construct(Expr $value, bool $byRef = false, bool $unpack = false, array $attributes = []) {
+    public function __construct(
+        Expr $value, bool $byRef = false, bool $unpack = false, array $attributes = [],
+        Identifier $name = null
+    ) {
         $this->attributes = $attributes;
+        $this->name = $name;
         $this->value = $value;
         $this->byRef = $byRef;
         $this->unpack = $unpack;
     }
 
     public function getSubNodeNames() : array {
-        return ['value', 'byRef', 'unpack'];
+        return ['name', 'value', 'byRef', 'unpack'];
     }
     
     public function getType() : string {
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Node/Attribute.php b/vendor/nikic/php-parser/lib/PhpParser/Node/Attribute.php
new file mode 100644
index 0000000000..c96f66e514
--- /dev/null
+++ b/vendor/nikic/php-parser/lib/PhpParser/Node/Attribute.php
@@ -0,0 +1,34 @@
+<?php declare(strict_types=1);
+
+namespace PhpParser\Node;
+
+use PhpParser\Node;
+use PhpParser\NodeAbstract;
+
+class Attribute extends NodeAbstract
+{
+    /** @var Name Attribute name */
+    public $name;
+
+    /** @var Arg[] Attribute arguments */
+    public $args;
+
+    /**
+     * @param Node\Name $name       Attribute name
+     * @param Arg[]     $args       Attribute arguments
+     * @param array     $attributes Additional node attributes
+     */
+    public function __construct(Name $name, array $args = [], array $attributes = []) {
+        $this->attributes = $attributes;
+        $this->name = $name;
+        $this->args = $args;
+    }
+
+    public function getSubNodeNames() : array {
+        return ['name', 'args'];
+    }
+
+    public function getType() : string {
+        return 'Attribute';
+    }
+}
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Node/AttributeGroup.php b/vendor/nikic/php-parser/lib/PhpParser/Node/AttributeGroup.php
new file mode 100644
index 0000000000..613bfc4134
--- /dev/null
+++ b/vendor/nikic/php-parser/lib/PhpParser/Node/AttributeGroup.php
@@ -0,0 +1,29 @@
+<?php declare(strict_types=1);
+
+namespace PhpParser\Node;
+
+use PhpParser\Node;
+use PhpParser\NodeAbstract;
+
+class AttributeGroup extends NodeAbstract
+{
+    /** @var Attribute[] Attributes */
+    public $attrs;
+
+    /**
+     * @param Attribute[] $attrs PHP attributes
+     * @param array $attributes Additional node attributes
+     */
+    public function __construct(array $attrs, array $attributes = []) {
+        $this->attributes = $attributes;
+        $this->attrs = $attrs;
+    }
+
+    public function getSubNodeNames() : array {
+        return ['attrs'];
+    }
+
+    public function getType() : string {
+        return 'AttributeGroup';
+    }
+}
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Node/Const_.php b/vendor/nikic/php-parser/lib/PhpParser/Node/Const_.php
index 4094a653dc..789a426552 100644
--- a/vendor/nikic/php-parser/lib/PhpParser/Node/Const_.php
+++ b/vendor/nikic/php-parser/lib/PhpParser/Node/Const_.php
@@ -5,7 +5,7 @@
 use PhpParser\NodeAbstract;
 
 /**
- * @property Name $namespacedName Namespaced name (for class constants, if using NameResolver)
+ * @property Name $namespacedName Namespaced name (for global constants, if using NameResolver)
  */
 class Const_ extends NodeAbstract
 {
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 fbe207ee30..e6eaa2834d 100644
--- a/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/Array_.php
+++ b/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/Array_.php
@@ -10,13 +10,13 @@ class Array_ extends Expr
     const KIND_LONG = 1;  // array() syntax
     const KIND_SHORT = 2; // [] syntax
 
-    /** @var ArrayItem[] Items */
+    /** @var (ArrayItem|null)[] Items */
     public $items;
 
     /**
      * Constructs an array node.
      *
-     * @param ArrayItem[] $items      Items of the array
+     * @param (ArrayItem|null)[] $items      Items of the array
      * @param array       $attributes Additional attributes
      */
     public function __construct(array $items = [], array $attributes = []) {
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/ArrowFunction.php b/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/ArrowFunction.php
index b4b816f622..d293f0ae41 100644
--- a/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/ArrowFunction.php
+++ b/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/ArrowFunction.php
@@ -17,11 +17,13 @@ class ArrowFunction extends Expr implements FunctionLike
     /** @var Node\Param[] */
     public $params = [];
 
-    /** @var null|Node\Identifier|Node\Name|Node\NullableType */
+    /** @var null|Node\Identifier|Node\Name|Node\NullableType|Node\UnionType */
     public $returnType;
 
     /** @var Expr */
     public $expr;
+    /** @var Node\AttributeGroup[] */
+    public $attrGroups;
 
     /**
      * @param array $subNodes   Array of the following optional subnodes:
@@ -30,6 +32,7 @@ class ArrowFunction extends Expr implements FunctionLike
      *                          'params'     => array() : Parameters
      *                          'returnType' => null    : Return type
      *                          'expr'       => Expr    : Expression body
+     *                          'attrGroups' => array() : PHP attribute groups
      * @param array $attributes Additional attributes
      */
     public function __construct(array $subNodes = [], array $attributes = []) {
@@ -40,10 +43,11 @@ public function __construct(array $subNodes = [], array $attributes = []) {
         $returnType = $subNodes['returnType'] ?? null;
         $this->returnType = \is_string($returnType) ? new Node\Identifier($returnType) : $returnType;
         $this->expr = $subNodes['expr'] ?? null;
+        $this->attrGroups = $subNodes['attrGroups'] ?? [];
     }
 
     public function getSubNodeNames() : array {
-        return ['static', 'byRef', 'params', 'returnType', 'expr'];
+        return ['attrGroups', 'static', 'byRef', 'params', 'returnType', 'expr'];
     }
 
     public function returnsByRef() : bool {
@@ -58,6 +62,10 @@ public function getReturnType() {
         return $this->returnType;
     }
 
+    public function getAttrGroups() : array {
+        return $this->attrGroups;
+    }
+
     /**
      * @return Node\Stmt\Return_[]
      */
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 dfda88a7a9..56e621f252 100644
--- a/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/Closure.php
+++ b/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/Closure.php
@@ -16,10 +16,12 @@ class Closure extends Expr implements FunctionLike
     public $params;
     /** @var ClosureUse[] use()s */
     public $uses;
-    /** @var null|Node\Identifier|Node\Name|Node\NullableType Return type */
+    /** @var null|Node\Identifier|Node\Name|Node\NullableType|Node\UnionType Return type */
     public $returnType;
     /** @var Node\Stmt[] Statements */
     public $stmts;
+    /** @var Node\AttributeGroup[] PHP attribute groups */
+    public $attrGroups;
 
     /**
      * Constructs a lambda function node.
@@ -31,6 +33,7 @@ class Closure extends Expr implements FunctionLike
      *                          'uses'       => array(): use()s
      *                          'returnType' => null   : Return type
      *                          'stmts'      => array(): Statements
+     *                          'attrGroups' => array(): PHP attributes groups
      * @param array $attributes Additional attributes
      */
     public function __construct(array $subNodes = [], array $attributes = []) {
@@ -42,10 +45,11 @@ public function __construct(array $subNodes = [], array $attributes = []) {
         $returnType = $subNodes['returnType'] ?? null;
         $this->returnType = \is_string($returnType) ? new Node\Identifier($returnType) : $returnType;
         $this->stmts = $subNodes['stmts'] ?? [];
+        $this->attrGroups = $subNodes['attrGroups'] ?? [];
     }
 
     public function getSubNodeNames() : array {
-        return ['static', 'byRef', 'params', 'uses', 'returnType', 'stmts'];
+        return ['attrGroups', 'static', 'byRef', 'params', 'uses', 'returnType', 'stmts'];
     }
 
     public function returnsByRef() : bool {
@@ -64,7 +68,11 @@ public function getReturnType() {
     public function getStmts() : array {
         return $this->stmts;
     }
-    
+
+    public function getAttrGroups() : array {
+        return $this->attrGroups;
+    }
+
     public function getType() : string {
         return 'Expr_Closure';
     }
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/Match_.php b/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/Match_.php
new file mode 100644
index 0000000000..2455a30264
--- /dev/null
+++ b/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/Match_.php
@@ -0,0 +1,31 @@
+<?php declare(strict_types=1);
+
+namespace PhpParser\Node\Expr;
+
+use PhpParser\Node;
+use PhpParser\Node\MatchArm;
+
+class Match_ extends Node\Expr
+{
+    /** @var Node\Expr */
+    public $cond;
+    /** @var MatchArm[] */
+    public $arms;
+
+    /**
+     * @param MatchArm[] $arms
+     */
+    public function __construct(Node\Expr $cond, array $arms = [], array $attributes = []) {
+        $this->attributes = $attributes;
+        $this->cond = $cond;
+        $this->arms = $arms;
+    }
+
+    public function getSubNodeNames() : array {
+        return ['cond', 'arms'];
+    }
+
+    public function getType() : string {
+        return 'Expr_Match';
+    }
+}
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/NullsafeMethodCall.php b/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/NullsafeMethodCall.php
new file mode 100644
index 0000000000..361e446227
--- /dev/null
+++ b/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/NullsafeMethodCall.php
@@ -0,0 +1,40 @@
+<?php declare(strict_types=1);
+
+namespace PhpParser\Node\Expr;
+
+use PhpParser\Node\Arg;
+use PhpParser\Node\Expr;
+use PhpParser\Node\Identifier;
+
+class NullsafeMethodCall extends Expr
+{
+    /** @var Expr Variable holding object */
+    public $var;
+    /** @var Identifier|Expr Method name */
+    public $name;
+    /** @var Arg[] Arguments */
+    public $args;
+
+    /**
+     * Constructs a nullsafe method call node.
+     *
+     * @param Expr                   $var        Variable holding object
+     * @param string|Identifier|Expr $name       Method name
+     * @param Arg[]                  $args       Arguments
+     * @param array                  $attributes Additional attributes
+     */
+    public function __construct(Expr $var, $name, array $args = [], array $attributes = []) {
+        $this->attributes = $attributes;
+        $this->var = $var;
+        $this->name = \is_string($name) ? new Identifier($name) : $name;
+        $this->args = $args;
+    }
+
+    public function getSubNodeNames() : array {
+        return ['var', 'name', 'args'];
+    }
+    
+    public function getType() : string {
+        return 'Expr_NullsafeMethodCall';
+    }
+}
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/NullsafePropertyFetch.php b/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/NullsafePropertyFetch.php
new file mode 100644
index 0000000000..9317eb3b91
--- /dev/null
+++ b/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/NullsafePropertyFetch.php
@@ -0,0 +1,35 @@
+<?php declare(strict_types=1);
+
+namespace PhpParser\Node\Expr;
+
+use PhpParser\Node\Expr;
+use PhpParser\Node\Identifier;
+
+class NullsafePropertyFetch extends Expr
+{
+    /** @var Expr Variable holding object */
+    public $var;
+    /** @var Identifier|Expr Property name */
+    public $name;
+
+    /**
+     * Constructs a nullsafe property fetch node.
+     *
+     * @param Expr                   $var        Variable holding object
+     * @param string|Identifier|Expr $name       Property name
+     * @param array                  $attributes Additional attributes
+     */
+    public function __construct(Expr $var, $name, array $attributes = []) {
+        $this->attributes = $attributes;
+        $this->var = $var;
+        $this->name = \is_string($name) ? new Identifier($name) : $name;
+    }
+
+    public function getSubNodeNames() : array {
+        return ['var', 'name'];
+    }
+    
+    public function getType() : string {
+        return 'Expr_NullsafePropertyFetch';
+    }
+}
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/Throw_.php b/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/Throw_.php
new file mode 100644
index 0000000000..5c97f0e2b4
--- /dev/null
+++ b/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/Throw_.php
@@ -0,0 +1,30 @@
+<?php declare(strict_types=1);
+
+namespace PhpParser\Node\Expr;
+
+use PhpParser\Node;
+
+class Throw_ extends Node\Expr
+{
+    /** @var Node\Expr Expression */
+    public $expr;
+
+    /**
+     * Constructs a throw expression node.
+     *
+     * @param Node\Expr $expr       Expression
+     * @param array     $attributes Additional attributes
+     */
+    public function __construct(Node\Expr $expr, array $attributes = []) {
+        $this->attributes = $attributes;
+        $this->expr = $expr;
+    }
+
+    public function getSubNodeNames() : array {
+        return ['expr'];
+    }
+
+    public function getType() : string {
+        return 'Expr_Throw';
+    }
+}
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Node/FunctionLike.php b/vendor/nikic/php-parser/lib/PhpParser/Node/FunctionLike.php
index d574e02082..bbcf53e55f 100644
--- a/vendor/nikic/php-parser/lib/PhpParser/Node/FunctionLike.php
+++ b/vendor/nikic/php-parser/lib/PhpParser/Node/FunctionLike.php
@@ -16,21 +16,28 @@ public function returnsByRef() : bool;
     /**
      * List of parameters
      *
-     * @return Node\Param[]
+     * @return Param[]
      */
     public function getParams() : array;
 
     /**
      * Get the declared return type or null
      *
-     * @return null|Identifier|Node\Name|Node\NullableType
+     * @return null|Identifier|Name|NullableType|UnionType
      */
     public function getReturnType();
 
     /**
      * The function body
      *
-     * @return Node\Stmt[]|null
+     * @return Stmt[]|null
      */
     public function getStmts();
+
+    /**
+     * Get PHP attribute groups.
+     *
+     * @return AttributeGroup[]
+     */
+    public function getAttrGroups() : array;
 }
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Node/MatchArm.php b/vendor/nikic/php-parser/lib/PhpParser/Node/MatchArm.php
new file mode 100644
index 0000000000..2ae1c86b85
--- /dev/null
+++ b/vendor/nikic/php-parser/lib/PhpParser/Node/MatchArm.php
@@ -0,0 +1,31 @@
+<?php declare(strict_types=1);
+
+namespace PhpParser\Node;
+
+use PhpParser\Node;
+use PhpParser\NodeAbstract;
+
+class MatchArm extends NodeAbstract
+{
+    /** @var null|Node\Expr[] */
+    public $conds;
+    /** @var Node\Expr */
+    public $body;
+
+    /**
+     * @param null|Node\Expr[] $conds
+     */
+    public function __construct($conds, Node\Expr $body, array $attributes = []) {
+        $this->conds = $conds;
+        $this->body = $body;
+        $this->attributes = $attributes;
+    }
+
+    public function getSubNodeNames() : array {
+        return ['conds', 'body'];
+    }
+
+    public function getType() : string {
+        return 'MatchArm';
+    }
+}
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Node/Name.php b/vendor/nikic/php-parser/lib/PhpParser/Node/Name.php
index 7ebdd579cf..6b1cc9f8ed 100644
--- a/vendor/nikic/php-parser/lib/PhpParser/Node/Name.php
+++ b/vendor/nikic/php-parser/lib/PhpParser/Node/Name.php
@@ -85,7 +85,7 @@ public function isRelative() : bool {
     }
 
     /**
-     * Returns a string representation of the name itself, without taking taking the name type into
+     * Returns a string representation of the name itself, without taking the name type into
      * account (e.g., not including a leading backslash for fully qualified names).
      *
      * @return string String representation
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Node/Param.php b/vendor/nikic/php-parser/lib/PhpParser/Node/Param.php
index 5bc8a1cb88..315b5f24f6 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 Type declaration */
+    /** @var null|Identifier|Name|NullableType|UnionType Type declaration */
     public $type;
     /** @var bool Whether parameter is passed by reference */
     public $byRef;
@@ -16,20 +16,29 @@ class Param extends NodeAbstract
     public $var;
     /** @var null|Expr Default value */
     public $default;
+    /** @var int */
+    public $flags;
+    /** @var AttributeGroup[] PHP attribute groups */
+    public $attrGroups;
 
     /**
      * Constructs a parameter node.
      *
-     * @param Expr\Variable|Expr\Error                 $var        Parameter variable
-     * @param null|Expr                                $default    Default value
-     * @param null|string|Identifier|Name|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
+     * @param Expr\Variable|Expr\Error                           $var        Parameter variable
+     * @param null|Expr                                          $default    Default value
+     * @param null|string|Identifier|Name|NullableType|UnionType $type       Type declaration
+     * @param bool                                               $byRef      Whether is passed by reference
+     * @param bool                                               $variadic   Whether this is a variadic argument
+     * @param array                                              $attributes Additional attributes
+     * @param int                                                $flags      Optional visibility flags
+     * @param AttributeGroup[]                                   $attrGroups PHP attribute groups
      */
     public function __construct(
         $var, Expr $default = null, $type = null,
-        bool $byRef = false, bool $variadic = false, array $attributes = []
+        bool $byRef = false, bool $variadic = false,
+        array $attributes = [],
+        int $flags = 0,
+        array $attrGroups = []
     ) {
         $this->attributes = $attributes;
         $this->type = \is_string($type) ? new Identifier($type) : $type;
@@ -37,10 +46,12 @@ public function __construct(
         $this->variadic = $variadic;
         $this->var = $var;
         $this->default = $default;
+        $this->flags = $flags;
+        $this->attrGroups = $attrGroups;
     }
 
     public function getSubNodeNames() : array {
-        return ['type', 'byRef', 'variadic', 'var', 'default'];
+        return ['attrGroups', 'flags', 'type', 'byRef', 'variadic', 'var', 'default'];
     }
 
     public function getType() : string {
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 7b7ae378d7..29ce0dd401 100644
--- a/vendor/nikic/php-parser/lib/PhpParser/Node/Scalar/DNumber.php
+++ b/vendor/nikic/php-parser/lib/PhpParser/Node/Scalar/DNumber.php
@@ -34,6 +34,8 @@ public function getSubNodeNames() : array {
      * @return float The parsed number
      */
     public static function parse(string $str) : float {
+        $str = str_replace('_', '', $str);
+
         // if string contains any of .eE just cast it to float
         if (false !== strpbrk($str, '.eE')) {
             return (float) $str;
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 5c5aca3f79..b33943547e 100644
--- a/vendor/nikic/php-parser/lib/PhpParser/Node/Scalar/LNumber.php
+++ b/vendor/nikic/php-parser/lib/PhpParser/Node/Scalar/LNumber.php
@@ -41,6 +41,8 @@ public function getSubNodeNames() : array {
      * @return LNumber The constructed LNumber, including kind attribute
      */
     public static function fromString(string $str, array $attributes = [], bool $allowInvalidOctal = false) : LNumber {
+        $str = str_replace('_', '', $str);
+
         if ('0' !== $str[0] || '0' === $str) {
             $attributes['kind'] = LNumber::KIND_DEC;
             return new LNumber((int) $str, $attributes);
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 de6318d053..8a6d93a474 100644
--- a/vendor/nikic/php-parser/lib/PhpParser/Node/Scalar/String_.php
+++ b/vendor/nikic/php-parser/lib/PhpParser/Node/Scalar/String_.php
@@ -100,7 +100,7 @@ function($matches) {
                 if (isset(self::$replacements[$str])) {
                     return self::$replacements[$str];
                 } elseif ('x' === $str[0] || 'X' === $str[0]) {
-                    return chr(hexdec($str));
+                    return chr(hexdec(substr($str, 1)));
                 } elseif ('u' === $str[0]) {
                     return self::codePointToUtf8(hexdec($matches[2]));
                 } else {
@@ -134,7 +134,7 @@ private static function codePointToUtf8(int $num) : string {
         }
         throw new Error('Invalid UTF-8 codepoint escape sequence: Codepoint too large');
     }
-    
+
     public function getType() : string {
         return 'Scalar_String';
     }
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Catch_.php b/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Catch_.php
index 7d4a7034be..9b9c094782 100644
--- a/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Catch_.php
+++ b/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Catch_.php
@@ -9,7 +9,7 @@ class Catch_ extends Node\Stmt
 {
     /** @var Node\Name[] Types of exceptions to catch */
     public $types;
-    /** @var Expr\Variable Variable for exception */
+    /** @var Expr\Variable|null Variable for exception */
     public $var;
     /** @var Node\Stmt[] Statements */
     public $stmts;
@@ -17,13 +17,13 @@ class Catch_ extends Node\Stmt
     /**
      * Constructs a catch node.
      *
-     * @param Node\Name[]   $types      Types of exceptions to catch
-     * @param Expr\Variable $var        Variable for exception
-     * @param Node\Stmt[]   $stmts      Statements
-     * @param array         $attributes Additional attributes
+     * @param Node\Name[]           $types      Types of exceptions to catch
+     * @param Expr\Variable|null    $var        Variable for exception
+     * @param Node\Stmt[]           $stmts      Statements
+     * @param array                 $attributes Additional attributes
      */
     public function __construct(
-        array $types, Expr\Variable $var, array $stmts = [], array $attributes = []
+        array $types, Expr\Variable $var = null, array $stmts = [], array $attributes = []
     ) {
         $this->attributes = $attributes;
         $this->types = $types;
@@ -34,7 +34,7 @@ public function __construct(
     public function getSubNodeNames() : array {
         return ['types', 'var', 'stmts'];
     }
-    
+
     public function getType() : string {
         return 'Stmt_Catch';
     }
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/ClassConst.php b/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/ClassConst.php
index 73a5010309..c459acb152 100644
--- a/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/ClassConst.php
+++ b/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/ClassConst.php
@@ -10,22 +10,31 @@ class ClassConst extends Node\Stmt
     public $flags;
     /** @var Node\Const_[] Constant declarations */
     public $consts;
+    /** @var Node\AttributeGroup[] */
+    public $attrGroups;
 
     /**
      * Constructs a class const list node.
      *
-     * @param Node\Const_[] $consts     Constant declarations
-     * @param int           $flags      Modifiers
-     * @param array         $attributes Additional attributes
+     * @param Node\Const_[]         $consts     Constant declarations
+     * @param int                   $flags      Modifiers
+     * @param array                 $attributes Additional attributes
+     * @param Node\AttributeGroup[] $attrGroups PHP attribute groups
      */
-    public function __construct(array $consts, int $flags = 0, array $attributes = []) {
+    public function __construct(
+        array $consts,
+        int $flags = 0,
+        array $attributes = [],
+        array $attrGroups = []
+    ) {
         $this->attributes = $attributes;
         $this->flags = $flags;
         $this->consts = $consts;
+        $this->attrGroups = $attrGroups;
     }
 
     public function getSubNodeNames() : array {
-        return ['flags', 'consts'];
+        return ['attrGroups', 'flags', 'consts'];
     }
 
     /**
@@ -55,7 +64,7 @@ public function isProtected() : bool {
     public function isPrivate() : bool {
         return (bool) ($this->flags & Class_::MODIFIER_PRIVATE);
     }
-    
+
     public function getType() : string {
         return 'Stmt_ClassConst';
     }
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/ClassLike.php b/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/ClassLike.php
index 31cd66ac95..840c4f67ec 100644
--- a/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/ClassLike.php
+++ b/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/ClassLike.php
@@ -13,6 +13,67 @@ abstract class ClassLike extends Node\Stmt
     public $name;
     /** @var Node\Stmt[] Statements */
     public $stmts;
+    /** @var Node\AttributeGroup[] PHP attribute groups */
+    public $attrGroups;
+
+    /**
+     * @return TraitUse[]
+     */
+    public function getTraitUses() : array {
+        $traitUses = [];
+        foreach ($this->stmts as $stmt) {
+            if ($stmt instanceof TraitUse) {
+                $traitUses[] = $stmt;
+            }
+        }
+        return $traitUses;
+    }
+
+    /**
+     * @return ClassConst[]
+     */
+    public function getConstants() : array {
+        $constants = [];
+        foreach ($this->stmts as $stmt) {
+            if ($stmt instanceof ClassConst) {
+                $constants[] = $stmt;
+            }
+        }
+        return $constants;
+    }
+
+    /**
+     * @return Property[]
+     */
+    public function getProperties() : array {
+        $properties = [];
+        foreach ($this->stmts as $stmt) {
+            if ($stmt instanceof Property) {
+                $properties[] = $stmt;
+            }
+        }
+        return $properties;
+    }
+
+    /**
+     * Gets property with the given name defined directly in this class/interface/trait.
+     *
+     * @param string $name Name of the property
+     *
+     * @return Property|null Property node or null if the property does not exist
+     */
+    public function getProperty(string $name) {
+        foreach ($this->stmts as $stmt) {
+            if ($stmt instanceof Property) {
+                foreach ($stmt->props as $prop) {
+                    if ($prop instanceof PropertyProperty && $name === $prop->name->toString()) {
+                        return $stmt;
+                    }
+                }
+            }
+        }
+        return null;
+    }
 
     /**
      * Gets all methods defined directly in this class/interface/trait
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 881dcd7ff5..92157fab26 100644
--- a/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/ClassMethod.php
+++ b/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/ClassMethod.php
@@ -15,10 +15,12 @@ class ClassMethod extends Node\Stmt implements FunctionLike
     public $name;
     /** @var Node\Param[] Parameters */
     public $params;
-    /** @var null|Node\Identifier|Node\Name|Node\NullableType Return type */
+    /** @var null|Node\Identifier|Node\Name|Node\NullableType|Node\UnionType Return type */
     public $returnType;
     /** @var Node\Stmt[]|null Statements */
     public $stmts;
+    /** @var Node\AttributeGroup[] PHP attribute groups */
+    public $attrGroups;
 
     private static $magicNames = [
         '__construct'  => true,
@@ -48,6 +50,7 @@ class ClassMethod extends Node\Stmt implements FunctionLike
      *                          'params'     => array()        : Parameters
      *                          'returnType' => null           : Return type
      *                          'stmts'      => array()        : Statements
+     *                          'attrGroups' => array()        : PHP attribute groups
      * @param array $attributes Additional attributes
      */
     public function __construct($name, array $subNodes = [], array $attributes = []) {
@@ -59,10 +62,11 @@ public function __construct($name, array $subNodes = [], array $attributes = [])
         $returnType = $subNodes['returnType'] ?? null;
         $this->returnType = \is_string($returnType) ? new Node\Identifier($returnType) : $returnType;
         $this->stmts = array_key_exists('stmts', $subNodes) ? $subNodes['stmts'] : [];
+        $this->attrGroups = $subNodes['attrGroups'] ?? [];
     }
 
     public function getSubNodeNames() : array {
-        return ['flags', 'byRef', 'name', 'params', 'returnType', 'stmts'];
+        return ['attrGroups', 'flags', 'byRef', 'name', 'params', 'returnType', 'stmts'];
     }
 
     public function returnsByRef() : bool {
@@ -81,6 +85,10 @@ public function getStmts() {
         return $this->stmts;
     }
 
+    public function getAttrGroups() : array {
+        return $this->attrGroups;
+    }
+
     /**
      * Whether the method is explicitly or implicitly public.
      *
@@ -120,7 +128,7 @@ public function isAbstract() : bool {
 
     /**
      * Whether the method is final.
-     * 
+     *
      * @return bool
      */
     public function isFinal() : bool {
@@ -144,7 +152,7 @@ public function isStatic() : bool {
     public function isMagic() : bool {
         return isset(self::$magicNames[$this->name->toLowerString()]);
     }
-    
+
     public function getType() : string {
         return 'Stmt_ClassMethod';
     }
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Class_.php b/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Class_.php
index a97c3f4ae8..ace266f74b 100644
--- a/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Class_.php
+++ b/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Class_.php
@@ -28,10 +28,11 @@ class Class_ extends ClassLike
      *
      * @param string|Node\Identifier|null $name Name
      * @param array       $subNodes   Array of the following optional subnodes:
-     *                                'flags'      => 0      : Flags
-     *                                'extends'    => null   : Name of extended class
-     *                                'implements' => array(): Names of implemented interfaces
-     *                                'stmts'      => array(): Statements
+     *                                'flags'       => 0      : Flags
+     *                                'extends'     => null   : Name of extended class
+     *                                'implements'  => array(): Names of implemented interfaces
+     *                                'stmts'       => array(): Statements
+     *                                '$attrGroups' => array(): PHP attribute groups
      * @param array       $attributes Additional attributes
      */
     public function __construct($name, array $subNodes = [], array $attributes = []) {
@@ -41,10 +42,11 @@ public function __construct($name, array $subNodes = [], array $attributes = [])
         $this->extends = $subNodes['extends'] ?? null;
         $this->implements = $subNodes['implements'] ?? [];
         $this->stmts = $subNodes['stmts'] ?? [];
+        $this->attrGroups = $subNodes['attrGroups'] ?? [];
     }
 
     public function getSubNodeNames() : array {
-        return ['flags', 'name', 'extends', 'implements', 'stmts'];
+        return ['attrGroups', 'flags', 'name', 'extends', 'implements', 'stmts'];
     }
 
     /**
@@ -98,7 +100,7 @@ public static function verifyModifier($a, $b) {
             throw new Error('Cannot use the final modifier on an abstract class member');
         }
     }
-    
+
     public function getType() : string {
         return 'Stmt_Class';
     }
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Function_.php b/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Function_.php
index d11a4df9d3..f08481fae1 100644
--- a/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Function_.php
+++ b/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Function_.php
@@ -16,10 +16,12 @@ class Function_ extends Node\Stmt implements FunctionLike
     public $name;
     /** @var Node\Param[] Parameters */
     public $params;
-    /** @var null|Node\Identifier|Node\Name|Node\NullableType Return type */
+    /** @var null|Node\Identifier|Node\Name|Node\NullableType|Node\UnionType Return type */
     public $returnType;
     /** @var Node\Stmt[] Statements */
     public $stmts;
+    /** @var Node\AttributeGroup[] PHP attribute groups */
+    public $attrGroups;
 
     /**
      * Constructs a function node.
@@ -30,6 +32,7 @@ class Function_ extends Node\Stmt implements FunctionLike
      *                           'params'     => array(): Parameters
      *                           'returnType' => null   : Return type
      *                           'stmts'      => array(): Statements
+     *                           'attrGroups' => array(): PHP attribute groups
      * @param array  $attributes Additional attributes
      */
     public function __construct($name, array $subNodes = [], array $attributes = []) {
@@ -40,10 +43,11 @@ public function __construct($name, array $subNodes = [], array $attributes = [])
         $returnType = $subNodes['returnType'] ?? null;
         $this->returnType = \is_string($returnType) ? new Node\Identifier($returnType) : $returnType;
         $this->stmts = $subNodes['stmts'] ?? [];
+        $this->attrGroups = $subNodes['attrGroups'] ?? [];
     }
 
     public function getSubNodeNames() : array {
-        return ['byRef', 'name', 'params', 'returnType', 'stmts'];
+        return ['attrGroups', 'byRef', 'name', 'params', 'returnType', 'stmts'];
     }
 
     public function returnsByRef() : bool {
@@ -58,11 +62,15 @@ public function getReturnType() {
         return $this->returnType;
     }
 
+    public function getAttrGroups() : array {
+        return $this->attrGroups;
+    }
+
     /** @return Node\Stmt[] */
     public function getStmts() : array {
         return $this->stmts;
     }
-    
+
     public function getType() : string {
         return 'Stmt_Function';
     }
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Interface_.php b/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Interface_.php
index 052558113d..4d587dd484 100644
--- a/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Interface_.php
+++ b/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Interface_.php
@@ -14,8 +14,9 @@ class Interface_ extends ClassLike
      *
      * @param string|Node\Identifier $name Name
      * @param array  $subNodes   Array of the following optional subnodes:
-     *                           'extends' => array(): Name of extended interfaces
-     *                           'stmts'   => array(): Statements
+     *                           'extends'    => array(): Name of extended interfaces
+     *                           'stmts'      => array(): Statements
+     *                           'attrGroups' => array(): PHP attribute groups
      * @param array  $attributes Additional attributes
      */
     public function __construct($name, array $subNodes = [], array $attributes = []) {
@@ -23,12 +24,13 @@ public function __construct($name, array $subNodes = [], array $attributes = [])
         $this->name = \is_string($name) ? new Node\Identifier($name) : $name;
         $this->extends = $subNodes['extends'] ?? [];
         $this->stmts = $subNodes['stmts'] ?? [];
+        $this->attrGroups = $subNodes['attrGroups'] ?? [];
     }
 
     public function getSubNodeNames() : array {
-        return ['name', 'extends', 'stmts'];
+        return ['attrGroups', 'name', 'extends', 'stmts'];
     }
-    
+
     public function getType() : string {
         return 'Stmt_Interface';
     }
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 849b8b44e9..324345b85f 100644
--- a/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Property.php
+++ b/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Property.php
@@ -6,6 +6,7 @@
 use PhpParser\Node\Identifier;
 use PhpParser\Node\Name;
 use PhpParser\Node\NullableType;
+use PhpParser\Node\UnionType;
 
 class Property extends Node\Stmt
 {
@@ -13,26 +14,30 @@ class Property extends Node\Stmt
     public $flags;
     /** @var PropertyProperty[] Properties */
     public $props;
-    /** @var null|Identifier|Name|NullableType Type declaration */
+    /** @var null|Identifier|Name|NullableType|UnionType Type declaration */
     public $type;
+    /** @var Node\AttributeGroup[] PHP attribute groups */
+    public $attrGroups;
 
     /**
      * Constructs a class property list node.
      *
-     * @param int                                      $flags      Modifiers
-     * @param PropertyProperty[]                       $props      Properties
-     * @param array                                    $attributes Additional attributes
-     * @param null|string|Identifier|Name|NullableType $type       Type declaration
+     * @param int                                                $flags      Modifiers
+     * @param PropertyProperty[]                                 $props      Properties
+     * @param array                                              $attributes Additional attributes
+     * @param null|string|Identifier|Name|NullableType|UnionType $type       Type declaration
+     * @param Node\AttributeGroup[]                              $attrGroups PHP attribute groups
      */
-    public function __construct(int $flags, array $props, array $attributes = [], $type = null) {
+    public function __construct(int $flags, array $props, array $attributes = [], $type = null, array $attrGroups = []) {
         $this->attributes = $attributes;
         $this->flags = $flags;
         $this->props = $props;
         $this->type = \is_string($type) ? new Identifier($type) : $type;
+        $this->attrGroups = $attrGroups;
     }
 
     public function getSubNodeNames() : array {
-        return ['flags', 'type', 'props'];
+        return ['attrGroups', 'flags', 'type', 'props'];
     }
 
     /**
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 f97f56718a..a34e2b3624 100644
--- a/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Throw_.php
+++ b/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Throw_.php
@@ -10,7 +10,7 @@ class Throw_ extends Node\Stmt
     public $expr;
 
     /**
-     * Constructs a throw node.
+     * Constructs a legacy throw statement node.
      *
      * @param Node\Expr $expr       Expression
      * @param array     $attributes Additional attributes
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 1ffa664e7e..0cec203ac7 100644
--- a/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Trait_.php
+++ b/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Trait_.php
@@ -11,19 +11,21 @@ class Trait_ extends ClassLike
      *
      * @param string|Node\Identifier $name Name
      * @param array  $subNodes   Array of the following optional subnodes:
-     *                           'stmts' => array(): Statements
+     *                           'stmts'      => array(): Statements
+     *                           'attrGroups' => array(): PHP attribute groups
      * @param array  $attributes Additional attributes
      */
     public function __construct($name, array $subNodes = [], array $attributes = []) {
         $this->attributes = $attributes;
         $this->name = \is_string($name) ? new Node\Identifier($name) : $name;
         $this->stmts = $subNodes['stmts'] ?? [];
+        $this->attrGroups = $subNodes['attrGroups'] ?? [];
     }
 
     public function getSubNodeNames() : array {
-        return ['name', 'stmts'];
+        return ['attrGroups', 'name', 'stmts'];
     }
-    
+
     public function getType() : string {
         return 'Stmt_Trait';
     }
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/TryCatch.php b/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/TryCatch.php
index 47b9aae74d..7fc158c570 100644
--- a/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/TryCatch.php
+++ b/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/TryCatch.php
@@ -18,7 +18,7 @@ class TryCatch extends Node\Stmt
      *
      * @param Node\Stmt[]   $stmts      Statements
      * @param Catch_[]      $catches    Catches
-     * @param null|Finally_ $finally    Optionaly finally node
+     * @param null|Finally_ $finally    Optional finally node
      * @param array         $attributes Additional attributes
      */
     public function __construct(array $stmts, array $catches, Finally_ $finally = null, array $attributes = []) {
@@ -31,7 +31,7 @@ public function __construct(array $stmts, array $catches, Finally_ $finally = nu
     public function getSubNodeNames() : array {
         return ['stmts', 'catches', 'finally'];
     }
-    
+
     public function getType() : string {
         return 'Stmt_TryCatch';
     }
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Node/UnionType.php b/vendor/nikic/php-parser/lib/PhpParser/Node/UnionType.php
new file mode 100644
index 0000000000..c8f45235d6
--- /dev/null
+++ b/vendor/nikic/php-parser/lib/PhpParser/Node/UnionType.php
@@ -0,0 +1,30 @@
+<?php declare(strict_types=1);
+
+namespace PhpParser\Node;
+
+use PhpParser\NodeAbstract;
+
+class UnionType extends NodeAbstract
+{
+    /** @var (Identifier|Name)[] Types */
+    public $types;
+
+    /**
+     * Constructs a union type.
+     *
+     * @param (Identifier|Name)[] $types      Types
+     * @param array               $attributes Additional attributes
+     */
+    public function __construct(array $types, array $attributes = []) {
+        $this->attributes = $attributes;
+        $this->types = $types;
+    }
+
+    public function getSubNodeNames() : array {
+        return ['types'];
+    }
+    
+    public function getType() : string {
+        return 'UnionType';
+    }
+}
diff --git a/vendor/nikic/php-parser/lib/PhpParser/NodeAbstract.php b/vendor/nikic/php-parser/lib/PhpParser/NodeAbstract.php
index fda595994d..04514da116 100644
--- a/vendor/nikic/php-parser/lib/PhpParser/NodeAbstract.php
+++ b/vendor/nikic/php-parser/lib/PhpParser/NodeAbstract.php
@@ -108,22 +108,18 @@ public function getComments() : array {
     /**
      * Gets the doc comment of the node.
      *
-     * The doc comment has to be the last comment associated with the node.
-     *
      * @return null|Comment\Doc Doc comment object or null
      */
     public function getDocComment() {
         $comments = $this->getComments();
-        if (!$comments) {
-            return null;
-        }
-
-        $lastComment = $comments[count($comments) - 1];
-        if (!$lastComment instanceof Comment\Doc) {
-            return null;
+        for ($i = count($comments) - 1; $i >= 0; $i--) {
+            $comment = $comments[$i];
+            if ($comment instanceof Comment\Doc) {
+                return $comment;
+            }
         }
 
-        return $lastComment;
+        return null;
     }
 
     /**
@@ -135,16 +131,17 @@ public function getDocComment() {
      */
     public function setDocComment(Comment\Doc $docComment) {
         $comments = $this->getComments();
-
-        $numComments = count($comments);
-        if ($numComments > 0 && $comments[$numComments - 1] instanceof Comment\Doc) {
-            // Replace existing doc comment
-            $comments[$numComments - 1] = $docComment;
-        } else {
-            // Append new comment
-            $comments[] = $docComment;
+        for ($i = count($comments) - 1; $i >= 0; $i--) {
+            if ($comments[$i] instanceof Comment\Doc) {
+                // Replace existing doc comment.
+                $comments[$i] = $docComment;
+                $this->setAttribute('comments', $comments);
+                return;
+            }
         }
 
+        // Append new doc comment.
+        $comments[] = $docComment;
         $this->setAttribute('comments', $comments);
     }
 
diff --git a/vendor/nikic/php-parser/lib/PhpParser/NodeVisitor/NameResolver.php b/vendor/nikic/php-parser/lib/PhpParser/NodeVisitor/NameResolver.php
index cfe8ce7643..c55532a5ea 100644
--- a/vendor/nikic/php-parser/lib/PhpParser/NodeVisitor/NameResolver.php
+++ b/vendor/nikic/php-parser/lib/PhpParser/NodeVisitor/NameResolver.php
@@ -75,6 +75,7 @@ public function enterNode(Node $node) {
                 $interface = $this->resolveClassName($interface);
             }
 
+            $this->resolveAttrGroups($node);
             if (null !== $node->name) {
                 $this->addNamespacedName($node);
             }
@@ -83,24 +84,32 @@ public function enterNode(Node $node) {
                 $interface = $this->resolveClassName($interface);
             }
 
+            $this->resolveAttrGroups($node);
             $this->addNamespacedName($node);
         } elseif ($node instanceof Stmt\Trait_) {
+            $this->resolveAttrGroups($node);
             $this->addNamespacedName($node);
         } elseif ($node instanceof Stmt\Function_) {
-            $this->addNamespacedName($node);
             $this->resolveSignature($node);
+            $this->resolveAttrGroups($node);
+            $this->addNamespacedName($node);
         } elseif ($node instanceof Stmt\ClassMethod
                   || $node instanceof Expr\Closure
+                  || $node instanceof Expr\ArrowFunction
         ) {
             $this->resolveSignature($node);
+            $this->resolveAttrGroups($node);
         } elseif ($node instanceof Stmt\Property) {
             if (null !== $node->type) {
                 $node->type = $this->resolveType($node->type);
             }
+            $this->resolveAttrGroups($node);
         } elseif ($node instanceof Stmt\Const_) {
             foreach ($node->consts as $const) {
                 $this->addNamespacedName($const);
             }
+        } else if ($node instanceof Stmt\ClassConst) {
+            $this->resolveAttrGroups($node);
         } elseif ($node instanceof Expr\StaticCall
                   || $node instanceof Expr\StaticPropertyFetch
                   || $node instanceof Expr\ClassConstFetch
@@ -156,17 +165,24 @@ private function addAlias(Stmt\UseUse $use, $type, Name $prefix = null) {
     private function resolveSignature($node) {
         foreach ($node->params as $param) {
             $param->type = $this->resolveType($param->type);
+            $this->resolveAttrGroups($param);
         }
         $node->returnType = $this->resolveType($node->returnType);
     }
 
     private function resolveType($node) {
+        if ($node instanceof Name) {
+            return $this->resolveClassName($node);
+        }
         if ($node instanceof Node\NullableType) {
             $node->type = $this->resolveType($node->type);
             return $node;
         }
-        if ($node instanceof Name) {
-            return $this->resolveClassName($node);
+        if ($node instanceof Node\UnionType) {
+            foreach ($node->types as &$type) {
+                $type = $this->resolveType($type);
+            }
+            return $node;
         }
         return $node;
     }
@@ -218,4 +234,13 @@ protected function addNamespacedName(Node $node) {
         $node->namespacedName = Name::concat(
             $this->nameContext->getNamespace(), (string) $node->name);
     }
+
+    protected function resolveAttrGroups(Node $node)
+    {
+        foreach ($node->attrGroups as $attrGroup) {
+            foreach ($attrGroup->attrs as $attr) {
+                $attr->name = $this->resolveClassName($attr->name);
+            }
+        }
+    }
 }
diff --git a/vendor/nikic/php-parser/lib/PhpParser/NodeVisitor/NodeConnectingVisitor.php b/vendor/nikic/php-parser/lib/PhpParser/NodeVisitor/NodeConnectingVisitor.php
new file mode 100644
index 0000000000..ea372e5b99
--- /dev/null
+++ b/vendor/nikic/php-parser/lib/PhpParser/NodeVisitor/NodeConnectingVisitor.php
@@ -0,0 +1,52 @@
+<?php declare(strict_types=1);
+
+namespace PhpParser\NodeVisitor;
+
+use PhpParser\Node;
+use PhpParser\NodeVisitorAbstract;
+
+/**
+ * Visitor that connects a child node to its parent node
+ * as well as its sibling nodes.
+ *
+ * On the child node, the parent node can be accessed through
+ * <code>$node->getAttribute('parent')</code>, the previous
+ * node can be accessed through <code>$node->getAttribute('previous')</code>,
+ * and the next node can be accessed through <code>$node->getAttribute('next')</code>.
+ */
+final class NodeConnectingVisitor extends NodeVisitorAbstract
+{
+    /**
+     * @var Node[]
+     */
+    private $stack = [];
+
+    /**
+     * @var ?Node
+     */
+    private $previous;
+
+    public function beforeTraverse(array $nodes) {
+        $this->stack    = [];
+        $this->previous = null;
+    }
+
+    public function enterNode(Node $node) {
+        if (!empty($this->stack)) {
+            $node->setAttribute('parent', $this->stack[count($this->stack) - 1]);
+        }
+
+        if ($this->previous !== null && $this->previous->getAttribute('parent') === $node->getAttribute('parent')) {
+            $node->setAttribute('previous', $this->previous);
+            $this->previous->setAttribute('next', $node);
+        }
+
+        $this->stack[] = $node;
+    }
+
+    public function leaveNode(Node $node) {
+        $this->previous = $node;
+
+        array_pop($this->stack);
+    }
+}
diff --git a/vendor/nikic/php-parser/lib/PhpParser/NodeVisitor/ParentConnectingVisitor.php b/vendor/nikic/php-parser/lib/PhpParser/NodeVisitor/ParentConnectingVisitor.php
new file mode 100644
index 0000000000..b98d2bfa6f
--- /dev/null
+++ b/vendor/nikic/php-parser/lib/PhpParser/NodeVisitor/ParentConnectingVisitor.php
@@ -0,0 +1,41 @@
+<?php declare(strict_types=1);
+
+namespace PhpParser\NodeVisitor;
+
+use function array_pop;
+use function count;
+use PhpParser\Node;
+use PhpParser\NodeVisitorAbstract;
+
+/**
+ * Visitor that connects a child node to its parent node.
+ *
+ * On the child node, the parent node can be accessed through
+ * <code>$node->getAttribute('parent')</code>.
+ */
+final class ParentConnectingVisitor extends NodeVisitorAbstract
+{
+    /**
+     * @var Node[]
+     */
+    private $stack = [];
+
+    public function beforeTraverse(array $nodes)
+    {
+        $this->stack = [];
+    }
+
+    public function enterNode(Node $node)
+    {
+        if (!empty($this->stack)) {
+            $node->setAttribute('parent', $this->stack[count($this->stack) - 1]);
+        }
+
+        $this->stack[] = $node;
+    }
+
+    public function leaveNode(Node $node)
+    {
+        array_pop($this->stack);
+    }
+}
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Parser/Php5.php b/vendor/nikic/php-parser/lib/PhpParser/Parser/Php5.php
index a558d28b78..c67a5e707a 100644
--- a/vendor/nikic/php-parser/lib/PhpParser/Parser/Php5.php
+++ b/vendor/nikic/php-parser/lib/PhpParser/Parser/Php5.php
@@ -17,21 +17,22 @@
  */
 class Php5 extends \PhpParser\ParserAbstract
 {
-    protected $tokenToSymbolMapSize = 394;
-    protected $actionTableSize = 1079;
-    protected $gotoTableSize = 650;
+    protected $tokenToSymbolMapSize = 392;
+    protected $actionTableSize = 1069;
+    protected $gotoTableSize = 580;
 
-    protected $invalidSymbol = 159;
+    protected $invalidSymbol = 165;
     protected $errorSymbol = 1;
     protected $defaultAction = -32766;
     protected $unexpectedTokenRule = 32767;
 
-    protected $YY2TBLSTATE = 407;
-    protected $numNonLeafStates = 676;
+    protected $YY2TBLSTATE = 405;
+    protected $numNonLeafStates = 658;
 
     protected $symbolToName = array(
         "EOF",
         "error",
+        "T_THROW",
         "T_INCLUDE",
         "T_INCLUDE_ONCE",
         "T_EVAL",
@@ -127,6 +128,7 @@ class Php5 extends \PhpParser\ParserAbstract
         "T_ENDDECLARE",
         "T_AS",
         "T_SWITCH",
+        "T_MATCH",
         "T_ENDSWITCH",
         "T_CASE",
         "T_DEFAULT",
@@ -140,7 +142,6 @@ class Php5 extends \PhpParser\ParserAbstract
         "T_TRY",
         "T_CATCH",
         "T_FINALLY",
-        "T_THROW",
         "T_USE",
         "T_INSTEADOF",
         "T_GLOBAL",
@@ -180,6 +181,9 @@ class Php5 extends \PhpParser\ParserAbstract
         "T_DIR",
         "T_NS_SEPARATOR",
         "T_ELLIPSIS",
+        "T_NAME_FULLY_QUALIFIED",
+        "T_NAME_QUALIFIED",
+        "T_NAME_RELATIVE",
         "';'",
         "'{'",
         "'}'",
@@ -188,348 +192,346 @@ class Php5 extends \PhpParser\ParserAbstract
         "'$'",
         "'`'",
         "']'",
-        "'\"'"
+        "'\"'",
+        "T_NULLSAFE_OBJECT_OPERATOR",
+        "T_ATTRIBUTE"
     );
 
     protected $tokenToSymbol = array(
-            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,
+            0,  165,  165,  165,  165,  165,  165,  165,  165,  165,
+          165,  165,  165,  165,  165,  165,  165,  165,  165,  165,
+          165,  165,  165,  165,  165,  165,  165,  165,  165,  165,
+          165,  165,  165,   55,  162,  165,  159,   54,   37,  165,
+          157,  158,   52,   49,    8,   50,   51,   53,  165,  165,
+          165,  165,  165,  165,  165,  165,  165,  165,   31,  154,
+           43,   16,   45,   30,   67,  165,  165,  165,  165,  165,
+          165,  165,  165,  165,  165,  165,  165,  165,  165,  165,
+          165,  165,  165,  165,  165,  165,  165,  165,  165,  165,
+          165,   69,  165,  161,   36,  165,  160,  165,  165,  165,
+          165,  165,  165,  165,  165,  165,  165,  165,  165,  165,
+          165,  165,  165,  165,  165,  165,  165,  165,  165,  165,
+          165,  165,  165,  155,   35,  156,   57,  165,  165,  165,
+          165,  165,  165,  165,  165,  165,  165,  165,  165,  165,
+          165,  165,  165,  165,  165,  165,  165,  165,  165,  165,
+          165,  165,  165,  165,  165,  165,  165,  165,  165,  165,
+          165,  165,  165,  165,  165,  165,  165,  165,  165,  165,
+          165,  165,  165,  165,  165,  165,  165,  165,  165,  165,
+          165,  165,  165,  165,  165,  165,  165,  165,  165,  165,
+          165,  165,  165,  165,  165,  165,  165,  165,  165,  165,
+          165,  165,  165,  165,  165,  165,  165,  165,  165,  165,
+          165,  165,  165,  165,  165,  165,  165,  165,  165,  165,
+          165,  165,  165,  165,  165,  165,  165,  165,  165,  165,
+          165,  165,  165,  165,  165,  165,  165,  165,  165,  165,
+          165,  165,  165,  165,  165,  165,  165,  165,  165,  165,
+          165,  165,  165,  165,  165,  165,    1,    2,    3,    4,
+            5,    6,    7,    9,   10,   11,   12,   13,   14,   15,
            17,   18,   19,   20,   21,   22,   23,   24,   25,   26,
-           27,   28,   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,  138,  139,  159,  159,
-          159,  159,  159,  159,  140,  141,  142,  143,  144,  145,
-          146,  147,  148,  149
+           27,   28,   29,   32,   33,   34,   38,   39,   40,   41,
+           42,   44,   46,   47,   48,   56,   58,   59,   60,   61,
+           62,   63,   64,   65,   66,   68,   70,   71,   72,   73,
+           74,   75,   76,   77,   78,   79,   80,   81,   82,   83,
+           84,   85,   86,   87,   88,   89,   90,   91,   92,   93,
+           94,   95,   96,   97,   98,   99,  100,  101,  102,  103,
+          104,  105,  106,  107,  108,  109,  110,  111,  112,  113,
+          114,  115,  116,  117,  118,  119,  120,  121,  122,  123,
+          124,  125,  126,  127,  128,  129,  130,  131,  163,  132,
+          133,  134,  135,  136,  137,  138,  139,  140,  141,  142,
+          143,  144,  145,  146,  147,  148,  149,  150,  151,  152,
+          153,  164
     );
 
     protected $action = array(
-          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
+          693,  663,  664,  665,  666,  667,  282,  668,  669,  670,
+          706,  707,  221,  222,  223,  224,  225,  226,  227,  228,
+          229,    0,  230,  231,  232,  233,  234,  235,  236,  237,
+          238,  239,  240,  241,-32766,-32766,-32766,-32766,-32766,-32766,
+        -32766,-32766,-32767,-32767,-32767,-32767,   27,  242,  243,-32766,
+        -32766,-32766,-32766,-32766,  671,-32766,  333,-32766,-32766,-32766,
+        -32766,-32766,-32766,-32767,-32767,-32767,-32767,-32767,  672,  673,
+          674,  675,  676,  677,  678, 1034,  816,  740,  941,  942,
+          943,  940,  939,  938,  679,  680,  681,  682,  683,  684,
+          685,  686,  687,  688,  689,  709,  732,  710,  711,  712,
+          713,  701,  702,  703,  731,  704,  705,  690,  691,  692,
+          694,  695,  696,  734,  735,  736,  737,  738,  739,  697,
+          698,  699,  700,  730,  721,  719,  720,  716,  717,  437,
+          708,  714,  715,  722,  723,  725,  724,  726,  727,   55,
+           56,  417,   57,   58,  718,  729,  728,   28,   59,   60,
+         -220,   61,-32766,-32766,-32766,-32766,-32766,-32766,-32766,-32766,
+        -32766,   36,-32767,-32767,-32767,-32767, 1034,   35,  106,  107,
+          108,  109,  110,  111,  112,  113,  114,  115,  116,  117,
+          118,-32766,-32766,-32766,-32766,   62,   63, 1034,  125,  285,
+          292,   64,  748,   65,  290,  291,   66,   67,   68,   69,
+           70,   71,   72,   73,  763,   25,  298,   74,  409,  973,
+          975,  294,  294, 1086, 1087, 1064,  796,  748,  218,  219,
+          220,  465,-32766,-32766,-32766,  742,  864,  817,   54,  807,
+            9,-32766,-32766,-32766,  760,  320,  761,  410,   10,  202,
+          246,  428,  209,-32766,  933,-32766,-32766,-32766,-32766,-32766,
+        -32766,  488,-32766,  438,-32766,-32766,-32766,-32766,-32766,  473,
+          474,  941,  942,  943,  940,  939,  938,-32766,  475,  476,
+          337, 1092, 1093, 1094, 1095, 1089, 1090,  315, 1214, -255,
+          747, 1215, -505, 1096, 1091,  888,  889, 1066, 1065, 1067,
+          218,  219,  220,   41,  414,  337,  330,  895,  332,  418,
+         -126, -126, -126,   75,   52,  464,   -4,  817,   54,  805,
+         -224,  202,   40,   21,  419, -126,  466, -126,  467, -126,
+          468, -126,  359,  420,  128,  128,  748, 1171,   31,   32,
+          421,  422, 1034,  894,   33,  469,-32766,-32766,-32766, 1186,
+          351,  352,  470,  471,-32766,-32766,-32766,  309,  472,  865,
+          323,  788,  835,  423,  424,-32767,-32767,-32767,-32767,   97,
+           98,   99,  100,  101,  615,-32766,  313,-32766,-32766,-32766,
+        -32766,  354, 1185, 1171,  218,  219,  220,  475,  748,  418,
+          819,  629, -126,  297,  915,  464,  817,   54,-32766,  805,
+          124,  748,   40,   21,  419,  202,  466,   48,  467,  534,
+          468,  129,  429,  420,  337,  341,  888,  889,   31,   32,
+          421,  422,  416,  405,   33,  469,-32766,-32766,  311,  298,
+          351,  352,  470,  471,-32766,-32766,-32766,  748,  472,  412,
+          748,  752,  835,  423,  424,  338, 1066, 1065, 1067,  219,
+          220,  919, 1136,  296,   20,-32766,  576,-32766,-32766,-32766,
+          742,  341,  342,  413,  429, 1064,  337,  512,  418,  202,
+          819,  629,   -4, 1034,  464,  817,   54,   49,  805,  337,
+          762,   40,   21,  419,   51,  466, 1034,  467,  475,  468,
+          340,  748,  420,  120, -205, -205, -205,   31,   32,  421,
+          422, 1062,-32766,   33,  469,-32766,-32766,-32766,  744,  351,
+          352,  470,  471,  429, 1098,  337,  429,  472,  337, 1034,
+          788,  835,  423,  424,  415, 1098,-32766,  802,-32766,-32766,
+          102,  103,  104, 1137,  303,  202,  130, 1066, 1065, 1067,
+          337,  123,  239,  240,  241,  748,  105,  418, 1205,  819,
+          629, -205,  440,  464,-32766,-32766,-32766,  805,  242,  243,
+           40,   21,  419,  121,  466,  126,  467,  429,  468,  337,
+          122,  420, 1052, -204, -204, -204,   31,   32,  421,  422,
+         1034,  745,   33,  469,  220,  759,  817,   54,  351,  352,
+          470,  471,  218,  219,  220,  119,  472,  244,  127,  788,
+          835,  423,  424,  202,-32766,-32766,-32766,   30,  293,  803,
+           79,   80,   81,  202,  798,  210,  632,   99,  100,  101,
+          236,  237,  238,  817,   54,-32766,  211,  800,  819,  629,
+         -204,   34, 1034,   82,   83,   84,   85,   86,   87,   88,
+           89,   90,   91,   92,   93,   94,   95,   96,   97,   98,
+           99,  100,  101,  102,  103,  104,  286,  303,  418, 1034,
+          817,   54,-32766,-32766,  464,  218,  219,  220,  805,  105,
+          914,   40,   21,  419,   78,  466,  212,  467,  337,  468,
+          133,  247,  420,  295,  567,  248,  202,   31,   32,  421,
+          633,  242,  243,   33,  469,  418,  249,  817,   54,  351,
+          352,  464,  760,  -84,  761,  805,  310,  472,   40,   21,
+          419,-32766,  466,  640,  467,  643,  468,  447,   22,  420,
+          815,  452,  584,  132,   31,   32,  421,  637,  134,  364,
+           33,  469,  418,  303,  817,   54,  351,  352,  464,  819,
+          629,  828,  805,   43,  472,   40,   21,  419,   44,  466,
+           45,  467,   46,  468,  591,  592,  420,  753,  635,  930,
+          649,   31,   32,  421,  641,  918,  657,   33,  469,  418,
+          105,  817,   54,  351,  352,  464,  819,  629,   47,  805,
+           50,  472,   40,   21,  419,   53,  466,  131,  467,  298,
+          468,  599,  742,  420,-32766, -274,  516,  570,   31,   32,
+          421,  646,  748,  946,   33,  469,  418,  589,  436,-32766,
+          351,  352,  464,  819,  629,  623,  805,  836,  472,   40,
+           21,  419,  611,  466,  -82,  467,  603,  468,   11,  573,
+          420,  439,  456,  281,  318,   31,   32,  421,  588,  432,
+          321,   33,  469,  418, -414,  458,  322,  351,  352,  464,
+          851,  629,  837,  805, -505,  472,   40,   21,  419,  654,
+          466,   38,  467,   24,  468,    0,    0,  420,  319,    0,
+         -405,    0,   31,   32,  421,  245,  312,  314,   33,  469,
+         -506,    0,    0, 1097,  351,  352, 1143,  819,  629,    0,
+            0,  527,  472,  213,  214,    6,    7,   12,   14,  215,
+          363,  216, -415,  558,  789, -221,  830,    0,    0,  747,
+            0,    0,    0,  207,   39,  652,  653,  758,  806,  814,
+          793, 1086, 1087,  808,  819,  629,  213,  214,  867, 1088,
+          858,  859,  215,  791,  216,  852,  849,  847,  925,  926,
+          923,  813,  797,  799,  801,  804,  207,  922,  756,  757,
+          924,  287,   78,  331, 1086, 1087,  353,  630,  634,  636,
+          638,  639, 1088,  642,  644,  645,  647,  648,  631, 1142,
+         1211, 1213,  755,  834,  754,  833, 1212,  554,  832, 1092,
+         1093, 1094, 1095, 1089, 1090,  388, 1048,  824, 1036,  831,
+         1037, 1096, 1091,  822,  931,  856,  857,  451, 1210, 1179,
+            0,  217, 1177, 1162, 1175, 1077,  906, 1183, 1173,    0,
+          554,   26, 1092, 1093, 1094, 1095, 1089, 1090,  388,   29,
+           37,   42,   76,   77, 1096, 1091,  208,  284,  288,  289,
+          304,  305,  306,  307,  217,  335,  406,  408,    0, -220,
+           16,   17,   18,  383,  448,  455,  457,  462,  548,  620,
+         1039, 1042,  896, 1102, 1038, 1014,  559, 1013, 1079,    0,
+            0, -424, 1032,    0, 1043, 1045, 1044, 1047, 1046, 1061,
+         1176, 1161, 1157, 1174, 1076, 1208, 1103, 1156,  595
     );
 
     protected $actionCheck = array(
-            2,    3,    4,    5,    6,   13,    8,    9,   10,   11,
-           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,
+            2,    3,    4,    5,    6,    7,   14,    9,   10,   11,
+           12,   13,   33,   34,   35,   36,   37,   38,   39,   40,
+           41,    0,   43,   44,   45,   46,   47,   48,   49,   50,
+           51,   52,   53,   54,    9,   10,   11,   33,   34,   35,
+           36,   37,   38,   39,   40,   41,    8,   68,   69,   33,
+           34,   35,   36,   37,   56,   30,    8,   32,   33,   34,
+           35,   36,   37,   38,   39,   40,   41,   42,   70,   71,
+           72,   73,   74,   75,   76,   13,    1,   79,  115,  116,
+          117,  118,  119,  120,   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,   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
+          122,  123,  124,  125,  126,  127,  128,  129,  130,   31,
+          132,  133,  134,  135,  136,  137,  138,  139,  140,    3,
+            4,    5,    6,    7,  146,  147,  148,    8,   12,   13,
+          158,   15,   33,   34,   35,   36,   37,   38,   39,   40,
+           41,   14,   43,   44,   45,   46,   13,   16,   17,   18,
+           19,   20,   21,   22,   23,   24,   25,   26,   27,   28,
+           29,   33,   34,   35,   36,   49,   50,   13,    8,    8,
+           37,   55,   81,   57,   58,   59,   60,   61,   62,   63,
+           64,   65,   66,   67,  156,   69,   70,   71,   72,   58,
+           59,   37,   37,   77,   78,   79,  154,   81,    9,   10,
+           11,   85,    9,   10,   11,   79,   31,    1,    2,  154,
+          107,    9,   10,   11,  105,  112,  107,  126,    8,   30,
+           31,  105,    8,   30,  121,   32,   33,   34,   35,   36,
+           37,  115,   30,  155,   32,   33,   34,   35,   36,  123,
+          124,  115,  116,  117,  118,  119,  120,  115,  132,  133,
+          159,  135,  136,  137,  138,  139,  140,  141,   79,  156,
+          151,   82,  131,  147,  148,  133,  134,  151,  152,  153,
+            9,   10,   11,  157,    8,  159,  160,  158,  162,   73,
+           74,   75,   76,  150,   69,   79,    0,    1,    2,   83,
+          158,   30,   86,   87,   88,   89,   90,   91,   92,   93,
+           94,   95,    8,   97,  150,  150,   81,   81,  102,  103,
+          104,  105,   13,  158,  108,  109,    9,   10,   11,  158,
+          114,  115,  116,  117,    9,   10,   11,    8,  122,  154,
+            8,  125,  126,  127,  128,   43,   44,   45,   46,   47,
+           48,   49,   50,   51,   79,   30,  131,   32,   33,   34,
+           35,    8,    1,   81,    9,   10,   11,  132,   81,   73,
+          154,  155,  156,   37,  154,   79,    1,    2,  115,   83,
+          155,   81,   86,   87,   88,   30,   90,   69,   92,   80,
+           94,  155,  157,   97,  159,  159,  133,  134,  102,  103,
+          104,  105,    8,  107,  108,  109,    9,   10,  112,   70,
+          114,  115,  116,  117,    9,   10,   11,   81,  122,    8,
+           81,  125,  126,  127,  128,    8,  151,  152,  153,   10,
+           11,  156,  161,    8,  158,   30,   84,   32,   33,   34,
+           79,  159,  146,    8,  157,   79,  159,   84,   73,   30,
+          154,  155,  156,   13,   79,    1,    2,   69,   83,  159,
+          156,   86,   87,   88,   69,   90,   13,   92,  132,   94,
+           69,   81,   97,  155,   99,  100,  101,  102,  103,  104,
+          105,  115,    9,  108,  109,    9,   10,   11,   79,  114,
+          115,  116,  117,  157,  142,  159,  157,  122,  159,   13,
+          125,  126,  127,  128,    8,  142,   30,  154,   32,   33,
+           52,   53,   54,  158,   56,   30,  155,  151,  152,  153,
+          159,   14,   52,   53,   54,   81,   68,   73,   84,  154,
+          155,  156,  131,   79,   33,   34,   35,   83,   68,   69,
+           86,   87,   88,  155,   90,  155,   92,  157,   94,  159,
+          155,   97,  158,   99,  100,  101,  102,  103,  104,  105,
+           13,  152,  108,  109,   11,  154,    1,    2,  114,  115,
+          116,  117,    9,   10,   11,   16,  122,   14,   31,  125,
+          126,  127,  128,   30,    9,   10,   11,  143,  144,  154,
+            9,   10,   11,   30,  154,   16,   31,   49,   50,   51,
+           49,   50,   51,    1,    2,   30,   16,  154,  154,  155,
+          156,   30,   13,   32,   33,   34,   35,   36,   37,   38,
+           39,   40,   41,   42,   43,   44,   45,   46,   47,   48,
+           49,   50,   51,   52,   53,   54,   37,   56,   73,   13,
+            1,    2,   33,   34,   79,    9,   10,   11,   83,   68,
+          154,   86,   87,   88,  155,   90,   16,   92,  159,   94,
+          155,   16,   97,   37,  159,   16,   30,  102,  103,  104,
+           31,   68,   69,  108,  109,   73,   16,    1,    2,  114,
+          115,   79,  105,   31,  107,   83,   31,  122,   86,   87,
+           88,   33,   90,   31,   92,   31,   94,   74,   75,   97,
+           31,   74,   75,   31,  102,  103,  104,   31,  100,  101,
+          108,  109,   73,   56,    1,    2,  114,  115,   79,  154,
+          155,   37,   83,   69,  122,   86,   87,   88,   69,   90,
+           69,   92,   69,   94,  110,  111,   97,  154,  155,  154,
+          155,  102,  103,  104,   31,  154,  155,  108,  109,   73,
+           68,    1,    2,  114,  115,   79,  154,  155,   69,   83,
+           69,  122,   86,   87,   88,   69,   90,   69,   92,   70,
+           94,   76,   79,   97,   84,   81,   84,   89,  102,  103,
+          104,   31,   81,   81,  108,  109,   73,  112,   88,  115,
+          114,  115,   79,  154,  155,   91,   83,  126,  122,   86,
+           87,   88,   93,   90,   96,   92,   95,   94,   96,   99,
+           97,   96,   96,   96,  129,  102,  103,  104,   99,  105,
+          113,  108,  109,   73,  145,  105,  129,  114,  115,   79,
+          154,  155,  126,   83,  131,  122,   86,   87,   88,  156,
+           90,  154,   92,  157,   94,   -1,   -1,   97,  130,   -1,
+          145,   -1,  102,  103,  104,   31,  131,  131,  108,  109,
+          131,   -1,   -1,  142,  114,  115,  142,  154,  155,   -1,
+           -1,  149,  122,   49,   50,  145,  145,  145,  145,   55,
+          145,   57,  145,  149,  156,  158,  150,   -1,   -1,  151,
+           -1,   -1,   -1,   69,  154,  154,  154,  154,  154,  154,
+          154,   77,   78,  154,  154,  155,   49,   50,  154,   85,
+          154,  154,   55,  154,   57,  154,  154,  154,  154,  154,
+          154,  154,  154,  154,  154,  154,   69,  154,  154,  154,
+          154,  159,  155,  155,   77,   78,  155,  155,  155,  155,
+          155,  155,   85,  155,  155,  155,  155,  155,  155,  162,
+          156,  156,  156,  156,  156,  156,  156,  133,  156,  135,
+          136,  137,  138,  139,  140,  141,  156,  156,  156,  156,
+          156,  147,  148,  156,  156,  156,  156,  156,  156,  156,
+           -1,  157,  156,  156,  156,  156,  156,  156,  156,   -1,
+          133,  157,  135,  136,  137,  138,  139,  140,  141,  157,
+          157,  157,  157,  157,  147,  148,  157,  157,  157,  157,
+          157,  157,  157,  157,  157,  157,  157,  157,   -1,  158,
+          158,  158,  158,  158,  158,  158,  158,  158,  158,  158,
+          158,  158,  158,  158,  158,  158,  158,  158,  158,   -1,
+           -1,  160,  160,   -1,  161,  161,  161,  161,  161,  161,
+          161,  161,  161,  161,  161,  161,  161,  161,  161
     );
 
     protected $actionBase = array(
-            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,  226,  306,  385,  464,  285,  246,  246,  786,   -2,
+           -2,  146,   -2,   -2,   -2,  649,  723,  760,  723,  575,
+          686,  612,  612,  612,  175,  153,  153,  153,  174,  890,
+          319,   62,  450,  463,  557,  609,  636,  496,  496,  496,
+          496,  136,  136,  496,  496,  496,  496,  496,  496,  496,
+          496,  496,  496,  496,  496,  496,  496,  496,  496,  496,
+          496,  496,  496,  496,  496,  496,  496,  496,  496,  496,
+          496,  496,  496,  496,  496,  496,  496,  496,  496,  496,
+          496,  496,  496,  496,  496,  496,  496,  496,  496,  496,
+          496,  496,  496,  496,  496,  496,  496,  496,  496,  496,
+          496,  496,  496,  496,  496,  496,  496,  496,  496,  496,
+          496,  496,  496,  496,  496,  496,  496,  496,  496,  496,
+          496,  496,  496,  496,  496,  496,  496,  496,  496,  496,
+          496,  496,  496,  496,  496,  195,   75,  777,  517,  147,
+          778,  779,  780,  886,  727,  887,  832,  833,  682,  836,
+          837,  838,  839,  840,  831,  841,  907,  842,  591,  591,
+          591,  591,  591,  591,  591,  591,  591,  591,  591,  591,
+          483,  573,  365,  209,  281,  407,  646,  646,  646,  646,
+          646,  646,  646,  327,  327,  327,  327,  327,  327,  327,
+          327,  327,  327,  327,  327,  327,  327,  327,  327,  327,
+          327,  429,  834,  585,  585,  585,  563,  867,  867,  867,
+          867,  867,  867,  867,  867,  867,  867,  867,  867,  867,
+          867,  867,  867,  867,  867,  867,  867,  867,  867,  867,
+          867,  867,  867,  867,  867,  867,  867,  867,  867,  867,
+          867,  867,  867,  867,  867,  867,  867,  867,  867,  867,
+          495,  486,  -21,  -21,  415,  668,  335,  619,  222,  511,
+          213,   25,   25,   25,   25,   25,  148,   16,    4,    4,
+            4,    4,  151,  312,  312,  312,  312,  119,  119,  119,
+          119,  346,  346,  123,  245,  245,  349,  400,  297,  297,
+          297,  297,  297,  297,  297,  297,  297,  297,  111,  558,
+          558,  561,  561,  310,  152,  152,  152,  152,  704,  273,
+          273,  129,  371,  371,  371,  373,  734,  797,  376,  376,
+          376,  376,  376,  376,  468,  468,  468,  480,  480,  480,
+          702,  587,  454,  587,  454,  684,  748,  509,  748,  700,
+          199,  515,  803,  398,  720,  829,  729,  830,  601,  747,
+          235,  782,  724,  419,  782,  633,  637,  634,  419,  419,
+          715,   98,  863,  292,  195,  595,  405,  667,  781,  421,
+          732,  784,  363,  445,  411,  593,  328,  286,  744,  785,
+          888,  889,  181,  739,  667,  667,  667,  139,  362,  328,
+           -8,  613,  613,  613,  613,   48,  613,  613,  613,  613,
+          314,  230,  506,  404,  783,  703,  703,  712,  694,  852,
+          696,  696,  703,  711,  703,  712,  694,  854,  854,  854,
+          854,  703,  694,  703,  703,  703,  696,  696,  694,  709,
+          696,   38,  694,  695,  707,  707,  854,  751,  752,  703,
+          703,  728,  696,  696,  696,  728,  694,  854,  685,  746,
+          234,  696,  854,  665,  711,  665,  703,  685,  694,  665,
+          711,  711,  665,   21,  662,  664,  853,  855,  869,  792,
+          681,  716,  861,  862,  856,  860,  844,  679,  753,  754,
+          569,  669,  671,  673,  699,  740,  701,  735,  724,  692,
+          692,  692,  713,  741,  713,  692,  692,  692,  692,  692,
+          692,  692,  692,  893,  689,  745,  736,  710,  755,  589,
+          600,  793,  731,  738,  882,  875,  891,  892,  863,  880,
+          713,  894,  697,  180,  650,  864,  693,  788,  713,  865,
+          713,  794,  713,  883,  804,  708,  805,  806,  692,  884,
+          895,  896,  897,  898,  899,  900,  901,  902,  706,  903,
+          756,  698,  876,  339,  859,  715,  742,  725,  791,  759,
+          807,  342,  904,  808,  713,  713,  795,  787,  713,  796,
+          764,  750,  872,  766,  877,  905,  731,  726,  878,  713,
+          730,  809,  906,  342,  672,  705,  737,  721,  767,  870,
+          885,  868,  798,  655,  659,  810,  812,  820,  674,  769,
+          873,  874,  871,  771,  799,  670,  800,  719,  821,  801,
+          866,  772,  822,  823,  881,  718,  743,  717,  722,  714,
+          802,  824,  879,  773,  774,  775,  827,  776,  828,    0,
             0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
             0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-            0,    0,    0,    0,    0,    0,    0,  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,
+            0,    0,    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,
@@ -538,173 +540,164 @@ class Php5 extends \PhpParser\ParserAbstract
           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
+          136,  136,  136,  591,  591,  591,  591,  591,  591,  591,
+          591,  591,  591,  591,  591,  591,  591,  591,  591,  591,
+          591,  591,  591,  591,  591,  591,    0,    0,    0,    0,
+            0,    0,    0,    0,    0,    0,    0,    0,  591,  -21,
+          -21,  -21,  -21,  591,  -21,  -21,  -21,  -21,  -21,  -21,
+          -21,  591,  591,  591,  591,  591,  591,  591,  591,  591,
+          591,  591,  591,  591,  591,  591,  591,  591,  591,  -21,
+          376,  591,  591,  591,  -21,  376,  376,  376,  376,  376,
+          376,  376,  376,  376,  376,  376,  376,  376,  376,  376,
+          376,  376,  376,  376,  376,  376,  376,  376,  376,  376,
+          376,  376,  376,  376,  376,  376,  376,  376,  376,  376,
+          376,  376,  376,  376,  376,  376,  376,  376,  -21,  591,
+            0,    0,  591,  -21,  591,  -21,  591,  -21,  591,  591,
+          591,  591,  591,  591,  -21,  -21,  -21,  -21,  -21,  -21,
+            0,  468,  468,  468,  468,  -21,  -21,  -21,  -21,  376,
+          376,  -37,  376,  376,  376,  376,  376,  376,  376,  376,
+          376,  376,  376,  376,  376,  376,  376,  468,  468,  480,
+          480,  376,  376,  376,  376,  376,  -37,  376,  376,  419,
+          711,  711,  711,  454,  454,  454,    0,    0,    0,    0,
+            0,    0,    0,    0,    0,    0,    0,    0,  454,  419,
+            0,  419,    0,  376,  419,  711,  419,  454,  711,  711,
+          419,  696,  618,  618,  618,  618,  342,  328,    0,  711,
+          711,    0,  711,    0,    0,    0,    0,    0,  696,    0,
+          703,    0,    0,    0,    0,  692,  180,    0,  725,  427,
+            0,    0,    0,    0,    0,    0,  725,  427,  435,  435,
+            0,  706,  692,  692,  692,    0,    0,    0,    0,    0,
+            0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+            0,    0,  342
     );
 
     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,  533,  533,  488,32767,32767,
+        32767,32767,32767,32767,32767,  534,  534,  489,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,  522,  522,  522,  522,  522,  522,  522,
+          522,  522,  522,  522,32767,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,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,  382,  538,32767,
+        32767,32767,32767,32767,32767,32767,32767,32767,  382,  539,
         32767,32767,32767,32767,32767,32767,32767,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,
+          360,  361,  292,  542,  523,  241,  383,  538,  291,  243,
+          321,  493,32767,32767,32767,  323,  120,  252,  197,  492,
           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,
+          296,  449,32767,  354,  353,  352,  451,  486,  486,  489,
         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,  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,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
+          450,  319,  477,  476,  320,  447,  324,  448,  326,  452,
+          325,  342,  343,  340,  341,  344,  454,  453,  470,  471,
+          468,  469,  295,  345,  346,  347,  348,  472,  473,  474,
+          475,32767,32767,  276,  533,  533,32767,32767,32767,32767,
+        32767,32767,32767,32767,32767,32767,32767,32767,32767,  333,
+          334,  461,  462,32767,  232,  232,  232,  232,  277,  232,
+        32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,
+        32767,32767,32767,32767,  328,  329,  327,  456,  457,  455,
+          423,32767,32767,32767,  425,32767,32767,32767,32767,32767,
+        32767,32767,32767,  494,32767,32767,32767,32767,32767,  507,
+          412,32767,  404,32767,32767,  216,  218,  165,32767,32767,
+          480,32767,32767,32767,32767,32767,  512,  338,32767,32767,
+          114,32767,32767,32767,  549,32767,  507,32767,  114,32767,
+        32767,32767,32767,  351,  330,  331,  332,32767,32767,  511,
+          505,  464,  465,  466,  467,32767,  458,  459,  460,  463,
+        32767,32767,32767,32767,32767,32767,32767,32767,  169,  420,
+          426,  426,32767,32767,32767,32767,  169,32767,32767,32767,
+        32767,32767,  169,32767,32767,32767,  510,  509,  169,32767,
+          405,  488,  169,  182,  180,  180,32767,  202,  202,32767,
+        32767,  184,  481,  500,32767,  184,  169,32767,  393,  171,
+          488,32767,32767,  234,32767,  234,32767,  393,  169,  234,
+        32767,32767,  234,32767,  406,  430,32767,32767,32767,32767,
+        32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,
+        32767,  372,  373,  483,  496,32767,  497,32767,  404,  336,
+          337,  339,  316,32767,  318,  362,  363,  364,  365,  366,
+          367,  368,  370,32767,  410,32767,  413,32767,32767,32767,
+          251,32767,  547,32767,32767,  300,  547,32767,32767,32767,
+          541,32767,32767,  294,32767,32767,32767,32767,  247,32767,
+          167,32767,  531,32767,  548,32767,  505,32767,  335,32767,
+        32767,32767,32767,32767,32767,32767,32767,32767,  506,32767,
+        32767,32767,32767,  223,32767,  443,32767,  114,32767,32767,
+        32767,  183,32767,32767,  298,  242,32767,32767,  540,32767,
+        32767,32767,32767,32767,32767,32767,32767,  112,32767,  168,
+        32767,32767,32767,  185,32767,32767,  505,32767,32767,32767,
+        32767,32767,32767,32767,  289,32767,32767,32767,32767,32767,
+        32767,32767,  505,32767,32767,  227,32767,32767,32767,32767,
+        32767,32767,32767,32767,32767,  406,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(
-          165,  138,  138,  138,  165,  143,  146,  139,  140,  141,
+          165,  139,  139,  139,  165,  143,  146,  140,  141,  142,
           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,
+          137,  158,  159,  160,  161,  183,  138,  184,  489,  490,
+          367,  491,  495,  496,  497,  498,  499,  500,  501,  502,
+          959,  163,  144,  145,  147,  170,  175,  185,  203,  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,
+          274,  275,  276,  299,  300,  324,  325,  326,  384,  385,
+          386,  538,  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,    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
+          152,  168,  153,  204,  169,  154,  155,  156,  205,  157,
+          135,  616,  556,  574,  578,  622,  624,  556,  556,  556,
+          556,  556,  556,  556,  556,  556,  556,  556,  556,  556,
+          556,  556,  556,  556,  556,  556,  556,  556,  556,  556,
+          556,  556,  556,  556,  556,  556,  556,  556,  556,  556,
+          556,  556,  556,  556,  556,  556,  556,  556,  556,  556,
+         1099,  515,  345,  571,  600, 1099, 1099, 1099, 1099, 1099,
+         1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099,
+         1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099,
+         1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099,
+         1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099,  504, 1202,
+         1202, 1075, 1074,  504,  540,  541,  542,  543,  544,  545,
+          546,  547,  549,  582,    3,    4,  173, 1202,  844,  844,
+          844,  844,  839,  845,  176,  177,  178,  391,  392,  393,
+          394,  172,  201,  206,  250,  255,  257,  259,  266,  267,
+          268,  269,  270,  271,  277,  278,  279,  280,  301,  302,
+          327,  328,  329,  396,  397,  398,  399,  174,  179,  252,
+          253,  180,  181,  182,  493,  493,  750,  493,  493,  493,
+          493,  493,  493,  493,  493,  493,  493,  493,  493,  493,
+          493,  505,  929,  442,  444,  627,  505,  751,  779, 1100,
+          610,  927,  880,  880,  765, 1190, 1190, 1168,  555,  775,
+          764,  743, 1168,  555,  555,  555,  555,  555,  555,  555,
+          555,  555,  555,  555,  555,  555,  555,  555,  555,  555,
+          555,  555,  555,  555,  555,  555,  555,  555,  555,  555,
+          555,  555,  555,  555,  555,  555,  555,  555,  555,  555,
+          555,  555,  555,  555,  555,  555,  390,  602,  746,  532,
+          532,  564,  528,  530,  530,  492,  494,  520,  536,  565,
+          568,  579,  586,  810,  606,  506,  346,  347,  609,  850,
+          506,  365,  537,  746,  533,  746,  563,  430,  430,  375,
+          430,  430,  430,  430,  430,  430,  430,  430,  430,  430,
+          430,  430,  430,  430, 1063,  581,  957,  596,  597, 1063,
+          887,  887,  887,  887, 1160,  887,  887, 1182, 1182, 1182,
+          376,  376,  376,  749, 1063, 1063, 1063, 1063, 1063, 1063,
+          334, 1056,  317,  374,  374,  374,  866,  848,  846,  848,
+          650,  461,  507,  875,  870,  376, 1194,  368,  374,  389,
+          374,  898,  374, 1080,  583,  348,  404,  374, 1216,  590,
+          601, 1017,   19,   15,  361, 1148, 1187,  525,  936,  904,
+          510,  526,  904,  651,  551,  381, 1201, 1201,  587, 1007,
+          550,  877,  607,  608,  873,  612,  613,  619,  621,  626,
+          628,   23,  884,  937, 1201,  336,  598, 1059, 1060, 1204,
+          378, 1056,  557,  539,  893,  768,  766,  379,  514,  902,
+          509,  524,  655, 1057, 1159, 1057,  776,  509, 1167,  524,
+          514,  514, 1058, 1167, 1049,  907,  508, 1054,  511,  433,
+          434,  510, 1184, 1184, 1184,  854,  445,  945,  569, 1145,
+          459,  362,    0,    0,  773, 1209,    0,  518,    0,  519,
+            0,  529,    0,    0,    0,    0,    0, 1166,    0,    0,
+            0,  771,    0,    0,    0,  449,    0,    0,    0,    0,
+            0,    0,  605,    0,    0,    0,    0,   13, 1055,  614
     );
 
     protected $gotoCheck = array(
@@ -719,96 +712,89 @@ 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,   56,   66,    5,   66,   66,   66,   66,   66,   66,
+           42,   56,   66,   59,   59,   59,    8,   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,   14,  124,
-          124,  124,  124,  124,  124,  124,  124,  124,  124,  124,
+           66,   66,   66,   66,   66,   66,   66,   66,   66,   66,
+          124,   99,   69,   39,   39,  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,   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,
+          124,  124,  124,  124,  124,  124,  124,  124,   66,  140,
+          140,  122,  122,   66,  108,  108,  108,  108,  108,  108,
+          108,  108,  108,  108,   29,   29,   26,  140,   66,   66,
+           66,   66,   66,   66,   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,   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,
+           26,   26,   26,   26,  115,  115,   14,  115,  115,  115,
+          115,  115,  115,  115,  115,  115,  115,  115,  115,  115,
+          115,  115,    7,    7,    7,    7,  115,   15,   28,    7,
+            7,    7,   74,   74,   22,   74,   74,  116,   56,   22,
+           22,    5,  116,   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,  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,   -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
+           56,   56,   56,   56,   56,   56,   50,   50,   10,   50,
+           50,   50,   50,   50,   50,   50,   50,   50,   50,   50,
+           50,   50,   50,   49,   60,  120,   69,   69,   60,   32,
+          120,   60,    2,   10,  107,   10,    2,   56,   56,   10,
+           56,   56,   56,   56,   56,   56,   56,   56,   56,   56,
+           56,   56,   56,   56,   56,   64,   99,   64,   64,   56,
+           56,   56,   56,   56,   79,   56,   56,    8,    8,    8,
+          121,  121,  121,   13,   56,   56,   56,   56,   56,   56,
+          123,   79,  123,   12,   12,   12,   13,   13,   13,   13,
+           13,   56,   13,   13,   13,  121,  138,   45,   12,  121,
+           12,   81,   12,   33,   67,   67,   67,   12,   12,  125,
+           48,   33,   33,   33,   33,  129,  136,    8,   95,   12,
+           12,   31,   12,   31,   31,   47,  139,  139,   31,  100,
+           33,   31,   31,   31,   31,   31,   31,   31,   31,   31,
+           31,   33,   76,   95,  139,   17,   33,   79,   79,  139,
+           11,   79,   11,   46,   78,   24,   23,   16,   46,   82,
+            8,    8,   71,   79,   79,   79,   25,    8,  117,    8,
+           46,   46,   79,  117,  111,   83,    8,  113,    8,    8,
+            8,   12,  117,  117,  117,   68,   62,   97,   63,  128,
+          106,   57,   -1,   -1,    8,    8,   -1,   57,   -1,   99,
+           -1,   57,   -1,   -1,   -1,   -1,   -1,  117,   -1,   -1,
+           -1,    8,   -1,   -1,   -1,   57,   -1,   -1,   -1,   -1,
+           -1,   -1,   12,   -1,   -1,   -1,   -1,   57,   12,   12
     );
 
     protected $gotoBase = array(
-            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
+            0,    0, -249,    0,    0,  300,    0,  287,  105,    0,
+           47,  164,  118,  421,  274,  295,  171,  184,    0,    0,
+            0,    0,  -49,  168,  172,  104,   24,    0,  288, -431,
+            0, -159,  359,   44,    0,    0,    0,    0,    0,  125,
+            0,    0,  -24,    0,    0,  407,  479,  186,  178,  355,
+           75,    0,    0,    0,    0,    0,  106,  119,    0, -192,
+          -81,    0,  101,   93, -231,    0,  -90,  135,  121, -276,
+            0,  148,    0,    0,   21,    0,  183,    0,  194,   71,
+            0,  423,  155,  112,    0,    0,    0,    0,    0,    0,
+            0,    0,    0,    0,    0,  185,    0,  122,    0,  120,
+          176,    0,    0,    0,    0,    0,   83,  358,  170,    0,
+            0,  113,    0,  111,    0,   -7,    9,  220,    0,    0,
+           77,  108, -102,  100,  -42,  251,    0,    0,   89,  256,
+            0,    0,    0,    0,    0,    0,  181,    0,  419,  160,
+         -107,    0,    0
     );
 
     protected $gotoDefault = array(
-        -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
+        -32768,  463,  659,    2,  660,  733,  741,  593,  477,  625,
+          577,  370, 1178,  785,  786,  787,  371,  358,  478,  369,
+          400,  395,  774,  767,  769,  777,  171,  401,  780,    1,
+          782,  513,  818, 1008,  355,  790,  356,  585,  792,  522,
+          794,  795,  136,  372,  373,  523,  479,  380,  572,  809,
+          272,  377,  811,  357,  812,  821,  360,  460,  454,  552,
+          604,  425,  441,  566,  560,  531, 1072,  561,  853,  344,
+          861,  656,  869,  872,  480,  553,  883,  446,  891, 1085,
+          387,  897,  903,  908,  283,  911,  407,  402,  580,  916,
+          917,    5,  921,  617,  618,    8,  308,  944,  594,  958,
+          411, 1027, 1029,  481,  482,  517,  453,  503,  521,  483,
+         1050,  435,  403, 1053,  484,  485,  426,  427, 1069,  350,
+         1153,  349,  443,  316, 1140,  575, 1104,  450, 1193, 1149,
+          343,  486,  487,  366, 1172,  382, 1188,  431, 1195, 1203,
+          339,  535,  562
     );
 
     protected $ruleToNonTerminal = array(
@@ -819,10 +805,10 @@ 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,    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,
+            5,    5,    5,    5,    5,    6,    6,    6,    6,    6,
+            6,    6,    7,    7,    8,    9,   10,   10,   11,   11,
+           12,    4,    4,    4,    4,    4,    4,    4,    4,    4,
+            4,    4,   17,   17,   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,
@@ -852,22 +838,22 @@ class Php5 extends \PhpParser\ParserAbstract
            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,
+          114,  114,  114,  114,   66,   66,   56,   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,
-           26,   26,   26,   26,   26,   26,  126,  126,  126,  126,
+          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,  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,  138,  123,  123,  123,  123,  140,  141,  139,  139,
-          139,  139,  139,  139,  139,  142,  142,  142
+          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(
@@ -879,10 +865,10 @@ 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,    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,
+            1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
+            1,    1,    1,    1,    1,    3,    5,    4,    3,    4,
+            2,    3,    1,    1,    7,    6,    3,    1,    3,    1,
+            3,    1,    1,    3,    1,    3,    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,
@@ -911,22 +897,22 @@ class Php5 extends \PhpParser\ParserAbstract
             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,
+            6,    2,    2,    4,    1,    1,    1,    1,    1,    1,
+            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,    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
+            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() {
@@ -944,7 +930,7 @@ protected function initReduceCallbacks() {
                  $this->semValue = array();
             },
             4 => function ($stackPos) {
-                 $startAttributes = $this->lookaheadStartAttributes; if (isset($startAttributes['comments'])) { $nop = new Stmt\Nop($this->createZeroLengthAttributes($startAttributes)); } else { $nop = null; };
+                 $startAttributes = $this->lookaheadStartAttributes; if (isset($startAttributes['comments'])) { $nop = new Stmt\Nop($this->createCommentNopAttributes($startAttributes['comments'])); } else { $nop = null; };
             if ($nop !== null) { $this->semStack[$stackPos-(1-1)][] = $nop; } $this->semValue = $this->semStack[$stackPos-(1-1)];
             },
             5 => function ($stackPos) {
@@ -1176,7 +1162,7 @@ protected function initReduceCallbacks() {
                 $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);
+                $this->semValue = $this->semStack[$stackPos];
             },
             82 => function ($stackPos) {
                  $this->semValue = new Node\Identifier($this->semStack[$stackPos-(1-1)], $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes);
@@ -1188,73 +1174,73 @@ protected function initReduceCallbacks() {
                  $this->semValue = new Node\Identifier($this->semStack[$stackPos-(1-1)], $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes);
             },
             85 => 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);
             },
             86 => function ($stackPos) {
-                 $this->semStack[$stackPos-(3-1)][] = $this->semStack[$stackPos-(3-3)]; $this->semValue = $this->semStack[$stackPos-(3-1)];
+                 $this->semValue = new Name($this->semStack[$stackPos-(1-1)], $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes);
             },
             87 => function ($stackPos) {
                  $this->semValue = new Name($this->semStack[$stackPos-(1-1)], $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes);
             },
             88 => function ($stackPos) {
-                 $this->semValue = new Expr\Variable(substr($this->semStack[$stackPos-(1-1)], 1), $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes);
+                 $this->semValue = $this->semStack[$stackPos-(1-1)];
             },
             89 => function ($stackPos) {
-                 $this->semValue = $this->semStack[$stackPos-(1-1)];
+                 $this->semValue = new Name(substr($this->semStack[$stackPos-(1-1)], 1), $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes);
             },
             90 => 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);
             },
             91 => function ($stackPos) {
                  $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);
+                 $this->semValue = $this->semStack[$stackPos-(1-1)];
             },
             93 => function ($stackPos) {
+                 $this->semValue = $this->semStack[$stackPos-(1-1)];
+            },
+            94 => function ($stackPos) {
+                 $this->semValue = new Stmt\HaltCompiler($this->lexer->handleHaltCompiler(), $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes);
+            },
+            95 => 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);
             },
-            94 => function ($stackPos) {
+            96 => 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);
             },
-            95 => function ($stackPos) {
+            97 => 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);
             },
-            96 => function ($stackPos) {
-                 $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 = 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 = $this->semStack[$stackPos-(2-1)];
+                 $this->semValue = new Stmt\Use_($this->semStack[$stackPos-(3-2)], Stmt\Use_::TYPE_NORMAL, $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
             },
             99 => function ($stackPos) {
-                 $this->semValue = new Stmt\Const_($this->semStack[$stackPos-(3-2)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
+                 $this->semValue = new Stmt\Use_($this->semStack[$stackPos-(4-3)], $this->semStack[$stackPos-(4-2)], $this->startAttributeStack[$stackPos-(4-1)] + $this->endAttributes);
             },
             100 => function ($stackPos) {
-                 $this->semValue = Stmt\Use_::TYPE_FUNCTION;
+                 $this->semValue = $this->semStack[$stackPos-(2-1)];
             },
             101 => function ($stackPos) {
-                 $this->semValue = Stmt\Use_::TYPE_CONSTANT;
+                 $this->semValue = new Stmt\Const_($this->semStack[$stackPos-(3-2)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
             },
             102 => 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_FUNCTION;
             },
             103 => 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 = Stmt\Use_::TYPE_CONSTANT;
             },
             104 => 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($this->semStack[$stackPos-(7-3)], $this->semStack[$stackPos-(7-6)], $this->semStack[$stackPos-(7-2)], $this->startAttributeStack[$stackPos-(7-1)] + $this->endAttributes);
             },
             105 => 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($this->semStack[$stackPos-(6-2)], $this->semStack[$stackPos-(6-5)], Stmt\Use_::TYPE_UNKNOWN, $this->startAttributeStack[$stackPos-(6-1)] + $this->endAttributes);
             },
             106 => function ($stackPos) {
                  $this->semStack[$stackPos-(3-1)][] = $this->semStack[$stackPos-(3-3)]; $this->semValue = $this->semStack[$stackPos-(3-1)];
@@ -1281,10 +1267,10 @@ protected function initReduceCallbacks() {
                  $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-(1-1)];
+                 $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));
             },
             115 => function ($stackPos) {
-                 $this->semValue = $this->semStack[$stackPos-(2-2)];
+                 $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));
             },
             116 => function ($stackPos) {
                  $this->semValue = $this->semStack[$stackPos-(1-1)]; $this->semValue->type = Stmt\Use_::TYPE_NORMAL;
@@ -1317,7 +1303,7 @@ protected function initReduceCallbacks() {
                  $this->semValue = array();
             },
             126 => function ($stackPos) {
-                 $startAttributes = $this->lookaheadStartAttributes; if (isset($startAttributes['comments'])) { $nop = new Stmt\Nop($this->createZeroLengthAttributes($startAttributes)); } else { $nop = null; };
+                 $startAttributes = $this->lookaheadStartAttributes; if (isset($startAttributes['comments'])) { $nop = new Stmt\Nop($this->createCommentNopAttributes($startAttributes['comments'])); } else { $nop = null; };
             if ($nop !== null) { $this->semStack[$stackPos-(1-1)][] = $nop; } $this->semValue = $this->semStack[$stackPos-(1-1)];
             },
             127 => function ($stackPos) {
@@ -1715,7 +1701,7 @@ protected function initReduceCallbacks() {
                  $this->semValue = array();
             },
             255 => function ($stackPos) {
-                 $startAttributes = $this->lookaheadStartAttributes; if (isset($startAttributes['comments'])) { $nop = new Stmt\Nop($this->createZeroLengthAttributes($startAttributes)); } else { $nop = null; };
+                 $startAttributes = $this->lookaheadStartAttributes; if (isset($startAttributes['comments'])) { $nop = new Stmt\Nop($this->createCommentNopAttributes($startAttributes['comments'])); } else { $nop = null; };
             if ($nop !== null) { $this->semStack[$stackPos-(1-1)][] = $nop; } $this->semValue = $this->semStack[$stackPos-(1-1)];
             },
             256 => function ($stackPos) {
@@ -2181,13 +2167,13 @@ protected function initReduceCallbacks() {
                  $this->semValue = new Name($this->semStack[$stackPos-(1-1)], $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes);
             },
             407 => function ($stackPos) {
-                 $this->semValue = new Name\FullyQualified($this->semStack[$stackPos-(2-2)], $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes);
+                 $this->semValue = new Name($this->semStack[$stackPos-(1-1)], $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes);
             },
             408 => function ($stackPos) {
-                 $this->semValue = new Name\Relative($this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
+                 $this->semValue = new Name\FullyQualified(substr($this->semStack[$stackPos-(1-1)], 1), $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes);
             },
             409 => function ($stackPos) {
-                 $this->semValue = $this->semStack[$stackPos-(1-1)];
+                 $this->semValue = new Name\Relative(substr($this->semStack[$stackPos-(1-1)], 10), $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes);
             },
             410 => function ($stackPos) {
                  $this->semValue = $this->semStack[$stackPos-(1-1)];
@@ -2205,243 +2191,243 @@ protected function initReduceCallbacks() {
                  $this->semValue = $this->semStack[$stackPos-(1-1)];
             },
             415 => 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)];
             },
             416 => function ($stackPos) {
                  $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 = 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);
             },
             418 => function ($stackPos) {
                  $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 = null;
+                 $this->semValue = new Expr\ArrayDimFetch($this->semStack[$stackPos-(4-1)], $this->semStack[$stackPos-(4-3)], $this->startAttributeStack[$stackPos-(4-1)] + $this->endAttributes);
             },
             420 => function ($stackPos) {
                  $this->semValue = null;
             },
             421 => function ($stackPos) {
-                 $this->semValue = $this->semStack[$stackPos-(1-1)];
+                 $this->semValue = null;
             },
             422 => function ($stackPos) {
-                 $this->semValue = array();
+                 $this->semValue = $this->semStack[$stackPos-(1-1)];
             },
             423 => 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 = array();
             },
             424 => 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(new Scalar\EncapsedStringPart(Scalar\String_::parseEscapeSequences($this->semStack[$stackPos-(1-1)], '`', false), $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes));
             },
             425 => function ($stackPos) {
-                 $this->semValue = array();
+                 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)];
             },
             426 => function ($stackPos) {
-                 $this->semValue = $this->semStack[$stackPos-(1-1)];
+                 $this->semValue = array();
             },
             427 => function ($stackPos) {
-                 $this->semValue = $this->parseLNumber($this->semStack[$stackPos-(1-1)], $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes, true);
+                 $this->semValue = $this->semStack[$stackPos-(1-1)];
             },
             428 => 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->parseLNumber($this->semStack[$stackPos-(1-1)], $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes, true);
             },
             429 => 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 = new Scalar\DNumber(Scalar\DNumber::parse($this->semStack[$stackPos-(1-1)]), $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes);
             },
             430 => function ($stackPos) {
-                 $this->semValue = new Scalar\MagicConst\Line($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);
             },
             431 => function ($stackPos) {
-                 $this->semValue = new Scalar\MagicConst\File($this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes);
+                 $this->semValue = new Scalar\MagicConst\Line($this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes);
             },
             432 => function ($stackPos) {
-                 $this->semValue = new Scalar\MagicConst\Dir($this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes);
+                 $this->semValue = new Scalar\MagicConst\File($this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes);
             },
             433 => function ($stackPos) {
-                 $this->semValue = new Scalar\MagicConst\Class_($this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes);
+                 $this->semValue = new Scalar\MagicConst\Dir($this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes);
             },
             434 => function ($stackPos) {
-                 $this->semValue = new Scalar\MagicConst\Trait_($this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes);
+                 $this->semValue = new Scalar\MagicConst\Class_($this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes);
             },
             435 => function ($stackPos) {
-                 $this->semValue = new Scalar\MagicConst\Method($this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes);
+                 $this->semValue = new Scalar\MagicConst\Trait_($this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes);
             },
             436 => function ($stackPos) {
-                 $this->semValue = new Scalar\MagicConst\Function_($this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes);
+                 $this->semValue = new Scalar\MagicConst\Method($this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes);
             },
             437 => function ($stackPos) {
-                 $this->semValue = new Scalar\MagicConst\Namespace_($this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes);
+                 $this->semValue = new Scalar\MagicConst\Function_($this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes);
             },
             438 => function ($stackPos) {
-                 $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);
+                 $this->semValue = new Scalar\MagicConst\Namespace_($this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes);
             },
             439 => function ($stackPos) {
-                 $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);
+                 $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);
             },
             440 => 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)], false);
             },
             441 => 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-(1-1)];
             },
             442 => function ($stackPos) {
-                 $this->semValue = new Expr\ConstFetch($this->semStack[$stackPos-(1-1)], $this->startAttributeStack[$stackPos-(1-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);
             },
             443 => function ($stackPos) {
-                 $this->semValue = new Expr\Array_($this->semStack[$stackPos-(4-3)], $this->startAttributeStack[$stackPos-(4-1)] + $this->endAttributes);
+                 $this->semValue = new Expr\ConstFetch($this->semStack[$stackPos-(1-1)], $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes);
             },
             444 => function ($stackPos) {
-                 $this->semValue = new Expr\Array_($this->semStack[$stackPos-(3-2)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
+                 $this->semValue = new Expr\Array_($this->semStack[$stackPos-(4-3)], $this->startAttributeStack[$stackPos-(4-1)] + $this->endAttributes);
             },
             445 => function ($stackPos) {
-                 $this->semValue = $this->semStack[$stackPos-(1-1)];
+                 $this->semValue = new Expr\Array_($this->semStack[$stackPos-(3-2)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
             },
             446 => 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 = $this->semStack[$stackPos-(1-1)];
             },
             447 => 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\BinaryOp\BooleanOr($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\LogicalOr($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);
             },
             449 => 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\LogicalOr($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\LogicalXor($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);
             },
             451 => 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\LogicalXor($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\BitwiseAnd($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);
             },
             453 => 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\BitwiseAnd($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\Concat($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);
             },
             455 => 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\Concat($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\Minus($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);
             },
             457 => 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\Minus($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\Div($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);
             },
             459 => 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\Div($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\ShiftLeft($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);
             },
             461 => 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\ShiftLeft($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
             },
             462 => 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\ShiftRight($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
             },
             463 => function ($stackPos) {
-                 $this->semValue = new Expr\UnaryPlus($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);
             },
             464 => function ($stackPos) {
-                 $this->semValue = new Expr\UnaryMinus($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);
             },
             465 => function ($stackPos) {
-                 $this->semValue = new Expr\BooleanNot($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);
             },
             466 => function ($stackPos) {
-                 $this->semValue = new Expr\BitwiseNot($this->semStack[$stackPos-(2-2)], $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes);
+                 $this->semValue = new Expr\BooleanNot($this->semStack[$stackPos-(2-2)], $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes);
             },
             467 => 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\BitwiseNot($this->semStack[$stackPos-(2-2)], $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes);
             },
             468 => 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\BinaryOp\Identical($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\Equal($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);
             },
             470 => 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\Equal($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\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);
             },
             472 => 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\Smaller($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
             },
             473 => 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\SmallerOrEqual($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
             },
             474 => 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\Greater($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
             },
             475 => 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);
             },
             476 => 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\Ternary($this->semStack[$stackPos-(5-1)], $this->semStack[$stackPos-(5-3)], $this->semStack[$stackPos-(5-5)], $this->startAttributeStack[$stackPos-(5-1)] + $this->endAttributes);
             },
             477 => 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-(4-1)], null, $this->semStack[$stackPos-(4-4)], $this->startAttributeStack[$stackPos-(4-1)] + $this->endAttributes);
             },
             478 => 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);
             },
             479 => function ($stackPos) {
-                 $this->semValue = new Expr\ConstFetch($this->semStack[$stackPos-(1-1)], $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes);
+                 $this->semValue = $this->semStack[$stackPos-(3-2)];
             },
             480 => 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 = new Expr\ConstFetch($this->semStack[$stackPos-(1-1)], $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes);
             },
             481 => 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);
             },
             482 => function ($stackPos) {
                  $this->semValue = $this->semStack[$stackPos-(1-1)];
             },
             483 => 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)];
             },
             484 => function ($stackPos) {
-                 $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);
+                 $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);
             },
             485 => function ($stackPos) {
-                 $this->semValue = array();
+                 $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);
             },
             486 => function ($stackPos) {
-                 $this->semValue = $this->semStack[$stackPos-(2-1)];
+                 $this->semValue = array();
             },
             487 => function ($stackPos) {
-                $this->semValue = $this->semStack[$stackPos];
+                 $this->semValue = $this->semStack[$stackPos-(2-1)];
             },
             488 => function ($stackPos) {
                 $this->semValue = $this->semStack[$stackPos];
             },
             489 => function ($stackPos) {
-                 $this->semStack[$stackPos-(3-1)][] = $this->semStack[$stackPos-(3-3)]; $this->semValue = $this->semStack[$stackPos-(3-1)];
+                $this->semValue = $this->semStack[$stackPos];
             },
             490 => 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)];
             },
             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->semValue = array($this->semStack[$stackPos-(1-1)]);
             },
             492 => 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\ArrayItem($this->semStack[$stackPos-(3-3)], $this->semStack[$stackPos-(3-1)], false, $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
             },
             493 => 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);
             },
             494 => function ($stackPos) {
                  $this->semValue = $this->semStack[$stackPos-(1-1)];
@@ -2453,61 +2439,61 @@ protected function initReduceCallbacks() {
                  $this->semValue = $this->semStack[$stackPos-(1-1)];
             },
             497 => 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)];
             },
             498 => 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\ArrayDimFetch($this->semStack[$stackPos-(6-2)], $this->semStack[$stackPos-(6-5)], $this->startAttributeStack[$stackPos-(6-1)] + $this->endAttributes);
             },
             499 => 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);
             },
             500 => 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\PropertyFetch($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
             },
             501 => 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\MethodCall($this->semStack[$stackPos-(4-1)], $this->semStack[$stackPos-(4-3)], $this->semStack[$stackPos-(4-4)], $this->startAttributeStack[$stackPos-(4-1)] + $this->endAttributes);
             },
             502 => 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);
             },
             503 => function ($stackPos) {
                  $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)];
+                 $this->semValue = new Expr\ArrayDimFetch($this->semStack[$stackPos-(4-1)], $this->semStack[$stackPos-(4-3)], $this->startAttributeStack[$stackPos-(4-1)] + $this->endAttributes);
             },
             505 => function ($stackPos) {
-                 $this->semValue = $this->semStack[$stackPos-(3-2)];
+                 $this->semValue = $this->semStack[$stackPos-(1-1)];
             },
             506 => function ($stackPos) {
-                 $this->semValue = $this->semStack[$stackPos-(1-1)];
+                 $this->semValue = $this->semStack[$stackPos-(3-2)];
             },
             507 => 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)];
             },
             508 => 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);
             },
             509 => function ($stackPos) {
                  $this->semValue = $this->semStack[$stackPos-(1-1)];
             },
             510 => 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)];
             },
             511 => function ($stackPos) {
-                 $this->semValue = $this->semStack[$stackPos-(1-1)];
+                 $this->semValue = new Expr\StaticPropertyFetch($this->semStack[$stackPos-(4-1)], $this->semStack[$stackPos-(4-4)], $this->startAttributeStack[$stackPos-(4-1)] + $this->endAttributes);
             },
             512 => 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 = $this->semStack[$stackPos-(1-1)];
             },
             513 => function ($stackPos) {
-                 $this->semValue = new Expr\StaticPropertyFetch($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-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;
             },
             514 => function ($stackPos) {
-                 $this->semValue = new Expr\StaticPropertyFetch($this->semStack[$stackPos-(6-1)], $this->semStack[$stackPos-(6-5)], $this->startAttributeStack[$stackPos-(6-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);
             },
             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);
+                 $this->semValue = new Expr\StaticPropertyFetch($this->semStack[$stackPos-(6-1)], $this->semStack[$stackPos-(6-5)], $this->startAttributeStack[$stackPos-(6-1)] + $this->endAttributes);
             },
             516 => function ($stackPos) {
                  $this->semValue = new Expr\ArrayDimFetch($this->semStack[$stackPos-(4-1)], $this->semStack[$stackPos-(4-3)], $this->startAttributeStack[$stackPos-(4-1)] + $this->endAttributes);
@@ -2519,120 +2505,123 @@ 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);
             },
             519 => 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);
             },
             520 => function ($stackPos) {
-                 $this->semValue = new Expr\Variable($this->semStack[$stackPos-(4-3)], $this->startAttributeStack[$stackPos-(4-1)] + $this->endAttributes);
+                 $this->semValue = $this->semStack[$stackPos-(1-1)];
             },
             521 => function ($stackPos) {
-                 $this->semValue = null;
+                 $this->semValue = new Expr\Variable($this->semStack[$stackPos-(4-3)], $this->startAttributeStack[$stackPos-(4-1)] + $this->endAttributes);
             },
             522 => function ($stackPos) {
-                 $this->semValue = $this->semStack[$stackPos-(1-1)];
+                 $this->semValue = null;
             },
             523 => function ($stackPos) {
                  $this->semValue = $this->semStack[$stackPos-(1-1)];
             },
             524 => function ($stackPos) {
-                 $this->semValue = $this->semStack[$stackPos-(3-2)];
+                 $this->semValue = $this->semStack[$stackPos-(1-1)];
             },
             525 => function ($stackPos) {
-                 $this->semValue = $this->semStack[$stackPos-(1-1)];
+                 $this->semValue = $this->semStack[$stackPos-(3-2)];
             },
             526 => function ($stackPos) {
-                 $this->semValue = new Expr\Error($this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes); $this->errorState = 2;
+                 $this->semValue = $this->semStack[$stackPos-(1-1)];
             },
             527 => function ($stackPos) {
-                 $this->semValue = new Expr\List_($this->semStack[$stackPos-(4-3)], $this->startAttributeStack[$stackPos-(4-1)] + $this->endAttributes);
+                 $this->semValue = new Expr\Error($this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes); $this->errorState = 2;
             },
             528 => function ($stackPos) {
-                 $this->semStack[$stackPos-(3-1)][] = $this->semStack[$stackPos-(3-3)]; $this->semValue = $this->semStack[$stackPos-(3-1)];
+                 $this->semValue = new Expr\List_($this->semStack[$stackPos-(4-3)], $this->startAttributeStack[$stackPos-(4-1)] + $this->endAttributes);
             },
             529 => 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)];
             },
             530 => 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)]);
             },
             531 => function ($stackPos) {
                  $this->semValue = new Expr\ArrayItem($this->semStack[$stackPos-(1-1)], null, false, $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes);
             },
             532 => function ($stackPos) {
-                 $this->semValue = null;
+                 $this->semValue = new Expr\ArrayItem($this->semStack[$stackPos-(1-1)], null, false, $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes);
             },
             533 => function ($stackPos) {
-                 $this->semValue = array();
+                 $this->semValue = null;
             },
             534 => function ($stackPos) {
-                 $this->semValue = $this->semStack[$stackPos-(2-1)];
+                 $this->semValue = array();
             },
             535 => 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)];
             },
             536 => 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)];
             },
             537 => 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 = array($this->semStack[$stackPos-(1-1)]);
             },
             538 => 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\ArrayItem($this->semStack[$stackPos-(3-3)], $this->semStack[$stackPos-(3-1)], false, $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
             },
             539 => 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-(1-1)], null, false, $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes);
             },
             540 => 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-(4-4)], $this->semStack[$stackPos-(4-1)], true, $this->startAttributeStack[$stackPos-(4-1)] + $this->endAttributes);
             },
             541 => function ($stackPos) {
-                 $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);
+                 $this->semValue = new Expr\ArrayItem($this->semStack[$stackPos-(2-2)], null, true, $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes);
             },
             542 => 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, false, $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes, true, $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes);
             },
             543 => function ($stackPos) {
                  $this->semStack[$stackPos-(2-1)][] = $this->semStack[$stackPos-(2-2)]; $this->semValue = $this->semStack[$stackPos-(2-1)];
             },
             544 => function ($stackPos) {
-                 $this->semValue = array($this->semStack[$stackPos-(1-1)]);
+                 $this->semStack[$stackPos-(2-1)][] = $this->semStack[$stackPos-(2-2)]; $this->semValue = $this->semStack[$stackPos-(2-1)];
             },
             545 => function ($stackPos) {
-                 $this->semValue = array($this->semStack[$stackPos-(2-1)], $this->semStack[$stackPos-(2-2)]);
+                 $this->semValue = array($this->semStack[$stackPos-(1-1)]);
             },
             546 => function ($stackPos) {
-                 $this->semValue = new Scalar\EncapsedStringPart($this->semStack[$stackPos-(1-1)], $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes);
+                 $this->semValue = array($this->semStack[$stackPos-(2-1)], $this->semStack[$stackPos-(2-2)]);
             },
             547 => function ($stackPos) {
-                 $this->semValue = new Expr\Variable($this->semStack[$stackPos-(1-1)], $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes);
+                 $this->semValue = new Scalar\EncapsedStringPart($this->semStack[$stackPos-(1-1)], $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes);
             },
             548 => function ($stackPos) {
-                 $this->semValue = $this->semStack[$stackPos-(1-1)];
+                 $this->semValue = new Expr\Variable($this->semStack[$stackPos-(1-1)], $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes);
             },
             549 => 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)];
             },
             550 => 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);
             },
             551 => function ($stackPos) {
-                 $this->semValue = new Expr\Variable($this->semStack[$stackPos-(3-2)], $this->startAttributeStack[$stackPos-(3-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);
             },
             552 => function ($stackPos) {
                  $this->semValue = new Expr\Variable($this->semStack[$stackPos-(3-2)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
             },
             553 => 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-(3-2)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
             },
             554 => function ($stackPos) {
-                 $this->semValue = $this->semStack[$stackPos-(3-2)];
+                 $this->semValue = new Expr\ArrayDimFetch($this->semStack[$stackPos-(6-2)], $this->semStack[$stackPos-(6-4)], $this->startAttributeStack[$stackPos-(6-1)] + $this->endAttributes);
             },
             555 => function ($stackPos) {
-                 $this->semValue = new Scalar\String_($this->semStack[$stackPos-(1-1)], $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes);
+                 $this->semValue = $this->semStack[$stackPos-(3-2)];
             },
             556 => function ($stackPos) {
-                 $this->semValue = $this->parseNumString($this->semStack[$stackPos-(1-1)], $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes);
+                 $this->semValue = new Scalar\String_($this->semStack[$stackPos-(1-1)], $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes);
             },
             557 => function ($stackPos) {
+                 $this->semValue = $this->parseNumString($this->semStack[$stackPos-(1-1)], $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes);
+            },
+            558 => 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 75c8305fa0..cbfbd34aa2 100644
--- a/vendor/nikic/php-parser/lib/PhpParser/Parser/Php7.php
+++ b/vendor/nikic/php-parser/lib/PhpParser/Parser/Php7.php
@@ -17,21 +17,22 @@
  */
 class Php7 extends \PhpParser\ParserAbstract
 {
-    protected $tokenToSymbolMapSize = 394;
-    protected $actionTableSize = 964;
-    protected $gotoTableSize = 508;
+    protected $tokenToSymbolMapSize = 392;
+    protected $actionTableSize = 1162;
+    protected $gotoTableSize = 611;
 
-    protected $invalidSymbol = 159;
+    protected $invalidSymbol = 165;
     protected $errorSymbol = 1;
     protected $defaultAction = -32766;
     protected $unexpectedTokenRule = 32767;
 
-    protected $YY2TBLSTATE = 348;
-    protected $numNonLeafStates = 602;
+    protected $YY2TBLSTATE = 397;
+    protected $numNonLeafStates = 694;
 
     protected $symbolToName = array(
         "EOF",
         "error",
+        "T_THROW",
         "T_INCLUDE",
         "T_INCLUDE_ONCE",
         "T_EVAL",
@@ -127,6 +128,7 @@ class Php7 extends \PhpParser\ParserAbstract
         "T_ENDDECLARE",
         "T_AS",
         "T_SWITCH",
+        "T_MATCH",
         "T_ENDSWITCH",
         "T_CASE",
         "T_DEFAULT",
@@ -140,7 +142,6 @@ class Php7 extends \PhpParser\ParserAbstract
         "T_TRY",
         "T_CATCH",
         "T_FINALLY",
-        "T_THROW",
         "T_USE",
         "T_INSTEADOF",
         "T_GLOBAL",
@@ -161,6 +162,7 @@ class Php7 extends \PhpParser\ParserAbstract
         "T_EXTENDS",
         "T_IMPLEMENTS",
         "T_OBJECT_OPERATOR",
+        "T_NULLSAFE_OBJECT_OPERATOR",
         "T_LIST",
         "T_ARRAY",
         "T_CALLABLE",
@@ -180,566 +182,658 @@ class Php7 extends \PhpParser\ParserAbstract
         "T_DIR",
         "T_NS_SEPARATOR",
         "T_ELLIPSIS",
+        "T_NAME_FULLY_QUALIFIED",
+        "T_NAME_QUALIFIED",
+        "T_NAME_RELATIVE",
+        "T_ATTRIBUTE",
         "';'",
+        "']'",
         "'{'",
         "'}'",
         "'('",
         "')'",
         "'`'",
-        "']'",
         "'\"'",
         "'$'"
     );
 
     protected $tokenToSymbol = array(
-            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,
+            0,  165,  165,  165,  165,  165,  165,  165,  165,  165,
+          165,  165,  165,  165,  165,  165,  165,  165,  165,  165,
+          165,  165,  165,  165,  165,  165,  165,  165,  165,  165,
+          165,  165,  165,   55,  163,  165,  164,   54,   37,  165,
+          160,  161,   52,   49,    8,   50,   51,   53,  165,  165,
+          165,  165,  165,  165,  165,  165,  165,  165,   31,  156,
+           43,   16,   45,   30,   67,  165,  165,  165,  165,  165,
+          165,  165,  165,  165,  165,  165,  165,  165,  165,  165,
+          165,  165,  165,  165,  165,  165,  165,  165,  165,  165,
+          165,   69,  165,  157,   36,  165,  162,  165,  165,  165,
+          165,  165,  165,  165,  165,  165,  165,  165,  165,  165,
+          165,  165,  165,  165,  165,  165,  165,  165,  165,  165,
+          165,  165,  165,  158,   35,  159,   57,  165,  165,  165,
+          165,  165,  165,  165,  165,  165,  165,  165,  165,  165,
+          165,  165,  165,  165,  165,  165,  165,  165,  165,  165,
+          165,  165,  165,  165,  165,  165,  165,  165,  165,  165,
+          165,  165,  165,  165,  165,  165,  165,  165,  165,  165,
+          165,  165,  165,  165,  165,  165,  165,  165,  165,  165,
+          165,  165,  165,  165,  165,  165,  165,  165,  165,  165,
+          165,  165,  165,  165,  165,  165,  165,  165,  165,  165,
+          165,  165,  165,  165,  165,  165,  165,  165,  165,  165,
+          165,  165,  165,  165,  165,  165,  165,  165,  165,  165,
+          165,  165,  165,  165,  165,  165,  165,  165,  165,  165,
+          165,  165,  165,  165,  165,  165,  165,  165,  165,  165,
+          165,  165,  165,  165,  165,  165,  165,  165,  165,  165,
+          165,  165,  165,  165,  165,  165,    1,    2,    3,    4,
+            5,    6,    7,    9,   10,   11,   12,   13,   14,   15,
            17,   18,   19,   20,   21,   22,   23,   24,   25,   26,
-           27,   28,   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,  138,  139,  159,  159,
-          159,  159,  159,  159,  140,  141,  142,  143,  144,  145,
-          146,  147,  148,  149
+           27,   28,   29,   32,   33,   34,   38,   39,   40,   41,
+           42,   44,   46,   47,   48,   56,   58,   59,   60,   61,
+           62,   63,   64,   65,   66,   68,   70,   71,   72,   73,
+           74,   75,   76,   77,   78,   79,   80,   81,   82,   83,
+           84,   85,   86,   87,   88,   89,   90,   91,   92,   93,
+           94,   95,   96,   97,   98,   99,  100,  101,  102,  103,
+          104,  105,  106,  107,  108,  109,  110,  111,  112,  113,
+          114,  115,  116,  117,  118,  119,  120,  121,  122,  123,
+          124,  125,  126,  127,  128,  129,  130,  131,  132,  133,
+          134,  135,  136,  137,  138,  139,  140,  141,  142,  143,
+          144,  145,  146,  147,  148,  149,  150,  151,  152,  153,
+          154,  155
     );
 
     protected $action = array(
-          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
+          130,  131,  132,  555,  133,  134,-32766,  704,  705,  706,
+          135,   36, -543, -552,  455,-32766, -543,-32766,-32766,-32766,
+         -552, 1152,  778,  927, -549,  969,  970,    0,-32766,-32766,
+        -32766, -549,-32766, 1219,-32766,  245,-32766,  962,-32766,-32766,
+        -32766,-32766,-32766,  461,-32766,-32766,-32766,-32766,-32766,-32766,
+        -32766,-32766,  124, -331,  707, -331,-32766,  388, 1031, 1032,
+         1033, 1030, 1029, 1028,-32766,  435,  430,    2,  261,  136,
+          371,  711,  712,  713,  714,  391,  789,  397, 1031, 1032,
+         1033, 1030, 1029, 1028,  715,  716,  717,  718,  719,  720,
+          721,  722,  723,  724,  725,  745,  556,  746,  747,  748,
+          749,  737,  738,  372,  373,  740,  741,  726,  727,  728,
+          730,  731,  732,  332,  771,  772,  773,  774,  775,  733,
+          734,  557,  558,  766,  757,  755,  756,  752,  753, -294,
+         -189,  559,  560,  751,  561,  562,  563,  564,  565,  566,
+         1235,  456,  783, -503,  889,  754,  567,  568,  928,  137,
+        -32766,-32766,-32766,  130,  131,  132,  555,  133,  134,  983,
+          704,  705,  706,  135,   36,-32766,-32766,-32766,-32766, -552,
+        -32766,-32766,-32766, -552, 1152,  547,  101,  102,  103,  583,
+         -549,-32766,-32766,-32766, -549,-32766,-32766,-32766,  245,-32766,
+           80,-32766,-32766,-32766,-32766,-32766,-32766,-32766,-32766,-32766,
+          959,  958,  957,-32766,-32766, -503, -503,  707, 1264,-32766,
+          388, 1265,-32766,-32766,-32766,  235,  784,-32766,  778,   19,
+         -503,  261,  136,  371,  711,  712,  713,  714,-32766,-32766,
+          397,  788, -503,-32766, -509,-32766,-32766,  715,  716,  717,
+          718,  719,  720,  721,  722,  723,  724,  725,  745,  556,
+          746,  747,  748,  749,  737,  738,  372,  373,  740,  741,
+          726,  727,  728,  730,  731,  732,  332,  771,  772,  773,
+          774,  775,  733,  734,  557,  558,  766,  757,  755,  756,
+          752,  753, -294, -189,  559,  560,  751,  561,  562,  563,
+          564,  565,  566,  309,   81,   82,   83,  139,  754,  567,
+          568,  681,  137,  729,  699,  700,  701,  702,  703, 1239,
+          704,  705,  706,  742,  743,   33, 1238,   84,   85,   86,
+           87,   88,   89,   90,   91,   92,   93,   94,   95,   96,
+           97,   98,   99,  100,  101,  102,  103,  104,  105,  106,
+           31,  263,-32766,-32766,-32766,  104,  105,  106,  577,  263,
+         1216,  126, -188,  107,  142,  440,  441,  707,-32766,-32766,
+        -32766,  107, -254,-32766,  247,-32766,-32766,-32766,-32766,-32766,
+        -32766,  708,  709,  710,  711,  712,  713,  714,  293,-32766,
+          776,-32766,-32766,-32766,-32766,-32766,  295,  715,  716,  717,
+          718,  719,  720,  721,  722,  723,  724,  725,  745,  768,
+          746,  747,  748,  749,  737,  738,  739,  767,  740,  741,
+          726,  727,  728,  730,  731,  732,  770,  771,  772,  773,
+          774,  775,  733,  734,  735,  736,  766,  757,  755,  756,
+          752,  753,  529,  311,  744,  750,  751,  758,  759,  761,
+          760,  762,  763,  234,-32766,-32766,-32766,  307,  754,  765,
+          764,   48,   49,   50,  486,   51,   52,  481,  397,   18,
+          321,   53,   54,  345,   55,-32766,  982,-32766,-32766,-32766,
+        -32766,-32766,-32766,-32767,-32767,-32767,-32767,-32767,  349,-32767,
+        -32767,-32767,-32767,   99,  100,  101,  102,  103,  814,  354,
+          815, 1191,  356, 1152,  871,  271,  408,  871,   56,   57,
+          409,  814,  410,  815,   58, -188,   59,  240,  241,   60,
+           61,   62,   63,   64,   65,   66,   67,-32766,   26,  262,
+           68,  412,  487,  411,  672,  967, 1185, 1186,  488, 1150,
+         1216, 1154, 1153, 1155, 1183,   40,   23,  489, 1009,  490,
+          -82,  491,  147,  492,  969,  970,  493,  494,  786,  429,
+          430,   42,   43,  413,  418,  415,  871,   44,  495,  391,
+          496,  497,  248,  344,  320, 1159, 1154, 1153, 1155,  793,
+          896,  498,  499,  500,  148, 1008,  861,  692,  787,  861,
+          967, 1254,  501,  502,  150, 1173, 1174, 1175, 1176, 1170,
+         1171,  281,  624,   24,   26,  -14,  151, 1177, 1172,  969,
+          970, 1154, 1153, 1155,  282,  -82, 1216, -502,  152,   69,
+         1183,  305,  306,  311,   34,  108,  109,  110,  111,  112,
+          113,  114,  115,  116,  117,  118,  119,  120,  154, -149,
+         -149, -149,  639,  640,  146,  376, 1159, 1159,  861,  615,
+          616,   32,  243,   35, -149, 1216, -149,  121, -149,  873,
+         -149,  667,  873,  122,  667,  242, 1067, 1069,  501,  502,
+          414, 1173, 1174, 1175, 1176, 1170, 1171, -501,  127, -502,
+         -502,  496,  497, 1177, 1172, -504,  128,  871,  424,  425,
+          847,  896, -107, -107, -502,   71,  442,  443,  306,  311,
+         -107,-32766,  432,  433,  -49,  141, -502, 1152, -508,  155,
+          156,  780,  157,  -84,-32766,-32766,-32766,  673,-32766,  -76,
+        -32766,  873,-32766,  667, -149,-32766, 1216, 1216, 1179,  282,
+        -32766,-32766,-32766,  -73,   73,  -71,-32766,-32766,  311, -501,
+         -501,  129,-32766,  388,  -70,  -69,-32766, -504, -504,  -68,
+        -32766,  -67, 1152,  -66, -501,  -65,  871,  -64,  275,-32766,
+        -32766,-32766, -504,-32766,  -45,-32766, -501,-32766,  -16,  861,
+        -32766,  145, -107,  264, -504,-32766,-32766,-32766,  682,   72,
+          244,-32766,-32766,-32766,  685,  782,  674,-32766,  388, 1152,
+          669,  871, -501,  870,  144,-32766,-32766,-32766,-32766,  272,
+        -32766,  282,-32766,  273,-32766,   73,   73,-32766, 1216,  311,
+          311,  276,-32766,-32766,-32766,  885,-32766,  246,-32766,-32766,
+          277,  677, 1152,  314,-32766,  388,   -4,  871,  263,-32766,
+        -32766,-32766,-32766,-32766,  107,-32766,  143,-32766,  861,  778,
+        -32766,  871,  873,-32766,  667,-32766,-32766,-32766,  625,  647,
+          871,-32766,-32766,-32766, -501, -501,  787,-32766,  388, 1152,
+         1037,-32766,  969,  970, 1266,-32766,-32766,-32766,-32766, -501,
+        -32766,  531,-32766,  861,-32766,  660,  871,-32766,  630,  535,
+          683, -501,-32766,-32766,-32766,  138,-32766,  642,-32766,-32766,
+         1023,  311, 1152,   20,-32766,  388,  437,  466,  631,-32766,
+        -32766,-32766,-32766,-32766,  643,-32766,  286,-32766, -506,  861,
+        -32766,  913,  407,  667,  613,-32766,-32766,-32766,-32766,  284,
+         -467,-32766,-32766,  861,   46,  283,  282,-32766,  388,  686,
+          897,  414,  861,  402,  898,-32766,  294,   38,  280, -232,
+         -232, -232,  496,  497, 1007,  414,  873,   26,  667, 1190,
+          786,  806,  896, -107, -107, 1192,  496,  497,  861, 1216,
+           47, -457,    8, 1183,   22,  847,  896, -107, -107,  347,
+         -506, -506,  541,    9, -231, -231, -231,  581, 1180,  887,
+          414,   39,  873,  848,  667,   -4,  289,  290,  689,  690,
+          852,  496,  497,  937,  914, 1261,  873, -506,  667, -232,
+          847,  896, -107, -107,  921,  873,  911,  667,  922,  850,
+          909, -537,  502,  123, 1173, 1174, 1175, 1176, 1170, 1171,
+         1012, 1015,  291,  292, 1016, 1013, 1177, 1172, 1014, 1020,
+         1263,  873,   30,  667, -231,  304,  798,  348,   71, 1205,
+         1223,  306,  311, 1257,  618, -535,  346,  668, -107,  125,
+         -107,  671,  675,  676,  678,  285,  679,  680, -107, -107,
+         -107, -107, -107, -107, -107,  684,  670, -257,  809,  808,
+          817,  895,  929,  816, 1262,  894,  892,  893, 1138,  880,
+          888,  878,  919,  920, 1260, 1217, 1206, 1224, 1230, 1233,
+            0, -509, -508, -507,    1,   27,   28,   37,   41,   45,
+           70,   74, -308, -255,   75,   76,   77,   78,   79,  140,
+          149,  153,  239,  310,  333,  334,  335,  336,  337,  338,
+          339,  340,  341,  342,  343,  403,  404,    0, -254,   12,
+           13,   14,   15,   17,  375,  457,  458,  465,  468,  469,
+          470,  471,  475,  476,  477,  484,  654, 1163, 1106, 1181,
+          984, 1142, -259,  -99,   11,   16,   25,  279,  374,  574,
+          578,  605,  659, 1110, 1158, 1107, 1236,    0, -471, 1123,
+            0, 1184
     );
 
     protected $actionCheck = array(
-            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,
+            2,    3,    4,    5,    6,    7,  115,    9,   10,   11,
+           12,   13,  157,    1,   31,   73,  161,    9,   10,   11,
+            8,   79,   79,   31,    1,  134,  135,    0,   86,   87,
+           88,    8,   90,    1,   92,   37,   94,    1,   30,   97,
+           32,   33,   34,  101,  102,  103,  104,    9,   10,   11,
+          108,  109,   14,  105,   56,  107,  114,  115,  115,  116,
+          117,  118,  119,  120,  122,  105,  106,    8,   70,   71,
+           72,   73,   74,   75,   76,  115,    1,   79,  115,  116,
+          117,  118,  119,  120,   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,   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
+          122,  123,  124,  125,  126,  127,  128,  129,  130,    8,
+            8,  133,  134,  135,  136,  137,  138,  139,  140,  141,
+            1,  158,   79,   69,    1,  147,  148,  149,  156,  151,
+            9,   10,   11,    2,    3,    4,    5,    6,    7,  161,
+            9,   10,   11,   12,   13,    9,   10,   11,   73,  157,
+            9,   10,   11,  161,   79,   80,   49,   50,   51,   50,
+          157,   86,   87,   88,  161,   90,   30,   92,   37,   94,
+          158,   30,   97,   32,   33,   34,   35,  102,  103,  104,
+          118,  119,  120,  108,  109,  131,  132,   56,   79,  114,
+          115,   82,    9,   10,   11,   14,  153,  122,   79,    8,
+          146,   70,   71,   72,   73,   74,   75,   76,    9,   10,
+           79,  156,  158,   30,  160,   32,   33,   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,  161,  161,  133,  134,  135,  136,  137,  138,
+          139,  140,  141,   69,    9,   10,   11,  158,  147,  148,
+          149,  158,  151,    2,    3,    4,    5,    6,    7,    1,
+            9,   10,   11,   12,   13,   30,    8,   32,   33,   34,
+           35,   36,   37,   38,   39,   40,   41,   42,   43,   44,
+           45,   46,   47,   48,   49,   50,   51,   52,   53,   54,
+            8,   56,    9,   10,   11,   52,   53,   54,    1,   56,
+           81,    8,    8,   68,    8,  131,  132,   56,    9,   10,
+           11,   68,  161,   30,    8,   32,   33,   34,   35,   36,
+           37,   70,   71,   72,   73,   74,   75,   76,    8,   30,
+           79,   32,   33,   34,   35,   36,    8,   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,   84,  164,  133,  134,  135,  136,  137,  138,
+          139,  140,  141,   96,    9,   10,   11,    8,  147,  148,
+          149,    2,    3,    4,    5,    6,    7,  105,   79,  107,
+            8,   12,   13,    8,   15,   30,    1,   32,   33,   34,
+           35,   36,   37,   38,   39,   40,   41,   42,    8,   43,
+           44,   45,   46,   47,   48,   49,   50,   51,  105,    8,
+          107,  143,    8,   79,    1,   30,    8,    1,   49,   50,
+            8,  105,    8,  107,   55,  161,   57,   58,   59,   60,
+           61,   62,   63,   64,   65,   66,   67,    9,   69,   70,
+           71,   72,   73,    8,   31,  115,   77,   78,   79,  115,
+           81,  152,  153,  154,   85,   86,   87,   88,  159,   90,
+           31,   92,   14,   94,  134,  135,   97,   98,  152,  105,
+          106,  102,  103,  104,  105,  106,    1,  108,  109,  115,
+          116,  117,   37,  114,  115,    1,  152,  153,  154,    8,
+          126,  122,  123,  124,   14,  156,   83,  158,   81,   83,
+          115,   84,  133,  134,   14,  136,  137,  138,  139,  140,
+          141,  142,   74,   75,   69,   31,   14,  148,  149,  134,
+          135,  152,  153,  154,  155,   96,   81,   69,   14,  160,
+           85,  162,  163,  164,   16,   17,   18,   19,   20,   21,
+           22,   23,   24,   25,   26,   27,   28,   29,   14,   74,
+           75,   76,   74,   75,  100,  101,    1,    1,   83,  110,
+          111,  144,  145,   14,   89,   81,   91,   16,   93,  156,
+           95,  158,  156,   16,  158,   37,   58,   59,  133,  134,
+          105,  136,  137,  138,  139,  140,  141,   69,   16,  131,
+          132,  116,  117,  148,  149,   69,   16,    1,  105,  106,
+          125,  126,  127,  128,  146,  160,  105,  106,  163,  164,
+          126,   73,  127,  128,   31,   16,  158,   79,  160,   16,
+           16,   79,   16,   31,   86,   87,   88,   31,   90,   31,
+           92,  156,   94,  158,  159,   97,   81,   81,    1,  155,
+          102,  103,  104,   31,  160,   31,  108,  109,  164,  131,
+          132,   31,  114,  115,   31,   31,   73,  131,  132,   31,
+          122,   31,   79,   31,  146,   31,    1,   31,   30,   86,
+           87,   88,  146,   90,   31,   92,  158,   94,   31,   83,
+           97,   31,  126,   31,  158,  102,  103,  104,   31,  151,
+           37,  108,  109,   73,   31,  153,   31,  114,  115,   79,
+          158,    1,   69,   31,   31,  122,   86,   87,   88,   35,
+           90,  155,   92,   35,   94,  160,  160,   97,   81,  164,
+          164,   35,  102,  103,  104,   37,   73,   37,  108,  109,
+           35,   31,   79,   35,  114,  115,    0,    1,   56,   86,
+           87,   88,  122,   90,   68,   92,   69,   94,   83,   79,
+           97,    1,  156,  115,  158,  102,  103,  104,   89,   76,
+            1,  108,  109,   73,  131,  132,   81,  114,  115,   79,
+           81,   84,  134,  135,   82,  122,   86,   87,   88,  146,
+           90,   84,   92,   83,   94,   91,    1,   97,   95,   88,
+           31,  158,  102,  103,  104,  158,   73,   93,  108,  109,
+          121,  164,   79,   96,  114,  115,   96,   96,   99,   86,
+           87,   88,  122,   90,   99,   92,  113,   94,   69,   83,
+           97,  156,  126,  158,  112,  102,  103,  104,  115,  130,
+          146,  108,  109,   83,   69,  129,  155,  114,  115,  159,
+          126,  105,   83,  107,  126,  122,  129,  156,  112,   99,
+          100,  101,  116,  117,    1,  105,  156,   69,  158,  143,
+          152,  125,  126,  127,  128,  143,  116,  117,   83,   81,
+           69,  146,  146,   85,  146,  125,  126,  127,  128,  146,
+          131,  132,  150,  147,   99,  100,  101,  150,  157,  151,
+          105,  156,  156,  159,  158,  159,  131,  132,  156,  156,
+          156,  116,  117,  156,  156,  159,  156,  158,  158,  159,
+          125,  126,  127,  128,  156,  156,  156,  158,  156,  156,
+          156,  160,  134,  158,  136,  137,  138,  139,  140,  141,
+          156,  156,  131,  132,  156,  156,  148,  149,  156,  156,
+          159,  156,  158,  158,  159,  158,  157,  146,  160,  157,
+          157,  163,  164,  157,  157,  160,  158,  158,  105,  158,
+          107,  158,  158,  158,  158,  112,  158,  158,  115,  116,
+          117,  118,  119,  120,  121,  158,  158,  161,  159,  159,
+          159,  159,  159,  159,  159,  159,  159,  159,  159,  159,
+          159,  159,  159,  159,  159,  159,  159,  159,  159,  159,
+           -1,  160,  160,  160,  160,  160,  160,  160,  160,  160,
+          160,  160,  159,  161,  160,  160,  160,  160,  160,  160,
+          160,  160,  160,  160,  160,  160,  160,  160,  160,  160,
+          160,  160,  160,  160,  160,  160,  160,   -1,  161,  161,
+          161,  161,  161,  161,  161,  161,  161,  161,  161,  161,
+          161,  161,  161,  161,  161,  161,  161,  161,  161,  161,
+          161,  161,  161,  161,  161,  161,  161,  161,  161,  161,
+          161,  161,  161,  161,  161,  161,  161,   -1,  162,  162,
+           -1,  163
     );
 
     protected $actionBase = array(
-            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,   -2,  151,  555,  816,  830,  865,  379,  717,  622,
+          862,  676,  780,  780,  839,  780,  493,  745,  301,  301,
+          -57,  301,  301,  496,  496,  496,  618,  618,  618,  618,
+          -58,  -58,   95,  700,  733,  770,  663,  803,  803,  803,
+          803,  803,  803,  803,  803,  803,  803,  803,  803,  803,
+          803,  803,  803,  803,  803,  803,  803,  803,  803,  803,
+          803,  803,  803,  803,  803,  803,  803,  803,  803,  803,
+          803,  803,  803,  803,  803,  803,  803,  803,  803,  803,
+          803,  803,  803,  803,  803,  803,  803,  803,  803,  803,
+          803,  803,  803,  803,  803,  803,  803,  803,  803,  803,
+          803,  803,  803,  803,  803,  803,  803,  803,  803,  803,
+          803,  803,  803,  803,  803,  803,  803,  803,  803,  803,
+          803,  803,  803,  803,  803,  803,  803,  803,  803,  803,
+          803,  803,  803,  803,  803,  803,  803,  803,  803,  803,
+          803,  803,  803,  803,  803,  803,  803,  803,  803,  803,
+          803,  803,  803,  803,  803,  803,  803,  803,   75,   -8,
+          347,  629,  986,  992,  988,  993,  984,  983,  987,  989,
+          994,  915,  916,  753,  917,  918,  919,  920,  990,  877,
+          985,  991,  285,  285,  285,  285,  285,  285,  285,  285,
+          285,  285,  285,  285,  285,  285,  285,  285,  285,  285,
+          285,  285,  285,  508,   38,  219,  141,  141,  141,  141,
+          141,  141,  141,  141,  141,  141,  141,  141,  141,  141,
+          141,  141,  141,  141,  141,  141,  141,  141,  141,  141,
+          156,  156,  156,  203,  525,  525,    8,  598,  161,  868,
+          868,  868,  868,  868,  868,  868,  868,  868,  868,  349,
+          333,  435,  435,  435,  435,  435,  436,  436,  436,  436,
+          933,  564,  636,  635,  465,  -52,  127,  127,  718,  718,
+          759,  410,  410,  410,  444, -109, -109, -109,   74,  538,
+          396,  348,  414,  414,  414,  414,  414,  802,  998,  139,
+          139,  139,  139,  414,  414,  414,  606,  713,  713,  881,
+          293,  293,  293,  713,  383,  777,  497,  383,  497,  129,
+          793,   32,  -40, -145,  793,  829,  845,   23,   12,  788,
+          573,  788,  767,  863,  898,  995,   82,  789,  913,  795,
+          914,  224,  678,  981,  981,  981,  981,  981,  981,  981,
+          981,  981,  981,  981,  269,  982,   63,  269,  269,  269,
+          529,   63,  518,  558,   63,  778,  982,   75,  805,   75,
+           75,   75,   75,  944,   75,   75,   75,   75,   75,   75,
+          949,  727,  723,  692,  -17,   75,   -8,  143,  143,  419,
+           36,  143,  143,  143,  143,   75,   75,  565,  573,  762,
+          812,  581,  817,  344,  762,  762,  762,  509,  121,  201,
+          122,  352,  750,  750,  768,  769,  924,  924,  750,  765,
+          750,  769,  929,  750,  768,  768,  750,  924,  768,  761,
+          343,  488,  452,  470,  768,  768,  492,  924,  370,  768,
+          768,  750,  750,  750,  797,  768,  494,  750,  356,  346,
+          750,  750,  768,  768,  797,  786,   59,  779,  924,  924,
+          924,  797,  455,  779,  779,  822,  823,  792,  732,  439,
+          378,  561,  332,  768,  732,  732,  750,  481,  792,  732,
+          792,  732,  818,  732,  732,  732,  792,  732,  765,  484,
+          732,  768,  515,  211,  732,   27,  930,  931,  672,  934,
+          927,  935,  955,  936,  937,  879,  794,  798,  942,  928,
+          938,  926,  925,  752,  631,  637,  806,  764,  923,  756,
+          756,  756,  921,  756,  756,  756,  756,  756,  756,  756,
+          756,  631,  811,  813,  776,  781,  945,  652,  660,  796,
+          814,  996,  997,  944,  976,  939,  771,  679,  962,  946,
+          760,  867,  947,  948,  963,  977,  978,  826,  757,  861,
+          899,  869,  950,  883,  756,  930,  937,  928,  938,  926,
+          925,  716,  714,  710,  712,  708,  704,  694,  703,  730,
+          875,  841,  872,  949,  922,  631,  873,  958,  864,  964,
+          965,  878,  790,  772,  876,  900,  951,  952,  953,  884,
+          979,  885,  815,  959,  896,  966,  791,  901,  967,  968,
+          969,  970,  886,  902,  888,  824,  749,  932,  773,  903,
+          528,  766,  775,  956,  560,  943,  889,  904,  905,  971,
+          972,  973,  906,  907,  940,  827,  960,  784,  961,  957,
+          828,  838,  570,  754,  758,  582,  594,  908,  909,  941,
+          737,  763,  840,  842,  980,  910,  614,  843,  683,  911,
+          975,  684,  686,  774,  897,  808,  783,  787,  954,  743,
+          844,  912,  854,  855,  858,  974,  859,    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,  449,  449,  449,  449,  449,
+          449,  301,  301,  301,  301,  449,  449,  449,  449,  449,
+          449,  449,    0,    0,  301,    0,    0,  449,  449,  449,
+          449,  449,  449,  449,  449,  449,  449,  449,  449,  449,
+          449,  449,  449,  449,  449,  449,  449,  449,  449,  449,
+          449,  449,  449,  449,  449,  449,  449,  449,  449,  449,
+          449,  449,  449,  449,  449,  449,  449,  449,  449,  449,
+          449,  449,  449,  449,  449,  449,  449,  449,  449,  449,
+          449,  449,  449,  449,  449,  449,  449,  449,  449,  449,
+          449,  449,  449,  449,  449,  449,  449,  449,  449,  449,
+          449,  449,  449,  449,  449,  449,  449,  449,  449,  449,
+          449,  449,  449,  449,  449,  449,  449,  449,  449,  449,
+          449,  449,  449,  449,  449,  449,  449,  449,  449,  449,
+          449,  449,  449,  449,  449,  449,  449,  449,  449,  449,
+          449,  449,  449,  449,  449,  449,  449,  449,  449,  449,
+          449,  449,  449,  449,  449,  449,  449,  449,  449,  449,
+          449,  449,  285,  285,  285,  285,  285,  285,  285,  285,
+          285,  285,  285,  285,  285,  285,  285,  285,  285,  285,
+          285,  285,  285,  285,  285,  285,    0,    0,    0,    0,
             0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-            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
+            0,    0,    0,    0,    0,    0,    0,  285,  285,  285,
+          285,  285,  285,  285,  285,  285,  285,  285,  285,  285,
+          285,  285,  285,  285,  285,  285,  285,  285,  285,  285,
+          285,  285,  285,  285,  285,  285,  285,  285,  414,  414,
+          285,    0,  285,  414,  414,  414,  414,  414,  414,  414,
+          414,  414,  414,  285,  285,  285,  285,  285,  285,  285,
+          293,  293,  293,  293,  761,  414,  414,  414,  414,  -37,
+          293,  293,  414,  414,  -37,  414,  414,  414,  761,  414,
+          414,  414,    0,    0,   63,  497,    0,    0,    0,    0,
+            0,  497,  497,  269,  269,  269,  269,    0,    0,    0,
+            0,    0,    0,    0,    0,    0,    0,    0,   63,  497,
+            0,   63,    0,  765,  414,  269,  761,  308,  414,    0,
+            0,    0,    0,   63,  765,   63,  497,  143,   75,  308,
+            0,  534,  534,  534,  534,    0,  573,  761,  761,  761,
+          761,  761,  761,  761,  761,  761,  761,  761,    0,  761,
+            0,    0,    0,    0,    0,    0,    0,    0,    0,  765,
+          768,    0,  924,    0,    0,    0,    0,  750,    0,    0,
+            0,    0,    0,    0,  750,  929,  768,  768,    0,    0,
+            0,    0,    0,    0,  765,    0,    0,    0,    0,    0,
+            0,    0,    0,  756,  790,    0,  790,    0,  756,  756,
+          756
     );
 
     protected $actionDefault = array(
-            3,32767,32767,32767,32767,32767,32767,32767,32767,   92,
+            3,32767,   99,32767,32767,32767,32767,32767,32767,32767,
+        32767,32767,32767,32767,32767,32767,32767,32767,32767,   97,
+        32767,32767,32767,32767,32767,32767,  555,  555,  555,  555,
+          236,   99,32767,32767,32767,32767,  431,  350,  350,  350,
+        32767,32767,  499,  499,  499,  499,  499,  499,32767,32767,
+        32767,32767,32767,32767,  431,32767,32767,32767,32767,32767,
         32767,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,   97,32767,32767,32767,
+           35,    5,    6,    8,    9,   48,   15,32767,32767,32767,
+        32767,32767,   99,32767,32767,32767,32767,32767,32767,32767,
         32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,
-        32767,   92,32767,32767,32767,32767,32767,32767,32767,32767,
+        32767,  548,32767,32767,32767,32767,32767,32767,32767,32767,
         32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,
-        32767,32767,32767,32767,  506,32767,32767,32767,32767,32767,
+        32767,32767,  435,  414,  415,  417,  418,  349,  500,  554,
+          293,  551,  348,  142,  305,  295,  224,  296,  240,  241,
+          267,  345,  146,  379,  432,  381,  430,  434,  380,  355,
+          360,  361,  362,  363,  364,  365,  366,  367,  368,  369,
+          370,  371,  372,  353,  354,  433,  436,  437,  440,  441,
+          411,  410,  409,  377,32767,32767,  378,  352,  382,32767,
+        32767,32767,32767,32767,32767,32767,32767,   99,32767,  384,
+          383,  400,  401,  398,  399,  402,  403,  404,  405,  406,
+        32767,32767,32767,32767,32767,  328,  391,  392,  284,  284,
+          330,32767,32767,32767,  108,32767,32767,32767,  493,  408,
         32767,32767,32767,32767,32767,32767,32767,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,   99,32767,   97,  495,  374,  376,  463,
+          386,  387,  385,  356,32767,  470,32767,   99,  472,32767,
+        32767,32767,32767,32767,32767,  494,32767,  501,  501,32767,
+          456,   97,32767,32767,32767,32767,  262,32767,32767,32767,
+        32767,  562,  456,  107,  107,  107,  107,  107,  107,  107,
+          107,  107,  107,  107,32767,  107,32767,32767,32767,   97,
+          185,32767,  250,  252,   99,  516,  190,32767,  475,32767,
         32767,32767,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,  468,  190,  190,32767,32767,32767,32767,32767,32767,
+        32767,32767,32767,32767,32767,32767,32767,32767,  456,  396,
+          135,32767,  135,  501,  388,  389,  390,  458,  501,  501,
+          501,32767,32767,32767,  190,32767,  473,  473,   97,   97,
+           97,   97,  468,32767,  190,  190,32767,32767,  190,  108,
+           96,   96,   96,   96,  190,  190,   96,  100,   98,  190,
+          190,32767,32767,32767,  205,  190,   96,32767,   98,   98,
+        32767,32767,  190,  190,  205,  207,   98,  209,32767,  520,
+          521,  205,   98,  209,  209,  229,  229,  447,  286,   98,
+           96,   98,   98,  190,  286,  286,32767,   98,  447,  286,
+          447,  286,  192,  286,  286,  286,  447,  286,32767,   98,
+          286,  190,   96,   96,  286,32767,32767,32767,  458,32767,
         32767,32767,32767,32767,32767,32767,32767,32767,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,
-          456,32767,32767,  242,32767,32767,32767,  309,32767,32767,
-        32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,
-        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
+        32767,32767,32767,32767,32767,  488,32767,  505,  518,  394,
+          395,  397,  503,  419,  420,  421,  422,  423,  424,  425,
+          427,  550,32767,  462,32767,32767,32767,32767,  304,  560,
+        32767,  560,32767,32767,32767,32767,32767,32767,32767,32767,
+        32767,32767,32767,32767,32767,32767,32767,  561,32767,  501,
+        32767,32767,32767,32767,  393,    7,   74,   41,   42,   50,
+           56,  479,  480,  481,  482,  476,  477,  483,  478,32767,
+          484,  526,32767,32767,  502,  553,32767,32767,32767,32767,
+        32767,32767,  135,32767,32767,32767,32767,32767,32767,32767,
+        32767,32767,32767,32767,  488,32767,  133,32767,32767,32767,
+        32767,32767,32767,32767,32767,32767,32767,  501,32767,32767,
+        32767,  281,  283,32767,32767,32767,32767,32767,32767,32767,
+        32767,32767,32767,32767,32767,32767,32767,32767,32767,  501,
+        32767,32767,32767,  269,  271,32767,32767,32767,32767,32767,
+        32767,32767,32767,32767,32767,32767,32767,32767,  266,32767,
+        32767,  344,32767,32767,32767,32767,  324,32767,32767,32767,
+        32767,32767,32767,32767,32767,32767,32767,  148,  148,    3,
+            3,  307,  148,  148,  148,  307,  307,  148,  307,  307,
+          148,  148,  148,  148,  148,  148,  180,  244,  247,  229,
+          229,  148,  316,  148
     );
 
     protected $goto = array(
-          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,
+          190,  190,  655,  781,  663,  399,  629,  964,  971,  972,
+          393,  297,  298,  317,  549,  303,  398,  318,  400,  607,
+          361,  365,  534,  572,  576,  161,  161,  161,  161,  187,
+          187,  171,  173,  209,  191,  204,  187,  187,  187,  187,
+          187,  188,  188,  188,  188,  188,  188,  182,  183,  184,
+          185,  186,  206,  204,  207,  509,  510,  389,  511,  513,
+          514,  515,  516,  517,  518,  519,  520, 1053,  162,  163,
+          164,  189,  165,  166,  167,  160,  168,  169,  170,  172,
+          203,  205,  208,  230,  233,  236,  238,  249,  250,  251,
+          252,  253,  254,  255,  256,  257,  258,  259,  266,  267,
+          300,  301,  302,  394,  395,  396,  554,  210,  211,  212,
+          213,  214,  215,  216,  217,  218,  219,  220,  221,  222,
+          223,  224,  174,  225,  175,  192,  193,  194,  231,  182,
+          183,  184,  185,  186,  206, 1053,  195,  176,  177,  178,
+          196,  192,  179,  232,  197,  159,  198,  226,  180,  199,
+          227,  228,  181,  229,  200,  201,  202,  807,  611,  611,
+          804,  274,  274,  274,  274,  976,  973,  974,  592,  626,
+         1147,  594,  594,  571,  533,  526, 1182, 1182, 1182, 1182,
+         1182, 1182, 1182, 1182, 1182, 1182, 1250, 1250,  986,  328,
+          812, 1027,  860,  855,  856,  869, 1026,  813,  857,  810,
+          858,  859,  811,  803, 1251, 1251,  805, 1250,  863,  912,
+          936,  910,  910,  908,  910,  687,  363,  526, 1003, 1004,
+          533, 1253,  525,  945,  940, 1251,  542,  543,  820, 1148,
+          838,  370,  552,  832,  308,  288,  819,  573,  864,  795,
+          865, 1200, 1200,  785,  587,  588, 1200, 1200, 1200, 1200,
+         1200, 1200, 1200, 1200, 1200, 1200, 1151, 1151, 1151,  968,
+         1149, 1208, 1209,  968,  968,  472,  968,  968,  968,  779,
+          968,  968,  968, 1232, 1232, 1232, 1232, 1151, 1151, 1151,
+         1151, 1151,  785,   21,  785,  546, 1198, 1198, 1151, 1151,
+         1151, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198,
+         1198,  523,  523,  523,  325,  876,  512,  512,  392,  877,
+          582,  512,  512,  512,  512,  512,  512,  512,  512,  512,
+          512, 1240,  427,  906,  906,  906,  906,  387,  387,  387,
+          387,  602,  604,  427,  900,  907,  540,  904,  379,  662,
+          688,  606,  608,  933,    5,  627,    6,  539,  645,  649,
+          947,  653,  661,  943,  586,  377,  378,  800, 1019,  570,
+          635,  666,  636,  359,  381,  382,  383,  453,  646,  652,
+          652,  384,  658, 1017,  454,  323,  580,  595,  598,  599,
+          600,  601,  619,  620,  621,  665,  527,  537, 1267,  450,
+         1225, 1226,  527,  545,  537,  800,  628,  362, 1101,  528,
+          434,  521,  521,  521,  521, 1227, 1228, 1132,  890,  405,
+          575, 1133, 1136,  891, 1137,  444,  553,  445,  419,  419,
+          419,  830,  329,  330, 1258, 1259, 1222, 1222, 1222,  622,
+          623,  431,  637,  638, 1211,  439,  439,  550,  585,  881,
+         1041,  797,  319,  833,  821,  991,  439,  590,  995,  825,
+          828,  369,  822,  952, 1234, 1234, 1234, 1234,  915,  648,
+          824,  955,  632,  931,  473,  691,  474,  992,  818, 1144,
+          451,  996,  480,    0,  834, 1036, 1218,  917,    0,    0,
+         1143,    0,  905,    0,    0,    0,    0,    0,  528,    0,
+            0,  419,  419,  419,  419,  419,  419,  419,  419,  419,
+          419,  419,  800,  419, 1034,  837,    0,    0,    0,  994,
+            0,    0, 1220, 1220,  994,    0,    0,    0,    0,    0,
+            0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+            0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+            0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+            0,    0,    0,    0,    0,    0,    0, 1146,    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,  270,  524,  524,    0,    0,    0,
             0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-            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
+            0,    0,    0,    0,    0,    0,    0,    0,    0,  950,
+          950
     );
 
     protected $gotoCheck = array(
-           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,   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,   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,   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,   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,
+           41,   41,   71,    6,    8,   64,   64,  105,  105,  105,
+           64,   64,   64,   64,   64,   64,   64,   64,   64,   64,
+           57,   57,   57,   57,   57,   41,   41,   41,   41,   41,
+           41,   41,   41,   41,   41,   41,   41,   41,   41,   41,
+           41,   41,   41,   41,   41,   41,   41,   41,   41,   41,
+           41,   41,   41,   41,   41,   41,   41,   41,   41,   41,
+           41,   41,   41,   41,   41,   41,   41,   41,   41,   41,
+           41,   41,   41,   41,   41,   41,   41,   41,   41,   41,
+           41,   41,   41,   41,   41,   41,   41,   41,   41,   41,
+           41,   41,   41,   41,   41,   41,   41,   41,   41,   41,
+           41,   41,   41,   41,   41,   41,   41,   41,   41,   41,
+           41,   41,   41,   41,   41,   41,   41,   41,   41,   41,
+           41,   41,   41,   41,   41,   41,   41,   41,   41,   41,
+           41,   41,   41,   41,   41,   41,   41,   41,   41,   41,
+           41,   41,   41,   41,   41,   41,   41,   41,   41,   41,
+           41,   41,   41,   41,   41,   41,   41,   14,  107,  107,
+           25,   22,   22,   22,   22,  107,  107,  107,   54,   54,
+           19,   99,   99,  114,   74,   74,   99,   99,   99,   99,
+           99,   99,   99,   99,   99,   99,  164,  164,  111,   88,
+           14,  128,   14,   14,   14,   14,  128,   14,   14,   14,
+           14,   14,   14,   24,  165,  165,   26,  164,   14,   48,
+           24,   24,   24,   24,   24,   24,   74,   74,   14,   14,
+           74,  164,   24,   24,   24,  165,   74,   74,   34,   19,
+           44,   74,   74,   34,  151,  151,   34,   74,   63,   19,
+           63,  152,  152,   11,   74,   74,  152,  152,  152,  152,
+          152,  152,  152,  152,  152,  152,   71,   71,   71,   71,
+           19,   19,   19,   71,   71,   74,   71,   71,   71,    5,
+           71,   71,   71,    8,    8,    8,    8,   71,   71,   71,
+           71,   71,   11,   74,   11,  154,  153,  153,   71,   71,
+           71,  153,  153,  153,  153,  153,  153,  153,  153,  153,
+          153,   18,   18,   18,  161,   71,  155,  155,   12,   71,
+           12,  155,  155,  155,  155,  155,  155,  155,  155,  155,
+          155,  163,   18,   18,   18,   18,   18,   23,   23,   23,
+           23,   81,   81,   18,   18,   18,   47,   84,   84,   84,
+           47,   47,   47,   94,   45,   47,   45,    8,   47,   47,
+           47,   47,   47,   47,    8,   78,   78,   21,    7,    7,
+           78,    7,   78,   60,   78,   78,   78,   80,   78,    7,
+            7,   78,    7,    7,   80,   78,   77,   77,   77,   77,
+           77,   77,   77,   77,   77,   77,    8,    8,   13,  158,
+          158,  158,    8,   95,    8,   21,   62,    8,  135,   13,
+            8,   98,   98,   98,   98,  160,  160,   76,   76,  103,
+           98,   76,   76,   76,   76,    8,    8,    8,   22,   22,
+           22,    8,   88,   88,    8,    8,  114,  114,  114,   82,
+           82,   79,   82,   82,   13,  133,  133,    2,    2,   16,
+           16,   17,   28,   15,   15,   15,  133,   16,   15,   38,
+            8,   27,   36,   16,  114,  114,  114,  114,   15,   13,
+           16,  101,   16,   16,  139,   90,  139,  113,   16,  144,
+          141,  116,  139,   -1,   40,  131,  114,   87,   -1,   -1,
+           16,   -1,   15,   -1,   -1,   -1,   -1,   -1,   13,   -1,
+           -1,   22,   22,   22,   22,   22,   22,   22,   22,   22,
+           22,   22,   21,   22,   15,   15,   -1,   -1,   -1,  114,
+           -1,   -1,  114,  114,  114,   -1,   -1,   -1,   -1,   -1,
            -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,   -1,    8,    8,   -1,
-            8,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
-           -1,   -1,   -1,   -1,   -1,    8,   -1,    8
+           -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,   13,   -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,   23,   23,   23,   -1,   -1,   -1,
+           -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
+           -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   98,
+           98
     );
 
     protected $gotoBase = array(
-            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,  -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
+            0,    0, -232,    0,    0,  249,   -6,  351,  -16,    0,
+            0,  -37,  -11,   79, -167,   22,    1,  148,   40, -188,
+            0,   83,  158,  324,  199,  156,  202,  132,  162,    0,
+            0,    0,    0,    0, -118,    0,  131,    0,  142,    0,
+           66,   -1,    0,    0,  211, -347,    0, -332,  192,    0,
+            0,    0,    0,    0,  130,    0,    0,  -23,    0,    0,
+          323,    0,  161,  225, -229,    0,    0,    0,    0,    0,
+            0,   -5,    0,    0, -198,    0,   30,   42, -109,  157,
+          -77, -122, -246,    0,   53,    0,    0,   67, -267,    0,
+           89,    0,    0,    0,  312,  352,    0,    0,  375,  -63,
+            0,  116,    0,  140,    0, -264,    0, -110,    0,    0,
+            0,  186,    0,  118,  165,    0,   62,    0,    0,    0,
+            0,    0,    0,    0,    0,    0,    0,    0,  -74,    0,
+            0,   64,    0,  405,    0,  135,    0,    0,    0,   -4,
+            0,   63,    0,    0,   65,    0,    0,    0,    0,    0,
+            0,  -71,    7,   52,  258,   72,    0,    0,   99,    0,
+           58,  276,    0,  292, -101,  -83,    0,    0
     );
 
     protected $gotoDefault = array(
-        -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
+        -32768,  485,  695,    4,  696,  769,  777,  569,  503,  664,
+          324,  596,  390,  331,  862, 1040,  551,  796, 1160, 1168,
+          428,  799,  312,  326,  844,  845,  846,  366,  351,  357,
+          364,  617,  597,  467,  831,  422,  823,  459,  826,  421,
+          835,  158,  386,  483,  839,    3,  841,  530,  872,  352,
+          849,  353,  641,  851,  536,  853,  854,  360,  367,  368,
+         1045,  544,  593,  866,  237,  538,  867,  350,  868,  875,
+          355,  358,  650,  438,  478,  380, 1021,  579,  614,  416,
+          447,  591,  603,  589,  902,  460,  436,  916,  327,  924,
+          693, 1052,  609,  462,  932,  610,  939,  942,  504,  505,
+          452,  954,  268,  463,  981,  633,  634,  966,  612,  979,
+          446,  985,  423,  993, 1204,  426,  997,  260, 1000,  269,
+          385,  401, 1005, 1006,    7, 1011,  656,  657,   10,  265,
+          482, 1035,  651,  420, 1051,  406, 1120, 1122,  532,  464,
+         1140, 1139,  644,  479, 1145, 1207,  417,  506,  448,  299,
+          507,  287,  315,  296,  522,  278,  316,  508,  449, 1213,
+         1221,  313,   29, 1241, 1252,  322,  548,  584
     );
 
     protected $ruleToNonTerminal = array(
@@ -750,52 +844,57 @@ 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,    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,   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,
-           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,   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,
-          146,  134,  134,  134,  134,  148,  149,  147,  147,  147,
-          147,  147,  147,  147,  150,  150,  150,  150
+            5,    5,    5,    5,    5,    6,    6,    6,    6,    6,
+            6,    6,    7,    7,    8,    9,   10,   10,   10,   11,
+           11,   12,   12,   13,   14,   14,   15,   15,   16,   16,
+           17,   17,   20,   20,   21,   22,   22,   23,   23,    4,
+            4,    4,    4,    4,    4,    4,    4,    4,    4,    4,
+           28,   28,   29,   29,   31,   33,   33,   27,   35,   35,
+           32,   37,   37,   34,   34,   36,   36,   38,   38,   30,
+           39,   39,   40,   42,   43,   43,   44,   45,   45,   47,
+           46,   46,   46,   46,   48,   48,   48,   48,   48,   48,
+           48,   48,   48,   48,   48,   48,   48,   48,   48,   48,
+           48,   48,   48,   48,   48,   48,   48,   48,   24,   24,
+           67,   67,   70,   70,   69,   68,   68,   61,   73,   73,
+           74,   74,   75,   75,   76,   76,   25,   25,   26,   26,
+           26,   26,   79,   79,   79,   80,   80,   83,   83,   81,
+           81,   84,   85,   85,   55,   55,   63,   63,   66,   66,
+           66,   65,   86,   86,   87,   56,   56,   56,   56,   88,
+           88,   89,   89,   90,   90,   91,   92,   92,   93,   93,
+           94,   94,   53,   53,   49,   49,   96,   51,   51,   97,
+           50,   50,   52,   52,   62,   62,   62,   62,   77,   77,
+          100,  100,  102,  102,  102,  102,  101,  101,  101,  104,
+          104,  104,  105,  105,  107,  107,  107,  106,  106,  108,
+          108,  109,  109,  109,  103,  103,   78,   78,   78,   19,
+           19,  110,  110,  111,  111,  111,  111,   58,  112,  112,
+          113,   59,  115,  115,  116,  116,  117,  117,   82,  118,
+          118,  118,  118,  118,  123,  123,  124,  124,  125,  125,
+          125,  125,  125,  126,  127,  127,  122,  122,  119,  119,
+          121,  121,  129,  129,  128,  128,  128,  128,  128,  128,
+          120,  130,  130,  132,  131,  131,   60,   95,  133,  133,
+           54,   54,   41,   41,   41,   41,   41,   41,   41,   41,
+           41,   41,   41,   41,   41,   41,   41,   41,   41,   41,
+           41,   41,   41,   41,   41,   41,   41,   41,   41,   41,
+           41,   41,   41,   41,   41,   41,   41,   41,   41,   41,
+           41,   41,   41,   41,   41,   41,   41,   41,   41,   41,
+           41,   41,   41,   41,   41,   41,   41,   41,   41,   41,
+           41,   41,   41,   41,   41,   41,   41,   41,   41,   41,
+           41,   41,   41,   41,   41,   41,   41,   41,   41,   41,
+           41,   41,   41,   41,   41,   41,   41,   41,   41,   41,
+           41,   41,   41,   41,  140,  134,  134,  139,  139,  142,
+          143,  143,  144,  145,  145,  145,   18,   18,   71,   71,
+           71,   71,  135,  135,  135,  135,  147,  147,  136,  136,
+          138,  138,  138,  141,  141,  152,  152,  152,  152,  152,
+          152,  152,  152,  152,  153,  153,   99,  155,  155,  155,
+          155,  137,  137,  137,  137,  137,  137,  137,  137,   57,
+           57,  150,  150,  150,  150,  156,  156,  146,  146,  146,
+          157,  157,  157,  157,  157,  157,   72,   72,   64,   64,
+           64,   64,  114,  114,  114,  114,  160,  159,  149,  149,
+          149,  149,  149,  149,  149,  148,  148,  148,  158,  158,
+          158,  158,   98,  154,  162,  162,  161,  161,  163,  163,
+          163,  163,  163,  163,  163,  163,  151,  151,  151,  151,
+          165,  166,  164,  164,  164,  164,  164,  164,  164,  164,
+          167,  167,  167,  167
     );
 
     protected $ruleToLength = array(
@@ -807,51 +906,56 @@ 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,    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,
+            1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
+            1,    1,    1,    1,    1,    1,    0,    1,    0,    1,
+            1,    2,    1,    3,    4,    1,    2,    0,    1,    1,
+            1,    1,    1,    3,    5,    4,    3,    4,    2,    3,
+            1,    1,    7,    6,    2,    3,    1,    2,    3,    1,
+            2,    3,    1,    1,    3,    1,    3,    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,    2,    1,    1,    1,
+            0,    2,    1,    3,    8,    0,    4,    2,    1,    3,
+            0,    1,    0,    1,    3,    1,    8,    9,    7,    8,
+            7,    6,    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,    7,    0,    2,    1,    3,
+            3,    4,    1,    4,    0,    2,    5,    0,    2,    6,
             0,    2,    0,    3,    1,    2,    1,    1,    2,    0,
-            1,    3,    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,
+            1,    3,    0,    1,    1,    1,    6,    8,    6,    1,
+            2,    1,    1,    1,    1,    1,    1,    3,    3,    3,
+            3,    1,    2,    1,    0,    1,    0,    2,    2,    2,
+            4,    1,    3,    1,    2,    2,    3,    2,    3,    1,
+            1,    2,    3,    1,    1,    3,    2,    0,    1,    5,
+            5,   10,    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,    2,    3,    1,
+            0,    1,    1,    3,    3,    3,    4,    1,    1,    2,
             3,    3,    3,    3,    3,    3,    3,    3,    3,    3,
-            3,    3,    3,    3,    3,    3,    3,    2,    2,    2,
-            2,    3,    3,    3,    3,    3,    3,    3,    3,    3,
-            3,    3,    5,    4,    3,    4,    4,    2,    2,    4,
-            2,    2,    2,    2,    2,    2,    2,    2,    2,    2,
-            2,    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
+            3,    3,    3,    2,    2,    2,    2,    3,    3,    3,
+            3,    3,    3,    3,    3,    3,    3,    3,    3,    3,
+            3,    3,    3,    3,    2,    2,    2,    2,    3,    3,
+            3,    3,    3,    3,    3,    3,    3,    3,    3,    5,
+            4,    3,    4,    4,    2,    2,    4,    2,    2,    2,
+            2,    2,    2,    2,    2,    2,    2,    2,    1,    3,
+            2,    1,    2,    4,    2,    2,    8,    9,    8,    9,
+            9,   10,    9,   10,    8,    3,    2,    0,    4,    2,
+            1,    3,    2,    2,    2,    4,    1,    1,    1,    1,
+            1,    1,    1,    1,    3,    1,    1,    1,    0,    3,
+            0,    1,    1,    0,    1,    1,    1,    1,    1,    1,
+            1,    1,    1,    1,    3,    3,    3,    4,    1,    1,
+            3,    1,    1,    1,    1,    1,    3,    2,    3,    0,
+            1,    1,    3,    1,    1,    1,    1,    1,    3,    1,
+            1,    4,    4,    1,    4,    4,    0,    1,    1,    1,
+            3,    3,    1,    4,    2,    2,    1,    3,    1,    4,
+            4,    3,    3,    3,    3,    1,    3,    1,    1,    3,
+            1,    1,    4,    1,    1,    1,    3,    1,    1,    2,
+            1,    3,    4,    3,    2,    0,    2,    2,    1,    2,
+            1,    1,    1,    4,    3,    3,    3,    3,    6,    3,
+            1,    1,    2,    1
     );
 
     protected function initReduceCallbacks() {
@@ -869,7 +973,7 @@ protected function initReduceCallbacks() {
                  $this->semValue = array();
             },
             4 => function ($stackPos) {
-                 $startAttributes = $this->lookaheadStartAttributes; if (isset($startAttributes['comments'])) { $nop = new Stmt\Nop($this->createZeroLengthAttributes($startAttributes)); } else { $nop = null; };
+                 $startAttributes = $this->lookaheadStartAttributes; if (isset($startAttributes['comments'])) { $nop = new Stmt\Nop($this->createCommentNopAttributes($startAttributes['comments'])); } else { $nop = null; };
             if ($nop !== null) { $this->semStack[$stackPos-(1-1)][] = $nop; } $this->semValue = $this->semStack[$stackPos-(1-1)];
             },
             5 => function ($stackPos) {
@@ -1101,7 +1205,7 @@ protected function initReduceCallbacks() {
                 $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);
+                $this->semValue = $this->semStack[$stackPos];
             },
             82 => function ($stackPos) {
                  $this->semValue = new Node\Identifier($this->semStack[$stackPos-(1-1)], $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes);
@@ -1113,136 +1217,136 @@ protected function initReduceCallbacks() {
                  $this->semValue = new Node\Identifier($this->semStack[$stackPos-(1-1)], $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes);
             },
             85 => 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);
             },
             86 => function ($stackPos) {
-                 $this->semStack[$stackPos-(3-1)][] = $this->semStack[$stackPos-(3-3)]; $this->semValue = $this->semStack[$stackPos-(3-1)];
+                 $this->semValue = new Name($this->semStack[$stackPos-(1-1)], $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes);
             },
             87 => function ($stackPos) {
                  $this->semValue = new Name($this->semStack[$stackPos-(1-1)], $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes);
             },
             88 => 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);
             },
             89 => function ($stackPos) {
-                 /* nothing */
+                 $this->semValue = new Name($this->semStack[$stackPos-(1-1)], $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes);
             },
             90 => function ($stackPos) {
-                 /* nothing */
+                 $this->semValue = new Name($this->semStack[$stackPos-(1-1)], $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes);
             },
             91 => function ($stackPos) {
-                 /* nothing */
+                 $this->semValue = $this->semStack[$stackPos-(1-1)];
             },
             92 => function ($stackPos) {
-                 $this->emitError(new Error('A trailing comma is not allowed here', $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes));
+                 $this->semValue = new Name(substr($this->semStack[$stackPos-(1-1)], 1), $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes);
             },
             93 => function ($stackPos) {
-                $this->semValue = $this->semStack[$stackPos];
+                 $this->semValue = new Expr\Variable(substr($this->semStack[$stackPos-(1-1)], 1), $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes);
             },
             94 => function ($stackPos) {
-                $this->semValue = $this->semStack[$stackPos];
+                 /* nothing */
             },
             95 => function ($stackPos) {
-                 $this->semValue = $this->semStack[$stackPos-(1-1)];
+                 /* nothing */
             },
             96 => function ($stackPos) {
-                 $this->semValue = $this->semStack[$stackPos-(1-1)];
+                 /* nothing */
             },
             97 => function ($stackPos) {
-                 $this->semValue = $this->semStack[$stackPos-(1-1)];
+                 $this->emitError(new Error('A trailing comma is not allowed here', $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes));
             },
             98 => function ($stackPos) {
-                 $this->semValue = new Stmt\HaltCompiler($this->lexer->handleHaltCompiler(), $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes);
+                $this->semValue = $this->semStack[$stackPos];
             },
             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);
+                $this->semValue = $this->semStack[$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);
+                 $this->semValue = new Node\Attribute($this->semStack[$stackPos-(1-1)], [], $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes);
             },
             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);
+                 $this->semValue = new Node\Attribute($this->semStack[$stackPos-(2-1)], $this->semStack[$stackPos-(2-2)], $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes);
             },
             102 => function ($stackPos) {
-                 $this->semValue = new Stmt\Use_($this->semStack[$stackPos-(3-2)], Stmt\Use_::TYPE_NORMAL, $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
+                 $this->semValue = array($this->semStack[$stackPos-(1-1)]);
             },
             103 => 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->semStack[$stackPos-(3-1)][] = $this->semStack[$stackPos-(3-3)]; $this->semValue = $this->semStack[$stackPos-(3-1)];
             },
             104 => function ($stackPos) {
-                 $this->semValue = $this->semStack[$stackPos-(2-1)];
+                 $this->semValue = new Node\AttributeGroup($this->semStack[$stackPos-(4-2)], $this->startAttributeStack[$stackPos-(4-1)] + $this->endAttributes);
             },
             105 => function ($stackPos) {
-                 $this->semValue = new Stmt\Const_($this->semStack[$stackPos-(3-2)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
+                 $this->semValue = array($this->semStack[$stackPos-(1-1)]);
             },
             106 => function ($stackPos) {
-                 $this->semValue = Stmt\Use_::TYPE_FUNCTION;
+                 $this->semStack[$stackPos-(2-1)][] = $this->semStack[$stackPos-(2-2)]; $this->semValue = $this->semStack[$stackPos-(2-1)];
             },
             107 => function ($stackPos) {
-                 $this->semValue = Stmt\Use_::TYPE_CONSTANT;
+                 $this->semValue = [];
             },
             108 => 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 = $this->semStack[$stackPos-(1-1)];
             },
             109 => 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 = $this->semStack[$stackPos-(1-1)];
             },
             110 => 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 = $this->semStack[$stackPos-(1-1)];
             },
             111 => 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 = $this->semStack[$stackPos-(1-1)];
             },
             112 => function ($stackPos) {
-                 $this->semValue = $this->semStack[$stackPos-(2-1)];
+                 $this->semValue = new Stmt\HaltCompiler($this->lexer->handleHaltCompiler(), $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes);
             },
             113 => function ($stackPos) {
-                 $this->semStack[$stackPos-(3-1)][] = $this->semStack[$stackPos-(3-3)]; $this->semValue = $this->semStack[$stackPos-(3-1)];
+                 $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);
             },
             114 => function ($stackPos) {
-                 $this->semValue = array($this->semStack[$stackPos-(1-1)]);
+                 $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);
             },
             115 => function ($stackPos) {
-                 $this->semValue = $this->semStack[$stackPos-(2-1)];
+                 $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);
             },
             116 => function ($stackPos) {
-                 $this->semStack[$stackPos-(3-1)][] = $this->semStack[$stackPos-(3-3)]; $this->semValue = $this->semStack[$stackPos-(3-1)];
+                 $this->semValue = new Stmt\Use_($this->semStack[$stackPos-(3-2)], Stmt\Use_::TYPE_NORMAL, $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
             },
             117 => function ($stackPos) {
-                 $this->semValue = array($this->semStack[$stackPos-(1-1)]);
+                 $this->semValue = new Stmt\Use_($this->semStack[$stackPos-(4-3)], $this->semStack[$stackPos-(4-2)], $this->startAttributeStack[$stackPos-(4-1)] + $this->endAttributes);
             },
             118 => function ($stackPos) {
                  $this->semValue = $this->semStack[$stackPos-(2-1)];
             },
             119 => function ($stackPos) {
-                 $this->semStack[$stackPos-(3-1)][] = $this->semStack[$stackPos-(3-3)]; $this->semValue = $this->semStack[$stackPos-(3-1)];
+                 $this->semValue = new Stmt\Const_($this->semStack[$stackPos-(3-2)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
             },
             120 => function ($stackPos) {
-                 $this->semValue = array($this->semStack[$stackPos-(1-1)]);
+                 $this->semValue = Stmt\Use_::TYPE_FUNCTION;
             },
             121 => 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 = Stmt\Use_::TYPE_CONSTANT;
             },
             122 => 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\GroupUse($this->semStack[$stackPos-(7-3)], $this->semStack[$stackPos-(7-6)], $this->semStack[$stackPos-(7-2)], $this->startAttributeStack[$stackPos-(7-1)] + $this->endAttributes);
             },
             123 => function ($stackPos) {
-                 $this->semValue = $this->semStack[$stackPos-(1-1)];
+                 $this->semValue = new Stmt\GroupUse($this->semStack[$stackPos-(6-2)], $this->semStack[$stackPos-(6-5)], Stmt\Use_::TYPE_UNKNOWN, $this->startAttributeStack[$stackPos-(6-1)] + $this->endAttributes);
             },
             124 => function ($stackPos) {
-                 $this->semValue = $this->semStack[$stackPos-(2-2)];
+                 $this->semValue = $this->semStack[$stackPos-(2-1)];
             },
             125 => function ($stackPos) {
-                 $this->semValue = $this->semStack[$stackPos-(1-1)]; $this->semValue->type = Stmt\Use_::TYPE_NORMAL;
+                 $this->semStack[$stackPos-(3-1)][] = $this->semStack[$stackPos-(3-3)]; $this->semValue = $this->semStack[$stackPos-(3-1)];
             },
             126 => function ($stackPos) {
-                 $this->semValue = $this->semStack[$stackPos-(2-2)]; $this->semValue->type = $this->semStack[$stackPos-(2-1)];
+                 $this->semValue = array($this->semStack[$stackPos-(1-1)]);
             },
             127 => function ($stackPos) {
                  $this->semValue = $this->semStack[$stackPos-(2-1)];
@@ -1254,1220 +1358,1371 @@ protected function initReduceCallbacks() {
                  $this->semValue = array($this->semStack[$stackPos-(1-1)]);
             },
             130 => 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 = $this->semStack[$stackPos-(2-1)];
             },
             131 => function ($stackPos) {
-                 $this->semValue = $this->semStack[$stackPos-(2-1)];
+                 $this->semStack[$stackPos-(3-1)][] = $this->semStack[$stackPos-(3-3)]; $this->semValue = $this->semStack[$stackPos-(3-1)];
             },
             132 => 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)]);
             },
             133 => function ($stackPos) {
-                 $this->semValue = array($this->semStack[$stackPos-(1-1)]);
+                 $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));
             },
             134 => 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 = 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));
             },
             135 => 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 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));
             },
             136 => function ($stackPos) {
-                 $this->semValue = array();
+                 $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));
             },
             137 => function ($stackPos) {
-                 $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)];
+                 $this->semValue = $this->semStack[$stackPos-(1-1)]; $this->semValue->type = Stmt\Use_::TYPE_NORMAL;
             },
             138 => function ($stackPos) {
-                 $this->semValue = $this->semStack[$stackPos-(1-1)];
+                 $this->semValue = $this->semStack[$stackPos-(2-2)]; $this->semValue->type = $this->semStack[$stackPos-(2-1)];
             },
             139 => function ($stackPos) {
-                 $this->semValue = $this->semStack[$stackPos-(1-1)];
+                 $this->semValue = $this->semStack[$stackPos-(2-1)];
             },
             140 => function ($stackPos) {
-                 $this->semValue = $this->semStack[$stackPos-(1-1)];
+                 $this->semStack[$stackPos-(3-1)][] = $this->semStack[$stackPos-(3-3)]; $this->semValue = $this->semStack[$stackPos-(3-1)];
             },
             141 => function ($stackPos) {
-                 throw new Error('__HALT_COMPILER() can only be used from the outermost scope', $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes);
+                 $this->semValue = array($this->semStack[$stackPos-(1-1)]);
             },
             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', []))); };
-        } else {
-            $startAttributes = $this->startAttributeStack[$stackPos-(3-1)]; if (isset($startAttributes['comments'])) { $this->semValue = new Stmt\Nop($startAttributes + $this->endAttributes); } else { $this->semValue = null; };
-            if (null === $this->semValue) { $this->semValue = array(); }
-        }
-
+                 $this->semValue = new Node\Const_($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
             },
             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);
+                 $this->semValue = $this->semStack[$stackPos-(2-1)];
             },
             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);
+                 $this->semStack[$stackPos-(3-1)][] = $this->semStack[$stackPos-(3-3)]; $this->semValue = $this->semStack[$stackPos-(3-1)];
             },
             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);
+                 $this->semValue = array($this->semStack[$stackPos-(1-1)]);
             },
             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);
+                 $this->semValue = new Node\Const_($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
             },
             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);
+                 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)]; };
             },
             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);
+                 $this->semValue = array();
             },
             149 => function ($stackPos) {
-                 $this->semValue = new Stmt\Break_($this->semStack[$stackPos-(3-2)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
+                 $startAttributes = $this->lookaheadStartAttributes; if (isset($startAttributes['comments'])) { $nop = new Stmt\Nop($this->createCommentNopAttributes($startAttributes['comments'])); } else { $nop = null; };
+            if ($nop !== null) { $this->semStack[$stackPos-(1-1)][] = $nop; } $this->semValue = $this->semStack[$stackPos-(1-1)];
             },
             150 => function ($stackPos) {
-                 $this->semValue = new Stmt\Continue_($this->semStack[$stackPos-(3-2)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
+                 $this->semValue = $this->semStack[$stackPos-(1-1)];
             },
             151 => function ($stackPos) {
-                 $this->semValue = new Stmt\Return_($this->semStack[$stackPos-(3-2)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
+                 $this->semValue = $this->semStack[$stackPos-(1-1)];
             },
             152 => function ($stackPos) {
-                 $this->semValue = new Stmt\Global_($this->semStack[$stackPos-(3-2)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
+                 $this->semValue = $this->semStack[$stackPos-(1-1)];
             },
             153 => function ($stackPos) {
-                 $this->semValue = new Stmt\Static_($this->semStack[$stackPos-(3-2)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
+                 throw new Error('__HALT_COMPILER() can only be used from the outermost scope', $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes);
             },
             154 => function ($stackPos) {
-                 $this->semValue = new Stmt\Echo_($this->semStack[$stackPos-(3-2)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
+
+        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', []))); };
+        } else {
+            $startAttributes = $this->startAttributeStack[$stackPos-(3-1)]; if (isset($startAttributes['comments'])) { $this->semValue = new Stmt\Nop($startAttributes + $this->endAttributes); } else { $this->semValue = null; };
+            if (null === $this->semValue) { $this->semValue = array(); }
+        }
+
             },
             155 => function ($stackPos) {
-                 $this->semValue = new Stmt\InlineHTML($this->semStack[$stackPos-(1-1)], $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes);
+                 $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);
             },
             156 => function ($stackPos) {
-                 $this->semValue = new Stmt\Expression($this->semStack[$stackPos-(2-1)], $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes);
+                 $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);
             },
             157 => function ($stackPos) {
-                 $this->semValue = new Stmt\Unset_($this->semStack[$stackPos-(5-3)], $this->startAttributeStack[$stackPos-(5-1)] + $this->endAttributes);
+                 $this->semValue = new Stmt\While_($this->semStack[$stackPos-(5-3)], $this->semStack[$stackPos-(5-5)], $this->startAttributeStack[$stackPos-(5-1)] + $this->endAttributes);
             },
             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);
+                 $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);
             },
             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);
+                 $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);
             },
             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);
+                 $this->semValue = new Stmt\Switch_($this->semStack[$stackPos-(5-3)], $this->semStack[$stackPos-(5-5)], $this->startAttributeStack[$stackPos-(5-1)] + $this->endAttributes);
             },
             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);
+                 $this->semValue = new Stmt\Break_($this->semStack[$stackPos-(3-2)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
             },
             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);
+                 $this->semValue = new Stmt\Continue_($this->semStack[$stackPos-(3-2)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
             },
             163 => function ($stackPos) {
-                 $this->semValue = new Stmt\Throw_($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);
             },
             164 => function ($stackPos) {
-                 $this->semValue = new Stmt\Goto_($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);
             },
             165 => function ($stackPos) {
-                 $this->semValue = new Stmt\Label($this->semStack[$stackPos-(2-1)], $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes);
+                 $this->semValue = new Stmt\Static_($this->semStack[$stackPos-(3-2)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
             },
             166 => function ($stackPos) {
-                 $this->semValue = array(); /* means: no statement */
+                 $this->semValue = new Stmt\Echo_($this->semStack[$stackPos-(3-2)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
             },
             167 => function ($stackPos) {
-                 $this->semValue = $this->semStack[$stackPos-(1-1)];
+                 $this->semValue = new Stmt\InlineHTML($this->semStack[$stackPos-(1-1)], $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes);
             },
             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 */
+
+        $e = $this->semStack[$stackPos-(2-1)];
+        if ($e instanceof Expr\Throw_) {
+            // For backwards-compatibility reasons, convert throw in statement position into
+            // Stmt\Throw_ rather than Stmt\Expression(Expr\Throw_).
+            $this->semValue = new Stmt\Throw_($e->expr, $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes);
+        } else {
+            $this->semValue = new Stmt\Expression($e, $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes);
+        }
+
             },
             169 => function ($stackPos) {
-                 $this->semValue = array();
+                 $this->semValue = new Stmt\Unset_($this->semStack[$stackPos-(5-3)], $this->startAttributeStack[$stackPos-(5-1)] + $this->endAttributes);
             },
             170 => function ($stackPos) {
-                 $this->semStack[$stackPos-(2-1)][] = $this->semStack[$stackPos-(2-2)]; $this->semValue = $this->semStack[$stackPos-(2-1)];
+                 $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);
             },
             171 => function ($stackPos) {
-                 $this->semValue = array($this->semStack[$stackPos-(1-1)]);
+                 $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);
             },
             172 => function ($stackPos) {
-                 $this->semStack[$stackPos-(3-1)][] = $this->semStack[$stackPos-(3-3)]; $this->semValue = $this->semStack[$stackPos-(3-1)];
+                 $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);
             },
             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);
+                 $this->semValue = new Stmt\Declare_($this->semStack[$stackPos-(5-3)], $this->semStack[$stackPos-(5-5)], $this->startAttributeStack[$stackPos-(5-1)] + $this->endAttributes);
             },
             174 => function ($stackPos) {
-                 $this->semValue = null;
+                 $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);
             },
             175 => function ($stackPos) {
-                 $this->semValue = new Stmt\Finally_($this->semStack[$stackPos-(4-3)], $this->startAttributeStack[$stackPos-(4-1)] + $this->endAttributes);
+                 $this->semValue = new Stmt\Goto_($this->semStack[$stackPos-(3-2)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
             },
             176 => function ($stackPos) {
-                 $this->semValue = $this->semStack[$stackPos-(2-1)];
+                 $this->semValue = new Stmt\Label($this->semStack[$stackPos-(2-1)], $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes);
             },
             177 => function ($stackPos) {
-                 $this->semValue = array($this->semStack[$stackPos-(1-1)]);
+                 $this->semValue = array(); /* means: no statement */
             },
             178 => 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)];
             },
             179 => function ($stackPos) {
-                 $this->semValue = false;
+                 $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 */
             },
             180 => function ($stackPos) {
-                 $this->semValue = true;
+                 $this->semValue = array();
             },
             181 => function ($stackPos) {
-                 $this->semValue = false;
+                 $this->semStack[$stackPos-(2-1)][] = $this->semStack[$stackPos-(2-2)]; $this->semValue = $this->semStack[$stackPos-(2-1)];
             },
             182 => function ($stackPos) {
-                 $this->semValue = true;
+                 $this->semValue = array($this->semStack[$stackPos-(1-1)]);
             },
             183 => function ($stackPos) {
-                 $this->semValue = $this->semStack[$stackPos-(3-2)];
+                 $this->semStack[$stackPos-(3-1)][] = $this->semStack[$stackPos-(3-3)]; $this->semValue = $this->semStack[$stackPos-(3-1)];
             },
             184 => function ($stackPos) {
-                 $this->semValue = [];
+                 $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);
             },
             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);
+                 $this->semValue = null;
             },
             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));
+                 $this->semValue = new Stmt\Finally_($this->semStack[$stackPos-(4-3)], $this->startAttributeStack[$stackPos-(4-1)] + $this->endAttributes);
             },
             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));
+                 $this->semValue = $this->semStack[$stackPos-(2-1)];
             },
             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);
+                 $this->semValue = array($this->semStack[$stackPos-(1-1)]);
             },
             189 => function ($stackPos) {
-                 $this->semValue = 0;
+                 $this->semStack[$stackPos-(3-1)][] = $this->semStack[$stackPos-(3-3)]; $this->semValue = $this->semStack[$stackPos-(3-1)];
             },
             190 => function ($stackPos) {
-                 $this->semValue = Stmt\Class_::MODIFIER_ABSTRACT;
+                 $this->semValue = false;
             },
             191 => function ($stackPos) {
-                 $this->semValue = Stmt\Class_::MODIFIER_FINAL;
+                 $this->semValue = true;
             },
             192 => function ($stackPos) {
-                 $this->semValue = null;
+                 $this->semValue = false;
             },
             193 => function ($stackPos) {
-                 $this->semValue = $this->semStack[$stackPos-(2-2)];
+                 $this->semValue = true;
             },
             194 => function ($stackPos) {
-                 $this->semValue = array();
+                 $this->semValue = $this->semStack[$stackPos-(3-2)];
             },
             195 => function ($stackPos) {
-                 $this->semValue = $this->semStack[$stackPos-(2-2)];
+                 $this->semValue = [];
             },
             196 => function ($stackPos) {
-                 $this->semValue = array();
+                 $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)], 'attrGroups' => []], $this->startAttributeStack[$stackPos-(8-1)] + $this->endAttributes);
             },
             197 => function ($stackPos) {
-                 $this->semValue = $this->semStack[$stackPos-(2-2)];
+                 $this->semValue = new Stmt\Function_($this->semStack[$stackPos-(9-4)], ['byRef' => $this->semStack[$stackPos-(9-3)], 'params' => $this->semStack[$stackPos-(9-6)], 'returnType' => $this->semStack[$stackPos-(9-8)], 'stmts' => $this->semStack[$stackPos-(9-9)], 'attrGroups' => $this->semStack[$stackPos-(9-1)]], $this->startAttributeStack[$stackPos-(9-1)] + $this->endAttributes);
             },
             198 => function ($stackPos) {
-                 $this->semValue = $this->semStack[$stackPos-(2-1)];
+                 $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)], 'attrGroups' => []], $this->startAttributeStack[$stackPos-(7-1)] + $this->endAttributes);
+            $this->checkClass($this->semValue, $stackPos-(7-2));
             },
             199 => function ($stackPos) {
-                 $this->semValue = array($this->semStack[$stackPos-(1-1)]);
+                 $this->semValue = new Stmt\Class_($this->semStack[$stackPos-(8-3)], ['type' => $this->semStack[$stackPos-(8-2)], 'extends' => $this->semStack[$stackPos-(8-4)], 'implements' => $this->semStack[$stackPos-(8-5)], 'stmts' => $this->semStack[$stackPos-(8-7)], 'attrGroups' => $this->semStack[$stackPos-(8-1)]], $this->startAttributeStack[$stackPos-(8-1)] + $this->endAttributes);
+            $this->checkClass($this->semValue, $stackPos-(8-3));
             },
             200 => function ($stackPos) {
-                 $this->semStack[$stackPos-(3-1)][] = $this->semStack[$stackPos-(3-3)]; $this->semValue = $this->semStack[$stackPos-(3-1)];
+                 $this->semValue = new Stmt\Interface_($this->semStack[$stackPos-(7-3)], ['extends' => $this->semStack[$stackPos-(7-4)], 'stmts' => $this->semStack[$stackPos-(7-6)], 'attrGroups' => $this->semStack[$stackPos-(7-1)]], $this->startAttributeStack[$stackPos-(7-1)] + $this->endAttributes);
+            $this->checkInterface($this->semValue, $stackPos-(7-3));
             },
             201 => function ($stackPos) {
-                 $this->semValue = is_array($this->semStack[$stackPos-(1-1)]) ? $this->semStack[$stackPos-(1-1)] : array($this->semStack[$stackPos-(1-1)]);
+                 $this->semValue = new Stmt\Trait_($this->semStack[$stackPos-(6-3)], ['stmts' => $this->semStack[$stackPos-(6-5)], 'attrGroups' => $this->semStack[$stackPos-(6-1)]], $this->startAttributeStack[$stackPos-(6-1)] + $this->endAttributes);
             },
             202 => function ($stackPos) {
-                 $this->semValue = $this->semStack[$stackPos-(4-2)];
+                 $this->semValue = 0;
             },
             203 => function ($stackPos) {
-                 $this->semValue = is_array($this->semStack[$stackPos-(1-1)]) ? $this->semStack[$stackPos-(1-1)] : array($this->semStack[$stackPos-(1-1)]);
+                 $this->semValue = Stmt\Class_::MODIFIER_ABSTRACT;
             },
             204 => function ($stackPos) {
-                 $this->semValue = $this->semStack[$stackPos-(4-2)];
+                 $this->semValue = Stmt\Class_::MODIFIER_FINAL;
             },
             205 => function ($stackPos) {
-                 $this->semValue = is_array($this->semStack[$stackPos-(1-1)]) ? $this->semStack[$stackPos-(1-1)] : array($this->semStack[$stackPos-(1-1)]);
+                 $this->semValue = null;
             },
             206 => function ($stackPos) {
-                 $this->semValue = null;
+                 $this->semValue = $this->semStack[$stackPos-(2-2)];
             },
             207 => function ($stackPos) {
-                 $this->semValue = $this->semStack[$stackPos-(4-2)];
+                 $this->semValue = array();
             },
             208 => function ($stackPos) {
-                 $this->semValue = $this->semStack[$stackPos-(2-1)];
+                 $this->semValue = $this->semStack[$stackPos-(2-2)];
             },
             209 => function ($stackPos) {
-                 $this->semValue = array($this->semStack[$stackPos-(1-1)]);
+                 $this->semValue = array();
             },
             210 => 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)];
             },
             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);
+                 $this->semValue = $this->semStack[$stackPos-(2-1)];
             },
             212 => function ($stackPos) {
-                 $this->semValue = $this->semStack[$stackPos-(3-2)];
+                 $this->semValue = array($this->semStack[$stackPos-(1-1)]);
             },
             213 => function ($stackPos) {
-                 $this->semValue = $this->semStack[$stackPos-(4-3)];
+                 $this->semStack[$stackPos-(3-1)][] = $this->semStack[$stackPos-(3-3)]; $this->semValue = $this->semStack[$stackPos-(3-1)];
             },
             214 => 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)]);
             },
             215 => function ($stackPos) {
-                 $this->semValue = $this->semStack[$stackPos-(5-3)];
+                 $this->semValue = $this->semStack[$stackPos-(4-2)];
             },
             216 => function ($stackPos) {
-                 $this->semValue = array();
+                 $this->semValue = is_array($this->semStack[$stackPos-(1-1)]) ? $this->semStack[$stackPos-(1-1)] : array($this->semStack[$stackPos-(1-1)]);
             },
             217 => function ($stackPos) {
-                 $this->semStack[$stackPos-(2-1)][] = $this->semStack[$stackPos-(2-2)]; $this->semValue = $this->semStack[$stackPos-(2-1)];
+                 $this->semValue = $this->semStack[$stackPos-(4-2)];
             },
             218 => 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->semValue = is_array($this->semStack[$stackPos-(1-1)]) ? $this->semStack[$stackPos-(1-1)] : array($this->semStack[$stackPos-(1-1)]);
             },
             219 => function ($stackPos) {
-                 $this->semValue = new Stmt\Case_(null, $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
+                 $this->semValue = null;
             },
             220 => function ($stackPos) {
-                $this->semValue = $this->semStack[$stackPos];
+                 $this->semValue = $this->semStack[$stackPos-(4-2)];
             },
             221 => function ($stackPos) {
-                $this->semValue = $this->semStack[$stackPos];
+                 $this->semValue = $this->semStack[$stackPos-(2-1)];
             },
             222 => function ($stackPos) {
-                 $this->semValue = is_array($this->semStack[$stackPos-(1-1)]) ? $this->semStack[$stackPos-(1-1)] : array($this->semStack[$stackPos-(1-1)]);
+                 $this->semValue = array($this->semStack[$stackPos-(1-1)]);
             },
             223 => function ($stackPos) {
-                 $this->semValue = $this->semStack[$stackPos-(4-2)];
+                 $this->semStack[$stackPos-(3-1)][] = $this->semStack[$stackPos-(3-3)]; $this->semValue = $this->semStack[$stackPos-(3-1)];
             },
             224 => function ($stackPos) {
-                 $this->semValue = array();
+                 $this->semValue = new Stmt\DeclareDeclare($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
             },
             225 => 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)];
             },
             226 => 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->semValue = $this->semStack[$stackPos-(4-3)];
             },
             227 => function ($stackPos) {
-                 $this->semValue = array();
+                 $this->semValue = $this->semStack[$stackPos-(4-2)];
             },
             228 => function ($stackPos) {
-                 $this->semStack[$stackPos-(2-1)][] = $this->semStack[$stackPos-(2-2)]; $this->semValue = $this->semStack[$stackPos-(2-1)];
+                 $this->semValue = $this->semStack[$stackPos-(5-3)];
             },
             229 => 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->semValue = array();
             },
             230 => function ($stackPos) {
-                 $this->semValue = null;
+                 $this->semStack[$stackPos-(2-1)][] = $this->semStack[$stackPos-(2-2)]; $this->semValue = $this->semStack[$stackPos-(2-1)];
             },
             231 => 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 = new Stmt\Case_($this->semStack[$stackPos-(4-2)], $this->semStack[$stackPos-(4-4)], $this->startAttributeStack[$stackPos-(4-1)] + $this->endAttributes);
             },
             232 => function ($stackPos) {
-                 $this->semValue = null;
+                 $this->semValue = new Stmt\Case_(null, $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
             },
             233 => function ($stackPos) {
-                 $this->semValue = new Stmt\Else_($this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
+                $this->semValue = $this->semStack[$stackPos];
             },
             234 => function ($stackPos) {
-                 $this->semValue = array($this->semStack[$stackPos-(1-1)], false);
+                $this->semValue = $this->semStack[$stackPos];
             },
             235 => function ($stackPos) {
-                 $this->semValue = array($this->semStack[$stackPos-(2-2)], true);
+                 $this->semValue = new Expr\Match_($this->semStack[$stackPos-(7-3)], $this->semStack[$stackPos-(7-6)], $this->startAttributeStack[$stackPos-(7-1)] + $this->endAttributes);
             },
             236 => function ($stackPos) {
-                 $this->semValue = array($this->semStack[$stackPos-(1-1)], false);
+                 $this->semValue = [];
             },
             237 => function ($stackPos) {
-                 $this->semValue = array($this->semStack[$stackPos-(1-1)], false);
+                 $this->semValue = $this->semStack[$stackPos-(2-1)];
             },
             238 => function ($stackPos) {
-                 $this->semValue = $this->semStack[$stackPos-(2-1)];
+                 $this->semValue = array($this->semStack[$stackPos-(1-1)]);
             },
             239 => function ($stackPos) {
-                 $this->semValue = array();
+                 $this->semStack[$stackPos-(3-1)][] = $this->semStack[$stackPos-(3-3)]; $this->semValue = $this->semStack[$stackPos-(3-1)];
             },
             240 => function ($stackPos) {
-                 $this->semValue = array($this->semStack[$stackPos-(1-1)]);
+                 $this->semValue = new Node\MatchArm($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
             },
             241 => function ($stackPos) {
-                 $this->semStack[$stackPos-(3-1)][] = $this->semStack[$stackPos-(3-3)]; $this->semValue = $this->semStack[$stackPos-(3-1)];
+                 $this->semValue = new Node\MatchArm(null, $this->semStack[$stackPos-(4-4)], $this->startAttributeStack[$stackPos-(4-1)] + $this->endAttributes);
             },
             242 => 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->semValue = is_array($this->semStack[$stackPos-(1-1)]) ? $this->semStack[$stackPos-(1-1)] : array($this->semStack[$stackPos-(1-1)]);
             },
             243 => 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 = $this->semStack[$stackPos-(4-2)];
             },
             244 => 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 = array();
             },
             245 => 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)];
             },
             246 => function ($stackPos) {
-                 $this->semValue = new Node\NullableType($this->semStack[$stackPos-(2-2)], $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes);
+                 $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);
             },
             247 => function ($stackPos) {
-                 $this->semValue = $this->handleBuiltinTypes($this->semStack[$stackPos-(1-1)]);
+                 $this->semValue = array();
             },
             248 => function ($stackPos) {
-                 $this->semValue = new Node\Identifier('array', $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes);
+                 $this->semStack[$stackPos-(2-1)][] = $this->semStack[$stackPos-(2-2)]; $this->semValue = $this->semStack[$stackPos-(2-1)];
             },
             249 => function ($stackPos) {
-                 $this->semValue = new Node\Identifier('callable', $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes);
+                 $this->semValue = new Stmt\ElseIf_($this->semStack[$stackPos-(6-3)], $this->semStack[$stackPos-(6-6)], $this->startAttributeStack[$stackPos-(6-1)] + $this->endAttributes);
             },
             250 => function ($stackPos) {
                  $this->semValue = null;
             },
             251 => function ($stackPos) {
-                 $this->semValue = $this->semStack[$stackPos-(1-1)];
+                 $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);
             },
             252 => function ($stackPos) {
                  $this->semValue = null;
             },
             253 => function ($stackPos) {
-                 $this->semValue = $this->semStack[$stackPos-(2-2)];
+                 $this->semValue = new Stmt\Else_($this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
             },
             254 => function ($stackPos) {
-                 $this->semValue = null;
+                 $this->semValue = array($this->semStack[$stackPos-(1-1)], false);
             },
             255 => function ($stackPos) {
-                 $this->semValue = array();
+                 $this->semValue = array($this->semStack[$stackPos-(2-2)], true);
             },
             256 => function ($stackPos) {
-                 $this->semValue = $this->semStack[$stackPos-(4-2)];
+                 $this->semValue = array($this->semStack[$stackPos-(1-1)], false);
             },
             257 => function ($stackPos) {
-                 $this->semValue = array($this->semStack[$stackPos-(1-1)]);
+                 $this->semValue = array($this->semStack[$stackPos-(1-1)], false);
             },
             258 => 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)];
             },
             259 => function ($stackPos) {
-                 $this->semValue = new Node\Arg($this->semStack[$stackPos-(1-1)], false, false, $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes);
+                 $this->semValue = array();
             },
             260 => function ($stackPos) {
-                 $this->semValue = new Node\Arg($this->semStack[$stackPos-(2-2)], true, false, $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes);
+                 $this->semValue = array($this->semStack[$stackPos-(1-1)]);
             },
             261 => function ($stackPos) {
-                 $this->semValue = new Node\Arg($this->semStack[$stackPos-(2-2)], false, 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)];
             },
             262 => function ($stackPos) {
-                 $this->semValue = $this->semStack[$stackPos-(2-1)];
+                 $this->semValue = 0;
             },
             263 => function ($stackPos) {
-                 $this->semStack[$stackPos-(3-1)][] = $this->semStack[$stackPos-(3-3)]; $this->semValue = $this->semStack[$stackPos-(3-1)];
+                 $this->semValue = Stmt\Class_::MODIFIER_PUBLIC;
             },
             264 => function ($stackPos) {
-                 $this->semValue = array($this->semStack[$stackPos-(1-1)]);
+                 $this->semValue = Stmt\Class_::MODIFIER_PROTECTED;
             },
             265 => function ($stackPos) {
-                 $this->semValue = new Expr\Variable($this->semStack[$stackPos-(1-1)], $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes);
+                 $this->semValue = Stmt\Class_::MODIFIER_PRIVATE;
             },
             266 => function ($stackPos) {
-                 $this->semValue = $this->semStack[$stackPos-(2-1)];
+                 $this->semValue = new Node\Param($this->semStack[$stackPos-(6-6)], null, $this->semStack[$stackPos-(6-3)], $this->semStack[$stackPos-(6-4)], $this->semStack[$stackPos-(6-5)], $this->startAttributeStack[$stackPos-(6-1)] + $this->endAttributes, $this->semStack[$stackPos-(6-2)], $this->semStack[$stackPos-(6-1)]);
+            $this->checkParam($this->semValue);
             },
             267 => function ($stackPos) {
-                 $this->semStack[$stackPos-(3-1)][] = $this->semStack[$stackPos-(3-3)]; $this->semValue = $this->semStack[$stackPos-(3-1)];
+                 $this->semValue = new Node\Param($this->semStack[$stackPos-(8-6)], $this->semStack[$stackPos-(8-8)], $this->semStack[$stackPos-(8-3)], $this->semStack[$stackPos-(8-4)], $this->semStack[$stackPos-(8-5)], $this->startAttributeStack[$stackPos-(8-1)] + $this->endAttributes, $this->semStack[$stackPos-(8-2)], $this->semStack[$stackPos-(8-1)]);
+            $this->checkParam($this->semValue);
             },
             268 => function ($stackPos) {
-                 $this->semValue = array($this->semStack[$stackPos-(1-1)]);
+                 $this->semValue = new Node\Param(new Expr\Error($this->startAttributeStack[$stackPos-(6-1)] + $this->endAttributes), null, $this->semStack[$stackPos-(6-3)], $this->semStack[$stackPos-(6-4)], $this->semStack[$stackPos-(6-5)], $this->startAttributeStack[$stackPos-(6-1)] + $this->endAttributes, $this->semStack[$stackPos-(6-2)], $this->semStack[$stackPos-(6-1)]);
             },
             269 => function ($stackPos) {
-                 $this->semValue = new Stmt\StaticVar($this->semStack[$stackPos-(1-1)], null, $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes);
+                 $this->semValue = $this->semStack[$stackPos-(1-1)];
             },
             270 => 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 Node\NullableType($this->semStack[$stackPos-(2-2)], $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes);
             },
             271 => 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 Node\UnionType($this->semStack[$stackPos-(1-1)], $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes);
             },
             272 => function ($stackPos) {
-                 $this->semValue = array();
+                 $this->semValue = $this->semStack[$stackPos-(1-1)];
             },
             273 => function ($stackPos) {
-                 $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)];
+                 $this->semValue = new Node\Name('static', $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes);
             },
             274 => function ($stackPos) {
-                 $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));
+                 $this->semValue = $this->handleBuiltinTypes($this->semStack[$stackPos-(1-1)]);
             },
             275 => 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));
+                 $this->semValue = new Node\Identifier('array', $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes);
             },
             276 => 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 Node\Identifier('callable', $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes);
             },
             277 => 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 = array($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)]);
             },
             278 => function ($stackPos) {
-                 $this->semValue = null; /* will be skipped */
+                 $this->semStack[$stackPos-(3-1)][] = $this->semStack[$stackPos-(3-3)]; $this->semValue = $this->semStack[$stackPos-(3-1)];
             },
             279 => function ($stackPos) {
-                 $this->semValue = array();
+                 $this->semValue = array($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)]);
             },
             280 => function ($stackPos) {
-                 $this->semValue = $this->semStack[$stackPos-(3-2)];
+                 $this->semStack[$stackPos-(3-1)][] = $this->semStack[$stackPos-(3-3)]; $this->semValue = $this->semStack[$stackPos-(3-1)];
             },
             281 => function ($stackPos) {
-                 $this->semValue = array();
+                 $this->semValue = $this->semStack[$stackPos-(1-1)];
             },
             282 => function ($stackPos) {
-                 $this->semStack[$stackPos-(2-1)][] = $this->semStack[$stackPos-(2-2)]; $this->semValue = $this->semStack[$stackPos-(2-1)];
+                 $this->semValue = new Node\NullableType($this->semStack[$stackPos-(2-2)], $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes);
             },
             283 => 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 = new Node\UnionType($this->semStack[$stackPos-(1-1)], $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes);
             },
             284 => 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 = null;
             },
             285 => 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 = $this->semStack[$stackPos-(1-1)];
             },
             286 => 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 = null;
             },
             287 => 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 = $this->semStack[$stackPos-(2-2)];
             },
             288 => function ($stackPos) {
-                 $this->semValue = array($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)]);
+                 $this->semValue = null;
             },
             289 => function ($stackPos) {
-                 $this->semValue = $this->semStack[$stackPos-(1-1)];
+                 $this->semValue = array();
             },
             290 => function ($stackPos) {
-                 $this->semValue = array(null, $this->semStack[$stackPos-(1-1)]);
+                 $this->semValue = $this->semStack[$stackPos-(4-2)];
             },
             291 => function ($stackPos) {
-                 $this->semValue = null;
+                 $this->semValue = array($this->semStack[$stackPos-(1-1)]);
             },
             292 => function ($stackPos) {
-                 $this->semValue = $this->semStack[$stackPos-(1-1)];
+                 $this->semStack[$stackPos-(3-1)][] = $this->semStack[$stackPos-(3-3)]; $this->semValue = $this->semStack[$stackPos-(3-1)];
             },
             293 => function ($stackPos) {
-                 $this->semValue = $this->semStack[$stackPos-(1-1)];
+                 $this->semValue = new Node\Arg($this->semStack[$stackPos-(1-1)], false, false, $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes);
             },
             294 => function ($stackPos) {
-                 $this->semValue = 0;
+                 $this->semValue = new Node\Arg($this->semStack[$stackPos-(2-2)], true, false, $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes);
             },
             295 => function ($stackPos) {
-                 $this->semValue = 0;
+                 $this->semValue = new Node\Arg($this->semStack[$stackPos-(2-2)], false, true, $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes);
             },
             296 => function ($stackPos) {
-                 $this->semValue = $this->semStack[$stackPos-(1-1)];
+                 $this->semValue = new Node\Arg($this->semStack[$stackPos-(3-3)], false, false, $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes, $this->semStack[$stackPos-(3-1)]);
             },
             297 => function ($stackPos) {
-                 $this->semValue = $this->semStack[$stackPos-(1-1)];
+                 $this->semValue = $this->semStack[$stackPos-(2-1)];
             },
             298 => 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->semStack[$stackPos-(3-1)][] = $this->semStack[$stackPos-(3-3)]; $this->semValue = $this->semStack[$stackPos-(3-1)];
             },
             299 => function ($stackPos) {
-                 $this->semValue = Stmt\Class_::MODIFIER_PUBLIC;
+                 $this->semValue = array($this->semStack[$stackPos-(1-1)]);
             },
             300 => function ($stackPos) {
-                 $this->semValue = Stmt\Class_::MODIFIER_PROTECTED;
+                 $this->semValue = new Expr\Variable($this->semStack[$stackPos-(1-1)], $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes);
             },
             301 => function ($stackPos) {
-                 $this->semValue = Stmt\Class_::MODIFIER_PRIVATE;
+                 $this->semValue = $this->semStack[$stackPos-(2-1)];
             },
             302 => function ($stackPos) {
-                 $this->semValue = Stmt\Class_::MODIFIER_STATIC;
+                 $this->semStack[$stackPos-(3-1)][] = $this->semStack[$stackPos-(3-3)]; $this->semValue = $this->semStack[$stackPos-(3-1)];
             },
             303 => function ($stackPos) {
-                 $this->semValue = Stmt\Class_::MODIFIER_ABSTRACT;
+                 $this->semValue = array($this->semStack[$stackPos-(1-1)]);
             },
             304 => function ($stackPos) {
-                 $this->semValue = Stmt\Class_::MODIFIER_FINAL;
+                 $this->semValue = new Stmt\StaticVar($this->semStack[$stackPos-(1-1)], null, $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes);
             },
             305 => function ($stackPos) {
-                 $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);
             },
             306 => function ($stackPos) {
-                 $this->semValue = array($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)]; }
             },
             307 => function ($stackPos) {
-                 $this->semStack[$stackPos-(3-1)][] = $this->semStack[$stackPos-(3-3)]; $this->semValue = $this->semStack[$stackPos-(3-1)];
+                 $this->semValue = array();
             },
             308 => function ($stackPos) {
-                 $this->semValue = new Node\VarLikeIdentifier(substr($this->semStack[$stackPos-(1-1)], 1), $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes);
+                 $startAttributes = $this->lookaheadStartAttributes; if (isset($startAttributes['comments'])) { $nop = new Stmt\Nop($this->createCommentNopAttributes($startAttributes['comments'])); } else { $nop = null; };
+            if ($nop !== null) { $this->semStack[$stackPos-(1-1)][] = $nop; } $this->semValue = $this->semStack[$stackPos-(1-1)];
             },
             309 => function ($stackPos) {
-                 $this->semValue = new Stmt\PropertyProperty($this->semStack[$stackPos-(1-1)], null, $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes);
+                 $this->semValue = new Stmt\Property($this->semStack[$stackPos-(5-2)], $this->semStack[$stackPos-(5-4)], $this->startAttributeStack[$stackPos-(5-1)] + $this->endAttributes, $this->semStack[$stackPos-(5-3)], $this->semStack[$stackPos-(5-1)]);
+            $this->checkProperty($this->semValue, $stackPos-(5-2));
             },
             310 => 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\ClassConst($this->semStack[$stackPos-(5-4)], $this->semStack[$stackPos-(5-2)], $this->startAttributeStack[$stackPos-(5-1)] + $this->endAttributes, $this->semStack[$stackPos-(5-1)]);
+            $this->checkClassConst($this->semValue, $stackPos-(5-2));
             },
             311 => function ($stackPos) {
-                 $this->semValue = $this->semStack[$stackPos-(2-1)];
+                 $this->semValue = new Stmt\ClassMethod($this->semStack[$stackPos-(10-5)], ['type' => $this->semStack[$stackPos-(10-2)], 'byRef' => $this->semStack[$stackPos-(10-4)], 'params' => $this->semStack[$stackPos-(10-7)], 'returnType' => $this->semStack[$stackPos-(10-9)], 'stmts' => $this->semStack[$stackPos-(10-10)], 'attrGroups' => $this->semStack[$stackPos-(10-1)]], $this->startAttributeStack[$stackPos-(10-1)] + $this->endAttributes);
+            $this->checkClassMethod($this->semValue, $stackPos-(10-2));
             },
             312 => function ($stackPos) {
-                 $this->semStack[$stackPos-(3-1)][] = $this->semStack[$stackPos-(3-3)]; $this->semValue = $this->semStack[$stackPos-(3-1)];
+                 $this->semValue = new Stmt\TraitUse($this->semStack[$stackPos-(3-2)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
             },
             313 => function ($stackPos) {
-                 $this->semValue = array($this->semStack[$stackPos-(1-1)]);
+                 $this->semValue = null; /* will be skipped */
             },
             314 => function ($stackPos) {
                  $this->semValue = array();
             },
             315 => function ($stackPos) {
-                 $this->semValue = $this->semStack[$stackPos-(1-1)];
+                 $this->semValue = $this->semStack[$stackPos-(3-2)];
             },
             316 => function ($stackPos) {
-                 $this->semValue = $this->semStack[$stackPos-(1-1)];
+                 $this->semValue = array();
             },
             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);
+                 $this->semStack[$stackPos-(2-1)][] = $this->semStack[$stackPos-(2-2)]; $this->semValue = $this->semStack[$stackPos-(2-1)];
             },
             318 => 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 = 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);
             },
             319 => 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 = 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);
             },
             320 => 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 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);
             },
             321 => 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);
             },
             322 => function ($stackPos) {
-                 $this->semValue = new Expr\Clone_($this->semStack[$stackPos-(2-2)], $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes);
+                 $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);
             },
             323 => 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 = array($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)]);
             },
             324 => 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 = $this->semStack[$stackPos-(1-1)];
             },
             325 => 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 = array(null, $this->semStack[$stackPos-(1-1)]);
             },
             326 => 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 = null;
             },
             327 => 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 = $this->semStack[$stackPos-(1-1)];
             },
             328 => 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 = $this->semStack[$stackPos-(1-1)];
             },
             329 => 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 = 0;
             },
             330 => 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 = 0;
             },
             331 => 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 = $this->semStack[$stackPos-(1-1)];
             },
             332 => 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 = $this->semStack[$stackPos-(1-1)];
             },
             333 => 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->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)];
             },
             334 => 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 = Stmt\Class_::MODIFIER_PUBLIC;
             },
             335 => function ($stackPos) {
-                 $this->semValue = new Expr\AssignOp\Coalesce($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
+                 $this->semValue = Stmt\Class_::MODIFIER_PROTECTED;
             },
             336 => function ($stackPos) {
-                 $this->semValue = new Expr\PostInc($this->semStack[$stackPos-(2-1)], $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes);
+                 $this->semValue = Stmt\Class_::MODIFIER_PRIVATE;
             },
             337 => function ($stackPos) {
-                 $this->semValue = new Expr\PreInc($this->semStack[$stackPos-(2-2)], $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes);
+                 $this->semValue = Stmt\Class_::MODIFIER_STATIC;
             },
             338 => function ($stackPos) {
-                 $this->semValue = new Expr\PostDec($this->semStack[$stackPos-(2-1)], $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes);
+                 $this->semValue = Stmt\Class_::MODIFIER_ABSTRACT;
             },
             339 => function ($stackPos) {
-                 $this->semValue = new Expr\PreDec($this->semStack[$stackPos-(2-2)], $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes);
+                 $this->semValue = Stmt\Class_::MODIFIER_FINAL;
             },
             340 => 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 = $this->semStack[$stackPos-(2-1)];
             },
             341 => 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 = array($this->semStack[$stackPos-(1-1)]);
             },
             342 => 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->semStack[$stackPos-(3-1)][] = $this->semStack[$stackPos-(3-3)]; $this->semValue = $this->semStack[$stackPos-(3-1)];
             },
             343 => 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 Node\VarLikeIdentifier(substr($this->semStack[$stackPos-(1-1)], 1), $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes);
             },
             344 => 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 Stmt\PropertyProperty($this->semStack[$stackPos-(1-1)], null, $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes);
             },
             345 => 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 Stmt\PropertyProperty($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\BitwiseAnd($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
+                 $this->semValue = $this->semStack[$stackPos-(2-1)];
             },
             347 => 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 = $this->semStack[$stackPos-(2-1)];
             },
             348 => 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->semStack[$stackPos-(3-1)][] = $this->semStack[$stackPos-(3-3)]; $this->semValue = $this->semStack[$stackPos-(3-1)];
             },
             349 => 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 = array($this->semStack[$stackPos-(1-1)]);
             },
             350 => 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 = array();
             },
             351 => 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 = $this->semStack[$stackPos-(1-1)];
             },
             352 => 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 = $this->semStack[$stackPos-(1-1)];
             },
             353 => 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\Assign($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
             },
             354 => 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\Assign($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
             },
             355 => 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\Assign($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
             },
             356 => 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\AssignRef($this->semStack[$stackPos-(4-1)], $this->semStack[$stackPos-(4-4)], $this->startAttributeStack[$stackPos-(4-1)] + $this->endAttributes);
             },
             357 => function ($stackPos) {
-                 $this->semValue = new Expr\UnaryPlus($this->semStack[$stackPos-(2-2)], $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes);
+                 $this->semValue = $this->semStack[$stackPos-(1-1)];
             },
             358 => function ($stackPos) {
-                 $this->semValue = new Expr\UnaryMinus($this->semStack[$stackPos-(2-2)], $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes);
+                 $this->semValue = $this->semStack[$stackPos-(1-1)];
             },
             359 => function ($stackPos) {
-                 $this->semValue = new Expr\BooleanNot($this->semStack[$stackPos-(2-2)], $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes);
+                 $this->semValue = new Expr\Clone_($this->semStack[$stackPos-(2-2)], $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes);
             },
             360 => function ($stackPos) {
-                 $this->semValue = new Expr\BitwiseNot($this->semStack[$stackPos-(2-2)], $this->startAttributeStack[$stackPos-(2-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);
             },
             361 => 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\AssignOp\Minus($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\NotIdentical($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);
             },
             363 => 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\AssignOp\Div($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\NotEqual($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);
             },
             365 => 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\AssignOp\Mod($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\Smaller($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);
             },
             367 => 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\AssignOp\BitwiseOr($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
             },
             368 => 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\AssignOp\BitwiseXor($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
             },
             369 => 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\AssignOp\ShiftLeft($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
             },
             370 => 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\AssignOp\ShiftRight($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
             },
             371 => function ($stackPos) {
-                 $this->semValue = $this->semStack[$stackPos-(3-2)];
+                 $this->semValue = new Expr\AssignOp\Pow($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
             },
             372 => 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\AssignOp\Coalesce($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
             },
             373 => 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\PostInc($this->semStack[$stackPos-(2-1)], $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes);
             },
             374 => 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\PreInc($this->semStack[$stackPos-(2-2)], $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes);
             },
             375 => function ($stackPos) {
-                 $this->semValue = new Expr\Isset_($this->semStack[$stackPos-(4-3)], $this->startAttributeStack[$stackPos-(4-1)] + $this->endAttributes);
+                 $this->semValue = new Expr\PostDec($this->semStack[$stackPos-(2-1)], $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes);
             },
             376 => function ($stackPos) {
-                 $this->semValue = new Expr\Empty_($this->semStack[$stackPos-(4-3)], $this->startAttributeStack[$stackPos-(4-1)] + $this->endAttributes);
+                 $this->semValue = new Expr\PreDec($this->semStack[$stackPos-(2-2)], $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes);
             },
             377 => 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\BooleanOr($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
             },
             378 => 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\BinaryOp\BooleanAnd($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
             },
             379 => function ($stackPos) {
-                 $this->semValue = new Expr\Eval_($this->semStack[$stackPos-(4-3)], $this->startAttributeStack[$stackPos-(4-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);
             },
             380 => 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\BinaryOp\LogicalAnd($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
             },
             381 => 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\BinaryOp\LogicalXor($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
             },
             382 => function ($stackPos) {
-                 $this->semValue = new Expr\Cast\Int_($this->semStack[$stackPos-(2-2)], $this->startAttributeStack[$stackPos-(2-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);
             },
             383 => function ($stackPos) {
-                 $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);
+                 $this->semValue = new Expr\BinaryOp\BitwiseAnd($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
             },
             384 => function ($stackPos) {
-                 $this->semValue = new Expr\Cast\String_($this->semStack[$stackPos-(2-2)], $this->startAttributeStack[$stackPos-(2-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);
             },
             385 => function ($stackPos) {
-                 $this->semValue = new Expr\Cast\Array_($this->semStack[$stackPos-(2-2)], $this->startAttributeStack[$stackPos-(2-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);
             },
             386 => function ($stackPos) {
-                 $this->semValue = new Expr\Cast\Object_($this->semStack[$stackPos-(2-2)], $this->startAttributeStack[$stackPos-(2-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);
             },
             387 => function ($stackPos) {
-                 $this->semValue = new Expr\Cast\Bool_($this->semStack[$stackPos-(2-2)], $this->startAttributeStack[$stackPos-(2-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);
             },
             388 => function ($stackPos) {
-                 $this->semValue = new Expr\Cast\Unset_($this->semStack[$stackPos-(2-2)], $this->startAttributeStack[$stackPos-(2-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);
             },
             389 => 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\BinaryOp\Div($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
             },
             390 => function ($stackPos) {
-                 $this->semValue = new Expr\ErrorSuppress($this->semStack[$stackPos-(2-2)], $this->startAttributeStack[$stackPos-(2-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);
             },
             391 => function ($stackPos) {
-                 $this->semValue = $this->semStack[$stackPos-(1-1)];
+                 $this->semValue = new Expr\BinaryOp\ShiftLeft($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
             },
             392 => function ($stackPos) {
-                 $this->semValue = new Expr\ShellExec($this->semStack[$stackPos-(3-2)], $this->startAttributeStack[$stackPos-(3-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);
             },
             393 => function ($stackPos) {
-                 $this->semValue = new Expr\Print_($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);
             },
             394 => function ($stackPos) {
-                 $this->semValue = new Expr\Yield_(null, null, $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes);
+                 $this->semValue = new Expr\UnaryPlus($this->semStack[$stackPos-(2-2)], $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes);
             },
             395 => function ($stackPos) {
-                 $this->semValue = new Expr\Yield_($this->semStack[$stackPos-(2-2)], null, $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes);
+                 $this->semValue = new Expr\UnaryMinus($this->semStack[$stackPos-(2-2)], $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes);
             },
             396 => 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\BooleanNot($this->semStack[$stackPos-(2-2)], $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes);
             },
             397 => function ($stackPos) {
-                 $this->semValue = new Expr\YieldFrom($this->semStack[$stackPos-(2-2)], $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes);
+                 $this->semValue = new Expr\BitwiseNot($this->semStack[$stackPos-(2-2)], $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes);
             },
             398 => function ($stackPos) {
-                 $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);
+                 $this->semValue = new Expr\BinaryOp\Identical($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
             },
             399 => function ($stackPos) {
-                 $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);
+                 $this->semValue = new Expr\BinaryOp\NotIdentical($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
             },
             400 => 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\BinaryOp\Equal($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
             },
             401 => 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\BinaryOp\NotEqual($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
             },
             402 => 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\BinaryOp\Spaceship($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
             },
             403 => 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\BinaryOp\Smaller($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
             },
             404 => 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\BinaryOp\SmallerOrEqual($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
             },
             405 => function ($stackPos) {
-                 $this->semValue = array();
+                 $this->semValue = new Expr\BinaryOp\Greater($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
             },
             406 => function ($stackPos) {
-                 $this->semValue = $this->semStack[$stackPos-(4-3)];
+                 $this->semValue = new Expr\BinaryOp\GreaterOrEqual($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
             },
             407 => function ($stackPos) {
-                 $this->semValue = $this->semStack[$stackPos-(2-1)];
+                 $this->semValue = new Expr\Instanceof_($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
             },
             408 => function ($stackPos) {
-                 $this->semValue = array($this->semStack[$stackPos-(1-1)]);
+                 $this->semValue = $this->semStack[$stackPos-(3-2)];
             },
             409 => function ($stackPos) {
-                 $this->semStack[$stackPos-(3-1)][] = $this->semStack[$stackPos-(3-3)]; $this->semValue = $this->semStack[$stackPos-(3-1)];
+                 $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);
             },
             410 => 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 = new Expr\Ternary($this->semStack[$stackPos-(4-1)], null, $this->semStack[$stackPos-(4-4)], $this->startAttributeStack[$stackPos-(4-1)] + $this->endAttributes);
             },
             411 => 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\BinaryOp\Coalesce($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
             },
             412 => 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\Isset_($this->semStack[$stackPos-(4-3)], $this->startAttributeStack[$stackPos-(4-1)] + $this->endAttributes);
             },
             413 => 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\Empty_($this->semStack[$stackPos-(4-3)], $this->startAttributeStack[$stackPos-(4-1)] + $this->endAttributes);
             },
             414 => function ($stackPos) {
-                 $this->semValue = new Name($this->semStack[$stackPos-(1-1)], $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes);
+                 $this->semValue = new Expr\Include_($this->semStack[$stackPos-(2-2)], Expr\Include_::TYPE_INCLUDE, $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes);
             },
             415 => function ($stackPos) {
-                 $this->semValue = $this->semStack[$stackPos-(1-1)];
+                 $this->semValue = new Expr\Include_($this->semStack[$stackPos-(2-2)], Expr\Include_::TYPE_INCLUDE_ONCE, $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes);
             },
             416 => function ($stackPos) {
-                 $this->semValue = new Name($this->semStack[$stackPos-(1-1)], $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes);
+                 $this->semValue = new Expr\Eval_($this->semStack[$stackPos-(4-3)], $this->startAttributeStack[$stackPos-(4-1)] + $this->endAttributes);
             },
             417 => function ($stackPos) {
-                 $this->semValue = new Name\FullyQualified($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);
             },
             418 => function ($stackPos) {
-                 $this->semValue = new Name\Relative($this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-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);
             },
             419 => function ($stackPos) {
-                 $this->semValue = $this->semStack[$stackPos-(1-1)];
+                 $this->semValue = new Expr\Cast\Int_($this->semStack[$stackPos-(2-2)], $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes);
             },
             420 => function ($stackPos) {
-                 $this->semValue = $this->semStack[$stackPos-(1-1)];
+                 $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);
             },
             421 => function ($stackPos) {
-                 $this->semValue = new Expr\Error($this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes); $this->errorState = 2;
+                 $this->semValue = new Expr\Cast\String_($this->semStack[$stackPos-(2-2)], $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes);
             },
             422 => function ($stackPos) {
-                 $this->semValue = $this->semStack[$stackPos-(1-1)];
+                 $this->semValue = new Expr\Cast\Array_($this->semStack[$stackPos-(2-2)], $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes);
             },
             423 => function ($stackPos) {
-                 $this->semValue = $this->semStack[$stackPos-(1-1)];
+                 $this->semValue = new Expr\Cast\Object_($this->semStack[$stackPos-(2-2)], $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes);
             },
             424 => function ($stackPos) {
-                 $this->semValue = null;
+                 $this->semValue = new Expr\Cast\Bool_($this->semStack[$stackPos-(2-2)], $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes);
             },
             425 => function ($stackPos) {
-                 $this->semValue = $this->semStack[$stackPos-(3-2)];
+                 $this->semValue = new Expr\Cast\Unset_($this->semStack[$stackPos-(2-2)], $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes);
             },
             426 => function ($stackPos) {
-                 $this->semValue = array();
+                 $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);
             },
             427 => 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 = new Expr\ErrorSuppress($this->semStack[$stackPos-(2-2)], $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes);
             },
             428 => 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)];
             },
             429 => function ($stackPos) {
-                 $this->semValue = array();
+                 $this->semValue = new Expr\ShellExec($this->semStack[$stackPos-(3-2)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
             },
             430 => function ($stackPos) {
-                 $this->semValue = $this->semStack[$stackPos-(1-1)];
+                 $this->semValue = new Expr\Print_($this->semStack[$stackPos-(2-2)], $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes);
             },
             431 => function ($stackPos) {
-                 $this->semValue = new Expr\ConstFetch($this->semStack[$stackPos-(1-1)], $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes);
+                 $this->semValue = new Expr\Yield_(null, null, $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes);
             },
             432 => 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 = new Expr\Yield_($this->semStack[$stackPos-(2-2)], null, $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes);
             },
             433 => 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;
+                 $this->semValue = new Expr\Yield_($this->semStack[$stackPos-(4-4)], $this->semStack[$stackPos-(4-2)], $this->startAttributeStack[$stackPos-(4-1)] + $this->endAttributes);
             },
             434 => 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 = new Expr\YieldFrom($this->semStack[$stackPos-(2-2)], $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes);
             },
             435 => 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 = new Expr\Throw_($this->semStack[$stackPos-(2-2)], $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes);
             },
             436 => function ($stackPos) {
-                 $this->semValue = $this->semStack[$stackPos-(1-1)];
+                 $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)], 'attrGroups' => []], $this->startAttributeStack[$stackPos-(8-1)] + $this->endAttributes);
             },
             437 => 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\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)], 'attrGroups' => []], $this->startAttributeStack[$stackPos-(9-1)] + $this->endAttributes);
             },
             438 => function ($stackPos) {
-                 $this->semValue = $this->parseLNumber($this->semStack[$stackPos-(1-1)], $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes);
+                 $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)], 'attrGroups' => []], $this->startAttributeStack[$stackPos-(8-1)] + $this->endAttributes);
             },
             439 => function ($stackPos) {
-                 $this->semValue = new Scalar\DNumber(Scalar\DNumber::parse($this->semStack[$stackPos-(1-1)]), $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes);
+                 $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)], 'attrGroups' => []], $this->startAttributeStack[$stackPos-(9-1)] + $this->endAttributes);
             },
             440 => function ($stackPos) {
-                 $this->semValue = new Scalar\MagicConst\Line($this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes);
+                 $this->semValue = new Expr\ArrowFunction(['static' => false, 'byRef' => $this->semStack[$stackPos-(9-3)], 'params' => $this->semStack[$stackPos-(9-5)], 'returnType' => $this->semStack[$stackPos-(9-7)], 'expr' => $this->semStack[$stackPos-(9-9)], 'attrGroups' => $this->semStack[$stackPos-(9-1)]], $this->startAttributeStack[$stackPos-(9-1)] + $this->endAttributes);
             },
             441 => function ($stackPos) {
-                 $this->semValue = new Scalar\MagicConst\File($this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes);
+                 $this->semValue = new Expr\ArrowFunction(['static' => true, 'byRef' => $this->semStack[$stackPos-(10-4)], 'params' => $this->semStack[$stackPos-(10-6)], 'returnType' => $this->semStack[$stackPos-(10-8)], 'expr' => $this->semStack[$stackPos-(10-10)], 'attrGroups' => $this->semStack[$stackPos-(10-1)]], $this->startAttributeStack[$stackPos-(10-1)] + $this->endAttributes);
             },
             442 => function ($stackPos) {
-                 $this->semValue = new Scalar\MagicConst\Dir($this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes);
+                 $this->semValue = new Expr\Closure(['static' => false, '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)], 'attrGroups' => $this->semStack[$stackPos-(9-1)]], $this->startAttributeStack[$stackPos-(9-1)] + $this->endAttributes);
             },
             443 => function ($stackPos) {
-                 $this->semValue = new Scalar\MagicConst\Class_($this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes);
+                 $this->semValue = new Expr\Closure(['static' => true, 'byRef' => $this->semStack[$stackPos-(10-4)], 'params' => $this->semStack[$stackPos-(10-6)], 'uses' => $this->semStack[$stackPos-(10-8)], 'returnType' => $this->semStack[$stackPos-(10-9)], 'stmts' => $this->semStack[$stackPos-(10-10)], 'attrGroups' => $this->semStack[$stackPos-(10-1)]], $this->startAttributeStack[$stackPos-(10-1)] + $this->endAttributes);
             },
             444 => function ($stackPos) {
-                 $this->semValue = new Scalar\MagicConst\Trait_($this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes);
+                 $this->semValue = array(new Stmt\Class_(null, ['type' => 0, 'extends' => $this->semStack[$stackPos-(8-4)], 'implements' => $this->semStack[$stackPos-(8-5)], 'stmts' => $this->semStack[$stackPos-(8-7)], 'attrGroups' => $this->semStack[$stackPos-(8-1)]], $this->startAttributeStack[$stackPos-(8-1)] + $this->endAttributes), $this->semStack[$stackPos-(8-3)]);
+            $this->checkClass($this->semValue[0], -1);
             },
             445 => function ($stackPos) {
-                 $this->semValue = new Scalar\MagicConst\Method($this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes);
+                 $this->semValue = new Expr\New_($this->semStack[$stackPos-(3-2)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
             },
             446 => function ($stackPos) {
-                 $this->semValue = new Scalar\MagicConst\Function_($this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes);
+                 list($class, $ctorArgs) = $this->semStack[$stackPos-(2-2)]; $this->semValue = new Expr\New_($class, $ctorArgs, $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes);
             },
             447 => function ($stackPos) {
-                 $this->semValue = new Scalar\MagicConst\Namespace_($this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes);
+                 $this->semValue = array();
             },
             448 => function ($stackPos) {
-                 $this->semValue = $this->semStack[$stackPos-(1-1)];
+                 $this->semValue = $this->semStack[$stackPos-(4-3)];
             },
             449 => function ($stackPos) {
-                 $this->semValue = $this->semStack[$stackPos-(1-1)];
+                 $this->semValue = $this->semStack[$stackPos-(2-1)];
             },
             450 => function ($stackPos) {
-                 $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);
+                 $this->semValue = array($this->semStack[$stackPos-(1-1)]);
             },
             451 => function ($stackPos) {
-                 $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);
+                 $this->semStack[$stackPos-(3-1)][] = $this->semStack[$stackPos-(3-3)]; $this->semValue = $this->semStack[$stackPos-(3-1)];
             },
             452 => 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 Expr\ClosureUse($this->semStack[$stackPos-(2-2)], $this->semStack[$stackPos-(2-1)], $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes);
             },
             453 => function ($stackPos) {
-                 $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);
+                 $this->semValue = new Expr\FuncCall($this->semStack[$stackPos-(2-1)], $this->semStack[$stackPos-(2-2)], $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes);
             },
             454 => function ($stackPos) {
-                 $this->semValue = null;
+                 $this->semValue = new Expr\FuncCall($this->semStack[$stackPos-(2-1)], $this->semStack[$stackPos-(2-2)], $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes);
             },
             455 => function ($stackPos) {
-                 $this->semValue = $this->semStack[$stackPos-(1-1)];
+                 $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);
             },
             456 => 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);
             },
             457 => function ($stackPos) {
-                 $this->semValue = $this->semStack[$stackPos-(3-2)];
+                 $this->semValue = $this->semStack[$stackPos-(1-1)];
             },
             458 => 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);
             },
             459 => 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);
             },
             460 => function ($stackPos) {
-                 $this->semValue = $this->semStack[$stackPos-(3-2)];
+                 $this->semValue = new Name\FullyQualified(substr($this->semStack[$stackPos-(1-1)], 1), $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes);
             },
             461 => function ($stackPos) {
-                 $this->semValue = $this->semStack[$stackPos-(1-1)];
+                 $this->semValue = new Name\Relative(substr($this->semStack[$stackPos-(1-1)], 10), $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes);
             },
             462 => 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)];
             },
             463 => 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)];
             },
             464 => 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)];
             },
             465 => 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-(1-1)] + $this->endAttributes); $this->errorState = 2;
             },
             466 => function ($stackPos) {
                  $this->semValue = $this->semStack[$stackPos-(1-1)];
             },
             467 => 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 = $this->semStack[$stackPos-(1-1)];
             },
             468 => function ($stackPos) {
-                 $this->semValue = $this->semStack[$stackPos-(1-1)];
+                 $this->semValue = null;
             },
             469 => function ($stackPos) {
-                 $this->semValue = $this->semStack[$stackPos-(1-1)];
+                 $this->semValue = $this->semStack[$stackPos-(3-2)];
             },
             470 => 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();
             },
             471 => function ($stackPos) {
-                 $this->semValue = substr($this->semStack[$stackPos-(1-1)], 1);
+                 $this->semValue = array(new Scalar\EncapsedStringPart(Scalar\String_::parseEscapeSequences($this->semStack[$stackPos-(1-1)], '`'), $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes));
             },
             472 => function ($stackPos) {
-                 $this->semValue = $this->semStack[$stackPos-(4-3)];
+                 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)];
             },
             473 => function ($stackPos) {
-                 $this->semValue = new Expr\Variable($this->semStack[$stackPos-(2-2)], $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes);
+                 $this->semValue = array();
             },
             474 => function ($stackPos) {
-                 $this->semValue = new Expr\Error($this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes); $this->errorState = 2;
+                 $this->semValue = $this->semStack[$stackPos-(1-1)];
             },
             475 => 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\ConstFetch($this->semStack[$stackPos-(1-1)], $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes);
             },
             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);
+                 $this->semValue = new Scalar\MagicConst\Line($this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes);
             },
             477 => function ($stackPos) {
-                 $this->semValue = new Expr\Variable($this->semStack[$stackPos-(1-1)], $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes);
+                 $this->semValue = new Scalar\MagicConst\File($this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes);
             },
             478 => 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\MagicConst\Dir($this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes);
             },
             479 => 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\MagicConst\Class_($this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes);
             },
             480 => 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 Scalar\MagicConst\Trait_($this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes);
             },
             481 => 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 Scalar\MagicConst\Method($this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes);
             },
             482 => 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 Scalar\MagicConst\Function_($this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes);
             },
             483 => function ($stackPos) {
-                 $this->semValue = $this->semStack[$stackPos-(1-1)];
+                 $this->semValue = new Scalar\MagicConst\Namespace_($this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes);
             },
             484 => function ($stackPos) {
-                 $this->semValue = $this->semStack[$stackPos-(3-2)];
+                 $this->semValue = new Expr\ClassConstFetch($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
             },
             485 => function ($stackPos) {
-                 $this->semValue = new Expr\Variable($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;
             },
             486 => function ($stackPos) {
-                 $this->semValue = $this->semStack[$stackPos-(1-1)];
+                 $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);
             },
             487 => function ($stackPos) {
-                 $this->semValue = $this->semStack[$stackPos-(3-2)];
+                 $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);
             },
             488 => 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)];
             },
             489 => function ($stackPos) {
-                 $this->semValue = new Expr\Error($this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes); $this->errorState = 2;
+                 $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);
             },
             490 => function ($stackPos) {
-                 $this->semValue = new Expr\List_($this->semStack[$stackPos-(4-3)], $this->startAttributeStack[$stackPos-(4-1)] + $this->endAttributes);
+                 $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);
             },
             491 => function ($stackPos) {
-                 $this->semStack[$stackPos-(3-1)][] = $this->semStack[$stackPos-(3-3)]; $this->semValue = $this->semStack[$stackPos-(3-1)];
+                 $this->semValue = $this->parseLNumber($this->semStack[$stackPos-(1-1)], $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes);
             },
             492 => function ($stackPos) {
-                 $this->semValue = array($this->semStack[$stackPos-(1-1)]);
+                 $this->semValue = new Scalar\DNumber(Scalar\DNumber::parse($this->semStack[$stackPos-(1-1)]), $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes);
             },
             493 => 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-(1-1)];
             },
             494 => function ($stackPos) {
-                 $this->semValue = new Expr\ArrayItem($this->semStack[$stackPos-(2-2)], null, true, $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes);
+                 $this->semValue = $this->semStack[$stackPos-(1-1)];
             },
             495 => 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-(1-1)];
             },
             496 => 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->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);
             },
             497 => 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 = $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);
             },
             498 => 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->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);
             },
             499 => function ($stackPos) {
                  $this->semValue = null;
             },
             500 => 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 = $this->semStack[$stackPos-(1-1)];
             },
             501 => function ($stackPos) {
-                $this->semValue = $this->semStack[$stackPos];
+                 $this->semValue = $this->semStack[$stackPos-(1-1)];
             },
             502 => function ($stackPos) {
-                 /* do nothing -- prevent default action of $$=$this->semStack[$1]. See $551. */
+                 $this->semValue = $this->semStack[$stackPos-(3-2)];
             },
             503 => 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)];
             },
             504 => function ($stackPos) {
-                 $this->semValue = array($this->semStack[$stackPos-(1-1)]);
+                 $this->semValue = $this->semStack[$stackPos-(1-1)];
             },
             505 => 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)];
             },
             506 => 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-(1-1)];
             },
             507 => 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 = $this->semStack[$stackPos-(1-1)];
             },
             508 => function ($stackPos) {
-                 $this->semValue = new Expr\ArrayItem($this->semStack[$stackPos-(2-2)], null, true, $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes);
+                 $this->semValue = $this->semStack[$stackPos-(3-2)];
             },
             509 => function ($stackPos) {
-                 $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);
+                 $this->semValue = $this->semStack[$stackPos-(1-1)];
             },
             510 => function ($stackPos) {
-                 $this->semValue = null;
+                 $this->semValue = new Expr\Variable($this->semStack[$stackPos-(1-1)], $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes);
             },
             511 => function ($stackPos) {
-                 $this->semStack[$stackPos-(2-1)][] = $this->semStack[$stackPos-(2-2)]; $this->semValue = $this->semStack[$stackPos-(2-1)];
+                 $this->semValue = new Expr\ArrayDimFetch($this->semStack[$stackPos-(4-1)], $this->semStack[$stackPos-(4-3)], $this->startAttributeStack[$stackPos-(4-1)] + $this->endAttributes);
             },
             512 => function ($stackPos) {
-                 $this->semStack[$stackPos-(2-1)][] = $this->semStack[$stackPos-(2-2)]; $this->semValue = $this->semStack[$stackPos-(2-1)];
+                 $this->semValue = new Expr\ArrayDimFetch($this->semStack[$stackPos-(4-1)], $this->semStack[$stackPos-(4-3)], $this->startAttributeStack[$stackPos-(4-1)] + $this->endAttributes);
             },
             513 => function ($stackPos) {
-                 $this->semValue = array($this->semStack[$stackPos-(1-1)]);
+                 $this->semValue = $this->semStack[$stackPos-(1-1)];
             },
             514 => function ($stackPos) {
-                 $this->semValue = array($this->semStack[$stackPos-(2-1)], $this->semStack[$stackPos-(2-2)]);
+                 $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);
             },
             515 => function ($stackPos) {
-                 $this->semValue = new Scalar\EncapsedStringPart($this->semStack[$stackPos-(1-1)], $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes);
+                 $this->semValue = new Expr\NullsafeMethodCall($this->semStack[$stackPos-(4-1)], $this->semStack[$stackPos-(4-3)], $this->semStack[$stackPos-(4-4)], $this->startAttributeStack[$stackPos-(4-1)] + $this->endAttributes);
             },
             516 => function ($stackPos) {
-                 $this->semValue = new Expr\Variable($this->semStack[$stackPos-(1-1)], $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes);
+                 $this->semValue = null;
             },
             517 => function ($stackPos) {
                  $this->semValue = $this->semStack[$stackPos-(1-1)];
             },
             518 => 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)];
             },
             519 => 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)];
             },
             520 => function ($stackPos) {
-                 $this->semValue = new Expr\Variable($this->semStack[$stackPos-(3-2)], $this->startAttributeStack[$stackPos-(3-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);
             },
             521 => function ($stackPos) {
-                 $this->semValue = new Expr\Variable($this->semStack[$stackPos-(3-2)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
+                 $this->semValue = new Expr\NullsafePropertyFetch($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $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);
+                 $this->semValue = substr($this->semStack[$stackPos-(1-1)], 1);
             },
             523 => function ($stackPos) {
-                 $this->semValue = $this->semStack[$stackPos-(3-2)];
+                 $this->semValue = $this->semStack[$stackPos-(4-3)];
             },
             524 => 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-(2-2)], $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes);
             },
             525 => function ($stackPos) {
-                 $this->semValue = $this->parseNumString($this->semStack[$stackPos-(1-1)], $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes);
+                 $this->semValue = new Expr\Error($this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes); $this->errorState = 2;
             },
             526 => function ($stackPos) {
-                 $this->semValue = $this->parseNumString('-' . $this->semStack[$stackPos-(2-2)], $this->startAttributeStack[$stackPos-(2-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;
             },
             527 => function ($stackPos) {
+                 $this->semValue = new Expr\StaticPropertyFetch($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
+            },
+            528 => function ($stackPos) {
+                 $this->semValue = new Expr\Variable($this->semStack[$stackPos-(1-1)], $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes);
+            },
+            529 => function ($stackPos) {
+                 $this->semValue = new Expr\ArrayDimFetch($this->semStack[$stackPos-(4-1)], $this->semStack[$stackPos-(4-3)], $this->startAttributeStack[$stackPos-(4-1)] + $this->endAttributes);
+            },
+            530 => function ($stackPos) {
+                 $this->semValue = new Expr\ArrayDimFetch($this->semStack[$stackPos-(4-1)], $this->semStack[$stackPos-(4-3)], $this->startAttributeStack[$stackPos-(4-1)] + $this->endAttributes);
+            },
+            531 => function ($stackPos) {
+                 $this->semValue = new Expr\PropertyFetch($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
+            },
+            532 => function ($stackPos) {
+                 $this->semValue = new Expr\NullsafePropertyFetch($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
+            },
+            533 => function ($stackPos) {
+                 $this->semValue = new Expr\StaticPropertyFetch($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
+            },
+            534 => function ($stackPos) {
+                 $this->semValue = new Expr\StaticPropertyFetch($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
+            },
+            535 => function ($stackPos) {
+                 $this->semValue = $this->semStack[$stackPos-(1-1)];
+            },
+            536 => function ($stackPos) {
+                 $this->semValue = $this->semStack[$stackPos-(3-2)];
+            },
+            537 => function ($stackPos) {
+                 $this->semValue = new Expr\Variable($this->semStack[$stackPos-(1-1)], $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes);
+            },
+            538 => function ($stackPos) {
+                 $this->semValue = $this->semStack[$stackPos-(1-1)];
+            },
+            539 => function ($stackPos) {
+                 $this->semValue = $this->semStack[$stackPos-(3-2)];
+            },
+            540 => function ($stackPos) {
+                 $this->semValue = new Expr\Variable($this->semStack[$stackPos-(1-1)], $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes);
+            },
+            541 => function ($stackPos) {
+                 $this->semValue = new Expr\Error($this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes); $this->errorState = 2;
+            },
+            542 => function ($stackPos) {
+                 $this->semValue = new Expr\List_($this->semStack[$stackPos-(4-3)], $this->startAttributeStack[$stackPos-(4-1)] + $this->endAttributes);
+            },
+            543 => function ($stackPos) {
+                 $this->semValue = $this->semStack[$stackPos-(1-1)]; $end = count($this->semValue)-1; if ($this->semValue[$end] === null) array_pop($this->semValue);
+            },
+            544 => function ($stackPos) {
+                $this->semValue = $this->semStack[$stackPos];
+            },
+            545 => function ($stackPos) {
+                 /* do nothing -- prevent default action of $$=$this->semStack[$1]. See $551. */
+            },
+            546 => function ($stackPos) {
+                 $this->semStack[$stackPos-(3-1)][] = $this->semStack[$stackPos-(3-3)]; $this->semValue = $this->semStack[$stackPos-(3-1)];
+            },
+            547 => function ($stackPos) {
+                 $this->semValue = array($this->semStack[$stackPos-(1-1)]);
+            },
+            548 => function ($stackPos) {
+                 $this->semValue = new Expr\ArrayItem($this->semStack[$stackPos-(1-1)], null, false, $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes);
+            },
+            549 => function ($stackPos) {
+                 $this->semValue = new Expr\ArrayItem($this->semStack[$stackPos-(2-2)], null, true, $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes);
+            },
+            550 => function ($stackPos) {
+                 $this->semValue = new Expr\ArrayItem($this->semStack[$stackPos-(1-1)], null, false, $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes);
+            },
+            551 => 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);
+            },
+            552 => 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);
+            },
+            553 => 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);
+            },
+            554 => function ($stackPos) {
+                 $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);
+            },
+            555 => function ($stackPos) {
+                 $this->semValue = null;
+            },
+            556 => function ($stackPos) {
+                 $this->semStack[$stackPos-(2-1)][] = $this->semStack[$stackPos-(2-2)]; $this->semValue = $this->semStack[$stackPos-(2-1)];
+            },
+            557 => function ($stackPos) {
+                 $this->semStack[$stackPos-(2-1)][] = $this->semStack[$stackPos-(2-2)]; $this->semValue = $this->semStack[$stackPos-(2-1)];
+            },
+            558 => function ($stackPos) {
+                 $this->semValue = array($this->semStack[$stackPos-(1-1)]);
+            },
+            559 => function ($stackPos) {
+                 $this->semValue = array($this->semStack[$stackPos-(2-1)], $this->semStack[$stackPos-(2-2)]);
+            },
+            560 => function ($stackPos) {
+                 $this->semValue = new Scalar\EncapsedStringPart($this->semStack[$stackPos-(1-1)], $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes);
+            },
+            561 => function ($stackPos) {
+                 $this->semValue = new Expr\Variable($this->semStack[$stackPos-(1-1)], $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes);
+            },
+            562 => function ($stackPos) {
+                 $this->semValue = $this->semStack[$stackPos-(1-1)];
+            },
+            563 => function ($stackPos) {
+                 $this->semValue = new Expr\ArrayDimFetch($this->semStack[$stackPos-(4-1)], $this->semStack[$stackPos-(4-3)], $this->startAttributeStack[$stackPos-(4-1)] + $this->endAttributes);
+            },
+            564 => function ($stackPos) {
+                 $this->semValue = new Expr\PropertyFetch($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
+            },
+            565 => function ($stackPos) {
+                 $this->semValue = new Expr\NullsafePropertyFetch($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
+            },
+            566 => function ($stackPos) {
+                 $this->semValue = new Expr\Variable($this->semStack[$stackPos-(3-2)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
+            },
+            567 => function ($stackPos) {
+                 $this->semValue = new Expr\Variable($this->semStack[$stackPos-(3-2)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
+            },
+            568 => function ($stackPos) {
+                 $this->semValue = new Expr\ArrayDimFetch($this->semStack[$stackPos-(6-2)], $this->semStack[$stackPos-(6-4)], $this->startAttributeStack[$stackPos-(6-1)] + $this->endAttributes);
+            },
+            569 => function ($stackPos) {
+                 $this->semValue = $this->semStack[$stackPos-(3-2)];
+            },
+            570 => function ($stackPos) {
+                 $this->semValue = new Scalar\String_($this->semStack[$stackPos-(1-1)], $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes);
+            },
+            571 => function ($stackPos) {
+                 $this->semValue = $this->parseNumString($this->semStack[$stackPos-(1-1)], $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes);
+            },
+            572 => function ($stackPos) {
+                 $this->semValue = $this->parseNumString('-' . $this->semStack[$stackPos-(2-2)], $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes);
+            },
+            573 => 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 50c5bf5747..ed2062b46d 100644
--- a/vendor/nikic/php-parser/lib/PhpParser/Parser/Tokens.php
+++ b/vendor/nikic/php-parser/lib/PhpParser/Parser/Tokens.php
@@ -6,84 +6,84 @@
 final class Tokens
 {
     const YYERRTOK = 256;
-    const T_INCLUDE = 257;
-    const T_INCLUDE_ONCE = 258;
-    const T_EVAL = 259;
-    const T_REQUIRE = 260;
-    const T_REQUIRE_ONCE = 261;
-    const T_LOGICAL_OR = 262;
-    const T_LOGICAL_XOR = 263;
-    const T_LOGICAL_AND = 264;
-    const T_PRINT = 265;
-    const T_YIELD = 266;
-    const T_DOUBLE_ARROW = 267;
-    const T_YIELD_FROM = 268;
-    const T_PLUS_EQUAL = 269;
-    const T_MINUS_EQUAL = 270;
-    const T_MUL_EQUAL = 271;
-    const T_DIV_EQUAL = 272;
-    const T_CONCAT_EQUAL = 273;
-    const T_MOD_EQUAL = 274;
-    const T_AND_EQUAL = 275;
-    const T_OR_EQUAL = 276;
-    const T_XOR_EQUAL = 277;
-    const T_SL_EQUAL = 278;
-    const T_SR_EQUAL = 279;
-    const T_POW_EQUAL = 280;
-    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_THROW = 257;
+    const T_INCLUDE = 258;
+    const T_INCLUDE_ONCE = 259;
+    const T_EVAL = 260;
+    const T_REQUIRE = 261;
+    const T_REQUIRE_ONCE = 262;
+    const T_LOGICAL_OR = 263;
+    const T_LOGICAL_XOR = 264;
+    const T_LOGICAL_AND = 265;
+    const T_PRINT = 266;
+    const T_YIELD = 267;
+    const T_DOUBLE_ARROW = 268;
+    const T_YIELD_FROM = 269;
+    const T_PLUS_EQUAL = 270;
+    const T_MINUS_EQUAL = 271;
+    const T_MUL_EQUAL = 272;
+    const T_DIV_EQUAL = 273;
+    const T_CONCAT_EQUAL = 274;
+    const T_MOD_EQUAL = 275;
+    const T_AND_EQUAL = 276;
+    const T_OR_EQUAL = 277;
+    const T_XOR_EQUAL = 278;
+    const T_SL_EQUAL = 279;
+    const T_SR_EQUAL = 280;
+    const T_POW_EQUAL = 281;
+    const T_COALESCE_EQUAL = 282;
+    const T_COALESCE = 283;
+    const T_BOOLEAN_OR = 284;
+    const T_BOOLEAN_AND = 285;
+    const T_IS_EQUAL = 286;
+    const T_IS_NOT_EQUAL = 287;
+    const T_IS_IDENTICAL = 288;
+    const T_IS_NOT_IDENTICAL = 289;
+    const T_SPACESHIP = 290;
+    const T_IS_SMALLER_OR_EQUAL = 291;
+    const T_IS_GREATER_OR_EQUAL = 292;
+    const T_SL = 293;
+    const T_SR = 294;
+    const T_INSTANCEOF = 295;
+    const T_INC = 296;
+    const T_DEC = 297;
+    const T_INT_CAST = 298;
+    const T_DOUBLE_CAST = 299;
+    const T_STRING_CAST = 300;
+    const T_ARRAY_CAST = 301;
+    const T_OBJECT_CAST = 302;
+    const T_BOOL_CAST = 303;
+    const T_UNSET_CAST = 304;
+    const T_POW = 305;
+    const T_NEW = 306;
+    const T_CLONE = 307;
+    const T_EXIT = 308;
+    const T_IF = 309;
+    const T_ELSEIF = 310;
+    const T_ELSE = 311;
+    const T_ENDIF = 312;
+    const T_LNUMBER = 313;
+    const T_DNUMBER = 314;
+    const T_STRING = 315;
+    const T_STRING_VARNAME = 316;
+    const T_VARIABLE = 317;
+    const T_NUM_STRING = 318;
+    const T_INLINE_HTML = 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_MATCH = 334;
     const T_ENDSWITCH = 335;
     const T_CASE = 336;
     const T_DEFAULT = 337;
@@ -97,27 +97,27 @@ final class Tokens
     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_USE = 348;
+    const T_INSTEADOF = 349;
+    const T_GLOBAL = 350;
+    const T_STATIC = 351;
+    const T_ABSTRACT = 352;
+    const T_FINAL = 353;
+    const T_PRIVATE = 354;
+    const T_PROTECTED = 355;
+    const T_PUBLIC = 356;
+    const T_VAR = 357;
+    const T_UNSET = 358;
+    const T_ISSET = 359;
+    const T_EMPTY = 360;
+    const T_HALT_COMPILER = 361;
+    const T_CLASS = 362;
+    const T_TRAIT = 363;
+    const T_INTERFACE = 364;
+    const T_EXTENDS = 365;
+    const T_IMPLEMENTS = 366;
+    const T_OBJECT_OPERATOR = 367;
+    const T_NULLSAFE_OBJECT_OPERATOR = 368;
     const T_LIST = 369;
     const T_ARRAY = 370;
     const T_CALLABLE = 371;
@@ -127,20 +127,18 @@ final class Tokens
     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;
+    const T_START_HEREDOC = 378;
+    const T_END_HEREDOC = 379;
+    const T_DOLLAR_OPEN_CURLY_BRACES = 380;
+    const T_CURLY_OPEN = 381;
+    const T_PAAMAYIM_NEKUDOTAYIM = 382;
+    const T_NAMESPACE = 383;
+    const T_NS_C = 384;
+    const T_DIR = 385;
+    const T_NS_SEPARATOR = 386;
+    const T_ELLIPSIS = 387;
+    const T_NAME_FULLY_QUALIFIED = 388;
+    const T_NAME_QUALIFIED = 389;
+    const T_NAME_RELATIVE = 390;
+    const T_ATTRIBUTE = 391;
 }
diff --git a/vendor/nikic/php-parser/lib/PhpParser/ParserAbstract.php b/vendor/nikic/php-parser/lib/PhpParser/ParserAbstract.php
index 975e17c6bb..11c8568db9 100644
--- a/vendor/nikic/php-parser/lib/PhpParser/ParserAbstract.php
+++ b/vendor/nikic/php-parser/lib/PhpParser/ParserAbstract.php
@@ -648,7 +648,7 @@ protected function fixupStartAttributes(Node $to, Node $from) {
     }
 
     protected function handleBuiltinTypes(Name $name) {
-        $scalarTypes = [
+        $builtinTypes = [
             'bool'     => true,
             'int'      => true,
             'float'    => true,
@@ -656,6 +656,9 @@ protected function handleBuiltinTypes(Name $name) {
             'iterable' => true,
             'void'     => true,
             'object'   => true,
+            'null'     => true,
+            'false'    => true,
+            'mixed'    => true,
         ];
 
         if (!$name->isUnqualified()) {
@@ -663,7 +666,7 @@ protected function handleBuiltinTypes(Name $name) {
         }
 
         $lowerName = $name->toLowerString();
-        if (!isset($scalarTypes[$lowerName])) {
+        if (!isset($builtinTypes[$lowerName])) {
             return $name;
         }
 
@@ -840,21 +843,29 @@ protected function parseDocString(
     }
 
     /**
-     * Create attributes for a zero-length node with the given start attributes.
+     * Create attributes for a zero-length common-capturing nop.
      *
-     * @param array $startAttributes
+     * @param Comment[] $comments
      * @return array
      */
-    protected function createZeroLengthAttributes(array $startAttributes) {
-        $attributes = $startAttributes;
-        if (isset($startAttributes['startLine'])) {
-            $attributes['endLine'] = $startAttributes['startLine'];
+    protected function createCommentNopAttributes(array $comments) {
+        $comment = $comments[count($comments) - 1];
+        $commentEndLine = $comment->getEndLine();
+        $commentEndFilePos = $comment->getEndFilePos();
+        $commentEndTokenPos = $comment->getEndTokenPos();
+
+        $attributes = ['comments' => $comments];
+        if (-1 !== $commentEndLine) {
+            $attributes['startLine'] = $commentEndLine;
+            $attributes['endLine'] = $commentEndLine;
         }
-        if (isset($startAttributes['startTokenPos'])) {
-            $attributes['endTokenPos'] = $startAttributes['startTokenPos'] - 1;
+        if (-1 !== $commentEndFilePos) {
+            $attributes['startFilePos'] = $commentEndFilePos + 1;
+            $attributes['endFilePos'] = $commentEndFilePos;
         }
-        if (isset($startAttributes['startFilePos'])) {
-            $attributes['endFilePos'] = $startAttributes['startFilePos'] - 1;
+        if (-1 !== $commentEndTokenPos) {
+            $attributes['startTokenPos'] = $commentEndTokenPos + 1;
+            $attributes['endTokenPos'] = $commentEndTokenPos;
         }
         return $attributes;
     }
@@ -887,13 +898,6 @@ protected function checkTryCatch(TryCatch $node) {
     }
 
     protected function checkNamespace(Namespace_ $node) {
-        if ($node->name && $node->name->isSpecialClassName()) {
-            $this->emitError(new Error(
-                sprintf('Cannot use \'%s\' as namespace name', $node->name),
-                $node->name->getAttributes()
-            ));
-        }
-
         if (null !== $node->stmts) {
             foreach ($node->stmts as $stmt) {
                 if ($stmt instanceof Namespace_) {
diff --git a/vendor/nikic/php-parser/lib/PhpParser/PrettyPrinter/Standard.php b/vendor/nikic/php-parser/lib/PhpParser/PrettyPrinter/Standard.php
index 78ee7d0032..c44bda9833 100644
--- a/vendor/nikic/php-parser/lib/PhpParser/PrettyPrinter/Standard.php
+++ b/vendor/nikic/php-parser/lib/PhpParser/PrettyPrinter/Standard.php
@@ -18,7 +18,9 @@ class Standard extends PrettyPrinterAbstract
     // Special nodes
 
     protected function pParam(Node\Param $node) {
-        return ($node->type ? $this->p($node->type) . ' ' : '')
+        return $this->pAttrGroups($node->attrGroups, true)
+             . $this->pModifiers($node->flags)
+             . ($node->type ? $this->p($node->type) . ' ' : '')
              . ($node->byRef ? '&' : '')
              . ($node->variadic ? '...' : '')
              . $this->p($node->var)
@@ -26,7 +28,9 @@ protected function pParam(Node\Param $node) {
     }
 
     protected function pArg(Node\Arg $node) {
-        return ($node->byRef ? '&' : '') . ($node->unpack ? '...' : '') . $this->p($node->value);
+        return ($node->name ? $node->name->toString() . ': ' : '')
+             . ($node->byRef ? '&' : '') . ($node->unpack ? '...' : '')
+             . $this->p($node->value);
     }
 
     protected function pConst(Node\Const_ $node) {
@@ -37,6 +41,10 @@ protected function pNullableType(Node\NullableType $node) {
         return '?' . $this->p($node->type);
     }
 
+    protected function pUnionType(Node\UnionType $node) {
+        return $this->pImplode($node->types, '|');
+    }
+
     protected function pIdentifier(Node\Identifier $node) {
         return $node->name;
     }
@@ -45,6 +53,15 @@ protected function pVarLikeIdentifier(Node\VarLikeIdentifier $node) {
         return '$' . $node->name;
     }
 
+    protected function pAttribute(Node\Attribute $node) {
+        return $this->p($node->name)
+             . ($node->args ? '(' . $this->pCommaSeparated($node->args) . ')' : '');
+    }
+
+    protected function pAttributeGroup(Node\AttributeGroup $node) {
+        return '#[' . $this->pCommaSeparated($node->attrs) . ']';
+    }
+
     // Names
 
     protected function pName(Name $node) {
@@ -159,8 +176,13 @@ protected function pScalar_LNumber(Scalar\LNumber $node) {
             return (string) $node->value;
         }
 
-        $sign = $node->value < 0 ? '-' : '';
-        $str = (string) $node->value;
+        if ($node->value < 0) {
+            $sign = '-';
+            $str = (string) -$node->value;
+        } else {
+            $sign = '';
+            $str = (string) $node->value;
+        }
         switch ($kind) {
             case Scalar\LNumber::KIND_BIN:
                 return $sign . '0b' . base_convert($str, 10, 2);
@@ -375,7 +397,10 @@ protected function pExpr_BinaryOp_Coalesce(BinaryOp\Coalesce $node) {
     }
 
     protected function pExpr_Instanceof(Expr\Instanceof_ $node) {
-        return $this->pInfixOp(Expr\Instanceof_::class, $node->expr, ' instanceof ', $node->class);
+        list($precedence, $associativity) = $this->precedenceMap[Expr\Instanceof_::class];
+        return $this->pPrec($node->expr, $precedence, $associativity, -1)
+             . ' instanceof '
+             . $this->pNewVariable($node->class);
     }
 
     // Unary expressions
@@ -482,6 +507,11 @@ protected function pExpr_MethodCall(Expr\MethodCall $node) {
              . '(' . $this->pMaybeMultiline($node->args) . ')';
     }
 
+    protected function pExpr_NullsafeMethodCall(Expr\NullsafeMethodCall $node) {
+        return $this->pDereferenceLhs($node->var) . '?->' . $this->pObjectProperty($node->name)
+            . '(' . $this->pMaybeMultiline($node->args) . ')';
+    }
+
     protected function pExpr_StaticCall(Expr\StaticCall $node) {
         return $this->pDereferenceLhs($node->class) . '::'
              . ($node->name instanceof Expr
@@ -560,13 +590,17 @@ protected function pExpr_ConstFetch(Expr\ConstFetch $node) {
     }
 
     protected function pExpr_ClassConstFetch(Expr\ClassConstFetch $node) {
-        return $this->p($node->class) . '::' . $this->p($node->name);
+        return $this->pDereferenceLhs($node->class) . '::' . $this->p($node->name);
     }
 
     protected function pExpr_PropertyFetch(Expr\PropertyFetch $node) {
         return $this->pDereferenceLhs($node->var) . '->' . $this->pObjectProperty($node->name);
     }
 
+    protected function pExpr_NullsafePropertyFetch(Expr\NullsafePropertyFetch $node) {
+        return $this->pDereferenceLhs($node->var) . '?->' . $this->pObjectProperty($node->name);
+    }
+
     protected function pExpr_StaticPropertyFetch(Expr\StaticPropertyFetch $node) {
         return $this->pDereferenceLhs($node->class) . '::$' . $this->pObjectProperty($node->name);
     }
@@ -576,7 +610,8 @@ protected function pExpr_ShellExec(Expr\ShellExec $node) {
     }
 
     protected function pExpr_Closure(Expr\Closure $node) {
-        return ($node->static ? 'static ' : '')
+        return $this->pAttrGroups($node->attrGroups, true)
+             . ($node->static ? 'static ' : '')
              . 'function ' . ($node->byRef ? '&' : '')
              . '(' . $this->pCommaSeparated($node->params) . ')'
              . (!empty($node->uses) ? ' use(' . $this->pCommaSeparated($node->uses) . ')' : '')
@@ -584,8 +619,21 @@ protected function pExpr_Closure(Expr\Closure $node) {
              . ' {' . $this->pStmts($node->stmts) . $this->nl . '}';
     }
 
+    protected function pExpr_Match(Expr\Match_ $node) {
+        return 'match (' . $this->p($node->cond) . ') {'
+            . $this->pCommaSeparatedMultiline($node->arms, true)
+            . $this->nl
+            . '}';
+    }
+
+    protected function pMatchArm(Node\MatchArm $node) {
+        return ($node->conds ? $this->pCommaSeparated($node->conds) : 'default')
+            . ' => ' . $this->p($node->body);
+    }
+
     protected function pExpr_ArrowFunction(Expr\ArrowFunction $node) {
-        return ($node->static ? 'static ' : '')
+        return $this->pAttrGroups($node->attrGroups, true)
+            . ($node->static ? 'static ' : '')
             . 'fn' . ($node->byRef ? '&' : '')
             . '(' . $this->pCommaSeparated($node->params) . ')'
             . (null !== $node->returnType ? ': ' . $this->p($node->returnType) : '')
@@ -602,7 +650,8 @@ protected function pExpr_New(Expr\New_ $node) {
             $args = $node->args ? '(' . $this->pMaybeMultiline($node->args) . ')' : '';
             return 'new ' . $this->pClassCommon($node->class, $args);
         }
-        return 'new ' . $this->p($node->class) . '(' . $this->pMaybeMultiline($node->args) . ')';
+        return 'new ' . $this->pNewVariable($node->class)
+            . '(' . $this->pMaybeMultiline($node->args) . ')';
     }
 
     protected function pExpr_Clone(Expr\Clone_ $node) {
@@ -623,6 +672,10 @@ protected function pExpr_Exit(Expr\Exit_ $node) {
              . (null !== $node->expr ? '(' . $this->p($node->expr) . ')' : '');
     }
 
+    protected function pExpr_Throw(Expr\Throw_ $node) {
+        return 'throw ' . $this->p($node->expr);
+    }
+
     protected function pExpr_Yield(Expr\Yield_ $node) {
         if ($node->value === null) {
             return 'yield';
@@ -668,7 +721,8 @@ protected function pUseType($type) {
     }
 
     protected function pStmt_Interface(Stmt\Interface_ $node) {
-        return 'interface ' . $node->name
+        return $this->pAttrGroups($node->attrGroups)
+             . 'interface ' . $node->name
              . (!empty($node->extends) ? ' extends ' . $this->pCommaSeparated($node->extends) : '')
              . $this->nl . '{' . $this->pStmts($node->stmts) . $this->nl . '}';
     }
@@ -678,7 +732,8 @@ protected function pStmt_Class(Stmt\Class_ $node) {
     }
 
     protected function pStmt_Trait(Stmt\Trait_ $node) {
-        return 'trait ' . $node->name
+        return $this->pAttrGroups($node->attrGroups)
+             . 'trait ' . $node->name
              . $this->nl . '{' . $this->pStmts($node->stmts) . $this->nl . '}';
     }
 
@@ -703,7 +758,8 @@ protected function pStmt_TraitUseAdaptation_Alias(Stmt\TraitUseAdaptation\Alias
     }
 
     protected function pStmt_Property(Stmt\Property $node) {
-        return (0 === $node->flags ? 'var ' : $this->pModifiers($node->flags))
+        return $this->pAttrGroups($node->attrGroups)
+            . (0 === $node->flags ? 'var ' : $this->pModifiers($node->flags))
             . ($node->type ? $this->p($node->type) . ' ' : '')
             . $this->pCommaSeparated($node->props) . ';';
     }
@@ -714,9 +770,10 @@ protected function pStmt_PropertyProperty(Stmt\PropertyProperty $node) {
     }
 
     protected function pStmt_ClassMethod(Stmt\ClassMethod $node) {
-        return $this->pModifiers($node->flags)
+        return $this->pAttrGroups($node->attrGroups)
+             . $this->pModifiers($node->flags)
              . 'function ' . ($node->byRef ? '&' : '') . $node->name
-             . '(' . $this->pCommaSeparated($node->params) . ')'
+             . '(' . $this->pMaybeMultiline($node->params) . ')'
              . (null !== $node->returnType ? ' : ' . $this->p($node->returnType) : '')
              . (null !== $node->stmts
                 ? $this->nl . '{' . $this->pStmts($node->stmts) . $this->nl . '}'
@@ -724,12 +781,14 @@ protected function pStmt_ClassMethod(Stmt\ClassMethod $node) {
     }
 
     protected function pStmt_ClassConst(Stmt\ClassConst $node) {
-        return $this->pModifiers($node->flags)
+        return $this->pAttrGroups($node->attrGroups)
+             . $this->pModifiers($node->flags)
              . 'const ' . $this->pCommaSeparated($node->consts) . ';';
     }
 
     protected function pStmt_Function(Stmt\Function_ $node) {
-        return 'function ' . ($node->byRef ? '&' : '') . $node->name
+        return $this->pAttrGroups($node->attrGroups)
+             . 'function ' . ($node->byRef ? '&' : '') . $node->name
              . '(' . $this->pCommaSeparated($node->params) . ')'
              . (null !== $node->returnType ? ' : ' . $this->p($node->returnType) : '')
              . $this->nl . '{' . $this->pStmts($node->stmts) . $this->nl . '}';
@@ -808,8 +867,8 @@ protected function pStmt_TryCatch(Stmt\TryCatch $node) {
     }
 
     protected function pStmt_Catch(Stmt\Catch_ $node) {
-        return 'catch (' . $this->pImplode($node->types, '|') . ' '
-             . $this->p($node->var)
+        return 'catch (' . $this->pImplode($node->types, '|')
+             . ($node->var !== null ? ' ' . $this->p($node->var) : '')
              . ') {' . $this->pStmts($node->stmts) . $this->nl . '}';
     }
 
@@ -884,11 +943,12 @@ protected function pStmt_Nop(Stmt\Nop $node) {
     // Helpers
 
     protected function pClassCommon(Stmt\Class_ $node, $afterClassToken) {
-        return $this->pModifiers($node->flags)
-        . 'class' . $afterClassToken
-        . (null !== $node->extends ? ' extends ' . $this->p($node->extends) : '')
-        . (!empty($node->implements) ? ' implements ' . $this->pCommaSeparated($node->implements) : '')
-        . $this->nl . '{' . $this->pStmts($node->stmts) . $this->nl . '}';
+        return $this->pAttrGroups($node->attrGroups, $node->name === null)
+            . $this->pModifiers($node->flags)
+            . 'class' . $afterClassToken
+            . (null !== $node->extends ? ' extends ' . $this->p($node->extends) : '')
+            . (!empty($node->implements) ? ' implements ' . $this->pCommaSeparated($node->implements) : '')
+            . $this->nl . '{' . $this->pStmts($node->stmts) . $this->nl . '}';
     }
 
     protected function pObjectProperty($node) {
@@ -971,6 +1031,11 @@ protected function pCallLhs(Node $node) {
         }
     }
 
+    protected function pNewVariable(Node $node) {
+        // TODO: This is not fully accurate.
+        return $this->pDereferenceLhs($node);
+    }
+
     /**
      * @param Node[] $nodes
      * @return bool
@@ -984,11 +1049,21 @@ private function hasNodeWithComments(array $nodes) {
         return false;
     }
 
-    private function pMaybeMultiline(array $nodes, $trailingComma = false) {
+    private function pMaybeMultiline(array $nodes, bool $trailingComma = false) {
         if (!$this->hasNodeWithComments($nodes)) {
             return $this->pCommaSeparated($nodes);
         } else {
             return $this->pCommaSeparatedMultiline($nodes, $trailingComma) . $this->nl;
         }
     }
+
+    private function pAttrGroups(array $nodes, bool $inline = false): string {
+        $result = '';
+        $sep = $inline ? ' ' : $this->nl;
+        foreach ($nodes as $node) {
+            $result .= $this->p($node) . $sep;
+        }
+
+        return $result;
+    }
 }
diff --git a/vendor/nikic/php-parser/lib/PhpParser/PrettyPrinterAbstract.php b/vendor/nikic/php-parser/lib/PhpParser/PrettyPrinterAbstract.php
index 90f10c4624..bc85f76b45 100644
--- a/vendor/nikic/php-parser/lib/PhpParser/PrettyPrinterAbstract.php
+++ b/vendor/nikic/php-parser/lib/PhpParser/PrettyPrinterAbstract.php
@@ -704,8 +704,10 @@ protected function pArray(
 
         $mapKey = $parentNodeType . '->' . $subNodeName;
         $insertStr = $this->listInsertionMap[$mapKey] ?? null;
+        $isStmtList = $subNodeName === 'stmts';
 
         $beforeFirstKeepOrReplace = true;
+        $skipRemovedNode = false;
         $delayedAdd = [];
         $lastElemIndentLevel = $this->indentLevel;
 
@@ -715,7 +717,7 @@ protected function pArray(
             $insertNewline = true;
         }
 
-        if ($subNodeName === 'stmts' && \count($origNodes) === 1 && \count($nodes) !== 1) {
+        if ($isStmtList && \count($origNodes) === 1 && \count($nodes) !== 1) {
             $startPos = $origNodes[0]->getStartTokenPos();
             $endPos = $origNodes[0]->getEndTokenPos();
             \assert($startPos >= 0 && $endPos >= 0);
@@ -754,14 +756,7 @@ protected function pArray(
 
                 $itemStartPos = $origArrItem->getStartTokenPos();
                 $itemEndPos = $origArrItem->getEndTokenPos();
-                \assert($itemStartPos >= 0 && $itemEndPos >= 0);
-
-                if ($itemEndPos < $itemStartPos) {
-                    // End can be before start for Nop nodes, because offsets refer to non-whitespace
-                    // locations, which for an "empty" node might result in an inverted order.
-                    assert($origArrItem instanceof Stmt\Nop);
-                    continue;
-                }
+                \assert($itemStartPos >= 0 && $itemEndPos >= 0 && $itemStartPos >= $pos);
 
                 $origIndentLevel = $this->indentLevel;
                 $lastElemIndentLevel = $this->origTokens->getIndentationBefore($itemStartPos) + $indentAdjustment;
@@ -769,19 +764,28 @@ protected function pArray(
 
                 $comments = $arrItem->getComments();
                 $origComments = $origArrItem->getComments();
-                $commentStartPos = $origComments ? $origComments[0]->getTokenPos() : $itemStartPos;
+                $commentStartPos = $origComments ? $origComments[0]->getStartTokenPos() : $itemStartPos;
                 \assert($commentStartPos >= 0);
 
-                $commentsChanged = $comments !== $origComments;
-                if ($commentsChanged) {
-                    // Remove old comments
-                    $itemStartPos = $commentStartPos;
+                if ($commentStartPos < $pos) {
+                    // Comments may be assigned to multiple nodes if they start at the same position.
+                    // Make sure we don't try to print them multiple times.
+                    $commentStartPos = $itemStartPos;
                 }
 
-                if (!empty($delayedAdd)) {
+                if ($skipRemovedNode) {
+                    if ($isStmtList && $this->origTokens->haveBracesInRange($pos, $itemStartPos)) {
+                        // We'd remove the brace of a code block.
+                        // TODO: Preserve formatting.
+                        $this->setIndentLevel($origIndentLevel);
+                        return null;
+                    }
+                } else {
                     $result .= $this->origTokens->getTokenCode(
                         $pos, $commentStartPos, $indentAdjustment);
+                }
 
+                if (!empty($delayedAdd)) {
                     /** @var Node $delayedAddNode */
                     foreach ($delayedAdd as $delayedAddNode) {
                         if ($insertNewline) {
@@ -800,19 +804,20 @@ protected function pArray(
                         }
                     }
 
-                    $result .= $this->origTokens->getTokenCode(
-                        $commentStartPos, $itemStartPos, $indentAdjustment);
-
                     $delayedAdd = [];
+                }
+
+                if ($comments !== $origComments) {
+                    if ($comments) {
+                        $result .= $this->pComments($comments) . $this->nl;
+                    }
                 } else {
                     $result .= $this->origTokens->getTokenCode(
-                        $pos, $itemStartPos, $indentAdjustment);
+                        $commentStartPos, $itemStartPos, $indentAdjustment);
                 }
 
-                if ($commentsChanged && $comments) {
-                    // Add new comments
-                    $result .= $this->pComments($comments) . $this->nl;
-                }
+                // If we had to remove anything, we have done so now.
+                $skipRemovedNode = false;
             } elseif ($diffType === DiffElem::TYPE_ADD) {
                 if (null === $insertStr) {
                     // We don't have insertion information for this list type
@@ -846,18 +851,34 @@ protected function pArray(
                     $result .= $insertStr;
                 }
             } elseif ($diffType === DiffElem::TYPE_REMOVE) {
-                if ($i === 0) {
-                    // TODO Handle removal at the start
-                    return null;
-                }
-
                 if (!$origArrItem instanceof Node) {
                     // We only support removal for nodes
                     return null;
                 }
 
+                $itemStartPos = $origArrItem->getStartTokenPos();
                 $itemEndPos = $origArrItem->getEndTokenPos();
-                \assert($itemEndPos >= 0);
+                \assert($itemStartPos >= 0 && $itemEndPos >= 0);
+
+                // Consider comments part of the node.
+                $origComments = $origArrItem->getComments();
+                if ($origComments) {
+                    $itemStartPos = $origComments[0]->getStartTokenPos();
+                }
+
+                if ($i === 0) {
+                    // If we're removing from the start, keep the tokens before the node and drop those after it,
+                    // instead of the other way around.
+                    $result .= $this->origTokens->getTokenCode(
+                        $pos, $itemStartPos, $indentAdjustment);
+                    $skipRemovedNode = true;
+                } else {
+                    if ($isStmtList && $this->origTokens->haveBracesInRange($pos, $itemStartPos)) {
+                        // We'd remove the brace of a code block.
+                        // TODO: Preserve formatting.
+                        return null;
+                    }
+                }
 
                 $pos = $itemEndPos + 1;
                 continue;
@@ -876,6 +897,11 @@ protected function pArray(
             $pos = $itemEndPos + 1;
         }
 
+        if ($skipRemovedNode) {
+            // TODO: Support removing single node.
+            return null;
+        }
+
         if (!empty($delayedAdd)) {
             if (!isset($this->emptyListInsertionMap[$mapKey])) {
                 return null;
@@ -1006,6 +1032,7 @@ protected function callLhsRequiresParens(Node $node) : bool {
             || $node instanceof Expr\ArrayDimFetch
             || $node instanceof Expr\FuncCall
             || $node instanceof Expr\MethodCall
+            || $node instanceof Expr\NullsafeMethodCall
             || $node instanceof Expr\StaticCall
             || $node instanceof Expr\Array_);
     }
@@ -1022,9 +1049,11 @@ protected function dereferenceLhsRequiresParens(Node $node) : bool {
             || $node instanceof Node\Name
             || $node instanceof Expr\ArrayDimFetch
             || $node instanceof Expr\PropertyFetch
+            || $node instanceof Expr\NullsafePropertyFetch
             || $node instanceof Expr\StaticPropertyFetch
             || $node instanceof Expr\FuncCall
             || $node instanceof Expr\MethodCall
+            || $node instanceof Expr\NullsafeMethodCall
             || $node instanceof Expr\StaticCall
             || $node instanceof Expr\Array_
             || $node instanceof Scalar\String_
@@ -1131,7 +1160,7 @@ protected function initializeFixupMap() {
             Expr\PostDec::class => ['var' => self::FIXUP_PREC_LEFT],
             Expr\Instanceof_::class => [
                 'expr' => self::FIXUP_PREC_LEFT,
-                'class' => self::FIXUP_PREC_RIGHT,
+                'class' => self::FIXUP_PREC_RIGHT, // TODO: FIXUP_NEW_VARIABLE
             ],
             Expr\Ternary::class => [
                 'cond' => self::FIXUP_PREC_LEFT,
@@ -1141,10 +1170,16 @@ protected function initializeFixupMap() {
             Expr\FuncCall::class => ['name' => self::FIXUP_CALL_LHS],
             Expr\StaticCall::class => ['class' => self::FIXUP_DEREF_LHS],
             Expr\ArrayDimFetch::class => ['var' => self::FIXUP_DEREF_LHS],
+            Expr\ClassConstFetch::class => ['var' => self::FIXUP_DEREF_LHS],
+            Expr\New_::class => ['class' => self::FIXUP_DEREF_LHS], // TODO: FIXUP_NEW_VARIABLE
             Expr\MethodCall::class => [
                 'var' => self::FIXUP_DEREF_LHS,
                 'name' => self::FIXUP_BRACED_NAME,
             ],
+            Expr\NullsafeMethodCall::class => [
+                'var' => self::FIXUP_DEREF_LHS,
+                'name' => self::FIXUP_BRACED_NAME,
+            ],
             Expr\StaticPropertyFetch::class => [
                 'class' => self::FIXUP_DEREF_LHS,
                 'name' => self::FIXUP_VAR_BRACED_NAME,
@@ -1153,6 +1188,10 @@ protected function initializeFixupMap() {
                 'var' => self::FIXUP_DEREF_LHS,
                 'name' => self::FIXUP_BRACED_NAME,
             ],
+            Expr\NullsafePropertyFetch::class => [
+                'var' => self::FIXUP_DEREF_LHS,
+                'name' => self::FIXUP_BRACED_NAME,
+            ],
             Scalar\Encapsed::class => [
                 'parts' => self::FIXUP_ENCAPSED,
             ],
@@ -1227,6 +1266,7 @@ protected function initializeRemovalMap() {
             'Param->type' => $stripRight,
             'Param->default' => $stripEquals,
             'Stmt_Break->num' => $stripBoth,
+            'Stmt_Catch->var' => $stripLeft,
             'Stmt_ClassMethod->returnType' => $stripColon,
             'Stmt_Class->extends' => ['left' => \T_EXTENDS],
             'Expr_PrintableNewAnonClass->extends' => ['left' => \T_EXTENDS],
@@ -1264,6 +1304,7 @@ protected function initializeInsertionMap() {
             'Param->type' => [null, false, null, ' '],
             'Param->default' => [null, false, ' = ', null],
             'Stmt_Break->num' => [\T_BREAK, false, ' ', null],
+            'Stmt_Catch->var' => [null, false, ' ', null],
             'Stmt_ClassMethod->returnType' => [')', false, ' : ', null],
             'Stmt_Class->extends' => [null, false, ' extends ', null],
             'Expr_PrintableNewAnonClass->extends' => [null, ' extends ', null],
@@ -1295,6 +1336,7 @@ protected function initializeListInsertionMap() {
             //'Expr_ShellExec->parts' => '', // TODO These need to be treated more carefully
             //'Scalar_Encapsed->parts' => '',
             'Stmt_Catch->types' => '|',
+            'UnionType->types' => '|',
             'Stmt_If->elseifs' => ' ',
             'Stmt_TryCatch->catches' => ' ',
 
@@ -1307,6 +1349,7 @@ protected function initializeListInsertionMap() {
             'Expr_Isset->vars' => ', ',
             'Expr_List->items' => ', ',
             'Expr_MethodCall->args' => ', ',
+            'Expr_NullsafeMethodCall->args' => ', ',
             'Expr_New->args' => ', ',
             'Expr_PrintableNewAnonClass->args' => ', ',
             'Expr_StaticCall->args' => ', ',
@@ -1324,12 +1367,15 @@ protected function initializeListInsertionMap() {
             'Stmt_Global->vars' => ', ',
             'Stmt_GroupUse->uses' => ', ',
             'Stmt_Interface->extends' => ', ',
+            'Stmt_Match->arms' => ', ',
             'Stmt_Property->props' => ', ',
             'Stmt_StaticVar->vars' => ', ',
             'Stmt_TraitUse->traits' => ', ',
             'Stmt_TraitUseAdaptation_Precedence->insteadof' => ', ',
             'Stmt_Unset->vars' => ', ',
             'Stmt_Use->uses' => ', ',
+            'MatchArm->conds' => ', ',
+            'AttributeGroup->attrs' => ', ',
 
             // statement lists
             'Expr_Closure->stmts' => "\n",
@@ -1350,6 +1396,17 @@ protected function initializeListInsertionMap() {
             'Stmt_Function->stmts' => "\n",
             'Stmt_If->stmts' => "\n",
             'Stmt_Namespace->stmts' => "\n",
+            'Stmt_Class->attrGroups' => "\n",
+            'Stmt_Interface->attrGroups' => "\n",
+            'Stmt_Trait->attrGroups' => "\n",
+            'Stmt_Function->attrGroups' => "\n",
+            'Stmt_ClassMethod->attrGroups' => "\n",
+            'Stmt_ClassConst->attrGroups' => "\n",
+            'Stmt_Property->attrGroups' => "\n",
+            'Expr_PrintableNewAnonClass->attrGroups' => ' ',
+            'Expr_Closure->attrGroups' => ' ',
+            'Expr_ArrowFunction->attrGroups' => ' ',
+            'Param->attrGroups' => ' ',
             'Stmt_Switch->cases' => "\n",
             'Stmt_TraitUse->adaptations' => "\n",
             'Stmt_TryCatch->stmts' => "\n",
@@ -1372,6 +1429,7 @@ protected function initializeEmptyListInsertionMap() {
             'Expr_Closure->params' => ['(', '', ''],
             'Expr_FuncCall->args' => ['(', '', ''],
             'Expr_MethodCall->args' => ['(', '', ''],
+            'Expr_NullsafeMethodCall->args' => ['(', '', ''],
             'Expr_New->args' => ['(', '', ''],
             'Expr_PrintableNewAnonClass->args' => ['(', '', ''],
             'Expr_PrintableNewAnonClass->implements' => [null, ' implements ', ''],
@@ -1396,6 +1454,7 @@ protected function initializeEmptyListInsertionMap() {
              * Stmt_TraitUseAdaptation_Precedence->insteadof
              * Stmt_Unset->vars
              * Stmt_Use->uses
+             * UnionType->types
              */
 
             /* TODO
@@ -1418,6 +1477,7 @@ protected function initializeModifierChangeMap() {
             'Stmt_ClassMethod->flags' => \T_FUNCTION,
             'Stmt_Class->flags' => \T_CLASS,
             'Stmt_Property->flags' => \T_VARIABLE,
+            'Param->flags' => \T_VARIABLE,
             //'Stmt_TraitUseAdaptation_Alias->newModifier' => 0, // TODO
         ];
 
diff --git a/vendor/nikic/php-parser/phpunit.xml.dist b/vendor/nikic/php-parser/phpunit.xml.dist
deleted file mode 100644
index 5271264cbf..0000000000
--- a/vendor/nikic/php-parser/phpunit.xml.dist
+++ /dev/null
@@ -1,20 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-
-<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">
-    <testsuites>
-        <testsuite name="PHPParser Test Suite">
-            <directory>./test/</directory>
-        </testsuite>
-    </testsuites>
-
-    <filter>
-        <whitelist>
-            <directory suffix=".php">./lib/PhpParser/</directory>
-        </whitelist>
-    </filter>
-</phpunit>
diff --git a/vendor/nikic/php-parser/test/PhpParser/Builder/ClassTest.php b/vendor/nikic/php-parser/test/PhpParser/Builder/ClassTest.php
deleted file mode 100644
index 2cfa787231..0000000000
--- a/vendor/nikic/php-parser/test/PhpParser/Builder/ClassTest.php
+++ /dev/null
@@ -1,153 +0,0 @@
-<?php declare(strict_types=1);
-
-namespace PhpParser\Builder;
-
-use PhpParser\Comment;
-use PhpParser\Node;
-use PhpParser\Node\Name;
-use PhpParser\Node\Stmt;
-
-class ClassTest extends \PHPUnit\Framework\TestCase
-{
-    protected function createClassBuilder($class) {
-        return new Class_($class);
-    }
-
-    public function testExtendsImplements() {
-        $node = $this->createClassBuilder('SomeLogger')
-            ->extend('BaseLogger')
-            ->implement('Namespaced\Logger', new Name('SomeInterface'))
-            ->implement('\Fully\Qualified', 'namespace\NamespaceRelative')
-            ->getNode()
-        ;
-
-        $this->assertEquals(
-            new Stmt\Class_('SomeLogger', [
-                'extends' => new Name('BaseLogger'),
-                'implements' => [
-                    new Name('Namespaced\Logger'),
-                    new Name('SomeInterface'),
-                    new Name\FullyQualified('Fully\Qualified'),
-                    new Name\Relative('NamespaceRelative'),
-                ],
-            ]),
-            $node
-        );
-    }
-
-    public function testAbstract() {
-        $node = $this->createClassBuilder('Test')
-            ->makeAbstract()
-            ->getNode()
-        ;
-
-        $this->assertEquals(
-            new Stmt\Class_('Test', [
-                'flags' => Stmt\Class_::MODIFIER_ABSTRACT
-            ]),
-            $node
-        );
-    }
-
-    public function testFinal() {
-        $node = $this->createClassBuilder('Test')
-            ->makeFinal()
-            ->getNode()
-        ;
-
-        $this->assertEquals(
-            new Stmt\Class_('Test', [
-                'flags' => Stmt\Class_::MODIFIER_FINAL
-            ]),
-            $node
-        );
-    }
-
-    public function testStatementOrder() {
-        $method = new Stmt\ClassMethod('testMethod');
-        $property = new Stmt\Property(
-            Stmt\Class_::MODIFIER_PUBLIC,
-            [new Stmt\PropertyProperty('testProperty')]
-        );
-        $const = new Stmt\ClassConst([
-            new Node\Const_('TEST_CONST', new Node\Scalar\String_('ABC'))
-        ]);
-        $use = new Stmt\TraitUse([new Name('SomeTrait')]);
-
-        $node = $this->createClassBuilder('Test')
-            ->addStmt($method)
-            ->addStmt($property)
-            ->addStmts([$const, $use])
-            ->getNode()
-        ;
-
-        $this->assertEquals(
-            new Stmt\Class_('Test', [
-                'stmts' => [$use, $const, $property, $method]
-            ]),
-            $node
-        );
-    }
-
-    public function testDocComment() {
-        $docComment = <<<'DOC'
-/**
- * Test
- */
-DOC;
-        $class = $this->createClassBuilder('Test')
-            ->setDocComment($docComment)
-            ->getNode();
-
-        $this->assertEquals(
-            new Stmt\Class_('Test', [], [
-                'comments' => [
-                    new Comment\Doc($docComment)
-                ]
-            ]),
-            $class
-        );
-
-        $class = $this->createClassBuilder('Test')
-            ->setDocComment(new Comment\Doc($docComment))
-            ->getNode();
-
-        $this->assertEquals(
-            new Stmt\Class_('Test', [], [
-                'comments' => [
-                    new Comment\Doc($docComment)
-                ]
-            ]),
-            $class
-        );
-    }
-
-    public function testInvalidStmtError() {
-        $this->expectException(\LogicException::class);
-        $this->expectExceptionMessage('Unexpected node of type "Stmt_Echo"');
-        $this->createClassBuilder('Test')
-            ->addStmt(new Stmt\Echo_([]))
-        ;
-    }
-
-    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'));
-    }
-
-    public function testEmptyName() {
-        $this->expectException(\LogicException::class);
-        $this->expectExceptionMessage('Name cannot be empty');
-        $this->createClassBuilder('Test')
-            ->extend('');
-    }
-
-    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
deleted file mode 100644
index c17045b83f..0000000000
--- a/vendor/nikic/php-parser/test/PhpParser/Builder/FunctionTest.php
+++ /dev/null
@@ -1,114 +0,0 @@
-<?php declare(strict_types=1);
-
-namespace PhpParser\Builder;
-
-use PhpParser\Comment;
-use PhpParser\Node;
-use PhpParser\Node\Expr\Print_;
-use PhpParser\Node\Expr\Variable;
-use PhpParser\Node\Scalar\String_;
-use PhpParser\Node\Stmt;
-
-class FunctionTest extends \PHPUnit\Framework\TestCase
-{
-    public function createFunctionBuilder($name) {
-        return new Function_($name);
-    }
-
-    public function testReturnByRef() {
-        $node = $this->createFunctionBuilder('test')
-            ->makeReturnByRef()
-            ->getNode()
-        ;
-
-        $this->assertEquals(
-            new Stmt\Function_('test', [
-                'byRef' => true
-            ]),
-            $node
-        );
-    }
-
-    public function testParams() {
-        $param1 = new Node\Param(new Variable('test1'));
-        $param2 = new Node\Param(new Variable('test2'));
-        $param3 = new Node\Param(new Variable('test3'));
-
-        $node = $this->createFunctionBuilder('test')
-            ->addParam($param1)
-            ->addParams([$param2, $param3])
-            ->getNode()
-        ;
-
-        $this->assertEquals(
-            new Stmt\Function_('test', [
-                'params' => [$param1, $param2, $param3]
-            ]),
-            $node
-        );
-    }
-
-    public function testStmts() {
-        $stmt1 = new Print_(new String_('test1'));
-        $stmt2 = new Print_(new String_('test2'));
-        $stmt3 = new Print_(new String_('test3'));
-
-        $node = $this->createFunctionBuilder('test')
-            ->addStmt($stmt1)
-            ->addStmts([$stmt2, $stmt3])
-            ->getNode()
-        ;
-
-        $this->assertEquals(
-            new Stmt\Function_('test', [
-                'stmts' => [
-                    new Stmt\Expression($stmt1),
-                    new Stmt\Expression($stmt2),
-                    new Stmt\Expression($stmt3),
-                ]
-            ]),
-            $node
-        );
-    }
-
-    public function testDocComment() {
-        $node = $this->createFunctionBuilder('test')
-            ->setDocComment('/** Test */')
-            ->getNode();
-
-        $this->assertEquals(new Stmt\Function_('test', [], [
-            'comments' => [new Comment\Doc('/** Test */')]
-        ]), $node);
-    }
-
-    public function testReturnType() {
-        $node = $this->createFunctionBuilder('test')
-            ->setReturnType('void')
-            ->getNode();
-
-        $this->assertEquals(new Stmt\Function_('test', [
-            'returnType' => 'void'
-        ], []), $node);
-    }
-
-    public function testInvalidNullableVoidType() {
-        $this->expectException(\LogicException::class);
-        $this->expectExceptionMessage('void type cannot be nullable');
-        $this->createFunctionBuilder('test')->setReturnType('?void');
-    }
-
-    public function testInvalidParamError() {
-        $this->expectException(\LogicException::class);
-        $this->expectExceptionMessage('Expected parameter node, got "Name"');
-        $this->createFunctionBuilder('test')
-            ->addParam(new Node\Name('foo'))
-        ;
-    }
-
-    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
deleted file mode 100644
index 7f7f56a270..0000000000
--- a/vendor/nikic/php-parser/test/PhpParser/Builder/InterfaceTest.php
+++ /dev/null
@@ -1,102 +0,0 @@
-<?php declare(strict_types=1);
-
-namespace PhpParser\Builder;
-
-use PhpParser\Comment;
-use PhpParser\Node;
-use PhpParser\Node\Scalar\DNumber;
-use PhpParser\Node\Stmt;
-
-class InterfaceTest extends \PHPUnit\Framework\TestCase
-{
-    /** @var Interface_ */
-    protected $builder;
-
-    protected function setUp() {
-        $this->builder = new Interface_('Contract');
-    }
-
-    private function dump($node) {
-        $pp = new \PhpParser\PrettyPrinter\Standard;
-        return $pp->prettyPrint([$node]);
-    }
-
-    public function testEmpty() {
-        $contract = $this->builder->getNode();
-        $this->assertInstanceOf(Stmt\Interface_::class, $contract);
-        $this->assertEquals(new Node\Identifier('Contract'), $contract->name);
-    }
-
-    public function testExtending() {
-        $contract = $this->builder->extend('Space\Root1', 'Root2')->getNode();
-        $this->assertEquals(
-            new Stmt\Interface_('Contract', [
-                'extends' => [
-                    new Node\Name('Space\Root1'),
-                    new Node\Name('Root2')
-                ],
-            ]), $contract
-        );
-    }
-
-    public function testAddMethod() {
-        $method = new Stmt\ClassMethod('doSomething');
-        $contract = $this->builder->addStmt($method)->getNode();
-        $this->assertSame([$method], $contract->stmts);
-    }
-
-    public function testAddConst() {
-        $const = new Stmt\ClassConst([
-            new Node\Const_('SPEED_OF_LIGHT', new DNumber(299792458.0))
-        ]);
-        $contract = $this->builder->addStmt($const)->getNode();
-        $this->assertSame(299792458.0, $contract->stmts[0]->consts[0]->value->value);
-    }
-
-    public function testOrder() {
-        $const = new Stmt\ClassConst([
-            new Node\Const_('SPEED_OF_LIGHT', new DNumber(299792458))
-        ]);
-        $method = new Stmt\ClassMethod('doSomething');
-        $contract = $this->builder
-            ->addStmt($method)
-            ->addStmt($const)
-            ->getNode()
-        ;
-
-        $this->assertInstanceOf(Stmt\ClassConst::class, $contract->stmts[0]);
-        $this->assertInstanceOf(Stmt\ClassMethod::class, $contract->stmts[1]);
-    }
-
-    public function testDocComment() {
-        $node = $this->builder
-            ->setDocComment('/** Test */')
-            ->getNode();
-
-        $this->assertEquals(new Stmt\Interface_('Contract', [], [
-            'comments' => [new Comment\Doc('/** Test */')]
-        ]), $node);
-    }
-
-    public function testInvalidStmtError() {
-        $this->expectException(\LogicException::class);
-        $this->expectExceptionMessage('Unexpected node of type "Stmt_PropertyProperty"');
-        $this->builder->addStmt(new Stmt\PropertyProperty('invalid'));
-    }
-
-    public function testFullFunctional() {
-        $const = new Stmt\ClassConst([
-            new Node\Const_('SPEED_OF_LIGHT', new DNumber(299792458))
-        ]);
-        $method = new Stmt\ClassMethod('doSomething');
-        $contract = $this->builder
-            ->addStmt($method)
-            ->addStmt($const)
-            ->getNode()
-        ;
-
-        eval($this->dump($contract));
-
-        $this->assertTrue(interface_exists('Contract', false));
-    }
-}
diff --git a/vendor/nikic/php-parser/test/PhpParser/Builder/MethodTest.php b/vendor/nikic/php-parser/test/PhpParser/Builder/MethodTest.php
deleted file mode 100644
index 529f035497..0000000000
--- a/vendor/nikic/php-parser/test/PhpParser/Builder/MethodTest.php
+++ /dev/null
@@ -1,162 +0,0 @@
-<?php declare(strict_types=1);
-
-namespace PhpParser\Builder;
-
-use PhpParser\Comment;
-use PhpParser\Node;
-use PhpParser\Node\Expr\Print_;
-use PhpParser\Node\Expr\Variable;
-use PhpParser\Node\Scalar\String_;
-use PhpParser\Node\Stmt;
-
-class MethodTest extends \PHPUnit\Framework\TestCase
-{
-    public function createMethodBuilder($name) {
-        return new Method($name);
-    }
-
-    public function testModifiers() {
-        $node = $this->createMethodBuilder('test')
-            ->makePublic()
-            ->makeAbstract()
-            ->makeStatic()
-            ->getNode()
-        ;
-
-        $this->assertEquals(
-            new Stmt\ClassMethod('test', [
-                'flags' => Stmt\Class_::MODIFIER_PUBLIC
-                         | Stmt\Class_::MODIFIER_ABSTRACT
-                         | Stmt\Class_::MODIFIER_STATIC,
-                'stmts' => null,
-            ]),
-            $node
-        );
-
-        $node = $this->createMethodBuilder('test')
-            ->makeProtected()
-            ->makeFinal()
-            ->getNode()
-        ;
-
-        $this->assertEquals(
-            new Stmt\ClassMethod('test', [
-                'flags' => Stmt\Class_::MODIFIER_PROTECTED
-                         | Stmt\Class_::MODIFIER_FINAL
-            ]),
-            $node
-        );
-
-        $node = $this->createMethodBuilder('test')
-            ->makePrivate()
-            ->getNode()
-        ;
-
-        $this->assertEquals(
-            new Stmt\ClassMethod('test', [
-                'type' => Stmt\Class_::MODIFIER_PRIVATE
-            ]),
-            $node
-        );
-    }
-
-    public function testReturnByRef() {
-        $node = $this->createMethodBuilder('test')
-            ->makeReturnByRef()
-            ->getNode()
-        ;
-
-        $this->assertEquals(
-            new Stmt\ClassMethod('test', [
-                'byRef' => true
-            ]),
-            $node
-        );
-    }
-
-    public function testParams() {
-        $param1 = new Node\Param(new Variable('test1'));
-        $param2 = new Node\Param(new Variable('test2'));
-        $param3 = new Node\Param(new Variable('test3'));
-
-        $node = $this->createMethodBuilder('test')
-            ->addParam($param1)
-            ->addParams([$param2, $param3])
-            ->getNode()
-        ;
-
-        $this->assertEquals(
-            new Stmt\ClassMethod('test', [
-                'params' => [$param1, $param2, $param3]
-            ]),
-            $node
-        );
-    }
-
-    public function testStmts() {
-        $stmt1 = new Print_(new String_('test1'));
-        $stmt2 = new Print_(new String_('test2'));
-        $stmt3 = new Print_(new String_('test3'));
-
-        $node = $this->createMethodBuilder('test')
-            ->addStmt($stmt1)
-            ->addStmts([$stmt2, $stmt3])
-            ->getNode()
-        ;
-
-        $this->assertEquals(
-            new Stmt\ClassMethod('test', [
-                'stmts' => [
-                    new Stmt\Expression($stmt1),
-                    new Stmt\Expression($stmt2),
-                    new Stmt\Expression($stmt3),
-                ]
-            ]),
-            $node
-        );
-    }
-    public function testDocComment() {
-        $node = $this->createMethodBuilder('test')
-            ->setDocComment('/** Test */')
-            ->getNode();
-
-        $this->assertEquals(new Stmt\ClassMethod('test', [], [
-            'comments' => [new Comment\Doc('/** Test */')]
-        ]), $node);
-    }
-
-    public function testReturnType() {
-        $node = $this->createMethodBuilder('test')
-            ->setReturnType('bool')
-            ->getNode();
-        $this->assertEquals(new Stmt\ClassMethod('test', [
-            'returnType' => 'bool'
-        ], []), $node);
-    }
-
-    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')))
-        ;
-    }
-
-    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()
-        ;
-    }
-
-    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
deleted file mode 100644
index 689001bcbe..0000000000
--- a/vendor/nikic/php-parser/test/PhpParser/Builder/NamespaceTest.php
+++ /dev/null
@@ -1,46 +0,0 @@
-<?php declare(strict_types=1);
-
-namespace PhpParser\Builder;
-
-use PhpParser\Comment\Doc;
-use PhpParser\Node;
-use PhpParser\Node\Stmt;
-
-class NamespaceTest extends \PHPUnit\Framework\TestCase
-{
-    protected function createNamespaceBuilder($fqn) {
-        return new Namespace_($fqn);
-    }
-
-    public function testCreation() {
-        $stmt1 = new Stmt\Class_('SomeClass');
-        $stmt2 = new Stmt\Interface_('SomeInterface');
-        $stmt3 = new Stmt\Function_('someFunction');
-        $docComment = new Doc('/** Test */');
-        $expected = new Stmt\Namespace_(
-            new Node\Name('Name\Space'),
-            [$stmt1, $stmt2, $stmt3],
-            ['comments' => [$docComment]]
-        );
-
-        $node = $this->createNamespaceBuilder('Name\Space')
-            ->addStmt($stmt1)
-            ->addStmts([$stmt2, $stmt3])
-            ->setDocComment($docComment)
-            ->getNode()
-        ;
-        $this->assertEquals($expected, $node);
-
-        $node = $this->createNamespaceBuilder(new Node\Name(['Name', 'Space']))
-            ->setDocComment($docComment)
-            ->addStmts([$stmt1, $stmt2])
-            ->addStmt($stmt3)
-            ->getNode()
-        ;
-        $this->assertEquals($expected, $node);
-
-        $node = $this->createNamespaceBuilder(null)->getNode();
-        $this->assertNull($node->name);
-        $this->assertEmpty($node->stmts);
-    }
-}
diff --git a/vendor/nikic/php-parser/test/PhpParser/Builder/ParamTest.php b/vendor/nikic/php-parser/test/PhpParser/Builder/ParamTest.php
deleted file mode 100644
index c9cbfcac0f..0000000000
--- a/vendor/nikic/php-parser/test/PhpParser/Builder/ParamTest.php
+++ /dev/null
@@ -1,166 +0,0 @@
-<?php declare(strict_types=1);
-
-namespace PhpParser\Builder;
-
-use PhpParser\Node;
-use PhpParser\Node\Expr;
-use PhpParser\Node\Scalar;
-
-class ParamTest extends \PHPUnit\Framework\TestCase
-{
-    public function createParamBuilder($name) {
-        return new Param($name);
-    }
-
-    /**
-     * @dataProvider provideTestDefaultValues
-     */
-    public function testDefaultValues($value, $expectedValueNode) {
-        $node = $this->createParamBuilder('test')
-            ->setDefault($value)
-            ->getNode()
-        ;
-
-        $this->assertEquals($expectedValueNode, $node->default);
-    }
-
-    public function provideTestDefaultValues() {
-        return [
-            [
-                null,
-                new Expr\ConstFetch(new Node\Name('null'))
-            ],
-            [
-                true,
-                new Expr\ConstFetch(new Node\Name('true'))
-            ],
-            [
-                false,
-                new Expr\ConstFetch(new Node\Name('false'))
-            ],
-            [
-                31415,
-                new Scalar\LNumber(31415)
-            ],
-            [
-                3.1415,
-                new Scalar\DNumber(3.1415)
-            ],
-            [
-                'Hallo World',
-                new Scalar\String_('Hallo World')
-            ],
-            [
-                [1, 2, 3],
-                new Expr\Array_([
-                    new Expr\ArrayItem(new Scalar\LNumber(1)),
-                    new Expr\ArrayItem(new Scalar\LNumber(2)),
-                    new Expr\ArrayItem(new Scalar\LNumber(3)),
-                ])
-            ],
-            [
-                ['foo' => 'bar', 'bar' => 'foo'],
-                new Expr\Array_([
-                    new Expr\ArrayItem(
-                        new Scalar\String_('bar'),
-                        new Scalar\String_('foo')
-                    ),
-                    new Expr\ArrayItem(
-                        new Scalar\String_('foo'),
-                        new Scalar\String_('bar')
-                    ),
-                ])
-            ],
-            [
-                new Scalar\MagicConst\Dir,
-                new Scalar\MagicConst\Dir
-            ]
-        ];
-    }
-
-    /**
-     * @dataProvider provideTestTypes
-     */
-    public function testTypes($typeHint, $expectedType) {
-        $node = $this->createParamBuilder('test')
-            ->setTypeHint($typeHint)
-            ->getNode()
-        ;
-        $type = $node->type;
-
-        /* Manually implement comparison to avoid __toString stupidity */
-        if ($expectedType instanceof Node\NullableType) {
-            $this->assertInstanceOf(get_class($expectedType), $type);
-            $expectedType = $expectedType->type;
-            $type = $type->type;
-        }
-
-        $this->assertInstanceOf(get_class($expectedType), $type);
-        $this->assertEquals($expectedType, $type);
-    }
-
-    public function provideTestTypes() {
-        return [
-            ['array', new Node\Identifier('array')],
-            ['callable', new Node\Identifier('callable')],
-            ['bool', new Node\Identifier('bool')],
-            ['int', new Node\Identifier('int')],
-            ['float', new Node\Identifier('float')],
-            ['string', new Node\Identifier('string')],
-            ['iterable', new Node\Identifier('iterable')],
-            ['object', new Node\Identifier('object')],
-            ['Array', new Node\Identifier('array')],
-            ['CALLABLE', new Node\Identifier('callable')],
-            ['Some\Class', new Node\Name('Some\Class')],
-            ['\Foo', new Node\Name\FullyQualified('Foo')],
-            ['self', new Node\Name('self')],
-            ['?array', new Node\NullableType(new Node\Identifier('array'))],
-            ['?Some\Class', new Node\NullableType(new Node\Name('Some\Class'))],
-            [new Node\Name('Some\Class'), new Node\Name('Some\Class')],
-            [
-                new Node\NullableType(new Node\Identifier('int')),
-                new Node\NullableType(new Node\Identifier('int'))
-            ],
-            [
-                new Node\NullableType(new Node\Name('Some\Class')),
-                new Node\NullableType(new Node\Name('Some\Class'))
-            ],
-        ];
-    }
-
-    public function testVoidTypeError() {
-        $this->expectException(\LogicException::class);
-        $this->expectExceptionMessage('Parameter type cannot be void');
-        $this->createParamBuilder('test')->setType('void');
-    }
-
-    public function testInvalidTypeError() {
-        $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() {
-        $node = $this->createParamBuilder('test')
-            ->makeByRef()
-            ->getNode()
-        ;
-
-        $this->assertEquals(
-            new Node\Param(new Expr\Variable('test'), null, null, true),
-            $node
-        );
-    }
-
-    public function testVariadic() {
-        $node = $this->createParamBuilder('test')
-            ->makeVariadic()
-            ->getNode()
-        ;
-
-        $this->assertEquals(
-            new Node\Param(new Expr\Variable('test'), null, null, false, true),
-            $node
-        );
-    }
-}
diff --git a/vendor/nikic/php-parser/test/PhpParser/Builder/PropertyTest.php b/vendor/nikic/php-parser/test/PhpParser/Builder/PropertyTest.php
deleted file mode 100644
index a15cd43c76..0000000000
--- a/vendor/nikic/php-parser/test/PhpParser/Builder/PropertyTest.php
+++ /dev/null
@@ -1,147 +0,0 @@
-<?php declare(strict_types=1);
-
-namespace PhpParser\Builder;
-
-use PhpParser\Comment;
-use PhpParser\Node\Expr;
-use PhpParser\Node\Name;
-use PhpParser\Node\Scalar;
-use PhpParser\Node\Stmt;
-
-class PropertyTest extends \PHPUnit\Framework\TestCase
-{
-    public function createPropertyBuilder($name) {
-        return new Property($name);
-    }
-
-    public function testModifiers() {
-        $node = $this->createPropertyBuilder('test')
-            ->makePrivate()
-            ->makeStatic()
-            ->getNode()
-        ;
-
-        $this->assertEquals(
-            new Stmt\Property(
-                Stmt\Class_::MODIFIER_PRIVATE
-              | Stmt\Class_::MODIFIER_STATIC,
-                [
-                    new Stmt\PropertyProperty('test')
-                ]
-            ),
-            $node
-        );
-
-        $node = $this->createPropertyBuilder('test')
-            ->makeProtected()
-            ->getNode()
-        ;
-
-        $this->assertEquals(
-            new Stmt\Property(
-                Stmt\Class_::MODIFIER_PROTECTED,
-                [
-                    new Stmt\PropertyProperty('test')
-                ]
-            ),
-            $node
-        );
-
-        $node = $this->createPropertyBuilder('test')
-            ->makePublic()
-            ->getNode()
-        ;
-
-        $this->assertEquals(
-            new Stmt\Property(
-                Stmt\Class_::MODIFIER_PUBLIC,
-                [
-                    new Stmt\PropertyProperty('test')
-                ]
-            ),
-            $node
-        );
-    }
-
-    public function testDocComment() {
-        $node = $this->createPropertyBuilder('test')
-            ->setDocComment('/** Test */')
-            ->getNode();
-
-        $this->assertEquals(new Stmt\Property(
-            Stmt\Class_::MODIFIER_PUBLIC,
-            [
-                new Stmt\PropertyProperty('test')
-            ],
-            [
-                'comments' => [new Comment\Doc('/** Test */')]
-            ]
-        ), $node);
-    }
-
-    /**
-     * @dataProvider provideTestDefaultValues
-     */
-    public function testDefaultValues($value, $expectedValueNode) {
-        $node = $this->createPropertyBuilder('test')
-            ->setDefault($value)
-            ->getNode()
-        ;
-
-        $this->assertEquals($expectedValueNode, $node->props[0]->default);
-    }
-
-    public function provideTestDefaultValues() {
-        return [
-            [
-                null,
-                new Expr\ConstFetch(new Name('null'))
-            ],
-            [
-                true,
-                new Expr\ConstFetch(new Name('true'))
-            ],
-            [
-                false,
-                new Expr\ConstFetch(new Name('false'))
-            ],
-            [
-                31415,
-                new Scalar\LNumber(31415)
-            ],
-            [
-                3.1415,
-                new Scalar\DNumber(3.1415)
-            ],
-            [
-                'Hallo World',
-                new Scalar\String_('Hallo World')
-            ],
-            [
-                [1, 2, 3],
-                new Expr\Array_([
-                    new Expr\ArrayItem(new Scalar\LNumber(1)),
-                    new Expr\ArrayItem(new Scalar\LNumber(2)),
-                    new Expr\ArrayItem(new Scalar\LNumber(3)),
-                ])
-            ],
-            [
-                ['foo' => 'bar', 'bar' => 'foo'],
-                new Expr\Array_([
-                    new Expr\ArrayItem(
-                        new Scalar\String_('bar'),
-                        new Scalar\String_('foo')
-                    ),
-                    new Expr\ArrayItem(
-                        new Scalar\String_('foo'),
-                        new Scalar\String_('bar')
-                    ),
-                ])
-            ],
-            [
-                new Scalar\MagicConst\Dir,
-                new Scalar\MagicConst\Dir
-            ]
-        ];
-    }
-}
diff --git a/vendor/nikic/php-parser/test/PhpParser/Builder/TraitTest.php b/vendor/nikic/php-parser/test/PhpParser/Builder/TraitTest.php
deleted file mode 100644
index 4d99ef8870..0000000000
--- a/vendor/nikic/php-parser/test/PhpParser/Builder/TraitTest.php
+++ /dev/null
@@ -1,46 +0,0 @@
-<?php declare(strict_types=1);
-
-namespace PhpParser\Builder;
-
-use PhpParser\Comment;
-use PhpParser\Node\Name;
-use PhpParser\Node\Stmt;
-
-class TraitTest extends \PHPUnit\Framework\TestCase
-{
-    protected function createTraitBuilder($class) {
-        return new Trait_($class);
-    }
-
-    public function testStmtAddition() {
-        $method1 = new Stmt\ClassMethod('test1');
-        $method2 = new Stmt\ClassMethod('test2');
-        $method3 = new Stmt\ClassMethod('test3');
-        $prop = new Stmt\Property(Stmt\Class_::MODIFIER_PUBLIC, [
-            new Stmt\PropertyProperty('test')
-        ]);
-        $use = new Stmt\TraitUse([new Name('OtherTrait')]);
-        $trait = $this->createTraitBuilder('TestTrait')
-            ->setDocComment('/** Nice trait */')
-            ->addStmt($method1)
-            ->addStmts([$method2, $method3])
-            ->addStmt($prop)
-            ->addStmt($use)
-            ->getNode();
-        $this->assertEquals(new Stmt\Trait_('TestTrait', [
-            'stmts' => [$use, $prop, $method1, $method2, $method3]
-        ], [
-            'comments' => [
-                new Comment\Doc('/** Nice trait */')
-            ]
-        ]), $trait);
-    }
-
-    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
deleted file mode 100644
index 4961ccfac9..0000000000
--- a/vendor/nikic/php-parser/test/PhpParser/Builder/TraitUseAdaptationTest.php
+++ /dev/null
@@ -1,106 +0,0 @@
-<?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
deleted file mode 100644
index 8d20dfbd7c..0000000000
--- a/vendor/nikic/php-parser/test/PhpParser/Builder/TraitUseTest.php
+++ /dev/null
@@ -1,52 +0,0 @@
-<?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
deleted file mode 100644
index f17da59b42..0000000000
--- a/vendor/nikic/php-parser/test/PhpParser/Builder/UseTest.php
+++ /dev/null
@@ -1,36 +0,0 @@
-<?php declare(strict_types=1);
-
-namespace PhpParser\Builder;
-
-use PhpParser\Builder;
-use PhpParser\Node\Name;
-use PhpParser\Node\Stmt;
-
-class UseTest extends \PHPUnit\Framework\TestCase
-{
-    protected function createUseBuilder($name, $type = Stmt\Use_::TYPE_NORMAL) {
-        return new Builder\Use_($name, $type);
-    }
-
-    public function testCreation() {
-        $node = $this->createUseBuilder('Foo\Bar')->getNode();
-        $this->assertEquals(new Stmt\Use_([
-            new Stmt\UseUse(new Name('Foo\Bar'), null)
-        ]), $node);
-
-        $node = $this->createUseBuilder(new Name('Foo\Bar'))->as('XYZ')->getNode();
-        $this->assertEquals(new Stmt\Use_([
-            new Stmt\UseUse(new Name('Foo\Bar'), 'XYZ')
-        ]), $node);
-
-        $node = $this->createUseBuilder('foo\bar', Stmt\Use_::TYPE_FUNCTION)->as('foo')->getNode();
-        $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
deleted file mode 100644
index a80e1c5814..0000000000
--- a/vendor/nikic/php-parser/test/PhpParser/BuilderFactoryTest.php
+++ /dev/null
@@ -1,327 +0,0 @@
-<?php declare(strict_types=1);
-
-namespace PhpParser;
-
-use PhpParser\Node\Arg;
-use PhpParser\Node\Expr;
-use PhpParser\Node\Expr\BinaryOp\Concat;
-use PhpParser\Node\Identifier;
-use PhpParser\Node\Name;
-use PhpParser\Node\Scalar\LNumber;
-use PhpParser\Node\Scalar\String_;
-
-class BuilderFactoryTest extends \PHPUnit\Framework\TestCase
-{
-    /**
-     * @dataProvider provideTestFactory
-     */
-    public function testFactory($methodName, $className) {
-        $factory = new BuilderFactory;
-        $this->assertInstanceOf($className, $factory->$methodName('test'));
-    }
-
-    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],
-            ['useFunction', Builder\Use_::class],
-            ['useConst',    Builder\Use_::class],
-        ];
-    }
-
-    public function testVal() {
-        // This method is a wrapper around BuilderHelpers::normalizeValue(),
-        // which is already tested elsewhere
-        $factory = new BuilderFactory();
-        $this->assertEquals(
-            new String_("foo"),
-            $factory->val("foo")
-        );
-    }
-
-    public function testConcat() {
-        $factory = new BuilderFactory();
-        $varA = new Expr\Variable('a');
-        $varB = new Expr\Variable('b');
-        $varC = new Expr\Variable('c');
-
-        $this->assertEquals(
-            new Concat($varA, $varB),
-            $factory->concat($varA, $varB)
-        );
-        $this->assertEquals(
-            new Concat(new Concat($varA, $varB), $varC),
-            $factory->concat($varA, $varB, $varC)
-        );
-        $this->assertEquals(
-            new Concat(new Concat(new String_("a"), $varB), new String_("c")),
-            $factory->concat("a", $varB, "c")
-        );
-    }
-
-    public function testConcatOneError() {
-        $this->expectException(\LogicException::class);
-        $this->expectExceptionMessage('Expected at least two expressions');
-        (new BuilderFactory())->concat("a");
-    }
-
-    public function testConcatInvalidExpr() {
-        $this->expectException(\LogicException::class);
-        $this->expectExceptionMessage('Expected string or Expr');
-        (new BuilderFactory())->concat("a", 42);
-    }
-
-    public function testArgs() {
-        $factory = new BuilderFactory();
-        $unpack = new Arg(new Expr\Variable('c'), false, true);
-        $this->assertEquals(
-            [
-                new Arg(new Expr\Variable('a')),
-                new Arg(new String_('b')),
-                $unpack
-            ],
-            $factory->args([new Expr\Variable('a'), 'b', $unpack])
-        );
-    }
-
-    public function testCalls() {
-        $factory = new BuilderFactory();
-
-        // Simple function call
-        $this->assertEquals(
-            new Expr\FuncCall(
-                new Name('var_dump'),
-                [new Arg(new String_('str'))]
-            ),
-            $factory->funcCall('var_dump', ['str'])
-        );
-        // Dynamic function call
-        $this->assertEquals(
-            new Expr\FuncCall(new Expr\Variable('fn')),
-            $factory->funcCall(new Expr\Variable('fn'))
-        );
-
-        // Simple method call
-        $this->assertEquals(
-            new Expr\MethodCall(
-                new Expr\Variable('obj'),
-                new Identifier('method'),
-                [new Arg(new LNumber(42))]
-            ),
-            $factory->methodCall(new Expr\Variable('obj'), 'method', [42])
-        );
-        // Explicitly pass Identifier node
-        $this->assertEquals(
-            new Expr\MethodCall(
-                new Expr\Variable('obj'),
-                new Identifier('method')
-            ),
-            $factory->methodCall(new Expr\Variable('obj'), new Identifier('method'))
-        );
-        // Dynamic method call
-        $this->assertEquals(
-            new Expr\MethodCall(
-                new Expr\Variable('obj'),
-                new Expr\Variable('method')
-            ),
-            $factory->methodCall(new Expr\Variable('obj'), new Expr\Variable('method'))
-        );
-
-        // Simple static method call
-        $this->assertEquals(
-            new Expr\StaticCall(
-                new Name\FullyQualified('Foo'),
-                new Identifier('bar'),
-                [new Arg(new Expr\Variable('baz'))]
-            ),
-            $factory->staticCall('\Foo', 'bar', [new Expr\Variable('baz')])
-        );
-        // Dynamic static method call
-        $this->assertEquals(
-            new Expr\StaticCall(
-                new Expr\Variable('foo'),
-                new Expr\Variable('bar')
-            ),
-            $factory->staticCall(new Expr\Variable('foo'), new Expr\Variable('bar'))
-        );
-
-        // Simple new call
-        $this->assertEquals(
-            new Expr\New_(new Name\FullyQualified('stdClass')),
-            $factory->new('\stdClass')
-        );
-        // Dynamic new call
-        $this->assertEquals(
-            new Expr\New_(
-                new Expr\Variable('foo'),
-                [new Arg(new String_('bar'))]
-            ),
-            $factory->new(new Expr\Variable('foo'), ['bar'])
-        );
-    }
-
-    public function testConstFetches() {
-        $factory = new BuilderFactory();
-        $this->assertEquals(
-            new Expr\ConstFetch(new Name('FOO')),
-            $factory->constFetch('FOO')
-        );
-        $this->assertEquals(
-            new Expr\ClassConstFetch(new Name('Foo'), new Identifier('BAR')),
-            $factory->classConstFetch('Foo', 'BAR')
-        );
-        $this->assertEquals(
-            new Expr\ClassConstFetch(new Expr\Variable('foo'), new Identifier('BAR')),
-            $factory->classConstFetch(new Expr\Variable('foo'), 'BAR')
-        );
-    }
-
-    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'));
-    }
-
-    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'));
-    }
-
-    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')->setType('SomeClass'))
-                    ->setDocComment('/**
-                                      * This method does something.
-                                      *
-                                      * @param SomeClass And takes a parameter
-                                      */'))
-
-                ->addStmt($factory->method('anotherMethod')
-                    ->makeProtected()
-                    ->addParam($factory->param('someParam')->setDefault('test'))
-                    ->addStmt(new Expr\Print_(new Expr\Variable('someParam'))))
-
-                ->addStmt($factory->property('someProperty')->makeProtected())
-                ->addStmt($factory->property('anotherProperty')
-                    ->makePrivate()
-                    ->setDefault([1, 2, 3])))
-            ->getNode()
-        ;
-
-        $expected = <<<'EOC'
-<?php
-
-namespace Name\Space;
-
-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()
-    {
-    }
-    /**
-     * This method does something.
-     *
-     * @param SomeClass And takes a parameter
-     */
-    public abstract function someMethod(SomeClass $someParam);
-    protected function anotherMethod($someParam = 'test')
-    {
-        print $someParam;
-    }
-}
-EOC;
-
-        $stmts = [$node];
-        $prettyPrinter = new PrettyPrinter\Standard();
-        $generated = $prettyPrinter->prettyPrintFile($stmts);
-
-        $this->assertEquals(
-            str_replace("\r\n", "\n", $expected),
-            str_replace("\r\n", "\n", $generated)
-        );
-    }
-}
diff --git a/vendor/nikic/php-parser/test/PhpParser/CodeParsingTest.php b/vendor/nikic/php-parser/test/PhpParser/CodeParsingTest.php
deleted file mode 100644
index 24e93dd522..0000000000
--- a/vendor/nikic/php-parser/test/PhpParser/CodeParsingTest.php
+++ /dev/null
@@ -1,119 +0,0 @@
-<?php declare(strict_types=1);
-
-namespace PhpParser;
-
-use PhpParser\Node\Expr;
-use PhpParser\Node\Stmt;
-
-class CodeParsingTest extends CodeTestAbstract
-{
-    /**
-     * @dataProvider provideTestParse
-     */
-    public function testParse($name, $code, $expected, $modeLine) {
-        if (null !== $modeLine) {
-            $modes = array_fill_keys(explode(',', $modeLine), true);
-        } else {
-            $modes = [];
-        }
-
-        list($parser5, $parser7) = $this->createParsers($modes);
-        list($stmts5, $output5) = $this->getParseOutput($parser5, $code, $modes);
-        list($stmts7, $output7) = $this->getParseOutput($parser7, $code, $modes);
-
-        if (isset($modes['php5'])) {
-            $this->assertSame($expected, $output5, $name);
-            $this->assertNotSame($expected, $output7, $name);
-        } elseif (isset($modes['php7'])) {
-            $this->assertNotSame($expected, $output5, $name);
-            $this->assertSame($expected, $output7, $name);
-        } else {
-            $this->assertSame($expected, $output5, $name);
-            $this->assertSame($expected, $output7, $name);
-        }
-
-        $this->checkAttributes($stmts5);
-        $this->checkAttributes($stmts7);
-    }
-
-    public function createParsers(array $modes) {
-        $lexer = new Lexer\Emulative(['usedAttributes' => [
-            'startLine', 'endLine',
-            'startFilePos', 'endFilePos',
-            'startTokenPos', 'endTokenPos',
-            'comments'
-        ]]);
-
-        return [
-            new Parser\Php5($lexer),
-            new Parser\Php7($lexer),
-        ];
-    }
-
-    // Must be public for updateTests.php
-    public function getParseOutput(Parser $parser, $code, array $modes) {
-        $dumpPositions = isset($modes['positions']);
-
-        $errors = new ErrorHandler\Collecting;
-        $stmts = $parser->parse($code, $errors);
-
-        $output = '';
-        foreach ($errors->getErrors() as $error) {
-            $output .= $this->formatErrorMessage($error, $code) . "\n";
-        }
-
-        if (null !== $stmts) {
-            $dumper = new NodeDumper(['dumpComments' => true, 'dumpPositions' => $dumpPositions]);
-            $output .= $dumper->dump($stmts, $code);
-        }
-
-        return [$stmts, canonicalize($output)];
-    }
-
-    public function provideTestParse() {
-        return $this->getTests(__DIR__ . '/../code/parser', 'test');
-    }
-
-    private function formatErrorMessage(Error $e, $code) {
-        if ($e->hasColumnInfo()) {
-            return $e->getMessageWithColumnInfo($code);
-        }
-
-        return $e->getMessage();
-    }
-
-    private function checkAttributes($stmts) {
-        if ($stmts === null) {
-            return;
-        }
-
-        $traverser = new NodeTraverser();
-        $traverser->addVisitor(new class extends NodeVisitorAbstract {
-            public function enterNode(Node $node) {
-                $startLine = $node->getStartLine();
-                $endLine = $node->getEndLine();
-                $startFilePos = $node->getStartFilePos();
-                $endFilePos = $node->getEndFilePos();
-                $startTokenPos = $node->getStartTokenPos();
-                $endTokenPos = $node->getEndTokenPos();
-                if ($startLine < 0 || $endLine < 0 ||
-                    $startFilePos < 0 || $endFilePos < 0 ||
-                    $startTokenPos < 0 || $endTokenPos < 0
-                ) {
-                    throw new \Exception('Missing location information on ' . $node->getType());
-                }
-
-                if ($endLine < $startLine ||
-                    $endFilePos < $startFilePos ||
-                    $endTokenPos < $startTokenPos
-                ) {
-                    // Nops and error can have inverted order, if they are empty
-                    if (!$node instanceof Stmt\Nop && !$node instanceof Expr\Error) {
-                        throw new \Exception('End < start on ' . $node->getType());
-                    }
-                }
-            }
-        });
-        $traverser->traverse($stmts);
-    }
-}
diff --git a/vendor/nikic/php-parser/test/PhpParser/CodeTestAbstract.php b/vendor/nikic/php-parser/test/PhpParser/CodeTestAbstract.php
deleted file mode 100644
index f5f408755c..0000000000
--- a/vendor/nikic/php-parser/test/PhpParser/CodeTestAbstract.php
+++ /dev/null
@@ -1,26 +0,0 @@
-<?php declare(strict_types=1);
-
-namespace PhpParser;
-
-abstract class CodeTestAbstract extends \PHPUnit\Framework\TestCase
-{
-    protected function getTests($directory, $fileExtension, $chunksPerTest = 2) {
-        $parser = new CodeTestParser;
-        $allTests = [];
-        foreach (filesInDir($directory, $fileExtension) as $fileName => $fileContents) {
-            list($name, $tests) = $parser->parseTest($fileContents, $chunksPerTest);
-
-            // first part is the name
-            $name .= ' (' . $fileName . ')';
-            $shortName = ltrim(str_replace($directory, '', $fileName), '/\\');
-
-            // multiple sections possible with always two forming a pair
-            foreach ($tests as $i => list($mode, $parts)) {
-                $dataSetName = $shortName . (count($parts) > 1 ? '#' . $i : '');
-                $allTests[$dataSetName] = array_merge([$name], $parts, [$mode]);
-            }
-        }
-
-        return $allTests;
-    }
-}
diff --git a/vendor/nikic/php-parser/test/PhpParser/CodeTestParser.php b/vendor/nikic/php-parser/test/PhpParser/CodeTestParser.php
deleted file mode 100644
index f63dc92653..0000000000
--- a/vendor/nikic/php-parser/test/PhpParser/CodeTestParser.php
+++ /dev/null
@@ -1,68 +0,0 @@
-<?php declare(strict_types=1);
-
-namespace PhpParser;
-
-class CodeTestParser
-{
-    public function parseTest($code, $chunksPerTest) {
-        $code = canonicalize($code);
-
-        // evaluate @@{expr}@@ expressions
-        $code = preg_replace_callback(
-            '/@@\{(.*?)\}@@/',
-            function($matches) {
-                return eval('return ' . $matches[1] . ';');
-            },
-            $code
-        );
-
-        // parse sections
-        $parts = preg_split("/\n-----(?:\n|$)/", $code);
-
-        // first part is the name
-        $name = array_shift($parts);
-
-        // multiple sections possible with always two forming a pair
-        $chunks = array_chunk($parts, $chunksPerTest);
-        $tests = [];
-        foreach ($chunks as $i => $chunk) {
-            $lastPart = array_pop($chunk);
-            list($lastPart, $mode) = $this->extractMode($lastPart);
-            $tests[] = [$mode, array_merge($chunk, [$lastPart])];
-        }
-
-        return [$name, $tests];
-    }
-
-    public function reconstructTest($name, array $tests) {
-        $result = $name;
-        foreach ($tests as list($mode, $parts)) {
-            $lastPart = array_pop($parts);
-            foreach ($parts as $part) {
-                $result .= "\n-----\n$part";
-            }
-
-            $result .= "\n-----\n";
-            if (null !== $mode) {
-                $result .= "!!$mode\n";
-            }
-            $result .= $lastPart;
-        }
-        return $result;
-    }
-
-    private function extractMode($expected) {
-        $firstNewLine = strpos($expected, "\n");
-        if (false === $firstNewLine) {
-            $firstNewLine = strlen($expected);
-        }
-
-        $firstLine = substr($expected, 0, $firstNewLine);
-        if (0 !== strpos($firstLine, '!!')) {
-            return [$expected, null];
-        }
-
-        $expected = (string) substr($expected, $firstNewLine + 1);
-        return [$expected, substr($firstLine, 2)];
-    }
-}
diff --git a/vendor/nikic/php-parser/test/PhpParser/CommentTest.php b/vendor/nikic/php-parser/test/PhpParser/CommentTest.php
deleted file mode 100644
index 409841aae1..0000000000
--- a/vendor/nikic/php-parser/test/PhpParser/CommentTest.php
+++ /dev/null
@@ -1,74 +0,0 @@
-<?php declare(strict_types=1);
-
-namespace PhpParser;
-
-class CommentTest extends \PHPUnit\Framework\TestCase
-{
-    public function testGetSet() {
-        $comment = new Comment('/* Some comment */', 1, 10, 2);
-
-        $this->assertSame('/* Some comment */', $comment->getText());
-        $this->assertSame('/* Some comment */', (string) $comment);
-        $this->assertSame(1, $comment->getLine());
-        $this->assertSame(10, $comment->getFilePos());
-        $this->assertSame(2, $comment->getTokenPos());
-    }
-
-    /**
-     * @dataProvider provideTestReformatting
-     */
-    public function testReformatting($commentText, $reformattedText) {
-        $comment = new Comment($commentText);
-        $this->assertSame($reformattedText, $comment->getReformattedText());
-    }
-
-    public function provideTestReformatting() {
-        return [
-            ['// Some text' . "\n", '// Some text'],
-            ['/* Some text */', '/* Some text */'],
-            [
-                '/**
-     * Some text.
-     * Some more text.
-     */',
-                '/**
- * Some text.
- * Some more text.
- */'
-            ],
-            [
-                '/*
-        Some text.
-        Some more text.
-    */',
-                '/*
-    Some text.
-    Some more text.
-*/'
-            ],
-            [
-                '/* Some text.
-       More text.
-       Even more text. */',
-                '/* Some text.
-   More text.
-   Even more text. */'
-            ],
-            [
-                '/* Some text.
-       More text.
-         Indented text. */',
-                '/* Some text.
-   More text.
-     Indented text. */',
-            ],
-            // invalid comment -> no reformatting
-            [
-                'hallo
-    world',
-                'hallo
-    world',
-            ],
-        ];
-    }
-}
diff --git a/vendor/nikic/php-parser/test/PhpParser/ConstExprEvaluatorTest.php b/vendor/nikic/php-parser/test/PhpParser/ConstExprEvaluatorTest.php
deleted file mode 100644
index 02d992e599..0000000000
--- a/vendor/nikic/php-parser/test/PhpParser/ConstExprEvaluatorTest.php
+++ /dev/null
@@ -1,130 +0,0 @@
-<?php declare(strict_types=1);
-
-namespace PhpParser;
-
-use PhpParser\Node\Expr;
-use PhpParser\Node\Scalar;
-
-class ConstExprEvaluatorTest extends \PHPUnit\Framework\TestCase
-{
-    /** @dataProvider provideTestEvaluate */
-    public function testEvaluate($exprString, $expected) {
-        $parser = new Parser\Php7(new Lexer());
-        $expr = $parser->parse('<?php ' . $exprString . ';')[0]->expr;
-        $evaluator = new ConstExprEvaluator();
-        $this->assertSame($expected, $evaluator->evaluateDirectly($expr));
-    }
-
-    public function provideTestEvaluate() {
-        return [
-            ['1', 1],
-            ['1.0', 1.0],
-            ['"foo"', "foo"],
-            ['[0, 1]', [0, 1]],
-            ['["foo" => "bar"]', ["foo" => "bar"]],
-            ['NULL', null],
-            ['False', false],
-            ['true', true],
-            ['+1', 1],
-            ['-1', -1],
-            ['~0', -1],
-            ['!true', false],
-            ['[0][0]', 0],
-            ['"a"[0]', "a"],
-            ['true ? 1 : (1/0)', 1],
-            ['false ? (1/0) : 1', 1],
-            ['42 ?: (1/0)', 42],
-            ['false ?: 42', 42],
-            ['false ?? 42', false],
-            ['null ?? 42', 42],
-            ['[0][0] ?? 42', 0],
-            ['[][0] ?? 42', 42],
-            ['0b11 & 0b10', 0b10],
-            ['0b11 | 0b10', 0b11],
-            ['0b11 ^ 0b10', 0b01],
-            ['1 << 2', 4],
-            ['4 >> 2', 1],
-            ['"a" . "b"', "ab"],
-            ['4 + 2', 6],
-            ['4 - 2', 2],
-            ['4 * 2', 8],
-            ['4 / 2', 2],
-            ['4 % 2', 0],
-            ['4 ** 2', 16],
-            ['1 == 1.0', true],
-            ['1 != 1.0', false],
-            ['1 < 2.0', true],
-            ['1 <= 2.0', true],
-            ['1 > 2.0', false],
-            ['1 >= 2.0', false],
-            ['1 <=> 2.0', -1],
-            ['1 === 1.0', false],
-            ['1 !== 1.0', true],
-            ['true && true', true],
-            ['true and true', true],
-            ['false && (1/0)', false],
-            ['false and (1/0)', false],
-            ['false || false', false],
-            ['false or false', false],
-            ['true || (1/0)', true],
-            ['true or (1/0)', true],
-            ['true xor false', true],
-        ];
-    }
-
-    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'));
-    }
-
-    public function testEvaluateFallback() {
-        $evaluator = new ConstExprEvaluator(function(Expr $expr) {
-            if ($expr instanceof Scalar\MagicConst\Line) {
-                return 42;
-            }
-            throw new ConstExprEvaluationException();
-        });
-        $expr = new Expr\BinaryOp\Plus(
-            new Scalar\LNumber(8),
-            new Scalar\MagicConst\Line()
-        );
-        $this->assertSame(50, $evaluator->evaluateDirectly($expr));
-    }
-
-    /**
-     * @dataProvider provideTestEvaluateSilently
-     */
-    public function testEvaluateSilently($expr, $exception, $msg) {
-        $evaluator = new ConstExprEvaluator();
-
-        try {
-            $evaluator->evaluateSilently($expr);
-        } catch (ConstExprEvaluationException $e) {
-            $this->assertSame(
-                'An error occurred during constant expression evaluation',
-                $e->getMessage()
-            );
-
-            $prev = $e->getPrevious();
-            $this->assertInstanceOf($exception, $prev);
-            $this->assertSame($msg, $prev->getMessage());
-        }
-    }
-
-    public function provideTestEvaluateSilently() {
-        return [
-            [
-                new Expr\BinaryOp\Mod(new Scalar\LNumber(42), new Scalar\LNumber(0)),
-                \Error::class,
-                'Modulo by zero'
-            ],
-            [
-                new Expr\BinaryOp\Div(new Scalar\LNumber(42), new Scalar\LNumber(0)),
-                \ErrorException::class,
-                'Division by zero'
-            ],
-        ];
-    }
-}
diff --git a/vendor/nikic/php-parser/test/PhpParser/ErrorHandler/CollectingTest.php b/vendor/nikic/php-parser/test/PhpParser/ErrorHandler/CollectingTest.php
deleted file mode 100644
index a20101a8b6..0000000000
--- a/vendor/nikic/php-parser/test/PhpParser/ErrorHandler/CollectingTest.php
+++ /dev/null
@@ -1,23 +0,0 @@
-<?php declare(strict_types=1);
-
-namespace PhpParser\ErrorHandler;
-
-use PhpParser\Error;
-
-class CollectingTest extends \PHPUnit\Framework\TestCase
-{
-    public function testHandleError() {
-        $errorHandler = new Collecting();
-        $this->assertFalse($errorHandler->hasErrors());
-        $this->assertEmpty($errorHandler->getErrors());
-
-        $errorHandler->handleError($e1 = new Error('Test 1'));
-        $errorHandler->handleError($e2 = new Error('Test 2'));
-        $this->assertTrue($errorHandler->hasErrors());
-        $this->assertSame([$e1, $e2], $errorHandler->getErrors());
-
-        $errorHandler->clearErrors();
-        $this->assertFalse($errorHandler->hasErrors());
-        $this->assertEmpty($errorHandler->getErrors());
-    }
-}
diff --git a/vendor/nikic/php-parser/test/PhpParser/ErrorHandler/ThrowingTest.php b/vendor/nikic/php-parser/test/PhpParser/ErrorHandler/ThrowingTest.php
deleted file mode 100644
index be641ec7a9..0000000000
--- a/vendor/nikic/php-parser/test/PhpParser/ErrorHandler/ThrowingTest.php
+++ /dev/null
@@ -1,15 +0,0 @@
-<?php declare(strict_types=1);
-
-namespace PhpParser\ErrorHandler;
-
-use PhpParser\Error;
-
-class ThrowingTest extends \PHPUnit\Framework\TestCase
-{
-    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
deleted file mode 100644
index cc2d3fa5c8..0000000000
--- a/vendor/nikic/php-parser/test/PhpParser/ErrorTest.php
+++ /dev/null
@@ -1,104 +0,0 @@
-<?php declare(strict_types=1);
-
-namespace PhpParser;
-
-class ErrorTest extends \PHPUnit\Framework\TestCase
-{
-    public function testConstruct() {
-        $attributes = [
-            'startLine' => 10,
-            'endLine' => 11,
-        ];
-        $error = new Error('Some error', $attributes);
-
-        $this->assertSame('Some error', $error->getRawMessage());
-        $this->assertSame($attributes, $error->getAttributes());
-        $this->assertSame(10, $error->getStartLine());
-        $this->assertSame(11, $error->getEndLine());
-        $this->assertSame('Some error on line 10', $error->getMessage());
-
-        return $error;
-    }
-
-    /**
-     * @depends testConstruct
-     */
-    public function testSetMessageAndLine(Error $error) {
-        $error->setRawMessage('Some other error');
-        $this->assertSame('Some other error', $error->getRawMessage());
-
-        $error->setStartLine(15);
-        $this->assertSame(15, $error->getStartLine());
-        $this->assertSame('Some other error on line 15', $error->getMessage());
-    }
-
-    public function testUnknownLine() {
-        $error = new Error('Some error');
-
-        $this->assertSame(-1, $error->getStartLine());
-        $this->assertSame(-1, $error->getEndLine());
-        $this->assertSame('Some error on unknown line', $error->getMessage());
-    }
-
-    /** @dataProvider provideTestColumnInfo */
-    public function testColumnInfo($code, $startPos, $endPos, $startColumn, $endColumn) {
-        $error = new Error('Some error', [
-            'startFilePos' => $startPos,
-            'endFilePos' => $endPos,
-        ]);
-
-        $this->assertTrue($error->hasColumnInfo());
-        $this->assertSame($startColumn, $error->getStartColumn($code));
-        $this->assertSame($endColumn, $error->getEndColumn($code));
-
-    }
-
-    public function provideTestColumnInfo() {
-        return [
-            // Error at "bar"
-            ["<?php foo bar baz", 10, 12, 11, 13],
-            ["<?php\nfoo bar baz", 10, 12, 5, 7],
-            ["<?php foo\nbar baz", 10, 12, 1, 3],
-            ["<?php foo bar\nbaz", 10, 12, 11, 13],
-            ["<?php\r\nfoo bar baz", 11, 13, 5, 7],
-            // Error at "baz"
-            ["<?php foo bar baz", 14, 16, 15, 17],
-            ["<?php foo bar\nbaz", 14, 16, 1, 3],
-            // Error at string literal
-            ["<?php foo 'bar\nbaz' xyz", 10, 18, 11, 4],
-            ["<?php\nfoo 'bar\nbaz' xyz", 10, 18, 5, 4],
-            ["<?php foo\n'\nbarbaz\n'\nxyz", 10, 19, 1, 1],
-            // Error over full string
-            ["<?php", 0, 4, 1, 5],
-            ["<?\nphp", 0, 5, 1, 3],
-        ];
-    }
-
-    public function testNoColumnInfo() {
-        $error = new Error('Some error', 3);
-
-        $this->assertFalse($error->hasColumnInfo());
-        try {
-            $error->getStartColumn('');
-            $this->fail('Expected RuntimeException');
-        } catch (\RuntimeException $e) {
-            $this->assertSame('Error does not have column information', $e->getMessage());
-        }
-        try {
-            $error->getEndColumn('');
-            $this->fail('Expected RuntimeException');
-        } catch (\RuntimeException $e) {
-            $this->assertSame('Error does not have column information', $e->getMessage());
-        }
-    }
-
-    public function testInvalidPosInfo() {
-        $this->expectException(\RuntimeException::class);
-        $this->expectExceptionMessage('Invalid position information');
-        $error = new Error('Some error', [
-            'startFilePos' => 10,
-            'endFilePos' => 11,
-        ]);
-        $error->getStartColumn('code');
-    }
-}
diff --git a/vendor/nikic/php-parser/test/PhpParser/Internal/DifferTest.php b/vendor/nikic/php-parser/test/PhpParser/Internal/DifferTest.php
deleted file mode 100644
index 6fac3fd365..0000000000
--- a/vendor/nikic/php-parser/test/PhpParser/Internal/DifferTest.php
+++ /dev/null
@@ -1,65 +0,0 @@
-<?php declare(strict_types=1);
-
-namespace PhpParser\Internal;
-
-class DifferTest extends \PHPUnit\Framework\TestCase
-{
-    private function formatDiffString(array $diff) {
-        $diffStr = '';
-        foreach ($diff as $diffElem) {
-            switch ($diffElem->type) {
-                case DiffElem::TYPE_KEEP:
-                    $diffStr .= $diffElem->old;
-                    break;
-                case DiffElem::TYPE_REMOVE:
-                    $diffStr .= '-' . $diffElem->old;
-                    break;
-                case DiffElem::TYPE_ADD:
-                    $diffStr .= '+' . $diffElem->new;
-                    break;
-                case DiffElem::TYPE_REPLACE:
-                    $diffStr .= '/' . $diffElem->old . $diffElem->new;
-                    break;
-                default:
-                    assert(false);
-                    break;
-            }
-        }
-        return $diffStr;
-    }
-
-    /** @dataProvider provideTestDiff */
-    public function testDiff($oldStr, $newStr, $expectedDiffStr) {
-        $differ = new Differ(function($a, $b) { return $a === $b; });
-        $diff = $differ->diff(str_split($oldStr), str_split($newStr));
-        $this->assertSame($expectedDiffStr, $this->formatDiffString($diff));
-    }
-
-    public function provideTestDiff() {
-        return [
-            ['abc', 'abc', 'abc'],
-            ['abc', 'abcdef', 'abc+d+e+f'],
-            ['abcdef', 'abc', 'abc-d-e-f'],
-            ['abcdef', 'abcxyzdef', 'abc+x+y+zdef'],
-            ['axyzb', 'ab', 'a-x-y-zb'],
-            ['abcdef', 'abxyef', 'ab-c-d+x+yef'],
-            ['abcdef', 'cdefab', '-a-bcdef+a+b'],
-        ];
-    }
-
-    /** @dataProvider provideTestDiffWithReplacements */
-    public function testDiffWithReplacements($oldStr, $newStr, $expectedDiffStr) {
-        $differ = new Differ(function($a, $b) { return $a === $b; });
-        $diff = $differ->diffWithReplacements(str_split($oldStr), str_split($newStr));
-        $this->assertSame($expectedDiffStr, $this->formatDiffString($diff));
-    }
-
-    public function provideTestDiffWithReplacements() {
-        return [
-            ['abcde', 'axyze', 'a/bx/cy/dze'],
-            ['abcde', 'xbcdy', '/axbcd/ey'],
-            ['abcde', 'axye', 'a-b-c-d+x+ye'],
-            ['abcde', 'axyzue', 'a-b-c-d+x+y+z+ue'],
-        ];
-    }
-}
diff --git a/vendor/nikic/php-parser/test/PhpParser/JsonDecoderTest.php b/vendor/nikic/php-parser/test/PhpParser/JsonDecoderTest.php
deleted file mode 100644
index d5cb05973e..0000000000
--- a/vendor/nikic/php-parser/test/PhpParser/JsonDecoderTest.php
+++ /dev/null
@@ -1,43 +0,0 @@
-<?php declare(strict_types=1);
-
-namespace PhpParser;
-
-class JsonDecoderTest extends \PHPUnit\Framework\TestCase
-{
-    public function testRoundTrip() {
-        $code = <<<'PHP'
-<?php
-// comment
-/** doc comment */
-function functionName(&$a = 0, $b = 1.0) {
-    echo 'Foo';
-}
-PHP;
-
-        $parser = new Parser\Php7(new Lexer());
-        $stmts = $parser->parse($code);
-        $json = json_encode($stmts);
-
-        $jsonDecoder = new JsonDecoder();
-        $decodedStmts = $jsonDecoder->decode($json);
-        $this->assertEquals($stmts, $decodedStmts);
-    }
-
-    /** @dataProvider provideTestDecodingError */
-    public function testDecodingError($json, $expectedMessage) {
-        $jsonDecoder = new JsonDecoder();
-        $this->expectException(\RuntimeException::class);
-        $this->expectExceptionMessage($expectedMessage);
-        $jsonDecoder->decode($json);
-    }
-
-    public function provideTestDecodingError() {
-        return [
-            ['???', 'JSON decoding error: Syntax error'],
-            ['{"nodeType":123}', 'Node type must be a string'],
-            ['{"nodeType":"Name","attributes":123}', 'Attributes must be an array'],
-            ['{"nodeType":"Comment"}', 'Comment must have text'],
-            ['{"nodeType":"xxx"}', 'Unknown node type "xxx"'],
-        ];
-    }
-}
diff --git a/vendor/nikic/php-parser/test/PhpParser/Lexer/EmulativeTest.php b/vendor/nikic/php-parser/test/PhpParser/Lexer/EmulativeTest.php
deleted file mode 100644
index a53c379b79..0000000000
--- a/vendor/nikic/php-parser/test/PhpParser/Lexer/EmulativeTest.php
+++ /dev/null
@@ -1,210 +0,0 @@
-<?php declare(strict_types=1);
-
-namespace PhpParser\Lexer;
-
-use PhpParser\ErrorHandler;
-use PhpParser\LexerTest;
-use PhpParser\Parser\Tokens;
-
-class EmulativeTest extends LexerTest
-{
-    protected function getLexer(array $options = []) {
-        return new Emulative($options);
-    }
-
-    /**
-     * @dataProvider provideTestReplaceKeywords
-     */
-    public function testReplaceKeywords($keyword, $expectedToken) {
-        $lexer = $this->getLexer();
-        $lexer->startLexing('<?php ' . $keyword);
-
-        $this->assertSame($expectedToken, $lexer->getNextToken());
-        $this->assertSame(0, $lexer->getNextToken());
-    }
-
-    /**
-     * @dataProvider provideTestReplaceKeywords
-     */
-    public function testNoReplaceKeywordsAfterObjectOperator(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());
-    }
-
-    /**
-     * @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],
-
-            // PHP 5.4
-            ['callable',      Tokens::T_CALLABLE],
-            ['insteadof',     Tokens::T_INSTEADOF],
-            ['trait',         Tokens::T_TRAIT],
-            ['__TRAIT__',     Tokens::T_TRAIT_C],
-
-            // PHP 5.3
-            ['__DIR__',       Tokens::T_DIR],
-            ['goto',          Tokens::T_GOTO],
-            ['namespace',     Tokens::T_NAMESPACE],
-            ['__NAMESPACE__', Tokens::T_NS_C],
-        ];
-    }
-
-    /**
-     * @dataProvider provideTestLexNewFeatures
-     */
-    public function testLexNewFeatures($code, array $expectedTokens) {
-        $lexer = $this->getLexer();
-        $lexer->startLexing('<?php ' . $code);
-
-        $tokens = [];
-        while (0 !== $token = $lexer->getNextToken($text)) {
-            $tokens[] = [$token, $text];
-        }
-        $this->assertSame($expectedTokens, $tokens);
-    }
-
-    /**
-     * @dataProvider provideTestLexNewFeatures
-     */
-    public function testLeaveStuffAloneInStrings($code) {
-        $stringifiedToken = '"' . addcslashes($code, '"\\') . '"';
-
-        $lexer = $this->getLexer();
-        $lexer->startLexing('<?php ' . $stringifiedToken);
-
-        $this->assertSame(Tokens::T_CONSTANT_ENCAPSED_STRING, $lexer->getNextToken($text));
-        $this->assertSame($stringifiedToken, $text);
-        $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'],
-            ]],
-            ["yield\r\nfrom", [
-                [Tokens::T_YIELD_FROM, "yield\r\nfrom"],
-            ]],
-            ['...', [
-                [Tokens::T_ELLIPSIS, '...'],
-            ]],
-            ['**', [
-                [Tokens::T_POW, '**'],
-            ]],
-            ['**=', [
-                [Tokens::T_POW_EQUAL, '**='],
-            ]],
-            ['??', [
-                [Tokens::T_COALESCE, '??'],
-            ]],
-            ['<=>', [
-                [Tokens::T_SPACESHIP, '<=>'],
-            ]],
-            ['0b1010110', [
-                [Tokens::T_LNUMBER, '0b1010110'],
-            ]],
-            ['0b1011010101001010110101010010101011010101010101101011001110111100', [
-                [Tokens::T_DNUMBER, '0b1011010101001010110101010010101011010101010101101011001110111100'],
-            ]],
-            ['\\', [
-                [Tokens::T_NS_SEPARATOR, '\\'],
-            ]],
-            ["<<<'NOWDOC'\nNOWDOC;\n", [
-                [Tokens::T_START_HEREDOC, "<<<'NOWDOC'\n"],
-                [Tokens::T_END_HEREDOC, 'NOWDOC'],
-                [ord(';'), ';'],
-            ]],
-            ["<<<'NOWDOC'\nFoobar\nNOWDOC;\n", [
-                [Tokens::T_START_HEREDOC, "<<<'NOWDOC'\n"],
-                [Tokens::T_ENCAPSED_AND_WHITESPACE, "Foobar\n"],
-                [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
deleted file mode 100644
index f24c64d512..0000000000
--- a/vendor/nikic/php-parser/test/PhpParser/LexerTest.php
+++ /dev/null
@@ -1,263 +0,0 @@
-<?php declare(strict_types=1);
-
-namespace PhpParser;
-
-use PhpParser\Parser\Tokens;
-
-class LexerTest extends \PHPUnit\Framework\TestCase
-{
-    /* To allow overwriting in parent class */
-    protected function getLexer(array $options = []) {
-        return new Lexer($options);
-    }
-
-    /**
-     * @dataProvider provideTestError
-     */
-    public function testError($code, $messages) {
-        if (defined('HHVM_VERSION')) {
-            $this->markTestSkipped('HHVM does not throw warnings from token_get_all()');
-        }
-
-        $errorHandler = new ErrorHandler\Collecting();
-        $lexer = $this->getLexer(['usedAttributes' => [
-            'comments', 'startLine', 'endLine', 'startFilePos', 'endFilePos'
-        ]]);
-        $lexer->startLexing($code, $errorHandler);
-        $errors = $errorHandler->getErrors();
-
-        $this->assertCount(count($messages), $errors);
-        for ($i = 0; $i < count($messages); $i++) {
-            $this->assertSame($messages[$i], $errors[$i]->getMessageWithColumnInfo($code));
-        }
-    }
-
-    public function provideTestError() {
-        return [
-            ["<?php /*", ["Unterminated comment from 1:7 to 1:9"]],
-            ["<?php \1", ["Unexpected character \"\1\" (ASCII 1) from 1:7 to 1:7"]],
-            ["<?php \0", ["Unexpected null byte from 1:7 to 1:7"]],
-            // Error with potentially emulated token
-            ["<?php ?? \0", ["Unexpected null byte from 1:10 to 1:10"]],
-            ["<?php\n\0\1 foo /* bar", [
-                "Unexpected null byte from 2:1 to 2:1",
-                "Unexpected character \"\1\" (ASCII 1) from 2:2 to 2:2",
-                "Unterminated comment from 2:8 to 2:14"
-            ]],
-        ];
-    }
-
-    /**
-     * @dataProvider provideTestLex
-     */
-    public function testLex($code, $options, $tokens) {
-        $lexer = $this->getLexer($options);
-        $lexer->startLexing($code);
-        while ($id = $lexer->getNextToken($value, $startAttributes, $endAttributes)) {
-            $token = array_shift($tokens);
-
-            $this->assertSame($token[0], $id);
-            $this->assertSame($token[1], $value);
-            $this->assertEquals($token[2], $startAttributes);
-            $this->assertEquals($token[3], $endAttributes);
-        }
-    }
-
-    public function provideTestLex() {
-        return [
-            // tests conversion of closing PHP tag and drop of whitespace and opening tags
-            [
-                '<?php tokens ?>plaintext',
-                [],
-                [
-                    [
-                        Tokens::T_STRING, 'tokens',
-                        ['startLine' => 1], ['endLine' => 1]
-                    ],
-                    [
-                        ord(';'), '?>',
-                        ['startLine' => 1], ['endLine' => 1]
-                    ],
-                    [
-                        Tokens::T_INLINE_HTML, 'plaintext',
-                        ['startLine' => 1, 'hasLeadingNewline' => false],
-                        ['endLine' => 1]
-                    ],
-                ]
-            ],
-            // tests line numbers
-            [
-                '<?php' . "\n" . '$ token /** doc' . "\n" . 'comment */ $',
-                [],
-                [
-                    [
-                        ord('$'), '$',
-                        ['startLine' => 2], ['endLine' => 2]
-                    ],
-                    [
-                        Tokens::T_STRING, 'token',
-                        ['startLine' => 2], ['endLine' => 2]
-                    ],
-                    [
-                        ord('$'), '$',
-                        [
-                            'startLine' => 3,
-                            'comments' => [
-                                new Comment\Doc('/** doc' . "\n" . 'comment */', 2, 14, 5),
-                            ]
-                        ],
-                        ['endLine' => 3]
-                    ],
-                ]
-            ],
-            // tests comment extraction
-            [
-                '<?php /* comment */ // comment' . "\n" . '/** docComment 1 *//** docComment 2 */ token',
-                [],
-                [
-                    [
-                        Tokens::T_STRING, 'token',
-                        [
-                            'startLine' => 2,
-                            'comments' => [
-                                new Comment('/* comment */', 1, 6, 1),
-                                new Comment('// comment' . "\n", 1, 20, 3),
-                                new Comment\Doc('/** docComment 1 */', 2, 31, 4),
-                                new Comment\Doc('/** docComment 2 */', 2, 50, 5),
-                            ],
-                        ],
-                        ['endLine' => 2]
-                    ],
-                ]
-            ],
-            // tests differing start and end line
-            [
-                '<?php "foo' . "\n" . 'bar"',
-                [],
-                [
-                    [
-                        Tokens::T_CONSTANT_ENCAPSED_STRING, '"foo' . "\n" . 'bar"',
-                        ['startLine' => 1], ['endLine' => 2]
-                    ],
-                ]
-            ],
-            // tests exact file offsets
-            [
-                '<?php "a";' . "\n" . '// foo' . "\n" . '"b";',
-                ['usedAttributes' => ['startFilePos', 'endFilePos']],
-                [
-                    [
-                        Tokens::T_CONSTANT_ENCAPSED_STRING, '"a"',
-                        ['startFilePos' => 6], ['endFilePos' => 8]
-                    ],
-                    [
-                        ord(';'), ';',
-                        ['startFilePos' => 9], ['endFilePos' => 9]
-                    ],
-                    [
-                        Tokens::T_CONSTANT_ENCAPSED_STRING, '"b"',
-                        ['startFilePos' => 18], ['endFilePos' => 20]
-                    ],
-                    [
-                        ord(';'), ';',
-                        ['startFilePos' => 21], ['endFilePos' => 21]
-                    ],
-                ]
-            ],
-            // tests token offsets
-            [
-                '<?php "a";' . "\n" . '// foo' . "\n" . '"b";',
-                ['usedAttributes' => ['startTokenPos', 'endTokenPos']],
-                [
-                    [
-                        Tokens::T_CONSTANT_ENCAPSED_STRING, '"a"',
-                        ['startTokenPos' => 1], ['endTokenPos' => 1]
-                    ],
-                    [
-                        ord(';'), ';',
-                        ['startTokenPos' => 2], ['endTokenPos' => 2]
-                    ],
-                    [
-                        Tokens::T_CONSTANT_ENCAPSED_STRING, '"b"',
-                        ['startTokenPos' => 5], ['endTokenPos' => 5]
-                    ],
-                    [
-                        ord(';'), ';',
-                        ['startTokenPos' => 6], ['endTokenPos' => 6]
-                    ],
-                ]
-            ],
-            // tests all attributes being disabled
-            [
-                '<?php /* foo */ $bar;',
-                ['usedAttributes' => []],
-                [
-                    [
-                        Tokens::T_VARIABLE, '$bar',
-                        [], []
-                    ],
-                    [
-                        ord(';'), ';',
-                        [], []
-                    ]
-                ]
-            ],
-            // tests no tokens
-            [
-                '',
-                [],
-                []
-            ],
-        ];
-    }
-
-    /**
-     * @dataProvider provideTestHaltCompiler
-     */
-    public function testHandleHaltCompiler($code, $remaining) {
-        $lexer = $this->getLexer();
-        $lexer->startLexing($code);
-
-        while (Tokens::T_HALT_COMPILER !== $lexer->getNextToken());
-
-        $this->assertSame($remaining, $lexer->handleHaltCompiler());
-        $this->assertSame(0, $lexer->getNextToken());
-    }
-
-    public function provideTestHaltCompiler() {
-        return [
-            ['<?php ... __halt_compiler();Remaining Text', 'Remaining Text'],
-            ['<?php ... __halt_compiler ( ) ;Remaining Text', 'Remaining Text'],
-            ['<?php ... __halt_compiler() ?>Remaining Text', 'Remaining Text'],
-            //array('<?php ... __halt_compiler();' . "\0", "\0"),
-            //array('<?php ... __halt_compiler /* */ ( ) ;Remaining Text', 'Remaining Text'),
-        ];
-    }
-
-    public function testHandleHaltCompilerError() {
-        $this->expectException(Error::class);
-        $this->expectExceptionMessage('__HALT_COMPILER must be followed by "();"');
-        $lexer = $this->getLexer();
-        $lexer->startLexing('<?php ... __halt_compiler invalid ();');
-
-        while (Tokens::T_HALT_COMPILER !== $lexer->getNextToken());
-        $lexer->handleHaltCompiler();
-    }
-
-    public function testGetTokens() {
-        $code = '<?php "a";' . "\n" . '// foo' . "\n" . '"b";';
-        $expectedTokens = [
-            [T_OPEN_TAG, '<?php ', 1],
-            [T_CONSTANT_ENCAPSED_STRING, '"a"', 1],
-            ';',
-            [T_WHITESPACE, "\n", 1],
-            [T_COMMENT, '// foo' . "\n", 2],
-            [T_CONSTANT_ENCAPSED_STRING, '"b"', 3],
-            ';',
-        ];
-
-        $lexer = $this->getLexer();
-        $lexer->startLexing($code);
-        $this->assertSame($expectedTokens, $lexer->getTokens());
-    }
-}
diff --git a/vendor/nikic/php-parser/test/PhpParser/NameContextTest.php b/vendor/nikic/php-parser/test/PhpParser/NameContextTest.php
deleted file mode 100644
index ee8458b67e..0000000000
--- a/vendor/nikic/php-parser/test/PhpParser/NameContextTest.php
+++ /dev/null
@@ -1,65 +0,0 @@
-<?php declare(strict_types=1);
-
-namespace PhpParser;
-
-use PhpParser\Node\Name;
-use PhpParser\Node\Stmt\Use_;
-
-class NameContextTest extends \PHPUnit\Framework\TestCase
-{
-    /**
-     * @dataProvider provideTestGetPossibleNames
-     */
-    public function testGetPossibleNames($type, $name, $expectedPossibleNames) {
-        $nameContext = new NameContext(new ErrorHandler\Throwing());
-        $nameContext->startNamespace(new Name('NS'));
-        $nameContext->addAlias(new Name('Foo'), 'Foo', Use_::TYPE_NORMAL);
-        $nameContext->addAlias(new Name('Foo\Bar'), 'Alias', Use_::TYPE_NORMAL);
-        $nameContext->addAlias(new Name('Foo\fn'), 'fn', Use_::TYPE_FUNCTION);
-        $nameContext->addAlias(new Name('Foo\CN'), 'CN', Use_::TYPE_CONSTANT);
-
-        $possibleNames = $nameContext->getPossibleNames($name, $type);
-        $possibleNames = array_map(function (Name $name) {
-            return $name->toCodeString();
-        }, $possibleNames);
-
-        $this->assertSame($expectedPossibleNames, $possibleNames);
-
-        // Here the last name is always the shortest one
-        $expectedShortName = $expectedPossibleNames[count($expectedPossibleNames) - 1];
-        $this->assertSame(
-            $expectedShortName,
-            $nameContext->getShortName($name, $type)->toCodeString()
-        );
-    }
-
-    public function provideTestGetPossibleNames() {
-        return [
-            [Use_::TYPE_NORMAL, 'Test', ['\Test']],
-            [Use_::TYPE_NORMAL, 'Test\Namespaced', ['\Test\Namespaced']],
-            [Use_::TYPE_NORMAL, 'NS\Test', ['\NS\Test', 'Test']],
-            [Use_::TYPE_NORMAL, 'ns\Test', ['\ns\Test', 'Test']],
-            [Use_::TYPE_NORMAL, 'NS\Foo\Bar', ['\NS\Foo\Bar']],
-            [Use_::TYPE_NORMAL, 'ns\foo\Bar', ['\ns\foo\Bar']],
-            [Use_::TYPE_NORMAL, 'Foo', ['\Foo', 'Foo']],
-            [Use_::TYPE_NORMAL, 'Foo\Bar', ['\Foo\Bar', 'Foo\Bar', 'Alias']],
-            [Use_::TYPE_NORMAL, 'Foo\Bar\Baz', ['\Foo\Bar\Baz', 'Foo\Bar\Baz', 'Alias\Baz']],
-            [Use_::TYPE_NORMAL, 'Foo\fn\Bar', ['\Foo\fn\Bar', 'Foo\fn\Bar']],
-            [Use_::TYPE_FUNCTION, 'Foo\fn\bar', ['\Foo\fn\bar', 'Foo\fn\bar']],
-            [Use_::TYPE_FUNCTION, 'Foo\fn', ['\Foo\fn', 'Foo\fn', 'fn']],
-            [Use_::TYPE_FUNCTION, 'Foo\FN', ['\Foo\FN', 'Foo\FN', 'fn']],
-            [Use_::TYPE_CONSTANT, 'Foo\CN\BAR', ['\Foo\CN\BAR', 'Foo\CN\BAR']],
-            [Use_::TYPE_CONSTANT, 'Foo\CN', ['\Foo\CN', 'Foo\CN', 'CN']],
-            [Use_::TYPE_CONSTANT, 'foo\CN', ['\foo\CN', 'Foo\CN', 'CN']],
-            [Use_::TYPE_CONSTANT, 'foo\cn', ['\foo\cn', 'Foo\cn']],
-            // self/parent/static must not be fully qualified
-            [Use_::TYPE_NORMAL, 'self', ['self']],
-            [Use_::TYPE_NORMAL, 'parent', ['parent']],
-            [Use_::TYPE_NORMAL, 'static', ['static']],
-            // true/false/null do not need to be fully qualified, even in namespaces
-            [Use_::TYPE_CONSTANT, 'true', ['\true', 'true']],
-            [Use_::TYPE_CONSTANT, 'false', ['\false', 'false']],
-            [Use_::TYPE_CONSTANT, 'null', ['\null', 'null']],
-        ];
-    }
-}
diff --git a/vendor/nikic/php-parser/test/PhpParser/Node/IdentifierTest.php b/vendor/nikic/php-parser/test/PhpParser/Node/IdentifierTest.php
deleted file mode 100644
index 2bd58fc8d0..0000000000
--- a/vendor/nikic/php-parser/test/PhpParser/Node/IdentifierTest.php
+++ /dev/null
@@ -1,29 +0,0 @@
-<?php declare(strict_types=1);
-
-namespace PhpParser\Node;
-
-class IdentifierTest extends \PHPUnit\Framework\TestCase
-{
-    public function testToString() {
-        $identifier = new Identifier('Foo');
-
-        $this->assertSame('Foo', (string) $identifier);
-        $this->assertSame('Foo', $identifier->toString());
-        $this->assertSame('foo', $identifier->toLowerString());
-    }
-
-    /** @dataProvider provideTestIsSpecialClassName */
-    public function testIsSpecialClassName($identifier, $expected) {
-        $identifier = new Identifier($identifier);
-        $this->assertSame($expected, $identifier->isSpecialClassName());
-    }
-
-    public function provideTestIsSpecialClassName() {
-        return [
-            ['self', true],
-            ['PARENT', true],
-            ['Static', true],
-            ['other', false],
-        ];
-    }
-}
diff --git a/vendor/nikic/php-parser/test/PhpParser/Node/NameTest.php b/vendor/nikic/php-parser/test/PhpParser/Node/NameTest.php
deleted file mode 100644
index 5e69ebba3c..0000000000
--- a/vendor/nikic/php-parser/test/PhpParser/Node/NameTest.php
+++ /dev/null
@@ -1,157 +0,0 @@
-<?php declare(strict_types=1);
-
-namespace PhpParser\Node;
-
-class NameTest extends \PHPUnit\Framework\TestCase
-{
-    public function testConstruct() {
-        $name = new Name(['foo', 'bar']);
-        $this->assertSame(['foo', 'bar'], $name->parts);
-
-        $name = new Name('foo\bar');
-        $this->assertSame(['foo', 'bar'], $name->parts);
-
-        $name = new Name($name);
-        $this->assertSame(['foo', 'bar'], $name->parts);
-    }
-
-    public function testGet() {
-        $name = new Name('foo');
-        $this->assertSame('foo', $name->getFirst());
-        $this->assertSame('foo', $name->getLast());
-
-        $name = new Name('foo\bar');
-        $this->assertSame('foo', $name->getFirst());
-        $this->assertSame('bar', $name->getLast());
-    }
-
-    public function testToString() {
-        $name = new Name('Foo\Bar');
-
-        $this->assertSame('Foo\Bar', (string) $name);
-        $this->assertSame('Foo\Bar', $name->toString());
-        $this->assertSame('foo\bar', $name->toLowerString());
-    }
-
-    public function testSlice() {
-        $name = new Name('foo\bar\baz');
-        $this->assertEquals(new Name('foo\bar\baz'), $name->slice(0));
-        $this->assertEquals(new Name('bar\baz'), $name->slice(1));
-        $this->assertNull($name->slice(3));
-        $this->assertEquals(new Name('foo\bar\baz'), $name->slice(-3));
-        $this->assertEquals(new Name('bar\baz'), $name->slice(-2));
-        $this->assertEquals(new Name('foo\bar'), $name->slice(0, -1));
-        $this->assertNull($name->slice(0, -3));
-        $this->assertEquals(new Name('bar'), $name->slice(1, -1));
-        $this->assertNull($name->slice(1, -2));
-        $this->assertEquals(new Name('bar'), $name->slice(-2, 1));
-        $this->assertEquals(new Name('bar'), $name->slice(-2, -1));
-        $this->assertNull($name->slice(-2, -2));
-    }
-
-    public function testSliceOffsetTooLarge() {
-        $this->expectException(\OutOfBoundsException::class);
-        $this->expectExceptionMessage('Offset 4 is out of bounds');
-        (new Name('foo\bar\baz'))->slice(4);
-    }
-
-    public function testSliceOffsetTooSmall() {
-        $this->expectException(\OutOfBoundsException::class);
-        $this->expectExceptionMessage('Offset -4 is out of bounds');
-        (new Name('foo\bar\baz'))->slice(-4);
-    }
-
-    public function testSliceLengthTooLarge() {
-        $this->expectException(\OutOfBoundsException::class);
-        $this->expectExceptionMessage('Length 4 is out of bounds');
-        (new Name('foo\bar\baz'))->slice(0, 4);
-    }
-
-    public function testSliceLengthTooSmall() {
-        $this->expectException(\OutOfBoundsException::class);
-        $this->expectExceptionMessage('Length -4 is out of bounds');
-        (new Name('foo\bar\baz'))->slice(0, -4);
-    }
-
-    public function testConcat() {
-        $this->assertEquals(new Name('foo\bar\baz'), Name::concat('foo', 'bar\baz'));
-        $this->assertEquals(
-            new Name\FullyQualified('foo\bar'),
-            Name\FullyQualified::concat(['foo'], new Name('bar'))
-        );
-
-        $attributes = ['foo' => 'bar'];
-        $this->assertEquals(
-            new Name\Relative('foo\bar\baz', $attributes),
-            Name\Relative::concat(new Name\FullyQualified('foo\bar'), 'baz', $attributes)
-        );
-
-        $this->assertEquals(new Name('foo'), Name::concat(null, 'foo'));
-        $this->assertEquals(new Name('foo'), Name::concat('foo', null));
-        $this->assertNull(Name::concat(null, null));
-    }
-
-    public function testNameTypes() {
-        $name = new Name('foo');
-        $this->assertTrue($name->isUnqualified());
-        $this->assertFalse($name->isQualified());
-        $this->assertFalse($name->isFullyQualified());
-        $this->assertFalse($name->isRelative());
-        $this->assertSame('foo', $name->toCodeString());
-
-        $name = new Name('foo\bar');
-        $this->assertFalse($name->isUnqualified());
-        $this->assertTrue($name->isQualified());
-        $this->assertFalse($name->isFullyQualified());
-        $this->assertFalse($name->isRelative());
-        $this->assertSame('foo\bar', $name->toCodeString());
-
-        $name = new Name\FullyQualified('foo');
-        $this->assertFalse($name->isUnqualified());
-        $this->assertFalse($name->isQualified());
-        $this->assertTrue($name->isFullyQualified());
-        $this->assertFalse($name->isRelative());
-        $this->assertSame('\foo', $name->toCodeString());
-
-        $name = new Name\Relative('foo');
-        $this->assertFalse($name->isUnqualified());
-        $this->assertFalse($name->isQualified());
-        $this->assertFalse($name->isFullyQualified());
-        $this->assertTrue($name->isRelative());
-        $this->assertSame('namespace\foo', $name->toCodeString());
-    }
-
-    public function testInvalidArg() {
-        $this->expectException(\InvalidArgumentException::class);
-        $this->expectExceptionMessage('Expected string, array of parts or Name instance');
-        Name::concat('foo', new \stdClass);
-    }
-
-    public function testInvalidEmptyString() {
-        $this->expectException(\InvalidArgumentException::class);
-        $this->expectExceptionMessage('Name cannot be empty');
-        new Name('');
-    }
-
-    public function testInvalidEmptyArray() {
-        $this->expectException(\InvalidArgumentException::class);
-        $this->expectExceptionMessage('Name cannot be empty');
-        new Name([]);
-    }
-
-    /** @dataProvider provideTestIsSpecialClassName */
-    public function testIsSpecialClassName($name, $expected) {
-        $name = new Name($name);
-        $this->assertSame($expected, $name->isSpecialClassName());
-    }
-
-    public function provideTestIsSpecialClassName() {
-        return [
-            ['self', true],
-            ['PARENT', true],
-            ['Static', true],
-            ['self\not', false],
-            ['not\self', false],
-        ];
-    }
-}
diff --git a/vendor/nikic/php-parser/test/PhpParser/Node/Scalar/MagicConstTest.php b/vendor/nikic/php-parser/test/PhpParser/Node/Scalar/MagicConstTest.php
deleted file mode 100644
index c8ae433b00..0000000000
--- a/vendor/nikic/php-parser/test/PhpParser/Node/Scalar/MagicConstTest.php
+++ /dev/null
@@ -1,26 +0,0 @@
-<?php declare(strict_types=1);
-
-namespace PhpParser\Node\Scalar;
-
-class MagicConstTest extends \PHPUnit\Framework\TestCase
-{
-    /**
-     * @dataProvider provideTestGetName
-     */
-    public function testGetName(MagicConst $magicConst, $name) {
-        $this->assertSame($name, $magicConst->getName());
-    }
-
-    public function provideTestGetName() {
-        return [
-            [new MagicConst\Class_, '__CLASS__'],
-            [new MagicConst\Dir, '__DIR__'],
-            [new MagicConst\File, '__FILE__'],
-            [new MagicConst\Function_, '__FUNCTION__'],
-            [new MagicConst\Line, '__LINE__'],
-            [new MagicConst\Method, '__METHOD__'],
-            [new MagicConst\Namespace_, '__NAMESPACE__'],
-            [new MagicConst\Trait_, '__TRAIT__'],
-        ];
-    }
-}
diff --git a/vendor/nikic/php-parser/test/PhpParser/Node/Scalar/StringTest.php b/vendor/nikic/php-parser/test/PhpParser/Node/Scalar/StringTest.php
deleted file mode 100644
index 814a7758fc..0000000000
--- a/vendor/nikic/php-parser/test/PhpParser/Node/Scalar/StringTest.php
+++ /dev/null
@@ -1,61 +0,0 @@
-<?php declare(strict_types=1);
-
-namespace PhpParser\Node\Scalar;
-
-class StringTest extends \PHPUnit\Framework\TestCase
-{
-    /**
-     * @dataProvider provideTestParseEscapeSequences
-     */
-    public function testParseEscapeSequences($expected, $string, $quote) {
-        $this->assertSame(
-            $expected,
-            String_::parseEscapeSequences($string, $quote)
-        );
-    }
-
-    /**
-     * @dataProvider provideTestParse
-     */
-    public function testCreate($expected, $string) {
-        $this->assertSame(
-            $expected,
-            String_::parse($string)
-        );
-    }
-
-    public function provideTestParseEscapeSequences() {
-        return [
-            ['"',              '\\"',              '"'],
-            ['\\"',            '\\"',              '`'],
-            ['\\"\\`',         '\\"\\`',           null],
-            ["\\\$\n\r\t\f\v", '\\\\\$\n\r\t\f\v', null],
-            ["\x1B",           '\e',               null],
-            [chr(255),         '\xFF',             null],
-            [chr(255),         '\377',             null],
-            [chr(0),           '\400',             null],
-            ["\0",             '\0',               null],
-            ['\xFF',           '\\\\xFF',          null],
-        ];
-    }
-
-    public function provideTestParse() {
-        $tests = [
-            ['A', '\'A\''],
-            ['A', 'b\'A\''],
-            ['A', '"A"'],
-            ['A', 'b"A"'],
-            ['\\', '\'\\\\\''],
-            ['\'', '\'\\\'\''],
-        ];
-
-        foreach ($this->provideTestParseEscapeSequences() as $i => $test) {
-            // skip second and third tests, they aren't for double quotes
-            if ($i !== 1 && $i !== 2) {
-                $tests[] = [$test[0], '"' . $test[1] . '"'];
-            }
-        }
-
-        return $tests;
-    }
-}
diff --git a/vendor/nikic/php-parser/test/PhpParser/Node/Stmt/ClassConstTest.php b/vendor/nikic/php-parser/test/PhpParser/Node/Stmt/ClassConstTest.php
deleted file mode 100644
index 9a1b4697ca..0000000000
--- a/vendor/nikic/php-parser/test/PhpParser/Node/Stmt/ClassConstTest.php
+++ /dev/null
@@ -1,34 +0,0 @@
-<?php declare(strict_types=1);
-
-namespace PhpParser\Node\Stmt;
-
-class ClassConstTest extends \PHPUnit\Framework\TestCase
-{
-    /**
-     * @dataProvider provideModifiers
-     */
-    public function testModifiers($modifier) {
-        $node = new ClassConst(
-            [], // invalid
-            constant('PhpParser\Node\Stmt\Class_::MODIFIER_' . strtoupper($modifier))
-        );
-
-        $this->assertTrue($node->{'is' . $modifier}());
-    }
-
-    public function testNoModifiers() {
-        $node = new ClassConst([], 0);
-
-        $this->assertTrue($node->isPublic());
-        $this->assertFalse($node->isProtected());
-        $this->assertFalse($node->isPrivate());
-    }
-
-    public function provideModifiers() {
-        return [
-            ['public'],
-            ['protected'],
-            ['private'],
-        ];
-    }
-}
diff --git a/vendor/nikic/php-parser/test/PhpParser/Node/Stmt/ClassMethodTest.php b/vendor/nikic/php-parser/test/PhpParser/Node/Stmt/ClassMethodTest.php
deleted file mode 100644
index 51c5f1c2cf..0000000000
--- a/vendor/nikic/php-parser/test/PhpParser/Node/Stmt/ClassMethodTest.php
+++ /dev/null
@@ -1,123 +0,0 @@
-<?php declare(strict_types=1);
-
-namespace PhpParser\Node\Stmt;
-
-use PhpParser\Node\Expr\Variable;
-use PhpParser\Node\Name;
-use PhpParser\Node\Param;
-
-class ClassMethodTest extends \PHPUnit\Framework\TestCase
-{
-    /**
-     * @dataProvider provideModifiers
-     */
-    public function testModifiers($modifier) {
-        $node = new ClassMethod('foo', [
-            'type' => constant('PhpParser\Node\Stmt\Class_::MODIFIER_' . strtoupper($modifier))
-        ]);
-
-        $this->assertTrue($node->{'is' . $modifier}());
-    }
-
-    public function testNoModifiers() {
-        $node = new ClassMethod('foo', ['type' => 0]);
-
-        $this->assertTrue($node->isPublic());
-        $this->assertFalse($node->isProtected());
-        $this->assertFalse($node->isPrivate());
-        $this->assertFalse($node->isAbstract());
-        $this->assertFalse($node->isFinal());
-        $this->assertFalse($node->isStatic());
-        $this->assertFalse($node->isMagic());
-    }
-
-    public function provideModifiers() {
-        return [
-            ['public'],
-            ['protected'],
-            ['private'],
-            ['abstract'],
-            ['final'],
-            ['static'],
-        ];
-    }
-
-    /**
-     * Checks that implicit public modifier detection for method is working
-     *
-     * @dataProvider implicitPublicModifiers
-     *
-     * @param string $modifier Node type modifier
-     */
-    public function testImplicitPublic(string $modifier)
-    {
-        $node = new ClassMethod('foo', [
-            'type' => constant('PhpParser\Node\Stmt\Class_::MODIFIER_' . strtoupper($modifier))
-        ]);
-
-        $this->assertTrue($node->isPublic(), 'Node should be implicitly public');
-    }
-
-    public function implicitPublicModifiers() {
-        return [
-            ['abstract'],
-            ['final'],
-            ['static'],
-        ];
-    }
-
-    /**
-     * @dataProvider provideMagics
-     *
-     * @param string $name Node name
-     */
-    public function testMagic(string $name) {
-        $node = new ClassMethod($name);
-        $this->assertTrue($node->isMagic(), 'Method should be magic');
-    }
-
-    public function provideMagics() {
-        return [
-             ['__construct'],
-             ['__DESTRUCT'],
-             ['__caLL'],
-             ['__callstatic'],
-             ['__get'],
-             ['__set'],
-             ['__isset'],
-             ['__unset'],
-             ['__sleep'],
-             ['__wakeup'],
-             ['__tostring'],
-             ['__set_state'],
-             ['__clone'],
-             ['__invoke'],
-             ['__debuginfo'],
-        ];
-    }
-
-    public function testFunctionLike() {
-        $param = new Param(new Variable('a'));
-        $type = new Name('Foo');
-        $return = new Return_(new Variable('a'));
-        $method = new ClassMethod('test', [
-            'byRef' => false,
-            'params' => [$param],
-            'returnType' => $type,
-            'stmts' => [$return],
-        ]);
-
-        $this->assertFalse($method->returnsByRef());
-        $this->assertSame([$param], $method->getParams());
-        $this->assertSame($type, $method->getReturnType());
-        $this->assertSame([$return], $method->getStmts());
-
-        $method = new ClassMethod('test', [
-            'byRef' => true,
-            'stmts' => null,
-        ]);
-
-        $this->assertTrue($method->returnsByRef());
-        $this->assertNull($method->getStmts());
-    }
-}
diff --git a/vendor/nikic/php-parser/test/PhpParser/Node/Stmt/ClassTest.php b/vendor/nikic/php-parser/test/PhpParser/Node/Stmt/ClassTest.php
deleted file mode 100644
index 9b7c7de1cc..0000000000
--- a/vendor/nikic/php-parser/test/PhpParser/Node/Stmt/ClassTest.php
+++ /dev/null
@@ -1,59 +0,0 @@
-<?php declare(strict_types=1);
-
-namespace PhpParser\Node\Stmt;
-
-class ClassTest extends \PHPUnit\Framework\TestCase
-{
-    public function testIsAbstract() {
-        $class = new Class_('Foo', ['type' => Class_::MODIFIER_ABSTRACT]);
-        $this->assertTrue($class->isAbstract());
-
-        $class = new Class_('Foo');
-        $this->assertFalse($class->isAbstract());
-    }
-
-    public function testIsFinal() {
-        $class = new Class_('Foo', ['type' => Class_::MODIFIER_FINAL]);
-        $this->assertTrue($class->isFinal());
-
-        $class = new Class_('Foo');
-        $this->assertFalse($class->isFinal());
-    }
-
-    public function testGetMethods() {
-        $methods = [
-            new ClassMethod('foo'),
-            new ClassMethod('bar'),
-            new ClassMethod('fooBar'),
-        ];
-        $class = new Class_('Foo', [
-            'stmts' => [
-                new TraitUse([]),
-                $methods[0],
-                new ClassConst([]),
-                $methods[1],
-                new Property(0, []),
-                $methods[2],
-            ]
-        ]);
-
-        $this->assertSame($methods, $class->getMethods());
-    }
-
-    public function testGetMethod() {
-        $methodConstruct = new ClassMethod('__CONSTRUCT');
-        $methodTest = new ClassMethod('test');
-        $class = new Class_('Foo', [
-            'stmts' => [
-                new ClassConst([]),
-                $methodConstruct,
-                new Property(0, []),
-                $methodTest,
-            ]
-        ]);
-
-        $this->assertSame($methodConstruct, $class->getMethod('__construct'));
-        $this->assertSame($methodTest, $class->getMethod('test'));
-        $this->assertNull($class->getMethod('nonExisting'));
-    }
-}
diff --git a/vendor/nikic/php-parser/test/PhpParser/Node/Stmt/InterfaceTest.php b/vendor/nikic/php-parser/test/PhpParser/Node/Stmt/InterfaceTest.php
deleted file mode 100644
index da6e8eb6fe..0000000000
--- a/vendor/nikic/php-parser/test/PhpParser/Node/Stmt/InterfaceTest.php
+++ /dev/null
@@ -1,26 +0,0 @@
-<?php declare(strict_types=1);
-
-namespace PhpParser\Node\Stmt;
-
-use PhpParser\Node;
-
-class InterfaceTest extends \PHPUnit\Framework\TestCase
-{
-    public function testGetMethods() {
-        $methods = [
-            new ClassMethod('foo'),
-            new ClassMethod('bar'),
-        ];
-        $interface = new Class_('Foo', [
-            'stmts' => [
-                new Node\Stmt\ClassConst([new Node\Const_('C1', new Node\Scalar\String_('C1'))]),
-                $methods[0],
-                new Node\Stmt\ClassConst([new Node\Const_('C2', new Node\Scalar\String_('C2'))]),
-                $methods[1],
-                new Node\Stmt\ClassConst([new Node\Const_('C3', new Node\Scalar\String_('C3'))]),
-            ]
-        ]);
-
-        $this->assertSame($methods, $interface->getMethods());
-    }
-}
diff --git a/vendor/nikic/php-parser/test/PhpParser/Node/Stmt/PropertyTest.php b/vendor/nikic/php-parser/test/PhpParser/Node/Stmt/PropertyTest.php
deleted file mode 100644
index e5d69fba5d..0000000000
--- a/vendor/nikic/php-parser/test/PhpParser/Node/Stmt/PropertyTest.php
+++ /dev/null
@@ -1,44 +0,0 @@
-<?php declare(strict_types=1);
-
-namespace PhpParser\Node\Stmt;
-
-class PropertyTest extends \PHPUnit\Framework\TestCase
-{
-    /**
-     * @dataProvider provideModifiers
-     */
-    public function testModifiers($modifier) {
-        $node = new Property(
-            constant('PhpParser\Node\Stmt\Class_::MODIFIER_' . strtoupper($modifier)),
-            [] // invalid
-        );
-
-        $this->assertTrue($node->{'is' . $modifier}());
-    }
-
-    public function testNoModifiers() {
-        $node = new Property(0, []);
-
-        $this->assertTrue($node->isPublic());
-        $this->assertFalse($node->isProtected());
-        $this->assertFalse($node->isPrivate());
-        $this->assertFalse($node->isStatic());
-    }
-
-    public function testStaticImplicitlyPublic() {
-        $node = new Property(Class_::MODIFIER_STATIC, []);
-        $this->assertTrue($node->isPublic());
-        $this->assertFalse($node->isProtected());
-        $this->assertFalse($node->isPrivate());
-        $this->assertTrue($node->isStatic());
-    }
-
-    public function provideModifiers() {
-        return [
-            ['public'],
-            ['protected'],
-            ['private'],
-            ['static'],
-        ];
-    }
-}
diff --git a/vendor/nikic/php-parser/test/PhpParser/NodeAbstractTest.php b/vendor/nikic/php-parser/test/PhpParser/NodeAbstractTest.php
deleted file mode 100644
index 071b8f2a3a..0000000000
--- a/vendor/nikic/php-parser/test/PhpParser/NodeAbstractTest.php
+++ /dev/null
@@ -1,325 +0,0 @@
-<?php declare(strict_types=1);
-
-namespace PhpParser;
-
-class DummyNode extends NodeAbstract
-{
-    public $subNode1;
-    public $subNode2;
-
-    public function __construct($subNode1, $subNode2, $attributes) {
-        parent::__construct($attributes);
-        $this->subNode1 = $subNode1;
-        $this->subNode2 = $subNode2;
-    }
-
-    public function getSubNodeNames() : array {
-        return ['subNode1', 'subNode2'];
-    }
-
-    // This method is only overwritten because the node is located in an unusual namespace
-    public function getType() : string {
-        return 'Dummy';
-    }
-}
-
-class NodeAbstractTest extends \PHPUnit\Framework\TestCase
-{
-    public function provideNodes() {
-        $attributes = [
-            'startLine' => 10,
-            'endLine' => 11,
-            'startTokenPos' => 12,
-            'endTokenPos' => 13,
-            'startFilePos' => 14,
-            'endFilePos' => 15,
-            'comments'  => [
-                new Comment('// Comment' . "\n"),
-                new Comment\Doc('/** doc comment */'),
-            ],
-        ];
-
-        $node = new DummyNode('value1', 'value2', $attributes);
-        $node->notSubNode = 'value3';
-
-        return [
-            [$attributes, $node],
-        ];
-    }
-
-    /**
-     * @dataProvider provideNodes
-     */
-    public function testConstruct(array $attributes, Node $node) {
-        $this->assertSame('Dummy', $node->getType());
-        $this->assertSame(['subNode1', 'subNode2'], $node->getSubNodeNames());
-        $this->assertSame(10, $node->getLine());
-        $this->assertSame(10, $node->getStartLine());
-        $this->assertSame(11, $node->getEndLine());
-        $this->assertSame(12, $node->getStartTokenPos());
-        $this->assertSame(13, $node->getEndTokenPos());
-        $this->assertSame(14, $node->getStartFilePos());
-        $this->assertSame(15, $node->getEndFilePos());
-        $this->assertSame('/** doc comment */', $node->getDocComment()->getText());
-        $this->assertSame('value1', $node->subNode1);
-        $this->assertSame('value2', $node->subNode2);
-        $this->assertObjectHasAttribute('subNode1', $node);
-        $this->assertObjectHasAttribute('subNode2', $node);
-        $this->assertObjectNotHasAttribute('subNode3', $node);
-        $this->assertSame($attributes, $node->getAttributes());
-        $this->assertSame($attributes['comments'], $node->getComments());
-
-        return $node;
-    }
-
-    /**
-     * @dataProvider provideNodes
-     */
-    public function testGetDocComment(array $attributes, Node $node) {
-        $this->assertSame('/** doc comment */', $node->getDocComment()->getText());
-        $comments = $node->getComments();
-
-        array_pop($comments); // remove doc comment
-        $node->setAttribute('comments', $comments);
-        $this->assertNull($node->getDocComment());
-
-        array_pop($comments); // remove comment
-        $node->setAttribute('comments', $comments);
-        $this->assertNull($node->getDocComment());
-    }
-
-    public function testSetDocComment() {
-        $node = new DummyNode(null, null, []);
-
-        // Add doc comment to node without comments
-        $docComment = new Comment\Doc('/** doc */');
-        $node->setDocComment($docComment);
-        $this->assertSame($docComment, $node->getDocComment());
-
-        // Replace it
-        $docComment = new Comment\Doc('/** doc 2 */');
-        $node->setDocComment($docComment);
-        $this->assertSame($docComment, $node->getDocComment());
-
-        // Add docmment to node with other comments
-        $c1 = new Comment('/* foo */');
-        $c2 = new Comment('/* bar */');
-        $docComment = new Comment\Doc('/** baz */');
-        $node->setAttribute('comments', [$c1, $c2]);
-        $node->setDocComment($docComment);
-        $this->assertSame([$c1, $c2, $docComment], $node->getAttribute('comments'));
-    }
-
-    /**
-     * @dataProvider provideNodes
-     */
-    public function testChange(array $attributes, Node $node) {
-        // direct modification
-        $node->subNode = 'newValue';
-        $this->assertSame('newValue', $node->subNode);
-
-        // indirect modification
-        $subNode =& $node->subNode;
-        $subNode = 'newNewValue';
-        $this->assertSame('newNewValue', $node->subNode);
-
-        // removal
-        unset($node->subNode);
-        $this->assertObjectNotHasAttribute('subNode', $node);
-    }
-
-    /**
-     * @dataProvider provideNodes
-     */
-    public function testIteration(array $attributes, Node $node) {
-        // Iteration is simple object iteration over properties,
-        // not over subnodes
-        $i = 0;
-        foreach ($node as $key => $value) {
-            if ($i === 0) {
-                $this->assertSame('subNode1', $key);
-                $this->assertSame('value1', $value);
-            } elseif ($i === 1) {
-                $this->assertSame('subNode2', $key);
-                $this->assertSame('value2', $value);
-            } elseif ($i === 2) {
-                $this->assertSame('notSubNode', $key);
-                $this->assertSame('value3', $value);
-            } else {
-                throw new \Exception;
-            }
-            $i++;
-        }
-        $this->assertSame(3, $i);
-    }
-
-    public function testAttributes() {
-        /** @var $node Node */
-        $node = $this->getMockForAbstractClass(NodeAbstract::class);
-
-        $this->assertEmpty($node->getAttributes());
-
-        $node->setAttribute('key', 'value');
-        $this->assertTrue($node->hasAttribute('key'));
-        $this->assertSame('value', $node->getAttribute('key'));
-
-        $this->assertFalse($node->hasAttribute('doesNotExist'));
-        $this->assertNull($node->getAttribute('doesNotExist'));
-        $this->assertSame('default', $node->getAttribute('doesNotExist', 'default'));
-
-        $node->setAttribute('null', null);
-        $this->assertTrue($node->hasAttribute('null'));
-        $this->assertNull($node->getAttribute('null'));
-        $this->assertNull($node->getAttribute('null', 'default'));
-
-        $this->assertSame(
-            [
-                'key'  => 'value',
-                'null' => null,
-            ],
-            $node->getAttributes()
-        );
-
-        $node->setAttributes(
-            [
-                'a' => 'b',
-                'c' => null,
-            ]
-        );
-        $this->assertSame(
-            [
-                'a' => 'b',
-                'c' => null,
-            ],
-            $node->getAttributes()
-        );
-    }
-
-    public function testJsonSerialization() {
-        $code = <<<'PHP'
-<?php
-// comment
-/** doc comment */
-function functionName(&$a = 0, $b = 1.0) {
-    echo 'Foo';
-}
-PHP;
-        $expected = <<<'JSON'
-[
-    {
-        "nodeType": "Stmt_Function",
-        "byRef": false,
-        "name": {
-            "nodeType": "Identifier",
-            "name": "functionName",
-            "attributes": {
-                "startLine": 4,
-                "endLine": 4
-            }
-        },
-        "params": [
-            {
-                "nodeType": "Param",
-                "type": null,
-                "byRef": true,
-                "variadic": false,
-                "var": {
-                    "nodeType": "Expr_Variable",
-                    "name": "a",
-                    "attributes": {
-                        "startLine": 4,
-                        "endLine": 4
-                    }
-                },
-                "default": {
-                    "nodeType": "Scalar_LNumber",
-                    "value": 0,
-                    "attributes": {
-                        "startLine": 4,
-                        "endLine": 4,
-                        "kind": 10
-                    }
-                },
-                "attributes": {
-                    "startLine": 4,
-                    "endLine": 4
-                }
-            },
-            {
-                "nodeType": "Param",
-                "type": null,
-                "byRef": false,
-                "variadic": false,
-                "var": {
-                    "nodeType": "Expr_Variable",
-                    "name": "b",
-                    "attributes": {
-                        "startLine": 4,
-                        "endLine": 4
-                    }
-                },
-                "default": {
-                    "nodeType": "Scalar_DNumber",
-                    "value": 1,
-                    "attributes": {
-                        "startLine": 4,
-                        "endLine": 4
-                    }
-                },
-                "attributes": {
-                    "startLine": 4,
-                    "endLine": 4
-                }
-            }
-        ],
-        "returnType": null,
-        "stmts": [
-            {
-                "nodeType": "Stmt_Echo",
-                "exprs": [
-                    {
-                        "nodeType": "Scalar_String",
-                        "value": "Foo",
-                        "attributes": {
-                            "startLine": 5,
-                            "endLine": 5,
-                            "kind": 1
-                        }
-                    }
-                ],
-                "attributes": {
-                    "startLine": 5,
-                    "endLine": 5
-                }
-            }
-        ],
-        "attributes": {
-            "startLine": 4,
-            "comments": [
-                {
-                    "nodeType": "Comment",
-                    "text": "\/\/ comment\n",
-                    "line": 2,
-                    "filePos": 6,
-                    "tokenPos": 1
-                },
-                {
-                    "nodeType": "Comment_Doc",
-                    "text": "\/** doc comment *\/",
-                    "line": 3,
-                    "filePos": 17,
-                    "tokenPos": 2
-                }
-            ],
-            "endLine": 6
-        }
-    }
-]
-JSON;
-
-        $parser = new Parser\Php7(new Lexer());
-        $stmts = $parser->parse(canonicalize($code));
-        $json = json_encode($stmts, JSON_PRETTY_PRINT);
-        $this->assertEquals(canonicalize($expected), canonicalize($json));
-    }
-}
diff --git a/vendor/nikic/php-parser/test/PhpParser/NodeDumperTest.php b/vendor/nikic/php-parser/test/PhpParser/NodeDumperTest.php
deleted file mode 100644
index 036c3d1ee5..0000000000
--- a/vendor/nikic/php-parser/test/PhpParser/NodeDumperTest.php
+++ /dev/null
@@ -1,106 +0,0 @@
-<?php declare(strict_types=1);
-
-namespace PhpParser;
-
-class NodeDumperTest extends \PHPUnit\Framework\TestCase
-{
-    private function canonicalize($string) {
-        return str_replace("\r\n", "\n", $string);
-    }
-
-    /**
-     * @dataProvider provideTestDump
-     */
-    public function testDump($node, $dump) {
-        $dumper = new NodeDumper;
-
-        $this->assertSame($this->canonicalize($dump), $this->canonicalize($dumper->dump($node)));
-    }
-
-    public function provideTestDump() {
-        return [
-            [
-                [],
-'array(
-)'
-            ],
-            [
-                ['Foo', 'Bar', 'Key' => 'FooBar'],
-'array(
-    0: Foo
-    1: Bar
-    Key: FooBar
-)'
-            ],
-            [
-                new Node\Name(['Hallo', 'World']),
-'Name(
-    parts: array(
-        0: Hallo
-        1: World
-    )
-)'
-            ],
-            [
-                new Node\Expr\Array_([
-                    new Node\Expr\ArrayItem(new Node\Scalar\String_('Foo'))
-                ]),
-'Expr_Array(
-    items: array(
-        0: Expr_ArrayItem(
-            key: null
-            value: Scalar_String(
-                value: Foo
-            )
-            byRef: false
-            unpack: false
-        )
-    )
-)'
-            ],
-        ];
-    }
-
-    public function testDumpWithPositions() {
-        $parser = (new ParserFactory)->create(
-            ParserFactory::ONLY_PHP7,
-            new Lexer(['usedAttributes' => ['startLine', 'endLine', 'startFilePos', 'endFilePos']])
-        );
-        $dumper = new NodeDumper(['dumpPositions' => true]);
-
-        $code = "<?php\n\$a = 1;\necho \$a;";
-        $expected = <<<'OUT'
-array(
-    0: Stmt_Expression[2:1 - 2:7](
-        expr: Expr_Assign[2:1 - 2:6](
-            var: Expr_Variable[2:1 - 2:2](
-                name: a
-            )
-            expr: Scalar_LNumber[2:6 - 2:6](
-                value: 1
-            )
-        )
-    )
-    1: Stmt_Echo[3:1 - 3:8](
-        exprs: array(
-            0: Expr_Variable[3:6 - 3:7](
-                name: a
-            )
-        )
-    )
-)
-OUT;
-
-        $stmts = $parser->parse($code);
-        $dump = $dumper->dump($stmts, $code);
-
-        $this->assertSame($this->canonicalize($expected), $this->canonicalize($dump));
-    }
-
-    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
deleted file mode 100644
index 909738a738..0000000000
--- a/vendor/nikic/php-parser/test/PhpParser/NodeFinderTest.php
+++ /dev/null
@@ -1,59 +0,0 @@
-<?php declare(strict_types=1);
-
-namespace PhpParser;
-
-use PhpParser\Node\Expr;
-
-class NodeFinderTest extends \PHPUnit\Framework\TestCase
-{
-    private function getStmtsAndVars() {
-        $assign = new Expr\Assign(new Expr\Variable('a'), new Expr\BinaryOp\Concat(
-            new Expr\Variable('b'), new Expr\Variable('c')
-        ));
-        $stmts = [new Node\Stmt\Expression($assign)];
-        $vars = [$assign->var, $assign->expr->left, $assign->expr->right];
-        return [$stmts, $vars];
-    }
-
-    public function testFind() {
-        $finder = new NodeFinder;
-        list($stmts, $vars) = $this->getStmtsAndVars();
-        $varFilter = function(Node $node) {
-            return $node instanceof Expr\Variable;
-        };
-        $this->assertSame($vars, $finder->find($stmts, $varFilter));
-        $this->assertSame($vars, $finder->find($stmts[0], $varFilter));
-
-        $noneFilter = function () { return false; };
-        $this->assertSame([], $finder->find($stmts, $noneFilter));
-    }
-
-    public function testFindInstanceOf() {
-        $finder = new NodeFinder;
-        list($stmts, $vars) = $this->getStmtsAndVars();
-        $this->assertSame($vars, $finder->findInstanceOf($stmts, Expr\Variable::class));
-        $this->assertSame($vars, $finder->findInstanceOf($stmts[0], Expr\Variable::class));
-        $this->assertSame([], $finder->findInstanceOf($stmts, Expr\BinaryOp\Mul::class));
-    }
-
-    public function testFindFirst() {
-        $finder = new NodeFinder;
-        list($stmts, $vars) = $this->getStmtsAndVars();
-        $varFilter = function(Node $node) {
-            return $node instanceof Expr\Variable;
-        };
-        $this->assertSame($vars[0], $finder->findFirst($stmts, $varFilter));
-        $this->assertSame($vars[0], $finder->findFirst($stmts[0], $varFilter));
-
-        $noneFilter = function () { return false; };
-        $this->assertNull($finder->findFirst($stmts, $noneFilter));
-    }
-
-    public function testFindFirstInstanceOf() {
-        $finder = new NodeFinder;
-        list($stmts, $vars) = $this->getStmtsAndVars();
-        $this->assertSame($vars[0], $finder->findFirstInstanceOf($stmts, Expr\Variable::class));
-        $this->assertSame($vars[0], $finder->findFirstInstanceOf($stmts[0], Expr\Variable::class));
-        $this->assertNull($finder->findFirstInstanceOf($stmts, Expr\BinaryOp\Mul::class));
-    }
-}
diff --git a/vendor/nikic/php-parser/test/PhpParser/NodeTraverserTest.php b/vendor/nikic/php-parser/test/PhpParser/NodeTraverserTest.php
deleted file mode 100644
index 2daa9ceaf0..0000000000
--- a/vendor/nikic/php-parser/test/PhpParser/NodeTraverserTest.php
+++ /dev/null
@@ -1,344 +0,0 @@
-<?php declare(strict_types=1);
-
-namespace PhpParser;
-
-use PhpParser\Node\Expr;
-use PhpParser\Node\Scalar\String_;
-
-class NodeTraverserTest extends \PHPUnit\Framework\TestCase
-{
-    public function testNonModifying() {
-        $str1Node = new String_('Foo');
-        $str2Node = new String_('Bar');
-        $echoNode = new Node\Stmt\Echo_([$str1Node, $str2Node]);
-        $stmts    = [$echoNode];
-
-        $visitor = $this->getMockBuilder(NodeVisitor::class)->getMock();
-
-        $visitor->expects($this->at(0))->method('beforeTraverse')->with($stmts);
-        $visitor->expects($this->at(1))->method('enterNode')->with($echoNode);
-        $visitor->expects($this->at(2))->method('enterNode')->with($str1Node);
-        $visitor->expects($this->at(3))->method('leaveNode')->with($str1Node);
-        $visitor->expects($this->at(4))->method('enterNode')->with($str2Node);
-        $visitor->expects($this->at(5))->method('leaveNode')->with($str2Node);
-        $visitor->expects($this->at(6))->method('leaveNode')->with($echoNode);
-        $visitor->expects($this->at(7))->method('afterTraverse')->with($stmts);
-
-        $traverser = new NodeTraverser;
-        $traverser->addVisitor($visitor);
-
-        $this->assertEquals($stmts, $traverser->traverse($stmts));
-    }
-
-    public function testModifying() {
-        $str1Node  = new String_('Foo');
-        $str2Node  = new String_('Bar');
-        $printNode = new Expr\Print_($str1Node);
-
-        // first visitor changes the node, second verifies the change
-        $visitor1 = $this->getMockBuilder(NodeVisitor::class)->getMock();
-        $visitor2 = $this->getMockBuilder(NodeVisitor::class)->getMock();
-
-        // replace empty statements with string1 node
-        $visitor1->expects($this->at(0))->method('beforeTraverse')->with([])
-                 ->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)
-                 ->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)
-                 ->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)
-                 ->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)
-                 ->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])
-                 ->willReturn([]);
-        $visitor2->expects($this->at(5))->method('afterTraverse')->with([]);
-
-        $traverser = new NodeTraverser;
-        $traverser->addVisitor($visitor1);
-        $traverser->addVisitor($visitor2);
-
-        // as all operations are reversed we end where we start
-        $this->assertEquals([], $traverser->traverse([]));
-    }
-
-    public function testRemove() {
-        $str1Node = new String_('Foo');
-        $str2Node = new String_('Bar');
-
-        $visitor = $this->getMockBuilder(NodeVisitor::class)->getMock();
-
-        // remove the string1 node, leave the string2 node
-        $visitor->expects($this->at(2))->method('leaveNode')->with($str1Node)
-                ->willReturn(NodeTraverser::REMOVE_NODE);
-
-        $traverser = new NodeTraverser;
-        $traverser->addVisitor($visitor);
-
-        $this->assertEquals([$str2Node], $traverser->traverse([$str1Node, $str2Node]));
-    }
-
-    public function testMerge() {
-        $strStart  = new String_('Start');
-        $strMiddle = new String_('End');
-        $strEnd    = new String_('Middle');
-        $strR1     = new String_('Replacement 1');
-        $strR2     = new String_('Replacement 2');
-
-        $visitor = $this->getMockBuilder(NodeVisitor::class)->getMock();
-
-        // replace strMiddle with strR1 and strR2 by merge
-        $visitor->expects($this->at(4))->method('leaveNode')->with($strMiddle)
-                ->willReturn([$strR1, $strR2]);
-
-        $traverser = new NodeTraverser;
-        $traverser->addVisitor($visitor);
-
-        $this->assertEquals(
-            [$strStart, $strR1, $strR2, $strEnd],
-            $traverser->traverse([$strStart, $strMiddle, $strEnd])
-        );
-    }
-
-    public function testInvalidDeepArray() {
-        $this->expectException(\LogicException::class);
-        $this->expectExceptionMessage('Invalid node structure: Contains nested arrays');
-        $strNode = new String_('Foo');
-        $stmts = [[[$strNode]]];
-
-        $traverser = new NodeTraverser;
-        $this->assertEquals($stmts, $traverser->traverse($stmts));
-    }
-
-    public function testDontTraverseChildren() {
-        $strNode = new String_('str');
-        $printNode = new Expr\Print_($strNode);
-        $varNode = new Expr\Variable('foo');
-        $mulNode = new Expr\BinaryOp\Mul($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_CHILDREN);
-        $visitor2->expects($this->at(1))->method('enterNode')->with($printNode);
-
-        $visitor1->expects($this->at(2))->method('leaveNode')->with($printNode);
-        $visitor2->expects($this->at(2))->method('leaveNode')->with($printNode);
-
-        $visitor1->expects($this->at(3))->method('enterNode')->with($negNode);
-        $visitor2->expects($this->at(3))->method('enterNode')->with($negNode);
-
-        $visitor1->expects($this->at(4))->method('enterNode')->with($mulNode);
-        $visitor2->expects($this->at(4))->method('enterNode')->with($mulNode)
-            ->willReturn(NodeTraverser::DONT_TRAVERSE_CHILDREN);
-
-        $visitor1->expects($this->at(5))->method('leaveNode')->with($mulNode);
-        $visitor2->expects($this->at(5))->method('leaveNode')->with($mulNode);
-
-        $visitor1->expects($this->at(6))->method('leaveNode')->with($negNode);
-        $visitor2->expects($this->at(6))->method('leaveNode')->with($negNode);
-
-        $traverser = new NodeTraverser;
-        $traverser->addVisitor($visitor1);
-        $traverser->addVisitor($visitor2);
-
-        $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');
-        $varNode3 = new Expr\Variable('c');
-        $mulNode = new Expr\BinaryOp\Mul($varNode1, $varNode2);
-        $printNode = new Expr\Print_($varNode3);
-        $stmts = [$mulNode, $printNode];
-
-        // From enterNode() with array parent
-        $visitor = $this->getMockBuilder(NodeVisitor::class)->getMock();
-        $visitor->expects($this->at(1))->method('enterNode')->with($mulNode)
-            ->willReturn(NodeTraverser::STOP_TRAVERSAL);
-        $visitor->expects($this->at(2))->method('afterTraverse');
-        $traverser = new NodeTraverser;
-        $traverser->addVisitor($visitor);
-        $this->assertEquals($stmts, $traverser->traverse($stmts));
-
-        // From enterNode with Node parent
-        $visitor = $this->getMockBuilder(NodeVisitor::class)->getMock();
-        $visitor->expects($this->at(2))->method('enterNode')->with($varNode1)
-            ->willReturn(NodeTraverser::STOP_TRAVERSAL);
-        $visitor->expects($this->at(3))->method('afterTraverse');
-        $traverser = new NodeTraverser;
-        $traverser->addVisitor($visitor);
-        $this->assertEquals($stmts, $traverser->traverse($stmts));
-
-        // From leaveNode with Node parent
-        $visitor = $this->getMockBuilder(NodeVisitor::class)->getMock();
-        $visitor->expects($this->at(3))->method('leaveNode')->with($varNode1)
-            ->willReturn(NodeTraverser::STOP_TRAVERSAL);
-        $visitor->expects($this->at(4))->method('afterTraverse');
-        $traverser = new NodeTraverser;
-        $traverser->addVisitor($visitor);
-        $this->assertEquals($stmts, $traverser->traverse($stmts));
-
-        // From leaveNode with array parent
-        $visitor = $this->getMockBuilder(NodeVisitor::class)->getMock();
-        $visitor->expects($this->at(6))->method('leaveNode')->with($mulNode)
-            ->willReturn(NodeTraverser::STOP_TRAVERSAL);
-        $visitor->expects($this->at(7))->method('afterTraverse');
-        $traverser = new NodeTraverser;
-        $traverser->addVisitor($visitor);
-        $this->assertEquals($stmts, $traverser->traverse($stmts));
-
-        // Check that pending array modifications are still carried out
-        $visitor = $this->getMockBuilder(NodeVisitor::class)->getMock();
-        $visitor->expects($this->at(6))->method('leaveNode')->with($mulNode)
-            ->willReturn(NodeTraverser::REMOVE_NODE);
-        $visitor->expects($this->at(7))->method('enterNode')->with($printNode)
-            ->willReturn(NodeTraverser::STOP_TRAVERSAL);
-        $visitor->expects($this->at(8))->method('afterTraverse');
-        $traverser = new NodeTraverser;
-        $traverser->addVisitor($visitor);
-        $this->assertEquals([$printNode], $traverser->traverse($stmts));
-
-    }
-
-    public function testRemovingVisitor() {
-        $visitor1 = $this->getMockBuilder(NodeVisitor::class)->getMock();
-        $visitor2 = $this->getMockBuilder(NodeVisitor::class)->getMock();
-        $visitor3 = $this->getMockBuilder(NodeVisitor::class)->getMock();
-
-        $traverser = new NodeTraverser;
-        $traverser->addVisitor($visitor1);
-        $traverser->addVisitor($visitor2);
-        $traverser->addVisitor($visitor3);
-
-        $preExpected = [$visitor1, $visitor2, $visitor3];
-        $this->assertAttributeSame($preExpected, 'visitors', $traverser, 'The appropriate visitors have not been added');
-
-        $traverser->removeVisitor($visitor2);
-
-        $postExpected = [0 => $visitor1, 2 => $visitor3];
-        $this->assertAttributeSame($postExpected, 'visitors', $traverser, 'The appropriate visitors are not present after removal');
-    }
-
-    public function testNoCloneNodes() {
-        $stmts = [new Node\Stmt\Echo_([new String_('Foo'), new String_('Bar')])];
-
-        $traverser = new NodeTraverser;
-
-        $this->assertSame($stmts, $traverser->traverse($stmts));
-    }
-
-    /**
-     * @dataProvider provideTestInvalidReturn
-     */
-    public function testInvalidReturn($visitor, $message) {
-        $this->expectException(\LogicException::class);
-        $this->expectExceptionMessage($message);
-
-        $stmts = [new Node\Stmt\Expression(new Node\Scalar\LNumber(42))];
-
-        $traverser = new NodeTraverser();
-        $traverser->addVisitor($visitor);
-        $traverser->traverse($stmts);
-    }
-
-    public function provideTestInvalidReturn() {
-        $visitor1 = $this->getMockBuilder(NodeVisitor::class)->getMock();
-        $visitor1->expects($this->at(1))->method('enterNode')
-            ->willReturn('foobar');
-
-        $visitor2 = $this->getMockBuilder(NodeVisitor::class)->getMock();
-        $visitor2->expects($this->at(2))->method('enterNode')
-            ->willReturn('foobar');
-
-        $visitor3 = $this->getMockBuilder(NodeVisitor::class)->getMock();
-        $visitor3->expects($this->at(3))->method('leaveNode')
-            ->willReturn('foobar');
-
-        $visitor4 = $this->getMockBuilder(NodeVisitor::class)->getMock();
-        $visitor4->expects($this->at(4))->method('leaveNode')
-            ->willReturn('foobar');
-
-        $visitor5 = $this->getMockBuilder(NodeVisitor::class)->getMock();
-        $visitor5->expects($this->at(3))->method('leaveNode')
-            ->willReturn([new Node\Scalar\DNumber(42.0)]);
-
-        $visitor6 = $this->getMockBuilder(NodeVisitor::class)->getMock();
-        $visitor6->expects($this->at(4))->method('leaveNode')
-            ->willReturn(false);
-
-        $visitor7 = $this->getMockBuilder(NodeVisitor::class)->getMock();
-        $visitor7->expects($this->at(1))->method('enterNode')
-            ->willReturn(new Node\Scalar\LNumber(42));
-
-        $visitor8 = $this->getMockBuilder(NodeVisitor::class)->getMock();
-        $visitor8->expects($this->at(2))->method('enterNode')
-            ->willReturn(new Node\Stmt\Return_());
-
-        return [
-            [$visitor1, 'enterNode() returned invalid value of type string'],
-            [$visitor2, 'enterNode() returned invalid value of type string'],
-            [$visitor3, 'leaveNode() returned invalid value of type string'],
-            [$visitor4, 'leaveNode() returned invalid value of type string'],
-            [$visitor5, 'leaveNode() may only return an array if the parent structure is an array'],
-            [$visitor6, 'bool(false) return from leaveNode() no longer supported. Return NodeTraverser::REMOVE_NODE instead'],
-            [$visitor7, 'Trying to replace statement (Stmt_Expression) with expression (Scalar_LNumber). Are you missing a Stmt_Expression wrapper?'],
-            [$visitor8, 'Trying to replace expression (Scalar_LNumber) with statement (Stmt_Return)'],
-        ];
-    }
-}
diff --git a/vendor/nikic/php-parser/test/PhpParser/NodeVisitor/FindingVisitorTest.php b/vendor/nikic/php-parser/test/PhpParser/NodeVisitor/FindingVisitorTest.php
deleted file mode 100644
index 27cb6dd480..0000000000
--- a/vendor/nikic/php-parser/test/PhpParser/NodeVisitor/FindingVisitorTest.php
+++ /dev/null
@@ -1,53 +0,0 @@
-<?php declare(strict_types=1);
-
-namespace PhpParser\NodeVisitor;
-
-use PhpParser\Node;
-use PhpParser\Node\Expr;
-use PhpParser\NodeTraverser;
-
-class FindingVisitorTest extends \PHPUnit\Framework\TestCase
-{
-    public function testFindVariables() {
-        $traverser = new NodeTraverser();
-        $visitor = new FindingVisitor(function(Node $node) {
-            return $node instanceof Node\Expr\Variable;
-        });
-        $traverser->addVisitor($visitor);
-
-        $assign = new Expr\Assign(new Expr\Variable('a'), new Expr\BinaryOp\Concat(
-            new Expr\Variable('b'), new Expr\Variable('c')
-        ));
-        $stmts = [new Node\Stmt\Expression($assign)];
-
-        $traverser->traverse($stmts);
-        $this->assertSame([
-            $assign->var,
-            $assign->expr->left,
-            $assign->expr->right,
-        ], $visitor->getFoundNodes());
-    }
-
-    public function testFindAll() {
-        $traverser = new NodeTraverser();
-        $visitor = new FindingVisitor(function(Node $node) {
-            return true; // All nodes
-        });
-        $traverser->addVisitor($visitor);
-
-        $assign = new Expr\Assign(new Expr\Variable('a'), new Expr\BinaryOp\Concat(
-            new Expr\Variable('b'), new Expr\Variable('c')
-        ));
-        $stmts = [new Node\Stmt\Expression($assign)];
-
-        $traverser->traverse($stmts);
-        $this->assertSame([
-            $stmts[0],
-            $assign,
-            $assign->var,
-            $assign->expr,
-            $assign->expr->left,
-            $assign->expr->right,
-        ], $visitor->getFoundNodes());
-    }
-}
diff --git a/vendor/nikic/php-parser/test/PhpParser/NodeVisitor/FirstFindingVisitorTest.php b/vendor/nikic/php-parser/test/PhpParser/NodeVisitor/FirstFindingVisitorTest.php
deleted file mode 100644
index 9ae8932f92..0000000000
--- a/vendor/nikic/php-parser/test/PhpParser/NodeVisitor/FirstFindingVisitorTest.php
+++ /dev/null
@@ -1,38 +0,0 @@
-<?php declare(strict_types=1);
-
-namespace PhpParser\NodeVisitor;
-
-use PhpParser\Node;
-use PhpParser\Node\Expr;
-use PhpParser\NodeTraverser;
-
-class FirstFindingVisitorTest extends \PHPUnit\Framework\TestCase
-{
-    public function testFindFirstVariable() {
-        $traverser = new NodeTraverser();
-        $visitor = new FirstFindingVisitor(function(Node $node) {
-            return $node instanceof Node\Expr\Variable;
-        });
-        $traverser->addVisitor($visitor);
-
-        $assign = new Expr\Assign(new Expr\Variable('a'), new Expr\Variable('b'));
-        $stmts = [new Node\Stmt\Expression($assign)];
-
-        $traverser->traverse($stmts);
-        $this->assertSame($assign->var, $visitor->getFoundNode());
-    }
-
-    public function testFindNone() {
-        $traverser = new NodeTraverser();
-        $visitor = new FirstFindingVisitor(function(Node $node) {
-            return $node instanceof Node\Expr\BinaryOp;
-        });
-        $traverser->addVisitor($visitor);
-
-        $assign = new Expr\Assign(new Expr\Variable('a'), new Expr\Variable('b'));
-        $stmts = [new Node\Stmt\Expression($assign)];
-
-        $traverser->traverse($stmts);
-        $this->assertNull($visitor->getFoundNode());
-    }
-}
diff --git a/vendor/nikic/php-parser/test/PhpParser/NodeVisitor/NameResolverTest.php b/vendor/nikic/php-parser/test/PhpParser/NodeVisitor/NameResolverTest.php
deleted file mode 100644
index 571eaaea39..0000000000
--- a/vendor/nikic/php-parser/test/PhpParser/NodeVisitor/NameResolverTest.php
+++ /dev/null
@@ -1,505 +0,0 @@
-<?php declare(strict_types=1);
-
-namespace PhpParser\NodeVisitor;
-
-use PhpParser;
-use PhpParser\Node;
-use PhpParser\Node\Expr;
-use PhpParser\Node\Name;
-use PhpParser\Node\Stmt;
-
-class NameResolverTest extends \PHPUnit\Framework\TestCase
-{
-    private function canonicalize($string) {
-        return str_replace("\r\n", "\n", $string);
-    }
-
-    /**
-     * @covers \PhpParser\NodeVisitor\NameResolver
-     */
-    public function testResolveNames() {
-        $code = <<<'EOC'
-<?php
-
-namespace Foo {
-    use Hallo as Hi;
-
-    new Bar();
-    new Hi();
-    new Hi\Bar();
-    new \Bar();
-    new namespace\Bar();
-
-    bar();
-    hi();
-    Hi\bar();
-    foo\bar();
-    \bar();
-    namespace\bar();
-}
-namespace {
-    use Hallo as Hi;
-
-    new Bar();
-    new Hi();
-    new Hi\Bar();
-    new \Bar();
-    new namespace\Bar();
-
-    bar();
-    hi();
-    Hi\bar();
-    foo\bar();
-    \bar();
-    namespace\bar();
-}
-namespace Bar {
-    use function foo\bar as baz;
-    use const foo\BAR as BAZ;
-    use foo as bar;
-
-    bar();
-    baz();
-    bar\foo();
-    baz\foo();
-    BAR();
-    BAZ();
-    BAR\FOO();
-    BAZ\FOO();
-
-    bar;
-    baz;
-    bar\foo;
-    baz\foo;
-    BAR;
-    BAZ;
-    BAR\FOO;
-    BAZ\FOO;
-}
-namespace Baz {
-    use A\T\{B\C, D\E};
-    use function X\T\{b\c, d\e};
-    use const Y\T\{B\C, D\E};
-    use Z\T\{G, function f, const K};
-
-    new C;
-    new E;
-    new C\D;
-    new E\F;
-    new G;
-
-    c();
-    e();
-    f();
-    C;
-    E;
-    K;
-
-    class ClassWithTypeProperties
-    {
-        public float $php = 7.4;
-        public ?Foo $person;
-        protected static ?bool $probability;
-    }
-}
-EOC;
-        $expectedCode = <<<'EOC'
-namespace Foo {
-    use Hallo as Hi;
-    new \Foo\Bar();
-    new \Hallo();
-    new \Hallo\Bar();
-    new \Bar();
-    new \Foo\Bar();
-    bar();
-    hi();
-    \Hallo\bar();
-    \Foo\foo\bar();
-    \bar();
-    \Foo\bar();
-}
-namespace {
-    use Hallo as Hi;
-    new \Bar();
-    new \Hallo();
-    new \Hallo\Bar();
-    new \Bar();
-    new \Bar();
-    \bar();
-    \hi();
-    \Hallo\bar();
-    \foo\bar();
-    \bar();
-    \bar();
-}
-namespace Bar {
-    use function foo\bar as baz;
-    use const foo\BAR as BAZ;
-    use foo as bar;
-    bar();
-    \foo\bar();
-    \foo\foo();
-    \Bar\baz\foo();
-    BAR();
-    \foo\bar();
-    \foo\FOO();
-    \Bar\BAZ\FOO();
-    bar;
-    baz;
-    \foo\foo;
-    \Bar\baz\foo;
-    BAR;
-    \foo\BAR;
-    \foo\FOO;
-    \Bar\BAZ\FOO;
-}
-namespace Baz {
-    use A\T\{B\C, D\E};
-    use function X\T\{b\c, d\e};
-    use const Y\T\{B\C, D\E};
-    use Z\T\{G, function f, const K};
-    new \A\T\B\C();
-    new \A\T\D\E();
-    new \A\T\B\C\D();
-    new \A\T\D\E\F();
-    new \Z\T\G();
-    \X\T\b\c();
-    \X\T\d\e();
-    \Z\T\f();
-    \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;
-
-        $parser        = new PhpParser\Parser\Php7(new PhpParser\Lexer\Emulative);
-        $prettyPrinter = new PhpParser\PrettyPrinter\Standard;
-        $traverser     = new PhpParser\NodeTraverser;
-        $traverser->addVisitor(new NameResolver);
-
-        $stmts = $parser->parse($code);
-        $stmts = $traverser->traverse($stmts);
-
-        $this->assertSame(
-            $this->canonicalize($expectedCode),
-            $prettyPrinter->prettyPrint($stmts)
-        );
-    }
-
-    /**
-     * @covers \PhpParser\NodeVisitor\NameResolver
-     */
-    public function testResolveLocations() {
-        $code = <<<'EOC'
-<?php
-namespace NS;
-
-class A extends B implements C, D {
-    use E, F, G {
-        f as private g;
-        E::h as i;
-        E::j insteadof F, G;
-    }
-}
-
-interface A extends C, D {
-    public function a(A $a) : A;
-}
-
-function f(A $a) : A {}
-function f2(array $a) : array {}
-function(A $a) : A {};
-
-function fn3(?A $a) : ?A {}
-function fn4(?array $a) : ?array {}
-
-A::b();
-A::$b;
-A::B;
-new A;
-$a instanceof A;
-
-namespace\a();
-namespace\A;
-
-try {
-    $someThing;
-} catch (A $a) {
-    $someThingElse;
-}
-EOC;
-        $expectedCode = <<<'EOC'
-namespace NS;
-
-class A extends \NS\B implements \NS\C, \NS\D
-{
-    use \NS\E, \NS\F, \NS\G {
-        f as private g;
-        \NS\E::h as i;
-        \NS\E::j insteadof \NS\F, \NS\G;
-    }
-}
-interface A extends \NS\C, \NS\D
-{
-    public function a(\NS\A $a) : \NS\A;
-}
-function f(\NS\A $a) : \NS\A
-{
-}
-function f2(array $a) : array
-{
-}
-function (\NS\A $a) : \NS\A {
-};
-function fn3(?\NS\A $a) : ?\NS\A
-{
-}
-function fn4(?array $a) : ?array
-{
-}
-\NS\A::b();
-\NS\A::$b;
-\NS\A::B;
-new \NS\A();
-$a instanceof \NS\A;
-\NS\a();
-\NS\A;
-try {
-    $someThing;
-} catch (\NS\A $a) {
-    $someThingElse;
-}
-EOC;
-
-        $parser        = new PhpParser\Parser\Php7(new PhpParser\Lexer\Emulative);
-        $prettyPrinter = new PhpParser\PrettyPrinter\Standard;
-        $traverser     = new PhpParser\NodeTraverser;
-        $traverser->addVisitor(new NameResolver);
-
-        $stmts = $parser->parse($code);
-        $stmts = $traverser->traverse($stmts);
-
-        $this->assertSame(
-            $this->canonicalize($expectedCode),
-            $prettyPrinter->prettyPrint($stmts)
-        );
-    }
-
-    public function testNoResolveSpecialName() {
-        $stmts = [new Node\Expr\New_(new Name('self'))];
-
-        $traverser = new PhpParser\NodeTraverser;
-        $traverser->addVisitor(new NameResolver);
-
-        $this->assertEquals($stmts, $traverser->traverse($stmts));
-    }
-
-    public function testAddDeclarationNamespacedName() {
-        $nsStmts = [
-            new Stmt\Class_('A'),
-            new Stmt\Interface_('B'),
-            new Stmt\Function_('C'),
-            new Stmt\Const_([
-                new Node\Const_('D', new Node\Scalar\LNumber(42))
-            ]),
-            new Stmt\Trait_('E'),
-            new Expr\New_(new Stmt\Class_(null)),
-        ];
-
-        $traverser = new PhpParser\NodeTraverser;
-        $traverser->addVisitor(new NameResolver);
-
-        $stmts = $traverser->traverse([new Stmt\Namespace_(new Name('NS'), $nsStmts)]);
-        $this->assertSame('NS\\A', (string) $stmts[0]->stmts[0]->namespacedName);
-        $this->assertSame('NS\\B', (string) $stmts[0]->stmts[1]->namespacedName);
-        $this->assertSame('NS\\C', (string) $stmts[0]->stmts[2]->namespacedName);
-        $this->assertSame('NS\\D', (string) $stmts[0]->stmts[3]->consts[0]->namespacedName);
-        $this->assertSame('NS\\E', (string) $stmts[0]->stmts[4]->namespacedName);
-        $this->assertObjectNotHasAttribute('namespacedName', $stmts[0]->stmts[5]->class);
-
-        $stmts = $traverser->traverse([new Stmt\Namespace_(null, $nsStmts)]);
-        $this->assertSame('A',     (string) $stmts[0]->stmts[0]->namespacedName);
-        $this->assertSame('B',     (string) $stmts[0]->stmts[1]->namespacedName);
-        $this->assertSame('C',     (string) $stmts[0]->stmts[2]->namespacedName);
-        $this->assertSame('D',     (string) $stmts[0]->stmts[3]->consts[0]->namespacedName);
-        $this->assertSame('E',     (string) $stmts[0]->stmts[4]->namespacedName);
-        $this->assertObjectNotHasAttribute('namespacedName', $stmts[0]->stmts[5]->class);
-    }
-
-    public function testAddRuntimeResolvedNamespacedName() {
-        $stmts = [
-            new Stmt\Namespace_(new Name('NS'), [
-                new Expr\FuncCall(new Name('foo')),
-                new Expr\ConstFetch(new Name('FOO')),
-            ]),
-            new Stmt\Namespace_(null, [
-                new Expr\FuncCall(new Name('foo')),
-                new Expr\ConstFetch(new Name('FOO')),
-            ]),
-        ];
-
-        $traverser = new PhpParser\NodeTraverser;
-        $traverser->addVisitor(new NameResolver);
-        $stmts = $traverser->traverse($stmts);
-
-        $this->assertSame('NS\\foo', (string) $stmts[0]->stmts[0]->name->getAttribute('namespacedName'));
-        $this->assertSame('NS\\FOO', (string) $stmts[0]->stmts[1]->name->getAttribute('namespacedName'));
-
-        $this->assertFalse($stmts[1]->stmts[0]->name->hasAttribute('namespacedName'));
-        $this->assertFalse($stmts[1]->stmts[1]->name->hasAttribute('namespacedName'));
-    }
-
-    /**
-     * @dataProvider provideTestError
-     */
-    public function testError(Node $stmt, $errorMsg) {
-        $this->expectException(\PhpParser\Error::class);
-        $this->expectExceptionMessage($errorMsg);
-
-        $traverser = new PhpParser\NodeTraverser;
-        $traverser->addVisitor(new NameResolver);
-        $traverser->traverse([$stmt]);
-    }
-
-    public function provideTestError() {
-        return [
-            [
-                new Stmt\Use_([
-                    new Stmt\UseUse(new Name('A\B'), 'B', 0, ['startLine' => 1]),
-                    new Stmt\UseUse(new Name('C\D'), 'B', 0, ['startLine' => 2]),
-                ], Stmt\Use_::TYPE_NORMAL),
-                'Cannot use C\D as B because the name is already in use on line 2'
-            ],
-            [
-                new Stmt\Use_([
-                    new Stmt\UseUse(new Name('a\b'), 'b', 0, ['startLine' => 1]),
-                    new Stmt\UseUse(new Name('c\d'), 'B', 0, ['startLine' => 2]),
-                ], Stmt\Use_::TYPE_FUNCTION),
-                'Cannot use function c\d as B because the name is already in use on line 2'
-            ],
-            [
-                new Stmt\Use_([
-                    new Stmt\UseUse(new Name('A\B'), 'B', 0, ['startLine' => 1]),
-                    new Stmt\UseUse(new Name('C\D'), 'B', 0, ['startLine' => 2]),
-                ], Stmt\Use_::TYPE_CONSTANT),
-                'Cannot use const C\D as B because the name is already in use on line 2'
-            ],
-            [
-                new Expr\New_(new Name\FullyQualified('self', ['startLine' => 3])),
-                "'\\self' is an invalid class name on line 3"
-            ],
-            [
-                new Expr\New_(new Name\Relative('self', ['startLine' => 3])),
-                "'\\self' is an invalid class name on line 3"
-            ],
-            [
-                new Expr\New_(new Name\FullyQualified('PARENT', ['startLine' => 3])),
-                "'\\PARENT' is an invalid class name on line 3"
-            ],
-            [
-                new Expr\New_(new Name\Relative('STATIC', ['startLine' => 3])),
-                "'\\STATIC' is an invalid class name on line 3"
-            ],
-        ];
-    }
-
-    public function testClassNameIsCaseInsensitive()
-    {
-        $source = <<<'EOC'
-<?php
-namespace Foo;
-use Bar\Baz;
-$test = new baz();
-EOC;
-
-        $parser = new PhpParser\Parser\Php7(new PhpParser\Lexer\Emulative);
-        $stmts = $parser->parse($source);
-
-        $traverser = new PhpParser\NodeTraverser;
-        $traverser->addVisitor(new NameResolver);
-
-        $stmts = $traverser->traverse($stmts);
-        $stmt = $stmts[0];
-
-        $assign = $stmt->stmts[1]->expr;
-        $this->assertSame(['Bar', 'Baz'], $assign->expr->class->parts);
-    }
-
-    public function testSpecialClassNamesAreCaseInsensitive() {
-        $source = <<<'EOC'
-<?php
-namespace Foo;
-
-class Bar
-{
-    public static function method()
-    {
-        SELF::method();
-        PARENT::method();
-        STATIC::method();
-    }
-}
-EOC;
-
-        $parser = new PhpParser\Parser\Php7(new PhpParser\Lexer\Emulative);
-        $stmts = $parser->parse($source);
-
-        $traverser = new PhpParser\NodeTraverser;
-        $traverser->addVisitor(new NameResolver);
-
-        $stmts = $traverser->traverse($stmts);
-        $classStmt = $stmts[0];
-        $methodStmt = $classStmt->stmts[0]->stmts[0];
-
-        $this->assertSame('SELF', (string) $methodStmt->stmts[0]->expr->class);
-        $this->assertSame('PARENT', (string) $methodStmt->stmts[1]->expr->class);
-        $this->assertSame('STATIC', (string) $methodStmt->stmts[2]->expr->class);
-    }
-
-    public function testAddOriginalNames() {
-        $traverser = new PhpParser\NodeTraverser;
-        $traverser->addVisitor(new NameResolver(null, ['preserveOriginalNames' => true]));
-
-        $n1 = new Name('Bar');
-        $n2 = new Name('bar');
-        $origStmts = [
-            new Stmt\Namespace_(new Name('Foo'), [
-                new Expr\ClassConstFetch($n1, 'FOO'),
-                new Expr\FuncCall($n2),
-            ])
-        ];
-
-        $stmts = $traverser->traverse($origStmts);
-
-        $this->assertSame($n1, $stmts[0]->stmts[0]->class->getAttribute('originalName'));
-        $this->assertSame($n2, $stmts[0]->stmts[1]->name->getAttribute('originalName'));
-    }
-
-    public function testAttributeOnlyMode() {
-        $traverser = new PhpParser\NodeTraverser;
-        $traverser->addVisitor(new NameResolver(null, ['replaceNodes' => false]));
-
-        $n1 = new Name('Bar');
-        $n2 = new Name('bar');
-        $origStmts = [
-            new Stmt\Namespace_(new Name('Foo'), [
-                new Expr\ClassConstFetch($n1, 'FOO'),
-                new Expr\FuncCall($n2),
-            ])
-        ];
-
-        $traverser->traverse($origStmts);
-
-        $this->assertEquals(
-            new Name\FullyQualified('Foo\Bar'), $n1->getAttribute('resolvedName'));
-        $this->assertFalse($n2->hasAttribute('resolvedName'));
-        $this->assertEquals(
-            new Name\FullyQualified('Foo\bar'), $n2->getAttribute('namespacedName'));
-    }
-}
diff --git a/vendor/nikic/php-parser/test/PhpParser/Parser/MultipleTest.php b/vendor/nikic/php-parser/test/PhpParser/Parser/MultipleTest.php
deleted file mode 100644
index f89e7bf628..0000000000
--- a/vendor/nikic/php-parser/test/PhpParser/Parser/MultipleTest.php
+++ /dev/null
@@ -1,94 +0,0 @@
-<?php declare(strict_types=1);
-
-namespace PhpParser\Parser;
-
-use PhpParser\Error;
-use PhpParser\Lexer;
-use PhpParser\Node\Expr;
-use PhpParser\Node\Scalar\LNumber;
-use PhpParser\Node\Stmt;
-use PhpParser\ParserTest;
-
-class MultipleTest extends ParserTest
-{
-    // This provider is for the generic parser tests, just pick an arbitrary order here
-    protected function getParser(Lexer $lexer) {
-        return new Multiple([new Php5($lexer), new Php7($lexer)]);
-    }
-
-    private function getPrefer7() {
-        $lexer = new Lexer(['usedAttributes' => []]);
-        return new Multiple([new Php7($lexer), new Php5($lexer)]);
-    }
-
-    private function getPrefer5() {
-        $lexer = new Lexer(['usedAttributes' => []]);
-        return new Multiple([new Php5($lexer), new Php7($lexer)]);
-    }
-
-    /** @dataProvider provideTestParse */
-    public function testParse($code, Multiple $parser, $expected) {
-        $this->assertEquals($expected, $parser->parse($code));
-    }
-
-    public function provideTestParse() {
-        return [
-            [
-                // PHP 7 only code
-                '<?php class Test { function function() {} }',
-                $this->getPrefer5(),
-                [
-                    new Stmt\Class_('Test', ['stmts' => [
-                        new Stmt\ClassMethod('function')
-                    ]]),
-                ]
-            ],
-            [
-                // PHP 5 only code
-                '<?php global $$a->b;',
-                $this->getPrefer7(),
-                [
-                    new Stmt\Global_([
-                        new Expr\Variable(new Expr\PropertyFetch(new Expr\Variable('a'), 'b'))
-                    ])
-                ]
-            ],
-            [
-                // Different meaning (PHP 5)
-                '<?php $$a[0];',
-                $this->getPrefer5(),
-                [
-                    new Stmt\Expression(new Expr\Variable(
-                        new Expr\ArrayDimFetch(new Expr\Variable('a'), LNumber::fromString('0'))
-                    ))
-                ]
-            ],
-            [
-                // Different meaning (PHP 7)
-                '<?php $$a[0];',
-                $this->getPrefer7(),
-                [
-                    new Stmt\Expression(new Expr\ArrayDimFetch(
-                        new Expr\Variable(new Expr\Variable('a')), LNumber::fromString('0')
-                    ))
-                ]
-            ],
-        ];
-    }
-
-    public function testThrownError() {
-        $this->expectException(Error::class);
-        $this->expectExceptionMessage('FAIL A');
-
-        $parserA = $this->getMockBuilder(\PhpParser\Parser::class)->getMock();
-        $parserA->expects($this->at(0))
-            ->method('parse')->willThrowException(new Error('FAIL A'));
-
-        $parserB = $this->getMockBuilder(\PhpParser\Parser::class)->getMock();
-        $parserB->expects($this->at(0))
-            ->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
deleted file mode 100644
index 4386b5129a..0000000000
--- a/vendor/nikic/php-parser/test/PhpParser/Parser/Php5Test.php
+++ /dev/null
@@ -1,13 +0,0 @@
-<?php declare(strict_types=1);
-
-namespace PhpParser\Parser;
-
-use PhpParser\Lexer;
-use PhpParser\ParserTest;
-
-class Php5Test extends ParserTest
-{
-    protected function getParser(Lexer $lexer) {
-        return new Php5($lexer);
-    }
-}
diff --git a/vendor/nikic/php-parser/test/PhpParser/Parser/Php7Test.php b/vendor/nikic/php-parser/test/PhpParser/Parser/Php7Test.php
deleted file mode 100644
index 22a4c5190c..0000000000
--- a/vendor/nikic/php-parser/test/PhpParser/Parser/Php7Test.php
+++ /dev/null
@@ -1,13 +0,0 @@
-<?php declare(strict_types=1);
-
-namespace PhpParser\Parser;
-
-use PhpParser\Lexer;
-use PhpParser\ParserTest;
-
-class Php7Test extends ParserTest
-{
-    protected function getParser(Lexer $lexer) {
-        return new Php7($lexer);
-    }
-}
diff --git a/vendor/nikic/php-parser/test/PhpParser/ParserFactoryTest.php b/vendor/nikic/php-parser/test/PhpParser/ParserFactoryTest.php
deleted file mode 100644
index d50981f2a1..0000000000
--- a/vendor/nikic/php-parser/test/PhpParser/ParserFactoryTest.php
+++ /dev/null
@@ -1,36 +0,0 @@
-<?php declare(strict_types=1);
-
-namespace PhpParser;
-
-/* 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. */
-
-class ParserFactoryTest extends \PHPUnit\Framework\TestCase
-{
-    /** @dataProvider provideTestCreate */
-    public function testCreate($kind, $lexer, $expected) {
-        $this->assertInstanceOf($expected, (new ParserFactory)->create($kind, $lexer));
-    }
-
-    public function provideTestCreate() {
-        $lexer = new Lexer();
-        return [
-            [
-                ParserFactory::PREFER_PHP7, $lexer,
-                Parser\Multiple::class
-            ],
-            [
-                ParserFactory::PREFER_PHP5, null,
-                Parser\Multiple::class
-            ],
-            [
-                ParserFactory::ONLY_PHP7, null,
-                Parser\Php7::class
-            ],
-            [
-                ParserFactory::ONLY_PHP5, $lexer,
-                Parser\Php5::class
-            ]
-        ];
-    }
-}
diff --git a/vendor/nikic/php-parser/test/PhpParser/ParserTest.php b/vendor/nikic/php-parser/test/PhpParser/ParserTest.php
deleted file mode 100644
index 0f7f1b79f2..0000000000
--- a/vendor/nikic/php-parser/test/PhpParser/ParserTest.php
+++ /dev/null
@@ -1,183 +0,0 @@
-<?php declare(strict_types=1);
-
-namespace PhpParser;
-
-use PhpParser\Node\Expr;
-use PhpParser\Node\Scalar;
-use PhpParser\Node\Scalar\String_;
-use PhpParser\Node\Stmt;
-
-abstract class ParserTest extends \PHPUnit\Framework\TestCase
-{
-    /** @returns Parser */
-    abstract protected function getParser(Lexer $lexer);
-
-    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');
-    }
-
-    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;');
-    }
-
-    public function testParserThrowsLexerError() {
-        $this->expectException(Error::class);
-        $this->expectExceptionMessage('Unterminated comment on line 1');
-        $parser = $this->getParser(new Lexer());
-        $parser->parse('<?php /*');
-    }
-
-    public function testAttributeAssignment() {
-        $lexer = new Lexer([
-            'usedAttributes' => [
-                'comments', 'startLine', 'endLine',
-                'startTokenPos', 'endTokenPos',
-            ]
-        ]);
-
-        $code = <<<'EOC'
-<?php
-/** Doc comment */
-function test($a) {
-    // Line
-    // Comments
-    echo $a;
-}
-EOC;
-        $code = canonicalize($code);
-
-        $parser = $this->getParser($lexer);
-        $stmts = $parser->parse($code);
-
-        /** @var Stmt\Function_ $fn */
-        $fn = $stmts[0];
-        $this->assertInstanceOf(Stmt\Function_::class, $fn);
-        $this->assertEquals([
-            'comments' => [
-                new Comment\Doc('/** Doc comment */', 2, 6, 1),
-            ],
-            'startLine' => 3,
-            'endLine' => 7,
-            'startTokenPos' => 3,
-            'endTokenPos' => 21,
-        ], $fn->getAttributes());
-
-        $param = $fn->params[0];
-        $this->assertInstanceOf(Node\Param::class, $param);
-        $this->assertEquals([
-            'startLine' => 3,
-            'endLine' => 3,
-            'startTokenPos' => 7,
-            'endTokenPos' => 7,
-        ], $param->getAttributes());
-
-        /** @var Stmt\Echo_ $echo */
-        $echo = $fn->stmts[0];
-        $this->assertInstanceOf(Stmt\Echo_::class, $echo);
-        $this->assertEquals([
-            'comments' => [
-                new Comment("// Line\n", 4, 49, 12),
-                new Comment("// Comments\n", 5, 61, 14),
-            ],
-            'startLine' => 6,
-            'endLine' => 6,
-            'startTokenPos' => 16,
-            'endTokenPos' => 19,
-        ], $echo->getAttributes());
-
-        /** @var \PhpParser\Node\Expr\Variable $var */
-        $var = $echo->exprs[0];
-        $this->assertInstanceOf(Expr\Variable::class, $var);
-        $this->assertEquals([
-            'startLine' => 6,
-            'endLine' => 6,
-            'startTokenPos' => 18,
-            'endTokenPos' => 18,
-        ], $var->getAttributes());
-    }
-
-    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');
-    }
-
-    /**
-     * @dataProvider provideTestExtraAttributes
-     */
-    public function testExtraAttributes($code, $expectedAttributes) {
-        $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();
-        foreach ($expectedAttributes as $name => $value) {
-            $this->assertSame($value, $attributes[$name]);
-        }
-    }
-
-    public function provideTestExtraAttributes() {
-        return [
-            ['0', ['kind' => Scalar\LNumber::KIND_DEC]],
-            ['9', ['kind' => Scalar\LNumber::KIND_DEC]],
-            ['07', ['kind' => Scalar\LNumber::KIND_OCT]],
-            ['0xf', ['kind' => Scalar\LNumber::KIND_HEX]],
-            ['0XF', ['kind' => Scalar\LNumber::KIND_HEX]],
-            ['0b1', ['kind' => Scalar\LNumber::KIND_BIN]],
-            ['0B1', ['kind' => Scalar\LNumber::KIND_BIN]],
-            ['[]', ['kind' => Expr\Array_::KIND_SHORT]],
-            ['array()', ['kind' => Expr\Array_::KIND_LONG]],
-            ["'foo'", ['kind' => String_::KIND_SINGLE_QUOTED]],
-            ["b'foo'", ['kind' => String_::KIND_SINGLE_QUOTED]],
-            ["B'foo'", ['kind' => String_::KIND_SINGLE_QUOTED]],
-            ['"foo"', ['kind' => String_::KIND_DOUBLE_QUOTED]],
-            ['b"foo"', ['kind' => String_::KIND_DOUBLE_QUOTED]],
-            ['B"foo"', ['kind' => String_::KIND_DOUBLE_QUOTED]],
-            ['"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', '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]],
-            ["exit(1)", ['kind' => Expr\Exit_::KIND_EXIT]],
-            ["?>Foo", ['hasLeadingNewline' => false]],
-            ["?>\nFoo", ['hasLeadingNewline' => true]],
-            ["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]],
-        ];
-    }
-}
-
-class InvalidTokenLexer extends Lexer
-{
-    public function getNextToken(&$value = null, &$startAttributes = null, &$endAttributes = null) : int {
-        $value = 'foobar';
-        return 999;
-    }
-}
diff --git a/vendor/nikic/php-parser/test/PhpParser/PrettyPrinterTest.php b/vendor/nikic/php-parser/test/PhpParser/PrettyPrinterTest.php
deleted file mode 100644
index e5b8a1aeae..0000000000
--- a/vendor/nikic/php-parser/test/PhpParser/PrettyPrinterTest.php
+++ /dev/null
@@ -1,307 +0,0 @@
-<?php declare(strict_types=1);
-
-namespace PhpParser;
-
-use PhpParser\Node\Expr;
-use PhpParser\Node\Name;
-use PhpParser\Node\Scalar\DNumber;
-use PhpParser\Node\Scalar\Encapsed;
-use PhpParser\Node\Scalar\EncapsedStringPart;
-use PhpParser\Node\Scalar\LNumber;
-use PhpParser\Node\Scalar\String_;
-use PhpParser\Node\Stmt;
-use PhpParser\PrettyPrinter\Standard;
-
-class PrettyPrinterTest extends CodeTestAbstract
-{
-    protected function doTestPrettyPrintMethod($method, $name, $code, $expected, $modeLine) {
-        $lexer = new Lexer\Emulative;
-        $parser5 = new Parser\Php5($lexer);
-        $parser7 = new Parser\Php7($lexer);
-
-        list($version, $options) = $this->parseModeLine($modeLine);
-        $prettyPrinter = new Standard($options);
-
-        try {
-            $output5 = canonicalize($prettyPrinter->$method($parser5->parse($code)));
-        } catch (Error $e) {
-            $output5 = null;
-            if ('php7' !== $version) {
-                throw $e;
-            }
-        }
-
-        try {
-            $output7 = canonicalize($prettyPrinter->$method($parser7->parse($code)));
-        } catch (Error $e) {
-            $output7 = null;
-            if ('php5' !== $version) {
-                throw $e;
-            }
-        }
-
-        if ('php5' === $version) {
-            $this->assertSame($expected, $output5, $name);
-            $this->assertNotSame($expected, $output7, $name);
-        } elseif ('php7' === $version) {
-            $this->assertSame($expected, $output7, $name);
-            $this->assertNotSame($expected, $output5, $name);
-        } else {
-            $this->assertSame($expected, $output5, $name);
-            $this->assertSame($expected, $output7, $name);
-        }
-    }
-
-    /**
-     * @dataProvider provideTestPrettyPrint
-     * @covers \PhpParser\PrettyPrinter\Standard<extended>
-     */
-    public function testPrettyPrint($name, $code, $expected, $mode) {
-        $this->doTestPrettyPrintMethod('prettyPrint', $name, $code, $expected, $mode);
-    }
-
-    /**
-     * @dataProvider provideTestPrettyPrintFile
-     * @covers \PhpParser\PrettyPrinter\Standard<extended>
-     */
-    public function testPrettyPrintFile($name, $code, $expected, $mode) {
-        $this->doTestPrettyPrintMethod('prettyPrintFile', $name, $code, $expected, $mode);
-    }
-
-    public function provideTestPrettyPrint() {
-        return $this->getTests(__DIR__ . '/../code/prettyPrinter', 'test');
-    }
-
-    public function provideTestPrettyPrintFile() {
-        return $this->getTests(__DIR__ . '/../code/prettyPrinter', 'file-test');
-    }
-
-    public function testPrettyPrintExpr() {
-        $prettyPrinter = new Standard;
-        $expr = new Expr\BinaryOp\Mul(
-            new Expr\BinaryOp\Plus(new Expr\Variable('a'), new Expr\Variable('b')),
-            new Expr\Variable('c')
-        );
-        $this->assertEquals('($a + $b) * $c', $prettyPrinter->prettyPrintExpr($expr));
-
-        $expr = new Expr\Closure([
-            'stmts' => [new Stmt\Return_(new String_("a\nb"))]
-        ]);
-        $this->assertEquals("function () {\n    return 'a\nb';\n}", $prettyPrinter->prettyPrintExpr($expr));
-    }
-
-    public function testCommentBeforeInlineHTML() {
-        $prettyPrinter = new PrettyPrinter\Standard;
-        $comment = new Comment\Doc("/**\n * This is a comment\n */");
-        $stmts = [new Stmt\InlineHTML('Hello World!', ['comments' => [$comment]])];
-        $expected = "<?php\n\n/**\n * This is a comment\n */\n?>\nHello World!";
-        $this->assertSame($expected, $prettyPrinter->prettyPrintFile($stmts));
-    }
-
-    private function parseModeLine($modeLine) {
-        $parts = explode(' ', (string) $modeLine, 2);
-        $version = $parts[0] ?? 'both';
-        $options = isset($parts[1]) ? json_decode($parts[1], true) : [];
-        return [$version, $options];
-    }
-
-    public function testArraySyntaxDefault() {
-        $prettyPrinter = new Standard(['shortArraySyntax' => true]);
-        $expr = new Expr\Array_([
-            new Expr\ArrayItem(new String_('val'), new String_('key'))
-        ]);
-        $expected = "['key' => 'val']";
-        $this->assertSame($expected, $prettyPrinter->prettyPrintExpr($expr));
-    }
-
-    /**
-     * @dataProvider provideTestKindAttributes
-     */
-    public function testKindAttributes($node, $expected) {
-        $prttyPrinter = new PrettyPrinter\Standard;
-        $result = $prttyPrinter->prettyPrintExpr($node);
-        $this->assertSame($expected, $result);
-    }
-
-    public function provideTestKindAttributes() {
-        $nowdoc = ['kind' => String_::KIND_NOWDOC, 'docLabel' => 'STR'];
-        $heredoc = ['kind' => String_::KIND_HEREDOC, 'docLabel' => 'STR'];
-        return [
-            // Defaults to single quoted
-            [new String_('foo'), "'foo'"],
-            // Explicit single/double quoted
-            [new String_('foo', ['kind' => String_::KIND_SINGLE_QUOTED]), "'foo'"],
-            [new String_('foo', ['kind' => String_::KIND_DOUBLE_QUOTED]), '"foo"'],
-            // Fallback from doc string if no label
-            [new String_('foo', ['kind' => String_::KIND_NOWDOC]), "'foo'"],
-            [new String_('foo', ['kind' => String_::KIND_HEREDOC]), '"foo"'],
-            // Fallback if string contains label
-            [new String_("A\nB\nC", ['kind' => String_::KIND_NOWDOC, 'docLabel' => 'A']), "'A\nB\nC'"],
-            [new String_("A\nB\nC", ['kind' => String_::KIND_NOWDOC, 'docLabel' => 'B']), "'A\nB\nC'"],
-            [new String_("A\nB\nC", ['kind' => String_::KIND_NOWDOC, 'docLabel' => 'C']), "'A\nB\nC'"],
-            [new String_("STR;", ['kind' => String_::KIND_NOWDOC, 'docLabel' => 'STR']), "'STR;'"],
-            // Doc string if label not contained (or not in ending position)
-            [new String_("foo", $nowdoc), "<<<'STR'\nfoo\nSTR\n"],
-            [new String_("foo", $heredoc), "<<<STR\nfoo\nSTR\n"],
-            [new String_("STRx", $nowdoc), "<<<'STR'\nSTRx\nSTR\n"],
-            [new String_("xSTR", $nowdoc), "<<<'STR'\nxSTR\nSTR\n"],
-            // Empty doc string variations (encapsed variant does not occur naturally)
-            [new String_("", $nowdoc), "<<<'STR'\nSTR\n"],
-            [new String_("", $heredoc), "<<<STR\nSTR\n"],
-            [new Encapsed([new EncapsedStringPart('')], $heredoc), "<<<STR\nSTR\n"],
-            // Encapsed doc string variations
-            [new Encapsed([new EncapsedStringPart('foo')], $heredoc), "<<<STR\nfoo\nSTR\n"],
-            [new Encapsed([new EncapsedStringPart('foo'), new Expr\Variable('y')], $heredoc), "<<<STR\nfoo{\$y}\nSTR\n"],
-            [new Encapsed([new EncapsedStringPart("\nSTR"), new Expr\Variable('y')], $heredoc), "<<<STR\n\nSTR{\$y}\nSTR\n"],
-            [new Encapsed([new EncapsedStringPart("\nSTR"), new Expr\Variable('y')], $heredoc), "<<<STR\n\nSTR{\$y}\nSTR\n"],
-            [new Encapsed([new Expr\Variable('y'), new EncapsedStringPart("STR\n")], $heredoc), "<<<STR\n{\$y}STR\n\nSTR\n"],
-            // Encapsed doc string fallback
-            [new Encapsed([new Expr\Variable('y'), new EncapsedStringPart("\nSTR")], $heredoc), '"{$y}\\nSTR"'],
-            [new Encapsed([new EncapsedStringPart("STR\n"), new Expr\Variable('y')], $heredoc), '"STR\\n{$y}"'],
-            [new Encapsed([new EncapsedStringPart("STR")], $heredoc), '"STR"'],
-        ];
-    }
-
-    /** @dataProvider provideTestUnnaturalLiterals */
-    public function testUnnaturalLiterals($node, $expected) {
-        $prttyPrinter = new PrettyPrinter\Standard;
-        $result = $prttyPrinter->prettyPrintExpr($node);
-        $this->assertSame($expected, $result);
-    }
-
-    public function provideTestUnnaturalLiterals() {
-        return [
-            [new LNumber(-1), '-1'],
-            [new LNumber(-PHP_INT_MAX - 1), '(-' . PHP_INT_MAX . '-1)'],
-            [new LNumber(-1, ['kind' => LNumber::KIND_BIN]), '-0b1'],
-            [new LNumber(-1, ['kind' => LNumber::KIND_OCT]), '-01'],
-            [new LNumber(-1, ['kind' => LNumber::KIND_HEX]), '-0x1'],
-            [new DNumber(\INF), '\INF'],
-            [new DNumber(-\INF), '-\INF'],
-            [new DNumber(-\NAN), '\NAN'],
-        ];
-    }
-
-    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())
-        )];
-        $prettyPrinter = new PrettyPrinter\Standard;
-        $prettyPrinter->prettyPrint($stmts);
-    }
-
-    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())
-        )];
-        $prettyPrinter = new PrettyPrinter\Standard;
-        $prettyPrinter->prettyPrint($stmts);
-    }
-
-    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);
-    }
-
-    /**
-     * @dataProvider provideTestFormatPreservingPrint
-     * @covers \PhpParser\PrettyPrinter\Standard<extended>
-     */
-    public function testFormatPreservingPrint($name, $code, $modification, $expected, $modeLine) {
-        $lexer = new Lexer\Emulative([
-            'usedAttributes' => [
-                'comments',
-                'startLine', 'endLine',
-                'startTokenPos', 'endTokenPos',
-            ],
-        ]);
-
-        $parser = new Parser\Php7($lexer);
-        $traverser = new NodeTraverser();
-        $traverser->addVisitor(new NodeVisitor\CloningVisitor());
-
-        $printer = new PrettyPrinter\Standard();
-
-        $oldStmts = $parser->parse($code);
-        $oldTokens = $lexer->getTokens();
-
-        $newStmts = $traverser->traverse($oldStmts);
-
-        /** @var callable $fn */
-        eval(<<<CODE
-use PhpParser\Comment;
-use PhpParser\Node;
-use PhpParser\Node\Expr;
-use PhpParser\Node\Scalar;
-use PhpParser\Node\Stmt;
-\$fn = function(&\$stmts) { $modification };
-CODE
-        );
-        $fn($newStmts);
-
-        $newCode = $printer->printFormatPreserving($newStmts, $oldStmts, $oldTokens);
-        $this->assertSame(canonicalize($expected), canonicalize($newCode), $name);
-    }
-
-    public function provideTestFormatPreservingPrint() {
-        return $this->getTests(__DIR__ . '/../code/formatPreservation', 'test', 3);
-    }
-
-    /**
-     * @dataProvider provideTestRoundTripPrint
-     * @covers \PhpParser\PrettyPrinter\Standard<extended>
-     */
-    public function testRoundTripPrint($name, $code, $expected, $modeLine) {
-        /**
-         * This test makes sure that the format-preserving pretty printer round-trips for all
-         * the pretty printer tests (i.e. returns the input if no changes occurred).
-         */
-
-        list($version) = $this->parseModeLine($modeLine);
-
-        $lexer = new Lexer\Emulative([
-            'usedAttributes' => [
-                'comments',
-                'startLine', 'endLine',
-                'startTokenPos', 'endTokenPos',
-            ],
-        ]);
-
-        $parserClass = $version === 'php5' ? Parser\Php5::class : Parser\Php7::class;
-        /** @var Parser $parser */
-        $parser = new $parserClass($lexer);
-
-        $traverser = new NodeTraverser();
-        $traverser->addVisitor(new NodeVisitor\CloningVisitor());
-
-        $printer = new PrettyPrinter\Standard();
-
-        try {
-            $oldStmts = $parser->parse($code);
-        } catch (Error $e) {
-            // Can't do a format-preserving print on a file with errors
-            return;
-        }
-
-        $oldTokens = $lexer->getTokens();
-
-        $newStmts = $traverser->traverse($oldStmts);
-
-        $newCode = $printer->printFormatPreserving($newStmts, $oldStmts, $oldTokens);
-        $this->assertSame(canonicalize($code), canonicalize($newCode), $name);
-    }
-
-    public function provideTestRoundTripPrint() {
-        return array_merge(
-            $this->getTests(__DIR__ . '/../code/prettyPrinter', 'test'),
-            $this->getTests(__DIR__ . '/../code/parser', 'test')
-        );
-    }
-}
diff --git a/vendor/nikic/php-parser/test/bootstrap.php b/vendor/nikic/php-parser/test/bootstrap.php
deleted file mode 100644
index 0bfa9d0ad7..0000000000
--- a/vendor/nikic/php-parser/test/bootstrap.php
+++ /dev/null
@@ -1,31 +0,0 @@
-<?php
-
-namespace PhpParser;
-
-require __DIR__ . '/../vendor/autoload.php';
-
-function canonicalize($str) {
-    // normalize EOL style
-    $str = str_replace("\r\n", "\n", $str);
-
-    // trim newlines at end
-    $str = rtrim($str, "\n");
-
-    // remove trailing whitespace on all lines
-    $lines = explode("\n", $str);
-    $lines = array_map(function($line) {
-        return rtrim($line, " \t");
-    }, $lines);
-    return implode("\n", $lines);
-}
-
-function filesInDir($directory, $fileExtension) {
-    $directory = realpath($directory);
-    $it = new \RecursiveDirectoryIterator($directory);
-    $it = new \RecursiveIteratorIterator($it, \RecursiveIteratorIterator::LEAVES_ONLY);
-    $it = new \RegexIterator($it, '(\.' . preg_quote($fileExtension) . '$)');
-    foreach ($it as $file) {
-        $fileName = $file->getPathname();
-        yield $fileName => file_get_contents($fileName);
-    }
-}
diff --git a/vendor/nikic/php-parser/test/code/formatPreservation/addingPropertyType.test b/vendor/nikic/php-parser/test/code/formatPreservation/addingPropertyType.test
deleted file mode 100644
index 2ef332b27e..0000000000
--- a/vendor/nikic/php-parser/test/code/formatPreservation/addingPropertyType.test
+++ /dev/null
@@ -1,39 +0,0 @@
-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
deleted file mode 100644
index b7896f22fb..0000000000
--- a/vendor/nikic/php-parser/test/code/formatPreservation/anonClasses.test
+++ /dev/null
@@ -1,28 +0,0 @@
-Anonymous classes
------
-<?php
-new class
-($x)
-  extends X
-{ };
------
-$new = $stmts[0]->expr;
-$new->class->extends = null;
-$new->args[] = new Expr\Variable('y');
------
-<?php
-new class
-($x, $y)
-{ };
------
-<?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
deleted file mode 100644
index ce83e1651a..0000000000
--- a/vendor/nikic/php-parser/test/code/formatPreservation/array_spread.test
+++ /dev/null
@@ -1,29 +0,0 @@
-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
deleted file mode 100644
index eeff36f7bb..0000000000
--- a/vendor/nikic/php-parser/test/code/formatPreservation/arrow_function.test
+++ /dev/null
@@ -1,97 +0,0 @@
-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/basic.test b/vendor/nikic/php-parser/test/code/formatPreservation/basic.test
deleted file mode 100644
index 48db7803cb..0000000000
--- a/vendor/nikic/php-parser/test/code/formatPreservation/basic.test
+++ /dev/null
@@ -1,190 +0,0 @@
-abc1
------
-<?php
-echo
-    1
-        +
-            2
-                +
-                    3;
------
-$stmts[0]->exprs[0]->left->right->value = 42;
------
-<?php
-echo
-    1
-        +
-            42
-                +
-                    3;
------
-<?php
-function foo($a)
-    { return $a; }
------
-$stmts[0]->name = new Node\Identifier('bar');
------
-<?php
-function bar($a)
-    { return $a; }
------
-<?php
-function
-foo() {
-    call(
-        $bar
-    );
-}
------
-// This triggers a fallback
-$stmts[0]->byRef = true;
------
-<?php
-function &foo()
-{
-    call(
-        $bar
-    );
-}
------
-<?php
-function
-foo() {
-echo "Start
-End";
-}
------
-// This triggers a fallback
-$stmts[0]->byRef = true;
------
-<?php
-function &foo()
-{
-    echo "Start
-End";
-}
------
-<?php
-function test() {
-    call1(
-        $bar
-    );
-}
-call2(
-    $foo
-);
------
-$tmp = $stmts[0]->stmts[0];
-$stmts[0]->stmts[0] = $stmts[1];
-$stmts[1] = $tmp;
------
-<?php
-function test() {
-    call2(
-        $foo
-    );
-}
-call1(
-    $bar
-);
------
-<?php
-x;
-function test() {
-    call1(
-        $bar
-    );
-}
-call2(
-    $foo
-);
------
-$tmp = $stmts[1]->stmts[0];
-$stmts[1]->stmts[0] = $stmts[2];
-$stmts[2] = $tmp;
-// Same test, but also removing first statement, triggering fallback
-array_splice($stmts, 0, 1, []);
------
-<?php
-
-function test() {
-    call2(
-        $foo
-    );
-}
-call1(
-    $bar
-);
------
-<?php
-    echo 1;
------
-$stmts[0] = new Stmt\Expression(
-    new Expr\Assign(new Expr\Variable('a'), new Expr\Variable('b')));
------
-<?php
-    $a = $b;
------
-<?php
-echo$a;
------
-$stmts[0]->exprs[0] = new Expr\ConstFetch(new Node\Name('C'));
------
-<?php
-echo C;
------
-<?php
-function foo() {
-    foo();
-    /*
-     * bar
-     */
-    baz();
-}
-
-{
-    $x;
-}
------
-$tmp = $stmts[0];
-$stmts[0] = $stmts[1];
-$stmts[1] = $tmp;
-/* TODO This used to do two replacement operations, but with the node list diffing this is a
- * remove, keep, add (which probably makes more sense). As such, this currently triggers a
- * fallback. */
------
-<?php
-
-$x;
-function foo() {
-    foo();
-    /*
-     * bar
-     */
-    baz();
-}
------
-<?php
-echo "${foo}bar";
-echo "${foo['baz']}bar";
------
-$stmts[0]->exprs[0]->parts[0] = new Expr\Variable('bar');
-$stmts[1]->exprs[0]->parts[0] = new Expr\Variable('bar');
------
-<?php
-echo "{$bar}bar";
-echo "{$bar}bar";
------
-<?php
-[$a
-,$b
-,
-,] = $b;
------
-/* Nothing */
------
-<?php
-[$a
-,$b
-,
-,] = $b;
\ No newline at end of file
diff --git a/vendor/nikic/php-parser/test/code/formatPreservation/blockConversion.test b/vendor/nikic/php-parser/test/code/formatPreservation/blockConversion.test
deleted file mode 100644
index 4c3c1e30e9..0000000000
--- a/vendor/nikic/php-parser/test/code/formatPreservation/blockConversion.test
+++ /dev/null
@@ -1,29 +0,0 @@
-It may be necessary to convert a single statement into a block
------
-<?php
-
-if
-($a) $b;
------
-// TODO Avoid fallback
-$stmts[0]->stmts[] = new Stmt\Expression(new Expr\Variable('c'));
------
-<?php
-
-if ($a) {
-    $b;
-    $c;
-}
------
-<?php
-
-if
-($a) {$b;}
------
-$stmts[0]->stmts[] = new Stmt\Expression(new Expr\Variable('c'));
------
-<?php
-
-if
-($a) {$b;
-$c;}
\ No newline at end of file
diff --git a/vendor/nikic/php-parser/test/code/formatPreservation/comments.test b/vendor/nikic/php-parser/test/code/formatPreservation/comments.test
deleted file mode 100644
index 61f21e2f56..0000000000
--- a/vendor/nikic/php-parser/test/code/formatPreservation/comments.test
+++ /dev/null
@@ -1,52 +0,0 @@
-Comment changes
------
-<?php
-// Test
-foo();
------
-$stmts[0]->setAttribute('comments', []);
------
-<?php
-foo();
------
-<?php
-$foo;
-
-
-/* bar */
-$baz;
------
-$comments = $stmts[1]->getComments();
-$comments[] = new Comment("// foo");
-$stmts[1]->setAttribute('comments', $comments);
------
-<?php
-$foo;
-
-
-/* bar */
-// foo
-$baz;
------
-<?php
-class Test {
-    /**
-     * @expectedException \FooException
-     */
-    public function test() {
-        // some code
-    }
-}
------
-$method = $stmts[0]->stmts[0];
-$method->setAttribute('comments', [new Comment\Doc("/**\n *\n */")]);
------
-<?php
-class Test {
-    /**
-     *
-     */
-    public function test() {
-        // some code
-    }
-}
\ No newline at end of file
diff --git a/vendor/nikic/php-parser/test/code/formatPreservation/emptyListInsertion.test b/vendor/nikic/php-parser/test/code/formatPreservation/emptyListInsertion.test
deleted file mode 100644
index ad3137bf68..0000000000
--- a/vendor/nikic/php-parser/test/code/formatPreservation/emptyListInsertion.test
+++ /dev/null
@@ -1,110 +0,0 @@
-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/fixup.test b/vendor/nikic/php-parser/test/code/formatPreservation/fixup.test
deleted file mode 100644
index e8870ae56b..0000000000
--- a/vendor/nikic/php-parser/test/code/formatPreservation/fixup.test
+++ /dev/null
@@ -1,67 +0,0 @@
-Fixup for precedence and some special syntax
------
-<?php
-$a ** $b  *  $c;
-$a  +  $b * $c;
-$a * $b  +  $c;
-$a  ?  $b  :  $c;
-($a ** $b)  *  $c;
-( $a ** $b )  *  $c;
-!$a = $b;
------
-// Parens necessary
-$stmts[0]->expr->left = new Expr\BinaryOp\Plus(new Expr\Variable('a'), new Expr\Variable('b'));
-// The parens here are "correct", because add is left assoc
-$stmts[1]->expr->right = new Expr\BinaryOp\Plus(new Expr\Variable('b'), new Expr\Variable('c'));
-// No parens necessary
-$stmts[2]->expr->left = new Expr\BinaryOp\Plus(new Expr\Variable('a'), new Expr\Variable('b'));
-// Parens for RHS not strictly necessary due to assign speciality
-$stmts[3]->expr->cond = new Expr\Assign(new Expr\Variable('a'), new Expr\Variable('b'));
-$stmts[3]->expr->if = new Expr\Assign(new Expr\Variable('a'), new Expr\Variable('b'));
-$stmts[3]->expr->else = new Expr\Assign(new Expr\Variable('a'), new Expr\Variable('b'));
-// Already has parens
-$stmts[4]->expr->left = new Expr\BinaryOp\Plus(new Expr\Variable('a'), new Expr\Variable('b'));
-$stmts[5]->expr->left = new Expr\BinaryOp\Plus(new Expr\Variable('a'), new Expr\Variable('b'));
------
-<?php
-($a + $b)  *  $c;
-$a  +  ($b + $c);
-$a + $b  +  $c;
-($a = $b)  ?  $a = $b  :  ($a = $b);
-($a + $b)  *  $c;
-( $a + $b )  *  $c;
-!$a = $b;
------
-<?php
-foo ();
-foo ();
-$foo -> bar;
-$foo -> bar;
-$foo -> bar;
-$foo -> bar;
-$foo -> bar;
-self :: $foo;
-self :: $foo;
------
-$stmts[0]->expr->name = new Expr\Variable('a');
-$stmts[1]->expr->name = new Expr\BinaryOp\Concat(new Expr\Variable('a'), new Expr\Variable('b'));
-$stmts[2]->expr->var = new Expr\Variable('bar');
-$stmts[3]->expr->var = new Expr\BinaryOp\Concat(new Expr\Variable('a'), new Expr\Variable('b'));
-$stmts[4]->expr->name = new Node\Identifier('foo');
-// In this case the braces are not strictly necessary. However, on PHP 5 they may be required
-// depending on where the property fetch node itself occurs.
-$stmts[5]->expr->name = new Expr\Variable('bar');
-$stmts[6]->expr->name = new Expr\BinaryOp\Concat(new Expr\Variable('a'), new Expr\Variable('b'));
-$stmts[7]->expr->name = new Node\VarLikeIdentifier('bar');
-$stmts[8]->expr->name = new Expr\BinaryOp\Concat(new Expr\Variable('a'), new Expr\Variable('b'));
------
-<?php
-$a ();
-($a . $b) ();
-$bar -> bar;
-($a . $b) -> bar;
-$foo -> foo;
-$foo -> {$bar};
-$foo -> {$a . $b};
-self :: $bar;
-self :: ${$a . $b};
\ No newline at end of file
diff --git a/vendor/nikic/php-parser/test/code/formatPreservation/inlineHtml.test b/vendor/nikic/php-parser/test/code/formatPreservation/inlineHtml.test
deleted file mode 100644
index 7494e53597..0000000000
--- a/vendor/nikic/php-parser/test/code/formatPreservation/inlineHtml.test
+++ /dev/null
@@ -1,54 +0,0 @@
-Handling of inline HTML
------
-<?php
-
-function test() {
-    ?>Foo<?php
-}
------
-$stmts[0]->setAttribute('origNode', null);
------
-<?php
-
-function test()
-{
-    ?>Foo<?php
-}
------
-<?php
-
-function test() {
-    foo();
-    ?>Bar<?php
-    baz();
-}
------
-// TODO Fix broken result
-$stmts[0]->stmts[2] = $stmts[0]->stmts[1];
------
-<?php
-
-function test() {
-    foo();
-    ?>Bar<?php
-    Bar
-}
------
-<?php
-
-function test() {
-    foo();
-    ?>Bar<?php
-    baz();
-}
------
-// TODO Fix broken result
-$stmts[0]->stmts[1] = $stmts[0]->stmts[2];
------
-<?php
-
-function test() {
-    foo();<?php
-    baz();
-    baz();
-}
\ No newline at end of file
diff --git a/vendor/nikic/php-parser/test/code/formatPreservation/insertionOfNullable.test b/vendor/nikic/php-parser/test/code/formatPreservation/insertionOfNullable.test
deleted file mode 100644
index 79effd11c3..0000000000
--- a/vendor/nikic/php-parser/test/code/formatPreservation/insertionOfNullable.test
+++ /dev/null
@@ -1,176 +0,0 @@
-Insertion of a nullable node
------
-<?php
-
-// TODO: The result spacing isn't always optimal. We may want to skip whitespace in some cases.
-
-function
-foo(
-$x,
-&$y
-)
-{}
-
-$foo
-[
-];
-
-[
-    $value
-];
-
-function
-()
-{};
-
-$x
-?
-:
-$y;
-
-yield
-$v  ;
-yield  ;
-
-break
-;
-continue
-;
-return
-;
-
-class
-X
-{
-    public
-    function y()
-    {}
-
-    private
-        $x
-    ;
-}
-
-foreach (
-    $x
-    as
-    $y
-) {}
-
-static
-$var
-;
-
-try {
-} catch (X
-$y) {
-}
-
-if ($cond) { // Foo
-} elseif ($cond2) { // Bar
-}
------
-$stmts[0]->returnType = new Node\Name('Foo');
-$stmts[0]->params[0]->type = new Node\Identifier('int');
-$stmts[0]->params[1]->type = new Node\Identifier('array');
-$stmts[0]->params[1]->default = new Expr\ConstFetch(new Node\Name('null'));
-$stmts[1]->expr->dim = new Expr\Variable('a');
-$stmts[2]->expr->items[0]->key = new Scalar\String_('X');
-$stmts[3]->expr->returnType = new Node\Name('Bar');
-$stmts[4]->expr->if = new Expr\Variable('z');
-$stmts[5]->expr->key = new Expr\Variable('k');
-$stmts[6]->expr->value = new Expr\Variable('v');
-$stmts[7]->num = new Scalar\LNumber(2);
-$stmts[8]->num = new Scalar\LNumber(2);
-$stmts[9]->expr = new Expr\Variable('x');
-$stmts[10]->extends = new Node\Name\FullyQualified('Bar');
-$stmts[10]->stmts[0]->returnType = new Node\Name('Y');
-$stmts[10]->stmts[1]->props[0]->default = new Scalar\DNumber(42.0);
-$stmts[11]->keyVar = new Expr\Variable('z');
-$stmts[12]->vars[0]->default = new Scalar\String_('abc');
-$stmts[13]->finally = new Stmt\Finally_([]);
-$stmts[14]->else = new Stmt\Else_([]);
------
-<?php
-
-// TODO: The result spacing isn't always optimal. We may want to skip whitespace in some cases.
-
-function
-foo(
-int $x,
-array &$y = null
-) : Foo
-{}
-
-$foo
-[$a
-];
-
-[
-    'X' => $value
-];
-
-function
-() : Bar
-{};
-
-$x
-? $z
-:
-$y;
-
-yield
-$k => $v  ;
-yield $v  ;
-
-break 2
-;
-continue 2
-;
-return $x
-;
-
-class
-X extends \Bar
-{
-    public
-    function y() : Y
-    {}
-
-    private
-        $x = 42.0
-    ;
-}
-
-foreach (
-    $x
-    as
-    $z => $y
-) {}
-
-static
-$var = 'abc'
-;
-
-try {
-} catch (X
-$y) {
-} finally {
-}
-
-if ($cond) { // Foo
-} elseif ($cond2) { // Bar
-} else {
-}
------
-<?php
-
-namespace
-{ echo 42; }
------
-$stmts[0]->name = new Node\Name('Foo');
------
-<?php
-
-namespace Foo
-{ echo 42; }
\ 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
deleted file mode 100644
index 9211958d7d..0000000000
--- a/vendor/nikic/php-parser/test/code/formatPreservation/listInsertion.test
+++ /dev/null
@@ -1,309 +0,0 @@
-Insertion into list nodes
------
-<?php
-$foo;
-
-$bar;
------
-$stmts[] = new Stmt\Expression(new Expr\Variable('baz'));
------
-<?php
-$foo;
-
-$bar;
-$baz;
------
-<?php
-
-function test() {
-    $foo;
-
-    $bar;
-}
------
-$stmts[0]->stmts[] = new Stmt\Expression(new Expr\Variable('baz'));
------
-<?php
-
-function test() {
-    $foo;
-
-    $bar;
-    $baz;
-}
------
-<?php
-
-function test(Foo     $param1) {}
------
-$stmts[0]->params[] = new Node\Param(new Expr\Variable('param2'));
------
-<?php
-
-function test(Foo     $param1, $param2) {}
------
-<?php
-
-try {
-    /* stuff */
-} catch
-(Foo $x) {}
------
-$stmts[0]->catches[0]->types[] = new Node\Name('Bar');
------
-<?php
-
-try {
-    /* stuff */
-} catch
-(Foo|Bar $x) {}
------
-<?php
-
-function test(Foo     $param1) {}
------
-array_unshift($stmts[0]->params, new Node\Param(new Expr\Variable('param0')));
------
-<?php
-
-function test($param0, Foo     $param1) {}
------
-<?php
-
-function test() {}
------
-$stmts[0]->params[] = new Node\Param(new Expr\Variable('param0'));
------
-<?php
-
-function test($param0) {}
------
-<?php
-
-if ($cond) {
-} elseif ($cond2) {
-}
------
-$stmts[0]->elseifs[] = new Stmt\ElseIf_(new Expr\Variable('cond3'), []);
------
-<?php
-
-if ($cond) {
-} elseif ($cond2) {
-} elseif ($cond3) {
-}
------
-<?php
-
-try {
-} catch (Foo $foo) {
-}
------
-$stmts[0]->catches[] = new Stmt\Catch_([new Node\Name('Bar')], new Expr\Variable('bar'), []);
------
-<?php
-
-try {
-} catch (Foo $foo) {
-} catch (Bar $bar) {
-}
------
-<?php
-$foo; $bar;
------
-$node = new Stmt\Expression(new Expr\Variable('baz'));
-$node->setAttribute('comments', [new Comment('// Test')]);
-$stmts[] = $node;
------
-<?php
-$foo; $bar;
-// Test
-$baz;
------
-<?php
-function test() {
-    $foo; $bar;
-}
------
-$node = new Stmt\Expression(new Expr\Variable('baz'));
-$node->setAttribute('comments', [new Comment('// Test'), new Comment('// Test 2')]);
-$stmts[0]->stmts[] = $node;
------
-<?php
-function test() {
-    $foo; $bar;
-    // Test
-    // Test 2
-    $baz;
-}
------
-<?php
-namespace
-Foo;
------
-$stmts[0]->name->parts[0] = 'Xyz';
------
-<?php
-namespace
-Xyz;
------
-<?php
-function test() {
-    $foo; $bar;
-}
------
-$node = new Stmt\Expression(new Expr\Variable('baz'));
-array_unshift($stmts[0]->stmts, $node);
------
-<?php
-function test() {
-    $baz;
-    $foo; $bar;
-}
------
-<?php
-function test() {
-    $foo; $bar;
-}
------
-$node = new Stmt\Expression(new Expr\Variable('baz'));
-$node->setAttribute('comments', [new Comment('// Test')]);
-array_unshift($stmts[0]->stmts, $node);
------
-<?php
-function test() {
-    // Test
-    $baz;
-    $foo; $bar;
-}
------
-<?php
-function test() {
-
-    // Foo bar
-    $foo; $bar;
-}
------
-$node = new Stmt\Expression(new Expr\Variable('baz'));
-$node->setAttribute('comments', [new Comment('// Test')]);
-array_unshift($stmts[0]->stmts, $node);
------
-<?php
-function test() {
-
-    // Test
-    $baz;
-    // Foo bar
-    $foo; $bar;
-}
------
-<?php
-function test() {
-
-    // Foo bar
-    $foo; $bar;
-}
------
-$node = new Stmt\Expression(new Expr\Variable('baz'));
-$node->setAttribute('comments', [new Comment('// Test')]);
-array_unshift($stmts[0]->stmts, $node);
-$stmts[0]->stmts[1]->setAttribute('comments', [new Comment('// Bar foo')]);
------
-<?php
-function test() {
-
-    // Test
-    $baz;
-    // Bar foo
-    $foo; $bar;
-}
------
-<?php
-function test() {
-
-    // Foo bar
-    $foo; $bar;
-}
------
-$node = new Stmt\Expression(new Expr\Variable('baz'));
-$node->setAttribute('comments', [new Comment('// Test')]);
-array_unshift($stmts[0]->stmts, $node);
-$stmts[0]->stmts[1]->setAttribute('comments', []);
------
-<?php
-function test() {
-
-    // Test
-    $baz;
-    $foo; $bar;
-}
------
-<?php
-function test() {
-
-    // Foo bar
-    $foo; $bar;
-}
------
-array_unshift(
-    $stmts[0]->stmts,
-    new Stmt\Expression(new Expr\Variable('a')),
-    new Stmt\Expression(new Expr\Variable('b')));
------
-<?php
-function test() {
-
-    $a;
-    $b;
-    // Foo bar
-    $foo; $bar;
-}
------
-<?php
-function test() {}
------
-/* Insertion into empty list not handled yet */
-$stmts[0]->stmts = [
-    new Stmt\Expression(new Expr\Variable('a')),
-    new Stmt\Expression(new Expr\Variable('b')),
-];
------
-<?php
-function test()
-{
-    $a;
-    $b;
-}
------
-<?php
-$array = [
-    1,
-    2,
-    3,
-];
------
-array_unshift($stmts[0]->expr->expr->items, new Expr\ArrayItem(new Scalar\LNumber(42)));
-$stmts[0]->expr->expr->items[] = new Expr\ArrayItem(new Scalar\LNumber(24));
------
-<?php
-$array = [
-    42,
-    1,
-    2,
-    3,
-    24,
-];
------
-<?php
-$array = [
-    1, 2,
-    3,
-];
------
-$stmts[0]->expr->expr->items[] = new Expr\ArrayItem(new Scalar\LNumber(24));
------
-<?php
-$array = [
-    1, 2,
-    3, 24,
-];
\ No newline at end of file
diff --git a/vendor/nikic/php-parser/test/code/formatPreservation/listInsertionIndentation.test b/vendor/nikic/php-parser/test/code/formatPreservation/listInsertionIndentation.test
deleted file mode 100644
index ffcc6cfb5b..0000000000
--- a/vendor/nikic/php-parser/test/code/formatPreservation/listInsertionIndentation.test
+++ /dev/null
@@ -1,17 +0,0 @@
-Check correct indentation use when inserting into list node
------
-<?php
-$this->foo = new Foo;
-$this->foo->a()
-          ->b();
------
-$outerCall = $stmts[1]->expr;
-$innerCall = $outerCall->var;
-$var = $innerCall->var;
-$stmts[1]->expr = $innerCall;
-$stmts[2] = new Stmt\Expression(new Expr\MethodCall($var, $outerCall->name));
------
-<?php
-$this->foo = new Foo;
-$this->foo->a();
-$this->foo->b();
\ No newline at end of file
diff --git a/vendor/nikic/php-parser/test/code/formatPreservation/listRemoval.test b/vendor/nikic/php-parser/test/code/formatPreservation/listRemoval.test
deleted file mode 100644
index 0ac423901b..0000000000
--- a/vendor/nikic/php-parser/test/code/formatPreservation/listRemoval.test
+++ /dev/null
@@ -1,41 +0,0 @@
-Removing from list nodes
------
-<?php $foo; $bar; $baz;
------
-array_splice($stmts, 1, 1, []);
------
-<?php $foo; $baz;
------
-<?php
-function foo(
-    $a,
-    $b,
-    $c
-) {}
------
-array_pop($stmts[0]->params);
------
-<?php
-function foo(
-    $a,
-    $b
-) {}
------
-<?php
-function foo(
-    $a,
-    $b,
-    $c
-) {}
------
-array_pop($stmts[0]->params);
-$stmts[0]->params[] = new Node\Param(new Expr\Variable('x'));
-$stmts[0]->params[] = new Node\Param(new Expr\Variable('y'));
------
-<?php
-function foo(
-    $a,
-    $b,
-    $x,
-    $y
-) {}
\ No newline at end of file
diff --git a/vendor/nikic/php-parser/test/code/formatPreservation/modifierChange.test b/vendor/nikic/php-parser/test/code/formatPreservation/modifierChange.test
deleted file mode 100644
index 06dba62dce..0000000000
--- a/vendor/nikic/php-parser/test/code/formatPreservation/modifierChange.test
+++ /dev/null
@@ -1,33 +0,0 @@
-Modifier change
------
-<?php
-class Foo {}
-abstract class Bar {
-    const
-    FOO = 42;
-
-    var $foo
-    = 24;
-
-    public function
-    foo() {}
-}
------
-$stmts[0]->flags = Stmt\Class_::MODIFIER_ABSTRACT;
-$stmts[1]->flags = 0;
-$stmts[1]->stmts[0]->flags = Stmt\Class_::MODIFIER_PRIVATE;
-$stmts[1]->stmts[1]->flags = Stmt\Class_::MODIFIER_PROTECTED;
-$stmts[1]->stmts[2]->flags |= Stmt\Class_::MODIFIER_FINAL;
------
-<?php
-abstract class Foo {}
-class Bar {
-    private const
-    FOO = 42;
-
-    protected $foo
-    = 24;
-
-    public final function
-    foo() {}
-}
\ No newline at end of file
diff --git a/vendor/nikic/php-parser/test/code/formatPreservation/nopCommentAtEnd.test b/vendor/nikic/php-parser/test/code/formatPreservation/nopCommentAtEnd.test
deleted file mode 100644
index 059b5f113b..0000000000
--- a/vendor/nikic/php-parser/test/code/formatPreservation/nopCommentAtEnd.test
+++ /dev/null
@@ -1,11 +0,0 @@
-Nop statement with comment at end (#513)
------
-<?php
-$foo;
-$bar;
------
-$stmts[1] = new Stmt\Nop(['comments' => [new Comment('//Some comment here')]]);
------
-<?php
-$foo;
-//Some comment here
\ No newline at end of file
diff --git a/vendor/nikic/php-parser/test/code/formatPreservation/removalViaNull.test b/vendor/nikic/php-parser/test/code/formatPreservation/removalViaNull.test
deleted file mode 100644
index da6fdaa9ff..0000000000
--- a/vendor/nikic/php-parser/test/code/formatPreservation/removalViaNull.test
+++ /dev/null
@@ -1,194 +0,0 @@
-Removing subnodes by setting them to null
------
-<?php
-function
-foo (
-    Bar $foo
-        = null,
-    Foo $bar) : baz
-{}
-
-function
-()
-: int
-{};
-
-class
-Foo
-extends
-Bar
-{
-    public
-    function
-    foo() : ?X {}
-
-    public
-      $prop = 'x'
-    ;
-
-    use T {
-        T
-        ::
-        x
-        as
-        public
-        y
-        ;
-    }
-}
-
-$foo [ $bar ];
-exit ( $bar );
-$foo
-? $bar :
-$baz;
-[ $a => $b
-, $c => $d];
-
-yield
-$foo
-=>
-$bar;
-yield
-$bar;
-
-break
-2
-;
-continue
-2
-;
-
-foreach(
-    $array
-as
-    $key
- =>
-    $value
-) {}
-
-if
-($x)
-{
-}
-
-else {}
-
-return
-$val
-;
-static
-  $x
-  =
-  $y
-;
-
-try {} catch
-  (X $y)
-  {}
-finally
-{}
------
-$stmts[0]->returnType = null;
-$stmts[0]->params[0]->default = null;
-$stmts[0]->params[1]->type = null;
-$stmts[1]->expr->returnType = null;
-$stmts[2]->extends = null;
-$stmts[2]->stmts[0]->returnType = null;
-$stmts[2]->stmts[1]->props[0]->default = null;
-$stmts[2]->stmts[2]->adaptations[0]->newName = null;
-$stmts[3]->expr->dim = null;
-$stmts[4]->expr->expr = null;
-$stmts[5]->expr->if = null;
-$stmts[6]->expr->items[1]->key = null;
-$stmts[7]->expr->key = null;
-$stmts[8]->expr->value = null;
-$stmts[9]->num = null;
-$stmts[10]->num = null;
-$stmts[11]->keyVar = null;
-$stmts[12]->else = null;
-$stmts[13]->expr = null;
-$stmts[14]->vars[0]->default = null;
-$stmts[15]->finally = null;
------
-<?php
-function
-foo (
-    Bar $foo,
-    $bar)
-{}
-
-function
-()
-{};
-
-class
-Foo
-{
-    public
-    function
-    foo() {}
-
-    public
-      $prop
-    ;
-
-    use T {
-        T
-        ::
-        x
-        as
-        public
-        ;
-    }
-}
-
-$foo [];
-exit ();
-$foo
-?:
-$baz;
-[ $a => $b
-, $d];
-
-yield
-$bar;
-yield;
-
-break;
-continue;
-
-foreach(
-    $array
-as
-    $value
-) {}
-
-if
-($x)
-{
-}
-
-return;
-static
-  $x
-;
-
-try {} catch
-  (X $y)
-  {}
------
-<?php
-
-namespace
-A
-    {
-    }
------
-$stmts[0]->name = null;
------
-<?php
-
-namespace
-    {
-    }
\ No newline at end of file
diff --git a/vendor/nikic/php-parser/test/code/formatPreservation/removingPropertyType.test b/vendor/nikic/php-parser/test/code/formatPreservation/removingPropertyType.test
deleted file mode 100644
index 37b174c10d..0000000000
--- a/vendor/nikic/php-parser/test/code/formatPreservation/removingPropertyType.test
+++ /dev/null
@@ -1,22 +0,0 @@
-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/formatPreservation/traitAlias.test b/vendor/nikic/php-parser/test/code/formatPreservation/traitAlias.test
deleted file mode 100644
index 8774bb6f35..0000000000
--- a/vendor/nikic/php-parser/test/code/formatPreservation/traitAlias.test
+++ /dev/null
@@ -1,19 +0,0 @@
-Trait alias
------
-<?php
-class X {
-    use T {
-        exit
-            as die;
-    }
-}
------
-/* do nothing */
------
-<?php
-class X {
-    use T {
-        exit
-            as die;
-    }
-}
\ No newline at end of file
diff --git a/vendor/nikic/php-parser/test/code/parser/blockComments.test b/vendor/nikic/php-parser/test/code/parser/blockComments.test
deleted file mode 100644
index 8cfe166d74..0000000000
--- a/vendor/nikic/php-parser/test/code/parser/blockComments.test
+++ /dev/null
@@ -1,36 +0,0 @@
-Comments on blocks
------
-<?php
-
-// foo
-{
-    // bar
-    {
-        // baz
-        $a;
-    }
-}
-
-// empty
-{}
------
-array(
-    0: Stmt_Expression(
-        expr: Expr_Variable(
-            name: a
-            comments: array(
-                0: // baz
-            )
-        )
-        comments: array(
-            0: // foo
-            1: // bar
-            2: // baz
-        )
-    )
-    1: Stmt_Nop(
-        comments: array(
-            0: // empty
-        )
-    )
-)
\ No newline at end of file
diff --git a/vendor/nikic/php-parser/test/code/parser/commentAtEndOfClass.test b/vendor/nikic/php-parser/test/code/parser/commentAtEndOfClass.test
deleted file mode 100644
index 8096b73bd7..0000000000
--- a/vendor/nikic/php-parser/test/code/parser/commentAtEndOfClass.test
+++ /dev/null
@@ -1,38 +0,0 @@
-Comment at end of class (#509)
------
-<?php
-class MyClass {
-    protected $a;
-    // my comment
-}
------
-array(
-    0: Stmt_Class(
-        flags: 0
-        name: Identifier(
-            name: MyClass
-        )
-        extends: null
-        implements: array(
-        )
-        stmts: array(
-            0: Stmt_Property(
-                flags: MODIFIER_PROTECTED (2)
-                type: null
-                props: array(
-                    0: Stmt_PropertyProperty(
-                        name: VarLikeIdentifier(
-                            name: a
-                        )
-                        default: null
-                    )
-                )
-            )
-            1: Stmt_Nop(
-                comments: array(
-                    0: // my comment
-                )
-            )
-        )
-    )
-)
\ No newline at end of file
diff --git a/vendor/nikic/php-parser/test/code/parser/comments.test b/vendor/nikic/php-parser/test/code/parser/comments.test
deleted file mode 100644
index 90b6b1f079..0000000000
--- a/vendor/nikic/php-parser/test/code/parser/comments.test
+++ /dev/null
@@ -1,108 +0,0 @@
-Comments
------
-<?php
-
-/** doc 1 */
-/* foobar 1 */
-// foo 1
-// bar 1
-$var;
-
-if ($cond) {
-    /** doc 2 */
-    /* foobar 2 */
-    // foo 2
-    // bar 2
-}
-
-/** doc 3 */
-/* foobar 3 */
-// foo 3
-// bar 3
------
-array(
-    0: Stmt_Expression(
-        expr: Expr_Variable(
-            name: var
-            comments: array(
-                0: /** doc 1 */
-                1: /* foobar 1 */
-                2: // foo 1
-                3: // bar 1
-            )
-        )
-        comments: array(
-            0: /** doc 1 */
-            1: /* foobar 1 */
-            2: // foo 1
-            3: // bar 1
-        )
-    )
-    1: Stmt_If(
-        cond: Expr_Variable(
-            name: cond
-        )
-        stmts: array(
-            0: Stmt_Nop(
-                comments: array(
-                    0: /** doc 2 */
-                    1: /* foobar 2 */
-                    2: // foo 2
-                    3: // bar 2
-                )
-            )
-        )
-        elseifs: array(
-        )
-        else: null
-    )
-    2: Stmt_Nop(
-        comments: array(
-            0: /** doc 3 */
-            1: /* foobar 3 */
-            2: // foo 3
-            3: // bar 3
-        )
-    )
-)
------
-<?php
-
-/** doc */
-/* foobar */
-// foo
-// bar
-
-?>
------
-array(
-    0: Stmt_Nop(
-        comments: array(
-            0: /** doc */
-            1: /* foobar */
-            2: // foo
-            3: // bar
-        )
-    )
-)
------
-<?php
-
-// comment
-if (42) {}
------
-array(
-    0: Stmt_If(
-        cond: Scalar_LNumber(
-            value: 42
-        )
-        stmts: array(
-        )
-        elseifs: array(
-        )
-        else: null
-        comments: array(
-            0: // comment
-        )
-    )
-)
\ No newline at end of file
diff --git a/vendor/nikic/php-parser/test/code/parser/errorHandling/eofError.test b/vendor/nikic/php-parser/test/code/parser/errorHandling/eofError.test
deleted file mode 100644
index 012841def0..0000000000
--- a/vendor/nikic/php-parser/test/code/parser/errorHandling/eofError.test
+++ /dev/null
@@ -1,36 +0,0 @@
-Error positions
------
-<?php foo
------
-Syntax error, unexpected EOF from 1:10 to 1:10
-array(
-    0: Stmt_Expression(
-        expr: Expr_ConstFetch(
-            name: Name(
-                parts: array(
-                    0: foo
-                )
-            )
-        )
-    )
-)
------
-<?php foo /* bar */
------
-Syntax error, unexpected EOF from 1:20 to 1:20
-array(
-    0: Stmt_Expression(
-        expr: Expr_ConstFetch(
-            name: Name(
-                parts: array(
-                    0: foo
-                )
-            )
-        )
-    )
-    1: Stmt_Nop(
-        comments: array(
-            0: /* bar */
-        )
-    )
-)
\ No newline at end of file
diff --git a/vendor/nikic/php-parser/test/code/parser/errorHandling/lexerErrors.test b/vendor/nikic/php-parser/test/code/parser/errorHandling/lexerErrors.test
deleted file mode 100644
index 163b743ade..0000000000
--- a/vendor/nikic/php-parser/test/code/parser/errorHandling/lexerErrors.test
+++ /dev/null
@@ -1,140 +0,0 @@
-Lexer errors
------
-<?php
-
-$a = 42;
-/*
-$b = 24;
------
-Unterminated comment from 4:1 to 5:9
-array(
-    0: Stmt_Expression(
-        expr: Expr_Assign(
-            var: Expr_Variable(
-                name: a
-            )
-            expr: Scalar_LNumber(
-                value: 42
-            )
-        )
-    )
-    1: Stmt_Nop(
-        comments: array(
-            0: /*
-            $b = 24;
-        )
-    )
-)
------
-<?php
-
-$a = 42;
-@@{ "\1" }@@
-$b = 24;
------
-Unexpected character "" (ASCII 1) from 4:1 to 4:1
-array(
-    0: Stmt_Expression(
-        expr: Expr_Assign(
-            var: Expr_Variable(
-                name: a
-            )
-            expr: Scalar_LNumber(
-                value: 42
-            )
-        )
-    )
-    1: Stmt_Expression(
-        expr: Expr_Assign(
-            var: Expr_Variable(
-                name: b
-            )
-            expr: Scalar_LNumber(
-                value: 24
-            )
-        )
-    )
-)
------
-<?php
-
-$a = 42;
-@@{ "\0" }@@
-$b = 24;
------
-Unexpected null byte from 4:1 to 4:1
-array(
-    0: Stmt_Expression(
-        expr: Expr_Assign(
-            var: Expr_Variable(
-                name: a
-            )
-            expr: Scalar_LNumber(
-                value: 42
-            )
-        )
-    )
-    1: Stmt_Expression(
-        expr: Expr_Assign(
-            var: Expr_Variable(
-                name: b
-            )
-            expr: Scalar_LNumber(
-                value: 24
-            )
-        )
-    )
-)
------
-<?php
-
-$a = 1;
-@@{ "\1" }@@
-$b = 2;
-@@{ "\2" }@@
-$c = 3;
------
-Unexpected character "@@{ "\1" }@@" (ASCII 1) from 4:1 to 4:1
-Unexpected character "@@{ "\2" }@@" (ASCII 2) from 6:1 to 6:1
-array(
-    0: Stmt_Expression(
-        expr: Expr_Assign(
-            var: Expr_Variable(
-                name: a
-            )
-            expr: Scalar_LNumber(
-                value: 1
-            )
-        )
-    )
-    1: Stmt_Expression(
-        expr: Expr_Assign(
-            var: Expr_Variable(
-                name: b
-            )
-            expr: Scalar_LNumber(
-                value: 2
-            )
-        )
-    )
-    2: Stmt_Expression(
-        expr: Expr_Assign(
-            var: Expr_Variable(
-                name: c
-            )
-            expr: Scalar_LNumber(
-                value: 3
-            )
-        )
-    )
-)
------
-<?php
-
-if ($b) {
-    $a = 1;
-    /* unterminated
-}
------
-Unterminated comment from 5:5 to 6:2
-Syntax error, unexpected EOF from 6:2 to 6:2
\ No newline at end of file
diff --git a/vendor/nikic/php-parser/test/code/parser/errorHandling/recovery.test b/vendor/nikic/php-parser/test/code/parser/errorHandling/recovery.test
deleted file mode 100644
index a9fd49d0d6..0000000000
--- a/vendor/nikic/php-parser/test/code/parser/errorHandling/recovery.test
+++ /dev/null
@@ -1,1417 +0,0 @@
-Error recovery
------
-<?php
-
-foo()
-bar()
-baz()
------
-Syntax error, unexpected T_STRING from 4:1 to 4:3
-Syntax error, unexpected T_STRING from 5:1 to 5:3
-Syntax error, unexpected EOF from 5:6 to 5:6
-array(
-    0: Stmt_Expression(
-        expr: Expr_FuncCall(
-            name: Name(
-                parts: array(
-                    0: foo
-                )
-            )
-            args: array(
-            )
-        )
-    )
-    1: Stmt_Expression(
-        expr: Expr_FuncCall(
-            name: Name(
-                parts: array(
-                    0: bar
-                )
-            )
-            args: array(
-            )
-        )
-    )
-    2: Stmt_Expression(
-        expr: Expr_FuncCall(
-            name: Name(
-                parts: array(
-                    0: baz
-                )
-            )
-            args: array(
-            )
-        )
-    )
-)
------
-<?php
-
-foo()
-bar();
-baz();
------
-Syntax error, unexpected T_STRING from 4:1 to 4:3
-array(
-    0: Stmt_Expression(
-        expr: Expr_FuncCall(
-            name: Name(
-                parts: array(
-                    0: foo
-                )
-            )
-            args: array(
-            )
-        )
-    )
-    1: Stmt_Expression(
-        expr: Expr_FuncCall(
-            name: Name(
-                parts: array(
-                    0: bar
-                )
-            )
-            args: array(
-            )
-        )
-    )
-    2: Stmt_Expression(
-        expr: Expr_FuncCall(
-            name: Name(
-                parts: array(
-                    0: baz
-                )
-            )
-            args: array(
-            )
-        )
-    )
-)
------
-<?php
-
-foo();
-bar()
-baz();
------
-Syntax error, unexpected T_STRING from 5:1 to 5:3
-array(
-    0: Stmt_Expression(
-        expr: Expr_FuncCall(
-            name: Name(
-                parts: array(
-                    0: foo
-                )
-            )
-            args: array(
-            )
-        )
-    )
-    1: Stmt_Expression(
-        expr: Expr_FuncCall(
-            name: Name(
-                parts: array(
-                    0: bar
-                )
-            )
-            args: array(
-            )
-        )
-    )
-    2: Stmt_Expression(
-        expr: Expr_FuncCall(
-            name: Name(
-                parts: array(
-                    0: baz
-                )
-            )
-            args: array(
-            )
-        )
-    )
-)
------
-<?php
-abc;
-1 + ;
------
-Syntax error, unexpected ';' from 3:5 to 3:5
-array(
-    0: Stmt_Expression(
-        expr: Expr_ConstFetch(
-            name: Name(
-                parts: array(
-                    0: abc
-                )
-            )
-        )
-    )
-    1: Stmt_Expression(
-        expr: Scalar_LNumber(
-            value: 1
-        )
-    )
-)
------
-<?php
-function test() {
-    1 +
-}
------
-Syntax error, unexpected '}' from 4:1 to 4:1
-array(
-    0: Stmt_Function(
-        byRef: false
-        name: Identifier(
-            name: test
-        )
-        params: array(
-        )
-        returnType: null
-        stmts: array(
-            0: Stmt_Expression(
-                expr: Scalar_LNumber(
-                    value: 1
-                )
-            )
-        )
-    )
-)
------
-<?php
-
-$i = 0;
-while
-
-$j = 1;
-$k = 2;
------
-Syntax error, unexpected T_VARIABLE, expecting '(' from 6:1 to 6:2
-array(
-    0: Stmt_Expression(
-        expr: Expr_Assign(
-            var: Expr_Variable(
-                name: i
-            )
-            expr: Scalar_LNumber(
-                value: 0
-            )
-        )
-    )
-    1: Stmt_Expression(
-        expr: Expr_Assign(
-            var: Expr_Variable(
-                name: j
-            )
-            expr: Scalar_LNumber(
-                value: 1
-            )
-        )
-    )
-    2: Stmt_Expression(
-        expr: Expr_Assign(
-            var: Expr_Variable(
-                name: k
-            )
-            expr: Scalar_LNumber(
-                value: 2
-            )
-        )
-    )
-)
------
-<?php
-
-$i = 0;
-while () {
-    $j = 1;
-}
-$k = 2;
-// The output here drops the loop - would require Error node to handle this
------
-Syntax error, unexpected ')' from 4:8 to 4:8
-array(
-    0: Stmt_Expression(
-        expr: Expr_Assign(
-            var: Expr_Variable(
-                name: i
-            )
-            expr: Scalar_LNumber(
-                value: 0
-            )
-        )
-    )
-    1: Stmt_Expression(
-        expr: Expr_Assign(
-            var: Expr_Variable(
-                name: j
-            )
-            expr: Scalar_LNumber(
-                value: 1
-            )
-        )
-    )
-    2: Stmt_Expression(
-        expr: Expr_Assign(
-            var: Expr_Variable(
-                name: k
-            )
-            expr: Scalar_LNumber(
-                value: 2
-            )
-        )
-    )
-    3: Stmt_Nop(
-        comments: array(
-            0: // The output here drops the loop - would require Error node to handle this
-        )
-    )
-)
------
-<?php
-// Can't recover this yet, as the '}' for the inner_statement_list
-// is always required.
-
-$i = 0;
-while (true) {
-    $i = 1;
-    $i = 2;
------
-Syntax error, unexpected EOF from 8:12 to 8:12
------
-<?php
-$foo->
-;
------
-!!positions
-Syntax error, unexpected ';', expecting T_STRING or T_VARIABLE or '{' or '$' from 3:1 to 3:1
-array(
-    0: Stmt_Expression[2:1 - 3:1](
-        expr: Expr_PropertyFetch[2:1 - 2:6](
-            var: Expr_Variable[2:1 - 2:4](
-                name: foo
-            )
-            name: Expr_Error[3:1 - 2:6](
-            )
-        )
-    )
-)
------
-<?php
-function foo() {
-    $bar->
-}
------
-!!positions
-Syntax error, unexpected '}', expecting T_STRING or T_VARIABLE or '{' or '$' from 4:1 to 4:1
-array(
-    0: Stmt_Function[2:1 - 4:1](
-        byRef: false
-        name: Identifier[2:10 - 2:12](
-            name: foo
-        )
-        params: array(
-        )
-        returnType: null
-        stmts: array(
-            0: Stmt_Expression[3:5 - 3:10](
-                expr: Expr_PropertyFetch[3:5 - 3:10](
-                    var: Expr_Variable[3:5 - 3:8](
-                        name: bar
-                    )
-                    name: Expr_Error[4:1 - 3:10](
-                    )
-                )
-            )
-        )
-    )
-)
------
-<?php
-new T
------
-Syntax error, unexpected EOF from 2:6 to 2:6
-array(
-    0: Stmt_Expression(
-        expr: Expr_New(
-            class: Name(
-                parts: array(
-                    0: T
-                )
-            )
-            args: array(
-            )
-        )
-    )
-)
------
-<?php
-new
------
-!!php7,positions
-Syntax error, unexpected EOF from 2:4 to 2:4
-array(
-    0: Stmt_Expression[2:1 - 2:3](
-        expr: Expr_New[2:1 - 2:3](
-            class: Expr_Error[2:4 - 2:3](
-            )
-            args: array(
-            )
-        )
-    )
-)
------
-<?php
-$foo instanceof
------
-!!php7
-Syntax error, unexpected EOF from 2:16 to 2:16
-array(
-    0: Stmt_Expression(
-        expr: Expr_Instanceof(
-            expr: Expr_Variable(
-                name: foo
-            )
-            class: Expr_Error(
-            )
-        )
-    )
-)
------
-<?php
-$
------
-!!php7
-Syntax error, unexpected EOF, expecting T_VARIABLE or '{' or '$' from 2:2 to 2:2
-array(
-    0: Stmt_Expression(
-        expr: Expr_Variable(
-            name: Expr_Error(
-            )
-        )
-    )
-)
------
-<?php
-Foo::$
------
-!!php7
-Syntax error, unexpected EOF, expecting T_VARIABLE or '{' or '$' from 2:7 to 2:7
-array(
-    0: Stmt_Expression(
-        expr: Expr_StaticPropertyFetch(
-            class: Name(
-                parts: array(
-                    0: Foo
-                )
-            )
-            name: Expr_Error(
-            )
-        )
-    )
-)
------
-<?php
-Foo::
------
-!!php7
-Syntax error, unexpected EOF from 2:6 to 2:6
-array(
-    0: Stmt_Expression(
-        expr: Expr_ClassConstFetch(
-            class: Name(
-                parts: array(
-                    0: Foo
-                )
-            )
-            name: Expr_Error(
-            )
-        )
-    )
-)
------
-<?php
-namespace Foo
-use A
-use function a
-use A\{B}
-const A = 1
-break
-break 2
-continue
-continue 2
-return
-return 2
-echo $a
-unset($a)
-throw $x
-goto label
------
-!!php7
-Syntax error, unexpected T_USE, expecting ';' or '{' from 3:1 to 3:3
-Syntax error, unexpected T_USE, expecting ';' from 5:1 to 5:3
-Syntax error, unexpected T_CONST, expecting ';' from 6:1 to 6:5
-Syntax error, unexpected T_BREAK, expecting ';' from 7:1 to 7:5
-Syntax error, unexpected T_THROW, expecting ';' from 15:1 to 15:5
-array(
-    0: Stmt_Namespace(
-        name: Name(
-            parts: array(
-                0: Foo
-            )
-        )
-        stmts: array(
-            0: Stmt_Use(
-                type: TYPE_NORMAL (1)
-                uses: array(
-                    0: Stmt_UseUse(
-                        type: TYPE_UNKNOWN (0)
-                        name: Name(
-                            parts: array(
-                                0: A
-                            )
-                        )
-                        alias: null
-                    )
-                )
-            )
-            1: Stmt_Use(
-                type: TYPE_FUNCTION (2)
-                uses: array(
-                    0: Stmt_UseUse(
-                        type: TYPE_UNKNOWN (0)
-                        name: Name(
-                            parts: array(
-                                0: a
-                            )
-                        )
-                        alias: null
-                    )
-                )
-            )
-            2: Stmt_GroupUse(
-                type: TYPE_UNKNOWN (0)
-                prefix: Name(
-                    parts: array(
-                        0: A
-                    )
-                )
-                uses: array(
-                    0: Stmt_UseUse(
-                        type: TYPE_NORMAL (1)
-                        name: Name(
-                            parts: array(
-                                0: B
-                            )
-                        )
-                        alias: null
-                    )
-                )
-            )
-            3: Stmt_Const(
-                consts: array(
-                    0: Const(
-                        name: Identifier(
-                            name: A
-                        )
-                        value: Scalar_LNumber(
-                            value: 1
-                        )
-                    )
-                )
-            )
-            4: Stmt_Break(
-                num: null
-            )
-            5: Stmt_Break(
-                num: Scalar_LNumber(
-                    value: 2
-                )
-            )
-            6: Stmt_Continue(
-                num: null
-            )
-            7: Stmt_Continue(
-                num: Scalar_LNumber(
-                    value: 2
-                )
-            )
-            8: Stmt_Return(
-                expr: null
-            )
-            9: Stmt_Return(
-                expr: Scalar_LNumber(
-                    value: 2
-                )
-            )
-            10: Stmt_Echo(
-                exprs: array(
-                    0: Expr_Variable(
-                        name: a
-                    )
-                )
-            )
-            11: Stmt_Unset(
-                vars: array(
-                    0: Expr_Variable(
-                        name: a
-                    )
-                )
-            )
-            12: Stmt_Throw(
-                expr: Expr_Variable(
-                    name: x
-                )
-            )
-            13: Stmt_Goto(
-                name: Identifier(
-                    name: label
-                )
-            )
-        )
-    )
-)
------
-<?php
-
-use A\{B, };
-use function A\{b, };
-use A, ;
-const A = 42, ;
-
-class X implements Y, {
-    use A, ;
-    use A, {
-        A::b insteadof C, ;
-    }
-    const A = 42, ;
-    public $x, ;
-}
-interface I extends J, {}
-
-unset($x, );
-isset($x, );
-
-declare(a=42, );
-
-function foo($a, ) {}
-foo($a, );
-global $a, ;
-static $a, ;
-echo $a, ;
-
-for ($a, ; $b, ; $c, );
-function ($a, ) use ($b, ) {};
------
-!!php7
-A trailing comma is not allowed here from 5:6 to 5:6
-A trailing comma is not allowed here from 6:13 to 6:13
-A trailing comma is not allowed here from 8:21 to 8:21
-A trailing comma is not allowed here from 9:10 to 9:10
-A trailing comma is not allowed here from 10:10 to 10:10
-A trailing comma is not allowed here from 11:25 to 11:25
-A trailing comma is not allowed here from 13:17 to 13:17
-A trailing comma is not allowed here from 14:14 to 14:14
-A trailing comma is not allowed here from 16:22 to 16:22
-A trailing comma is not allowed here from 21:13 to 21:13
-A trailing comma is not allowed here from 23:16 to 23:16
-A trailing comma is not allowed here from 25:10 to 25:10
-A trailing comma is not allowed here from 26:10 to 26:10
-A trailing comma is not allowed here from 27:8 to 27:8
-A trailing comma is not allowed here from 29:8 to 29:8
-A trailing comma is not allowed here from 29:14 to 29:14
-A trailing comma is not allowed here from 29:20 to 29:20
-A trailing comma is not allowed here from 30:13 to 30:13
-A trailing comma is not allowed here from 30:24 to 30:24
-array(
-    0: Stmt_GroupUse(
-        type: TYPE_UNKNOWN (0)
-        prefix: Name(
-            parts: array(
-                0: A
-            )
-        )
-        uses: array(
-            0: Stmt_UseUse(
-                type: TYPE_NORMAL (1)
-                name: Name(
-                    parts: array(
-                        0: B
-                    )
-                )
-                alias: null
-            )
-        )
-    )
-    1: Stmt_GroupUse(
-        type: TYPE_FUNCTION (2)
-        prefix: Name(
-            parts: array(
-                0: A
-            )
-        )
-        uses: array(
-            0: Stmt_UseUse(
-                type: TYPE_UNKNOWN (0)
-                name: Name(
-                    parts: array(
-                        0: b
-                    )
-                )
-                alias: null
-            )
-        )
-    )
-    2: Stmt_Use(
-        type: TYPE_NORMAL (1)
-        uses: array(
-            0: Stmt_UseUse(
-                type: TYPE_UNKNOWN (0)
-                name: Name(
-                    parts: array(
-                        0: A
-                    )
-                )
-                alias: null
-            )
-        )
-    )
-    3: Stmt_Const(
-        consts: array(
-            0: Const(
-                name: Identifier(
-                    name: A
-                )
-                value: Scalar_LNumber(
-                    value: 42
-                )
-            )
-        )
-    )
-    4: Stmt_Class(
-        flags: 0
-        name: Identifier(
-            name: X
-        )
-        extends: null
-        implements: array(
-            0: Name(
-                parts: array(
-                    0: Y
-                )
-            )
-        )
-        stmts: array(
-            0: Stmt_TraitUse(
-                traits: array(
-                    0: Name(
-                        parts: array(
-                            0: A
-                        )
-                    )
-                )
-                adaptations: array(
-                )
-            )
-            1: Stmt_TraitUse(
-                traits: array(
-                    0: Name(
-                        parts: array(
-                            0: A
-                        )
-                    )
-                )
-                adaptations: array(
-                    0: Stmt_TraitUseAdaptation_Precedence(
-                        trait: Name(
-                            parts: array(
-                                0: A
-                            )
-                        )
-                        method: Identifier(
-                            name: b
-                        )
-                        insteadof: array(
-                            0: Name(
-                                parts: array(
-                                    0: C
-                                )
-                            )
-                        )
-                    )
-                )
-            )
-            2: Stmt_ClassConst(
-                flags: 0
-                consts: array(
-                    0: Const(
-                        name: Identifier(
-                            name: A
-                        )
-                        value: Scalar_LNumber(
-                            value: 42
-                        )
-                    )
-                )
-            )
-            3: Stmt_Property(
-                flags: MODIFIER_PUBLIC (1)
-                type: null
-                props: array(
-                    0: Stmt_PropertyProperty(
-                        name: VarLikeIdentifier(
-                            name: x
-                        )
-                        default: null
-                    )
-                )
-            )
-        )
-    )
-    5: Stmt_Interface(
-        name: Identifier(
-            name: I
-        )
-        extends: array(
-            0: Name(
-                parts: array(
-                    0: J
-                )
-            )
-        )
-        stmts: array(
-        )
-    )
-    6: Stmt_Unset(
-        vars: array(
-            0: Expr_Variable(
-                name: x
-            )
-        )
-    )
-    7: Stmt_Expression(
-        expr: Expr_Isset(
-            vars: array(
-                0: Expr_Variable(
-                    name: x
-                )
-            )
-        )
-    )
-    8: Stmt_Declare(
-        declares: array(
-            0: Stmt_DeclareDeclare(
-                key: Identifier(
-                    name: a
-                )
-                value: Scalar_LNumber(
-                    value: 42
-                )
-            )
-        )
-        stmts: null
-    )
-    9: Stmt_Function(
-        byRef: false
-        name: Identifier(
-            name: foo
-        )
-        params: array(
-            0: Param(
-                type: null
-                byRef: false
-                variadic: false
-                var: Expr_Variable(
-                    name: a
-                )
-                default: null
-            )
-        )
-        returnType: null
-        stmts: array(
-        )
-    )
-    10: Stmt_Expression(
-        expr: Expr_FuncCall(
-            name: Name(
-                parts: array(
-                    0: foo
-                )
-            )
-            args: array(
-                0: Arg(
-                    value: Expr_Variable(
-                        name: a
-                    )
-                    byRef: false
-                    unpack: false
-                )
-            )
-        )
-    )
-    11: Stmt_Global(
-        vars: array(
-            0: Expr_Variable(
-                name: a
-            )
-        )
-    )
-    12: Stmt_Static(
-        vars: array(
-            0: Stmt_StaticVar(
-                var: Expr_Variable(
-                    name: a
-                )
-                default: null
-            )
-        )
-    )
-    13: Stmt_Echo(
-        exprs: array(
-            0: Expr_Variable(
-                name: a
-            )
-        )
-    )
-    14: Stmt_For(
-        init: array(
-            0: Expr_Variable(
-                name: a
-            )
-        )
-        cond: array(
-            0: Expr_Variable(
-                name: b
-            )
-        )
-        loop: array(
-            0: Expr_Variable(
-                name: c
-            )
-        )
-        stmts: array(
-        )
-    )
-    15: Stmt_Expression(
-        expr: Expr_Closure(
-            static: false
-            byRef: false
-            params: array(
-                0: Param(
-                    type: null
-                    byRef: false
-                    variadic: false
-                    var: Expr_Variable(
-                        name: a
-                    )
-                    default: null
-                )
-            )
-            uses: array(
-                0: Expr_ClosureUse(
-                    var: Expr_Variable(
-                        name: b
-                    )
-                    byRef: false
-                )
-            )
-            returnType: null
-            stmts: array(
-            )
-        )
-    )
-)
------
-<?php
-
-foo(Bar::);
------
-!!php7,positions
-Syntax error, unexpected ')' from 3:10 to 3:10
-array(
-    0: Stmt_Expression[3:1 - 3:11](
-        expr: Expr_FuncCall[3:1 - 3:10](
-            name: Name[3:1 - 3:3](
-                parts: array(
-                    0: foo
-                )
-            )
-            args: array(
-                0: Arg[3:5 - 3:9](
-                    value: Expr_ClassConstFetch[3:5 - 3:9](
-                        class: Name[3:5 - 3:7](
-                            parts: array(
-                                0: Bar
-                            )
-                        )
-                        name: Expr_Error[3:10 - 3:9](
-                        )
-                    )
-                    byRef: false
-                    unpack: false
-                )
-            )
-        )
-    )
-)
------
-<?php
-
-class Foo {
-    publi $foo;
-    public $bar;
-}
------
-!!php7
-Syntax error, unexpected T_STRING from 4:5 to 4:9
-array(
-    0: Stmt_Class(
-        flags: 0
-        name: Identifier(
-            name: Foo
-        )
-        extends: null
-        implements: array(
-        )
-        stmts: array(
-            0: Stmt_Property(
-                flags: MODIFIER_PUBLIC (1)
-                type: null
-                props: array(
-                    0: Stmt_PropertyProperty(
-                        name: VarLikeIdentifier(
-                            name: bar
-                        )
-                        default: null
-                    )
-                )
-            )
-        )
-    )
-)
------
-<?php
-
-foreach ($foo) { $bar; }
-foreach ($foo as ) { $bar; }
------
-!!php7
-Syntax error, unexpected ')' from 3:14 to 3:14
-Syntax error, unexpected ')' from 4:18 to 4:18
-array(
-    0: Stmt_Foreach(
-        expr: Expr_Variable(
-            name: foo
-        )
-        keyVar: null
-        byRef: false
-        valueVar: Expr_Error(
-        )
-        stmts: array(
-            0: Stmt_Expression(
-                expr: Expr_Variable(
-                    name: bar
-                )
-            )
-        )
-    )
-    1: Stmt_Foreach(
-        expr: Expr_Variable(
-            name: foo
-        )
-        keyVar: null
-        byRef: false
-        valueVar: Expr_Error(
-        )
-        stmts: array(
-            0: Stmt_Expression(
-                expr: Expr_Variable(
-                    name: bar
-                )
-            )
-        )
-    )
-)
------
-<?php
-
-function foo(Type) {
-    $foo;
-}
-
-function foo(Type1 $foo, Type2) {
-    $bar;
-}
-
-function foo(...) {
-    $baz;
-}
-
-function foo(&) {
-    $qux;
-}
-
-function foo(Bar)
-
-class Bar {
-    function foo(Baz)
-}
-
-function(Foo);
------
-!!php7
-Syntax error, unexpected ')', expecting T_VARIABLE from 3:18 to 3:18
-Syntax error, unexpected ')', expecting T_VARIABLE from 7:31 to 7:31
-Syntax error, unexpected ')', expecting T_VARIABLE from 11:17 to 11:17
-Syntax error, unexpected ')', expecting T_VARIABLE from 15:15 to 15:15
-Syntax error, unexpected ')', expecting T_VARIABLE from 19:17 to 19:17
-Syntax error, unexpected ')', expecting T_VARIABLE from 22:21 to 22:21
-Syntax error, unexpected ')', expecting T_VARIABLE from 25:13 to 25:13
-array(
-    0: Stmt_Function(
-        byRef: false
-        name: Identifier(
-            name: foo
-        )
-        params: array(
-            0: Param(
-                type: Name(
-                    parts: array(
-                        0: Type
-                    )
-                )
-                byRef: false
-                variadic: false
-                var: Expr_Error(
-                )
-                default: null
-            )
-        )
-        returnType: null
-        stmts: array(
-            0: Stmt_Expression(
-                expr: Expr_Variable(
-                    name: foo
-                )
-            )
-        )
-    )
-    1: Stmt_Function(
-        byRef: false
-        name: Identifier(
-            name: foo
-        )
-        params: array(
-            0: Param(
-                type: Name(
-                    parts: array(
-                        0: Type1
-                    )
-                )
-                byRef: false
-                variadic: false
-                var: Expr_Variable(
-                    name: foo
-                )
-                default: null
-            )
-            1: Param(
-                type: Name(
-                    parts: array(
-                        0: Type2
-                    )
-                )
-                byRef: false
-                variadic: false
-                var: Expr_Error(
-                )
-                default: null
-            )
-        )
-        returnType: null
-        stmts: array(
-            0: Stmt_Expression(
-                expr: Expr_Variable(
-                    name: bar
-                )
-            )
-        )
-    )
-    2: Stmt_Function(
-        byRef: false
-        name: Identifier(
-            name: foo
-        )
-        params: array(
-            0: Param(
-                type: null
-                byRef: false
-                variadic: true
-                var: Expr_Error(
-                )
-                default: null
-            )
-        )
-        returnType: null
-        stmts: array(
-            0: Stmt_Expression(
-                expr: Expr_Variable(
-                    name: baz
-                )
-            )
-        )
-    )
-    3: Stmt_Function(
-        byRef: false
-        name: Identifier(
-            name: foo
-        )
-        params: array(
-            0: Param(
-                type: null
-                byRef: true
-                variadic: false
-                var: Expr_Error(
-                )
-                default: null
-            )
-        )
-        returnType: null
-        stmts: array(
-            0: Stmt_Expression(
-                expr: Expr_Variable(
-                    name: qux
-                )
-            )
-        )
-    )
-    4: Stmt_Function(
-        byRef: false
-        name: Identifier(
-            name: foo
-        )
-        params: array(
-            0: Param(
-                type: Name(
-                    parts: array(
-                        0: Bar
-                    )
-                )
-                byRef: false
-                variadic: false
-                var: Expr_Error(
-                )
-                default: null
-            )
-        )
-        returnType: null
-        stmts: array(
-        )
-    )
-    5: Stmt_Class(
-        flags: 0
-        name: Identifier(
-            name: Bar
-        )
-        extends: null
-        implements: array(
-        )
-        stmts: array(
-            0: Stmt_ClassMethod(
-                flags: 0
-                byRef: false
-                name: Identifier(
-                    name: foo
-                )
-                params: array(
-                    0: Param(
-                        type: Name(
-                            parts: array(
-                                0: Baz
-                            )
-                        )
-                        byRef: false
-                        variadic: false
-                        var: Expr_Error(
-                        )
-                        default: null
-                    )
-                )
-                returnType: null
-                stmts: array(
-                )
-            )
-        )
-    )
-    6: Stmt_Expression(
-        expr: Expr_Closure(
-            static: false
-            byRef: false
-            params: array(
-                0: Param(
-                    type: Name(
-                        parts: array(
-                            0: Foo
-                        )
-                    )
-                    byRef: false
-                    variadic: false
-                    var: Expr_Error(
-                    )
-                    default: null
-                )
-            )
-            uses: array(
-            )
-            returnType: null
-            stmts: array(
-            )
-        )
-    )
-)
------
-<?php
-$array = [
-    $this->value $oopsAnotherValue->get()
-];
-$array = [
-    $value $oopsAnotherValue
-];
-$array = [
-    'key' => $value $oopsAnotherValue
-];
------
-!!php7
-Syntax error, unexpected T_VARIABLE, expecting ',' or ')' or ']' from 3:18 to 3:34
-Syntax error, unexpected T_VARIABLE, expecting ',' or ')' or ']' from 6:12 to 6:28
-Syntax error, unexpected T_VARIABLE, expecting ',' or ')' or ']' from 9:21 to 9:37
-array(
-    0: Stmt_Expression(
-        expr: Expr_Assign(
-            var: Expr_Variable(
-                name: array
-            )
-            expr: Expr_Array(
-                items: array(
-                    0: Expr_ArrayItem(
-                        key: null
-                        value: Expr_PropertyFetch(
-                            var: Expr_Variable(
-                                name: this
-                            )
-                            name: Identifier(
-                                name: value
-                            )
-                        )
-                        byRef: false
-                        unpack: false
-                    )
-                    1: Expr_ArrayItem(
-                        key: null
-                        value: Expr_MethodCall(
-                            var: Expr_Variable(
-                                name: oopsAnotherValue
-                            )
-                            name: Identifier(
-                                name: get
-                            )
-                            args: array(
-                            )
-                        )
-                        byRef: false
-                        unpack: false
-                    )
-                )
-            )
-        )
-    )
-    1: Stmt_Expression(
-        expr: Expr_Assign(
-            var: Expr_Variable(
-                name: array
-            )
-            expr: Expr_Array(
-                items: array(
-                    0: Expr_ArrayItem(
-                        key: null
-                        value: Expr_Variable(
-                            name: value
-                        )
-                        byRef: false
-                        unpack: false
-                    )
-                    1: Expr_ArrayItem(
-                        key: null
-                        value: Expr_Variable(
-                            name: oopsAnotherValue
-                        )
-                        byRef: false
-                        unpack: false
-                    )
-                )
-            )
-        )
-    )
-    2: Stmt_Expression(
-        expr: Expr_Assign(
-            var: Expr_Variable(
-                name: array
-            )
-            expr: Expr_Array(
-                items: array(
-                    0: Expr_ArrayItem(
-                        key: Scalar_String(
-                            value: key
-                        )
-                        value: Expr_Variable(
-                            name: value
-                        )
-                        byRef: false
-                        unpack: false
-                    )
-                    1: Expr_ArrayItem(
-                        key: null
-                        value: Expr_Variable(
-                            name: oopsAnotherValue
-                        )
-                        byRef: false
-                        unpack: false
-                    )
-                )
-            )
-        )
-    )
-)
------
-<?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
deleted file mode 100644
index 0339a56761..0000000000
--- a/vendor/nikic/php-parser/test/code/parser/expr/arrayDef.test
+++ /dev/null
@@ -1,173 +0,0 @@
-Array definitions
------
-<?php
-
-array();
-array('a');
-array('a', );
-array('a', 'b');
-array('a', &$b, 'c' => 'd', 'e' => &$f);
-
-// short array syntax
-[];
-[1, 2, 3];
-['a' => 'b'];
------
-array(
-    0: Stmt_Expression(
-        expr: Expr_Array(
-            items: array(
-            )
-        )
-    )
-    1: Stmt_Expression(
-        expr: Expr_Array(
-            items: array(
-                0: Expr_ArrayItem(
-                    key: null
-                    value: Scalar_String(
-                        value: a
-                    )
-                    byRef: false
-                    unpack: false
-                )
-            )
-        )
-    )
-    2: Stmt_Expression(
-        expr: Expr_Array(
-            items: array(
-                0: Expr_ArrayItem(
-                    key: null
-                    value: Scalar_String(
-                        value: a
-                    )
-                    byRef: false
-                    unpack: false
-                )
-            )
-        )
-    )
-    3: Stmt_Expression(
-        expr: 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
-                )
-            )
-        )
-    )
-    4: Stmt_Expression(
-        expr: Expr_Array(
-            items: array(
-                0: Expr_ArrayItem(
-                    key: null
-                    value: Scalar_String(
-                        value: a
-                    )
-                    byRef: false
-                    unpack: false
-                )
-                1: Expr_ArrayItem(
-                    key: null
-                    value: Expr_Variable(
-                        name: b
-                    )
-                    byRef: true
-                    unpack: false
-                )
-                2: Expr_ArrayItem(
-                    key: Scalar_String(
-                        value: c
-                    )
-                    value: Scalar_String(
-                        value: d
-                    )
-                    byRef: false
-                    unpack: false
-                )
-                3: Expr_ArrayItem(
-                    key: Scalar_String(
-                        value: e
-                    )
-                    value: Expr_Variable(
-                        name: f
-                    )
-                    byRef: true
-                    unpack: false
-                )
-            )
-        )
-    )
-    5: Stmt_Expression(
-        expr: Expr_Array(
-            items: array(
-            )
-            comments: array(
-                0: // short array syntax
-            )
-        )
-        comments: array(
-            0: // short array syntax
-        )
-    )
-    6: Stmt_Expression(
-        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
-                )
-            )
-        )
-    )
-    7: Stmt_Expression(
-        expr: Expr_Array(
-            items: array(
-                0: Expr_ArrayItem(
-                    key: Scalar_String(
-                        value: a
-                    )
-                    value: Scalar_String(
-                        value: b
-                    )
-                    byRef: false
-                    unpack: false
-                )
-            )
-        )
-    )
-)
\ No newline at end of file
diff --git a/vendor/nikic/php-parser/test/code/parser/expr/arrayDestructuring.test b/vendor/nikic/php-parser/test/code/parser/expr/arrayDestructuring.test
deleted file mode 100644
index cfec0d13b1..0000000000
--- a/vendor/nikic/php-parser/test/code/parser/expr/arrayDestructuring.test
+++ /dev/null
@@ -1,164 +0,0 @@
-Array destructuring
------
-<?php
-
-[$a, $b] = [$c, $d];
-[, $a, , , $b, ,] = $foo;
-[, [[$a]], $b] = $bar;
-['a' => $b, 'b' => $a] = $baz;
------
-!!php7
-array(
-    0: Stmt_Expression(
-        expr: Expr_Assign(
-            var: Expr_Array(
-                items: array(
-                    0: Expr_ArrayItem(
-                        key: null
-                        value: Expr_Variable(
-                            name: a
-                        )
-                        byRef: false
-                        unpack: false
-                    )
-                    1: Expr_ArrayItem(
-                        key: null
-                        value: Expr_Variable(
-                            name: b
-                        )
-                        byRef: false
-                        unpack: false
-                    )
-                )
-            )
-            expr: Expr_Array(
-                items: array(
-                    0: Expr_ArrayItem(
-                        key: null
-                        value: Expr_Variable(
-                            name: c
-                        )
-                        byRef: false
-                        unpack: false
-                    )
-                    1: Expr_ArrayItem(
-                        key: null
-                        value: Expr_Variable(
-                            name: d
-                        )
-                        byRef: false
-                        unpack: false
-                    )
-                )
-            )
-        )
-    )
-    1: Stmt_Expression(
-        expr: Expr_Assign(
-            var: Expr_Array(
-                items: array(
-                    0: null
-                    1: Expr_ArrayItem(
-                        key: null
-                        value: Expr_Variable(
-                            name: a
-                        )
-                        byRef: false
-                        unpack: false
-                    )
-                    2: null
-                    3: null
-                    4: Expr_ArrayItem(
-                        key: null
-                        value: Expr_Variable(
-                            name: b
-                        )
-                        byRef: false
-                        unpack: false
-                    )
-                    5: null
-                )
-            )
-            expr: Expr_Variable(
-                name: foo
-            )
-        )
-    )
-    2: Stmt_Expression(
-        expr: Expr_Assign(
-            var: Expr_Array(
-                items: array(
-                    0: null
-                    1: Expr_ArrayItem(
-                        key: null
-                        value: Expr_Array(
-                            items: array(
-                                0: Expr_ArrayItem(
-                                    key: null
-                                    value: Expr_Array(
-                                        items: array(
-                                            0: Expr_ArrayItem(
-                                                key: null
-                                                value: Expr_Variable(
-                                                    name: a
-                                                )
-                                                byRef: false
-                                                unpack: false
-                                            )
-                                        )
-                                    )
-                                    byRef: false
-                                    unpack: false
-                                )
-                            )
-                        )
-                        byRef: false
-                        unpack: false
-                    )
-                    2: Expr_ArrayItem(
-                        key: null
-                        value: Expr_Variable(
-                            name: b
-                        )
-                        byRef: false
-                        unpack: false
-                    )
-                )
-            )
-            expr: Expr_Variable(
-                name: bar
-            )
-        )
-    )
-    3: Stmt_Expression(
-        expr: Expr_Assign(
-            var: Expr_Array(
-                items: array(
-                    0: Expr_ArrayItem(
-                        key: Scalar_String(
-                            value: a
-                        )
-                        value: Expr_Variable(
-                            name: b
-                        )
-                        byRef: false
-                        unpack: false
-                    )
-                    1: Expr_ArrayItem(
-                        key: Scalar_String(
-                            value: b
-                        )
-                        value: Expr_Variable(
-                            name: a
-                        )
-                        byRef: false
-                        unpack: false
-                    )
-                )
-            )
-            expr: Expr_Variable(
-                name: baz
-            )
-        )
-    )
-)
\ No newline at end of file
diff --git a/vendor/nikic/php-parser/test/code/parser/expr/arraySpread.test b/vendor/nikic/php-parser/test/code/parser/expr/arraySpread.test
deleted file mode 100644
index ed2edce3de..0000000000
--- a/vendor/nikic/php-parser/test/code/parser/expr/arraySpread.test
+++ /dev/null
@@ -1,432 +0,0 @@
-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
deleted file mode 100644
index 1beec451e4..0000000000
--- a/vendor/nikic/php-parser/test/code/parser/expr/arrow_function.test
+++ /dev/null
@@ -1,145 +0,0 @@
-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
deleted file mode 100644
index 423f48af2f..0000000000
--- a/vendor/nikic/php-parser/test/code/parser/expr/assign.test
+++ /dev/null
@@ -1,381 +0,0 @@
-Assignments
------
-<?php
-// simple assign
-$a = $b;
-
-// combined assign
-$a &= $b;
-$a |= $b;
-$a ^= $b;
-$a .= $b;
-$a /= $b;
-$a -= $b;
-$a %= $b;
-$a *= $b;
-$a += $b;
-$a <<= $b;
-$a >>= $b;
-$a **= $b;
-$a ??= $b;
-
-// chained assign
-$a = $b *= $c **= $d;
-
-// by ref assign
-$a =& $b;
-
-// list() assign
-list($a) = $b;
-list($a, , $b) = $c;
-list($a, list(, $c), $d) = $e;
-
-// inc/dec
-++$a;
-$a++;
---$a;
-$a--;
------
-array(
-    0: Stmt_Expression(
-        expr: Expr_Assign(
-            var: Expr_Variable(
-                name: a
-                comments: array(
-                    0: // simple assign
-                )
-            )
-            expr: Expr_Variable(
-                name: b
-            )
-            comments: array(
-                0: // simple assign
-            )
-        )
-        comments: array(
-            0: // simple assign
-        )
-    )
-    1: Stmt_Expression(
-        expr: Expr_AssignOp_BitwiseAnd(
-            var: Expr_Variable(
-                name: a
-                comments: array(
-                    0: // combined assign
-                )
-            )
-            expr: Expr_Variable(
-                name: b
-            )
-            comments: array(
-                0: // combined assign
-            )
-        )
-        comments: array(
-            0: // combined assign
-        )
-    )
-    2: Stmt_Expression(
-        expr: Expr_AssignOp_BitwiseOr(
-            var: Expr_Variable(
-                name: a
-            )
-            expr: Expr_Variable(
-                name: b
-            )
-        )
-    )
-    3: Stmt_Expression(
-        expr: Expr_AssignOp_BitwiseXor(
-            var: Expr_Variable(
-                name: a
-            )
-            expr: Expr_Variable(
-                name: b
-            )
-        )
-    )
-    4: Stmt_Expression(
-        expr: Expr_AssignOp_Concat(
-            var: Expr_Variable(
-                name: a
-            )
-            expr: Expr_Variable(
-                name: b
-            )
-        )
-    )
-    5: Stmt_Expression(
-        expr: Expr_AssignOp_Div(
-            var: Expr_Variable(
-                name: a
-            )
-            expr: Expr_Variable(
-                name: b
-            )
-        )
-    )
-    6: Stmt_Expression(
-        expr: Expr_AssignOp_Minus(
-            var: Expr_Variable(
-                name: a
-            )
-            expr: Expr_Variable(
-                name: b
-            )
-        )
-    )
-    7: Stmt_Expression(
-        expr: Expr_AssignOp_Mod(
-            var: Expr_Variable(
-                name: a
-            )
-            expr: Expr_Variable(
-                name: b
-            )
-        )
-    )
-    8: Stmt_Expression(
-        expr: Expr_AssignOp_Mul(
-            var: Expr_Variable(
-                name: a
-            )
-            expr: Expr_Variable(
-                name: b
-            )
-        )
-    )
-    9: Stmt_Expression(
-        expr: Expr_AssignOp_Plus(
-            var: Expr_Variable(
-                name: a
-            )
-            expr: Expr_Variable(
-                name: b
-            )
-        )
-    )
-    10: Stmt_Expression(
-        expr: Expr_AssignOp_ShiftLeft(
-            var: Expr_Variable(
-                name: a
-            )
-            expr: Expr_Variable(
-                name: b
-            )
-        )
-    )
-    11: Stmt_Expression(
-        expr: Expr_AssignOp_ShiftRight(
-            var: Expr_Variable(
-                name: a
-            )
-            expr: Expr_Variable(
-                name: b
-            )
-        )
-    )
-    12: Stmt_Expression(
-        expr: Expr_AssignOp_Pow(
-            var: Expr_Variable(
-                name: a
-            )
-            expr: Expr_Variable(
-                name: b
-            )
-        )
-    )
-    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
-                comments: array(
-                    0: // chained assign
-                )
-            )
-            expr: Expr_AssignOp_Mul(
-                var: Expr_Variable(
-                    name: b
-                )
-                expr: Expr_AssignOp_Pow(
-                    var: Expr_Variable(
-                        name: c
-                    )
-                    expr: Expr_Variable(
-                        name: d
-                    )
-                )
-            )
-            comments: array(
-                0: // chained assign
-            )
-        )
-        comments: array(
-            0: // chained assign
-        )
-    )
-    15: Stmt_Expression(
-        expr: Expr_AssignRef(
-            var: Expr_Variable(
-                name: a
-                comments: array(
-                    0: // by ref assign
-                )
-            )
-            expr: Expr_Variable(
-                name: b
-            )
-            comments: array(
-                0: // by ref assign
-            )
-        )
-        comments: array(
-            0: // by ref assign
-        )
-    )
-    16: Stmt_Expression(
-        expr: Expr_Assign(
-            var: Expr_List(
-                items: array(
-                    0: Expr_ArrayItem(
-                        key: null
-                        value: Expr_Variable(
-                            name: a
-                        )
-                        byRef: false
-                        unpack: false
-                    )
-                )
-                comments: array(
-                    0: // list() assign
-                )
-            )
-            expr: Expr_Variable(
-                name: b
-            )
-            comments: array(
-                0: // list() assign
-            )
-        )
-        comments: array(
-            0: // list() assign
-        )
-    )
-    17: Stmt_Expression(
-        expr: Expr_Assign(
-            var: Expr_List(
-                items: array(
-                    0: Expr_ArrayItem(
-                        key: null
-                        value: Expr_Variable(
-                            name: a
-                        )
-                        byRef: false
-                        unpack: false
-                    )
-                    1: null
-                    2: Expr_ArrayItem(
-                        key: null
-                        value: Expr_Variable(
-                            name: b
-                        )
-                        byRef: false
-                        unpack: false
-                    )
-                )
-            )
-            expr: Expr_Variable(
-                name: c
-            )
-        )
-    )
-    18: Stmt_Expression(
-        expr: Expr_Assign(
-            var: Expr_List(
-                items: array(
-                    0: Expr_ArrayItem(
-                        key: null
-                        value: Expr_Variable(
-                            name: a
-                        )
-                        byRef: false
-                        unpack: false
-                    )
-                    1: Expr_ArrayItem(
-                        key: null
-                        value: Expr_List(
-                            items: array(
-                                0: null
-                                1: Expr_ArrayItem(
-                                    key: null
-                                    value: Expr_Variable(
-                                        name: c
-                                    )
-                                    byRef: false
-                                    unpack: false
-                                )
-                            )
-                        )
-                        byRef: false
-                        unpack: false
-                    )
-                    2: Expr_ArrayItem(
-                        key: null
-                        value: Expr_Variable(
-                            name: d
-                        )
-                        byRef: false
-                        unpack: false
-                    )
-                )
-            )
-            expr: Expr_Variable(
-                name: e
-            )
-        )
-    )
-    19: Stmt_Expression(
-        expr: Expr_PreInc(
-            var: Expr_Variable(
-                name: a
-            )
-            comments: array(
-                0: // inc/dec
-            )
-        )
-        comments: array(
-            0: // inc/dec
-        )
-    )
-    20: Stmt_Expression(
-        expr: Expr_PostInc(
-            var: Expr_Variable(
-                name: a
-            )
-        )
-    )
-    21: Stmt_Expression(
-        expr: Expr_PreDec(
-            var: Expr_Variable(
-                name: a
-            )
-        )
-    )
-    22: Stmt_Expression(
-        expr: Expr_PostDec(
-            var: Expr_Variable(
-                name: a
-            )
-        )
-    )
-)
\ No newline at end of file
diff --git a/vendor/nikic/php-parser/test/code/parser/expr/assignNewByRef.test b/vendor/nikic/php-parser/test/code/parser/expr/assignNewByRef.test
deleted file mode 100644
index a66d943a42..0000000000
--- a/vendor/nikic/php-parser/test/code/parser/expr/assignNewByRef.test
+++ /dev/null
@@ -1,43 +0,0 @@
-Assigning new by reference (PHP 5 only)
------
-<?php
-$a =& new B;
------
-!!php5
-array(
-    0: Stmt_Expression(
-        expr: Expr_AssignRef(
-            var: Expr_Variable(
-                name: a
-            )
-            expr: Expr_New(
-                class: Name(
-                    parts: array(
-                        0: B
-                    )
-                )
-                args: array(
-                )
-            )
-        )
-    )
-)
------
-<?php
-$a =& new B;
------
-!!php7
-Syntax error, unexpected T_NEW from 2:7 to 2:9
-array(
-    0: Stmt_Expression(
-        expr: Expr_New(
-            class: Name(
-                parts: array(
-                    0: B
-                )
-            )
-            args: array(
-            )
-        )
-    )
-)
\ No newline at end of file
diff --git a/vendor/nikic/php-parser/test/code/parser/expr/cast.test b/vendor/nikic/php-parser/test/code/parser/expr/cast.test
deleted file mode 100644
index a875bb47fe..0000000000
--- a/vendor/nikic/php-parser/test/code/parser/expr/cast.test
+++ /dev/null
@@ -1,94 +0,0 @@
-Casts
------
-<?php
-(array)   $a;
-(bool)    $a;
-(boolean) $a;
-(real)    $a;
-(double)  $a;
-(float)   $a;
-(int)     $a;
-(integer) $a;
-(object)  $a;
-(string)  $a;
-(unset)   $a;
------
-array(
-    0: Stmt_Expression(
-        expr: Expr_Cast_Array(
-            expr: Expr_Variable(
-                name: a
-            )
-        )
-    )
-    1: Stmt_Expression(
-        expr: Expr_Cast_Bool(
-            expr: Expr_Variable(
-                name: a
-            )
-        )
-    )
-    2: Stmt_Expression(
-        expr: Expr_Cast_Bool(
-            expr: Expr_Variable(
-                name: a
-            )
-        )
-    )
-    3: Stmt_Expression(
-        expr: Expr_Cast_Double(
-            expr: Expr_Variable(
-                name: a
-            )
-        )
-    )
-    4: Stmt_Expression(
-        expr: Expr_Cast_Double(
-            expr: Expr_Variable(
-                name: a
-            )
-        )
-    )
-    5: Stmt_Expression(
-        expr: Expr_Cast_Double(
-            expr: Expr_Variable(
-                name: a
-            )
-        )
-    )
-    6: Stmt_Expression(
-        expr: Expr_Cast_Int(
-            expr: Expr_Variable(
-                name: a
-            )
-        )
-    )
-    7: Stmt_Expression(
-        expr: Expr_Cast_Int(
-            expr: Expr_Variable(
-                name: a
-            )
-        )
-    )
-    8: Stmt_Expression(
-        expr: Expr_Cast_Object(
-            expr: Expr_Variable(
-                name: a
-            )
-        )
-    )
-    9: Stmt_Expression(
-        expr: Expr_Cast_String(
-            expr: Expr_Variable(
-                name: a
-            )
-        )
-    )
-    10: Stmt_Expression(
-        expr: Expr_Cast_Unset(
-            expr: Expr_Variable(
-                name: a
-            )
-        )
-    )
-)
\ No newline at end of file
diff --git a/vendor/nikic/php-parser/test/code/parser/expr/clone.test b/vendor/nikic/php-parser/test/code/parser/expr/clone.test
deleted file mode 100644
index 418eb0e658..0000000000
--- a/vendor/nikic/php-parser/test/code/parser/expr/clone.test
+++ /dev/null
@@ -1,15 +0,0 @@
-Clone
------
-<?php
-
-clone $a;
------
-array(
-    0: Stmt_Expression(
-        expr: Expr_Clone(
-            expr: Expr_Variable(
-                name: a
-            )
-        )
-    )
-)
\ No newline at end of file
diff --git a/vendor/nikic/php-parser/test/code/parser/expr/closure.test b/vendor/nikic/php-parser/test/code/parser/expr/closure.test
deleted file mode 100644
index c88de78b49..0000000000
--- a/vendor/nikic/php-parser/test/code/parser/expr/closure.test
+++ /dev/null
@@ -1,176 +0,0 @@
-Closures
------
-<?php
-function($a) { $a; };
-function($a) use($b) {};
-function() use($a, &$b) {};
-function &($a) {};
-static function() {};
-function($a) : array {};
-function() use($a) : \Foo\Bar {};
------
-array(
-    0: Stmt_Expression(
-        expr: Expr_Closure(
-            static: false
-            byRef: false
-            params: array(
-                0: Param(
-                    type: null
-                    byRef: false
-                    variadic: false
-                    var: Expr_Variable(
-                        name: a
-                    )
-                    default: null
-                )
-            )
-            uses: array(
-            )
-            returnType: null
-            stmts: array(
-                0: Stmt_Expression(
-                    expr: Expr_Variable(
-                        name: a
-                    )
-                )
-            )
-        )
-    )
-    1: Stmt_Expression(
-        expr: Expr_Closure(
-            static: false
-            byRef: false
-            params: array(
-                0: Param(
-                    type: null
-                    byRef: false
-                    variadic: false
-                    var: Expr_Variable(
-                        name: a
-                    )
-                    default: null
-                )
-            )
-            uses: array(
-                0: Expr_ClosureUse(
-                    var: Expr_Variable(
-                        name: b
-                    )
-                    byRef: false
-                )
-            )
-            returnType: null
-            stmts: array(
-            )
-        )
-    )
-    2: Stmt_Expression(
-        expr: Expr_Closure(
-            static: false
-            byRef: false
-            params: array(
-            )
-            uses: array(
-                0: Expr_ClosureUse(
-                    var: Expr_Variable(
-                        name: a
-                    )
-                    byRef: false
-                )
-                1: Expr_ClosureUse(
-                    var: Expr_Variable(
-                        name: b
-                    )
-                    byRef: true
-                )
-            )
-            returnType: null
-            stmts: array(
-            )
-        )
-    )
-    3: Stmt_Expression(
-        expr: Expr_Closure(
-            static: false
-            byRef: true
-            params: array(
-                0: Param(
-                    type: null
-                    byRef: false
-                    variadic: false
-                    var: Expr_Variable(
-                        name: a
-                    )
-                    default: null
-                )
-            )
-            uses: array(
-            )
-            returnType: null
-            stmts: array(
-            )
-        )
-    )
-    4: Stmt_Expression(
-        expr: Expr_Closure(
-            static: true
-            byRef: false
-            params: array(
-            )
-            uses: array(
-            )
-            returnType: null
-            stmts: array(
-            )
-        )
-    )
-    5: Stmt_Expression(
-        expr: Expr_Closure(
-            static: false
-            byRef: false
-            params: array(
-                0: Param(
-                    type: null
-                    byRef: false
-                    variadic: false
-                    var: Expr_Variable(
-                        name: a
-                    )
-                    default: null
-                )
-            )
-            uses: array(
-            )
-            returnType: Identifier(
-                name: array
-            )
-            stmts: array(
-            )
-        )
-    )
-    6: Stmt_Expression(
-        expr: Expr_Closure(
-            static: false
-            byRef: false
-            params: array(
-            )
-            uses: array(
-                0: Expr_ClosureUse(
-                    var: Expr_Variable(
-                        name: a
-                    )
-                    byRef: false
-                )
-            )
-            returnType: Name_FullyQualified(
-                parts: array(
-                    0: Foo
-                    1: Bar
-                )
-            )
-            stmts: array(
-            )
-        )
-    )
-)
\ No newline at end of file
diff --git a/vendor/nikic/php-parser/test/code/parser/expr/comparison.test b/vendor/nikic/php-parser/test/code/parser/expr/comparison.test
deleted file mode 100644
index 011692f064..0000000000
--- a/vendor/nikic/php-parser/test/code/parser/expr/comparison.test
+++ /dev/null
@@ -1,129 +0,0 @@
-Comparison operators
------
-<?php
-$a < $b;
-$a <= $b;
-$a > $b;
-$a >= $b;
-$a == $b;
-$a === $b;
-$a != $b;
-$a !== $b;
-$a <=> $b;
-$a instanceof B;
-$a instanceof $b;
------
-array(
-    0: Stmt_Expression(
-        expr: Expr_BinaryOp_Smaller(
-            left: Expr_Variable(
-                name: a
-            )
-            right: Expr_Variable(
-                name: b
-            )
-        )
-    )
-    1: Stmt_Expression(
-        expr: Expr_BinaryOp_SmallerOrEqual(
-            left: Expr_Variable(
-                name: a
-            )
-            right: Expr_Variable(
-                name: b
-            )
-        )
-    )
-    2: Stmt_Expression(
-        expr: Expr_BinaryOp_Greater(
-            left: Expr_Variable(
-                name: a
-            )
-            right: Expr_Variable(
-                name: b
-            )
-        )
-    )
-    3: Stmt_Expression(
-        expr: Expr_BinaryOp_GreaterOrEqual(
-            left: Expr_Variable(
-                name: a
-            )
-            right: Expr_Variable(
-                name: b
-            )
-        )
-    )
-    4: Stmt_Expression(
-        expr: Expr_BinaryOp_Equal(
-            left: Expr_Variable(
-                name: a
-            )
-            right: Expr_Variable(
-                name: b
-            )
-        )
-    )
-    5: Stmt_Expression(
-        expr: Expr_BinaryOp_Identical(
-            left: Expr_Variable(
-                name: a
-            )
-            right: Expr_Variable(
-                name: b
-            )
-        )
-    )
-    6: Stmt_Expression(
-        expr: Expr_BinaryOp_NotEqual(
-            left: Expr_Variable(
-                name: a
-            )
-            right: Expr_Variable(
-                name: b
-            )
-        )
-    )
-    7: Stmt_Expression(
-        expr: Expr_BinaryOp_NotIdentical(
-            left: Expr_Variable(
-                name: a
-            )
-            right: Expr_Variable(
-                name: b
-            )
-        )
-    )
-    8: Stmt_Expression(
-        expr: Expr_BinaryOp_Spaceship(
-            left: Expr_Variable(
-                name: a
-            )
-            right: Expr_Variable(
-                name: b
-            )
-        )
-    )
-    9: Stmt_Expression(
-        expr: Expr_Instanceof(
-            expr: Expr_Variable(
-                name: a
-            )
-            class: Name(
-                parts: array(
-                    0: B
-                )
-            )
-        )
-    )
-    10: Stmt_Expression(
-        expr: Expr_Instanceof(
-            expr: Expr_Variable(
-                name: a
-            )
-            class: Expr_Variable(
-                name: b
-            )
-        )
-    )
-)
\ No newline at end of file
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
deleted file mode 100644
index 0f9815f94e..0000000000
--- a/vendor/nikic/php-parser/test/code/parser/expr/constant_expr.test
+++ /dev/null
@@ -1,694 +0,0 @@
-Expressions in static scalar context
------
-<?php
-
-const T_1 = 1 << 1;
-const T_2 = 1 / 2;
-const T_3 = 1.5 + 1.5;
-const T_4 = "foo" . "bar";
-const T_5 = (1.5 + 1.5) * 2;
-const T_6 = "foo" . 2 . 3 . 4.0;
-const T_7 = __LINE__;
-const T_8 = <<<ENDOFSTRING
-This is a test string
-ENDOFSTRING;
-const T_9 = ~-1;
-const T_10 = (-1?:1) + (0?2:3);
-const T_11 = 1 && 0;
-const T_12 = 1 and 1;
-const T_13 = 0 || 0;
-const T_14 = 1 or 0;
-const T_15 = 1 xor 1;
-const T_16 = 1 xor 0;
-const T_17 = 1 < 0;
-const T_18 = 0 <= 0;
-const T_19 = 1 > 0;
-const T_20 = 1 >= 0;
-const T_21 = 1 === 1;
-const T_22 = 1 !== 1;
-const T_23 = 0 != "0";
-const T_24 = 1 == "1";
-const T_25 = 1 + 2 * 3;
-const T_26 = "1" + 2 + "3";
-const T_27 = 2 ** 3;
-const T_28 = [1, 2, 3][1];
-const T_29 = 12 - 13;
-const T_30 = 12 ^ 13;
-const T_31 = 12 & 13;
-const T_32 = 12 | 13;
-const T_33 = 12 % 3;
-const T_34 = 100 >> 4;
-const T_35 = !false;
------
-array(
-    0: Stmt_Const(
-        consts: array(
-            0: Const(
-                name: Identifier(
-                    name: T_1
-                )
-                value: Expr_BinaryOp_ShiftLeft(
-                    left: Scalar_LNumber(
-                        value: 1
-                    )
-                    right: Scalar_LNumber(
-                        value: 1
-                    )
-                )
-            )
-        )
-    )
-    1: Stmt_Const(
-        consts: array(
-            0: Const(
-                name: Identifier(
-                    name: T_2
-                )
-                value: Expr_BinaryOp_Div(
-                    left: Scalar_LNumber(
-                        value: 1
-                    )
-                    right: Scalar_LNumber(
-                        value: 2
-                    )
-                )
-            )
-        )
-    )
-    2: Stmt_Const(
-        consts: array(
-            0: Const(
-                name: Identifier(
-                    name: T_3
-                )
-                value: Expr_BinaryOp_Plus(
-                    left: Scalar_DNumber(
-                        value: 1.5
-                    )
-                    right: Scalar_DNumber(
-                        value: 1.5
-                    )
-                )
-            )
-        )
-    )
-    3: Stmt_Const(
-        consts: array(
-            0: Const(
-                name: Identifier(
-                    name: T_4
-                )
-                value: Expr_BinaryOp_Concat(
-                    left: Scalar_String(
-                        value: foo
-                    )
-                    right: Scalar_String(
-                        value: bar
-                    )
-                )
-            )
-        )
-    )
-    4: Stmt_Const(
-        consts: array(
-            0: Const(
-                name: Identifier(
-                    name: T_5
-                )
-                value: Expr_BinaryOp_Mul(
-                    left: Expr_BinaryOp_Plus(
-                        left: Scalar_DNumber(
-                            value: 1.5
-                        )
-                        right: Scalar_DNumber(
-                            value: 1.5
-                        )
-                    )
-                    right: Scalar_LNumber(
-                        value: 2
-                    )
-                )
-            )
-        )
-    )
-    5: Stmt_Const(
-        consts: array(
-            0: Const(
-                name: Identifier(
-                    name: T_6
-                )
-                value: Expr_BinaryOp_Concat(
-                    left: Expr_BinaryOp_Concat(
-                        left: Expr_BinaryOp_Concat(
-                            left: Scalar_String(
-                                value: foo
-                            )
-                            right: Scalar_LNumber(
-                                value: 2
-                            )
-                        )
-                        right: Scalar_LNumber(
-                            value: 3
-                        )
-                    )
-                    right: Scalar_DNumber(
-                        value: 4
-                    )
-                )
-            )
-        )
-    )
-    6: Stmt_Const(
-        consts: array(
-            0: Const(
-                name: Identifier(
-                    name: T_7
-                )
-                value: Scalar_MagicConst_Line(
-                )
-            )
-        )
-    )
-    7: Stmt_Const(
-        consts: array(
-            0: Const(
-                name: Identifier(
-                    name: T_8
-                )
-                value: Scalar_String(
-                    value: This is a test string
-                )
-            )
-        )
-    )
-    8: Stmt_Const(
-        consts: array(
-            0: Const(
-                name: Identifier(
-                    name: T_9
-                )
-                value: Expr_BitwiseNot(
-                    expr: Expr_UnaryMinus(
-                        expr: Scalar_LNumber(
-                            value: 1
-                        )
-                    )
-                )
-            )
-        )
-    )
-    9: Stmt_Const(
-        consts: array(
-            0: Const(
-                name: Identifier(
-                    name: T_10
-                )
-                value: Expr_BinaryOp_Plus(
-                    left: Expr_Ternary(
-                        cond: Expr_UnaryMinus(
-                            expr: Scalar_LNumber(
-                                value: 1
-                            )
-                        )
-                        if: null
-                        else: Scalar_LNumber(
-                            value: 1
-                        )
-                    )
-                    right: Expr_Ternary(
-                        cond: Scalar_LNumber(
-                            value: 0
-                        )
-                        if: Scalar_LNumber(
-                            value: 2
-                        )
-                        else: Scalar_LNumber(
-                            value: 3
-                        )
-                    )
-                )
-            )
-        )
-    )
-    10: Stmt_Const(
-        consts: array(
-            0: Const(
-                name: Identifier(
-                    name: T_11
-                )
-                value: Expr_BinaryOp_BooleanAnd(
-                    left: Scalar_LNumber(
-                        value: 1
-                    )
-                    right: Scalar_LNumber(
-                        value: 0
-                    )
-                )
-            )
-        )
-    )
-    11: Stmt_Const(
-        consts: array(
-            0: Const(
-                name: Identifier(
-                    name: T_12
-                )
-                value: Expr_BinaryOp_LogicalAnd(
-                    left: Scalar_LNumber(
-                        value: 1
-                    )
-                    right: Scalar_LNumber(
-                        value: 1
-                    )
-                )
-            )
-        )
-    )
-    12: Stmt_Const(
-        consts: array(
-            0: Const(
-                name: Identifier(
-                    name: T_13
-                )
-                value: Expr_BinaryOp_BooleanOr(
-                    left: Scalar_LNumber(
-                        value: 0
-                    )
-                    right: Scalar_LNumber(
-                        value: 0
-                    )
-                )
-            )
-        )
-    )
-    13: Stmt_Const(
-        consts: array(
-            0: Const(
-                name: Identifier(
-                    name: T_14
-                )
-                value: Expr_BinaryOp_LogicalOr(
-                    left: Scalar_LNumber(
-                        value: 1
-                    )
-                    right: Scalar_LNumber(
-                        value: 0
-                    )
-                )
-            )
-        )
-    )
-    14: Stmt_Const(
-        consts: array(
-            0: Const(
-                name: Identifier(
-                    name: T_15
-                )
-                value: Expr_BinaryOp_LogicalXor(
-                    left: Scalar_LNumber(
-                        value: 1
-                    )
-                    right: Scalar_LNumber(
-                        value: 1
-                    )
-                )
-            )
-        )
-    )
-    15: Stmt_Const(
-        consts: array(
-            0: Const(
-                name: Identifier(
-                    name: T_16
-                )
-                value: Expr_BinaryOp_LogicalXor(
-                    left: Scalar_LNumber(
-                        value: 1
-                    )
-                    right: Scalar_LNumber(
-                        value: 0
-                    )
-                )
-            )
-        )
-    )
-    16: Stmt_Const(
-        consts: array(
-            0: Const(
-                name: Identifier(
-                    name: T_17
-                )
-                value: Expr_BinaryOp_Smaller(
-                    left: Scalar_LNumber(
-                        value: 1
-                    )
-                    right: Scalar_LNumber(
-                        value: 0
-                    )
-                )
-            )
-        )
-    )
-    17: Stmt_Const(
-        consts: array(
-            0: Const(
-                name: Identifier(
-                    name: T_18
-                )
-                value: Expr_BinaryOp_SmallerOrEqual(
-                    left: Scalar_LNumber(
-                        value: 0
-                    )
-                    right: Scalar_LNumber(
-                        value: 0
-                    )
-                )
-            )
-        )
-    )
-    18: Stmt_Const(
-        consts: array(
-            0: Const(
-                name: Identifier(
-                    name: T_19
-                )
-                value: Expr_BinaryOp_Greater(
-                    left: Scalar_LNumber(
-                        value: 1
-                    )
-                    right: Scalar_LNumber(
-                        value: 0
-                    )
-                )
-            )
-        )
-    )
-    19: Stmt_Const(
-        consts: array(
-            0: Const(
-                name: Identifier(
-                    name: T_20
-                )
-                value: Expr_BinaryOp_GreaterOrEqual(
-                    left: Scalar_LNumber(
-                        value: 1
-                    )
-                    right: Scalar_LNumber(
-                        value: 0
-                    )
-                )
-            )
-        )
-    )
-    20: Stmt_Const(
-        consts: array(
-            0: Const(
-                name: Identifier(
-                    name: T_21
-                )
-                value: Expr_BinaryOp_Identical(
-                    left: Scalar_LNumber(
-                        value: 1
-                    )
-                    right: Scalar_LNumber(
-                        value: 1
-                    )
-                )
-            )
-        )
-    )
-    21: Stmt_Const(
-        consts: array(
-            0: Const(
-                name: Identifier(
-                    name: T_22
-                )
-                value: Expr_BinaryOp_NotIdentical(
-                    left: Scalar_LNumber(
-                        value: 1
-                    )
-                    right: Scalar_LNumber(
-                        value: 1
-                    )
-                )
-            )
-        )
-    )
-    22: Stmt_Const(
-        consts: array(
-            0: Const(
-                name: Identifier(
-                    name: T_23
-                )
-                value: Expr_BinaryOp_NotEqual(
-                    left: Scalar_LNumber(
-                        value: 0
-                    )
-                    right: Scalar_String(
-                        value: 0
-                    )
-                )
-            )
-        )
-    )
-    23: Stmt_Const(
-        consts: array(
-            0: Const(
-                name: Identifier(
-                    name: T_24
-                )
-                value: Expr_BinaryOp_Equal(
-                    left: Scalar_LNumber(
-                        value: 1
-                    )
-                    right: Scalar_String(
-                        value: 1
-                    )
-                )
-            )
-        )
-    )
-    24: Stmt_Const(
-        consts: array(
-            0: Const(
-                name: Identifier(
-                    name: T_25
-                )
-                value: Expr_BinaryOp_Plus(
-                    left: Scalar_LNumber(
-                        value: 1
-                    )
-                    right: Expr_BinaryOp_Mul(
-                        left: Scalar_LNumber(
-                            value: 2
-                        )
-                        right: Scalar_LNumber(
-                            value: 3
-                        )
-                    )
-                )
-            )
-        )
-    )
-    25: Stmt_Const(
-        consts: array(
-            0: Const(
-                name: Identifier(
-                    name: T_26
-                )
-                value: Expr_BinaryOp_Plus(
-                    left: Expr_BinaryOp_Plus(
-                        left: Scalar_String(
-                            value: 1
-                        )
-                        right: Scalar_LNumber(
-                            value: 2
-                        )
-                    )
-                    right: Scalar_String(
-                        value: 3
-                    )
-                )
-            )
-        )
-    )
-    26: Stmt_Const(
-        consts: array(
-            0: Const(
-                name: Identifier(
-                    name: T_27
-                )
-                value: Expr_BinaryOp_Pow(
-                    left: Scalar_LNumber(
-                        value: 2
-                    )
-                    right: Scalar_LNumber(
-                        value: 3
-                    )
-                )
-            )
-        )
-    )
-    27: Stmt_Const(
-        consts: array(
-            0: Const(
-                name: Identifier(
-                    name: T_28
-                )
-                value: Expr_ArrayDimFetch(
-                    var: 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
-                            )
-                        )
-                    )
-                    dim: Scalar_LNumber(
-                        value: 1
-                    )
-                )
-            )
-        )
-    )
-    28: Stmt_Const(
-        consts: array(
-            0: Const(
-                name: Identifier(
-                    name: T_29
-                )
-                value: Expr_BinaryOp_Minus(
-                    left: Scalar_LNumber(
-                        value: 12
-                    )
-                    right: Scalar_LNumber(
-                        value: 13
-                    )
-                )
-            )
-        )
-    )
-    29: Stmt_Const(
-        consts: array(
-            0: Const(
-                name: Identifier(
-                    name: T_30
-                )
-                value: Expr_BinaryOp_BitwiseXor(
-                    left: Scalar_LNumber(
-                        value: 12
-                    )
-                    right: Scalar_LNumber(
-                        value: 13
-                    )
-                )
-            )
-        )
-    )
-    30: Stmt_Const(
-        consts: array(
-            0: Const(
-                name: Identifier(
-                    name: T_31
-                )
-                value: Expr_BinaryOp_BitwiseAnd(
-                    left: Scalar_LNumber(
-                        value: 12
-                    )
-                    right: Scalar_LNumber(
-                        value: 13
-                    )
-                )
-            )
-        )
-    )
-    31: Stmt_Const(
-        consts: array(
-            0: Const(
-                name: Identifier(
-                    name: T_32
-                )
-                value: Expr_BinaryOp_BitwiseOr(
-                    left: Scalar_LNumber(
-                        value: 12
-                    )
-                    right: Scalar_LNumber(
-                        value: 13
-                    )
-                )
-            )
-        )
-    )
-    32: Stmt_Const(
-        consts: array(
-            0: Const(
-                name: Identifier(
-                    name: T_33
-                )
-                value: Expr_BinaryOp_Mod(
-                    left: Scalar_LNumber(
-                        value: 12
-                    )
-                    right: Scalar_LNumber(
-                        value: 3
-                    )
-                )
-            )
-        )
-    )
-    33: Stmt_Const(
-        consts: array(
-            0: Const(
-                name: Identifier(
-                    name: T_34
-                )
-                value: Expr_BinaryOp_ShiftRight(
-                    left: Scalar_LNumber(
-                        value: 100
-                    )
-                    right: Scalar_LNumber(
-                        value: 4
-                    )
-                )
-            )
-        )
-    )
-    34: Stmt_Const(
-        consts: array(
-            0: Const(
-                name: Identifier(
-                    name: T_35
-                )
-                value: Expr_BooleanNot(
-                    expr: Expr_ConstFetch(
-                        name: Name(
-                            parts: array(
-                                0: false
-                            )
-                        )
-                    )
-                )
-            )
-        )
-    )
-)
\ No newline at end of file
diff --git a/vendor/nikic/php-parser/test/code/parser/expr/errorSuppress.test b/vendor/nikic/php-parser/test/code/parser/expr/errorSuppress.test
deleted file mode 100644
index 7f099988ab..0000000000
--- a/vendor/nikic/php-parser/test/code/parser/expr/errorSuppress.test
+++ /dev/null
@@ -1,14 +0,0 @@
-Error suppression
------
-<?php
-@$a;
------
-array(
-    0: Stmt_Expression(
-        expr: Expr_ErrorSuppress(
-            expr: Expr_Variable(
-                name: a
-            )
-        )
-    )
-)
\ No newline at end of file
diff --git a/vendor/nikic/php-parser/test/code/parser/expr/exit.test b/vendor/nikic/php-parser/test/code/parser/expr/exit.test
deleted file mode 100644
index c880921f30..0000000000
--- a/vendor/nikic/php-parser/test/code/parser/expr/exit.test
+++ /dev/null
@@ -1,46 +0,0 @@
-Exit
------
-<?php
-exit;
-exit();
-exit('Die!');
-die;
-die();
-die('Exit!');
------
-array(
-    0: Stmt_Expression(
-        expr: Expr_Exit(
-            expr: null
-        )
-    )
-    1: Stmt_Expression(
-        expr: Expr_Exit(
-            expr: null
-        )
-    )
-    2: Stmt_Expression(
-        expr: Expr_Exit(
-            expr: Scalar_String(
-                value: Die!
-            )
-        )
-    )
-    3: Stmt_Expression(
-        expr: Expr_Exit(
-            expr: null
-        )
-    )
-    4: Stmt_Expression(
-        expr: Expr_Exit(
-            expr: null
-        )
-    )
-    5: Stmt_Expression(
-        expr: Expr_Exit(
-            expr: Scalar_String(
-                value: Exit!
-            )
-        )
-    )
-)
\ No newline at end of file
diff --git a/vendor/nikic/php-parser/test/code/parser/expr/fetchAndCall/args.test b/vendor/nikic/php-parser/test/code/parser/expr/fetchAndCall/args.test
deleted file mode 100644
index 24ca03105d..0000000000
--- a/vendor/nikic/php-parser/test/code/parser/expr/fetchAndCall/args.test
+++ /dev/null
@@ -1,109 +0,0 @@
-Arguments
------
-<?php
-
-f();
-f($a);
-f($a, $b);
-f(&$a);
-f($a, ...$b);
------
-array(
-    0: Stmt_Expression(
-        expr: Expr_FuncCall(
-            name: Name(
-                parts: array(
-                    0: f
-                )
-            )
-            args: array(
-            )
-        )
-    )
-    1: Stmt_Expression(
-        expr: Expr_FuncCall(
-            name: Name(
-                parts: array(
-                    0: f
-                )
-            )
-            args: array(
-                0: Arg(
-                    value: Expr_Variable(
-                        name: a
-                    )
-                    byRef: false
-                    unpack: false
-                )
-            )
-        )
-    )
-    2: Stmt_Expression(
-        expr: Expr_FuncCall(
-            name: Name(
-                parts: array(
-                    0: f
-                )
-            )
-            args: array(
-                0: Arg(
-                    value: Expr_Variable(
-                        name: a
-                    )
-                    byRef: false
-                    unpack: false
-                )
-                1: Arg(
-                    value: Expr_Variable(
-                        name: b
-                    )
-                    byRef: false
-                    unpack: false
-                )
-            )
-        )
-    )
-    3: Stmt_Expression(
-        expr: Expr_FuncCall(
-            name: Name(
-                parts: array(
-                    0: f
-                )
-            )
-            args: array(
-                0: Arg(
-                    value: Expr_Variable(
-                        name: a
-                    )
-                    byRef: true
-                    unpack: false
-                )
-            )
-        )
-    )
-    4: Stmt_Expression(
-        expr: Expr_FuncCall(
-            name: Name(
-                parts: array(
-                    0: f
-                )
-            )
-            args: array(
-                0: Arg(
-                    value: Expr_Variable(
-                        name: a
-                    )
-                    byRef: false
-                    unpack: false
-                )
-                1: Arg(
-                    value: Expr_Variable(
-                        name: b
-                    )
-                    byRef: false
-                    unpack: true
-                )
-            )
-        )
-    )
-)
\ No newline at end of file
diff --git a/vendor/nikic/php-parser/test/code/parser/expr/fetchAndCall/constFetch.test b/vendor/nikic/php-parser/test/code/parser/expr/fetchAndCall/constFetch.test
deleted file mode 100644
index d00084bafa..0000000000
--- a/vendor/nikic/php-parser/test/code/parser/expr/fetchAndCall/constFetch.test
+++ /dev/null
@@ -1,43 +0,0 @@
-Constant fetches
------
-<?php
-
-A;
-A::B;
-A::class;
------
-array(
-    0: Stmt_Expression(
-        expr: Expr_ConstFetch(
-            name: Name(
-                parts: array(
-                    0: A
-                )
-            )
-        )
-    )
-    1: Stmt_Expression(
-        expr: Expr_ClassConstFetch(
-            class: Name(
-                parts: array(
-                    0: A
-                )
-            )
-            name: Identifier(
-                name: B
-            )
-        )
-    )
-    2: Stmt_Expression(
-        expr: Expr_ClassConstFetch(
-            class: Name(
-                parts: array(
-                    0: A
-                )
-            )
-            name: Identifier(
-                name: class
-            )
-        )
-    )
-)
\ No newline at end of file
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
deleted file mode 100644
index 557532f1b7..0000000000
--- a/vendor/nikic/php-parser/test/code/parser/expr/fetchAndCall/constantDeref.test
+++ /dev/null
@@ -1,265 +0,0 @@
-Array/string dereferencing
------
-<?php
-
-"abc"[2];
-"abc"[2][0][0];
-
-[1, 2, 3][2];
-[1, 2, 3][2][0][0];
-
-array(1, 2, 3)[2];
-array(1, 2, 3)[2][0][0];
-
-FOO[0];
-Foo::BAR[1];
-$foo::BAR[2][1][0];
------
-array(
-    0: Stmt_Expression(
-        expr: Expr_ArrayDimFetch(
-            var: Scalar_String(
-                value: abc
-            )
-            dim: Scalar_LNumber(
-                value: 2
-            )
-        )
-    )
-    1: Stmt_Expression(
-        expr: Expr_ArrayDimFetch(
-            var: Expr_ArrayDimFetch(
-                var: Expr_ArrayDimFetch(
-                    var: Scalar_String(
-                        value: abc
-                    )
-                    dim: Scalar_LNumber(
-                        value: 2
-                    )
-                )
-                dim: Scalar_LNumber(
-                    value: 0
-                )
-            )
-            dim: Scalar_LNumber(
-                value: 0
-            )
-        )
-    )
-    2: Stmt_Expression(
-        expr: Expr_ArrayDimFetch(
-            var: 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
-                    )
-                )
-            )
-            dim: Scalar_LNumber(
-                value: 2
-            )
-        )
-    )
-    3: Stmt_Expression(
-        expr: Expr_ArrayDimFetch(
-            var: Expr_ArrayDimFetch(
-                var: Expr_ArrayDimFetch(
-                    var: 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
-                            )
-                        )
-                    )
-                    dim: Scalar_LNumber(
-                        value: 2
-                    )
-                )
-                dim: Scalar_LNumber(
-                    value: 0
-                )
-            )
-            dim: Scalar_LNumber(
-                value: 0
-            )
-        )
-    )
-    4: Stmt_Expression(
-        expr: Expr_ArrayDimFetch(
-            var: 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
-                    )
-                )
-            )
-            dim: Scalar_LNumber(
-                value: 2
-            )
-        )
-    )
-    5: Stmt_Expression(
-        expr: Expr_ArrayDimFetch(
-            var: Expr_ArrayDimFetch(
-                var: Expr_ArrayDimFetch(
-                    var: 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
-                            )
-                        )
-                    )
-                    dim: Scalar_LNumber(
-                        value: 2
-                    )
-                )
-                dim: Scalar_LNumber(
-                    value: 0
-                )
-            )
-            dim: Scalar_LNumber(
-                value: 0
-            )
-        )
-    )
-    6: Stmt_Expression(
-        expr: Expr_ArrayDimFetch(
-            var: Expr_ConstFetch(
-                name: Name(
-                    parts: array(
-                        0: FOO
-                    )
-                )
-            )
-            dim: Scalar_LNumber(
-                value: 0
-            )
-        )
-    )
-    7: Stmt_Expression(
-        expr: Expr_ArrayDimFetch(
-            var: Expr_ClassConstFetch(
-                class: Name(
-                    parts: array(
-                        0: Foo
-                    )
-                )
-                name: Identifier(
-                    name: BAR
-                )
-            )
-            dim: Scalar_LNumber(
-                value: 1
-            )
-        )
-    )
-    8: Stmt_Expression(
-        expr: Expr_ArrayDimFetch(
-            var: Expr_ArrayDimFetch(
-                var: Expr_ArrayDimFetch(
-                    var: Expr_ClassConstFetch(
-                        class: Expr_Variable(
-                            name: foo
-                        )
-                        name: Identifier(
-                            name: BAR
-                        )
-                    )
-                    dim: Scalar_LNumber(
-                        value: 2
-                    )
-                )
-                dim: Scalar_LNumber(
-                    value: 1
-                )
-            )
-            dim: Scalar_LNumber(
-                value: 0
-            )
-        )
-    )
-)
\ No newline at end of file
diff --git a/vendor/nikic/php-parser/test/code/parser/expr/fetchAndCall/funcCall.test b/vendor/nikic/php-parser/test/code/parser/expr/fetchAndCall/funcCall.test
deleted file mode 100644
index 4a82651403..0000000000
--- a/vendor/nikic/php-parser/test/code/parser/expr/fetchAndCall/funcCall.test
+++ /dev/null
@@ -1,158 +0,0 @@
-Function calls
------
-<?php
-
-// function name variations
-a();
-$a();
-${'a'}();
-$$a();
-$$$a();
-$a['b']();
-$a{'b'}();
-$a->b['c']();
-
-// array dereferencing
-a()['b'];
------
-array(
-    0: Stmt_Expression(
-        expr: Expr_FuncCall(
-            name: Name(
-                parts: array(
-                    0: a
-                )
-                comments: array(
-                    0: // function name variations
-                )
-            )
-            args: array(
-            )
-            comments: array(
-                0: // function name variations
-            )
-        )
-        comments: array(
-            0: // function name variations
-        )
-    )
-    1: Stmt_Expression(
-        expr: Expr_FuncCall(
-            name: Expr_Variable(
-                name: a
-            )
-            args: array(
-            )
-        )
-    )
-    2: Stmt_Expression(
-        expr: Expr_FuncCall(
-            name: Expr_Variable(
-                name: Scalar_String(
-                    value: a
-                )
-            )
-            args: array(
-            )
-        )
-    )
-    3: Stmt_Expression(
-        expr: Expr_FuncCall(
-            name: Expr_Variable(
-                name: Expr_Variable(
-                    name: a
-                )
-            )
-            args: array(
-            )
-        )
-    )
-    4: Stmt_Expression(
-        expr: Expr_FuncCall(
-            name: Expr_Variable(
-                name: Expr_Variable(
-                    name: Expr_Variable(
-                        name: a
-                    )
-                )
-            )
-            args: array(
-            )
-        )
-    )
-    5: Stmt_Expression(
-        expr: Expr_FuncCall(
-            name: Expr_ArrayDimFetch(
-                var: Expr_Variable(
-                    name: a
-                )
-                dim: Scalar_String(
-                    value: b
-                )
-            )
-            args: array(
-            )
-        )
-    )
-    6: Stmt_Expression(
-        expr: Expr_FuncCall(
-            name: Expr_ArrayDimFetch(
-                var: Expr_Variable(
-                    name: a
-                )
-                dim: Scalar_String(
-                    value: b
-                )
-            )
-            args: array(
-            )
-        )
-    )
-    7: Stmt_Expression(
-        expr: Expr_FuncCall(
-            name: Expr_ArrayDimFetch(
-                var: Expr_PropertyFetch(
-                    var: Expr_Variable(
-                        name: a
-                    )
-                    name: Identifier(
-                        name: b
-                    )
-                )
-                dim: Scalar_String(
-                    value: c
-                )
-            )
-            args: array(
-            )
-        )
-    )
-    8: Stmt_Expression(
-        expr: Expr_ArrayDimFetch(
-            var: Expr_FuncCall(
-                name: Name(
-                    parts: array(
-                        0: a
-                    )
-                    comments: array(
-                        0: // array dereferencing
-                    )
-                )
-                args: array(
-                )
-                comments: array(
-                    0: // array dereferencing
-                )
-            )
-            dim: Scalar_String(
-                value: b
-            )
-            comments: array(
-                0: // array dereferencing
-            )
-        )
-        comments: array(
-            0: // array dereferencing
-        )
-    )
-)
\ No newline at end of file
diff --git a/vendor/nikic/php-parser/test/code/parser/expr/fetchAndCall/newDeref.test b/vendor/nikic/php-parser/test/code/parser/expr/fetchAndCall/newDeref.test
deleted file mode 100644
index a4b7a7240b..0000000000
--- a/vendor/nikic/php-parser/test/code/parser/expr/fetchAndCall/newDeref.test
+++ /dev/null
@@ -1,82 +0,0 @@
-New expression dereferencing
------
-<?php
-
-(new A)->b;
-(new A)->b();
-(new A)['b'];
-(new A)['b']['c'];
------
-array(
-    0: Stmt_Expression(
-        expr: Expr_PropertyFetch(
-            var: Expr_New(
-                class: Name(
-                    parts: array(
-                        0: A
-                    )
-                )
-                args: array(
-                )
-            )
-            name: Identifier(
-                name: b
-            )
-        )
-    )
-    1: Stmt_Expression(
-        expr: Expr_MethodCall(
-            var: Expr_New(
-                class: Name(
-                    parts: array(
-                        0: A
-                    )
-                )
-                args: array(
-                )
-            )
-            name: Identifier(
-                name: b
-            )
-            args: array(
-            )
-        )
-    )
-    2: Stmt_Expression(
-        expr: Expr_ArrayDimFetch(
-            var: Expr_New(
-                class: Name(
-                    parts: array(
-                        0: A
-                    )
-                )
-                args: array(
-                )
-            )
-            dim: Scalar_String(
-                value: b
-            )
-        )
-    )
-    3: Stmt_Expression(
-        expr: Expr_ArrayDimFetch(
-            var: Expr_ArrayDimFetch(
-                var: Expr_New(
-                    class: Name(
-                        parts: array(
-                            0: A
-                        )
-                    )
-                    args: array(
-                    )
-                )
-                dim: Scalar_String(
-                    value: b
-                )
-            )
-            dim: Scalar_String(
-                value: c
-            )
-        )
-    )
-)
\ No newline at end of file
diff --git a/vendor/nikic/php-parser/test/code/parser/expr/fetchAndCall/objectAccess.test b/vendor/nikic/php-parser/test/code/parser/expr/fetchAndCall/objectAccess.test
deleted file mode 100644
index 2d1808b058..0000000000
--- a/vendor/nikic/php-parser/test/code/parser/expr/fetchAndCall/objectAccess.test
+++ /dev/null
@@ -1,184 +0,0 @@
-Object access
------
-<?php
-
-// property fetch variations
-$a->b;
-$a->b['c'];
-$a->b{'c'};
-
-// method call variations
-$a->b();
-$a->{'b'}();
-$a->$b();
-$a->$b['c']();
-
-// array dereferencing
-$a->b()['c'];
-$a->b(){'c'}; // invalid PHP: drop Support?
------
-!!php5
-array(
-    0: Stmt_Expression(
-        expr: Expr_PropertyFetch(
-            var: Expr_Variable(
-                name: a
-                comments: array(
-                    0: // property fetch variations
-                )
-            )
-            name: Identifier(
-                name: b
-            )
-            comments: array(
-                0: // property fetch variations
-            )
-        )
-        comments: array(
-            0: // property fetch variations
-        )
-    )
-    1: Stmt_Expression(
-        expr: Expr_ArrayDimFetch(
-            var: Expr_PropertyFetch(
-                var: Expr_Variable(
-                    name: a
-                )
-                name: Identifier(
-                    name: b
-                )
-            )
-            dim: Scalar_String(
-                value: c
-            )
-        )
-    )
-    2: Stmt_Expression(
-        expr: Expr_ArrayDimFetch(
-            var: Expr_PropertyFetch(
-                var: Expr_Variable(
-                    name: a
-                )
-                name: Identifier(
-                    name: b
-                )
-            )
-            dim: Scalar_String(
-                value: c
-            )
-        )
-    )
-    3: Stmt_Expression(
-        expr: Expr_MethodCall(
-            var: Expr_Variable(
-                name: a
-                comments: array(
-                    0: // method call variations
-                )
-            )
-            name: Identifier(
-                name: b
-            )
-            args: array(
-            )
-            comments: array(
-                0: // method call variations
-            )
-        )
-        comments: array(
-            0: // method call variations
-        )
-    )
-    4: Stmt_Expression(
-        expr: Expr_MethodCall(
-            var: Expr_Variable(
-                name: a
-            )
-            name: Scalar_String(
-                value: b
-            )
-            args: array(
-            )
-        )
-    )
-    5: Stmt_Expression(
-        expr: Expr_MethodCall(
-            var: Expr_Variable(
-                name: a
-            )
-            name: Expr_Variable(
-                name: b
-            )
-            args: array(
-            )
-        )
-    )
-    6: Stmt_Expression(
-        expr: Expr_MethodCall(
-            var: Expr_Variable(
-                name: a
-            )
-            name: Expr_ArrayDimFetch(
-                var: Expr_Variable(
-                    name: b
-                )
-                dim: Scalar_String(
-                    value: c
-                )
-            )
-            args: array(
-            )
-        )
-    )
-    7: Stmt_Expression(
-        expr: Expr_ArrayDimFetch(
-            var: Expr_MethodCall(
-                var: Expr_Variable(
-                    name: a
-                    comments: array(
-                        0: // array dereferencing
-                    )
-                )
-                name: Identifier(
-                    name: b
-                )
-                args: array(
-                )
-                comments: array(
-                    0: // array dereferencing
-                )
-            )
-            dim: Scalar_String(
-                value: c
-            )
-            comments: array(
-                0: // array dereferencing
-            )
-        )
-        comments: array(
-            0: // array dereferencing
-        )
-    )
-    8: Stmt_Expression(
-        expr: Expr_ArrayDimFetch(
-            var: Expr_MethodCall(
-                var: Expr_Variable(
-                    name: a
-                )
-                name: Identifier(
-                    name: b
-                )
-                args: array(
-                )
-            )
-            dim: Scalar_String(
-                value: c
-            )
-        )
-    )
-    9: Stmt_Nop(
-        comments: array(
-            0: // invalid PHP: drop Support?
-        )
-    )
-)
\ No newline at end of file
diff --git a/vendor/nikic/php-parser/test/code/parser/expr/fetchAndCall/simpleArrayAccess.test b/vendor/nikic/php-parser/test/code/parser/expr/fetchAndCall/simpleArrayAccess.test
deleted file mode 100644
index 133771b75d..0000000000
--- a/vendor/nikic/php-parser/test/code/parser/expr/fetchAndCall/simpleArrayAccess.test
+++ /dev/null
@@ -1,72 +0,0 @@
-Simple array access
------
-<?php
-
-$a['b'];
-$a['b']['c'];
-$a[] = $b;
-$a{'b'};
-${$a}['b'];
------
-array(
-    0: Stmt_Expression(
-        expr: Expr_ArrayDimFetch(
-            var: Expr_Variable(
-                name: a
-            )
-            dim: Scalar_String(
-                value: b
-            )
-        )
-    )
-    1: Stmt_Expression(
-        expr: Expr_ArrayDimFetch(
-            var: Expr_ArrayDimFetch(
-                var: Expr_Variable(
-                    name: a
-                )
-                dim: Scalar_String(
-                    value: b
-                )
-            )
-            dim: Scalar_String(
-                value: c
-            )
-        )
-    )
-    2: Stmt_Expression(
-        expr: Expr_Assign(
-            var: Expr_ArrayDimFetch(
-                var: Expr_Variable(
-                    name: a
-                )
-                dim: null
-            )
-            expr: Expr_Variable(
-                name: b
-            )
-        )
-    )
-    3: Stmt_Expression(
-        expr: Expr_ArrayDimFetch(
-            var: Expr_Variable(
-                name: a
-            )
-            dim: Scalar_String(
-                value: b
-            )
-        )
-    )
-    4: Stmt_Expression(
-        expr: Expr_ArrayDimFetch(
-            var: Expr_Variable(
-                name: Expr_Variable(
-                    name: a
-                )
-            )
-            dim: Scalar_String(
-                value: b
-            )
-        )
-    )
-)
\ No newline at end of file
diff --git a/vendor/nikic/php-parser/test/code/parser/expr/fetchAndCall/staticCall.test b/vendor/nikic/php-parser/test/code/parser/expr/fetchAndCall/staticCall.test
deleted file mode 100644
index a34a3e4bcd..0000000000
--- a/vendor/nikic/php-parser/test/code/parser/expr/fetchAndCall/staticCall.test
+++ /dev/null
@@ -1,214 +0,0 @@
-Static calls
------
-<?php
-
-// method name variations
-A::b();
-A::{'b'}();
-A::$b();
-A::$b['c']();
-A::$b['c']['d']();
-
-// array dereferencing
-A::b()['c'];
-
-// class name variations
-static::b();
-$a::b();
-${'a'}::b();
-$a['b']::c();
------
-!!php5
-array(
-    0: Stmt_Expression(
-        expr: Expr_StaticCall(
-            class: Name(
-                parts: array(
-                    0: A
-                )
-                comments: array(
-                    0: // method name variations
-                )
-            )
-            name: Identifier(
-                name: b
-            )
-            args: array(
-            )
-            comments: array(
-                0: // method name variations
-            )
-        )
-        comments: array(
-            0: // method name variations
-        )
-    )
-    1: Stmt_Expression(
-        expr: Expr_StaticCall(
-            class: Name(
-                parts: array(
-                    0: A
-                )
-            )
-            name: Scalar_String(
-                value: b
-            )
-            args: array(
-            )
-        )
-    )
-    2: Stmt_Expression(
-        expr: Expr_StaticCall(
-            class: Name(
-                parts: array(
-                    0: A
-                )
-            )
-            name: Expr_Variable(
-                name: b
-            )
-            args: array(
-            )
-        )
-    )
-    3: Stmt_Expression(
-        expr: Expr_StaticCall(
-            class: Name(
-                parts: array(
-                    0: A
-                )
-            )
-            name: Expr_ArrayDimFetch(
-                var: Expr_Variable(
-                    name: b
-                )
-                dim: Scalar_String(
-                    value: c
-                )
-            )
-            args: array(
-            )
-        )
-    )
-    4: Stmt_Expression(
-        expr: Expr_StaticCall(
-            class: Name(
-                parts: array(
-                    0: A
-                )
-            )
-            name: Expr_ArrayDimFetch(
-                var: Expr_ArrayDimFetch(
-                    var: Expr_Variable(
-                        name: b
-                    )
-                    dim: Scalar_String(
-                        value: c
-                    )
-                )
-                dim: Scalar_String(
-                    value: d
-                )
-            )
-            args: array(
-            )
-        )
-    )
-    5: Stmt_Expression(
-        expr: Expr_ArrayDimFetch(
-            var: Expr_StaticCall(
-                class: Name(
-                    parts: array(
-                        0: A
-                    )
-                    comments: array(
-                        0: // array dereferencing
-                    )
-                )
-                name: Identifier(
-                    name: b
-                )
-                args: array(
-                )
-                comments: array(
-                    0: // array dereferencing
-                )
-            )
-            dim: Scalar_String(
-                value: c
-            )
-            comments: array(
-                0: // array dereferencing
-            )
-        )
-        comments: array(
-            0: // array dereferencing
-        )
-    )
-    6: Stmt_Expression(
-        expr: Expr_StaticCall(
-            class: Name(
-                parts: array(
-                    0: static
-                )
-                comments: array(
-                    0: // class name variations
-                )
-            )
-            name: Identifier(
-                name: b
-            )
-            args: array(
-            )
-            comments: array(
-                0: // class name variations
-            )
-        )
-        comments: array(
-            0: // class name variations
-        )
-    )
-    7: Stmt_Expression(
-        expr: Expr_StaticCall(
-            class: Expr_Variable(
-                name: a
-            )
-            name: Identifier(
-                name: b
-            )
-            args: array(
-            )
-        )
-    )
-    8: Stmt_Expression(
-        expr: Expr_StaticCall(
-            class: Expr_Variable(
-                name: Scalar_String(
-                    value: a
-                )
-            )
-            name: Identifier(
-                name: b
-            )
-            args: array(
-            )
-        )
-    )
-    9: Stmt_Expression(
-        expr: Expr_StaticCall(
-            class: Expr_ArrayDimFetch(
-                var: Expr_Variable(
-                    name: a
-                )
-                dim: Scalar_String(
-                    value: b
-                )
-            )
-            name: Identifier(
-                name: c
-            )
-            args: array(
-            )
-        )
-    )
-)
\ No newline at end of file
diff --git a/vendor/nikic/php-parser/test/code/parser/expr/fetchAndCall/staticPropertyFetch.test b/vendor/nikic/php-parser/test/code/parser/expr/fetchAndCall/staticPropertyFetch.test
deleted file mode 100644
index a1de3c8c12..0000000000
--- a/vendor/nikic/php-parser/test/code/parser/expr/fetchAndCall/staticPropertyFetch.test
+++ /dev/null
@@ -1,113 +0,0 @@
-Static property fetches
------
-<?php
-
-// property name variations
-A::$b;
-A::$$b;
-A::${'b'};
-
-// array access
-A::$b['c'];
-A::$b{'c'};
-
-// class name variations can be found in staticCall.test
------
-array(
-    0: Stmt_Expression(
-        expr: Expr_StaticPropertyFetch(
-            class: Name(
-                parts: array(
-                    0: A
-                )
-                comments: array(
-                    0: // property name variations
-                )
-            )
-            name: VarLikeIdentifier(
-                name: b
-            )
-            comments: array(
-                0: // property name variations
-            )
-        )
-        comments: array(
-            0: // property name variations
-        )
-    )
-    1: Stmt_Expression(
-        expr: Expr_StaticPropertyFetch(
-            class: Name(
-                parts: array(
-                    0: A
-                )
-            )
-            name: Expr_Variable(
-                name: b
-            )
-        )
-    )
-    2: Stmt_Expression(
-        expr: Expr_StaticPropertyFetch(
-            class: Name(
-                parts: array(
-                    0: A
-                )
-            )
-            name: Scalar_String(
-                value: b
-            )
-        )
-    )
-    3: Stmt_Expression(
-        expr: Expr_ArrayDimFetch(
-            var: Expr_StaticPropertyFetch(
-                class: Name(
-                    parts: array(
-                        0: A
-                    )
-                    comments: array(
-                        0: // array access
-                    )
-                )
-                name: VarLikeIdentifier(
-                    name: b
-                )
-                comments: array(
-                    0: // array access
-                )
-            )
-            dim: Scalar_String(
-                value: c
-            )
-            comments: array(
-                0: // array access
-            )
-        )
-        comments: array(
-            0: // array access
-        )
-    )
-    4: Stmt_Expression(
-        expr: Expr_ArrayDimFetch(
-            var: Expr_StaticPropertyFetch(
-                class: Name(
-                    parts: array(
-                        0: A
-                    )
-                )
-                name: VarLikeIdentifier(
-                    name: b
-                )
-            )
-            dim: Scalar_String(
-                value: c
-            )
-        )
-    )
-    5: Stmt_Nop(
-        comments: array(
-            0: // class name variations can be found in staticCall.test
-        )
-    )
-)
\ No newline at end of file
diff --git a/vendor/nikic/php-parser/test/code/parser/expr/includeAndEval.test b/vendor/nikic/php-parser/test/code/parser/expr/includeAndEval.test
deleted file mode 100644
index 0ab189081a..0000000000
--- a/vendor/nikic/php-parser/test/code/parser/expr/includeAndEval.test
+++ /dev/null
@@ -1,50 +0,0 @@
-Include and eval
------
-<?php
-include 'A.php';
-include_once 'A.php';
-require 'A.php';
-require_once 'A.php';
-eval('A');
------
-array(
-    0: Stmt_Expression(
-        expr: Expr_Include(
-            expr: Scalar_String(
-                value: A.php
-            )
-            type: TYPE_INCLUDE (1)
-        )
-    )
-    1: Stmt_Expression(
-        expr: Expr_Include(
-            expr: Scalar_String(
-                value: A.php
-            )
-            type: TYPE_INCLUDE_ONCE (2)
-        )
-    )
-    2: Stmt_Expression(
-        expr: Expr_Include(
-            expr: Scalar_String(
-                value: A.php
-            )
-            type: TYPE_REQUIRE (3)
-        )
-    )
-    3: Stmt_Expression(
-        expr: Expr_Include(
-            expr: Scalar_String(
-                value: A.php
-            )
-            type: TYPE_REQUIRE_ONCE (4)
-        )
-    )
-    4: Stmt_Expression(
-        expr: Expr_Eval(
-            expr: Scalar_String(
-                value: A
-            )
-        )
-    )
-)
\ No newline at end of file
diff --git a/vendor/nikic/php-parser/test/code/parser/expr/issetAndEmpty.test b/vendor/nikic/php-parser/test/code/parser/expr/issetAndEmpty.test
deleted file mode 100644
index 989b3a5547..0000000000
--- a/vendor/nikic/php-parser/test/code/parser/expr/issetAndEmpty.test
+++ /dev/null
@@ -1,88 +0,0 @@
-isset() and empty()
------
-<?php
-isset($a);
-isset($a, $b, $c);
-
-empty($a);
-empty(foo());
-empty(array(1, 2, 3));
------
-array(
-    0: Stmt_Expression(
-        expr: Expr_Isset(
-            vars: array(
-                0: Expr_Variable(
-                    name: a
-                )
-            )
-        )
-    )
-    1: Stmt_Expression(
-        expr: Expr_Isset(
-            vars: array(
-                0: Expr_Variable(
-                    name: a
-                )
-                1: Expr_Variable(
-                    name: b
-                )
-                2: Expr_Variable(
-                    name: c
-                )
-            )
-        )
-    )
-    2: Stmt_Expression(
-        expr: Expr_Empty(
-            expr: Expr_Variable(
-                name: a
-            )
-        )
-    )
-    3: Stmt_Expression(
-        expr: Expr_Empty(
-            expr: Expr_FuncCall(
-                name: Name(
-                    parts: array(
-                        0: foo
-                    )
-                )
-                args: array(
-                )
-            )
-        )
-    )
-    4: Stmt_Expression(
-        expr: Expr_Empty(
-            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
-                    )
-                )
-            )
-        )
-    )
-)
\ No newline at end of file
diff --git a/vendor/nikic/php-parser/test/code/parser/expr/listReferences.test b/vendor/nikic/php-parser/test/code/parser/expr/listReferences.test
deleted file mode 100644
index 436d45ffa3..0000000000
--- a/vendor/nikic/php-parser/test/code/parser/expr/listReferences.test
+++ /dev/null
@@ -1,92 +0,0 @@
-List reference assignments (PHP 7.3)
------
-<?php
-
-list(&$v) = $x;
-list('k' => &$v) = $x;
-[&$v] = $x;
-['k' => &$v] = $x;
------
-!!php7
-array(
-    0: Stmt_Expression(
-        expr: Expr_Assign(
-            var: Expr_List(
-                items: array(
-                    0: Expr_ArrayItem(
-                        key: null
-                        value: Expr_Variable(
-                            name: v
-                        )
-                        byRef: true
-                        unpack: false
-                    )
-                )
-            )
-            expr: Expr_Variable(
-                name: x
-            )
-        )
-    )
-    1: Stmt_Expression(
-        expr: Expr_Assign(
-            var: Expr_List(
-                items: array(
-                    0: Expr_ArrayItem(
-                        key: Scalar_String(
-                            value: k
-                        )
-                        value: Expr_Variable(
-                            name: v
-                        )
-                        byRef: true
-                        unpack: false
-                    )
-                )
-            )
-            expr: Expr_Variable(
-                name: x
-            )
-        )
-    )
-    2: Stmt_Expression(
-        expr: Expr_Assign(
-            var: Expr_Array(
-                items: array(
-                    0: Expr_ArrayItem(
-                        key: null
-                        value: Expr_Variable(
-                            name: v
-                        )
-                        byRef: true
-                        unpack: false
-                    )
-                )
-            )
-            expr: Expr_Variable(
-                name: x
-            )
-        )
-    )
-    3: Stmt_Expression(
-        expr: Expr_Assign(
-            var: Expr_Array(
-                items: array(
-                    0: Expr_ArrayItem(
-                        key: Scalar_String(
-                            value: k
-                        )
-                        value: Expr_Variable(
-                            name: v
-                        )
-                        byRef: true
-                        unpack: false
-                    )
-                )
-            )
-            expr: Expr_Variable(
-                name: x
-            )
-        )
-    )
-)
\ No newline at end of file
diff --git a/vendor/nikic/php-parser/test/code/parser/expr/listWithKeys.test b/vendor/nikic/php-parser/test/code/parser/expr/listWithKeys.test
deleted file mode 100644
index e2eeedf0d9..0000000000
--- a/vendor/nikic/php-parser/test/code/parser/expr/listWithKeys.test
+++ /dev/null
@@ -1,84 +0,0 @@
-List destructing with keys
------
-<?php
-
-list('a' => $b) = ['a' => 'b'];
-list('a' => list($b => $c), 'd' => $e) = $x;
------
-!!php7
-array(
-    0: Stmt_Expression(
-        expr: Expr_Assign(
-            var: Expr_List(
-                items: array(
-                    0: Expr_ArrayItem(
-                        key: Scalar_String(
-                            value: a
-                        )
-                        value: Expr_Variable(
-                            name: b
-                        )
-                        byRef: false
-                        unpack: false
-                    )
-                )
-            )
-            expr: Expr_Array(
-                items: array(
-                    0: Expr_ArrayItem(
-                        key: Scalar_String(
-                            value: a
-                        )
-                        value: Scalar_String(
-                            value: b
-                        )
-                        byRef: false
-                        unpack: false
-                    )
-                )
-            )
-        )
-    )
-    1: Stmt_Expression(
-        expr: Expr_Assign(
-            var: Expr_List(
-                items: array(
-                    0: Expr_ArrayItem(
-                        key: Scalar_String(
-                            value: a
-                        )
-                        value: Expr_List(
-                            items: array(
-                                0: Expr_ArrayItem(
-                                    key: Expr_Variable(
-                                        name: b
-                                    )
-                                    value: Expr_Variable(
-                                        name: c
-                                    )
-                                    byRef: false
-                                    unpack: false
-                                )
-                            )
-                        )
-                        byRef: false
-                        unpack: false
-                    )
-                    1: Expr_ArrayItem(
-                        key: Scalar_String(
-                            value: d
-                        )
-                        value: Expr_Variable(
-                            name: e
-                        )
-                        byRef: false
-                        unpack: false
-                    )
-                )
-            )
-            expr: Expr_Variable(
-                name: x
-            )
-        )
-    )
-)
\ No newline at end of file
diff --git a/vendor/nikic/php-parser/test/code/parser/expr/logic.test b/vendor/nikic/php-parser/test/code/parser/expr/logic.test
deleted file mode 100644
index 6b434565f6..0000000000
--- a/vendor/nikic/php-parser/test/code/parser/expr/logic.test
+++ /dev/null
@@ -1,190 +0,0 @@
-Logical operators
------
-<?php
-
-// boolean ops
-$a && $b;
-$a || $b;
-!$a;
-!!$a;
-
-// logical ops
-$a and $b;
-$a or $b;
-$a xor $b;
-
-// precedence
-$a && $b || $c && $d;
-$a && ($b || $c) && $d;
-
-$a = $b || $c;
-$a = $b or $c;
------
-array(
-    0: Stmt_Expression(
-        expr: Expr_BinaryOp_BooleanAnd(
-            left: Expr_Variable(
-                name: a
-                comments: array(
-                    0: // boolean ops
-                )
-            )
-            right: Expr_Variable(
-                name: b
-            )
-            comments: array(
-                0: // boolean ops
-            )
-        )
-        comments: array(
-            0: // boolean ops
-        )
-    )
-    1: Stmt_Expression(
-        expr: Expr_BinaryOp_BooleanOr(
-            left: Expr_Variable(
-                name: a
-            )
-            right: Expr_Variable(
-                name: b
-            )
-        )
-    )
-    2: Stmt_Expression(
-        expr: Expr_BooleanNot(
-            expr: Expr_Variable(
-                name: a
-            )
-        )
-    )
-    3: Stmt_Expression(
-        expr: Expr_BooleanNot(
-            expr: Expr_BooleanNot(
-                expr: Expr_Variable(
-                    name: a
-                )
-            )
-        )
-    )
-    4: Stmt_Expression(
-        expr: Expr_BinaryOp_LogicalAnd(
-            left: Expr_Variable(
-                name: a
-                comments: array(
-                    0: // logical ops
-                )
-            )
-            right: Expr_Variable(
-                name: b
-            )
-            comments: array(
-                0: // logical ops
-            )
-        )
-        comments: array(
-            0: // logical ops
-        )
-    )
-    5: Stmt_Expression(
-        expr: Expr_BinaryOp_LogicalOr(
-            left: Expr_Variable(
-                name: a
-            )
-            right: Expr_Variable(
-                name: b
-            )
-        )
-    )
-    6: Stmt_Expression(
-        expr: Expr_BinaryOp_LogicalXor(
-            left: Expr_Variable(
-                name: a
-            )
-            right: Expr_Variable(
-                name: b
-            )
-        )
-    )
-    7: Stmt_Expression(
-        expr: Expr_BinaryOp_BooleanOr(
-            left: Expr_BinaryOp_BooleanAnd(
-                left: Expr_Variable(
-                    name: a
-                    comments: array(
-                        0: // precedence
-                    )
-                )
-                right: Expr_Variable(
-                    name: b
-                )
-                comments: array(
-                    0: // precedence
-                )
-            )
-            right: Expr_BinaryOp_BooleanAnd(
-                left: Expr_Variable(
-                    name: c
-                )
-                right: Expr_Variable(
-                    name: d
-                )
-            )
-            comments: array(
-                0: // precedence
-            )
-        )
-        comments: array(
-            0: // precedence
-        )
-    )
-    8: Stmt_Expression(
-        expr: Expr_BinaryOp_BooleanAnd(
-            left: Expr_BinaryOp_BooleanAnd(
-                left: Expr_Variable(
-                    name: a
-                )
-                right: Expr_BinaryOp_BooleanOr(
-                    left: Expr_Variable(
-                        name: b
-                    )
-                    right: Expr_Variable(
-                        name: c
-                    )
-                )
-            )
-            right: Expr_Variable(
-                name: d
-            )
-        )
-    )
-    9: Stmt_Expression(
-        expr: Expr_Assign(
-            var: Expr_Variable(
-                name: a
-            )
-            expr: Expr_BinaryOp_BooleanOr(
-                left: Expr_Variable(
-                    name: b
-                )
-                right: Expr_Variable(
-                    name: c
-                )
-            )
-        )
-    )
-    10: Stmt_Expression(
-        expr: Expr_BinaryOp_LogicalOr(
-            left: Expr_Assign(
-                var: Expr_Variable(
-                    name: a
-                )
-                expr: Expr_Variable(
-                    name: b
-                )
-            )
-            right: Expr_Variable(
-                name: c
-            )
-        )
-    )
-)
\ No newline at end of file
diff --git a/vendor/nikic/php-parser/test/code/parser/expr/math.test b/vendor/nikic/php-parser/test/code/parser/expr/math.test
deleted file mode 100644
index 8399400c06..0000000000
--- a/vendor/nikic/php-parser/test/code/parser/expr/math.test
+++ /dev/null
@@ -1,313 +0,0 @@
-Mathematical operators
------
-<?php
-
-// unary ops
-~$a;
-+$a;
--$a;
-
-// binary ops
-$a & $b;
-$a | $b;
-$a ^ $b;
-$a . $b;
-$a / $b;
-$a - $b;
-$a % $b;
-$a * $b;
-$a + $b;
-$a << $b;
-$a >> $b;
-$a ** $b;
-
-// associativity
-$a * $b * $c;
-$a * ($b * $c);
-
-// precedence
-$a + $b * $c;
-($a + $b) * $c;
-
-// pow is special
-$a ** $b ** $c;
-($a ** $b) ** $c;
------
-array(
-    0: Stmt_Expression(
-        expr: Expr_BitwiseNot(
-            expr: Expr_Variable(
-                name: a
-            )
-            comments: array(
-                0: // unary ops
-            )
-        )
-        comments: array(
-            0: // unary ops
-        )
-    )
-    1: Stmt_Expression(
-        expr: Expr_UnaryPlus(
-            expr: Expr_Variable(
-                name: a
-            )
-        )
-    )
-    2: Stmt_Expression(
-        expr: Expr_UnaryMinus(
-            expr: Expr_Variable(
-                name: a
-            )
-        )
-    )
-    3: Stmt_Expression(
-        expr: Expr_BinaryOp_BitwiseAnd(
-            left: Expr_Variable(
-                name: a
-                comments: array(
-                    0: // binary ops
-                )
-            )
-            right: Expr_Variable(
-                name: b
-            )
-            comments: array(
-                0: // binary ops
-            )
-        )
-        comments: array(
-            0: // binary ops
-        )
-    )
-    4: Stmt_Expression(
-        expr: Expr_BinaryOp_BitwiseOr(
-            left: Expr_Variable(
-                name: a
-            )
-            right: Expr_Variable(
-                name: b
-            )
-        )
-    )
-    5: Stmt_Expression(
-        expr: Expr_BinaryOp_BitwiseXor(
-            left: Expr_Variable(
-                name: a
-            )
-            right: Expr_Variable(
-                name: b
-            )
-        )
-    )
-    6: Stmt_Expression(
-        expr: Expr_BinaryOp_Concat(
-            left: Expr_Variable(
-                name: a
-            )
-            right: Expr_Variable(
-                name: b
-            )
-        )
-    )
-    7: Stmt_Expression(
-        expr: Expr_BinaryOp_Div(
-            left: Expr_Variable(
-                name: a
-            )
-            right: Expr_Variable(
-                name: b
-            )
-        )
-    )
-    8: Stmt_Expression(
-        expr: Expr_BinaryOp_Minus(
-            left: Expr_Variable(
-                name: a
-            )
-            right: Expr_Variable(
-                name: b
-            )
-        )
-    )
-    9: Stmt_Expression(
-        expr: Expr_BinaryOp_Mod(
-            left: Expr_Variable(
-                name: a
-            )
-            right: Expr_Variable(
-                name: b
-            )
-        )
-    )
-    10: Stmt_Expression(
-        expr: Expr_BinaryOp_Mul(
-            left: Expr_Variable(
-                name: a
-            )
-            right: Expr_Variable(
-                name: b
-            )
-        )
-    )
-    11: Stmt_Expression(
-        expr: Expr_BinaryOp_Plus(
-            left: Expr_Variable(
-                name: a
-            )
-            right: Expr_Variable(
-                name: b
-            )
-        )
-    )
-    12: Stmt_Expression(
-        expr: Expr_BinaryOp_ShiftLeft(
-            left: Expr_Variable(
-                name: a
-            )
-            right: Expr_Variable(
-                name: b
-            )
-        )
-    )
-    13: Stmt_Expression(
-        expr: Expr_BinaryOp_ShiftRight(
-            left: Expr_Variable(
-                name: a
-            )
-            right: Expr_Variable(
-                name: b
-            )
-        )
-    )
-    14: Stmt_Expression(
-        expr: Expr_BinaryOp_Pow(
-            left: Expr_Variable(
-                name: a
-            )
-            right: Expr_Variable(
-                name: b
-            )
-        )
-    )
-    15: Stmt_Expression(
-        expr: Expr_BinaryOp_Mul(
-            left: Expr_BinaryOp_Mul(
-                left: Expr_Variable(
-                    name: a
-                    comments: array(
-                        0: // associativity
-                    )
-                )
-                right: Expr_Variable(
-                    name: b
-                )
-                comments: array(
-                    0: // associativity
-                )
-            )
-            right: Expr_Variable(
-                name: c
-            )
-            comments: array(
-                0: // associativity
-            )
-        )
-        comments: array(
-            0: // associativity
-        )
-    )
-    16: Stmt_Expression(
-        expr: Expr_BinaryOp_Mul(
-            left: Expr_Variable(
-                name: a
-            )
-            right: Expr_BinaryOp_Mul(
-                left: Expr_Variable(
-                    name: b
-                )
-                right: Expr_Variable(
-                    name: c
-                )
-            )
-        )
-    )
-    17: Stmt_Expression(
-        expr: Expr_BinaryOp_Plus(
-            left: Expr_Variable(
-                name: a
-                comments: array(
-                    0: // precedence
-                )
-            )
-            right: Expr_BinaryOp_Mul(
-                left: Expr_Variable(
-                    name: b
-                )
-                right: Expr_Variable(
-                    name: c
-                )
-            )
-            comments: array(
-                0: // precedence
-            )
-        )
-        comments: array(
-            0: // precedence
-        )
-    )
-    18: Stmt_Expression(
-        expr: Expr_BinaryOp_Mul(
-            left: Expr_BinaryOp_Plus(
-                left: Expr_Variable(
-                    name: a
-                )
-                right: Expr_Variable(
-                    name: b
-                )
-            )
-            right: Expr_Variable(
-                name: c
-            )
-        )
-    )
-    19: Stmt_Expression(
-        expr: Expr_BinaryOp_Pow(
-            left: Expr_Variable(
-                name: a
-                comments: array(
-                    0: // pow is special
-                )
-            )
-            right: Expr_BinaryOp_Pow(
-                left: Expr_Variable(
-                    name: b
-                )
-                right: Expr_Variable(
-                    name: c
-                )
-            )
-            comments: array(
-                0: // pow is special
-            )
-        )
-        comments: array(
-            0: // pow is special
-        )
-    )
-    20: Stmt_Expression(
-        expr: Expr_BinaryOp_Pow(
-            left: Expr_BinaryOp_Pow(
-                left: Expr_Variable(
-                    name: a
-                )
-                right: Expr_Variable(
-                    name: b
-                )
-            )
-            right: Expr_Variable(
-                name: c
-            )
-        )
-    )
-)
\ No newline at end of file
diff --git a/vendor/nikic/php-parser/test/code/parser/expr/new.test b/vendor/nikic/php-parser/test/code/parser/expr/new.test
deleted file mode 100644
index 2735bfe932..0000000000
--- a/vendor/nikic/php-parser/test/code/parser/expr/new.test
+++ /dev/null
@@ -1,187 +0,0 @@
-New
------
-<?php
-
-new A;
-new A($b);
-
-// class name variations
-new $a();
-new $a['b']();
-new A::$b();
-// DNCR object access
-new $a->b();
-new $a->b->c();
-new $a->b['c']();
-new $a->b{'c'}();
-
-// test regression introduces by new dereferencing syntax
-(new A);
------
-array(
-    0: Stmt_Expression(
-        expr: Expr_New(
-            class: Name(
-                parts: array(
-                    0: A
-                )
-            )
-            args: array(
-            )
-        )
-    )
-    1: Stmt_Expression(
-        expr: Expr_New(
-            class: Name(
-                parts: array(
-                    0: A
-                )
-            )
-            args: array(
-                0: Arg(
-                    value: Expr_Variable(
-                        name: b
-                    )
-                    byRef: false
-                    unpack: false
-                )
-            )
-        )
-    )
-    2: Stmt_Expression(
-        expr: Expr_New(
-            class: Expr_Variable(
-                name: a
-            )
-            args: array(
-            )
-            comments: array(
-                0: // class name variations
-            )
-        )
-        comments: array(
-            0: // class name variations
-        )
-    )
-    3: Stmt_Expression(
-        expr: Expr_New(
-            class: Expr_ArrayDimFetch(
-                var: Expr_Variable(
-                    name: a
-                )
-                dim: Scalar_String(
-                    value: b
-                )
-            )
-            args: array(
-            )
-        )
-    )
-    4: Stmt_Expression(
-        expr: Expr_New(
-            class: Expr_StaticPropertyFetch(
-                class: Name(
-                    parts: array(
-                        0: A
-                    )
-                )
-                name: VarLikeIdentifier(
-                    name: b
-                )
-            )
-            args: array(
-            )
-        )
-    )
-    5: Stmt_Expression(
-        expr: Expr_New(
-            class: Expr_PropertyFetch(
-                var: Expr_Variable(
-                    name: a
-                )
-                name: Identifier(
-                    name: b
-                )
-            )
-            args: array(
-            )
-            comments: array(
-                0: // DNCR object access
-            )
-        )
-        comments: array(
-            0: // DNCR object access
-        )
-    )
-    6: Stmt_Expression(
-        expr: Expr_New(
-            class: Expr_PropertyFetch(
-                var: Expr_PropertyFetch(
-                    var: Expr_Variable(
-                        name: a
-                    )
-                    name: Identifier(
-                        name: b
-                    )
-                )
-                name: Identifier(
-                    name: c
-                )
-            )
-            args: array(
-            )
-        )
-    )
-    7: Stmt_Expression(
-        expr: Expr_New(
-            class: Expr_ArrayDimFetch(
-                var: Expr_PropertyFetch(
-                    var: Expr_Variable(
-                        name: a
-                    )
-                    name: Identifier(
-                        name: b
-                    )
-                )
-                dim: Scalar_String(
-                    value: c
-                )
-            )
-            args: array(
-            )
-        )
-    )
-    8: Stmt_Expression(
-        expr: Expr_New(
-            class: Expr_ArrayDimFetch(
-                var: Expr_PropertyFetch(
-                    var: Expr_Variable(
-                        name: a
-                    )
-                    name: Identifier(
-                        name: b
-                    )
-                )
-                dim: Scalar_String(
-                    value: c
-                )
-            )
-            args: array(
-            )
-        )
-    )
-    9: Stmt_Expression(
-        expr: Expr_New(
-            class: Name(
-                parts: array(
-                    0: A
-                )
-            )
-            args: array(
-            )
-        )
-        comments: array(
-            0: // test regression introduces by new dereferencing syntax
-        )
-    )
-)
\ No newline at end of file
diff --git a/vendor/nikic/php-parser/test/code/parser/expr/newWithoutClass.test b/vendor/nikic/php-parser/test/code/parser/expr/newWithoutClass.test
deleted file mode 100644
index 318f9301f9..0000000000
--- a/vendor/nikic/php-parser/test/code/parser/expr/newWithoutClass.test
+++ /dev/null
@@ -1,25 +0,0 @@
-New without a class
------
-<?php
-new;
------
-!!php5
-Syntax error, unexpected ';' from 2:4 to 2:4
-array(
-)
------
-<?php
-new;
------
-!!php7
-Syntax error, unexpected ';' from 2:4 to 2:4
-array(
-    0: Stmt_Expression(
-        expr: Expr_New(
-            class: Expr_Error(
-            )
-            args: array(
-            )
-        )
-    )
-)
\ No newline at end of file
diff --git a/vendor/nikic/php-parser/test/code/parser/expr/print.test b/vendor/nikic/php-parser/test/code/parser/expr/print.test
deleted file mode 100644
index 84ed7775b1..0000000000
--- a/vendor/nikic/php-parser/test/code/parser/expr/print.test
+++ /dev/null
@@ -1,14 +0,0 @@
-Print
------
-<?php
-print $a;
------
-array(
-    0: Stmt_Expression(
-        expr: Expr_Print(
-            expr: Expr_Variable(
-                name: a
-            )
-        )
-    )
-)
\ No newline at end of file
diff --git a/vendor/nikic/php-parser/test/code/parser/expr/shellExec.test b/vendor/nikic/php-parser/test/code/parser/expr/shellExec.test
deleted file mode 100644
index 115d9f0a36..0000000000
--- a/vendor/nikic/php-parser/test/code/parser/expr/shellExec.test
+++ /dev/null
@@ -1,56 +0,0 @@
-Shell execution
------
-<?php
-``;
-`test`;
-`test $A`;
-`test \``;
-`test \"`;
------
-array(
-    0: Stmt_Expression(
-        expr: Expr_ShellExec(
-            parts: array(
-            )
-        )
-    )
-    1: Stmt_Expression(
-        expr: Expr_ShellExec(
-            parts: array(
-                0: Scalar_EncapsedStringPart(
-                    value: test
-                )
-            )
-        )
-    )
-    2: Stmt_Expression(
-        expr: Expr_ShellExec(
-            parts: array(
-                0: Scalar_EncapsedStringPart(
-                    value: test
-                )
-                1: Expr_Variable(
-                    name: A
-                )
-            )
-        )
-    )
-    3: Stmt_Expression(
-        expr: Expr_ShellExec(
-            parts: array(
-                0: Scalar_EncapsedStringPart(
-                    value: test `
-                )
-            )
-        )
-    )
-    4: Stmt_Expression(
-        expr: Expr_ShellExec(
-            parts: array(
-                0: Scalar_EncapsedStringPart(
-                    value: test \"
-                )
-            )
-        )
-    )
-)
\ No newline at end of file
diff --git a/vendor/nikic/php-parser/test/code/parser/expr/ternaryAndCoalesce.test b/vendor/nikic/php-parser/test/code/parser/expr/ternaryAndCoalesce.test
deleted file mode 100644
index ea1010caa1..0000000000
--- a/vendor/nikic/php-parser/test/code/parser/expr/ternaryAndCoalesce.test
+++ /dev/null
@@ -1,174 +0,0 @@
-Ternary operator
------
-<?php
-
-// ternary
-$a ? $b : $c;
-$a ?: $c;
-
-// precedence
-$a ? $b : $c ? $d : $e;
-$a ? $b : ($c ? $d : $e);
-
-// null coalesce
-$a ?? $b;
-$a ?? $b ?? $c;
-$a ?? $b ? $c : $d;
-$a && $b ?? $c;
------
-array(
-    0: Stmt_Expression(
-        expr: Expr_Ternary(
-            cond: Expr_Variable(
-                name: a
-                comments: array(
-                    0: // ternary
-                )
-            )
-            if: Expr_Variable(
-                name: b
-            )
-            else: Expr_Variable(
-                name: c
-            )
-            comments: array(
-                0: // ternary
-            )
-        )
-        comments: array(
-            0: // ternary
-        )
-    )
-    1: Stmt_Expression(
-        expr: Expr_Ternary(
-            cond: Expr_Variable(
-                name: a
-            )
-            if: null
-            else: Expr_Variable(
-                name: c
-            )
-        )
-    )
-    2: Stmt_Expression(
-        expr: Expr_Ternary(
-            cond: Expr_Ternary(
-                cond: Expr_Variable(
-                    name: a
-                    comments: array(
-                        0: // precedence
-                    )
-                )
-                if: Expr_Variable(
-                    name: b
-                )
-                else: Expr_Variable(
-                    name: c
-                )
-                comments: array(
-                    0: // precedence
-                )
-            )
-            if: Expr_Variable(
-                name: d
-            )
-            else: Expr_Variable(
-                name: e
-            )
-            comments: array(
-                0: // precedence
-            )
-        )
-        comments: array(
-            0: // precedence
-        )
-    )
-    3: Stmt_Expression(
-        expr: Expr_Ternary(
-            cond: Expr_Variable(
-                name: a
-            )
-            if: Expr_Variable(
-                name: b
-            )
-            else: Expr_Ternary(
-                cond: Expr_Variable(
-                    name: c
-                )
-                if: Expr_Variable(
-                    name: d
-                )
-                else: Expr_Variable(
-                    name: e
-                )
-            )
-        )
-    )
-    4: Stmt_Expression(
-        expr: Expr_BinaryOp_Coalesce(
-            left: Expr_Variable(
-                name: a
-                comments: array(
-                    0: // null coalesce
-                )
-            )
-            right: Expr_Variable(
-                name: b
-            )
-            comments: array(
-                0: // null coalesce
-            )
-        )
-        comments: array(
-            0: // null coalesce
-        )
-    )
-    5: Stmt_Expression(
-        expr: Expr_BinaryOp_Coalesce(
-            left: Expr_Variable(
-                name: a
-            )
-            right: Expr_BinaryOp_Coalesce(
-                left: Expr_Variable(
-                    name: b
-                )
-                right: Expr_Variable(
-                    name: c
-                )
-            )
-        )
-    )
-    6: Stmt_Expression(
-        expr: Expr_Ternary(
-            cond: Expr_BinaryOp_Coalesce(
-                left: Expr_Variable(
-                    name: a
-                )
-                right: Expr_Variable(
-                    name: b
-                )
-            )
-            if: Expr_Variable(
-                name: c
-            )
-            else: Expr_Variable(
-                name: d
-            )
-        )
-    )
-    7: Stmt_Expression(
-        expr: Expr_BinaryOp_Coalesce(
-            left: Expr_BinaryOp_BooleanAnd(
-                left: Expr_Variable(
-                    name: a
-                )
-                right: Expr_Variable(
-                    name: b
-                )
-            )
-            right: Expr_Variable(
-                name: c
-            )
-        )
-    )
-)
\ No newline at end of file
diff --git a/vendor/nikic/php-parser/test/code/parser/expr/trailingCommas.test b/vendor/nikic/php-parser/test/code/parser/expr/trailingCommas.test
deleted file mode 100644
index 11092d9816..0000000000
--- a/vendor/nikic/php-parser/test/code/parser/expr/trailingCommas.test
+++ /dev/null
@@ -1,140 +0,0 @@
-PHP 7.3 trailing comma additions
------
-<?php
-
-foo($a, $b, );
-$foo->bar($a, $b, );
-Foo::bar($a, $b, );
-new Foo($a, $b, );
-unset($a, $b, );
-isset($a, $b, );
------
-!!php7
-array(
-    0: Stmt_Expression(
-        expr: Expr_FuncCall(
-            name: Name(
-                parts: array(
-                    0: foo
-                )
-            )
-            args: array(
-                0: Arg(
-                    value: Expr_Variable(
-                        name: a
-                    )
-                    byRef: false
-                    unpack: false
-                )
-                1: Arg(
-                    value: Expr_Variable(
-                        name: b
-                    )
-                    byRef: false
-                    unpack: false
-                )
-            )
-        )
-    )
-    1: Stmt_Expression(
-        expr: Expr_MethodCall(
-            var: Expr_Variable(
-                name: foo
-            )
-            name: Identifier(
-                name: bar
-            )
-            args: array(
-                0: Arg(
-                    value: Expr_Variable(
-                        name: a
-                    )
-                    byRef: false
-                    unpack: false
-                )
-                1: Arg(
-                    value: Expr_Variable(
-                        name: b
-                    )
-                    byRef: false
-                    unpack: false
-                )
-            )
-        )
-    )
-    2: Stmt_Expression(
-        expr: Expr_StaticCall(
-            class: Name(
-                parts: array(
-                    0: Foo
-                )
-            )
-            name: Identifier(
-                name: bar
-            )
-            args: array(
-                0: Arg(
-                    value: Expr_Variable(
-                        name: a
-                    )
-                    byRef: false
-                    unpack: false
-                )
-                1: Arg(
-                    value: Expr_Variable(
-                        name: b
-                    )
-                    byRef: false
-                    unpack: false
-                )
-            )
-        )
-    )
-    3: Stmt_Expression(
-        expr: Expr_New(
-            class: Name(
-                parts: array(
-                    0: Foo
-                )
-            )
-            args: array(
-                0: Arg(
-                    value: Expr_Variable(
-                        name: a
-                    )
-                    byRef: false
-                    unpack: false
-                )
-                1: Arg(
-                    value: Expr_Variable(
-                        name: b
-                    )
-                    byRef: false
-                    unpack: false
-                )
-            )
-        )
-    )
-    4: Stmt_Unset(
-        vars: array(
-            0: Expr_Variable(
-                name: a
-            )
-            1: Expr_Variable(
-                name: b
-            )
-        )
-    )
-    5: Stmt_Expression(
-        expr: Expr_Isset(
-            vars: array(
-                0: Expr_Variable(
-                    name: a
-                )
-                1: Expr_Variable(
-                    name: b
-                )
-            )
-        )
-    )
-)
\ No newline at end of file
diff --git a/vendor/nikic/php-parser/test/code/parser/expr/uvs/globalNonSimpleVarError.test b/vendor/nikic/php-parser/test/code/parser/expr/uvs/globalNonSimpleVarError.test
deleted file mode 100644
index 5ae4f958e2..0000000000
--- a/vendor/nikic/php-parser/test/code/parser/expr/uvs/globalNonSimpleVarError.test
+++ /dev/null
@@ -1,27 +0,0 @@
-Non-simple variables are forbidden in PHP 7
------
-<?php
-global $$foo->bar;
------
-!!php7
-Syntax error, unexpected T_OBJECT_OPERATOR, expecting ';' from 2:13 to 2:14
-array(
-    0: Stmt_Global(
-        vars: array(
-            0: Expr_Variable(
-                name: Expr_Variable(
-                    name: foo
-                )
-            )
-        )
-    )
-    1: Stmt_Expression(
-        expr: Expr_ConstFetch(
-            name: Name(
-                parts: array(
-                    0: bar
-                )
-            )
-        )
-    )
-)
\ No newline at end of file
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
deleted file mode 100644
index 39db60c035..0000000000
--- a/vendor/nikic/php-parser/test/code/parser/expr/uvs/indirectCall.test
+++ /dev/null
@@ -1,511 +0,0 @@
-UVS indirect calls
------
-<?php
-
-id('var_dump')(1);
-id('id')('var_dump')(2);
-id()()('var_dump')(4);
-id(['udef', 'id'])[1]()('var_dump')(5);
-(function($x) { return $x; })('id')('var_dump')(8);
-($f = function($x = null) use (&$f) {
-    return $x ?: $f;
-})()()()('var_dump')(9);
-[$obj, 'id']()('id')($id)('var_dump')(10);
-'id'()('id')('var_dump')(12);
-('i' . 'd')()('var_dump')(13);
-'\id'('var_dump')(14);
------
-!!php7
-array(
-    0: Stmt_Expression(
-        expr: Expr_FuncCall(
-            name: Expr_FuncCall(
-                name: Name(
-                    parts: array(
-                        0: id
-                    )
-                )
-                args: array(
-                    0: Arg(
-                        value: Scalar_String(
-                            value: var_dump
-                        )
-                        byRef: false
-                        unpack: false
-                    )
-                )
-            )
-            args: array(
-                0: Arg(
-                    value: Scalar_LNumber(
-                        value: 1
-                    )
-                    byRef: false
-                    unpack: false
-                )
-            )
-        )
-    )
-    1: Stmt_Expression(
-        expr: Expr_FuncCall(
-            name: Expr_FuncCall(
-                name: Expr_FuncCall(
-                    name: Name(
-                        parts: array(
-                            0: id
-                        )
-                    )
-                    args: array(
-                        0: Arg(
-                            value: Scalar_String(
-                                value: id
-                            )
-                            byRef: false
-                            unpack: false
-                        )
-                    )
-                )
-                args: array(
-                    0: Arg(
-                        value: Scalar_String(
-                            value: var_dump
-                        )
-                        byRef: false
-                        unpack: false
-                    )
-                )
-            )
-            args: array(
-                0: Arg(
-                    value: Scalar_LNumber(
-                        value: 2
-                    )
-                    byRef: false
-                    unpack: false
-                )
-            )
-        )
-    )
-    2: Stmt_Expression(
-        expr: Expr_FuncCall(
-            name: Expr_FuncCall(
-                name: Expr_FuncCall(
-                    name: Expr_FuncCall(
-                        name: Name(
-                            parts: array(
-                                0: id
-                            )
-                        )
-                        args: array(
-                        )
-                    )
-                    args: array(
-                    )
-                )
-                args: array(
-                    0: Arg(
-                        value: Scalar_String(
-                            value: var_dump
-                        )
-                        byRef: false
-                        unpack: false
-                    )
-                )
-            )
-            args: array(
-                0: Arg(
-                    value: Scalar_LNumber(
-                        value: 4
-                    )
-                    byRef: false
-                    unpack: false
-                )
-            )
-        )
-    )
-    3: Stmt_Expression(
-        expr: Expr_FuncCall(
-            name: Expr_FuncCall(
-                name: Expr_FuncCall(
-                    name: Expr_ArrayDimFetch(
-                        var: Expr_FuncCall(
-                            name: Name(
-                                parts: array(
-                                    0: id
-                                )
-                            )
-                            args: array(
-                                0: Arg(
-                                    value: Expr_Array(
-                                        items: array(
-                                            0: Expr_ArrayItem(
-                                                key: null
-                                                value: Scalar_String(
-                                                    value: udef
-                                                )
-                                                byRef: false
-                                                unpack: false
-                                            )
-                                            1: Expr_ArrayItem(
-                                                key: null
-                                                value: Scalar_String(
-                                                    value: id
-                                                )
-                                                byRef: false
-                                                unpack: false
-                                            )
-                                        )
-                                    )
-                                    byRef: false
-                                    unpack: false
-                                )
-                            )
-                        )
-                        dim: Scalar_LNumber(
-                            value: 1
-                        )
-                    )
-                    args: array(
-                    )
-                )
-                args: array(
-                    0: Arg(
-                        value: Scalar_String(
-                            value: var_dump
-                        )
-                        byRef: false
-                        unpack: false
-                    )
-                )
-            )
-            args: array(
-                0: Arg(
-                    value: Scalar_LNumber(
-                        value: 5
-                    )
-                    byRef: false
-                    unpack: false
-                )
-            )
-        )
-    )
-    4: Stmt_Expression(
-        expr: Expr_FuncCall(
-            name: Expr_FuncCall(
-                name: Expr_FuncCall(
-                    name: Expr_Closure(
-                        static: false
-                        byRef: false
-                        params: array(
-                            0: Param(
-                                type: null
-                                byRef: false
-                                variadic: false
-                                var: Expr_Variable(
-                                    name: x
-                                )
-                                default: null
-                            )
-                        )
-                        uses: array(
-                        )
-                        returnType: null
-                        stmts: array(
-                            0: Stmt_Return(
-                                expr: Expr_Variable(
-                                    name: x
-                                )
-                            )
-                        )
-                    )
-                    args: array(
-                        0: Arg(
-                            value: Scalar_String(
-                                value: id
-                            )
-                            byRef: false
-                            unpack: false
-                        )
-                    )
-                )
-                args: array(
-                    0: Arg(
-                        value: Scalar_String(
-                            value: var_dump
-                        )
-                        byRef: false
-                        unpack: false
-                    )
-                )
-            )
-            args: array(
-                0: Arg(
-                    value: Scalar_LNumber(
-                        value: 8
-                    )
-                    byRef: false
-                    unpack: false
-                )
-            )
-        )
-    )
-    5: Stmt_Expression(
-        expr: Expr_FuncCall(
-            name: Expr_FuncCall(
-                name: Expr_FuncCall(
-                    name: Expr_FuncCall(
-                        name: Expr_FuncCall(
-                            name: Expr_Assign(
-                                var: Expr_Variable(
-                                    name: f
-                                )
-                                expr: Expr_Closure(
-                                    static: false
-                                    byRef: false
-                                    params: array(
-                                        0: Param(
-                                            type: null
-                                            byRef: false
-                                            variadic: false
-                                            var: Expr_Variable(
-                                                name: x
-                                            )
-                                            default: Expr_ConstFetch(
-                                                name: Name(
-                                                    parts: array(
-                                                        0: null
-                                                    )
-                                                )
-                                            )
-                                        )
-                                    )
-                                    uses: array(
-                                        0: Expr_ClosureUse(
-                                            var: Expr_Variable(
-                                                name: f
-                                            )
-                                            byRef: true
-                                        )
-                                    )
-                                    returnType: null
-                                    stmts: array(
-                                        0: Stmt_Return(
-                                            expr: Expr_Ternary(
-                                                cond: Expr_Variable(
-                                                    name: x
-                                                )
-                                                if: null
-                                                else: Expr_Variable(
-                                                    name: f
-                                                )
-                                            )
-                                        )
-                                    )
-                                )
-                            )
-                            args: array(
-                            )
-                        )
-                        args: array(
-                        )
-                    )
-                    args: array(
-                    )
-                )
-                args: array(
-                    0: Arg(
-                        value: Scalar_String(
-                            value: var_dump
-                        )
-                        byRef: false
-                        unpack: false
-                    )
-                )
-            )
-            args: array(
-                0: Arg(
-                    value: Scalar_LNumber(
-                        value: 9
-                    )
-                    byRef: false
-                    unpack: false
-                )
-            )
-        )
-    )
-    6: Stmt_Expression(
-        expr: Expr_FuncCall(
-            name: Expr_FuncCall(
-                name: Expr_FuncCall(
-                    name: Expr_FuncCall(
-                        name: Expr_FuncCall(
-                            name: Expr_Array(
-                                items: array(
-                                    0: Expr_ArrayItem(
-                                        key: null
-                                        value: Expr_Variable(
-                                            name: obj
-                                        )
-                                        byRef: false
-                                        unpack: false
-                                    )
-                                    1: Expr_ArrayItem(
-                                        key: null
-                                        value: Scalar_String(
-                                            value: id
-                                        )
-                                        byRef: false
-                                        unpack: false
-                                    )
-                                )
-                            )
-                            args: array(
-                            )
-                        )
-                        args: array(
-                            0: Arg(
-                                value: Scalar_String(
-                                    value: id
-                                )
-                                byRef: false
-                                unpack: false
-                            )
-                        )
-                    )
-                    args: array(
-                        0: Arg(
-                            value: Expr_Variable(
-                                name: id
-                            )
-                            byRef: false
-                            unpack: false
-                        )
-                    )
-                )
-                args: array(
-                    0: Arg(
-                        value: Scalar_String(
-                            value: var_dump
-                        )
-                        byRef: false
-                        unpack: false
-                    )
-                )
-            )
-            args: array(
-                0: Arg(
-                    value: Scalar_LNumber(
-                        value: 10
-                    )
-                    byRef: false
-                    unpack: false
-                )
-            )
-        )
-    )
-    7: Stmt_Expression(
-        expr: Expr_FuncCall(
-            name: Expr_FuncCall(
-                name: Expr_FuncCall(
-                    name: Expr_FuncCall(
-                        name: Scalar_String(
-                            value: id
-                        )
-                        args: array(
-                        )
-                    )
-                    args: array(
-                        0: Arg(
-                            value: Scalar_String(
-                                value: id
-                            )
-                            byRef: false
-                            unpack: false
-                        )
-                    )
-                )
-                args: array(
-                    0: Arg(
-                        value: Scalar_String(
-                            value: var_dump
-                        )
-                        byRef: false
-                        unpack: false
-                    )
-                )
-            )
-            args: array(
-                0: Arg(
-                    value: Scalar_LNumber(
-                        value: 12
-                    )
-                    byRef: false
-                    unpack: false
-                )
-            )
-        )
-    )
-    8: Stmt_Expression(
-        expr: Expr_FuncCall(
-            name: Expr_FuncCall(
-                name: Expr_FuncCall(
-                    name: Expr_BinaryOp_Concat(
-                        left: Scalar_String(
-                            value: i
-                        )
-                        right: Scalar_String(
-                            value: d
-                        )
-                    )
-                    args: array(
-                    )
-                )
-                args: array(
-                    0: Arg(
-                        value: Scalar_String(
-                            value: var_dump
-                        )
-                        byRef: false
-                        unpack: false
-                    )
-                )
-            )
-            args: array(
-                0: Arg(
-                    value: Scalar_LNumber(
-                        value: 13
-                    )
-                    byRef: false
-                    unpack: false
-                )
-            )
-        )
-    )
-    9: Stmt_Expression(
-        expr: Expr_FuncCall(
-            name: Expr_FuncCall(
-                name: Scalar_String(
-                    value: \id
-                )
-                args: array(
-                    0: Arg(
-                        value: Scalar_String(
-                            value: var_dump
-                        )
-                        byRef: false
-                        unpack: false
-                    )
-                )
-            )
-            args: array(
-                0: Arg(
-                    value: Scalar_LNumber(
-                        value: 14
-                    )
-                    byRef: false
-                    unpack: false
-                )
-            )
-        )
-    )
-)
\ No newline at end of file
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
deleted file mode 100644
index 828fd9b1f5..0000000000
--- a/vendor/nikic/php-parser/test/code/parser/expr/uvs/isset.test
+++ /dev/null
@@ -1,87 +0,0 @@
-UVS isset() on temporaries
------
-<?php
-
-isset(([0, 1] + [])[0]);
-isset(['a' => 'b']->a);
-isset("str"->a);
------
-!!php7
-array(
-    0: Stmt_Expression(
-        expr: Expr_Isset(
-            vars: array(
-                0: Expr_ArrayDimFetch(
-                    var: Expr_BinaryOp_Plus(
-                        left: Expr_Array(
-                            items: array(
-                                0: Expr_ArrayItem(
-                                    key: null
-                                    value: Scalar_LNumber(
-                                        value: 0
-                                    )
-                                    byRef: false
-                                    unpack: false
-                                )
-                                1: Expr_ArrayItem(
-                                    key: null
-                                    value: Scalar_LNumber(
-                                        value: 1
-                                    )
-                                    byRef: false
-                                    unpack: false
-                                )
-                            )
-                        )
-                        right: Expr_Array(
-                            items: array(
-                            )
-                        )
-                    )
-                    dim: Scalar_LNumber(
-                        value: 0
-                    )
-                )
-            )
-        )
-    )
-    1: Stmt_Expression(
-        expr: Expr_Isset(
-            vars: array(
-                0: Expr_PropertyFetch(
-                    var: Expr_Array(
-                        items: array(
-                            0: Expr_ArrayItem(
-                                key: Scalar_String(
-                                    value: a
-                                )
-                                value: Scalar_String(
-                                    value: b
-                                )
-                                byRef: false
-                                unpack: false
-                            )
-                        )
-                    )
-                    name: Identifier(
-                        name: a
-                    )
-                )
-            )
-        )
-    )
-    2: Stmt_Expression(
-        expr: Expr_Isset(
-            vars: array(
-                0: Expr_PropertyFetch(
-                    var: Scalar_String(
-                        value: str
-                    )
-                    name: Identifier(
-                        name: a
-                    )
-                )
-            )
-        )
-    )
-)
\ No newline at end of file
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
deleted file mode 100644
index 801eb37c06..0000000000
--- a/vendor/nikic/php-parser/test/code/parser/expr/uvs/misc.test
+++ /dev/null
@@ -1,129 +0,0 @@
-Uniform variable syntax in PHP 7 (misc)
------
-<?php
-
-A::A[0];
-A::A[0][1][2];
-"string"->length();
-(clone $obj)->b[0](1);
-[0, 1][0] = 1;
------
-!!php7
-array(
-    0: Stmt_Expression(
-        expr: Expr_ArrayDimFetch(
-            var: Expr_ClassConstFetch(
-                class: Name(
-                    parts: array(
-                        0: A
-                    )
-                )
-                name: Identifier(
-                    name: A
-                )
-            )
-            dim: Scalar_LNumber(
-                value: 0
-            )
-        )
-    )
-    1: Stmt_Expression(
-        expr: Expr_ArrayDimFetch(
-            var: Expr_ArrayDimFetch(
-                var: Expr_ArrayDimFetch(
-                    var: Expr_ClassConstFetch(
-                        class: Name(
-                            parts: array(
-                                0: A
-                            )
-                        )
-                        name: Identifier(
-                            name: A
-                        )
-                    )
-                    dim: Scalar_LNumber(
-                        value: 0
-                    )
-                )
-                dim: Scalar_LNumber(
-                    value: 1
-                )
-            )
-            dim: Scalar_LNumber(
-                value: 2
-            )
-        )
-    )
-    2: Stmt_Expression(
-        expr: Expr_MethodCall(
-            var: Scalar_String(
-                value: string
-            )
-            name: Identifier(
-                name: length
-            )
-            args: array(
-            )
-        )
-    )
-    3: Stmt_Expression(
-        expr: Expr_FuncCall(
-            name: Expr_ArrayDimFetch(
-                var: Expr_PropertyFetch(
-                    var: Expr_Clone(
-                        expr: Expr_Variable(
-                            name: obj
-                        )
-                    )
-                    name: Identifier(
-                        name: b
-                    )
-                )
-                dim: Scalar_LNumber(
-                    value: 0
-                )
-            )
-            args: array(
-                0: Arg(
-                    value: Scalar_LNumber(
-                        value: 1
-                    )
-                    byRef: false
-                    unpack: false
-                )
-            )
-        )
-    )
-    4: Stmt_Expression(
-        expr: Expr_Assign(
-            var: Expr_ArrayDimFetch(
-                var: Expr_Array(
-                    items: array(
-                        0: Expr_ArrayItem(
-                            key: null
-                            value: Scalar_LNumber(
-                                value: 0
-                            )
-                            byRef: false
-                            unpack: false
-                        )
-                        1: Expr_ArrayItem(
-                            key: null
-                            value: Scalar_LNumber(
-                                value: 1
-                            )
-                            byRef: false
-                            unpack: false
-                        )
-                    )
-                )
-                dim: Scalar_LNumber(
-                    value: 0
-                )
-            )
-            expr: Scalar_LNumber(
-                value: 1
-            )
-        )
-    )
-)
\ No newline at end of file
diff --git a/vendor/nikic/php-parser/test/code/parser/expr/uvs/new.test b/vendor/nikic/php-parser/test/code/parser/expr/uvs/new.test
deleted file mode 100644
index 5e1caf2fc2..0000000000
--- a/vendor/nikic/php-parser/test/code/parser/expr/uvs/new.test
+++ /dev/null
@@ -1,119 +0,0 @@
-UVS new expressions
------
-<?php
-new $className;
-new $array['className'];
-new $array{'className'};
-new $obj->className;
-new Test::$className;
-new $test::$className;
-new $weird[0]->foo::$className;
------
-!!php7
-array(
-    0: Stmt_Expression(
-        expr: Expr_New(
-            class: Expr_Variable(
-                name: className
-            )
-            args: array(
-            )
-        )
-    )
-    1: Stmt_Expression(
-        expr: Expr_New(
-            class: Expr_ArrayDimFetch(
-                var: Expr_Variable(
-                    name: array
-                )
-                dim: Scalar_String(
-                    value: className
-                )
-            )
-            args: array(
-            )
-        )
-    )
-    2: Stmt_Expression(
-        expr: Expr_New(
-            class: Expr_ArrayDimFetch(
-                var: Expr_Variable(
-                    name: array
-                )
-                dim: Scalar_String(
-                    value: className
-                )
-            )
-            args: array(
-            )
-        )
-    )
-    3: Stmt_Expression(
-        expr: Expr_New(
-            class: Expr_PropertyFetch(
-                var: Expr_Variable(
-                    name: obj
-                )
-                name: Identifier(
-                    name: className
-                )
-            )
-            args: array(
-            )
-        )
-    )
-    4: Stmt_Expression(
-        expr: Expr_New(
-            class: Expr_StaticPropertyFetch(
-                class: Name(
-                    parts: array(
-                        0: Test
-                    )
-                )
-                name: VarLikeIdentifier(
-                    name: className
-                )
-            )
-            args: array(
-            )
-        )
-    )
-    5: Stmt_Expression(
-        expr: Expr_New(
-            class: Expr_StaticPropertyFetch(
-                class: Expr_Variable(
-                    name: test
-                )
-                name: VarLikeIdentifier(
-                    name: className
-                )
-            )
-            args: array(
-            )
-        )
-    )
-    6: Stmt_Expression(
-        expr: Expr_New(
-            class: Expr_StaticPropertyFetch(
-                class: Expr_PropertyFetch(
-                    var: Expr_ArrayDimFetch(
-                        var: Expr_Variable(
-                            name: weird
-                        )
-                        dim: Scalar_LNumber(
-                            value: 0
-                        )
-                    )
-                    name: Identifier(
-                        name: foo
-                    )
-                )
-                name: VarLikeIdentifier(
-                    name: className
-                )
-            )
-            args: array(
-            )
-        )
-    )
-)
\ No newline at end of file
diff --git a/vendor/nikic/php-parser/test/code/parser/expr/uvs/staticProperty.test b/vendor/nikic/php-parser/test/code/parser/expr/uvs/staticProperty.test
deleted file mode 100644
index bf3547ca76..0000000000
--- a/vendor/nikic/php-parser/test/code/parser/expr/uvs/staticProperty.test
+++ /dev/null
@@ -1,123 +0,0 @@
-UVS static access
------
-<?php
-A::$b;
-$A::$b;
-'A'::$b;
-('A' . '')::$b;
-'A'[0]::$b;
-A::$$b;
-A::$$c[1];
-A::$A::$b;
------
-!!php7
-array(
-    0: Stmt_Expression(
-        expr: Expr_StaticPropertyFetch(
-            class: Name(
-                parts: array(
-                    0: A
-                )
-            )
-            name: VarLikeIdentifier(
-                name: b
-            )
-        )
-    )
-    1: Stmt_Expression(
-        expr: Expr_StaticPropertyFetch(
-            class: Expr_Variable(
-                name: A
-            )
-            name: VarLikeIdentifier(
-                name: b
-            )
-        )
-    )
-    2: Stmt_Expression(
-        expr: Expr_StaticPropertyFetch(
-            class: Scalar_String(
-                value: A
-            )
-            name: VarLikeIdentifier(
-                name: b
-            )
-        )
-    )
-    3: Stmt_Expression(
-        expr: Expr_StaticPropertyFetch(
-            class: Expr_BinaryOp_Concat(
-                left: Scalar_String(
-                    value: A
-                )
-                right: Scalar_String(
-                    value:
-                )
-            )
-            name: VarLikeIdentifier(
-                name: b
-            )
-        )
-    )
-    4: Stmt_Expression(
-        expr: Expr_StaticPropertyFetch(
-            class: Expr_ArrayDimFetch(
-                var: Scalar_String(
-                    value: A
-                )
-                dim: Scalar_LNumber(
-                    value: 0
-                )
-            )
-            name: VarLikeIdentifier(
-                name: b
-            )
-        )
-    )
-    5: Stmt_Expression(
-        expr: Expr_StaticPropertyFetch(
-            class: Name(
-                parts: array(
-                    0: A
-                )
-            )
-            name: Expr_Variable(
-                name: b
-            )
-        )
-    )
-    6: Stmt_Expression(
-        expr: Expr_ArrayDimFetch(
-            var: Expr_StaticPropertyFetch(
-                class: Name(
-                    parts: array(
-                        0: A
-                    )
-                )
-                name: Expr_Variable(
-                    name: c
-                )
-            )
-            dim: Scalar_LNumber(
-                value: 1
-            )
-        )
-    )
-    7: Stmt_Expression(
-        expr: Expr_StaticPropertyFetch(
-            class: Expr_StaticPropertyFetch(
-                class: Name(
-                    parts: array(
-                        0: A
-                    )
-                )
-                name: VarLikeIdentifier(
-                    name: A
-                )
-            )
-            name: VarLikeIdentifier(
-                name: b
-            )
-        )
-    )
-)
\ No newline at end of file
diff --git a/vendor/nikic/php-parser/test/code/parser/expr/variable.test b/vendor/nikic/php-parser/test/code/parser/expr/variable.test
deleted file mode 100644
index c30326cc5e..0000000000
--- a/vendor/nikic/php-parser/test/code/parser/expr/variable.test
+++ /dev/null
@@ -1,67 +0,0 @@
-Variable syntaxes
------
-<?php
-
-$a;
-${'a'};
-${foo()};
-$$a;
-$$$a;
-$$a['b'];
------
-!!php5
-array(
-    0: Stmt_Expression(
-        expr: Expr_Variable(
-            name: a
-        )
-    )
-    1: Stmt_Expression(
-        expr: Expr_Variable(
-            name: Scalar_String(
-                value: a
-            )
-        )
-    )
-    2: Stmt_Expression(
-        expr: Expr_Variable(
-            name: Expr_FuncCall(
-                name: Name(
-                    parts: array(
-                        0: foo
-                    )
-                )
-                args: array(
-                )
-            )
-        )
-    )
-    3: Stmt_Expression(
-        expr: Expr_Variable(
-            name: Expr_Variable(
-                name: a
-            )
-        )
-    )
-    4: Stmt_Expression(
-        expr: Expr_Variable(
-            name: Expr_Variable(
-                name: Expr_Variable(
-                    name: a
-                )
-            )
-        )
-    )
-    5: Stmt_Expression(
-        expr: Expr_Variable(
-            name: Expr_ArrayDimFetch(
-                var: Expr_Variable(
-                    name: a
-                )
-                dim: Scalar_String(
-                    value: b
-                )
-            )
-        )
-    )
-)
\ 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
deleted file mode 100644
index a981329be3..0000000000
--- a/vendor/nikic/php-parser/test/code/parser/nopPositions.test
+++ /dev/null
@@ -1,13 +0,0 @@
-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/constantString.test b/vendor/nikic/php-parser/test/code/parser/scalar/constantString.test
deleted file mode 100644
index 4084bdd03c..0000000000
--- a/vendor/nikic/php-parser/test/code/parser/scalar/constantString.test
+++ /dev/null
@@ -1,86 +0,0 @@
-Constant string syntaxes
------
-<?php
-
-'';
-"";
-b'';
-b"";
-'Hi';
-b'Hi';
-B'Hi';
-"Hi";
-b"Hi";
-B"Hi";
-'!\'!\\!\a!';
-"!\"!\\!\$!\n!\r!\t!\f!\v!\e!\a";
-"!\xFF!\377!\400!\0!";
------
-array(
-    0: Stmt_Expression(
-        expr: Scalar_String(
-            value:
-        )
-    )
-    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: Hi
-        )
-    )
-    5: Stmt_Expression(
-        expr: Scalar_String(
-            value: Hi
-        )
-    )
-    6: Stmt_Expression(
-        expr: Scalar_String(
-            value: Hi
-        )
-    )
-    7: Stmt_Expression(
-        expr: Scalar_String(
-            value: Hi
-        )
-    )
-    8: Stmt_Expression(
-        expr: Scalar_String(
-            value: Hi
-        )
-    )
-    9: Stmt_Expression(
-        expr: Scalar_String(
-            value: Hi
-        )
-    )
-    10: Stmt_Expression(
-        expr: Scalar_String(
-            value: !'!\!\a!
-        )
-    )
-    11: Stmt_Expression(
-        expr: Scalar_String(
-            value: !"!\!$!
-        !@@{ "\r" }@@!@@{ "\t" }@@!@@{ "\f" }@@!@@{ "\v" }@@!@@{ chr(27) /* "\e" */ }@@!\a
-        )
-    )
-    12: Stmt_Expression(
-        expr: Scalar_String(
-            value: !@@{ chr(255) }@@!@@{ chr(255) }@@!@@{ chr(0) }@@!@@{ chr(0) }@@!
-        )
-    )
-)
\ No newline at end of file
diff --git a/vendor/nikic/php-parser/test/code/parser/scalar/docString.test b/vendor/nikic/php-parser/test/code/parser/scalar/docString.test
deleted file mode 100644
index 2775be75fd..0000000000
--- a/vendor/nikic/php-parser/test/code/parser/scalar/docString.test
+++ /dev/null
@@ -1,115 +0,0 @@
-Nowdoc and heredoc strings
------
-<?php
-
-// empty strings
-<<<'EOS'
-EOS;
-<<<EOS
-EOS;
-
-// constant encapsed strings
-<<<'EOS'
-Test '" $a \n
-EOS;
-<<<EOS
-Test '" \$a \n
-EOS;
-
-// encapsed strings
-<<<EOS
-Test $a
-EOS;
-<<<EOS
-Test $a and $b->c test
-EOS;
-
-b<<<EOS
-Binary
-EOS;
-
------
-array(
-    0: Stmt_Expression(
-        expr: Scalar_String(
-            value:
-            comments: array(
-                0: // empty strings
-            )
-        )
-        comments: array(
-            0: // empty strings
-        )
-    )
-    1: Stmt_Expression(
-        expr: Scalar_String(
-            value:
-        )
-    )
-    2: Stmt_Expression(
-        expr: Scalar_String(
-            value: Test '" $a \n
-            comments: array(
-                0: // constant encapsed strings
-            )
-        )
-        comments: array(
-            0: // constant encapsed strings
-        )
-    )
-    3: Stmt_Expression(
-        expr: Scalar_String(
-            value: Test '" $a
-
-        )
-    )
-    4: Stmt_Expression(
-        expr: Scalar_Encapsed(
-            parts: array(
-                0: Scalar_EncapsedStringPart(
-                    value: Test
-                )
-                1: Expr_Variable(
-                    name: a
-                )
-            )
-            comments: array(
-                0: // encapsed strings
-            )
-        )
-        comments: array(
-            0: // encapsed strings
-        )
-    )
-    5: Stmt_Expression(
-        expr: Scalar_Encapsed(
-            parts: array(
-                0: Scalar_EncapsedStringPart(
-                    value: Test
-                )
-                1: Expr_Variable(
-                    name: a
-                )
-                2: Scalar_EncapsedStringPart(
-                    value:  and
-                )
-                3: Expr_PropertyFetch(
-                    var: Expr_Variable(
-                        name: b
-                    )
-                    name: Identifier(
-                        name: c
-                    )
-                )
-                4: Scalar_EncapsedStringPart(
-                    value:  test
-                )
-            )
-        )
-    )
-    6: Stmt_Expression(
-        expr: Scalar_String(
-            value: Binary
-        )
-    )
-)
\ No newline at end of file
diff --git a/vendor/nikic/php-parser/test/code/parser/scalar/docStringNewlines.test b/vendor/nikic/php-parser/test/code/parser/scalar/docStringNewlines.test
deleted file mode 100644
index 9eae2338f0..0000000000
--- a/vendor/nikic/php-parser/test/code/parser/scalar/docStringNewlines.test
+++ /dev/null
@@ -1,77 +0,0 @@
-Trailing newlines in doc strings
------
-<?php
-
-<<<'EOF'@@{ "\n\n" }@@EOF;
-<<<'EOF'@@{ "\n\n\n" }@@EOF;
-<<<'EOF'@@{ "\nFoo\n\n" }@@EOF;
-<<<EOF@@{ "\n\$var\n\n" }@@EOF;
-
-<<<'EOF'@@{ "\r\n\r\n" }@@EOF;
-<<<'EOF'@@{ "\r\n\r\n\r\n" }@@EOF;
-<<<'EOF'@@{ "\r\nFoo\r\n\r\n" }@@EOF;
-<<<EOF@@{ "\r\n\$var\r\n\r\n" }@@EOF;
-
------
-array(
-    0: Stmt_Expression(
-        expr: Scalar_String(
-            value:
-        )
-    )
-    1: Stmt_Expression(
-        expr: Scalar_String(
-            value:
-
-        )
-    )
-    2: Stmt_Expression(
-        expr: Scalar_String(
-            value: Foo
-
-        )
-    )
-    3: Stmt_Expression(
-        expr: Scalar_Encapsed(
-            parts: array(
-                0: Expr_Variable(
-                    name: var
-                )
-                1: Scalar_EncapsedStringPart(
-                    value:
-
-                )
-            )
-        )
-    )
-    4: Stmt_Expression(
-        expr: Scalar_String(
-            value:
-        )
-    )
-    5: Stmt_Expression(
-        expr: Scalar_String(
-            value:
-
-        )
-    )
-    6: Stmt_Expression(
-        expr: Scalar_String(
-            value: Foo
-
-        )
-    )
-    7: Stmt_Expression(
-        expr: Scalar_Encapsed(
-            parts: array(
-                0: Expr_Variable(
-                    name: var
-                )
-                1: Scalar_EncapsedStringPart(
-                    value:
-
-                )
-            )
-        )
-    )
-)
\ No newline at end of file
diff --git a/vendor/nikic/php-parser/test/code/parser/scalar/encapsedNegVarOffset.test b/vendor/nikic/php-parser/test/code/parser/scalar/encapsedNegVarOffset.test
deleted file mode 100644
index 27a9056fcf..0000000000
--- a/vendor/nikic/php-parser/test/code/parser/scalar/encapsedNegVarOffset.test
+++ /dev/null
@@ -1,82 +0,0 @@
-Encapsed string negative var offsets
------
-<?php
-"$a[-0]";
-"$a[-1]";
-"$a[-0x0]";
-"$a[-00]";
-"$a[@@{ -PHP_INT_MAX - 1 }@@]";
------
-!!php7
-array(
-    0: Stmt_Expression(
-        expr: Scalar_Encapsed(
-            parts: array(
-                0: Expr_ArrayDimFetch(
-                    var: Expr_Variable(
-                        name: a
-                    )
-                    dim: Scalar_String(
-                        value: -0
-                    )
-                )
-            )
-        )
-    )
-    1: Stmt_Expression(
-        expr: Scalar_Encapsed(
-            parts: array(
-                0: Expr_ArrayDimFetch(
-                    var: Expr_Variable(
-                        name: a
-                    )
-                    dim: Scalar_LNumber(
-                        value: -1
-                    )
-                )
-            )
-        )
-    )
-    2: Stmt_Expression(
-        expr: Scalar_Encapsed(
-            parts: array(
-                0: Expr_ArrayDimFetch(
-                    var: Expr_Variable(
-                        name: a
-                    )
-                    dim: Scalar_String(
-                        value: -0x0
-                    )
-                )
-            )
-        )
-    )
-    3: Stmt_Expression(
-        expr: Scalar_Encapsed(
-            parts: array(
-                0: Expr_ArrayDimFetch(
-                    var: Expr_Variable(
-                        name: a
-                    )
-                    dim: Scalar_String(
-                        value: -00
-                    )
-                )
-            )
-        )
-    )
-    4: Stmt_Expression(
-        expr: Scalar_Encapsed(
-            parts: array(
-                0: Expr_ArrayDimFetch(
-                    var: Expr_Variable(
-                        name: a
-                    )
-                    dim: Scalar_LNumber(
-                        value: @@{ -PHP_INT_MAX - 1 }@@
-                    )
-                )
-            )
-        )
-    )
-)
\ No newline at end of file
diff --git a/vendor/nikic/php-parser/test/code/parser/scalar/encapsedString.test b/vendor/nikic/php-parser/test/code/parser/scalar/encapsedString.test
deleted file mode 100644
index 57be611ee0..0000000000
--- a/vendor/nikic/php-parser/test/code/parser/scalar/encapsedString.test
+++ /dev/null
@@ -1,344 +0,0 @@
-Encapsed strings
------
-<?php
-
-"$A";
-"$A->B";
-"$A[B]";
-"$A[0]";
-"$A[1234]";
-"$A[9223372036854775808]";
-"$A[000]";
-"$A[0x0]";
-"$A[0b0]";
-"$A[$B]";
-"{$A}";
-"{$A['B']}";
-"${A}";
-"${A['B']}";
-"${$A}";
-"\{$A}";
-"\{ $A }";
-"\\{$A}";
-"\\{ $A }";
-"{$$A}[B]";
-"$$A[B]";
-"A $B C";
-b"$A";
-B"$A";
------
-array(
-    0: Stmt_Expression(
-        expr: Scalar_Encapsed(
-            parts: array(
-                0: Expr_Variable(
-                    name: A
-                )
-            )
-        )
-    )
-    1: Stmt_Expression(
-        expr: Scalar_Encapsed(
-            parts: array(
-                0: Expr_PropertyFetch(
-                    var: Expr_Variable(
-                        name: A
-                    )
-                    name: Identifier(
-                        name: B
-                    )
-                )
-            )
-        )
-    )
-    2: Stmt_Expression(
-        expr: Scalar_Encapsed(
-            parts: array(
-                0: Expr_ArrayDimFetch(
-                    var: Expr_Variable(
-                        name: A
-                    )
-                    dim: Scalar_String(
-                        value: B
-                    )
-                )
-            )
-        )
-    )
-    3: Stmt_Expression(
-        expr: Scalar_Encapsed(
-            parts: array(
-                0: Expr_ArrayDimFetch(
-                    var: Expr_Variable(
-                        name: A
-                    )
-                    dim: Scalar_LNumber(
-                        value: 0
-                    )
-                )
-            )
-        )
-    )
-    4: Stmt_Expression(
-        expr: Scalar_Encapsed(
-            parts: array(
-                0: Expr_ArrayDimFetch(
-                    var: Expr_Variable(
-                        name: A
-                    )
-                    dim: Scalar_LNumber(
-                        value: 1234
-                    )
-                )
-            )
-        )
-    )
-    5: Stmt_Expression(
-        expr: Scalar_Encapsed(
-            parts: array(
-                0: Expr_ArrayDimFetch(
-                    var: Expr_Variable(
-                        name: A
-                    )
-                    dim: Scalar_String(
-                        value: 9223372036854775808
-                    )
-                )
-            )
-        )
-    )
-    6: Stmt_Expression(
-        expr: Scalar_Encapsed(
-            parts: array(
-                0: Expr_ArrayDimFetch(
-                    var: Expr_Variable(
-                        name: A
-                    )
-                    dim: Scalar_String(
-                        value: 000
-                    )
-                )
-            )
-        )
-    )
-    7: Stmt_Expression(
-        expr: Scalar_Encapsed(
-            parts: array(
-                0: Expr_ArrayDimFetch(
-                    var: Expr_Variable(
-                        name: A
-                    )
-                    dim: Scalar_String(
-                        value: 0x0
-                    )
-                )
-            )
-        )
-    )
-    8: Stmt_Expression(
-        expr: Scalar_Encapsed(
-            parts: array(
-                0: Expr_ArrayDimFetch(
-                    var: Expr_Variable(
-                        name: A
-                    )
-                    dim: Scalar_String(
-                        value: 0b0
-                    )
-                )
-            )
-        )
-    )
-    9: Stmt_Expression(
-        expr: Scalar_Encapsed(
-            parts: array(
-                0: Expr_ArrayDimFetch(
-                    var: Expr_Variable(
-                        name: A
-                    )
-                    dim: Expr_Variable(
-                        name: B
-                    )
-                )
-            )
-        )
-    )
-    10: Stmt_Expression(
-        expr: Scalar_Encapsed(
-            parts: array(
-                0: Expr_Variable(
-                    name: A
-                )
-            )
-        )
-    )
-    11: Stmt_Expression(
-        expr: Scalar_Encapsed(
-            parts: array(
-                0: Expr_ArrayDimFetch(
-                    var: Expr_Variable(
-                        name: A
-                    )
-                    dim: Scalar_String(
-                        value: B
-                    )
-                )
-            )
-        )
-    )
-    12: Stmt_Expression(
-        expr: Scalar_Encapsed(
-            parts: array(
-                0: Expr_Variable(
-                    name: A
-                )
-            )
-        )
-    )
-    13: Stmt_Expression(
-        expr: Scalar_Encapsed(
-            parts: array(
-                0: Expr_ArrayDimFetch(
-                    var: Expr_Variable(
-                        name: A
-                    )
-                    dim: Scalar_String(
-                        value: B
-                    )
-                )
-            )
-        )
-    )
-    14: Stmt_Expression(
-        expr: Scalar_Encapsed(
-            parts: array(
-                0: Expr_Variable(
-                    name: Expr_Variable(
-                        name: A
-                    )
-                )
-            )
-        )
-    )
-    15: Stmt_Expression(
-        expr: Scalar_Encapsed(
-            parts: array(
-                0: Scalar_EncapsedStringPart(
-                    value: \{
-                )
-                1: Expr_Variable(
-                    name: A
-                )
-                2: Scalar_EncapsedStringPart(
-                    value: }
-                )
-            )
-        )
-    )
-    16: Stmt_Expression(
-        expr: Scalar_Encapsed(
-            parts: array(
-                0: Scalar_EncapsedStringPart(
-                    value: \{
-                )
-                1: Expr_Variable(
-                    name: A
-                )
-                2: Scalar_EncapsedStringPart(
-                    value:  }
-                )
-            )
-        )
-    )
-    17: Stmt_Expression(
-        expr: Scalar_Encapsed(
-            parts: array(
-                0: Scalar_EncapsedStringPart(
-                    value: \
-                )
-                1: Expr_Variable(
-                    name: A
-                )
-            )
-        )
-    )
-    18: Stmt_Expression(
-        expr: Scalar_Encapsed(
-            parts: array(
-                0: Scalar_EncapsedStringPart(
-                    value: \{
-                )
-                1: Expr_Variable(
-                    name: A
-                )
-                2: Scalar_EncapsedStringPart(
-                    value:  }
-                )
-            )
-        )
-    )
-    19: Stmt_Expression(
-        expr: Scalar_Encapsed(
-            parts: array(
-                0: Expr_Variable(
-                    name: Expr_Variable(
-                        name: A
-                    )
-                )
-                1: Scalar_EncapsedStringPart(
-                    value: [B]
-                )
-            )
-        )
-    )
-    20: Stmt_Expression(
-        expr: Scalar_Encapsed(
-            parts: array(
-                0: Scalar_EncapsedStringPart(
-                    value: $
-                )
-                1: Expr_ArrayDimFetch(
-                    var: Expr_Variable(
-                        name: A
-                    )
-                    dim: Scalar_String(
-                        value: B
-                    )
-                )
-            )
-        )
-    )
-    21: Stmt_Expression(
-        expr: Scalar_Encapsed(
-            parts: array(
-                0: Scalar_EncapsedStringPart(
-                    value: A
-                )
-                1: Expr_Variable(
-                    name: B
-                )
-                2: Scalar_EncapsedStringPart(
-                    value:  C
-                )
-            )
-        )
-    )
-    22: Stmt_Expression(
-        expr: Scalar_Encapsed(
-            parts: array(
-                0: Expr_Variable(
-                    name: A
-                )
-            )
-        )
-    )
-    23: Stmt_Expression(
-        expr: Scalar_Encapsed(
-            parts: array(
-                0: Expr_Variable(
-                    name: A
-                )
-            )
-        )
-    )
-)
\ 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
deleted file mode 100644
index 17d728dd0e..0000000000
--- a/vendor/nikic/php-parser/test/code/parser/scalar/flexibleDocString.test
+++ /dev/null
@@ -1,361 +0,0 @@
-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
deleted file mode 100644
index 25b7484b24..0000000000
--- a/vendor/nikic/php-parser/test/code/parser/scalar/flexibleDocStringErrors.test
+++ /dev/null
@@ -1,117 +0,0 @@
-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/scalar/float.test b/vendor/nikic/php-parser/test/code/parser/scalar/float.test
deleted file mode 100644
index eb9f5b7262..0000000000
--- a/vendor/nikic/php-parser/test/code/parser/scalar/float.test
+++ /dev/null
@@ -1,108 +0,0 @@
-Different float syntaxes
------
-<?php
-
-0.0;
-0.;
-.0;
-0e0;
-0E0;
-0e+0;
-0e-0;
-30.20e10;
-300.200e100;
-1e10000;
-
-// various integer -> float overflows
-// (all are actually the same number, just in different representations)
-18446744073709551615;
-0xFFFFFFFFFFFFFFFF;
-01777777777777777777777;
-0177777777777777777777787;
-0b1111111111111111111111111111111111111111111111111111111111111111;
------
-array(
-    0: Stmt_Expression(
-        expr: Scalar_DNumber(
-            value: 0
-        )
-    )
-    1: Stmt_Expression(
-        expr: Scalar_DNumber(
-            value: 0
-        )
-    )
-    2: Stmt_Expression(
-        expr: Scalar_DNumber(
-            value: 0
-        )
-    )
-    3: Stmt_Expression(
-        expr: Scalar_DNumber(
-            value: 0
-        )
-    )
-    4: Stmt_Expression(
-        expr: Scalar_DNumber(
-            value: 0
-        )
-    )
-    5: Stmt_Expression(
-        expr: Scalar_DNumber(
-            value: 0
-        )
-    )
-    6: Stmt_Expression(
-        expr: Scalar_DNumber(
-            value: 0
-        )
-    )
-    7: Stmt_Expression(
-        expr: Scalar_DNumber(
-            value: 302000000000
-        )
-    )
-    8: Stmt_Expression(
-        expr: Scalar_DNumber(
-            value: 3.002E+102
-        )
-    )
-    9: Stmt_Expression(
-        expr: Scalar_DNumber(
-            value: INF
-        )
-    )
-    10: Stmt_Expression(
-        expr: Scalar_DNumber(
-            value: 1.844674407371E+19
-            comments: array(
-                0: // various integer -> float overflows
-                1: // (all are actually the same number, just in different representations)
-            )
-        )
-        comments: array(
-            0: // various integer -> float overflows
-            1: // (all are actually the same number, just in different representations)
-        )
-    )
-    11: Stmt_Expression(
-        expr: Scalar_DNumber(
-            value: 1.844674407371E+19
-        )
-    )
-    12: Stmt_Expression(
-        expr: Scalar_DNumber(
-            value: 1.844674407371E+19
-        )
-    )
-    13: Stmt_Expression(
-        expr: Scalar_DNumber(
-            value: 1.844674407371E+19
-        )
-    )
-    14: Stmt_Expression(
-        expr: Scalar_DNumber(
-            value: 1.844674407371E+19
-        )
-    )
-)
\ No newline at end of file
diff --git a/vendor/nikic/php-parser/test/code/parser/scalar/int.test b/vendor/nikic/php-parser/test/code/parser/scalar/int.test
deleted file mode 100644
index b65858dbbc..0000000000
--- a/vendor/nikic/php-parser/test/code/parser/scalar/int.test
+++ /dev/null
@@ -1,61 +0,0 @@
-Different integer syntaxes
------
-<?php
-
-0;
-1;
-@@{ PHP_INT_MAX     }@@;
-@@{ PHP_INT_MAX + 1 }@@;
-0xFFF;
-0xfff;
-0XfFf;
-0777;
-0b111000111000;
------
-array(
-    0: Stmt_Expression(
-        expr: Scalar_LNumber(
-            value: 0
-        )
-    )
-    1: Stmt_Expression(
-        expr: Scalar_LNumber(
-            value: 1
-        )
-    )
-    2: Stmt_Expression(
-        expr: Scalar_LNumber(
-            value: @@{ PHP_INT_MAX }@@
-        )
-    )
-    3: Stmt_Expression(
-        expr: Scalar_DNumber(
-            value: @@{ PHP_INT_MAX + 1 }@@
-        )
-    )
-    4: Stmt_Expression(
-        expr: Scalar_LNumber(
-            value: 4095
-        )
-    )
-    5: Stmt_Expression(
-        expr: Scalar_LNumber(
-            value: 4095
-        )
-    )
-    6: Stmt_Expression(
-        expr: Scalar_LNumber(
-            value: 4095
-        )
-    )
-    7: Stmt_Expression(
-        expr: Scalar_LNumber(
-            value: 511
-        )
-    )
-    8: Stmt_Expression(
-        expr: Scalar_LNumber(
-            value: 3640
-        )
-    )
-)
\ No newline at end of file
diff --git a/vendor/nikic/php-parser/test/code/parser/scalar/invalidOctal.test b/vendor/nikic/php-parser/test/code/parser/scalar/invalidOctal.test
deleted file mode 100644
index cd0cbfba0f..0000000000
--- a/vendor/nikic/php-parser/test/code/parser/scalar/invalidOctal.test
+++ /dev/null
@@ -1,26 +0,0 @@
-Invalid octal literals
------
-<?php
-0787;
------
-!!php7
-Invalid numeric literal from 2:1 to 2:4
-array(
-    0: Stmt_Expression(
-        expr: Scalar_LNumber(
-            value: 0
-        )
-    )
-)
------
-<?php
-0787;
------
-!!php5
-array(
-    0: Stmt_Expression(
-        expr: Scalar_LNumber(
-            value: 7
-        )
-    )
-)
\ No newline at end of file
diff --git a/vendor/nikic/php-parser/test/code/parser/scalar/magicConst.test b/vendor/nikic/php-parser/test/code/parser/scalar/magicConst.test
deleted file mode 100644
index 520ea1776c..0000000000
--- a/vendor/nikic/php-parser/test/code/parser/scalar/magicConst.test
+++ /dev/null
@@ -1,47 +0,0 @@
-Magic constants
------
-<?php
-
-__CLASS__;
-__DIR__;
-__FILE__;
-__FUNCTION__;
-__LINE__;
-__METHOD__;
-__NAMESPACE__;
-__TRAIT__;
------
-array(
-    0: Stmt_Expression(
-        expr: Scalar_MagicConst_Class(
-        )
-    )
-    1: Stmt_Expression(
-        expr: Scalar_MagicConst_Dir(
-        )
-    )
-    2: Stmt_Expression(
-        expr: Scalar_MagicConst_File(
-        )
-    )
-    3: Stmt_Expression(
-        expr: Scalar_MagicConst_Function(
-        )
-    )
-    4: Stmt_Expression(
-        expr: Scalar_MagicConst_Line(
-        )
-    )
-    5: Stmt_Expression(
-        expr: Scalar_MagicConst_Method(
-        )
-    )
-    6: Stmt_Expression(
-        expr: Scalar_MagicConst_Namespace(
-        )
-    )
-    7: Stmt_Expression(
-        expr: Scalar_MagicConst_Trait(
-        )
-    )
-)
\ No newline at end of file
diff --git a/vendor/nikic/php-parser/test/code/parser/scalar/unicodeEscape.test b/vendor/nikic/php-parser/test/code/parser/scalar/unicodeEscape.test
deleted file mode 100644
index 95d982955c..0000000000
--- a/vendor/nikic/php-parser/test/code/parser/scalar/unicodeEscape.test
+++ /dev/null
@@ -1,26 +0,0 @@
-Unicode escape sequence
------
-<?php
-
-"\u{0}";
-"\u{114}";
-"\u{1F602}";
------
-!!php7
-array(
-    0: Stmt_Expression(
-        expr: Scalar_String(
-            value: @@{"\0"}@@
-        )
-    )
-    1: Stmt_Expression(
-        expr: Scalar_String(
-            value: Ĕ
-        )
-    )
-    2: Stmt_Expression(
-        expr: Scalar_String(
-            value: @@{"\xF0\x9F\x98\x82"}@@
-        )
-    )
-)
\ 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
deleted file mode 100644
index 70cf063dfc..0000000000
--- a/vendor/nikic/php-parser/test/code/parser/semiReserved.test
+++ /dev/null
@@ -1,490 +0,0 @@
-Valid usages of reserved keywords as identifiers
------
-<?php
-
-class Test {
-    function array() {}
-    function public() {}
-
-    static function list() {}
-    static function protected() {}
-
-    public $class;
-    public $private;
-
-    const TRAIT = 3, FINAL = 4;
-
-    const __CLASS__ = 1, __TRAIT__ = 2, __FUNCTION__ = 3, __METHOD__ = 4, __LINE__ = 5,
-          __FILE__ = 6, __DIR__ = 7, __NAMESPACE__ = 8;
-    // __halt_compiler does not work
-}
-
-$t = new Test;
-$t->array();
-$t->public();
-
-Test::list();
-Test::protected();
-
-$t->class;
-$t->private;
-
-Test::TRAIT;
-Test::FINAL;
-
-class Foo {
-    use TraitA, TraitB {
-        TraitA::catch insteadof namespace\TraitB;
-        TraitA::list as foreach;
-        TraitB::throw as protected public;
-        TraitB::self as protected;
-        exit as die;
-        \TraitC::exit as bye;
-        namespace\TraitC::exit as byebye;
-        TraitA::
-            //
-            /** doc comment */
-            #
-        catch /* comment */
-            // comment
-            # comment
-        insteadof TraitB;
-    }
-}
------
-array(
-    0: Stmt_Class(
-        flags: 0
-        name: Identifier(
-            name: Test
-        )
-        extends: null
-        implements: array(
-        )
-        stmts: array(
-            0: Stmt_ClassMethod(
-                flags: 0
-                byRef: false
-                name: Identifier(
-                    name: array
-                )
-                params: array(
-                )
-                returnType: null
-                stmts: array(
-                )
-            )
-            1: Stmt_ClassMethod(
-                flags: 0
-                byRef: false
-                name: Identifier(
-                    name: public
-                )
-                params: array(
-                )
-                returnType: null
-                stmts: array(
-                )
-            )
-            2: Stmt_ClassMethod(
-                flags: MODIFIER_STATIC (8)
-                byRef: false
-                name: Identifier(
-                    name: list
-                )
-                params: array(
-                )
-                returnType: null
-                stmts: array(
-                )
-            )
-            3: Stmt_ClassMethod(
-                flags: MODIFIER_STATIC (8)
-                byRef: false
-                name: Identifier(
-                    name: protected
-                )
-                params: array(
-                )
-                returnType: null
-                stmts: array(
-                )
-            )
-            4: Stmt_Property(
-                flags: MODIFIER_PUBLIC (1)
-                type: null
-                props: array(
-                    0: Stmt_PropertyProperty(
-                        name: VarLikeIdentifier(
-                            name: class
-                        )
-                        default: null
-                    )
-                )
-            )
-            5: Stmt_Property(
-                flags: MODIFIER_PUBLIC (1)
-                type: null
-                props: array(
-                    0: Stmt_PropertyProperty(
-                        name: VarLikeIdentifier(
-                            name: private
-                        )
-                        default: null
-                    )
-                )
-            )
-            6: Stmt_ClassConst(
-                flags: 0
-                consts: array(
-                    0: Const(
-                        name: Identifier(
-                            name: TRAIT
-                        )
-                        value: Scalar_LNumber(
-                            value: 3
-                        )
-                    )
-                    1: Const(
-                        name: Identifier(
-                            name: FINAL
-                        )
-                        value: Scalar_LNumber(
-                            value: 4
-                        )
-                    )
-                )
-            )
-            7: Stmt_ClassConst(
-                flags: 0
-                consts: array(
-                    0: Const(
-                        name: Identifier(
-                            name: __CLASS__
-                        )
-                        value: Scalar_LNumber(
-                            value: 1
-                        )
-                    )
-                    1: Const(
-                        name: Identifier(
-                            name: __TRAIT__
-                        )
-                        value: Scalar_LNumber(
-                            value: 2
-                        )
-                    )
-                    2: Const(
-                        name: Identifier(
-                            name: __FUNCTION__
-                        )
-                        value: Scalar_LNumber(
-                            value: 3
-                        )
-                    )
-                    3: Const(
-                        name: Identifier(
-                            name: __METHOD__
-                        )
-                        value: Scalar_LNumber(
-                            value: 4
-                        )
-                    )
-                    4: Const(
-                        name: Identifier(
-                            name: __LINE__
-                        )
-                        value: Scalar_LNumber(
-                            value: 5
-                        )
-                    )
-                    5: Const(
-                        name: Identifier(
-                            name: __FILE__
-                        )
-                        value: Scalar_LNumber(
-                            value: 6
-                        )
-                    )
-                    6: Const(
-                        name: Identifier(
-                            name: __DIR__
-                        )
-                        value: Scalar_LNumber(
-                            value: 7
-                        )
-                    )
-                    7: Const(
-                        name: Identifier(
-                            name: __NAMESPACE__
-                        )
-                        value: Scalar_LNumber(
-                            value: 8
-                        )
-                    )
-                )
-            )
-            8: Stmt_Nop(
-                comments: array(
-                    0: // __halt_compiler does not work
-                )
-            )
-        )
-    )
-    1: Stmt_Expression(
-        expr: Expr_Assign(
-            var: Expr_Variable(
-                name: t
-            )
-            expr: Expr_New(
-                class: Name(
-                    parts: array(
-                        0: Test
-                    )
-                )
-                args: array(
-                )
-            )
-        )
-    )
-    2: Stmt_Expression(
-        expr: Expr_MethodCall(
-            var: Expr_Variable(
-                name: t
-            )
-            name: Identifier(
-                name: array
-            )
-            args: array(
-            )
-        )
-    )
-    3: Stmt_Expression(
-        expr: Expr_MethodCall(
-            var: Expr_Variable(
-                name: t
-            )
-            name: Identifier(
-                name: public
-            )
-            args: array(
-            )
-        )
-    )
-    4: Stmt_Expression(
-        expr: Expr_StaticCall(
-            class: Name(
-                parts: array(
-                    0: Test
-                )
-            )
-            name: Identifier(
-                name: list
-            )
-            args: array(
-            )
-        )
-    )
-    5: Stmt_Expression(
-        expr: Expr_StaticCall(
-            class: Name(
-                parts: array(
-                    0: Test
-                )
-            )
-            name: Identifier(
-                name: protected
-            )
-            args: array(
-            )
-        )
-    )
-    6: Stmt_Expression(
-        expr: Expr_PropertyFetch(
-            var: Expr_Variable(
-                name: t
-            )
-            name: Identifier(
-                name: class
-            )
-        )
-    )
-    7: Stmt_Expression(
-        expr: Expr_PropertyFetch(
-            var: Expr_Variable(
-                name: t
-            )
-            name: Identifier(
-                name: private
-            )
-        )
-    )
-    8: Stmt_Expression(
-        expr: Expr_ClassConstFetch(
-            class: Name(
-                parts: array(
-                    0: Test
-                )
-            )
-            name: Identifier(
-                name: TRAIT
-            )
-        )
-    )
-    9: Stmt_Expression(
-        expr: Expr_ClassConstFetch(
-            class: Name(
-                parts: array(
-                    0: Test
-                )
-            )
-            name: Identifier(
-                name: FINAL
-            )
-        )
-    )
-    10: Stmt_Class(
-        flags: 0
-        name: Identifier(
-            name: Foo
-        )
-        extends: null
-        implements: array(
-        )
-        stmts: array(
-            0: Stmt_TraitUse(
-                traits: array(
-                    0: Name(
-                        parts: array(
-                            0: TraitA
-                        )
-                    )
-                    1: Name(
-                        parts: array(
-                            0: TraitB
-                        )
-                    )
-                )
-                adaptations: array(
-                    0: Stmt_TraitUseAdaptation_Precedence(
-                        trait: Name(
-                            parts: array(
-                                0: TraitA
-                            )
-                        )
-                        method: Identifier(
-                            name: catch
-                        )
-                        insteadof: array(
-                            0: Name_Relative(
-                                parts: array(
-                                    0: TraitB
-                                )
-                            )
-                        )
-                    )
-                    1: Stmt_TraitUseAdaptation_Alias(
-                        trait: Name(
-                            parts: array(
-                                0: TraitA
-                            )
-                        )
-                        method: Identifier(
-                            name: list
-                        )
-                        newModifier: null
-                        newName: Identifier(
-                            name: foreach
-                        )
-                    )
-                    2: Stmt_TraitUseAdaptation_Alias(
-                        trait: Name(
-                            parts: array(
-                                0: TraitB
-                            )
-                        )
-                        method: Identifier(
-                            name: throw
-                        )
-                        newModifier: MODIFIER_PROTECTED (2)
-                        newName: Identifier(
-                            name: public
-                        )
-                    )
-                    3: Stmt_TraitUseAdaptation_Alias(
-                        trait: Name(
-                            parts: array(
-                                0: TraitB
-                            )
-                        )
-                        method: Identifier(
-                            name: self
-                        )
-                        newModifier: MODIFIER_PROTECTED (2)
-                        newName: null
-                    )
-                    4: Stmt_TraitUseAdaptation_Alias(
-                        trait: null
-                        method: Identifier(
-                            name: exit
-                        )
-                        newModifier: null
-                        newName: Identifier(
-                            name: die
-                        )
-                    )
-                    5: Stmt_TraitUseAdaptation_Alias(
-                        trait: Name_FullyQualified(
-                            parts: array(
-                                0: TraitC
-                            )
-                        )
-                        method: Identifier(
-                            name: exit
-                        )
-                        newModifier: null
-                        newName: Identifier(
-                            name: bye
-                        )
-                    )
-                    6: Stmt_TraitUseAdaptation_Alias(
-                        trait: Name_Relative(
-                            parts: array(
-                                0: TraitC
-                            )
-                        )
-                        method: Identifier(
-                            name: exit
-                        )
-                        newModifier: null
-                        newName: Identifier(
-                            name: byebye
-                        )
-                    )
-                    7: Stmt_TraitUseAdaptation_Precedence(
-                        trait: Name(
-                            parts: array(
-                                0: TraitA
-                            )
-                        )
-                        method: Identifier(
-                            name: catch
-                            comments: array(
-                                0: //
-                                1: /** doc comment */
-                                2: #
-                            )
-                        )
-                        insteadof: array(
-                            0: Name(
-                                parts: array(
-                                    0: TraitB
-                                )
-                            )
-                        )
-                    )
-                )
-            )
-        )
-    )
-)
\ No newline at end of file
diff --git a/vendor/nikic/php-parser/test/code/parser/stmt/blocklessStatement.test b/vendor/nikic/php-parser/test/code/parser/stmt/blocklessStatement.test
deleted file mode 100644
index abf586465b..0000000000
--- a/vendor/nikic/php-parser/test/code/parser/stmt/blocklessStatement.test
+++ /dev/null
@@ -1,130 +0,0 @@
-Blockless statements for if/for/etc
------
-<?php
-
-if ($a) $A;
-elseif ($b) $B;
-else $C;
-
-for (;;) $foo;
-
-foreach ($a as $b) $AB;
-
-while ($a) $A;
-
-do $A; while ($a);
-
-declare (a='b') $C;
------
-array(
-    0: Stmt_If(
-        cond: Expr_Variable(
-            name: a
-        )
-        stmts: array(
-            0: Stmt_Expression(
-                expr: Expr_Variable(
-                    name: A
-                )
-            )
-        )
-        elseifs: array(
-            0: Stmt_ElseIf(
-                cond: Expr_Variable(
-                    name: b
-                )
-                stmts: array(
-                    0: Stmt_Expression(
-                        expr: Expr_Variable(
-                            name: B
-                        )
-                    )
-                )
-            )
-        )
-        else: Stmt_Else(
-            stmts: array(
-                0: Stmt_Expression(
-                    expr: Expr_Variable(
-                        name: C
-                    )
-                )
-            )
-        )
-    )
-    1: Stmt_For(
-        init: array(
-        )
-        cond: array(
-        )
-        loop: array(
-        )
-        stmts: array(
-            0: Stmt_Expression(
-                expr: Expr_Variable(
-                    name: foo
-                )
-            )
-        )
-    )
-    2: Stmt_Foreach(
-        expr: Expr_Variable(
-            name: a
-        )
-        keyVar: null
-        byRef: false
-        valueVar: Expr_Variable(
-            name: b
-        )
-        stmts: array(
-            0: Stmt_Expression(
-                expr: Expr_Variable(
-                    name: AB
-                )
-            )
-        )
-    )
-    3: Stmt_While(
-        cond: Expr_Variable(
-            name: a
-        )
-        stmts: array(
-            0: Stmt_Expression(
-                expr: Expr_Variable(
-                    name: A
-                )
-            )
-        )
-    )
-    4: Stmt_Do(
-        stmts: array(
-            0: Stmt_Expression(
-                expr: Expr_Variable(
-                    name: A
-                )
-            )
-        )
-        cond: Expr_Variable(
-            name: a
-        )
-    )
-    5: Stmt_Declare(
-        declares: array(
-            0: Stmt_DeclareDeclare(
-                key: Identifier(
-                    name: a
-                )
-                value: Scalar_String(
-                    value: b
-                )
-            )
-        )
-        stmts: array(
-            0: Stmt_Expression(
-                expr: Expr_Variable(
-                    name: C
-                )
-            )
-        )
-    )
-)
\ No newline at end of file
diff --git a/vendor/nikic/php-parser/test/code/parser/stmt/class/abstract.test b/vendor/nikic/php-parser/test/code/parser/stmt/class/abstract.test
deleted file mode 100644
index 01a82e5194..0000000000
--- a/vendor/nikic/php-parser/test/code/parser/stmt/class/abstract.test
+++ /dev/null
@@ -1,45 +0,0 @@
-Abstract class
------
-<?php
-
-abstract class A {
-    public function a() {}
-    abstract public function b();
-}
------
-array(
-    0: Stmt_Class(
-        flags: MODIFIER_ABSTRACT (16)
-        name: Identifier(
-            name: A
-        )
-        extends: null
-        implements: array(
-        )
-        stmts: array(
-            0: Stmt_ClassMethod(
-                flags: MODIFIER_PUBLIC (1)
-                byRef: false
-                name: Identifier(
-                    name: a
-                )
-                params: array(
-                )
-                returnType: null
-                stmts: array(
-                )
-            )
-            1: Stmt_ClassMethod(
-                flags: MODIFIER_PUBLIC | MODIFIER_ABSTRACT (17)
-                byRef: false
-                name: Identifier(
-                    name: b
-                )
-                params: array(
-                )
-                returnType: null
-                stmts: null
-            )
-        )
-    )
-)
\ No newline at end of file
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
deleted file mode 100644
index 9aaaff9382..0000000000
--- a/vendor/nikic/php-parser/test/code/parser/stmt/class/anonymous.test
+++ /dev/null
@@ -1,214 +0,0 @@
-Anonymous classes
------
-<?php
-
-new class {
-    public function test() {}
-};
-new class extends A implements B, C {};
-new class() {
-    public $foo;
-};
-new class($a, $b) extends A {
-    use T;
-};
-
-class A {
-    public function test() {
-        return new class($this) extends A {
-            const A = 'B';
-        };
-    }
-}
------
-array(
-    0: Stmt_Expression(
-        expr: Expr_New(
-            class: Stmt_Class(
-                flags: 0
-                name: null
-                extends: null
-                implements: array(
-                )
-                stmts: array(
-                    0: Stmt_ClassMethod(
-                        flags: MODIFIER_PUBLIC (1)
-                        byRef: false
-                        name: Identifier(
-                            name: test
-                        )
-                        params: array(
-                        )
-                        returnType: null
-                        stmts: array(
-                        )
-                    )
-                )
-            )
-            args: array(
-            )
-        )
-    )
-    1: Stmt_Expression(
-        expr: Expr_New(
-            class: Stmt_Class(
-                flags: 0
-                name: null
-                extends: Name(
-                    parts: array(
-                        0: A
-                    )
-                )
-                implements: array(
-                    0: Name(
-                        parts: array(
-                            0: B
-                        )
-                    )
-                    1: Name(
-                        parts: array(
-                            0: C
-                        )
-                    )
-                )
-                stmts: array(
-                )
-            )
-            args: array(
-            )
-        )
-    )
-    2: Stmt_Expression(
-        expr: Expr_New(
-            class: Stmt_Class(
-                flags: 0
-                name: null
-                extends: null
-                implements: array(
-                )
-                stmts: array(
-                    0: Stmt_Property(
-                        flags: MODIFIER_PUBLIC (1)
-                        type: null
-                        props: array(
-                            0: Stmt_PropertyProperty(
-                                name: VarLikeIdentifier(
-                                    name: foo
-                                )
-                                default: null
-                            )
-                        )
-                    )
-                )
-            )
-            args: array(
-            )
-        )
-    )
-    3: Stmt_Expression(
-        expr: Expr_New(
-            class: Stmt_Class(
-                flags: 0
-                name: null
-                extends: Name(
-                    parts: array(
-                        0: A
-                    )
-                )
-                implements: array(
-                )
-                stmts: array(
-                    0: Stmt_TraitUse(
-                        traits: array(
-                            0: Name(
-                                parts: array(
-                                    0: T
-                                )
-                            )
-                        )
-                        adaptations: array(
-                        )
-                    )
-                )
-            )
-            args: array(
-                0: Arg(
-                    value: Expr_Variable(
-                        name: a
-                    )
-                    byRef: false
-                    unpack: false
-                )
-                1: Arg(
-                    value: Expr_Variable(
-                        name: b
-                    )
-                    byRef: false
-                    unpack: false
-                )
-            )
-        )
-    )
-    4: Stmt_Class(
-        flags: 0
-        name: Identifier(
-            name: A
-        )
-        extends: null
-        implements: array(
-        )
-        stmts: array(
-            0: Stmt_ClassMethod(
-                flags: MODIFIER_PUBLIC (1)
-                byRef: false
-                name: Identifier(
-                    name: test
-                )
-                params: array(
-                )
-                returnType: null
-                stmts: array(
-                    0: Stmt_Return(
-                        expr: Expr_New(
-                            class: Stmt_Class(
-                                flags: 0
-                                name: null
-                                extends: Name(
-                                    parts: array(
-                                        0: A
-                                    )
-                                )
-                                implements: array(
-                                )
-                                stmts: array(
-                                    0: Stmt_ClassConst(
-                                        flags: 0
-                                        consts: array(
-                                            0: Const(
-                                                name: Identifier(
-                                                    name: A
-                                                )
-                                                value: Scalar_String(
-                                                    value: B
-                                                )
-                                            )
-                                        )
-                                    )
-                                )
-                            )
-                            args: array(
-                                0: Arg(
-                                    value: Expr_Variable(
-                                        name: this
-                                    )
-                                    byRef: false
-                                    unpack: false
-                                )
-                            )
-                        )
-                    )
-                )
-            )
-        )
-    )
-)
\ No newline at end of file
diff --git a/vendor/nikic/php-parser/test/code/parser/stmt/class/conditional.test b/vendor/nikic/php-parser/test/code/parser/stmt/class/conditional.test
deleted file mode 100644
index 40a93508b0..0000000000
--- a/vendor/nikic/php-parser/test/code/parser/stmt/class/conditional.test
+++ /dev/null
@@ -1,35 +0,0 @@
-Conditional class definition
------
-<?php
-
-if (true) {
-    class A {}
-}
------
-array(
-    0: Stmt_If(
-        cond: Expr_ConstFetch(
-            name: Name(
-                parts: array(
-                    0: true
-                )
-            )
-        )
-        stmts: array(
-            0: Stmt_Class(
-                flags: 0
-                name: Identifier(
-                    name: A
-                )
-                extends: null
-                implements: array(
-                )
-                stmts: array(
-                )
-            )
-        )
-        elseifs: array(
-        )
-        else: null
-    )
-)
\ No newline at end of file
diff --git a/vendor/nikic/php-parser/test/code/parser/stmt/class/constModifierErrors.test b/vendor/nikic/php-parser/test/code/parser/stmt/class/constModifierErrors.test
deleted file mode 100644
index a6aa797218..0000000000
--- a/vendor/nikic/php-parser/test/code/parser/stmt/class/constModifierErrors.test
+++ /dev/null
@@ -1,137 +0,0 @@
-Invalid class constant modifiers
------
-<?php
-class A {
-    static const X = 1;
-}
------
-!!php7
-Cannot use 'static' as constant modifier from 3:5 to 3:10
-array(
-    0: Stmt_Class(
-        flags: 0
-        name: Identifier(
-            name: A
-        )
-        extends: null
-        implements: array(
-        )
-        stmts: array(
-            0: Stmt_ClassConst(
-                flags: MODIFIER_STATIC (8)
-                consts: array(
-                    0: Const(
-                        name: Identifier(
-                            name: X
-                        )
-                        value: Scalar_LNumber(
-                            value: 1
-                        )
-                    )
-                )
-            )
-        )
-    )
-)
------
-<?php
-class A {
-    abstract const X = 1;
-}
------
-!!php7
-Cannot use 'abstract' as constant modifier from 3:5 to 3:12
-array(
-    0: Stmt_Class(
-        flags: 0
-        name: Identifier(
-            name: A
-        )
-        extends: null
-        implements: array(
-        )
-        stmts: array(
-            0: Stmt_ClassConst(
-                flags: MODIFIER_ABSTRACT (16)
-                consts: array(
-                    0: Const(
-                        name: Identifier(
-                            name: X
-                        )
-                        value: Scalar_LNumber(
-                            value: 1
-                        )
-                    )
-                )
-            )
-        )
-    )
-)
------
-<?php
-class A {
-    final const X = 1;
-}
------
-!!php7
-Cannot use 'final' as constant modifier from 3:5 to 3:9
-array(
-    0: Stmt_Class(
-        flags: 0
-        name: Identifier(
-            name: A
-        )
-        extends: null
-        implements: array(
-        )
-        stmts: array(
-            0: Stmt_ClassConst(
-                flags: MODIFIER_FINAL (32)
-                consts: array(
-                    0: Const(
-                        name: Identifier(
-                            name: X
-                        )
-                        value: Scalar_LNumber(
-                            value: 1
-                        )
-                    )
-                )
-            )
-        )
-    )
-)
------
-<?php
-class A {
-    public public const X = 1;
-}
------
-!!php7
-Multiple access type modifiers are not allowed from 3:12 to 3:17
-array(
-    0: Stmt_Class(
-        flags: 0
-        name: Identifier(
-            name: A
-        )
-        extends: null
-        implements: array(
-        )
-        stmts: array(
-            0: Stmt_ClassConst(
-                flags: MODIFIER_PUBLIC (1)
-                consts: array(
-                    0: Const(
-                        name: Identifier(
-                            name: X
-                        )
-                        value: Scalar_LNumber(
-                            value: 1
-                        )
-                    )
-                )
-            )
-        )
-    )
-)
\ No newline at end of file
diff --git a/vendor/nikic/php-parser/test/code/parser/stmt/class/constModifiers.test b/vendor/nikic/php-parser/test/code/parser/stmt/class/constModifiers.test
deleted file mode 100644
index 24d7219811..0000000000
--- a/vendor/nikic/php-parser/test/code/parser/stmt/class/constModifiers.test
+++ /dev/null
@@ -1,77 +0,0 @@
-Class constant modifiers
------
-<?php
-
-class Foo {
-    const A = 1;
-    public const B = 2;
-    protected const C = 3;
-    private const D = 4;
-}
------
-!!php7
-array(
-    0: Stmt_Class(
-        flags: 0
-        name: Identifier(
-            name: Foo
-        )
-        extends: null
-        implements: array(
-        )
-        stmts: array(
-            0: Stmt_ClassConst(
-                flags: 0
-                consts: array(
-                    0: Const(
-                        name: Identifier(
-                            name: A
-                        )
-                        value: Scalar_LNumber(
-                            value: 1
-                        )
-                    )
-                )
-            )
-            1: Stmt_ClassConst(
-                flags: MODIFIER_PUBLIC (1)
-                consts: array(
-                    0: Const(
-                        name: Identifier(
-                            name: B
-                        )
-                        value: Scalar_LNumber(
-                            value: 2
-                        )
-                    )
-                )
-            )
-            2: Stmt_ClassConst(
-                flags: MODIFIER_PROTECTED (2)
-                consts: array(
-                    0: Const(
-                        name: Identifier(
-                            name: C
-                        )
-                        value: Scalar_LNumber(
-                            value: 3
-                        )
-                    )
-                )
-            )
-            3: Stmt_ClassConst(
-                flags: MODIFIER_PRIVATE (4)
-                consts: array(
-                    0: Const(
-                        name: Identifier(
-                            name: D
-                        )
-                        value: Scalar_LNumber(
-                            value: 4
-                        )
-                    )
-                )
-            )
-        )
-    )
-)
\ No newline at end of file
diff --git a/vendor/nikic/php-parser/test/code/parser/stmt/class/final.test b/vendor/nikic/php-parser/test/code/parser/stmt/class/final.test
deleted file mode 100644
index ecb7a5c3d6..0000000000
--- a/vendor/nikic/php-parser/test/code/parser/stmt/class/final.test
+++ /dev/null
@@ -1,19 +0,0 @@
-Final class
------
-<?php
-
-final class A {}
------
-array(
-    0: Stmt_Class(
-        flags: MODIFIER_FINAL (32)
-        name: Identifier(
-            name: A
-        )
-        extends: null
-        implements: array(
-        )
-        stmts: array(
-        )
-    )
-)
\ No newline at end of file
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
deleted file mode 100644
index 92737af7ad..0000000000
--- a/vendor/nikic/php-parser/test/code/parser/stmt/class/implicitPublic.test
+++ /dev/null
@@ -1,110 +0,0 @@
-Implicitly public properties and methods
------
-<?php
-
-abstract class A {
-    var $a;
-    static $b;
-    abstract function c();
-    final function d() {}
-    static function e() {}
-    final static function f() {}
-    function g() {}
-}
------
-array(
-    0: Stmt_Class(
-        flags: MODIFIER_ABSTRACT (16)
-        name: Identifier(
-            name: A
-        )
-        extends: null
-        implements: array(
-        )
-        stmts: array(
-            0: Stmt_Property(
-                flags: 0
-                type: null
-                props: array(
-                    0: Stmt_PropertyProperty(
-                        name: VarLikeIdentifier(
-                            name: a
-                        )
-                        default: null
-                    )
-                )
-            )
-            1: Stmt_Property(
-                flags: MODIFIER_STATIC (8)
-                type: null
-                props: array(
-                    0: Stmt_PropertyProperty(
-                        name: VarLikeIdentifier(
-                            name: b
-                        )
-                        default: null
-                    )
-                )
-            )
-            2: Stmt_ClassMethod(
-                flags: MODIFIER_ABSTRACT (16)
-                byRef: false
-                name: Identifier(
-                    name: c
-                )
-                params: array(
-                )
-                returnType: null
-                stmts: null
-            )
-            3: Stmt_ClassMethod(
-                flags: MODIFIER_FINAL (32)
-                byRef: false
-                name: Identifier(
-                    name: d
-                )
-                params: array(
-                )
-                returnType: null
-                stmts: array(
-                )
-            )
-            4: Stmt_ClassMethod(
-                flags: MODIFIER_STATIC (8)
-                byRef: false
-                name: Identifier(
-                    name: e
-                )
-                params: array(
-                )
-                returnType: null
-                stmts: array(
-                )
-            )
-            5: Stmt_ClassMethod(
-                flags: MODIFIER_STATIC | MODIFIER_FINAL (40)
-                byRef: false
-                name: Identifier(
-                    name: f
-                )
-                params: array(
-                )
-                returnType: null
-                stmts: array(
-                )
-            )
-            6: Stmt_ClassMethod(
-                flags: 0
-                byRef: false
-                name: Identifier(
-                    name: g
-                )
-                params: array(
-                )
-                returnType: null
-                stmts: array(
-                )
-            )
-        )
-    )
-)
\ No newline at end of file
diff --git a/vendor/nikic/php-parser/test/code/parser/stmt/class/interface.test b/vendor/nikic/php-parser/test/code/parser/stmt/class/interface.test
deleted file mode 100644
index 7ac15970dd..0000000000
--- a/vendor/nikic/php-parser/test/code/parser/stmt/class/interface.test
+++ /dev/null
@@ -1,40 +0,0 @@
-Interface
------
-<?php
-
-interface A extends C, D {
-    public function a();
-}
------
-array(
-    0: Stmt_Interface(
-        name: Identifier(
-            name: A
-        )
-        extends: array(
-            0: Name(
-                parts: array(
-                    0: C
-                )
-            )
-            1: Name(
-                parts: array(
-                    0: D
-                )
-            )
-        )
-        stmts: array(
-            0: Stmt_ClassMethod(
-                flags: MODIFIER_PUBLIC (1)
-                byRef: false
-                name: Identifier(
-                    name: a
-                )
-                params: array(
-                )
-                returnType: null
-                stmts: null
-            )
-        )
-    )
-)
\ No newline at end of file
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
deleted file mode 100644
index 797ef4e83e..0000000000
--- a/vendor/nikic/php-parser/test/code/parser/stmt/class/modifier.test
+++ /dev/null
@@ -1,254 +0,0 @@
-Invalid modifier combination
------
-<?php class A { public public $a; }
------
-Multiple access type modifiers are not allowed from 1:24 to 1:29
-array(
-    0: Stmt_Class(
-        flags: 0
-        name: Identifier(
-            name: A
-        )
-        extends: null
-        implements: array(
-        )
-        stmts: array(
-            0: Stmt_Property(
-                flags: MODIFIER_PUBLIC (1)
-                type: null
-                props: array(
-                    0: Stmt_PropertyProperty(
-                        name: VarLikeIdentifier(
-                            name: a
-                        )
-                        default: null
-                    )
-                )
-            )
-        )
-    )
-)
------
-<?php class A { public protected $a; }
------
-Multiple access type modifiers are not allowed from 1:24 to 1:32
-array(
-    0: Stmt_Class(
-        flags: 0
-        name: Identifier(
-            name: A
-        )
-        extends: null
-        implements: array(
-        )
-        stmts: array(
-            0: Stmt_Property(
-                flags: MODIFIER_PUBLIC | MODIFIER_PROTECTED (3)
-                type: null
-                props: array(
-                    0: Stmt_PropertyProperty(
-                        name: VarLikeIdentifier(
-                            name: a
-                        )
-                        default: null
-                    )
-                )
-            )
-        )
-    )
-)
------
-<?php class A { abstract abstract function a(); }
------
-Multiple abstract modifiers are not allowed from 1:26 to 1:33
-array(
-    0: Stmt_Class(
-        flags: 0
-        name: Identifier(
-            name: A
-        )
-        extends: null
-        implements: array(
-        )
-        stmts: array(
-            0: Stmt_ClassMethod(
-                flags: MODIFIER_ABSTRACT (16)
-                byRef: false
-                name: Identifier(
-                    name: a
-                )
-                params: array(
-                )
-                returnType: null
-                stmts: null
-            )
-        )
-    )
-)
------
-<?php class A { static static $a; }
------
-Multiple static modifiers are not allowed from 1:24 to 1:29
-array(
-    0: Stmt_Class(
-        flags: 0
-        name: Identifier(
-            name: A
-        )
-        extends: null
-        implements: array(
-        )
-        stmts: array(
-            0: Stmt_Property(
-                flags: MODIFIER_STATIC (8)
-                type: null
-                props: array(
-                    0: Stmt_PropertyProperty(
-                        name: VarLikeIdentifier(
-                            name: a
-                        )
-                        default: null
-                    )
-                )
-            )
-        )
-    )
-)
------
-<?php class A { final final function a() {} }
------
-Multiple final modifiers are not allowed from 1:23 to 1:27
-array(
-    0: Stmt_Class(
-        flags: 0
-        name: Identifier(
-            name: A
-        )
-        extends: null
-        implements: array(
-        )
-        stmts: array(
-            0: Stmt_ClassMethod(
-                flags: MODIFIER_FINAL (32)
-                byRef: false
-                name: Identifier(
-                    name: a
-                )
-                params: array(
-                )
-                returnType: null
-                stmts: array(
-                )
-            )
-        )
-    )
-)
------
-<?php class A { abstract final function a(); }
------
-Cannot use the final modifier on an abstract class member from 1:26 to 1:30
-array(
-    0: Stmt_Class(
-        flags: 0
-        name: Identifier(
-            name: A
-        )
-        extends: null
-        implements: array(
-        )
-        stmts: array(
-            0: Stmt_ClassMethod(
-                flags: MODIFIER_ABSTRACT | MODIFIER_FINAL (48)
-                byRef: false
-                name: Identifier(
-                    name: a
-                )
-                params: array(
-                )
-                returnType: null
-                stmts: null
-            )
-        )
-    )
-)
------
-<?php abstract final class A { }
-// Type in the partial parse could conceivably be any of 0, 16 or 32
------
-Syntax error, unexpected T_FINAL, expecting T_CLASS from 1:16 to 1:20
-array(
-    0: Stmt_Class(
-        flags: MODIFIER_FINAL (32)
-        name: Identifier(
-            name: A
-        )
-        extends: null
-        implements: array(
-        )
-        stmts: array(
-        )
-    )
-    1: Stmt_Nop(
-        comments: array(
-            0: // Type in the partial parse could conceivably be any of 0, 16 or 32
-        )
-    )
-)
------
-<?php class A { abstract $a; }
------
-Properties cannot be declared abstract from 1:17 to 1:24
-array(
-    0: Stmt_Class(
-        flags: 0
-        name: Identifier(
-            name: A
-        )
-        extends: null
-        implements: array(
-        )
-        stmts: array(
-            0: Stmt_Property(
-                flags: MODIFIER_ABSTRACT (16)
-                type: null
-                props: array(
-                    0: Stmt_PropertyProperty(
-                        name: VarLikeIdentifier(
-                            name: a
-                        )
-                        default: null
-                    )
-                )
-            )
-        )
-    )
-)
------
-<?php class A { final $a; }
------
-Properties cannot be declared final from 1:17 to 1:21
-array(
-    0: Stmt_Class(
-        flags: 0
-        name: Identifier(
-            name: A
-        )
-        extends: null
-        implements: array(
-        )
-        stmts: array(
-            0: Stmt_Property(
-                flags: MODIFIER_FINAL (32)
-                type: null
-                props: array(
-                    0: Stmt_PropertyProperty(
-                        name: VarLikeIdentifier(
-                            name: a
-                        )
-                        default: null
-                    )
-                )
-            )
-        )
-    )
-)
\ No newline at end of file
diff --git a/vendor/nikic/php-parser/test/code/parser/stmt/class/name.test b/vendor/nikic/php-parser/test/code/parser/stmt/class/name.test
deleted file mode 100644
index 40cb2fe27e..0000000000
--- a/vendor/nikic/php-parser/test/code/parser/stmt/class/name.test
+++ /dev/null
@@ -1,266 +0,0 @@
-Invalid class name
------
-<?php class self {}
------
-Cannot use 'self' as class name as it is reserved from 1:13 to 1:16
-array(
-    0: Stmt_Class(
-        flags: 0
-        name: Identifier(
-            name: self
-        )
-        extends: null
-        implements: array(
-        )
-        stmts: array(
-        )
-    )
-)
------
-<?php class PARENT {}
------
-Cannot use 'PARENT' as class name as it is reserved from 1:13 to 1:18
-array(
-    0: Stmt_Class(
-        flags: 0
-        name: Identifier(
-            name: PARENT
-        )
-        extends: null
-        implements: array(
-        )
-        stmts: array(
-        )
-    )
-)
------
-<?php class static {}
------
-Syntax error, unexpected T_STATIC, expecting T_STRING from 1:13 to 1:18
-array(
-)
------
-<?php class A extends self {}
------
-Cannot use 'self' as class name as it is reserved from 1:23 to 1:26
-array(
-    0: Stmt_Class(
-        flags: 0
-        name: Identifier(
-            name: A
-        )
-        extends: Name(
-            parts: array(
-                0: self
-            )
-        )
-        implements: array(
-        )
-        stmts: array(
-        )
-    )
-)
------
-<?php class A extends PARENT {}
------
-Cannot use 'PARENT' as class name as it is reserved from 1:23 to 1:28
-array(
-    0: Stmt_Class(
-        flags: 0
-        name: Identifier(
-            name: A
-        )
-        extends: Name(
-            parts: array(
-                0: PARENT
-            )
-        )
-        implements: array(
-        )
-        stmts: array(
-        )
-    )
-)
------
-<?php class A extends static {}
------
-Cannot use 'static' as class name as it is reserved from 1:23 to 1:28
-array(
-    0: Stmt_Class(
-        flags: 0
-        name: Identifier(
-            name: A
-        )
-        extends: Name(
-            parts: array(
-                0: static
-            )
-        )
-        implements: array(
-        )
-        stmts: array(
-        )
-    )
-)
------
-<?php class A implements self {}
------
-Cannot use 'self' as interface name as it is reserved from 1:26 to 1:29
-array(
-    0: Stmt_Class(
-        flags: 0
-        name: Identifier(
-            name: A
-        )
-        extends: null
-        implements: array(
-            0: Name(
-                parts: array(
-                    0: self
-                )
-            )
-        )
-        stmts: array(
-        )
-    )
-)
------
-<?php class A implements PARENT {}
------
-Cannot use 'PARENT' as interface name as it is reserved from 1:26 to 1:31
-array(
-    0: Stmt_Class(
-        flags: 0
-        name: Identifier(
-            name: A
-        )
-        extends: null
-        implements: array(
-            0: Name(
-                parts: array(
-                    0: PARENT
-                )
-            )
-        )
-        stmts: array(
-        )
-    )
-)
------
-<?php class A implements static {}
------
-Cannot use 'static' as interface name as it is reserved from 1:26 to 1:31
-array(
-    0: Stmt_Class(
-        flags: 0
-        name: Identifier(
-            name: A
-        )
-        extends: null
-        implements: array(
-            0: Name(
-                parts: array(
-                    0: static
-                )
-            )
-        )
-        stmts: array(
-        )
-    )
-)
------
-<?php interface self {}
------
-Cannot use 'self' as class name as it is reserved from 1:17 to 1:20
-array(
-    0: Stmt_Interface(
-        name: Identifier(
-            name: self
-        )
-        extends: array(
-        )
-        stmts: array(
-        )
-    )
-)
------
-<?php interface PARENT {}
------
-Cannot use 'PARENT' as class name as it is reserved from 1:17 to 1:22
-array(
-    0: Stmt_Interface(
-        name: Identifier(
-            name: PARENT
-        )
-        extends: array(
-        )
-        stmts: array(
-        )
-    )
-)
------
-<?php interface static {}
------
-Syntax error, unexpected T_STATIC, expecting T_STRING from 1:17 to 1:22
-array(
-)
------
-<?php interface A extends self {}
------
-Cannot use 'self' as interface name as it is reserved from 1:27 to 1:30
-array(
-    0: Stmt_Interface(
-        name: Identifier(
-            name: A
-        )
-        extends: array(
-            0: Name(
-                parts: array(
-                    0: self
-                )
-            )
-        )
-        stmts: array(
-        )
-    )
-)
------
-<?php interface A extends PARENT {}
------
-Cannot use 'PARENT' as interface name as it is reserved from 1:27 to 1:32
-array(
-    0: Stmt_Interface(
-        name: Identifier(
-            name: A
-        )
-        extends: array(
-            0: Name(
-                parts: array(
-                    0: PARENT
-                )
-            )
-        )
-        stmts: array(
-        )
-    )
-)
------
-<?php interface A extends static {}
------
-Cannot use 'static' as interface name as it is reserved from 1:27 to 1:32
-array(
-    0: Stmt_Interface(
-        name: Identifier(
-            name: A
-        )
-        extends: array(
-            0: Name(
-                parts: array(
-                    0: static
-                )
-            )
-        )
-        stmts: array(
-        )
-    )
-)
\ No newline at end of file
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
deleted file mode 100644
index 8906ef1325..0000000000
--- a/vendor/nikic/php-parser/test/code/parser/stmt/class/php4Style.test
+++ /dev/null
@@ -1,59 +0,0 @@
-PHP 4 style declarations
------
-<?php
-
-class A {
-    var $foo;
-    function bar() {}
-    static abstract function baz() {}
-}
------
-array(
-    0: Stmt_Class(
-        flags: 0
-        name: Identifier(
-            name: A
-        )
-        extends: null
-        implements: array(
-        )
-        stmts: array(
-            0: Stmt_Property(
-                flags: 0
-                type: null
-                props: array(
-                    0: Stmt_PropertyProperty(
-                        name: VarLikeIdentifier(
-                            name: foo
-                        )
-                        default: null
-                    )
-                )
-            )
-            1: Stmt_ClassMethod(
-                flags: 0
-                byRef: false
-                name: Identifier(
-                    name: bar
-                )
-                params: array(
-                )
-                returnType: null
-                stmts: array(
-                )
-            )
-            2: Stmt_ClassMethod(
-                flags: MODIFIER_ABSTRACT | MODIFIER_STATIC (24)
-                byRef: false
-                name: Identifier(
-                    name: baz
-                )
-                params: array(
-                )
-                returnType: null
-                stmts: array(
-                )
-            )
-        )
-    )
-)
\ No newline at end of file
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
deleted file mode 100644
index 55955f3f9b..0000000000
--- a/vendor/nikic/php-parser/test/code/parser/stmt/class/propertyTypes.test
+++ /dev/null
@@ -1,70 +0,0 @@
-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
deleted file mode 100644
index c0bd53f3c9..0000000000
--- a/vendor/nikic/php-parser/test/code/parser/stmt/class/simple.test
+++ /dev/null
@@ -1,185 +0,0 @@
-Class declaration
------
-<?php
-
-class A extends B implements C, D {
-    const A = 'B', C = 'D';
-
-    public $a = 'b', $c = 'd';
-    protected $e;
-    private $f;
-
-    public function a() {}
-    public static function b($a) {}
-    public final function c() : B {}
-    protected function d() {}
-    private function e() {}
-}
------
-array(
-    0: Stmt_Class(
-        flags: 0
-        name: Identifier(
-            name: A
-        )
-        extends: Name(
-            parts: array(
-                0: B
-            )
-        )
-        implements: array(
-            0: Name(
-                parts: array(
-                    0: C
-                )
-            )
-            1: Name(
-                parts: array(
-                    0: D
-                )
-            )
-        )
-        stmts: array(
-            0: Stmt_ClassConst(
-                flags: 0
-                consts: array(
-                    0: Const(
-                        name: Identifier(
-                            name: A
-                        )
-                        value: Scalar_String(
-                            value: B
-                        )
-                    )
-                    1: Const(
-                        name: Identifier(
-                            name: C
-                        )
-                        value: Scalar_String(
-                            value: D
-                        )
-                    )
-                )
-            )
-            1: Stmt_Property(
-                flags: MODIFIER_PUBLIC (1)
-                type: null
-                props: array(
-                    0: Stmt_PropertyProperty(
-                        name: VarLikeIdentifier(
-                            name: a
-                        )
-                        default: Scalar_String(
-                            value: b
-                        )
-                    )
-                    1: Stmt_PropertyProperty(
-                        name: VarLikeIdentifier(
-                            name: c
-                        )
-                        default: Scalar_String(
-                            value: d
-                        )
-                    )
-                )
-            )
-            2: Stmt_Property(
-                flags: MODIFIER_PROTECTED (2)
-                type: null
-                props: array(
-                    0: Stmt_PropertyProperty(
-                        name: VarLikeIdentifier(
-                            name: e
-                        )
-                        default: null
-                    )
-                )
-            )
-            3: Stmt_Property(
-                flags: MODIFIER_PRIVATE (4)
-                type: null
-                props: array(
-                    0: Stmt_PropertyProperty(
-                        name: VarLikeIdentifier(
-                            name: f
-                        )
-                        default: null
-                    )
-                )
-            )
-            4: Stmt_ClassMethod(
-                flags: MODIFIER_PUBLIC (1)
-                byRef: false
-                name: Identifier(
-                    name: a
-                )
-                params: array(
-                )
-                returnType: null
-                stmts: array(
-                )
-            )
-            5: Stmt_ClassMethod(
-                flags: MODIFIER_PUBLIC | MODIFIER_STATIC (9)
-                byRef: false
-                name: Identifier(
-                    name: b
-                )
-                params: array(
-                    0: Param(
-                        type: null
-                        byRef: false
-                        variadic: false
-                        var: Expr_Variable(
-                            name: a
-                        )
-                        default: null
-                    )
-                )
-                returnType: null
-                stmts: array(
-                )
-            )
-            6: Stmt_ClassMethod(
-                flags: MODIFIER_PUBLIC | MODIFIER_FINAL (33)
-                byRef: false
-                name: Identifier(
-                    name: c
-                )
-                params: array(
-                )
-                returnType: Name(
-                    parts: array(
-                        0: B
-                    )
-                )
-                stmts: array(
-                )
-            )
-            7: Stmt_ClassMethod(
-                flags: MODIFIER_PROTECTED (2)
-                byRef: false
-                name: Identifier(
-                    name: d
-                )
-                params: array(
-                )
-                returnType: null
-                stmts: array(
-                )
-            )
-            8: Stmt_ClassMethod(
-                flags: MODIFIER_PRIVATE (4)
-                byRef: false
-                name: Identifier(
-                    name: e
-                )
-                params: array(
-                )
-                returnType: null
-                stmts: array(
-                )
-            )
-        )
-    )
-)
\ No newline at end of file
diff --git a/vendor/nikic/php-parser/test/code/parser/stmt/class/staticMethod.test b/vendor/nikic/php-parser/test/code/parser/stmt/class/staticMethod.test
deleted file mode 100644
index 0540930e4f..0000000000
--- a/vendor/nikic/php-parser/test/code/parser/stmt/class/staticMethod.test
+++ /dev/null
@@ -1,175 +0,0 @@
-Some special methods cannot be static
------
-<?php class A { static function __construct() {} }
------
-Constructor __construct() cannot be static from 1:17 to 1:22
-array(
-    0: Stmt_Class(
-        flags: 0
-        name: Identifier(
-            name: A
-        )
-        extends: null
-        implements: array(
-        )
-        stmts: array(
-            0: Stmt_ClassMethod(
-                flags: MODIFIER_STATIC (8)
-                byRef: false
-                name: Identifier(
-                    name: __construct
-                )
-                params: array(
-                )
-                returnType: null
-                stmts: array(
-                )
-            )
-        )
-    )
-)
------
-<?php class A { static function __destruct() {} }
------
-Destructor __destruct() cannot be static from 1:17 to 1:22
-array(
-    0: Stmt_Class(
-        flags: 0
-        name: Identifier(
-            name: A
-        )
-        extends: null
-        implements: array(
-        )
-        stmts: array(
-            0: Stmt_ClassMethod(
-                flags: MODIFIER_STATIC (8)
-                byRef: false
-                name: Identifier(
-                    name: __destruct
-                )
-                params: array(
-                )
-                returnType: null
-                stmts: array(
-                )
-            )
-        )
-    )
-)
------
-<?php class A { static function __clone() {} }
------
-Clone method __clone() cannot be static from 1:17 to 1:22
-array(
-    0: Stmt_Class(
-        flags: 0
-        name: Identifier(
-            name: A
-        )
-        extends: null
-        implements: array(
-        )
-        stmts: array(
-            0: Stmt_ClassMethod(
-                flags: MODIFIER_STATIC (8)
-                byRef: false
-                name: Identifier(
-                    name: __clone
-                )
-                params: array(
-                )
-                returnType: null
-                stmts: array(
-                )
-            )
-        )
-    )
-)
------
-<?php class A { static function __CONSTRUCT() {} }
------
-Constructor __CONSTRUCT() cannot be static from 1:17 to 1:22
-array(
-    0: Stmt_Class(
-        flags: 0
-        name: Identifier(
-            name: A
-        )
-        extends: null
-        implements: array(
-        )
-        stmts: array(
-            0: Stmt_ClassMethod(
-                flags: MODIFIER_STATIC (8)
-                byRef: false
-                name: Identifier(
-                    name: __CONSTRUCT
-                )
-                params: array(
-                )
-                returnType: null
-                stmts: array(
-                )
-            )
-        )
-    )
-)
------
-<?php class A { static function __Destruct() {} }
------
-Destructor __Destruct() cannot be static from 1:17 to 1:22
-array(
-    0: Stmt_Class(
-        flags: 0
-        name: Identifier(
-            name: A
-        )
-        extends: null
-        implements: array(
-        )
-        stmts: array(
-            0: Stmt_ClassMethod(
-                flags: MODIFIER_STATIC (8)
-                byRef: false
-                name: Identifier(
-                    name: __Destruct
-                )
-                params: array(
-                )
-                returnType: null
-                stmts: array(
-                )
-            )
-        )
-    )
-)
------
-<?php class A { static function __cLoNe() {} }
------
-Clone method __cLoNe() cannot be static from 1:17 to 1:22
-array(
-    0: Stmt_Class(
-        flags: 0
-        name: Identifier(
-            name: A
-        )
-        extends: null
-        implements: array(
-        )
-        stmts: array(
-            0: Stmt_ClassMethod(
-                flags: MODIFIER_STATIC (8)
-                byRef: false
-                name: Identifier(
-                    name: __cLoNe
-                )
-                params: array(
-                )
-                returnType: null
-                stmts: array(
-                )
-            )
-        )
-    )
-)
\ No newline at end of file
diff --git a/vendor/nikic/php-parser/test/code/parser/stmt/class/trait.test b/vendor/nikic/php-parser/test/code/parser/stmt/class/trait.test
deleted file mode 100644
index bda3cc56d7..0000000000
--- a/vendor/nikic/php-parser/test/code/parser/stmt/class/trait.test
+++ /dev/null
@@ -1,188 +0,0 @@
-Traits
------
-<?php
-
-trait A {
-    public function a() {}
-}
-
-class B {
-    use C;
-    use D {
-        a as protected b;
-        c as d;
-        e as private;
-    }
-    use E, F, G {
-        E::a insteadof F, G;
-        E::b as protected c;
-        E::d as e;
-        E::f as private;
-    }
-}
------
-array(
-    0: Stmt_Trait(
-        name: Identifier(
-            name: A
-        )
-        stmts: array(
-            0: Stmt_ClassMethod(
-                flags: MODIFIER_PUBLIC (1)
-                byRef: false
-                name: Identifier(
-                    name: a
-                )
-                params: array(
-                )
-                returnType: null
-                stmts: array(
-                )
-            )
-        )
-    )
-    1: Stmt_Class(
-        flags: 0
-        name: Identifier(
-            name: B
-        )
-        extends: null
-        implements: array(
-        )
-        stmts: array(
-            0: Stmt_TraitUse(
-                traits: array(
-                    0: Name(
-                        parts: array(
-                            0: C
-                        )
-                    )
-                )
-                adaptations: array(
-                )
-            )
-            1: Stmt_TraitUse(
-                traits: array(
-                    0: Name(
-                        parts: array(
-                            0: D
-                        )
-                    )
-                )
-                adaptations: array(
-                    0: Stmt_TraitUseAdaptation_Alias(
-                        trait: null
-                        method: Identifier(
-                            name: a
-                        )
-                        newModifier: MODIFIER_PROTECTED (2)
-                        newName: Identifier(
-                            name: b
-                        )
-                    )
-                    1: Stmt_TraitUseAdaptation_Alias(
-                        trait: null
-                        method: Identifier(
-                            name: c
-                        )
-                        newModifier: null
-                        newName: Identifier(
-                            name: d
-                        )
-                    )
-                    2: Stmt_TraitUseAdaptation_Alias(
-                        trait: null
-                        method: Identifier(
-                            name: e
-                        )
-                        newModifier: MODIFIER_PRIVATE (4)
-                        newName: null
-                    )
-                )
-            )
-            2: Stmt_TraitUse(
-                traits: array(
-                    0: Name(
-                        parts: array(
-                            0: E
-                        )
-                    )
-                    1: Name(
-                        parts: array(
-                            0: F
-                        )
-                    )
-                    2: Name(
-                        parts: array(
-                            0: G
-                        )
-                    )
-                )
-                adaptations: array(
-                    0: Stmt_TraitUseAdaptation_Precedence(
-                        trait: Name(
-                            parts: array(
-                                0: E
-                            )
-                        )
-                        method: Identifier(
-                            name: a
-                        )
-                        insteadof: array(
-                            0: Name(
-                                parts: array(
-                                    0: F
-                                )
-                            )
-                            1: Name(
-                                parts: array(
-                                    0: G
-                                )
-                            )
-                        )
-                    )
-                    1: Stmt_TraitUseAdaptation_Alias(
-                        trait: Name(
-                            parts: array(
-                                0: E
-                            )
-                        )
-                        method: Identifier(
-                            name: b
-                        )
-                        newModifier: MODIFIER_PROTECTED (2)
-                        newName: Identifier(
-                            name: c
-                        )
-                    )
-                    2: Stmt_TraitUseAdaptation_Alias(
-                        trait: Name(
-                            parts: array(
-                                0: E
-                            )
-                        )
-                        method: Identifier(
-                            name: d
-                        )
-                        newModifier: null
-                        newName: Identifier(
-                            name: e
-                        )
-                    )
-                    3: Stmt_TraitUseAdaptation_Alias(
-                        trait: Name(
-                            parts: array(
-                                0: E
-                            )
-                        )
-                        method: Identifier(
-                            name: f
-                        )
-                        newModifier: MODIFIER_PRIVATE (4)
-                        newName: null
-                    )
-                )
-            )
-        )
-    )
-)
\ No newline at end of file
diff --git a/vendor/nikic/php-parser/test/code/parser/stmt/const.test b/vendor/nikic/php-parser/test/code/parser/stmt/const.test
deleted file mode 100644
index e6c4db84ff..0000000000
--- a/vendor/nikic/php-parser/test/code/parser/stmt/const.test
+++ /dev/null
@@ -1,48 +0,0 @@
-Global constants
------
-<?php
-
-const A = 0, B = 1.0, C = 'A', D = E;
------
-array(
-    0: Stmt_Const(
-        consts: array(
-            0: Const(
-                name: Identifier(
-                    name: A
-                )
-                value: Scalar_LNumber(
-                    value: 0
-                )
-            )
-            1: Const(
-                name: Identifier(
-                    name: B
-                )
-                value: Scalar_DNumber(
-                    value: 1
-                )
-            )
-            2: Const(
-                name: Identifier(
-                    name: C
-                )
-                value: Scalar_String(
-                    value: A
-                )
-            )
-            3: Const(
-                name: Identifier(
-                    name: D
-                )
-                value: Expr_ConstFetch(
-                    name: Name(
-                        parts: array(
-                            0: E
-                        )
-                    )
-                )
-            )
-        )
-    )
-)
\ No newline at end of file
diff --git a/vendor/nikic/php-parser/test/code/parser/stmt/controlFlow.test b/vendor/nikic/php-parser/test/code/parser/stmt/controlFlow.test
deleted file mode 100644
index d9c9fcf353..0000000000
--- a/vendor/nikic/php-parser/test/code/parser/stmt/controlFlow.test
+++ /dev/null
@@ -1,59 +0,0 @@
-Control flow statements
------
-<?php
-
-break;
-break 2;
-
-continue;
-continue 2;
-
-return;
-return $a;
-
-throw $e;
-
-label:
-goto label;
------
-array(
-    0: Stmt_Break(
-        num: null
-    )
-    1: Stmt_Break(
-        num: Scalar_LNumber(
-            value: 2
-        )
-    )
-    2: Stmt_Continue(
-        num: null
-    )
-    3: Stmt_Continue(
-        num: Scalar_LNumber(
-            value: 2
-        )
-    )
-    4: Stmt_Return(
-        expr: null
-    )
-    5: Stmt_Return(
-        expr: Expr_Variable(
-            name: a
-        )
-    )
-    6: Stmt_Throw(
-        expr: Expr_Variable(
-            name: e
-        )
-    )
-    7: Stmt_Label(
-        name: Identifier(
-            name: label
-        )
-    )
-    8: Stmt_Goto(
-        name: Identifier(
-            name: label
-        )
-    )
-)
\ No newline at end of file
diff --git a/vendor/nikic/php-parser/test/code/parser/stmt/declare.test b/vendor/nikic/php-parser/test/code/parser/stmt/declare.test
deleted file mode 100644
index f044d24f91..0000000000
--- a/vendor/nikic/php-parser/test/code/parser/stmt/declare.test
+++ /dev/null
@@ -1,70 +0,0 @@
-Declare
------
-<?php
-
-declare (X='Y');
-
-declare (A='B', C='D') {}
-
-declare (A='B', C='D'):
-enddeclare;
------
-array(
-    0: Stmt_Declare(
-        declares: array(
-            0: Stmt_DeclareDeclare(
-                key: Identifier(
-                    name: X
-                )
-                value: Scalar_String(
-                    value: Y
-                )
-            )
-        )
-        stmts: null
-    )
-    1: Stmt_Declare(
-        declares: array(
-            0: Stmt_DeclareDeclare(
-                key: Identifier(
-                    name: A
-                )
-                value: Scalar_String(
-                    value: B
-                )
-            )
-            1: Stmt_DeclareDeclare(
-                key: Identifier(
-                    name: C
-                )
-                value: Scalar_String(
-                    value: D
-                )
-            )
-        )
-        stmts: array(
-        )
-    )
-    2: Stmt_Declare(
-        declares: array(
-            0: Stmt_DeclareDeclare(
-                key: Identifier(
-                    name: A
-                )
-                value: Scalar_String(
-                    value: B
-                )
-            )
-            1: Stmt_DeclareDeclare(
-                key: Identifier(
-                    name: C
-                )
-                value: Scalar_String(
-                    value: D
-                )
-            )
-        )
-        stmts: array(
-        )
-    )
-)
\ No newline at end of file
diff --git a/vendor/nikic/php-parser/test/code/parser/stmt/echo.test b/vendor/nikic/php-parser/test/code/parser/stmt/echo.test
deleted file mode 100644
index 1d03eae5d0..0000000000
--- a/vendor/nikic/php-parser/test/code/parser/stmt/echo.test
+++ /dev/null
@@ -1,32 +0,0 @@
-Echo
------
-<?php
-
-echo 'Hallo World!';
-echo 'Hallo', ' ', 'World', '!';
------
-array(
-    0: Stmt_Echo(
-        exprs: array(
-            0: Scalar_String(
-                value: Hallo World!
-            )
-        )
-    )
-    1: Stmt_Echo(
-        exprs: array(
-            0: Scalar_String(
-                value: Hallo
-            )
-            1: Scalar_String(
-                value:
-            )
-            2: Scalar_String(
-                value: World
-            )
-            3: Scalar_String(
-                value: !
-            )
-        )
-    )
-)
\ No newline at end of file
diff --git a/vendor/nikic/php-parser/test/code/parser/stmt/function/builtinTypeDeclarations.test b/vendor/nikic/php-parser/test/code/parser/stmt/function/builtinTypeDeclarations.test
deleted file mode 100644
index b90fd019aa..0000000000
--- a/vendor/nikic/php-parser/test/code/parser/stmt/function/builtinTypeDeclarations.test
+++ /dev/null
@@ -1,87 +0,0 @@
-Scalar type declarations
------
-<?php
-function test(bool $a, Int $b, FLOAT $c, StRiNg $d, iterable $e, object $f) : void {}
------
-!!php7
-array(
-    0: Stmt_Function(
-        byRef: false
-        name: Identifier(
-            name: test
-        )
-        params: array(
-            0: Param(
-                type: Identifier(
-                    name: bool
-                )
-                byRef: false
-                variadic: false
-                var: Expr_Variable(
-                    name: a
-                )
-                default: null
-            )
-            1: Param(
-                type: Identifier(
-                    name: int
-                )
-                byRef: false
-                variadic: false
-                var: Expr_Variable(
-                    name: b
-                )
-                default: null
-            )
-            2: Param(
-                type: Identifier(
-                    name: float
-                )
-                byRef: false
-                variadic: false
-                var: Expr_Variable(
-                    name: c
-                )
-                default: null
-            )
-            3: Param(
-                type: Identifier(
-                    name: string
-                )
-                byRef: false
-                variadic: false
-                var: Expr_Variable(
-                    name: d
-                )
-                default: null
-            )
-            4: Param(
-                type: Identifier(
-                    name: iterable
-                )
-                byRef: false
-                variadic: false
-                var: Expr_Variable(
-                    name: e
-                )
-                default: null
-            )
-            5: Param(
-                type: Identifier(
-                    name: object
-                )
-                byRef: false
-                variadic: false
-                var: Expr_Variable(
-                    name: f
-                )
-                default: null
-            )
-        )
-        returnType: Identifier(
-            name: void
-        )
-        stmts: array(
-        )
-    )
-)
\ No newline at end of file
diff --git a/vendor/nikic/php-parser/test/code/parser/stmt/function/byRef.test b/vendor/nikic/php-parser/test/code/parser/stmt/function/byRef.test
deleted file mode 100644
index 4b276e734d..0000000000
--- a/vendor/nikic/php-parser/test/code/parser/stmt/function/byRef.test
+++ /dev/null
@@ -1,49 +0,0 @@
-Return and pass by ref
------
-<?php
-
-function a(&$b) {}
-function &a($b) {}
------
-array(
-    0: Stmt_Function(
-        byRef: false
-        name: Identifier(
-            name: a
-        )
-        params: array(
-            0: Param(
-                type: null
-                byRef: true
-                variadic: false
-                var: Expr_Variable(
-                    name: b
-                )
-                default: null
-            )
-        )
-        returnType: null
-        stmts: array(
-        )
-    )
-    1: Stmt_Function(
-        byRef: true
-        name: Identifier(
-            name: a
-        )
-        params: array(
-            0: Param(
-                type: null
-                byRef: false
-                variadic: false
-                var: Expr_Variable(
-                    name: b
-                )
-                default: null
-            )
-        )
-        returnType: null
-        stmts: array(
-        )
-    )
-)
\ No newline at end of file
diff --git a/vendor/nikic/php-parser/test/code/parser/stmt/function/conditional.test b/vendor/nikic/php-parser/test/code/parser/stmt/function/conditional.test
deleted file mode 100644
index 8495aad1f0..0000000000
--- a/vendor/nikic/php-parser/test/code/parser/stmt/function/conditional.test
+++ /dev/null
@@ -1,35 +0,0 @@
-Conditional function definition
------
-<?php
-
-if (true) {
-    function A() {}
-}
------
-array(
-    0: Stmt_If(
-        cond: Expr_ConstFetch(
-            name: Name(
-                parts: array(
-                    0: true
-                )
-            )
-        )
-        stmts: array(
-            0: Stmt_Function(
-                byRef: false
-                name: Identifier(
-                    name: A
-                )
-                params: array(
-                )
-                returnType: null
-                stmts: array(
-                )
-            )
-        )
-        elseifs: array(
-        )
-        else: null
-    )
-)
\ No newline at end of file
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
deleted file mode 100644
index 505cddfdc7..0000000000
--- a/vendor/nikic/php-parser/test/code/parser/stmt/function/defaultValues.test
+++ /dev/null
@@ -1,173 +0,0 @@
-Default values (static scalar tests)
------
-<?php
-
-function a(
-    $b = null,
-    $c = 'foo',
-    $d = A::B,
-    $f = +1,
-    $g = -1.0,
-    $h = array(),
-    $i = [],
-    $j = ['foo'],
-    $k = ['foo', 'bar' => 'baz']
-) {}
------
-array(
-    0: Stmt_Function(
-        byRef: false
-        name: Identifier(
-            name: a
-        )
-        params: array(
-            0: Param(
-                type: null
-                byRef: false
-                variadic: false
-                var: Expr_Variable(
-                    name: b
-                )
-                default: Expr_ConstFetch(
-                    name: Name(
-                        parts: array(
-                            0: null
-                        )
-                    )
-                )
-            )
-            1: Param(
-                type: null
-                byRef: false
-                variadic: false
-                var: Expr_Variable(
-                    name: c
-                )
-                default: Scalar_String(
-                    value: foo
-                )
-            )
-            2: Param(
-                type: null
-                byRef: false
-                variadic: false
-                var: Expr_Variable(
-                    name: d
-                )
-                default: Expr_ClassConstFetch(
-                    class: Name(
-                        parts: array(
-                            0: A
-                        )
-                    )
-                    name: Identifier(
-                        name: B
-                    )
-                )
-            )
-            3: Param(
-                type: null
-                byRef: false
-                variadic: false
-                var: Expr_Variable(
-                    name: f
-                )
-                default: Expr_UnaryPlus(
-                    expr: Scalar_LNumber(
-                        value: 1
-                    )
-                )
-            )
-            4: Param(
-                type: null
-                byRef: false
-                variadic: false
-                var: Expr_Variable(
-                    name: g
-                )
-                default: Expr_UnaryMinus(
-                    expr: Scalar_DNumber(
-                        value: 1
-                    )
-                )
-            )
-            5: Param(
-                type: null
-                byRef: false
-                variadic: false
-                var: Expr_Variable(
-                    name: h
-                )
-                default: Expr_Array(
-                    items: array(
-                    )
-                )
-            )
-            6: Param(
-                type: null
-                byRef: false
-                variadic: false
-                var: Expr_Variable(
-                    name: i
-                )
-                default: Expr_Array(
-                    items: array(
-                    )
-                )
-            )
-            7: Param(
-                type: null
-                byRef: false
-                variadic: false
-                var: Expr_Variable(
-                    name: j
-                )
-                default: Expr_Array(
-                    items: array(
-                        0: Expr_ArrayItem(
-                            key: null
-                            value: Scalar_String(
-                                value: foo
-                            )
-                            byRef: false
-                            unpack: false
-                        )
-                    )
-                )
-            )
-            8: Param(
-                type: null
-                byRef: false
-                variadic: false
-                var: Expr_Variable(
-                    name: k
-                )
-                default: Expr_Array(
-                    items: array(
-                        0: Expr_ArrayItem(
-                            key: null
-                            value: Scalar_String(
-                                value: foo
-                            )
-                            byRef: false
-                            unpack: false
-                        )
-                        1: Expr_ArrayItem(
-                            key: Scalar_String(
-                                value: bar
-                            )
-                            value: Scalar_String(
-                                value: baz
-                            )
-                            byRef: false
-                            unpack: false
-                        )
-                    )
-                )
-            )
-        )
-        returnType: null
-        stmts: array(
-        )
-    )
-)
\ No newline at end of file
diff --git a/vendor/nikic/php-parser/test/code/parser/stmt/function/nullableTypes.test b/vendor/nikic/php-parser/test/code/parser/stmt/function/nullableTypes.test
deleted file mode 100644
index 8bf2d31dab..0000000000
--- a/vendor/nikic/php-parser/test/code/parser/stmt/function/nullableTypes.test
+++ /dev/null
@@ -1,55 +0,0 @@
-Nullable types
------
-<?php
-
-function test(?Foo $bar, ?string $foo) : ?Baz {
-}
------
-!!php7
-array(
-    0: Stmt_Function(
-        byRef: false
-        name: Identifier(
-            name: test
-        )
-        params: array(
-            0: Param(
-                type: NullableType(
-                    type: Name(
-                        parts: array(
-                            0: Foo
-                        )
-                    )
-                )
-                byRef: false
-                variadic: false
-                var: Expr_Variable(
-                    name: bar
-                )
-                default: null
-            )
-            1: Param(
-                type: NullableType(
-                    type: Identifier(
-                        name: string
-                    )
-                )
-                byRef: false
-                variadic: false
-                var: Expr_Variable(
-                    name: foo
-                )
-                default: null
-            )
-        )
-        returnType: NullableType(
-            type: Name(
-                parts: array(
-                    0: Baz
-                )
-            )
-        )
-        stmts: array(
-        )
-    )
-)
\ No newline at end of file
diff --git a/vendor/nikic/php-parser/test/code/parser/stmt/function/returnTypes.test b/vendor/nikic/php-parser/test/code/parser/stmt/function/returnTypes.test
deleted file mode 100644
index 8b71595e7e..0000000000
--- a/vendor/nikic/php-parser/test/code/parser/stmt/function/returnTypes.test
+++ /dev/null
@@ -1,64 +0,0 @@
-Return type declarations
------
-<?php
-
-function test1() {}
-function test2() : array {}
-function test3() : callable {}
-function test4() : Foo\Bar {}
------
-array(
-    0: Stmt_Function(
-        byRef: false
-        name: Identifier(
-            name: test1
-        )
-        params: array(
-        )
-        returnType: null
-        stmts: array(
-        )
-    )
-    1: Stmt_Function(
-        byRef: false
-        name: Identifier(
-            name: test2
-        )
-        params: array(
-        )
-        returnType: Identifier(
-            name: array
-        )
-        stmts: array(
-        )
-    )
-    2: Stmt_Function(
-        byRef: false
-        name: Identifier(
-            name: test3
-        )
-        params: array(
-        )
-        returnType: Identifier(
-            name: callable
-        )
-        stmts: array(
-        )
-    )
-    3: Stmt_Function(
-        byRef: false
-        name: Identifier(
-            name: test4
-        )
-        params: array(
-        )
-        returnType: Name(
-            parts: array(
-                0: Foo
-                1: Bar
-            )
-        )
-        stmts: array(
-        )
-    )
-)
\ No newline at end of file
diff --git a/vendor/nikic/php-parser/test/code/parser/stmt/function/specialVars.test b/vendor/nikic/php-parser/test/code/parser/stmt/function/specialVars.test
deleted file mode 100644
index 10a9e0796e..0000000000
--- a/vendor/nikic/php-parser/test/code/parser/stmt/function/specialVars.test
+++ /dev/null
@@ -1,57 +0,0 @@
-Special function variables
------
-<?php
-
-function a() {
-    global $a, ${'b'}, $$c;
-    static $c, $d = 'e';
-}
------
-array(
-    0: Stmt_Function(
-        byRef: false
-        name: Identifier(
-            name: a
-        )
-        params: array(
-        )
-        returnType: null
-        stmts: array(
-            0: Stmt_Global(
-                vars: array(
-                    0: Expr_Variable(
-                        name: a
-                    )
-                    1: Expr_Variable(
-                        name: Scalar_String(
-                            value: b
-                        )
-                    )
-                    2: Expr_Variable(
-                        name: Expr_Variable(
-                            name: c
-                        )
-                    )
-                )
-            )
-            1: Stmt_Static(
-                vars: array(
-                    0: Stmt_StaticVar(
-                        var: Expr_Variable(
-                            name: c
-                        )
-                        default: null
-                    )
-                    1: Stmt_StaticVar(
-                        var: Expr_Variable(
-                            name: d
-                        )
-                        default: Scalar_String(
-                            value: e
-                        )
-                    )
-                )
-            )
-        )
-    )
-)
\ No newline at end of file
diff --git a/vendor/nikic/php-parser/test/code/parser/stmt/function/typeDeclarations.test b/vendor/nikic/php-parser/test/code/parser/stmt/function/typeDeclarations.test
deleted file mode 100644
index 8327cf32cd..0000000000
--- a/vendor/nikic/php-parser/test/code/parser/stmt/function/typeDeclarations.test
+++ /dev/null
@@ -1,63 +0,0 @@
-Type hints
------
-<?php
-
-function a($b, array $c, callable $d, E $f) {}
------
-array(
-    0: Stmt_Function(
-        byRef: false
-        name: Identifier(
-            name: a
-        )
-        params: array(
-            0: Param(
-                type: null
-                byRef: false
-                variadic: false
-                var: Expr_Variable(
-                    name: b
-                )
-                default: null
-            )
-            1: Param(
-                type: Identifier(
-                    name: array
-                )
-                byRef: false
-                variadic: false
-                var: Expr_Variable(
-                    name: c
-                )
-                default: null
-            )
-            2: Param(
-                type: Identifier(
-                    name: callable
-                )
-                byRef: false
-                variadic: false
-                var: Expr_Variable(
-                    name: d
-                )
-                default: null
-            )
-            3: Param(
-                type: Name(
-                    parts: array(
-                        0: E
-                    )
-                )
-                byRef: false
-                variadic: false
-                var: Expr_Variable(
-                    name: f
-                )
-                default: null
-            )
-        )
-        returnType: null
-        stmts: array(
-        )
-    )
-)
\ No newline at end of file
diff --git a/vendor/nikic/php-parser/test/code/parser/stmt/function/variadic.test b/vendor/nikic/php-parser/test/code/parser/stmt/function/variadic.test
deleted file mode 100644
index afbcf68fb2..0000000000
--- a/vendor/nikic/php-parser/test/code/parser/stmt/function/variadic.test
+++ /dev/null
@@ -1,134 +0,0 @@
-Variadic functions
------
-<?php
-function test($a, ... $b) {}
-function test($a, &... $b) {}
-function test($a, Type ... $b) {}
-function test($a, Type &... $b) {}
------
-array(
-    0: Stmt_Function(
-        byRef: false
-        name: Identifier(
-            name: test
-        )
-        params: array(
-            0: Param(
-                type: null
-                byRef: false
-                variadic: false
-                var: Expr_Variable(
-                    name: a
-                )
-                default: null
-            )
-            1: Param(
-                type: null
-                byRef: false
-                variadic: true
-                var: Expr_Variable(
-                    name: b
-                )
-                default: null
-            )
-        )
-        returnType: null
-        stmts: array(
-        )
-    )
-    1: Stmt_Function(
-        byRef: false
-        name: Identifier(
-            name: test
-        )
-        params: array(
-            0: Param(
-                type: null
-                byRef: false
-                variadic: false
-                var: Expr_Variable(
-                    name: a
-                )
-                default: null
-            )
-            1: Param(
-                type: null
-                byRef: true
-                variadic: true
-                var: Expr_Variable(
-                    name: b
-                )
-                default: null
-            )
-        )
-        returnType: null
-        stmts: array(
-        )
-    )
-    2: Stmt_Function(
-        byRef: false
-        name: Identifier(
-            name: test
-        )
-        params: array(
-            0: Param(
-                type: null
-                byRef: false
-                variadic: false
-                var: Expr_Variable(
-                    name: a
-                )
-                default: null
-            )
-            1: Param(
-                type: Name(
-                    parts: array(
-                        0: Type
-                    )
-                )
-                byRef: false
-                variadic: true
-                var: Expr_Variable(
-                    name: b
-                )
-                default: null
-            )
-        )
-        returnType: null
-        stmts: array(
-        )
-    )
-    3: Stmt_Function(
-        byRef: false
-        name: Identifier(
-            name: test
-        )
-        params: array(
-            0: Param(
-                type: null
-                byRef: false
-                variadic: false
-                var: Expr_Variable(
-                    name: a
-                )
-                default: null
-            )
-            1: Param(
-                type: Name(
-                    parts: array(
-                        0: Type
-                    )
-                )
-                byRef: true
-                variadic: true
-                var: Expr_Variable(
-                    name: b
-                )
-                default: null
-            )
-        )
-        returnType: null
-        stmts: array(
-        )
-    )
-)
\ No newline at end of file
diff --git a/vendor/nikic/php-parser/test/code/parser/stmt/function/variadicDefaultValue.test b/vendor/nikic/php-parser/test/code/parser/stmt/function/variadicDefaultValue.test
deleted file mode 100644
index 0431f39ac1..0000000000
--- a/vendor/nikic/php-parser/test/code/parser/stmt/function/variadicDefaultValue.test
+++ /dev/null
@@ -1,31 +0,0 @@
-Invalid variadic function
------
-<?php
-function foo(...$foo = []) {}
------
-Variadic parameter cannot have a default value from 2:24 to 2:25
-array(
-    0: Stmt_Function(
-        byRef: false
-        name: Identifier(
-            name: foo
-        )
-        params: array(
-            0: Param(
-                type: null
-                byRef: false
-                variadic: true
-                var: Expr_Variable(
-                    name: foo
-                )
-                default: Expr_Array(
-                    items: array(
-                    )
-                )
-            )
-        )
-        returnType: null
-        stmts: array(
-        )
-    )
-)
\ No newline at end of file
diff --git a/vendor/nikic/php-parser/test/code/parser/stmt/generator/basic.test b/vendor/nikic/php-parser/test/code/parser/stmt/generator/basic.test
deleted file mode 100644
index 78ea9c09ee..0000000000
--- a/vendor/nikic/php-parser/test/code/parser/stmt/generator/basic.test
+++ /dev/null
@@ -1,319 +0,0 @@
-Generators (yield expression)
------
-<?php
-
-function gen() {
-    // statements
-    yield;
-    yield $value;
-    yield $key => $value;
-
-    // expressions
-    $data = yield;
-    $data = (yield $value);
-    $data = (yield $key => $value);
-
-    // yield in language constructs with their own parentheses
-    if (yield $foo); elseif (yield $foo);
-    if (yield $foo): elseif (yield $foo): endif;
-    while (yield $foo);
-    do {} while (yield $foo);
-    switch (yield $foo) {}
-    die(yield $foo);
-
-    // yield in function calls
-    func(yield $foo);
-    $foo->func(yield $foo);
-    new Foo(yield $foo);
-
-    yield from $foo;
-    yield from $foo and yield from $bar;
-    yield from $foo + $bar;
-}
------
-array(
-    0: Stmt_Function(
-        byRef: false
-        name: Identifier(
-            name: gen
-        )
-        params: array(
-        )
-        returnType: null
-        stmts: array(
-            0: Stmt_Expression(
-                expr: Expr_Yield(
-                    key: null
-                    value: null
-                    comments: array(
-                        0: // statements
-                    )
-                )
-                comments: array(
-                    0: // statements
-                )
-            )
-            1: Stmt_Expression(
-                expr: Expr_Yield(
-                    key: null
-                    value: Expr_Variable(
-                        name: value
-                    )
-                )
-            )
-            2: Stmt_Expression(
-                expr: Expr_Yield(
-                    key: Expr_Variable(
-                        name: key
-                    )
-                    value: Expr_Variable(
-                        name: value
-                    )
-                )
-            )
-            3: Stmt_Expression(
-                expr: Expr_Assign(
-                    var: Expr_Variable(
-                        name: data
-                        comments: array(
-                            0: // expressions
-                        )
-                    )
-                    expr: Expr_Yield(
-                        key: null
-                        value: null
-                    )
-                    comments: array(
-                        0: // expressions
-                    )
-                )
-                comments: array(
-                    0: // expressions
-                )
-            )
-            4: Stmt_Expression(
-                expr: Expr_Assign(
-                    var: Expr_Variable(
-                        name: data
-                    )
-                    expr: Expr_Yield(
-                        key: null
-                        value: Expr_Variable(
-                            name: value
-                        )
-                    )
-                )
-            )
-            5: Stmt_Expression(
-                expr: Expr_Assign(
-                    var: Expr_Variable(
-                        name: data
-                    )
-                    expr: Expr_Yield(
-                        key: Expr_Variable(
-                            name: key
-                        )
-                        value: Expr_Variable(
-                            name: value
-                        )
-                    )
-                )
-            )
-            6: Stmt_If(
-                cond: Expr_Yield(
-                    key: null
-                    value: Expr_Variable(
-                        name: foo
-                    )
-                )
-                stmts: array(
-                )
-                elseifs: array(
-                    0: Stmt_ElseIf(
-                        cond: Expr_Yield(
-                            key: null
-                            value: Expr_Variable(
-                                name: foo
-                            )
-                        )
-                        stmts: array(
-                        )
-                    )
-                )
-                else: null
-                comments: array(
-                    0: // yield in language constructs with their own parentheses
-                )
-            )
-            7: Stmt_If(
-                cond: Expr_Yield(
-                    key: null
-                    value: Expr_Variable(
-                        name: foo
-                    )
-                )
-                stmts: array(
-                )
-                elseifs: array(
-                    0: Stmt_ElseIf(
-                        cond: Expr_Yield(
-                            key: null
-                            value: Expr_Variable(
-                                name: foo
-                            )
-                        )
-                        stmts: array(
-                        )
-                    )
-                )
-                else: null
-            )
-            8: Stmt_While(
-                cond: Expr_Yield(
-                    key: null
-                    value: Expr_Variable(
-                        name: foo
-                    )
-                )
-                stmts: array(
-                )
-            )
-            9: Stmt_Do(
-                stmts: array(
-                )
-                cond: Expr_Yield(
-                    key: null
-                    value: Expr_Variable(
-                        name: foo
-                    )
-                )
-            )
-            10: Stmt_Switch(
-                cond: Expr_Yield(
-                    key: null
-                    value: Expr_Variable(
-                        name: foo
-                    )
-                )
-                cases: array(
-                )
-            )
-            11: Stmt_Expression(
-                expr: Expr_Exit(
-                    expr: Expr_Yield(
-                        key: null
-                        value: Expr_Variable(
-                            name: foo
-                        )
-                    )
-                )
-            )
-            12: Stmt_Expression(
-                expr: Expr_FuncCall(
-                    name: Name(
-                        parts: array(
-                            0: func
-                        )
-                        comments: array(
-                            0: // yield in function calls
-                        )
-                    )
-                    args: array(
-                        0: Arg(
-                            value: Expr_Yield(
-                                key: null
-                                value: Expr_Variable(
-                                    name: foo
-                                )
-                            )
-                            byRef: false
-                            unpack: false
-                        )
-                    )
-                    comments: array(
-                        0: // yield in function calls
-                    )
-                )
-                comments: array(
-                    0: // yield in function calls
-                )
-            )
-            13: Stmt_Expression(
-                expr: Expr_MethodCall(
-                    var: Expr_Variable(
-                        name: foo
-                    )
-                    name: Identifier(
-                        name: func
-                    )
-                    args: array(
-                        0: Arg(
-                            value: Expr_Yield(
-                                key: null
-                                value: Expr_Variable(
-                                    name: foo
-                                )
-                            )
-                            byRef: false
-                            unpack: false
-                        )
-                    )
-                )
-            )
-            14: Stmt_Expression(
-                expr: Expr_New(
-                    class: Name(
-                        parts: array(
-                            0: Foo
-                        )
-                    )
-                    args: array(
-                        0: Arg(
-                            value: Expr_Yield(
-                                key: null
-                                value: Expr_Variable(
-                                    name: foo
-                                )
-                            )
-                            byRef: false
-                            unpack: false
-                        )
-                    )
-                )
-            )
-            15: Stmt_Expression(
-                expr: Expr_YieldFrom(
-                    expr: Expr_Variable(
-                        name: foo
-                    )
-                )
-            )
-            16: Stmt_Expression(
-                expr: Expr_BinaryOp_LogicalAnd(
-                    left: Expr_YieldFrom(
-                        expr: Expr_Variable(
-                            name: foo
-                        )
-                    )
-                    right: Expr_YieldFrom(
-                        expr: Expr_Variable(
-                            name: bar
-                        )
-                    )
-                )
-            )
-            17: Stmt_Expression(
-                expr: Expr_YieldFrom(
-                    expr: Expr_BinaryOp_Plus(
-                        left: Expr_Variable(
-                            name: foo
-                        )
-                        right: Expr_Variable(
-                            name: bar
-                        )
-                    )
-                )
-            )
-        )
-    )
-)
\ No newline at end of file
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
deleted file mode 100644
index ce2b6374d6..0000000000
--- a/vendor/nikic/php-parser/test/code/parser/stmt/generator/yieldPrecedence.test
+++ /dev/null
@@ -1,253 +0,0 @@
-Yield operator precedence
------
-<?php
-
-function gen() {
-    yield "a" . "b";
-    yield "a" or die;
-    yield "k" => "a" . "b";
-    yield "k" => "a" or die;
-    var_dump([yield "k" => "a" . "b"]);
-    yield yield "k1" => yield "k2" => "a" . "b";
-    yield yield "k1" => (yield "k2") => "a" . "b";
-    var_dump([yield "k1" => yield "k2" => "a" . "b"]);
-    var_dump([yield "k1" => (yield "k2") => "a" . "b"]);
-}
------
-!!php7
-array(
-    0: Stmt_Function(
-        byRef: false
-        name: Identifier(
-            name: gen
-        )
-        params: array(
-        )
-        returnType: null
-        stmts: array(
-            0: Stmt_Expression(
-                expr: Expr_Yield(
-                    key: null
-                    value: Expr_BinaryOp_Concat(
-                        left: Scalar_String(
-                            value: a
-                        )
-                        right: Scalar_String(
-                            value: b
-                        )
-                    )
-                )
-            )
-            1: Stmt_Expression(
-                expr: Expr_BinaryOp_LogicalOr(
-                    left: Expr_Yield(
-                        key: null
-                        value: Scalar_String(
-                            value: a
-                        )
-                    )
-                    right: Expr_Exit(
-                        expr: null
-                    )
-                )
-            )
-            2: Stmt_Expression(
-                expr: Expr_Yield(
-                    key: Scalar_String(
-                        value: k
-                    )
-                    value: Expr_BinaryOp_Concat(
-                        left: Scalar_String(
-                            value: a
-                        )
-                        right: Scalar_String(
-                            value: b
-                        )
-                    )
-                )
-            )
-            3: Stmt_Expression(
-                expr: Expr_BinaryOp_LogicalOr(
-                    left: Expr_Yield(
-                        key: Scalar_String(
-                            value: k
-                        )
-                        value: Scalar_String(
-                            value: a
-                        )
-                    )
-                    right: Expr_Exit(
-                        expr: null
-                    )
-                )
-            )
-            4: Stmt_Expression(
-                expr: Expr_FuncCall(
-                    name: Name(
-                        parts: array(
-                            0: var_dump
-                        )
-                    )
-                    args: array(
-                        0: Arg(
-                            value: Expr_Array(
-                                items: array(
-                                    0: Expr_ArrayItem(
-                                        key: null
-                                        value: Expr_Yield(
-                                            key: Scalar_String(
-                                                value: k
-                                            )
-                                            value: Expr_BinaryOp_Concat(
-                                                left: Scalar_String(
-                                                    value: a
-                                                )
-                                                right: Scalar_String(
-                                                    value: b
-                                                )
-                                            )
-                                        )
-                                        byRef: false
-                                        unpack: false
-                                    )
-                                )
-                            )
-                            byRef: false
-                            unpack: false
-                        )
-                    )
-                )
-            )
-            5: Stmt_Expression(
-                expr: Expr_Yield(
-                    key: null
-                    value: Expr_Yield(
-                        key: Scalar_String(
-                            value: k1
-                        )
-                        value: Expr_Yield(
-                            key: Scalar_String(
-                                value: k2
-                            )
-                            value: Expr_BinaryOp_Concat(
-                                left: Scalar_String(
-                                    value: a
-                                )
-                                right: Scalar_String(
-                                    value: b
-                                )
-                            )
-                        )
-                    )
-                )
-            )
-            6: Stmt_Expression(
-                expr: Expr_Yield(
-                    key: Expr_Yield(
-                        key: Scalar_String(
-                            value: k1
-                        )
-                        value: Expr_Yield(
-                            key: null
-                            value: Scalar_String(
-                                value: k2
-                            )
-                        )
-                    )
-                    value: Expr_BinaryOp_Concat(
-                        left: Scalar_String(
-                            value: a
-                        )
-                        right: Scalar_String(
-                            value: b
-                        )
-                    )
-                )
-            )
-            7: Stmt_Expression(
-                expr: Expr_FuncCall(
-                    name: Name(
-                        parts: array(
-                            0: var_dump
-                        )
-                    )
-                    args: array(
-                        0: Arg(
-                            value: Expr_Array(
-                                items: array(
-                                    0: Expr_ArrayItem(
-                                        key: null
-                                        value: Expr_Yield(
-                                            key: Scalar_String(
-                                                value: k1
-                                            )
-                                            value: Expr_Yield(
-                                                key: Scalar_String(
-                                                    value: k2
-                                                )
-                                                value: Expr_BinaryOp_Concat(
-                                                    left: Scalar_String(
-                                                        value: a
-                                                    )
-                                                    right: Scalar_String(
-                                                        value: b
-                                                    )
-                                                )
-                                            )
-                                        )
-                                        byRef: false
-                                        unpack: false
-                                    )
-                                )
-                            )
-                            byRef: false
-                            unpack: false
-                        )
-                    )
-                )
-            )
-            8: Stmt_Expression(
-                expr: Expr_FuncCall(
-                    name: Name(
-                        parts: array(
-                            0: var_dump
-                        )
-                    )
-                    args: array(
-                        0: Arg(
-                            value: Expr_Array(
-                                items: array(
-                                    0: Expr_ArrayItem(
-                                        key: Expr_Yield(
-                                            key: Scalar_String(
-                                                value: k1
-                                            )
-                                            value: Expr_Yield(
-                                                key: null
-                                                value: Scalar_String(
-                                                    value: k2
-                                                )
-                                            )
-                                        )
-                                        value: Expr_BinaryOp_Concat(
-                                            left: Scalar_String(
-                                                value: a
-                                            )
-                                            right: Scalar_String(
-                                                value: b
-                                            )
-                                        )
-                                        byRef: false
-                                        unpack: false
-                                    )
-                                )
-                            )
-                            byRef: false
-                            unpack: false
-                        )
-                    )
-                )
-            )
-        )
-    )
-)
\ No newline at end of file
diff --git a/vendor/nikic/php-parser/test/code/parser/stmt/generator/yieldUnaryPrecedence.test b/vendor/nikic/php-parser/test/code/parser/stmt/generator/yieldUnaryPrecedence.test
deleted file mode 100644
index 6b77d3357a..0000000000
--- a/vendor/nikic/php-parser/test/code/parser/stmt/generator/yieldUnaryPrecedence.test
+++ /dev/null
@@ -1,56 +0,0 @@
-Yield with unary operator argument
------
-<?php
-
-function gen() {
-    yield +1;
-    yield -1;
-    yield * -1;
-}
------
-array(
-    0: Stmt_Function(
-        byRef: false
-        name: Identifier(
-            name: gen
-        )
-        params: array(
-        )
-        returnType: null
-        stmts: array(
-            0: Stmt_Expression(
-                expr: Expr_Yield(
-                    key: null
-                    value: Expr_UnaryPlus(
-                        expr: Scalar_LNumber(
-                            value: 1
-                        )
-                    )
-                )
-            )
-            1: Stmt_Expression(
-                expr: Expr_Yield(
-                    key: null
-                    value: Expr_UnaryMinus(
-                        expr: Scalar_LNumber(
-                            value: 1
-                        )
-                    )
-                )
-            )
-            2: Stmt_Expression(
-                expr: Expr_BinaryOp_Mul(
-                    left: Expr_Yield(
-                        key: null
-                        value: null
-                    )
-                    right: Expr_UnaryMinus(
-                        expr: Scalar_LNumber(
-                            value: 1
-                        )
-                    )
-                )
-            )
-        )
-    )
-)
\ No newline at end of file
diff --git a/vendor/nikic/php-parser/test/code/parser/stmt/haltCompiler.test b/vendor/nikic/php-parser/test/code/parser/stmt/haltCompiler.test
deleted file mode 100644
index 112946ea7c..0000000000
--- a/vendor/nikic/php-parser/test/code/parser/stmt/haltCompiler.test
+++ /dev/null
@@ -1,61 +0,0 @@
-__halt_compiler
------
-<?php
-
-$a;
-__halt_compiler()
-?>
-Hallo World!
------
-array(
-    0: Stmt_Expression(
-        expr: Expr_Variable(
-            name: a
-        )
-    )
-    1: Stmt_HaltCompiler(
-        remaining: Hallo World!
-    )
-)
------
-<?php
-
-$a;
-__halt_compiler();Hallo World!
------
-array(
-    0: Stmt_Expression(
-        expr: Expr_Variable(
-            name: a
-        )
-    )
-    1: Stmt_HaltCompiler(
-        remaining: Hallo World!
-    )
-)
------
-<?php
-
-namespace A;
-$a;
-__halt_compiler();
------
-array(
-    0: Stmt_Namespace(
-        name: Name(
-            parts: array(
-                0: A
-            )
-        )
-        stmts: array(
-            0: Stmt_Expression(
-                expr: Expr_Variable(
-                    name: a
-                )
-            )
-        )
-    )
-    1: Stmt_HaltCompiler(
-        remaining:
-    )
-)
\ No newline at end of file
diff --git a/vendor/nikic/php-parser/test/code/parser/stmt/haltCompilerInvalidSyntax.test b/vendor/nikic/php-parser/test/code/parser/stmt/haltCompilerInvalidSyntax.test
deleted file mode 100644
index 381019a9bf..0000000000
--- a/vendor/nikic/php-parser/test/code/parser/stmt/haltCompilerInvalidSyntax.test
+++ /dev/null
@@ -1,6 +0,0 @@
-Invalid __halt_compiler() syntax
------
-<?php
-__halt_compiler()
------
-__HALT_COMPILER must be followed by "();" on line 2
\ No newline at end of file
diff --git a/vendor/nikic/php-parser/test/code/parser/stmt/haltCompilerOffset.test b/vendor/nikic/php-parser/test/code/parser/stmt/haltCompilerOffset.test
deleted file mode 100644
index 16b902938d..0000000000
--- a/vendor/nikic/php-parser/test/code/parser/stmt/haltCompilerOffset.test
+++ /dev/null
@@ -1,36 +0,0 @@
-Use of __HALT_COMPILER_OFFSET__ constant
------
-<?php
-
-var_dump(__HALT_COMPILER_OFFSET__);
-__halt_compiler();
-Foo
------
-array(
-    0: Stmt_Expression(
-        expr: Expr_FuncCall(
-            name: Name(
-                parts: array(
-                    0: var_dump
-                )
-            )
-            args: array(
-                0: Arg(
-                    value: Expr_ConstFetch(
-                        name: Name(
-                            parts: array(
-                                0: __HALT_COMPILER_OFFSET__
-                            )
-                        )
-                    )
-                    byRef: false
-                    unpack: false
-                )
-            )
-        )
-    )
-    1: Stmt_HaltCompiler(
-        remaining:
-    Foo
-    )
-)
\ No newline at end of file
diff --git a/vendor/nikic/php-parser/test/code/parser/stmt/haltCompilerOutermostScope.test b/vendor/nikic/php-parser/test/code/parser/stmt/haltCompilerOutermostScope.test
deleted file mode 100644
index fddb6191d3..0000000000
--- a/vendor/nikic/php-parser/test/code/parser/stmt/haltCompilerOutermostScope.test
+++ /dev/null
@@ -1,8 +0,0 @@
-__halt_compiler can only be used from outermost scope
------
-<?php
-if (true) {
-    __halt_compiler();
-}
------
-__HALT_COMPILER() can only be used from the outermost scope from 3:5 to 3:19
\ No newline at end of file
diff --git a/vendor/nikic/php-parser/test/code/parser/stmt/hashbang.test b/vendor/nikic/php-parser/test/code/parser/stmt/hashbang.test
deleted file mode 100644
index 60eff65216..0000000000
--- a/vendor/nikic/php-parser/test/code/parser/stmt/hashbang.test
+++ /dev/null
@@ -1,26 +0,0 @@
-Hashbang line
------
-#!/usr/bin/env php
-<?php
-
-echo "foobar";
-
-?>
-#!/usr/bin/env php
------
-array(
-    0: Stmt_InlineHTML(
-        value: #!/usr/bin/env php
-
-    )
-    1: Stmt_Echo(
-        exprs: array(
-            0: Scalar_String(
-                value: foobar
-            )
-        )
-    )
-    2: Stmt_InlineHTML(
-        value: #!/usr/bin/env php
-    )
-)
\ No newline at end of file
diff --git a/vendor/nikic/php-parser/test/code/parser/stmt/if.test b/vendor/nikic/php-parser/test/code/parser/stmt/if.test
deleted file mode 100644
index e054c89766..0000000000
--- a/vendor/nikic/php-parser/test/code/parser/stmt/if.test
+++ /dev/null
@@ -1,103 +0,0 @@
-If/Elseif/Else
------
-<?php
-
-if      ($a) {}
-elseif  ($b) {}
-elseif  ($c) {}
-else         {}
-
-if ($a) {} // without else
-
-if      ($a):
-elseif  ($b):
-elseif  ($c):
-else        :
-endif;
-
-if ($a): endif; // without else
------
-array(
-    0: Stmt_If(
-        cond: Expr_Variable(
-            name: a
-        )
-        stmts: array(
-        )
-        elseifs: array(
-            0: Stmt_ElseIf(
-                cond: Expr_Variable(
-                    name: b
-                )
-                stmts: array(
-                )
-            )
-            1: Stmt_ElseIf(
-                cond: Expr_Variable(
-                    name: c
-                )
-                stmts: array(
-                )
-            )
-        )
-        else: Stmt_Else(
-            stmts: array(
-            )
-        )
-    )
-    1: Stmt_If(
-        cond: Expr_Variable(
-            name: a
-        )
-        stmts: array(
-        )
-        elseifs: array(
-        )
-        else: null
-    )
-    2: Stmt_If(
-        cond: Expr_Variable(
-            name: a
-        )
-        stmts: array(
-        )
-        elseifs: array(
-            0: Stmt_ElseIf(
-                cond: Expr_Variable(
-                    name: b
-                )
-                stmts: array(
-                )
-            )
-            1: Stmt_ElseIf(
-                cond: Expr_Variable(
-                    name: c
-                )
-                stmts: array(
-                )
-            )
-        )
-        else: Stmt_Else(
-            stmts: array(
-            )
-        )
-        comments: array(
-            0: // without else
-        )
-    )
-    3: Stmt_If(
-        cond: Expr_Variable(
-            name: a
-        )
-        stmts: array(
-        )
-        elseifs: array(
-        )
-        else: null
-    )
-    4: Stmt_Nop(
-        comments: array(
-            0: // without else
-        )
-    )
-)
\ No newline at end of file
diff --git a/vendor/nikic/php-parser/test/code/parser/stmt/inlineHTML.test b/vendor/nikic/php-parser/test/code/parser/stmt/inlineHTML.test
deleted file mode 100644
index a7e543cfcd..0000000000
--- a/vendor/nikic/php-parser/test/code/parser/stmt/inlineHTML.test
+++ /dev/null
@@ -1,33 +0,0 @@
-Inline HTML
------
-<?php
-$a;
-?>
-B
-<?php
-$c;
-?>
-<?php
-$d;
------
-array(
-    0: Stmt_Expression(
-        expr: Expr_Variable(
-            name: a
-        )
-    )
-    1: Stmt_InlineHTML(
-        value: B
-
-    )
-    2: Stmt_Expression(
-        expr: Expr_Variable(
-            name: c
-        )
-    )
-    3: Stmt_Expression(
-        expr: Expr_Variable(
-            name: d
-        )
-    )
-)
\ No newline at end of file
diff --git a/vendor/nikic/php-parser/test/code/parser/stmt/loop/do.test b/vendor/nikic/php-parser/test/code/parser/stmt/loop/do.test
deleted file mode 100644
index 76c8081082..0000000000
--- a/vendor/nikic/php-parser/test/code/parser/stmt/loop/do.test
+++ /dev/null
@@ -1,17 +0,0 @@
-Do loop
------
-<?php
-
-do {
-
-} while ($a);
------
-array(
-    0: Stmt_Do(
-        stmts: array(
-        )
-        cond: Expr_Variable(
-            name: a
-        )
-    )
-)
\ No newline at end of file
diff --git a/vendor/nikic/php-parser/test/code/parser/stmt/loop/for.test b/vendor/nikic/php-parser/test/code/parser/stmt/loop/for.test
deleted file mode 100644
index c942d311e6..0000000000
--- a/vendor/nikic/php-parser/test/code/parser/stmt/loop/for.test
+++ /dev/null
@@ -1,110 +0,0 @@
-For loop
------
-<?php
-
-// "classical" loop
-for ($i = 0; $i < $c; ++$i) {}
-
-// multiple expressions
-for ($a, $b; $c, $d; $e, $f) {}
-
-// infinite loop
-for (;;) {}
-
-// alternative syntax
-for (;;):
-endfor;
------
-array(
-    0: Stmt_For(
-        init: array(
-            0: Expr_Assign(
-                var: Expr_Variable(
-                    name: i
-                )
-                expr: Scalar_LNumber(
-                    value: 0
-                )
-            )
-        )
-        cond: array(
-            0: Expr_BinaryOp_Smaller(
-                left: Expr_Variable(
-                    name: i
-                )
-                right: Expr_Variable(
-                    name: c
-                )
-            )
-        )
-        loop: array(
-            0: Expr_PreInc(
-                var: Expr_Variable(
-                    name: i
-                )
-            )
-        )
-        stmts: array(
-        )
-        comments: array(
-            0: // "classical" loop
-        )
-    )
-    1: Stmt_For(
-        init: array(
-            0: Expr_Variable(
-                name: a
-            )
-            1: Expr_Variable(
-                name: b
-            )
-        )
-        cond: array(
-            0: Expr_Variable(
-                name: c
-            )
-            1: Expr_Variable(
-                name: d
-            )
-        )
-        loop: array(
-            0: Expr_Variable(
-                name: e
-            )
-            1: Expr_Variable(
-                name: f
-            )
-        )
-        stmts: array(
-        )
-        comments: array(
-            0: // multiple expressions
-        )
-    )
-    2: Stmt_For(
-        init: array(
-        )
-        cond: array(
-        )
-        loop: array(
-        )
-        stmts: array(
-        )
-        comments: array(
-            0: // infinite loop
-        )
-    )
-    3: Stmt_For(
-        init: array(
-        )
-        cond: array(
-        )
-        loop: array(
-        )
-        stmts: array(
-        )
-        comments: array(
-            0: // alternative syntax
-        )
-    )
-)
\ No newline at end of file
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
deleted file mode 100644
index 2dc802fc0c..0000000000
--- a/vendor/nikic/php-parser/test/code/parser/stmt/loop/foreach.test
+++ /dev/null
@@ -1,168 +0,0 @@
-Foreach loop
------
-<?php
-
-// foreach on variable
-foreach ($a as $b)  {}
-foreach ($a as &$b) {}
-foreach ($a as $b => $c) {}
-foreach ($a as $b => &$c) {}
-foreach ($a as list($a, $b)) {}
-foreach ($a as $a => list($b, , $c)) {}
-
-// foreach on expression
-foreach (array() as $b) {}
-
-// alternative syntax
-foreach ($a as $b):
-endforeach;
------
-array(
-    0: Stmt_Foreach(
-        expr: Expr_Variable(
-            name: a
-        )
-        keyVar: null
-        byRef: false
-        valueVar: Expr_Variable(
-            name: b
-        )
-        stmts: array(
-        )
-        comments: array(
-            0: // foreach on variable
-        )
-    )
-    1: Stmt_Foreach(
-        expr: Expr_Variable(
-            name: a
-        )
-        keyVar: null
-        byRef: true
-        valueVar: Expr_Variable(
-            name: b
-        )
-        stmts: array(
-        )
-    )
-    2: Stmt_Foreach(
-        expr: Expr_Variable(
-            name: a
-        )
-        keyVar: Expr_Variable(
-            name: b
-        )
-        byRef: false
-        valueVar: Expr_Variable(
-            name: c
-        )
-        stmts: array(
-        )
-    )
-    3: Stmt_Foreach(
-        expr: Expr_Variable(
-            name: a
-        )
-        keyVar: Expr_Variable(
-            name: b
-        )
-        byRef: true
-        valueVar: Expr_Variable(
-            name: c
-        )
-        stmts: array(
-        )
-    )
-    4: Stmt_Foreach(
-        expr: Expr_Variable(
-            name: a
-        )
-        keyVar: null
-        byRef: false
-        valueVar: Expr_List(
-            items: array(
-                0: Expr_ArrayItem(
-                    key: null
-                    value: Expr_Variable(
-                        name: a
-                    )
-                    byRef: false
-                    unpack: false
-                )
-                1: Expr_ArrayItem(
-                    key: null
-                    value: Expr_Variable(
-                        name: b
-                    )
-                    byRef: false
-                    unpack: false
-                )
-            )
-        )
-        stmts: array(
-        )
-    )
-    5: Stmt_Foreach(
-        expr: Expr_Variable(
-            name: a
-        )
-        keyVar: Expr_Variable(
-            name: a
-        )
-        byRef: false
-        valueVar: Expr_List(
-            items: array(
-                0: Expr_ArrayItem(
-                    key: null
-                    value: Expr_Variable(
-                        name: b
-                    )
-                    byRef: false
-                    unpack: false
-                )
-                1: null
-                2: Expr_ArrayItem(
-                    key: null
-                    value: Expr_Variable(
-                        name: c
-                    )
-                    byRef: false
-                    unpack: false
-                )
-            )
-        )
-        stmts: array(
-        )
-    )
-    6: Stmt_Foreach(
-        expr: Expr_Array(
-            items: array(
-            )
-        )
-        keyVar: null
-        byRef: false
-        valueVar: Expr_Variable(
-            name: b
-        )
-        stmts: array(
-        )
-        comments: array(
-            0: // foreach on expression
-        )
-    )
-    7: Stmt_Foreach(
-        expr: Expr_Variable(
-            name: a
-        )
-        keyVar: null
-        byRef: false
-        valueVar: Expr_Variable(
-            name: b
-        )
-        stmts: array(
-        )
-        comments: array(
-            0: // alternative syntax
-        )
-    )
-)
\ No newline at end of file
diff --git a/vendor/nikic/php-parser/test/code/parser/stmt/loop/while.test b/vendor/nikic/php-parser/test/code/parser/stmt/loop/while.test
deleted file mode 100644
index 65f6b2336f..0000000000
--- a/vendor/nikic/php-parser/test/code/parser/stmt/loop/while.test
+++ /dev/null
@@ -1,25 +0,0 @@
-While loop
------
-<?php
-
-while ($a) {}
-
-while ($a):
-endwhile;
------
-array(
-    0: Stmt_While(
-        cond: Expr_Variable(
-            name: a
-        )
-        stmts: array(
-        )
-    )
-    1: Stmt_While(
-        cond: Expr_Variable(
-            name: a
-        )
-        stmts: array(
-        )
-    )
-)
\ No newline at end of file
diff --git a/vendor/nikic/php-parser/test/code/parser/stmt/multiCatch.test b/vendor/nikic/php-parser/test/code/parser/stmt/multiCatch.test
deleted file mode 100644
index f7cfb3c6b8..0000000000
--- a/vendor/nikic/php-parser/test/code/parser/stmt/multiCatch.test
+++ /dev/null
@@ -1,75 +0,0 @@
-Try/catch with multiple classes
------
-<?php
-try {
-    $x;
-} catch (X|Y $e1) {
-    $y;
-} catch (\A|B\C $e2) {
-    $z;
-}
------
-!!php7
-array(
-    0: Stmt_TryCatch(
-        stmts: array(
-            0: Stmt_Expression(
-                expr: Expr_Variable(
-                    name: x
-                )
-            )
-        )
-        catches: array(
-            0: Stmt_Catch(
-                types: array(
-                    0: Name(
-                        parts: array(
-                            0: X
-                        )
-                    )
-                    1: Name(
-                        parts: array(
-                            0: Y
-                        )
-                    )
-                )
-                var: Expr_Variable(
-                    name: e1
-                )
-                stmts: array(
-                    0: Stmt_Expression(
-                        expr: Expr_Variable(
-                            name: y
-                        )
-                    )
-                )
-            )
-            1: Stmt_Catch(
-                types: array(
-                    0: Name_FullyQualified(
-                        parts: array(
-                            0: A
-                        )
-                    )
-                    1: Name(
-                        parts: array(
-                            0: B
-                            1: C
-                        )
-                    )
-                )
-                var: Expr_Variable(
-                    name: e2
-                )
-                stmts: array(
-                    0: Stmt_Expression(
-                        expr: Expr_Variable(
-                            name: z
-                        )
-                    )
-                )
-            )
-        )
-        finally: null
-    )
-)
\ No newline at end of file
diff --git a/vendor/nikic/php-parser/test/code/parser/stmt/namespace/alias.test b/vendor/nikic/php-parser/test/code/parser/stmt/namespace/alias.test
deleted file mode 100644
index ef3f4256cf..0000000000
--- a/vendor/nikic/php-parser/test/code/parser/stmt/namespace/alias.test
+++ /dev/null
@@ -1,178 +0,0 @@
-Aliases (use)
------
-<?php
-
-use A\B;
-use C\D as E;
-use F\G as H, J;
-
-// evil alias notation - Do Not Use!
-use \A;
-use \A as B;
-
-// function and constant aliases
-use function foo\bar;
-use function foo\bar as baz;
-use const foo\BAR;
-use const foo\BAR as BAZ;
------
-array(
-    0: Stmt_Use(
-        type: TYPE_NORMAL (1)
-        uses: array(
-            0: Stmt_UseUse(
-                type: TYPE_UNKNOWN (0)
-                name: Name(
-                    parts: array(
-                        0: A
-                        1: B
-                    )
-                )
-                alias: null
-            )
-        )
-    )
-    1: Stmt_Use(
-        type: TYPE_NORMAL (1)
-        uses: array(
-            0: Stmt_UseUse(
-                type: TYPE_UNKNOWN (0)
-                name: Name(
-                    parts: array(
-                        0: C
-                        1: D
-                    )
-                )
-                alias: Identifier(
-                    name: E
-                )
-            )
-        )
-    )
-    2: Stmt_Use(
-        type: TYPE_NORMAL (1)
-        uses: array(
-            0: Stmt_UseUse(
-                type: TYPE_UNKNOWN (0)
-                name: Name(
-                    parts: array(
-                        0: F
-                        1: G
-                    )
-                )
-                alias: Identifier(
-                    name: H
-                )
-            )
-            1: Stmt_UseUse(
-                type: TYPE_UNKNOWN (0)
-                name: Name(
-                    parts: array(
-                        0: J
-                    )
-                )
-                alias: null
-            )
-        )
-    )
-    3: Stmt_Use(
-        type: TYPE_NORMAL (1)
-        uses: array(
-            0: Stmt_UseUse(
-                type: TYPE_UNKNOWN (0)
-                name: Name(
-                    parts: array(
-                        0: A
-                    )
-                )
-                alias: null
-            )
-        )
-        comments: array(
-            0: // evil alias notation - Do Not Use!
-        )
-    )
-    4: Stmt_Use(
-        type: TYPE_NORMAL (1)
-        uses: array(
-            0: Stmt_UseUse(
-                type: TYPE_UNKNOWN (0)
-                name: Name(
-                    parts: array(
-                        0: A
-                    )
-                )
-                alias: Identifier(
-                    name: B
-                )
-            )
-        )
-    )
-    5: Stmt_Use(
-        type: TYPE_FUNCTION (2)
-        uses: array(
-            0: Stmt_UseUse(
-                type: TYPE_UNKNOWN (0)
-                name: Name(
-                    parts: array(
-                        0: foo
-                        1: bar
-                    )
-                )
-                alias: null
-            )
-        )
-        comments: array(
-            0: // function and constant aliases
-        )
-    )
-    6: Stmt_Use(
-        type: TYPE_FUNCTION (2)
-        uses: array(
-            0: Stmt_UseUse(
-                type: TYPE_UNKNOWN (0)
-                name: Name(
-                    parts: array(
-                        0: foo
-                        1: bar
-                    )
-                )
-                alias: Identifier(
-                    name: baz
-                )
-            )
-        )
-    )
-    7: Stmt_Use(
-        type: TYPE_CONSTANT (3)
-        uses: array(
-            0: Stmt_UseUse(
-                type: TYPE_UNKNOWN (0)
-                name: Name(
-                    parts: array(
-                        0: foo
-                        1: BAR
-                    )
-                )
-                alias: null
-            )
-        )
-    )
-    8: Stmt_Use(
-        type: TYPE_CONSTANT (3)
-        uses: array(
-            0: Stmt_UseUse(
-                type: TYPE_UNKNOWN (0)
-                name: Name(
-                    parts: array(
-                        0: foo
-                        1: BAR
-                    )
-                )
-                alias: Identifier(
-                    name: BAZ
-                )
-            )
-        )
-    )
-)
\ No newline at end of file
diff --git a/vendor/nikic/php-parser/test/code/parser/stmt/namespace/braced.test b/vendor/nikic/php-parser/test/code/parser/stmt/namespace/braced.test
deleted file mode 100644
index a057352f41..0000000000
--- a/vendor/nikic/php-parser/test/code/parser/stmt/namespace/braced.test
+++ /dev/null
@@ -1,46 +0,0 @@
-Braced namespaces
------
-<?php
-
-namespace Foo\Bar {
-    foo;
-}
-namespace {
-    bar;
-}
------
-array(
-    0: Stmt_Namespace(
-        name: Name(
-            parts: array(
-                0: Foo
-                1: Bar
-            )
-        )
-        stmts: array(
-            0: Stmt_Expression(
-                expr: Expr_ConstFetch(
-                    name: Name(
-                        parts: array(
-                            0: foo
-                        )
-                    )
-                )
-            )
-        )
-    )
-    1: Stmt_Namespace(
-        name: null
-        stmts: array(
-            0: Stmt_Expression(
-                expr: Expr_ConstFetch(
-                    name: Name(
-                        parts: array(
-                            0: bar
-                        )
-                    )
-                )
-            )
-        )
-    )
-)
\ No newline at end of file
diff --git a/vendor/nikic/php-parser/test/code/parser/stmt/namespace/commentAfterNamespace.test b/vendor/nikic/php-parser/test/code/parser/stmt/namespace/commentAfterNamespace.test
deleted file mode 100644
index 3f379b734f..0000000000
--- a/vendor/nikic/php-parser/test/code/parser/stmt/namespace/commentAfterNamespace.test
+++ /dev/null
@@ -1,22 +0,0 @@
-Trailing comment after braced namespace declaration
------
-<?php
-namespace Foo {}
-// Comment
------
-array(
-    0: Stmt_Namespace(
-        name: Name(
-            parts: array(
-                0: Foo
-            )
-        )
-        stmts: array(
-        )
-    )
-    1: Stmt_Nop(
-        comments: array(
-            0: // Comment
-        )
-    )
-)
\ No newline at end of file
diff --git a/vendor/nikic/php-parser/test/code/parser/stmt/namespace/groupUse.test b/vendor/nikic/php-parser/test/code/parser/stmt/namespace/groupUse.test
deleted file mode 100644
index d68aadba7b..0000000000
--- a/vendor/nikic/php-parser/test/code/parser/stmt/namespace/groupUse.test
+++ /dev/null
@@ -1,188 +0,0 @@
-Group use declarations
------
-<?php
-use A\{B};
-use A\{B\C, D};
-use \A\B\{C\D, E};
-use function A\{b\c, d};
-use const \A\{B\C, D};
-use A\B\{C\D, function b\c, const D};
------
-array(
-    0: Stmt_GroupUse(
-        type: TYPE_UNKNOWN (0)
-        prefix: Name(
-            parts: array(
-                0: A
-            )
-        )
-        uses: array(
-            0: Stmt_UseUse(
-                type: TYPE_NORMAL (1)
-                name: Name(
-                    parts: array(
-                        0: B
-                    )
-                )
-                alias: null
-            )
-        )
-    )
-    1: Stmt_GroupUse(
-        type: TYPE_UNKNOWN (0)
-        prefix: Name(
-            parts: array(
-                0: A
-            )
-        )
-        uses: array(
-            0: Stmt_UseUse(
-                type: TYPE_NORMAL (1)
-                name: Name(
-                    parts: array(
-                        0: B
-                        1: C
-                    )
-                )
-                alias: null
-            )
-            1: Stmt_UseUse(
-                type: TYPE_NORMAL (1)
-                name: Name(
-                    parts: array(
-                        0: D
-                    )
-                )
-                alias: null
-            )
-        )
-    )
-    2: Stmt_GroupUse(
-        type: TYPE_UNKNOWN (0)
-        prefix: Name(
-            parts: array(
-                0: A
-                1: B
-            )
-        )
-        uses: array(
-            0: Stmt_UseUse(
-                type: TYPE_NORMAL (1)
-                name: Name(
-                    parts: array(
-                        0: C
-                        1: D
-                    )
-                )
-                alias: null
-            )
-            1: Stmt_UseUse(
-                type: TYPE_NORMAL (1)
-                name: Name(
-                    parts: array(
-                        0: E
-                    )
-                )
-                alias: null
-            )
-        )
-    )
-    3: Stmt_GroupUse(
-        type: TYPE_FUNCTION (2)
-        prefix: Name(
-            parts: array(
-                0: A
-            )
-        )
-        uses: array(
-            0: Stmt_UseUse(
-                type: TYPE_UNKNOWN (0)
-                name: Name(
-                    parts: array(
-                        0: b
-                        1: c
-                    )
-                )
-                alias: null
-            )
-            1: Stmt_UseUse(
-                type: TYPE_UNKNOWN (0)
-                name: Name(
-                    parts: array(
-                        0: d
-                    )
-                )
-                alias: null
-            )
-        )
-    )
-    4: Stmt_GroupUse(
-        type: TYPE_CONSTANT (3)
-        prefix: Name(
-            parts: array(
-                0: A
-            )
-        )
-        uses: array(
-            0: Stmt_UseUse(
-                type: TYPE_UNKNOWN (0)
-                name: Name(
-                    parts: array(
-                        0: B
-                        1: C
-                    )
-                )
-                alias: null
-            )
-            1: Stmt_UseUse(
-                type: TYPE_UNKNOWN (0)
-                name: Name(
-                    parts: array(
-                        0: D
-                    )
-                )
-                alias: null
-            )
-        )
-    )
-    5: Stmt_GroupUse(
-        type: TYPE_UNKNOWN (0)
-        prefix: Name(
-            parts: array(
-                0: A
-                1: B
-            )
-        )
-        uses: array(
-            0: Stmt_UseUse(
-                type: TYPE_NORMAL (1)
-                name: Name(
-                    parts: array(
-                        0: C
-                        1: D
-                    )
-                )
-                alias: null
-            )
-            1: Stmt_UseUse(
-                type: TYPE_FUNCTION (2)
-                name: Name(
-                    parts: array(
-                        0: b
-                        1: c
-                    )
-                )
-                alias: null
-            )
-            2: Stmt_UseUse(
-                type: TYPE_CONSTANT (3)
-                name: Name(
-                    parts: array(
-                        0: D
-                    )
-                )
-                alias: null
-            )
-        )
-    )
-)
\ No newline at end of file
diff --git a/vendor/nikic/php-parser/test/code/parser/stmt/namespace/groupUseErrors.test b/vendor/nikic/php-parser/test/code/parser/stmt/namespace/groupUseErrors.test
deleted file mode 100644
index 1cccf86c71..0000000000
--- a/vendor/nikic/php-parser/test/code/parser/stmt/namespace/groupUseErrors.test
+++ /dev/null
@@ -1,113 +0,0 @@
-Invalid group use syntax
------
-<?php
-// Missing semicolon
-use Foo\{Bar}
-use Bar\{Foo};
------
-!!php7
-Syntax error, unexpected T_USE, expecting ';' from 4:1 to 4:3
-array(
-    0: Stmt_GroupUse(
-        type: TYPE_UNKNOWN (0)
-        prefix: Name(
-            parts: array(
-                0: Foo
-            )
-        )
-        uses: array(
-            0: Stmt_UseUse(
-                type: TYPE_NORMAL (1)
-                name: Name(
-                    parts: array(
-                        0: Bar
-                    )
-                )
-                alias: null
-            )
-        )
-        comments: array(
-            0: // Missing semicolon
-        )
-    )
-    1: Stmt_GroupUse(
-        type: TYPE_UNKNOWN (0)
-        prefix: Name(
-            parts: array(
-                0: Bar
-            )
-        )
-        uses: array(
-            0: Stmt_UseUse(
-                type: TYPE_NORMAL (1)
-                name: Name(
-                    parts: array(
-                        0: Foo
-                    )
-                )
-                alias: null
-            )
-        )
-    )
-)
------
-<?php
-// Missing NS separator
-use Foo {Bar, Baz};
------
-!!php7
-Syntax error, unexpected '{', expecting ';' from 3:9 to 3:9
-array(
-    0: Stmt_Use(
-        type: TYPE_NORMAL (1)
-        uses: array(
-            0: Stmt_UseUse(
-                type: TYPE_UNKNOWN (0)
-                name: Name(
-                    parts: array(
-                        0: Foo
-                    )
-                )
-                alias: null
-            )
-        )
-        comments: array(
-            0: // Missing NS separator
-        )
-    )
-    1: Stmt_Expression(
-        expr: Expr_ConstFetch(
-            name: Name(
-                parts: array(
-                    0: Bar
-                )
-            )
-        )
-    )
-    2: Stmt_Expression(
-        expr: Expr_ConstFetch(
-            name: Name(
-                parts: array(
-                    0: Baz
-                )
-            )
-        )
-    )
-)
------
-<?php
-// Extra NS separator
-use Foo\{\Bar};
------
-Syntax error, unexpected T_NS_SEPARATOR, expecting T_STRING or T_FUNCTION or T_CONST from 3:10 to 3:10
-array(
-    0: Stmt_Expression(
-        expr: Expr_ConstFetch(
-            name: Name_FullyQualified(
-                parts: array(
-                    0: Bar
-                )
-            )
-        )
-    )
-)
\ No newline at end of file
diff --git a/vendor/nikic/php-parser/test/code/parser/stmt/namespace/groupUsePositions.test b/vendor/nikic/php-parser/test/code/parser/stmt/namespace/groupUsePositions.test
deleted file mode 100644
index 7898b208b0..0000000000
--- a/vendor/nikic/php-parser/test/code/parser/stmt/namespace/groupUsePositions.test
+++ /dev/null
@@ -1,28 +0,0 @@
-Ensure correct file position attributes for group use prefix
------
-<?php
-use Foo\Bar\{Baz};
------
-!!positions
-array(
-    0: Stmt_GroupUse[2:1 - 2:17](
-        type: TYPE_UNKNOWN (0)
-        prefix: Name[2:5 - 2:11](
-            parts: array(
-                0: Foo
-                1: Bar
-            )
-        )
-        uses: array(
-            0: Stmt_UseUse[2:14 - 2:16](
-                type: TYPE_NORMAL (1)
-                name: Name[2:14 - 2:16](
-                    parts: array(
-                        0: Baz
-                    )
-                )
-                alias: null
-            )
-        )
-    )
-)
\ No newline at end of file
diff --git a/vendor/nikic/php-parser/test/code/parser/stmt/namespace/groupUseTrailingComma.test b/vendor/nikic/php-parser/test/code/parser/stmt/namespace/groupUseTrailingComma.test
deleted file mode 100644
index 0327a9b39a..0000000000
--- a/vendor/nikic/php-parser/test/code/parser/stmt/namespace/groupUseTrailingComma.test
+++ /dev/null
@@ -1,47 +0,0 @@
-Group use can have trailing comma
------
-<?php
-use A\{B,};
-use function A\{b,};
------
-!!php7
-array(
-    0: Stmt_GroupUse(
-        type: TYPE_UNKNOWN (0)
-        prefix: Name(
-            parts: array(
-                0: A
-            )
-        )
-        uses: array(
-            0: Stmt_UseUse(
-                type: TYPE_NORMAL (1)
-                name: Name(
-                    parts: array(
-                        0: B
-                    )
-                )
-                alias: null
-            )
-        )
-    )
-    1: Stmt_GroupUse(
-        type: TYPE_FUNCTION (2)
-        prefix: Name(
-            parts: array(
-                0: A
-            )
-        )
-        uses: array(
-            0: Stmt_UseUse(
-                type: TYPE_UNKNOWN (0)
-                name: Name(
-                    parts: array(
-                        0: b
-                    )
-                )
-                alias: null
-            )
-        )
-    )
-)
\ No newline at end of file
diff --git a/vendor/nikic/php-parser/test/code/parser/stmt/namespace/invalidName.test b/vendor/nikic/php-parser/test/code/parser/stmt/namespace/invalidName.test
deleted file mode 100644
index 2f466d396e..0000000000
--- a/vendor/nikic/php-parser/test/code/parser/stmt/namespace/invalidName.test
+++ /dev/null
@@ -1,87 +0,0 @@
-Invalid namespace names
------
-<?php namespace self;
------
-Cannot use 'self' as namespace name from 1:17 to 1:20
-array(
-    0: Stmt_Namespace(
-        name: Name(
-            parts: array(
-                0: self
-            )
-        )
-        stmts: array(
-        )
-    )
-)
------
-<?php namespace PARENT;
------
-Cannot use 'PARENT' as namespace name from 1:17 to 1:22
-array(
-    0: Stmt_Namespace(
-        name: Name(
-            parts: array(
-                0: PARENT
-            )
-        )
-        stmts: array(
-        )
-    )
-)
------
-<?php namespace static;
------
-Syntax error, unexpected T_STATIC, expecting T_STRING or T_NS_SEPARATOR or '{' from 1:17 to 1:22
-array(
-)
------
-<?php use A as self;
------
-Cannot use A as self because 'self' is a special class name from 1:16 to 1:19
-array(
-    0: Stmt_Use(
-        type: TYPE_NORMAL (1)
-        uses: array(
-            0: Stmt_UseUse(
-                type: TYPE_UNKNOWN (0)
-                name: Name(
-                    parts: array(
-                        0: A
-                    )
-                )
-                alias: Identifier(
-                    name: self
-                )
-            )
-        )
-    )
-)
------
-<?php use B as PARENT;
------
-Cannot use B as PARENT because 'PARENT' is a special class name from 1:16 to 1:21
-array(
-    0: Stmt_Use(
-        type: TYPE_NORMAL (1)
-        uses: array(
-            0: Stmt_UseUse(
-                type: TYPE_UNKNOWN (0)
-                name: Name(
-                    parts: array(
-                        0: B
-                    )
-                )
-                alias: Identifier(
-                    name: PARENT
-                )
-            )
-        )
-    )
-)
------
-<?php use C as static;
------
-Syntax error, unexpected T_STATIC, expecting T_STRING from 1:16 to 1:21
-array(
-)
\ No newline at end of file
diff --git a/vendor/nikic/php-parser/test/code/parser/stmt/namespace/mix.test b/vendor/nikic/php-parser/test/code/parser/stmt/namespace/mix.test
deleted file mode 100644
index 0fbfbf4241..0000000000
--- a/vendor/nikic/php-parser/test/code/parser/stmt/namespace/mix.test
+++ /dev/null
@@ -1,103 +0,0 @@
-Namespace types cannot be mixed
------
-<?php
-namespace A;
-echo 1;
-namespace B {
-    echo 2;
-}
-echo 3;
------
-Cannot mix bracketed namespace declarations with unbracketed namespace declarations on line 4
-array(
-    0: Stmt_Namespace(
-        name: Name(
-            parts: array(
-                0: A
-            )
-        )
-        stmts: array(
-            0: Stmt_Echo(
-                exprs: array(
-                    0: Scalar_LNumber(
-                        value: 1
-                    )
-                )
-            )
-        )
-    )
-    1: Stmt_Namespace(
-        name: Name(
-            parts: array(
-                0: B
-            )
-        )
-        stmts: array(
-            0: Stmt_Echo(
-                exprs: array(
-                    0: Scalar_LNumber(
-                        value: 2
-                    )
-                )
-            )
-        )
-    )
-    2: Stmt_Echo(
-        exprs: array(
-            0: Scalar_LNumber(
-                value: 3
-            )
-        )
-    )
-)
------
-<?php
-namespace A {
-    echo 1;
-}
-echo 2;
-namespace B;
-echo 3;
------
-Cannot mix bracketed namespace declarations with unbracketed namespace declarations on line 6
-array(
-    0: Stmt_Namespace(
-        name: Name(
-            parts: array(
-                0: A
-            )
-        )
-        stmts: array(
-            0: Stmt_Echo(
-                exprs: array(
-                    0: Scalar_LNumber(
-                        value: 1
-                    )
-                )
-            )
-        )
-    )
-    1: Stmt_Echo(
-        exprs: array(
-            0: Scalar_LNumber(
-                value: 2
-            )
-        )
-    )
-    2: Stmt_Namespace(
-        name: Name(
-            parts: array(
-                0: B
-            )
-        )
-        stmts: array(
-            0: Stmt_Echo(
-                exprs: array(
-                    0: Scalar_LNumber(
-                        value: 3
-                    )
-                )
-            )
-        )
-    )
-)
\ No newline at end of file
diff --git a/vendor/nikic/php-parser/test/code/parser/stmt/namespace/name.test b/vendor/nikic/php-parser/test/code/parser/stmt/namespace/name.test
deleted file mode 100644
index 9a5babb36a..0000000000
--- a/vendor/nikic/php-parser/test/code/parser/stmt/namespace/name.test
+++ /dev/null
@@ -1,50 +0,0 @@
-Different name types
------
-<?php
-
-A;
-A\B;
-\A\B;
-namespace\A\B;
------
-array(
-    0: Stmt_Expression(
-        expr: Expr_ConstFetch(
-            name: Name(
-                parts: array(
-                    0: A
-                )
-            )
-        )
-    )
-    1: Stmt_Expression(
-        expr: Expr_ConstFetch(
-            name: Name(
-                parts: array(
-                    0: A
-                    1: B
-                )
-            )
-        )
-    )
-    2: Stmt_Expression(
-        expr: Expr_ConstFetch(
-            name: Name_FullyQualified(
-                parts: array(
-                    0: A
-                    1: B
-                )
-            )
-        )
-    )
-    3: Stmt_Expression(
-        expr: Expr_ConstFetch(
-            name: Name_Relative(
-                parts: array(
-                    0: A
-                    1: B
-                )
-            )
-        )
-    )
-)
\ No newline at end of file
diff --git a/vendor/nikic/php-parser/test/code/parser/stmt/namespace/nested.test b/vendor/nikic/php-parser/test/code/parser/stmt/namespace/nested.test
deleted file mode 100644
index 840daffe92..0000000000
--- a/vendor/nikic/php-parser/test/code/parser/stmt/namespace/nested.test
+++ /dev/null
@@ -1,30 +0,0 @@
-Nested namespaces are not allowed
------
-<?php
-namespace A {
-    namespace B {
-
-    }
-}
------
-Namespace declarations cannot be nested from 3:5 to 5:5
-array(
-    0: Stmt_Namespace(
-        name: Name(
-            parts: array(
-                0: A
-            )
-        )
-        stmts: array(
-            0: Stmt_Namespace(
-                name: Name(
-                    parts: array(
-                        0: B
-                    )
-                )
-                stmts: array(
-                )
-            )
-        )
-    )
-)
\ No newline at end of file
diff --git a/vendor/nikic/php-parser/test/code/parser/stmt/namespace/notBraced.test b/vendor/nikic/php-parser/test/code/parser/stmt/namespace/notBraced.test
deleted file mode 100644
index aa34fc5c3b..0000000000
--- a/vendor/nikic/php-parser/test/code/parser/stmt/namespace/notBraced.test
+++ /dev/null
@@ -1,49 +0,0 @@
-Semicolon style namespaces
------
-<?php
-
-namespace Foo\Bar;
-foo;
-
-namespace Bar;
-bar;
------
-array(
-    0: Stmt_Namespace(
-        name: Name(
-            parts: array(
-                0: Foo
-                1: Bar
-            )
-        )
-        stmts: array(
-            0: Stmt_Expression(
-                expr: Expr_ConstFetch(
-                    name: Name(
-                        parts: array(
-                            0: foo
-                        )
-                    )
-                )
-            )
-        )
-    )
-    1: Stmt_Namespace(
-        name: Name(
-            parts: array(
-                0: Bar
-            )
-        )
-        stmts: array(
-            0: Stmt_Expression(
-                expr: Expr_ConstFetch(
-                    name: Name(
-                        parts: array(
-                            0: bar
-                        )
-                    )
-                )
-            )
-        )
-    )
-)
\ No newline at end of file
diff --git a/vendor/nikic/php-parser/test/code/parser/stmt/namespace/nsAfterHashbang.test b/vendor/nikic/php-parser/test/code/parser/stmt/namespace/nsAfterHashbang.test
deleted file mode 100644
index 6d452538d4..0000000000
--- a/vendor/nikic/php-parser/test/code/parser/stmt/namespace/nsAfterHashbang.test
+++ /dev/null
@@ -1,22 +0,0 @@
-Hashbang followed by namespace declaration
------
-#!/usr/bin/env php
-<?php
-
-namespace A;
------
-array(
-    0: Stmt_InlineHTML(
-        value: #!/usr/bin/env php
-
-    )
-    1: Stmt_Namespace(
-        name: Name(
-            parts: array(
-                0: A
-            )
-        )
-        stmts: array(
-        )
-    )
-)
\ No newline at end of file
diff --git a/vendor/nikic/php-parser/test/code/parser/stmt/namespace/outsideStmt.test b/vendor/nikic/php-parser/test/code/parser/stmt/namespace/outsideStmt.test
deleted file mode 100644
index fe8bde6686..0000000000
--- a/vendor/nikic/php-parser/test/code/parser/stmt/namespace/outsideStmt.test
+++ /dev/null
@@ -1,60 +0,0 @@
-Some statements may occur outside of namespaces
------
-<?php
-declare(A='B');
-namespace B {
-
-}
-__halt_compiler()
-?>
-Hi!
------
-array(
-    0: Stmt_Declare(
-        declares: array(
-            0: Stmt_DeclareDeclare(
-                key: Identifier(
-                    name: A
-                )
-                value: Scalar_String(
-                    value: B
-                )
-            )
-        )
-        stmts: null
-    )
-    1: Stmt_Namespace(
-        name: Name(
-            parts: array(
-                0: B
-            )
-        )
-        stmts: array(
-        )
-    )
-    2: Stmt_HaltCompiler(
-        remaining: Hi!
-    )
-)
------
-<?php
-/* Comment */
-;
-namespace Foo;
------
-array(
-    0: Stmt_Nop(
-        comments: array(
-            0: /* Comment */
-        )
-    )
-    1: Stmt_Namespace(
-        name: Name(
-            parts: array(
-                0: Foo
-            )
-        )
-        stmts: array(
-        )
-    )
-)
\ No newline at end of file
diff --git a/vendor/nikic/php-parser/test/code/parser/stmt/namespace/outsideStmtInvalid.test b/vendor/nikic/php-parser/test/code/parser/stmt/namespace/outsideStmtInvalid.test
deleted file mode 100644
index 85bd180818..0000000000
--- a/vendor/nikic/php-parser/test/code/parser/stmt/namespace/outsideStmtInvalid.test
+++ /dev/null
@@ -1,109 +0,0 @@
-There (mostly) can't be statements outside of namespaces
------
-<?php
-echo 1;
-echo 2;
-namespace A;
------
-Namespace declaration statement has to be the very first statement in the script on line 4
-array(
-    0: Stmt_Echo(
-        exprs: array(
-            0: Scalar_LNumber(
-                value: 1
-            )
-        )
-    )
-    1: Stmt_Echo(
-        exprs: array(
-            0: Scalar_LNumber(
-                value: 2
-            )
-        )
-    )
-    2: Stmt_Namespace(
-        name: Name(
-            parts: array(
-                0: A
-            )
-        )
-        stmts: array(
-        )
-    )
-)
------
-<?php
-namespace A {}
-echo 1;
------
-No code may exist outside of namespace {} from 3:1 to 3:7
-array(
-    0: Stmt_Namespace(
-        name: Name(
-            parts: array(
-                0: A
-            )
-        )
-        stmts: array(
-        )
-    )
-    1: Stmt_Echo(
-        exprs: array(
-            0: Scalar_LNumber(
-                value: 1
-            )
-        )
-    )
-)
------
-<?php
-namespace A {}
-declare(ticks=1);
-foo();
-namespace B {}
------
-No code may exist outside of namespace {} from 3:1 to 3:17
-array(
-    0: Stmt_Namespace(
-        name: Name(
-            parts: array(
-                0: A
-            )
-        )
-        stmts: array(
-        )
-    )
-    1: Stmt_Declare(
-        declares: array(
-            0: Stmt_DeclareDeclare(
-                key: Identifier(
-                    name: ticks
-                )
-                value: Scalar_LNumber(
-                    value: 1
-                )
-            )
-        )
-        stmts: null
-    )
-    2: Stmt_Expression(
-        expr: Expr_FuncCall(
-            name: Name(
-                parts: array(
-                    0: foo
-                )
-            )
-            args: array(
-            )
-        )
-    )
-    3: Stmt_Namespace(
-        name: Name(
-            parts: array(
-                0: B
-            )
-        )
-        stmts: array(
-        )
-    )
-)
\ No newline at end of file
diff --git a/vendor/nikic/php-parser/test/code/parser/stmt/switch.test b/vendor/nikic/php-parser/test/code/parser/stmt/switch.test
deleted file mode 100644
index fc24508e1b..0000000000
--- a/vendor/nikic/php-parser/test/code/parser/stmt/switch.test
+++ /dev/null
@@ -1,81 +0,0 @@
-Switch
------
-<?php
-
-switch ($a) {
-    case 0:
-        break;
-    // Comment
-    case 1;
-    default:
-}
-
-// alternative syntax
-switch ($a):
-endswitch;
-
-// leading semicolon
-switch ($a) { ; }
-switch ($a): ; endswitch;
------
-array(
-    0: Stmt_Switch(
-        cond: Expr_Variable(
-            name: a
-        )
-        cases: array(
-            0: Stmt_Case(
-                cond: Scalar_LNumber(
-                    value: 0
-                )
-                stmts: array(
-                    0: Stmt_Break(
-                        num: null
-                    )
-                )
-            )
-            1: Stmt_Case(
-                cond: Scalar_LNumber(
-                    value: 1
-                )
-                stmts: array(
-                )
-                comments: array(
-                    0: // Comment
-                )
-            )
-            2: Stmt_Case(
-                cond: null
-                stmts: array(
-                )
-            )
-        )
-    )
-    1: Stmt_Switch(
-        cond: Expr_Variable(
-            name: a
-        )
-        cases: array(
-        )
-        comments: array(
-            0: // alternative syntax
-        )
-    )
-    2: Stmt_Switch(
-        cond: Expr_Variable(
-            name: a
-        )
-        cases: array(
-        )
-        comments: array(
-            0: // leading semicolon
-        )
-    )
-    3: Stmt_Switch(
-        cond: Expr_Variable(
-            name: a
-        )
-        cases: array(
-        )
-    )
-)
\ No newline at end of file
diff --git a/vendor/nikic/php-parser/test/code/parser/stmt/tryCatch.test b/vendor/nikic/php-parser/test/code/parser/stmt/tryCatch.test
deleted file mode 100644
index 8f88f4a359..0000000000
--- a/vendor/nikic/php-parser/test/code/parser/stmt/tryCatch.test
+++ /dev/null
@@ -1,144 +0,0 @@
-Try/catch
------
-<?php
-
-try {
-    doTry();
-} catch (A $b) {
-    doCatchA();
-} catch (B $c) {
-    doCatchB();
-} finally {
-    doFinally();
-}
-
-// no finally
-try { }
-catch (A $b) { }
-
-// no catch
-try { }
-finally { }
-
------
-array(
-    0: Stmt_TryCatch(
-        stmts: array(
-            0: Stmt_Expression(
-                expr: Expr_FuncCall(
-                    name: Name(
-                        parts: array(
-                            0: doTry
-                        )
-                    )
-                    args: array(
-                    )
-                )
-            )
-        )
-        catches: array(
-            0: Stmt_Catch(
-                types: array(
-                    0: Name(
-                        parts: array(
-                            0: A
-                        )
-                    )
-                )
-                var: Expr_Variable(
-                    name: b
-                )
-                stmts: array(
-                    0: Stmt_Expression(
-                        expr: Expr_FuncCall(
-                            name: Name(
-                                parts: array(
-                                    0: doCatchA
-                                )
-                            )
-                            args: array(
-                            )
-                        )
-                    )
-                )
-            )
-            1: Stmt_Catch(
-                types: array(
-                    0: Name(
-                        parts: array(
-                            0: B
-                        )
-                    )
-                )
-                var: Expr_Variable(
-                    name: c
-                )
-                stmts: array(
-                    0: Stmt_Expression(
-                        expr: Expr_FuncCall(
-                            name: Name(
-                                parts: array(
-                                    0: doCatchB
-                                )
-                            )
-                            args: array(
-                            )
-                        )
-                    )
-                )
-            )
-        )
-        finally: Stmt_Finally(
-            stmts: array(
-                0: Stmt_Expression(
-                    expr: Expr_FuncCall(
-                        name: Name(
-                            parts: array(
-                                0: doFinally
-                            )
-                        )
-                        args: array(
-                        )
-                    )
-                )
-            )
-        )
-    )
-    1: Stmt_TryCatch(
-        stmts: array(
-        )
-        catches: array(
-            0: Stmt_Catch(
-                types: array(
-                    0: Name(
-                        parts: array(
-                            0: A
-                        )
-                    )
-                )
-                var: Expr_Variable(
-                    name: b
-                )
-                stmts: array(
-                )
-            )
-        )
-        finally: null
-        comments: array(
-            0: // no finally
-        )
-    )
-    2: Stmt_TryCatch(
-        stmts: array(
-        )
-        catches: array(
-        )
-        finally: Stmt_Finally(
-            stmts: array(
-            )
-        )
-        comments: array(
-            0: // no catch
-        )
-    )
-)
\ No newline at end of file
diff --git a/vendor/nikic/php-parser/test/code/parser/stmt/tryWithoutCatch.test b/vendor/nikic/php-parser/test/code/parser/stmt/tryWithoutCatch.test
deleted file mode 100644
index 5650d80ac5..0000000000
--- a/vendor/nikic/php-parser/test/code/parser/stmt/tryWithoutCatch.test
+++ /dev/null
@@ -1,29 +0,0 @@
-Cannot use try without catch or finally
------
-<?php
-
-try {
-    foo();
-}
------
-Cannot use try without catch or finally from 3:1 to 5:1
-array(
-    0: Stmt_TryCatch(
-        stmts: array(
-            0: Stmt_Expression(
-                expr: Expr_FuncCall(
-                    name: Name(
-                        parts: array(
-                            0: foo
-                        )
-                    )
-                    args: array(
-                    )
-                )
-            )
-        )
-        catches: array(
-        )
-        finally: null
-    )
-)
\ No newline at end of file
diff --git a/vendor/nikic/php-parser/test/code/parser/stmt/unset.test b/vendor/nikic/php-parser/test/code/parser/stmt/unset.test
deleted file mode 100644
index c69679ef50..0000000000
--- a/vendor/nikic/php-parser/test/code/parser/stmt/unset.test
+++ /dev/null
@@ -1,26 +0,0 @@
-Unset
------
-<?php
-
-unset($a);
-unset($b, $c);
------
-array(
-    0: Stmt_Unset(
-        vars: array(
-            0: Expr_Variable(
-                name: a
-            )
-        )
-    )
-    1: Stmt_Unset(
-        vars: array(
-            0: Expr_Variable(
-                name: b
-            )
-            1: Expr_Variable(
-                name: c
-            )
-        )
-    )
-)
\ No newline at end of file
diff --git a/vendor/nikic/php-parser/test/code/prettyPrinter/comments.test b/vendor/nikic/php-parser/test/code/prettyPrinter/comments.test
deleted file mode 100644
index 34a9f93d8f..0000000000
--- a/vendor/nikic/php-parser/test/code/prettyPrinter/comments.test
+++ /dev/null
@@ -1,67 +0,0 @@
-Comments
------
-<?php
-
-function justForIndentation()
-{
-    // Some text
-    # Some text
-    /* Some text */
-    /** Some text */
-    /**
-     * Some text.
-     * Some more text.
-     */
-    /*
-     * Some text.
-     * Some more text.
-     */
-    /*
-        Some text.
-        Some more text.
-    */
-    /* Some text.
-       More text. */
-    /* Some text.
-       More text.
-       Even more text. */
-    $foo;
-}
------
-function justForIndentation()
-{
-    // Some text
-    # Some text
-    /* Some text */
-    /** Some text */
-    /**
-     * Some text.
-     * Some more text.
-     */
-    /*
-     * Some text.
-     * Some more text.
-     */
-    /*
-        Some text.
-        Some more text.
-    */
-    /* Some text.
-       More text. */
-    /* Some text.
-       More text.
-       Even more text. */
-    $foo;
-}
------
-<?php
-
-function test()
-{
-    // empty
-}
------
-function test()
-{
-    // empty
-}
\ No newline at end of file
diff --git a/vendor/nikic/php-parser/test/code/prettyPrinter/commentsInCommaList.test b/vendor/nikic/php-parser/test/code/prettyPrinter/commentsInCommaList.test
deleted file mode 100644
index d0e42ef68a..0000000000
--- a/vendor/nikic/php-parser/test/code/prettyPrinter/commentsInCommaList.test
+++ /dev/null
@@ -1,53 +0,0 @@
-Comments in arrays and function calls
------
-<?php
-
-$arr = [
-    // Foo
-    $foo,
-    // Bar
-    $bar,
-    // Discarded
-];
-[
-    // Foo
-    $foo,
-    ,
-    // Bar
-    $bar,
-] = $arr;
-foo(
-    // Foo
-    $foo,
-    // Bar
-    $bar
-);
-new Foo(
-    // Foo
-    $foo
-);
------
-!!php7
-$arr = [
-    // Foo
-    $foo,
-    // Bar
-    $bar,
-];
-[
-    // Foo
-    $foo,
-    ,
-    // Bar
-    $bar,
-] = $arr;
-foo(
-    // Foo
-    $foo,
-    // Bar
-    $bar
-);
-new Foo(
-    // Foo
-    $foo
-);
\ No newline at end of file
diff --git a/vendor/nikic/php-parser/test/code/prettyPrinter/expr/anonymousClass.test b/vendor/nikic/php-parser/test/code/prettyPrinter/expr/anonymousClass.test
deleted file mode 100644
index 1f24517125..0000000000
--- a/vendor/nikic/php-parser/test/code/prettyPrinter/expr/anonymousClass.test
+++ /dev/null
@@ -1,27 +0,0 @@
-Anonymous classes
------
-<?php
-
-new class {};
-new class extends A implements B, C {};
-new class($a) extends A {
-    private $a;
-    public function __construct($a) {
-        $this->a = $a;
-    }
-};
------
-new class
-{
-};
-new class extends A implements B, C
-{
-};
-new class($a) extends A
-{
-    private $a;
-    public function __construct($a)
-    {
-        $this->a = $a;
-    }
-};
diff --git a/vendor/nikic/php-parser/test/code/prettyPrinter/expr/arrayDestructuring.test b/vendor/nikic/php-parser/test/code/prettyPrinter/expr/arrayDestructuring.test
deleted file mode 100644
index bff1999e4e..0000000000
--- a/vendor/nikic/php-parser/test/code/prettyPrinter/expr/arrayDestructuring.test
+++ /dev/null
@@ -1,14 +0,0 @@
-Array destructuring
------
-<?php
-
-[$a, $b] = [$c, $d];
-[, $a, , , $b, ,] = $foo;
-[, [[$a]], $b] = $bar;
-['a' => $b, 'b' => $a] = $baz;
------
-!!php7
-[$a, $b] = [$c, $d];
-[, $a, , , $b, ] = $foo;
-[, [[$a]], $b] = $bar;
-['a' => $b, 'b' => $a] = $baz;
\ No newline at end of file
diff --git a/vendor/nikic/php-parser/test/code/prettyPrinter/expr/arraySpread.test b/vendor/nikic/php-parser/test/code/prettyPrinter/expr/arraySpread.test
deleted file mode 100644
index 5e8393ff27..0000000000
--- a/vendor/nikic/php-parser/test/code/prettyPrinter/expr/arraySpread.test
+++ /dev/null
@@ -1,8 +0,0 @@
-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
deleted file mode 100644
index fe8d8791b5..0000000000
--- a/vendor/nikic/php-parser/test/code/prettyPrinter/expr/arrow_function.test
+++ /dev/null
@@ -1,18 +0,0 @@
-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/call.test b/vendor/nikic/php-parser/test/code/prettyPrinter/expr/call.test
deleted file mode 100644
index 0ec8925cf2..0000000000
--- a/vendor/nikic/php-parser/test/code/prettyPrinter/expr/call.test
+++ /dev/null
@@ -1,13 +0,0 @@
-Calls
------
-<?php
-
-f($a);
-f(&$a);
-f(...$a);
-f($a, &$b, ...$c);
------
-f($a);
-f(&$a);
-f(...$a);
-f($a, &$b, ...$c);
\ No newline at end of file
diff --git a/vendor/nikic/php-parser/test/code/prettyPrinter/expr/closure.test b/vendor/nikic/php-parser/test/code/prettyPrinter/expr/closure.test
deleted file mode 100644
index 7e4fcfd05d..0000000000
--- a/vendor/nikic/php-parser/test/code/prettyPrinter/expr/closure.test
+++ /dev/null
@@ -1,18 +0,0 @@
-Closures
------
-<?php
-
-$closureWithArgs = function ($arg1, $arg2) {
-    $comment = 'closure body';
-};
-
-$closureWithArgsAndVars = function ($arg1, $arg2) use($var1, $var2) {
-    $comment = 'closure body';
-};
------
-$closureWithArgs = function ($arg1, $arg2) {
-    $comment = 'closure body';
-};
-$closureWithArgsAndVars = function ($arg1, $arg2) use($var1, $var2) {
-    $comment = 'closure body';
-};
\ No newline at end of file
diff --git a/vendor/nikic/php-parser/test/code/prettyPrinter/expr/constant_deref.test b/vendor/nikic/php-parser/test/code/prettyPrinter/expr/constant_deref.test
deleted file mode 100644
index 1371d42252..0000000000
--- a/vendor/nikic/php-parser/test/code/prettyPrinter/expr/constant_deref.test
+++ /dev/null
@@ -1,13 +0,0 @@
-Constant/literal dereferencing
------
-<?php
-
-FOO[0];
-FOO::BAR[0];
-'FOO'[0];
-array(FOO)[0];
------
-FOO[0];
-FOO::BAR[0];
-'FOO'[0];
-array(FOO)[0];
diff --git a/vendor/nikic/php-parser/test/code/prettyPrinter/expr/docStrings.test b/vendor/nikic/php-parser/test/code/prettyPrinter/expr/docStrings.test
deleted file mode 100644
index a4a60acead..0000000000
--- a/vendor/nikic/php-parser/test/code/prettyPrinter/expr/docStrings.test
+++ /dev/null
@@ -1,86 +0,0 @@
-Literals
------
-<?php
-
-<<<'STR'
-STR;
-<<<STR
-STR;
-
-<<<'STR'
-A
-B
-STR;
-<<<STR
-A
-B
-STR;
-
-<<<'STR'
-a\nb$c
-STR;
-<<<STR
-a\\nb\$c
-STR;
-
-<<<STR
-a$b
-{$c->d}
-STR;
-
-call(
-    <<<STR
-A
-STR
-    , <<<STR
-B
-STR
-);
-
-function test() {
-    <<<STR
-Foo
-STR;
-    <<<STR
-    Bar
-STR;
-}
------
-<<<'STR'
-STR;
-<<<STR
-STR;
-<<<'STR'
-A
-B
-STR;
-<<<STR
-A
-B
-STR;
-<<<'STR'
-a\nb$c
-STR;
-<<<STR
-a\\nb\$c
-STR;
-<<<STR
-a{$b}
-{$c->d}
-STR;
-call(<<<STR
-A
-STR
-, <<<STR
-B
-STR
-);
-function test()
-{
-    <<<STR
-Foo
-STR;
-    <<<STR
-    Bar
-STR;
-}
\ No newline at end of file
diff --git a/vendor/nikic/php-parser/test/code/prettyPrinter/expr/include.test b/vendor/nikic/php-parser/test/code/prettyPrinter/expr/include.test
deleted file mode 100644
index 3c40779876..0000000000
--- a/vendor/nikic/php-parser/test/code/prettyPrinter/expr/include.test
+++ /dev/null
@@ -1,7 +0,0 @@
-Include
------
-<?php
-
-(include $foo) && (include $bar);
------
-(include $foo) && (include $bar);
\ No newline at end of file
diff --git a/vendor/nikic/php-parser/test/code/prettyPrinter/expr/intrinsics.test b/vendor/nikic/php-parser/test/code/prettyPrinter/expr/intrinsics.test
deleted file mode 100644
index f1a1adcd53..0000000000
--- a/vendor/nikic/php-parser/test/code/prettyPrinter/expr/intrinsics.test
+++ /dev/null
@@ -1,29 +0,0 @@
-isset, empty, unset, exit, die, clone, eval
------
-<?php
-
-isset($a, $a[$b]);
-empty($a);
-empty('foo');
-unset($a, $a[$b]);
-exit;
-exit();
-exit(1);
-die;
-die();
-die('foo');
-clone $foo;
-eval('str');
------
-isset($a, $a[$b]);
-empty($a);
-empty('foo');
-unset($a, $a[$b]);
-exit;
-exit;
-exit(1);
-die;
-die;
-die('foo');
-clone $foo;
-eval('str');
\ No newline at end of file
diff --git a/vendor/nikic/php-parser/test/code/prettyPrinter/expr/list.test b/vendor/nikic/php-parser/test/code/prettyPrinter/expr/list.test
deleted file mode 100644
index 608ced6a69..0000000000
--- a/vendor/nikic/php-parser/test/code/prettyPrinter/expr/list.test
+++ /dev/null
@@ -1,19 +0,0 @@
-list()
------
-<?php
-
-list() = $a;
-list($a) = $b;
-list($a, $b, $c) = $d;
-list(, $a) = $b;
-list(, , $a, , $b) = $c;
-list(list($a)) = $b;
-list(, list(, list(, $a), $b)) = $c;
------
-list() = $a;
-list($a) = $b;
-list($a, $b, $c) = $d;
-list(, $a) = $b;
-list(, , $a, , $b) = $c;
-list(list($a)) = $b;
-list(, list(, list(, $a), $b)) = $c;
diff --git a/vendor/nikic/php-parser/test/code/prettyPrinter/expr/literals.test b/vendor/nikic/php-parser/test/code/prettyPrinter/expr/literals.test
deleted file mode 100644
index f649b5d0cc..0000000000
--- a/vendor/nikic/php-parser/test/code/prettyPrinter/expr/literals.test
+++ /dev/null
@@ -1,158 +0,0 @@
-Literals
------
-<?php
-
-// magic constants
-__LINE__;
-__FILE__;
-__DIR__;
-__FUNCTION__;
-__CLASS__;
-__TRAIT__;
-__METHOD__;
-__NAMESPACE__;
-
-// not actually literals, but close
-null;
-true;
-false;
-NULL;
-TRUE;
-FALSE;
-
-// integers (normalized to decimal)
-0;
-11;
-011;
-0x11;
-0b11;
-
-// floats (normalized to ... something)
-0.;
-.0;
-0.0;
-0e1000;
-1.0;
-1e100;
-1e1000;
-1E-100;
-1000000000000000000000000000000000000000000000000000000000000000000000000000000000000;
-378282246310005.0;
-10000000000000002.0;
-
-// strings (single quoted)
-'a';
-'a
-b';
-'a\'b';
-'a\b';
-'a\\';
-
-// strings (double quoted)
-"a";
-"a\nb";
-"a'b";
-"a\b";
-"$a";
-"a$b";
-"$a$b";
-"$a $b";
-"a${b}c";
-"a{$b}c";
-"a$a[b]c";
-"\{$A}";
-"\{ $A }";
-"\\{$A}";
-"\\{ $A }";
-"{$$A}[B]";
-"$$A[B]";
-
-// make sure indentation doesn't mess anything up
-function foo()
-{
-    "a\nb";
-    'a
-b';
-    'a
-    b';
-}
-
-// shell exec (similar to double quoted string)
-`foo`;
-`foo$a`;
-`foo{$a}bar`;
-`\`\'\"`;
------
-// magic constants
-__LINE__;
-__FILE__;
-__DIR__;
-__FUNCTION__;
-__CLASS__;
-__TRAIT__;
-__METHOD__;
-__NAMESPACE__;
-// not actually literals, but close
-null;
-true;
-false;
-NULL;
-TRUE;
-FALSE;
-// integers (normalized to decimal)
-0;
-11;
-011;
-0x11;
-0b11;
-// floats (normalized to ... something)
-0.0;
-0.0;
-0.0;
-0.0;
-1.0;
-1.0E+100;
-\INF;
-1.0E-100;
-1.0E+84;
-378282246310005.0;
-10000000000000002.0;
-// strings (single quoted)
-'a';
-'a
-b';
-'a\'b';
-'a\\b';
-'a\\';
-// strings (double quoted)
-"a";
-"a\nb";
-"a'b";
-"a\\b";
-"{$a}";
-"a{$b}";
-"{$a}{$b}";
-"{$a} {$b}";
-"a{$b}c";
-"a{$b}c";
-"a{$a['b']}c";
-"\\{{$A}}";
-"\\{ {$A} }";
-"\\{$A}";
-"\\{ {$A} }";
-"{${$A}}[B]";
-"\${$A['B']}";
-// make sure indentation doesn't mess anything up
-function foo()
-{
-    "a\nb";
-    'a
-b';
-    'a
-    b';
-}
-// shell exec (similar to double quoted string)
-`foo`;
-`foo{$a}`;
-`foo{$a}bar`;
-`\`\\'\\"`;
\ No newline at end of file
diff --git a/vendor/nikic/php-parser/test/code/prettyPrinter/expr/numbers.test b/vendor/nikic/php-parser/test/code/prettyPrinter/expr/numbers.test
deleted file mode 100644
index c85f36bd82..0000000000
--- a/vendor/nikic/php-parser/test/code/prettyPrinter/expr/numbers.test
+++ /dev/null
@@ -1,35 +0,0 @@
-Number literals
------
-<?php
-
-0;
-+0;
--0;
-0.0;
--0.0;
-42;
--42;
-42.0;
--42.0;
-42.5;
--42.5;
-1e42;
--1e42;
-1e1000;
--1e1000;
------
-0;
-+0;
--0;
-0.0;
--0.0;
-42;
--42;
-42.0;
--42.0;
-42.5;
--42.5;
-1.0E+42;
--1.0E+42;
-\INF;
--\INF;
\ No newline at end of file
diff --git a/vendor/nikic/php-parser/test/code/prettyPrinter/expr/operators.test b/vendor/nikic/php-parser/test/code/prettyPrinter/expr/operators.test
deleted file mode 100644
index 2b5ab01d6b..0000000000
--- a/vendor/nikic/php-parser/test/code/prettyPrinter/expr/operators.test
+++ /dev/null
@@ -1,151 +0,0 @@
-Basic operators
------
-<?php
-
-$a ** $b;
-
-++$a;
---$a;
-$a++;
-$a--;
-
-@$a;
-~$a;
--$a;
-+$a;
-
-(int) $a;
-(integer) $a;
-(float) $a;
-(double) $a;
-(real) $a;
-( float) $a;
-(double ) $a;
-( REAL ) $a;
-(string) $a;
-(binary) $a;
-(array) $a;
-(object) $a;
-(bool) $a;
-(boolean) $a;
-(unset) $a;
-
-$a * $b;
-$a / $b;
-$a % $b;
-$a + $b;
-$a - $b;
-$a . $b;
-$a << $b;
-$a >> $b;
-$a < $b;
-$a <= $b;
-$a > $b;
-$a >= $b;
-$a == $b;
-$a != $b;
-$a <> $b;
-$a === $b;
-$a !== $b;
-$a <=> $b;
-$a & $b;
-$a ^ $b;
-$a | $b;
-$a && $b;
-$a || $b;
-$a ? $b : $c;
-$a ?: $c;
-$a ?? $c;
-$a = $b;
-$a **= $b;
-$a ??= $c;
-$a *= $b;
-$a /= $b;
-$a %= $b;
-$a += $b;
-$a -= $b;
-$a .= $b;
-$a <<= $b;
-$a >>= $b;
-$a &= $b;
-$a ^= $b;
-$a |= $b;
-$a =& $b;
-
-$a and $b;
-$a xor $b;
-$a or $b;
-
-$a instanceof Foo;
-$a instanceof $b;
------
-$a ** $b;
-++$a;
---$a;
-$a++;
-$a--;
-@$a;
-~$a;
--$a;
-+$a;
-(int) $a;
-(int) $a;
-(float) $a;
-(double) $a;
-(real) $a;
-(float) $a;
-(double) $a;
-(real) $a;
-(string) $a;
-(string) $a;
-(array) $a;
-(object) $a;
-(bool) $a;
-(bool) $a;
-(unset) $a;
-$a * $b;
-$a / $b;
-$a % $b;
-$a + $b;
-$a - $b;
-$a . $b;
-$a << $b;
-$a >> $b;
-$a < $b;
-$a <= $b;
-$a > $b;
-$a >= $b;
-$a == $b;
-$a != $b;
-$a != $b;
-$a === $b;
-$a !== $b;
-$a <=> $b;
-$a & $b;
-$a ^ $b;
-$a | $b;
-$a && $b;
-$a || $b;
-$a ? $b : $c;
-$a ?: $c;
-$a ?? $c;
-$a = $b;
-$a **= $b;
-$a ??= $c;
-$a *= $b;
-$a /= $b;
-$a %= $b;
-$a += $b;
-$a -= $b;
-$a .= $b;
-$a <<= $b;
-$a >>= $b;
-$a &= $b;
-$a ^= $b;
-$a |= $b;
-$a =& $b;
-$a and $b;
-$a xor $b;
-$a or $b;
-$a instanceof Foo;
-$a instanceof $b;
diff --git a/vendor/nikic/php-parser/test/code/prettyPrinter/expr/parentheses.test b/vendor/nikic/php-parser/test/code/prettyPrinter/expr/parentheses.test
deleted file mode 100644
index a49c1108d2..0000000000
--- a/vendor/nikic/php-parser/test/code/prettyPrinter/expr/parentheses.test
+++ /dev/null
@@ -1,86 +0,0 @@
-Pretty printer generates least-parentheses output
------
-<?php
-
-echo 'abc' . 'cde' . 'fgh';
-echo 'abc' . ('cde' . 'fgh');
-
-echo 'abc' . 1 + 2 . 'fgh';
-echo 'abc' . (1 + 2) . 'fgh';
-
-echo 1 * 2 + 3 / 4 % 5 . 6;
-echo 1 * (2 + 3) / (4 % (5 . 6));
-
-$a = $b = $c = $d = $f && true;
-($a = $b = $c = $d = $f) && true;
-$a = $b = $c = $d = $f and true;
-$a = $b = $c = $d = ($f and true);
-
-$a ? $b : $c ? $d : $e ? $f : $g;
-$a ? $b : ($c ? $d : ($e ? $f : $g));
-$a ? $b ? $c : $d : $f;
-
-$a ?? $b ?? $c;
-($a ?? $b) ?? $c;
-$a ?? ($b ? $c : $d);
-$a || ($b ?? $c);
-
-(1 > 0) > (1 < 0);
-++$a + $b;
-$a + $b++;
-
-$a ** $b ** $c;
-($a ** $b) ** $c;
--1 ** 2;
-
-yield from $a and yield from $b;
-yield from ($a and yield from $b);
-
-print ($a and print $b);
-
--(-$a);
-+(+$a);
--(--$a);
-+(++$a);
-
-// The following will currently add unnecessary parentheses, because the pretty printer is not aware that assignment
-// and incdec only work on variables.
-!$a = $b;
-++$a ** $b;
-$a ** $b++;
------
-echo 'abc' . 'cde' . 'fgh';
-echo 'abc' . ('cde' . 'fgh');
-echo 'abc' . 1 + 2 . 'fgh';
-echo 'abc' . (1 + 2) . 'fgh';
-echo 1 * 2 + 3 / 4 % 5 . 6;
-echo 1 * (2 + 3) / (4 % (5 . 6));
-$a = $b = $c = $d = $f && true;
-($a = $b = $c = $d = $f) && true;
-$a = $b = $c = $d = $f and true;
-$a = $b = $c = $d = ($f and true);
-$a ? $b : $c ? $d : $e ? $f : $g;
-$a ? $b : ($c ? $d : ($e ? $f : $g));
-$a ? $b ? $c : $d : $f;
-$a ?? $b ?? $c;
-($a ?? $b) ?? $c;
-$a ?? ($b ? $c : $d);
-$a || ($b ?? $c);
-(1 > 0) > (1 < 0);
-++$a + $b;
-$a + $b++;
-$a ** $b ** $c;
-($a ** $b) ** $c;
--1 ** 2;
-yield from $a and yield from $b;
-yield from ($a and yield from $b);
-print ($a and print $b);
--(-$a);
-+(+$a);
--(--$a);
-+(++$a);
-// The following will currently add unnecessary parentheses, because the pretty printer is not aware that assignment
-// and incdec only work on variables.
-!($a = $b);
-(++$a) ** $b;
-$a ** ($b++);
diff --git a/vendor/nikic/php-parser/test/code/prettyPrinter/expr/shortArraySyntax.test b/vendor/nikic/php-parser/test/code/prettyPrinter/expr/shortArraySyntax.test
deleted file mode 100644
index 082c2e047f..0000000000
--- a/vendor/nikic/php-parser/test/code/prettyPrinter/expr/shortArraySyntax.test
+++ /dev/null
@@ -1,11 +0,0 @@
-Short array syntax
------
-<?php
-
-[];
-array(1, 2, 3);
-['a' => 'b', 'c' => 'd'];
------
-[];
-array(1, 2, 3);
-['a' => 'b', 'c' => 'd'];
\ No newline at end of file
diff --git a/vendor/nikic/php-parser/test/code/prettyPrinter/expr/stringEscaping.test b/vendor/nikic/php-parser/test/code/prettyPrinter/expr/stringEscaping.test
deleted file mode 100644
index 02877ad328..0000000000
--- a/vendor/nikic/php-parser/test/code/prettyPrinter/expr/stringEscaping.test
+++ /dev/null
@@ -1,23 +0,0 @@
-Escape sequences in double-quoted strings
------
-<?php
-"\n\r\t\f\v\$\"\\";
-"@@{ implode(range("\0", "\37")) }@@";
-"\0000\0001";
-
-<<<DOC
-\n\r\t\f\v\$\"\\
-@@{ implode(range("\0", "\37")) }@@
-\0000\0001
-DOC;
-
------
-"\n\r\t\f\v\$\"\\";
-"\0\1\2\3\4\5\6\7\10\t\n\v\f\r\16\17\20\21\22\23\24\25\26\27\30\31\32\33\34\35\36\37";
-"\0000\0001";
-<<<DOC
-@@{ "\n\r" }@@\t\f\v\$\\"\\
-\0\1\2\3\4\5\6\7\10\t@@{ "\n" }@@\v\f@@{ "\r" }@@\16\17\20\21\22\23\24\25\26\27\30\31\32\33\34\35\36\37
-\0000\0001
-DOC
-;
\ No newline at end of file
diff --git a/vendor/nikic/php-parser/test/code/prettyPrinter/expr/uvs.test b/vendor/nikic/php-parser/test/code/prettyPrinter/expr/uvs.test
deleted file mode 100644
index e336fb578a..0000000000
--- a/vendor/nikic/php-parser/test/code/prettyPrinter/expr/uvs.test
+++ /dev/null
@@ -1,23 +0,0 @@
-Uniform variable syntax
------
-<?php
-
-(function() {})();
-array('a', 'b')()();
-A::$b::$c;
-$A::$b[$c]();
-$A::{$b[$c]}();
-A::$$b[$c]();
-($a->b)();
-(A::$b)();
------
-!!php7
-(function () {
-})();
-array('a', 'b')()();
-A::$b::$c;
-$A::$b[$c]();
-$A::{$b[$c]}();
-A::${$b}[$c]();
-($a->b)();
-(A::$b)();
diff --git a/vendor/nikic/php-parser/test/code/prettyPrinter/expr/variables.test b/vendor/nikic/php-parser/test/code/prettyPrinter/expr/variables.test
deleted file mode 100644
index 4e0fa2e123..0000000000
--- a/vendor/nikic/php-parser/test/code/prettyPrinter/expr/variables.test
+++ /dev/null
@@ -1,73 +0,0 @@
-Variables
------
-<?php
-
-$a;
-$$a;
-${$a};
-$a->b;
-$a->b();
-$a->b($c);
-$a->$b();
-$a->{$b}();
-$a->$b[$c]();
-$$a->b;
-$a[$b];
-$a[$b]();
-$$a[$b];
-$a::B;
-$a::$b;
-$a::b();
-$a::b($c);
-$a::$b();
-$a::$b[$c];
-$a::$b[$c]($d);
-$a::{$b[$c]}($d);
-$a::{$b->c}();
-A::$$b[$c]();
-a();
-$a();
-$a()[$b];
-$a->b()[$c];
-$a::$b()[$c];
-(new A)->b;
-(new A())->b();
-(new $$a)[$b];
-(new $a->b)->c;
-
-global $a, $$a, $$a[$b], $$a->b;
------
-!!php5
-$a;
-${$a};
-${$a};
-$a->b;
-$a->b();
-$a->b($c);
-$a->{$b}();
-$a->{$b}();
-$a->{$b[$c]}();
-${$a}->b;
-$a[$b];
-$a[$b]();
-${$a[$b]};
-$a::B;
-$a::$b;
-$a::b();
-$a::b($c);
-$a::$b();
-$a::$b[$c];
-$a::{$b[$c]}($d);
-$a::{$b[$c]}($d);
-$a::{$b->c}();
-A::${$b[$c]}();
-a();
-$a();
-$a()[$b];
-$a->b()[$c];
-$a::$b()[$c];
-(new A())->b;
-(new A())->b();
-(new ${$a}())[$b];
-(new $a->b())->c;
-global $a, ${$a}, ${$a[$b]}, ${$a->b};
diff --git a/vendor/nikic/php-parser/test/code/prettyPrinter/expr/yield.test b/vendor/nikic/php-parser/test/code/prettyPrinter/expr/yield.test
deleted file mode 100644
index 12ab7dec1c..0000000000
--- a/vendor/nikic/php-parser/test/code/prettyPrinter/expr/yield.test
+++ /dev/null
@@ -1,46 +0,0 @@
-Yield
------
-<?php
-
-function gen()
-{
-    yield;
-    yield $a;
-    yield $a => $b;
-    $a = yield;
-    $a = (yield $b);
-    $a = (yield $b => $c);
-}
-// TODO Get rid of parens for cases 2 and 3
------
-function gen()
-{
-    yield;
-    (yield $a);
-    (yield $a => $b);
-    $a = yield;
-    $a = (yield $b);
-    $a = (yield $b => $c);
-}
-// TODO Get rid of parens for cases 2 and 3
------
-<?php
-
-function gen()
-{
-    $a = yield $b;
-    $a = yield $b => $c;
-    yield from $a;
-    $a = yield from $b;
-}
-// TODO Get rid of parens for last case
------
-!!php7
-function gen()
-{
-    $a = (yield $b);
-    $a = (yield $b => $c);
-    yield from $a;
-    $a = (yield from $b);
-}
-// TODO Get rid of parens for last case
\ No newline at end of file
diff --git a/vendor/nikic/php-parser/test/code/prettyPrinter/inlineHTMLandPHPtest.file-test b/vendor/nikic/php-parser/test/code/prettyPrinter/inlineHTMLandPHPtest.file-test
deleted file mode 100644
index b33eb527df..0000000000
--- a/vendor/nikic/php-parser/test/code/prettyPrinter/inlineHTMLandPHPtest.file-test
+++ /dev/null
@@ -1,58 +0,0 @@
-File containing both inline HTML and PHP
------
-HTML
-<?php
-echo 'PHP';
------
-HTML
-<?php
-echo 'PHP';
------
-<?php
-echo 'PHP';
-?>
-HTML
------
-<?php
-
-echo 'PHP';
-?>
-HTML
------
-HTML
-<?php
-echo 'PHP';
-?>
-HTML
------
-HTML
-<?php
-echo 'PHP';
-?>
-HTML
------
-HTML
-<?php
-echo 'PHP';
-?>
-HTML
-<?php
-echo 'PHP';
-?>
-HTML
------
-HTML
-<?php
-echo 'PHP';
-?>
-HTML
-<?php
-echo 'PHP';
-?>
-HTML
------
-HTML<?php echo 'PHP'; ?>HTML
------
-HTML<?php
-echo 'PHP';
-?>HTML
\ No newline at end of file
diff --git a/vendor/nikic/php-parser/test/code/prettyPrinter/nestedInlineHTML.test b/vendor/nikic/php-parser/test/code/prettyPrinter/nestedInlineHTML.test
deleted file mode 100644
index bc611f7b95..0000000000
--- a/vendor/nikic/php-parser/test/code/prettyPrinter/nestedInlineHTML.test
+++ /dev/null
@@ -1,16 +0,0 @@
-InlineHTML node nested inside other code
------
-<?php
-
-function test() {
-    ?>
-Test
-    <?php
-}
------
-function test()
-{
-    ?>
-Test
-    <?php
-}
\ No newline at end of file
diff --git a/vendor/nikic/php-parser/test/code/prettyPrinter/onlyInlineHTML.file-test b/vendor/nikic/php-parser/test/code/prettyPrinter/onlyInlineHTML.file-test
deleted file mode 100644
index e980719140..0000000000
--- a/vendor/nikic/php-parser/test/code/prettyPrinter/onlyInlineHTML.file-test
+++ /dev/null
@@ -1,19 +0,0 @@
-File containing only inline HTML
------
-Hallo World
-Foo Bar
-Bar Foo
-World Hallo
------
-Hallo World
-Foo Bar
-Bar Foo
-World Hallo
------
-
-
-Test
------
-
-
-Test
\ No newline at end of file
diff --git a/vendor/nikic/php-parser/test/code/prettyPrinter/onlyPHP.file-test b/vendor/nikic/php-parser/test/code/prettyPrinter/onlyPHP.file-test
deleted file mode 100644
index 9550b107ef..0000000000
--- a/vendor/nikic/php-parser/test/code/prettyPrinter/onlyPHP.file-test
+++ /dev/null
@@ -1,16 +0,0 @@
-File containing only PHP
------
-<?php
-
-echo 'Foo Bar';
-echo 'Bar Foo';
------
-<?php
-
-echo 'Foo Bar';
-echo 'Bar Foo';
------
-<?php
-
------
-<?php
diff --git a/vendor/nikic/php-parser/test/code/prettyPrinter/stmt/alias.test b/vendor/nikic/php-parser/test/code/prettyPrinter/stmt/alias.test
deleted file mode 100644
index ef5695d8e6..0000000000
--- a/vendor/nikic/php-parser/test/code/prettyPrinter/stmt/alias.test
+++ /dev/null
@@ -1,20 +0,0 @@
-Aliases (namespacing)
------
-<?php
-
-use A\B;
-use C\D as E;
-use F\G as H, J;
-
-use function foo\bar;
-use function foo\bar as baz;
-use const foo\BAR;
-use const foo\BAR as BAZ;
------
-use A\B;
-use C\D as E;
-use F\G as H, J;
-use function foo\bar;
-use function foo\bar as baz;
-use const foo\BAR;
-use const foo\BAR as BAZ;
\ No newline at end of file
diff --git a/vendor/nikic/php-parser/test/code/prettyPrinter/stmt/break_continue.test b/vendor/nikic/php-parser/test/code/prettyPrinter/stmt/break_continue.test
deleted file mode 100644
index 4773df1d3e..0000000000
--- a/vendor/nikic/php-parser/test/code/prettyPrinter/stmt/break_continue.test
+++ /dev/null
@@ -1,13 +0,0 @@
-break/continue
------
-<?php
-
-continue;
-continue 2;
-break;
-break 2;
------
-continue;
-continue 2;
-break;
-break 2;
\ No newline at end of file
diff --git a/vendor/nikic/php-parser/test/code/prettyPrinter/stmt/class.test b/vendor/nikic/php-parser/test/code/prettyPrinter/stmt/class.test
deleted file mode 100644
index 5225d2a6ec..0000000000
--- a/vendor/nikic/php-parser/test/code/prettyPrinter/stmt/class.test
+++ /dev/null
@@ -1,53 +0,0 @@
-Class
------
-<?php
-
-class Foo extends Bar implements ABC, \DEF, namespace\GHI
-{
-    var $a = 'foo';
-    private $b = 'bar';
-    static $c = 'baz';
-    function test()
-    {
-        $this->a = 'bar';
-        echo 'test';
-    }
-
-    protected function baz() {}
-    public function foo() {}
-    abstract static function bar() {}
-}
-
-trait Bar
-{
-    function test()
-    {
-    }
-}
------
-class Foo extends Bar implements ABC, \DEF, namespace\GHI
-{
-    var $a = 'foo';
-    private $b = 'bar';
-    static $c = 'baz';
-    function test()
-    {
-        $this->a = 'bar';
-        echo 'test';
-    }
-    protected function baz()
-    {
-    }
-    public function foo()
-    {
-    }
-    static abstract function bar()
-    {
-    }
-}
-trait Bar
-{
-    function test()
-    {
-    }
-}
\ No newline at end of file
diff --git a/vendor/nikic/php-parser/test/code/prettyPrinter/stmt/class_const.test b/vendor/nikic/php-parser/test/code/prettyPrinter/stmt/class_const.test
deleted file mode 100644
index e73ad4304b..0000000000
--- a/vendor/nikic/php-parser/test/code/prettyPrinter/stmt/class_const.test
+++ /dev/null
@@ -1,20 +0,0 @@
-Class constants
------
-<?php
-
-class Foo
-{
-    const A = 1, B = 2;
-    public const C = 3, D = 4;
-    protected const E = 5, F = 6;
-    private const G = 7, H = 8;
-}
------
-!!php7
-class Foo
-{
-    const A = 1, B = 2;
-    public const C = 3, D = 4;
-    protected const E = 5, F = 6;
-    private const G = 7, H = 8;
-}
\ No newline at end of file
diff --git a/vendor/nikic/php-parser/test/code/prettyPrinter/stmt/const.test b/vendor/nikic/php-parser/test/code/prettyPrinter/stmt/const.test
deleted file mode 100644
index 6b1764206b..0000000000
--- a/vendor/nikic/php-parser/test/code/prettyPrinter/stmt/const.test
+++ /dev/null
@@ -1,11 +0,0 @@
-Constant declarations
------
-<?php
-
-const FOO = 'BAR';
-const FOO = 1 + 1;
-const FOO = BAR, BAR = FOO;
------
-const FOO = 'BAR';
-const FOO = 1 + 1;
-const FOO = BAR, BAR = FOO;
\ No newline at end of file
diff --git a/vendor/nikic/php-parser/test/code/prettyPrinter/stmt/declare.test b/vendor/nikic/php-parser/test/code/prettyPrinter/stmt/declare.test
deleted file mode 100644
index fd48e6953d..0000000000
--- a/vendor/nikic/php-parser/test/code/prettyPrinter/stmt/declare.test
+++ /dev/null
@@ -1,17 +0,0 @@
-declare
------
-<?php
-
-declare (strict_types=1);
-declare (ticks=1) {
-    foo();
-}
-declare (ticks=2) {
-}
------
-declare (strict_types=1);
-declare (ticks=1) {
-    foo();
-}
-declare (ticks=2) {
-}
\ No newline at end of file
diff --git a/vendor/nikic/php-parser/test/code/prettyPrinter/stmt/do_while.test b/vendor/nikic/php-parser/test/code/prettyPrinter/stmt/do_while.test
deleted file mode 100644
index 532d475a04..0000000000
--- a/vendor/nikic/php-parser/test/code/prettyPrinter/stmt/do_while.test
+++ /dev/null
@@ -1,10 +0,0 @@
-doWhile
------
-<?php
-
-do {
-
-} while (true);
------
-do {
-} while (true);
\ No newline at end of file
diff --git a/vendor/nikic/php-parser/test/code/prettyPrinter/stmt/for.test b/vendor/nikic/php-parser/test/code/prettyPrinter/stmt/for.test
deleted file mode 100644
index ef7ac4a93b..0000000000
--- a/vendor/nikic/php-parser/test/code/prettyPrinter/stmt/for.test
+++ /dev/null
@@ -1,28 +0,0 @@
-for
------
-<?php
-
-for ($i = 0; $i < 10; $i++) {
-
-}
-
-for ($i = 0,$j = 0; $i < 10; $i++) {
-
-}
-
-for ($i = 0; $i < 10;) {
-
-}
-
-for (;;) {
-
-}
------
-for ($i = 0; $i < 10; $i++) {
-}
-for ($i = 0, $j = 0; $i < 10; $i++) {
-}
-for ($i = 0; $i < 10;) {
-}
-for (;;) {
-}
\ No newline at end of file
diff --git a/vendor/nikic/php-parser/test/code/prettyPrinter/stmt/foreach.test b/vendor/nikic/php-parser/test/code/prettyPrinter/stmt/foreach.test
deleted file mode 100644
index 44c3a1acff..0000000000
--- a/vendor/nikic/php-parser/test/code/prettyPrinter/stmt/foreach.test
+++ /dev/null
@@ -1,28 +0,0 @@
-foreach
------
-<?php
-
-foreach ($arr as $val) {
-
-}
-
-foreach ($arr as &$val) {
-
-}
-
-foreach ($arr as $key => $val) {
-
-}
-
-foreach ($arr as $key => &$val) {
-
-}
------
-foreach ($arr as $val) {
-}
-foreach ($arr as &$val) {
-}
-foreach ($arr as $key => $val) {
-}
-foreach ($arr as $key => &$val) {
-}
\ No newline at end of file
diff --git a/vendor/nikic/php-parser/test/code/prettyPrinter/stmt/function_signatures.test b/vendor/nikic/php-parser/test/code/prettyPrinter/stmt/function_signatures.test
deleted file mode 100644
index af1088a051..0000000000
--- a/vendor/nikic/php-parser/test/code/prettyPrinter/stmt/function_signatures.test
+++ /dev/null
@@ -1,43 +0,0 @@
-Function signatures
------
-<?php
-
-interface A
-{
-    function f1();
-    function f2($a, $b);
-    function f3(&$a);
-    function f4(A\B $a);
-    function f4(array $a);
-    function f5(callable $a);
-    function f6(&$a);
-    function f7(...$a);
-    function f8(&...$a);
-    function f9(A &$a);
-    function f10(A ...$a);
-    function f11(A &$a);
-    function f12(A &...$a);
-    function f13($a) : array;
-    function f14($a) : callable;
-    function f15($a) : B\C;
-}
------
-interface A
-{
-    function f1();
-    function f2($a, $b);
-    function f3(&$a);
-    function f4(A\B $a);
-    function f4(array $a);
-    function f5(callable $a);
-    function f6(&$a);
-    function f7(...$a);
-    function f8(&...$a);
-    function f9(A &$a);
-    function f10(A ...$a);
-    function f11(A &$a);
-    function f12(A &...$a);
-    function f13($a) : array;
-    function f14($a) : callable;
-    function f15($a) : B\C;
-}
diff --git a/vendor/nikic/php-parser/test/code/prettyPrinter/stmt/global_static_variables.test b/vendor/nikic/php-parser/test/code/prettyPrinter/stmt/global_static_variables.test
deleted file mode 100644
index eea776a5ab..0000000000
--- a/vendor/nikic/php-parser/test/code/prettyPrinter/stmt/global_static_variables.test
+++ /dev/null
@@ -1,11 +0,0 @@
-Global and static variables
------
-<?php
-
-global $a, $$a, ${$a[$a]};
-static $a, $b;
-static $a = 'foo', $b = 'bar';
------
-global $a, ${$a}, ${$a[$a]};
-static $a, $b;
-static $a = 'foo', $b = 'bar';
\ No newline at end of file
diff --git a/vendor/nikic/php-parser/test/code/prettyPrinter/stmt/goto.test b/vendor/nikic/php-parser/test/code/prettyPrinter/stmt/goto.test
deleted file mode 100644
index 61c781200c..0000000000
--- a/vendor/nikic/php-parser/test/code/prettyPrinter/stmt/goto.test
+++ /dev/null
@@ -1,9 +0,0 @@
-goto
------
-<?php
-
-marker:
-goto marker;
------
-marker:
-goto marker;
\ No newline at end of file
diff --git a/vendor/nikic/php-parser/test/code/prettyPrinter/stmt/groupUse.test b/vendor/nikic/php-parser/test/code/prettyPrinter/stmt/groupUse.test
deleted file mode 100644
index de086c8773..0000000000
--- a/vendor/nikic/php-parser/test/code/prettyPrinter/stmt/groupUse.test
+++ /dev/null
@@ -1,16 +0,0 @@
-Group use declaration
------
-<?php
-use A\{B};
-use A\{B\C, D};
-use A\B\{C\D, E};
-use function A\{b\c, d};
-use const A\{B\C, D};
-use A\B\{C\D, function b\c, const D};
------
-use A\{B};
-use A\{B\C, D};
-use A\B\{C\D, E};
-use function A\{b\c, d};
-use const A\{B\C, D};
-use A\B\{C\D, function b\c, const D};
diff --git a/vendor/nikic/php-parser/test/code/prettyPrinter/stmt/haltCompiler.file-test b/vendor/nikic/php-parser/test/code/prettyPrinter/stmt/haltCompiler.file-test
deleted file mode 100644
index a427a64c82..0000000000
--- a/vendor/nikic/php-parser/test/code/prettyPrinter/stmt/haltCompiler.file-test
+++ /dev/null
@@ -1,27 +0,0 @@
-__halt_compiler
------
-<?php
-
-echo 'foo';
-__halt_compiler();
-!!!
-???
------
-<?php
-
-echo 'foo';
-__halt_compiler();
-!!!
-???
------
-<?php
-
-echo 'foo';
-__halt_compiler();
-<?php
------
-<?php
-
-echo 'foo';
-__halt_compiler();
-<?php
\ No newline at end of file
diff --git a/vendor/nikic/php-parser/test/code/prettyPrinter/stmt/if.test b/vendor/nikic/php-parser/test/code/prettyPrinter/stmt/if.test
deleted file mode 100644
index 8debb2ec38..0000000000
--- a/vendor/nikic/php-parser/test/code/prettyPrinter/stmt/if.test
+++ /dev/null
@@ -1,16 +0,0 @@
-if/elseif/else
------
-<?php
-
-if ($expr) {
-
-} elseif ($expr2) {
-
-} else {
-
-}
------
-if ($expr) {
-} elseif ($expr2) {
-} else {
-}
\ No newline at end of file
diff --git a/vendor/nikic/php-parser/test/code/prettyPrinter/stmt/multiCatch.test b/vendor/nikic/php-parser/test/code/prettyPrinter/stmt/multiCatch.test
deleted file mode 100644
index 8e3f12b4d8..0000000000
--- a/vendor/nikic/php-parser/test/code/prettyPrinter/stmt/multiCatch.test
+++ /dev/null
@@ -1,19 +0,0 @@
-Multi catch
------
-<?php
-try {
-    $x;
-} catch (X|Y $e1) {
-    $y;
-} catch (\A|B\C $e2) {
-    $z;
-}
------
-!!php7
-try {
-    $x;
-} catch (X|Y $e1) {
-    $y;
-} catch (\A|B\C $e2) {
-    $z;
-}
\ No newline at end of file
diff --git a/vendor/nikic/php-parser/test/code/prettyPrinter/stmt/namespaces.test b/vendor/nikic/php-parser/test/code/prettyPrinter/stmt/namespaces.test
deleted file mode 100644
index 939470b5bc..0000000000
--- a/vendor/nikic/php-parser/test/code/prettyPrinter/stmt/namespaces.test
+++ /dev/null
@@ -1,50 +0,0 @@
-Namespaces
------
-<?php
-
-namespace Foo;
-
-function foo()
-{
-}
-
-namespace Bar;
-
-function bar()
-{
-}
------
-namespace Foo;
-
-function foo()
-{
-}
-namespace Bar;
-
-function bar()
-{
-}
------
-<?php
-
-namespace Foo {
-    function foo()
-    {
-    }
-}
-
-namespace {
-    function glob() {
-    }
-}
------
-namespace Foo {
-    function foo()
-    {
-    }
-}
-namespace {
-    function glob()
-    {
-    }
-}
\ No newline at end of file
diff --git a/vendor/nikic/php-parser/test/code/prettyPrinter/stmt/nullable_types.test b/vendor/nikic/php-parser/test/code/prettyPrinter/stmt/nullable_types.test
deleted file mode 100644
index 6a40e2019a..0000000000
--- a/vendor/nikic/php-parser/test/code/prettyPrinter/stmt/nullable_types.test
+++ /dev/null
@@ -1,11 +0,0 @@
-Nullable types
------
-<?php
-function test(?Foo $bar, ?string $foo, ?\Xyz $zyx) : ?Baz
-{
-}
------
-!!php7
-function test(?Foo $bar, ?string $foo, ?\Xyz $zyx) : ?Baz
-{
-}
\ No newline at end of file
diff --git a/vendor/nikic/php-parser/test/code/prettyPrinter/stmt/properties.test b/vendor/nikic/php-parser/test/code/prettyPrinter/stmt/properties.test
deleted file mode 100644
index 5a78ec4929..0000000000
--- a/vendor/nikic/php-parser/test/code/prettyPrinter/stmt/properties.test
+++ /dev/null
@@ -1,20 +0,0 @@
-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/code/prettyPrinter/stmt/switch.test b/vendor/nikic/php-parser/test/code/prettyPrinter/stmt/switch.test
deleted file mode 100644
index 871ff54baa..0000000000
--- a/vendor/nikic/php-parser/test/code/prettyPrinter/stmt/switch.test
+++ /dev/null
@@ -1,37 +0,0 @@
-switch/case/default
------
-<?php
-
-switch ($expr) {
-    case 0:
-        echo 'First case, with a break';
-        break;
-    case 1:
-        echo 'Second case, which falls through';
-    case 2:
-    case 3:
-    case 4:
-        echo 'Third case, return instead of break';
-        return;
-    // Comment
-    default:
-        echo 'Default case';
-        break;
-}
------
-switch ($expr) {
-    case 0:
-        echo 'First case, with a break';
-        break;
-    case 1:
-        echo 'Second case, which falls through';
-    case 2:
-    case 3:
-    case 4:
-        echo 'Third case, return instead of break';
-        return;
-    // Comment
-    default:
-        echo 'Default case';
-        break;
-}
\ No newline at end of file
diff --git a/vendor/nikic/php-parser/test/code/prettyPrinter/stmt/throw.test b/vendor/nikic/php-parser/test/code/prettyPrinter/stmt/throw.test
deleted file mode 100644
index 23408936a5..0000000000
--- a/vendor/nikic/php-parser/test/code/prettyPrinter/stmt/throw.test
+++ /dev/null
@@ -1,7 +0,0 @@
-throw
------
-<?php
-
-throw $e;
------
-throw $e;
\ No newline at end of file
diff --git a/vendor/nikic/php-parser/test/code/prettyPrinter/stmt/traitUse.test b/vendor/nikic/php-parser/test/code/prettyPrinter/stmt/traitUse.test
deleted file mode 100644
index 7455ea008b..0000000000
--- a/vendor/nikic/php-parser/test/code/prettyPrinter/stmt/traitUse.test
+++ /dev/null
@@ -1,25 +0,0 @@
-Trait uses and adaptations
------
-<?php
-
-class A
-{
-    use B, C, D {
-        f as g;
-        f as private;
-        f as private g;
-        B::f as g;
-        B::f insteadof C, D;
-    }
-}
------
-class A
-{
-    use B, C, D {
-        f as g;
-        f as private;
-        f as private g;
-        B::f as g;
-        B::f insteadof C, D;
-    }
-}
\ No newline at end of file
diff --git a/vendor/nikic/php-parser/test/code/prettyPrinter/stmt/tryCatch.test b/vendor/nikic/php-parser/test/code/prettyPrinter/stmt/tryCatch.test
deleted file mode 100644
index 044934de97..0000000000
--- a/vendor/nikic/php-parser/test/code/prettyPrinter/stmt/tryCatch.test
+++ /dev/null
@@ -1,24 +0,0 @@
-tryCatch
------
-<?php
-
-try {
-
-} catch (Exception $e) {
-
-}
-
-try {
-} catch (Exception $e) {
-
-} finally {
-
-}
------
-try {
-} catch (Exception $e) {
-}
-try {
-} catch (Exception $e) {
-} finally {
-}
\ No newline at end of file
diff --git a/vendor/nikic/php-parser/test/code/prettyPrinter/stmt/while.test b/vendor/nikic/php-parser/test/code/prettyPrinter/stmt/while.test
deleted file mode 100644
index 4e6dadaeb9..0000000000
--- a/vendor/nikic/php-parser/test/code/prettyPrinter/stmt/while.test
+++ /dev/null
@@ -1,10 +0,0 @@
-while
------
-<?php
-
-while (true) {
-
-}
------
-while (true) {
-}
\ No newline at end of file
diff --git a/vendor/nikic/php-parser/test/updateTests.php b/vendor/nikic/php-parser/test/updateTests.php
deleted file mode 100644
index 40d0d0a965..0000000000
--- a/vendor/nikic/php-parser/test/updateTests.php
+++ /dev/null
@@ -1,32 +0,0 @@
-<?php
-
-namespace PhpParser;
-
-require __DIR__ . '/bootstrap.php';
-require __DIR__ . '/PhpParser/CodeTestParser.php';
-require __DIR__ . '/PhpParser/CodeParsingTest.php';
-
-$dir = __DIR__ . '/code/parser';
-
-$testParser = new CodeTestParser;
-$codeParsingTest = new CodeParsingTest;
-foreach (filesInDir($dir, 'test') as $fileName => $code) {
-    if (false !== strpos($code, '@@{')) {
-        // Skip tests with evaluate segments
-        continue;
-    }
-
-    list($name, $tests) = $testParser->parseTest($code, 2);
-    $newTests = [];
-    foreach ($tests as list($modeLine, list($input, $expected))) {
-        $modes = null !== $modeLine ? array_fill_keys(explode(',', $modeLine), true) : [];
-        list($parser5, $parser7) = $codeParsingTest->createParsers($modes);
-        list(, $output) = isset($modes['php5'])
-            ? $codeParsingTest->getParseOutput($parser5, $input, $modes)
-            : $codeParsingTest->getParseOutput($parser7, $input, $modes);
-        $newTests[] = [$modeLine, [$input, $output]];
-    }
-
-    $newCode = $testParser->reconstructTest($name, $newTests);
-    file_put_contents($fileName, $newCode);
-}
diff --git a/vendor/nikic/php-parser/test_old/run-php-src.sh b/vendor/nikic/php-parser/test_old/run-php-src.sh
deleted file mode 100755
index d4f3889469..0000000000
--- a/vendor/nikic/php-parser/test_old/run-php-src.sh
+++ /dev/null
@@ -1,4 +0,0 @@
-wget -q https://github.com/php/php-src/archive/PHP-7.4.tar.gz
-mkdir -p ./data/php-src
-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
deleted file mode 100644
index 8b74ab479b..0000000000
--- a/vendor/nikic/php-parser/test_old/run.php
+++ /dev/null
@@ -1,271 +0,0 @@
-<?php
-
-error_reporting(E_ALL | E_STRICT);
-ini_set('short_open_tag', false);
-
-if ('cli' !== php_sapi_name()) {
-    die('This script is designed for running on the command line.');
-}
-
-function showHelp($error) {
-    die($error . "\n\n" .
-<<<OUTPUT
-This script has to be called with the following signature:
-
-    php run.php [--no-progress] testType pathToTestFiles
-
-The test type must be one of: PHP5, PHP7 or Symfony.
-
-The following options are available:
-
-    --no-progress    Disables showing which file is currently tested.
-
-OUTPUT
-    );
-}
-
-$options = array();
-$arguments = array();
-
-// remove script name from argv
-array_shift($argv);
-
-foreach ($argv as $arg) {
-    if ('-' === $arg[0]) {
-        $options[] = $arg;
-    } else {
-        $arguments[] = $arg;
-    }
-}
-
-if (count($arguments) !== 2) {
-    showHelp('Too little arguments passed!');
-}
-
-$showProgress = true;
-$verbose = false;
-foreach ($options as $option) {
-    if ($option === '--no-progress') {
-        $showProgress = false;
-    } elseif ($option === '--verbose') {
-        $verbose = true;
-    } else {
-        showHelp('Invalid option passed!');
-    }
-}
-
-$testType = $arguments[0];
-$dir = $arguments[1];
-
-switch ($testType) {
-    case 'Symfony':
-        $version = 'Php7';
-        $fileFilter = function($path) {
-            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;
-        };
-        break;
-    case 'PHP5':
-    case 'PHP7':
-    $version = $testType === 'PHP5' ? 'Php5' : 'Php7';
-        $fileFilter = function($path) {
-            return preg_match('~\.phpt$~', $path);
-        };
-        $codeExtractor = function($file, $code) {
-            if (preg_match('~(?:
-# skeleton files
-  ext.gmp.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*(.*?)\n--[A-Z]+--~s', $code, $matches)) {
-                return null;
-            }
-            if (preg_match('~--EXPECT(?:F|REGEX)?--\s*(?:Parse|Fatal) error~', $code)) {
-                return null;
-            }
-
-            return $matches[1];
-        };
-        break;
-    default:
-        showHelp('Test type must be one of: PHP5, PHP7 or Symfony');
-}
-
-require_once __DIR__ . '/../vendor/autoload.php';
-
-$lexer = new PhpParser\Lexer\Emulative(['usedAttributes' => [
-    'comments', 'startLine', 'endLine', 'startTokenPos', 'endTokenPos',
-]]);
-$parserName = 'PhpParser\Parser\\' . $version;
-/** @var PhpParser\Parser $parser */
-$parser = new $parserName($lexer);
-$prettyPrinter = new PhpParser\PrettyPrinter\Standard;
-$nodeDumper = new PhpParser\NodeDumper;
-
-$cloningTraverser = new PhpParser\NodeTraverser;
-$cloningTraverser->addVisitor(new PhpParser\NodeVisitor\CloningVisitor);
-
-$parseFail = $fpppFail = $ppFail = $compareFail = $count = 0;
-
-$readTime = $parseTime = $cloneTime = 0;
-$fpppTime = $ppTime = $reparseTime = $compareTime = 0;
-$totalStartTime = microtime(true);
-
-foreach (new RecursiveIteratorIterator(
-             new RecursiveDirectoryIterator($dir),
-             RecursiveIteratorIterator::LEAVES_ONLY)
-         as $file) {
-    if (!$fileFilter($file)) {
-        continue;
-    }
-
-    $startTime = microtime(true);
-    $origCode = file_get_contents($file);
-    $readTime += microtime(true) - $startTime;
-
-    if (null === $origCode = $codeExtractor($file, $origCode)) {
-        continue;
-    }
-
-    set_time_limit(10);
-
-    ++$count;
-
-    if ($showProgress) {
-        echo substr(str_pad('Testing file ' . $count . ': ' . substr($file, strlen($dir)), 79), 0, 79), "\r";
-    }
-
-    try {
-        $startTime = microtime(true);
-        $origStmts = $parser->parse($origCode);
-        $parseTime += microtime(true) - $startTime;
-
-        $origTokens = $lexer->getTokens();
-
-        $startTime = microtime(true);
-        $stmts = $cloningTraverser->traverse($origStmts);
-        $cloneTime += microtime(true) - $startTime;
-
-        $startTime = microtime(true);
-        $code = $prettyPrinter->printFormatPreserving($stmts, $origStmts, $origTokens);
-        $fpppTime += microtime(true) - $startTime;
-
-        if ($code !== $origCode) {
-            echo $file, ":\n Result of format-preserving pretty-print differs\n";
-            if ($verbose) {
-                echo "FPPP output:\n=====\n$code\n=====\n\n";
-            }
-
-            ++$fpppFail;
-        }
-
-        $startTime = microtime(true);
-        $code = "<?php\n" . $prettyPrinter->prettyPrint($stmts);
-        $ppTime += microtime(true) - $startTime;
-
-        try {
-            $startTime = microtime(true);
-            $ppStmts = $parser->parse($code);
-            $reparseTime += microtime(true) - $startTime;
-
-            $startTime = microtime(true);
-            $same = $nodeDumper->dump($stmts) == $nodeDumper->dump($ppStmts);
-            $compareTime += microtime(true) - $startTime;
-
-            if (!$same) {
-                echo $file, ":\n    Result of initial parse and parse after pretty print differ\n";
-                if ($verbose) {
-                    echo "Pretty printer output:\n=====\n$code\n=====\n\n";
-                }
-
-                ++$compareFail;
-            }
-        } catch (PhpParser\Error $e) {
-            echo $file, ":\n    Parse of pretty print failed with message: {$e->getMessage()}\n";
-            if ($verbose) {
-                echo "Pretty printer output:\n=====\n$code\n=====\n\n";
-            }
-
-            ++$ppFail;
-        }
-    } catch (PhpParser\Error $e) {
-        echo $file, ":\n    Parse failed with message: {$e->getMessage()}\n";
-
-        ++$parseFail;
-    }
-}
-
-if (0 === $parseFail && 0 === $ppFail && 0 === $compareFail) {
-    $exit = 0;
-    echo "\n\n", 'All tests passed.', "\n";
-} else {
-    $exit = 1;
-    echo "\n\n", '==========', "\n\n", 'There were: ', "\n";
-    if (0 !== $parseFail) {
-        echo '    ', $parseFail,   ' parse failures.',        "\n";
-    }
-    if (0 !== $ppFail) {
-        echo '    ', $ppFail,      ' pretty print failures.', "\n";
-    }
-    if (0 !== $fpppFail) {
-        echo '    ', $fpppFail,      ' FPPP failures.', "\n";
-    }
-    if (0 !== $compareFail) {
-        echo '    ', $compareFail, ' compare failures.',      "\n";
-    }
-}
-
-echo "\n",
-     'Tested files:         ', $count,        "\n",
-     "\n",
-     'Reading files took:   ', $readTime,    "\n",
-     'Parsing took:         ', $parseTime,   "\n",
-     'Cloning took:         ', $cloneTime,   "\n",
-     'FPPP took:            ', $fpppTime,    "\n",
-     'Pretty printing took: ', $ppTime,      "\n",
-     'Reparsing took:       ', $reparseTime, "\n",
-     'Comparing took:       ', $compareTime, "\n",
-     "\n",
-     'Total time:           ', microtime(true) - $totalStartTime, "\n",
-     'Maximum memory usage: ', memory_get_peak_usage(true), "\n";
-
-exit($exit);
diff --git a/vendor/oomphinc/composer-installers-extender/.editorconfig b/vendor/oomphinc/composer-installers-extender/.editorconfig
new file mode 100644
index 0000000000..4fef870856
--- /dev/null
+++ b/vendor/oomphinc/composer-installers-extender/.editorconfig
@@ -0,0 +1,18 @@
+# This file is for unifying the coding style for different editors and IDEs
+# editorconfig.org
+
+# PHP PSR-2 Coding Standards
+# http://www.php-fig.org/psr/psr-2/
+
+root = true
+
+[*]
+charset = utf-8
+end_of_line = lf
+insert_final_newline = true
+trim_trailing_whitespace = true
+indent_style = space
+indent_size = 4
+
+[*.{xml,yml}]
+indent_size = 2
diff --git a/vendor/oomphinc/composer-installers-extender/.travis.yml b/vendor/oomphinc/composer-installers-extender/.travis.yml
new file mode 100644
index 0000000000..bfb41b607c
--- /dev/null
+++ b/vendor/oomphinc/composer-installers-extender/.travis.yml
@@ -0,0 +1,20 @@
+language: php
+
+php:
+  - 5.6
+  - 7.0
+  - 7.1
+  - 7.2
+  - nightly
+
+matrix:
+  allow_failures:
+    - php: 5.6
+    - php: 7.0
+  fast_finish: true
+
+install: composer install
+
+script:
+  - composer lint
+  - composer test
diff --git a/vendor/oomphinc/composer-installers-extender/CHANGELOG.md b/vendor/oomphinc/composer-installers-extender/CHANGELOG.md
new file mode 100644
index 0000000000..0fb7ad6e40
--- /dev/null
+++ b/vendor/oomphinc/composer-installers-extender/CHANGELOG.md
@@ -0,0 +1,55 @@
+# Changelog
+All notable changes to this project will be documented in this file.
+
+The format is based on [Keep a Changelog][] and this project adheres to the
+[Semantic Versioning][] scheme.
+
+[Keep a Changelog]: http://keepachangelog.com
+[Semantic Versioning]: https://semver.org
+
+## [Unreleased]
+### Added
+
+### Changed
+
+### Deprecated
+
+### Removed
+
+### Fixed
+
+### Security
+
+## [2.0.0] - 2020-08-11
+### Added
+- Add `.editorconfig`, `.gitignore`, `.lando.yml`, `phpcs.xml` and `phpunit.xml`
+  files to support local development
+- Add `LICENSE` and `CHANGELOG.md` files
+- Add `phpunit/phpunit` and `squizlabs/php_codesniffer` as development
+  dependencies
+- Add requirement for PHP 7.1
+- Add support for Composer 2
+
+### Changed
+- Move `OomphInc\ComposerInstallersExtender\Installer` to
+  `OomphInc\ComposerInstallersExtender\Installers\Installer`
+- Move `OomphInc\ComposerInstallersExtender\InstallerHelper` to
+  `OomphInc\ComposerInstallersExtender\Installers\CustomInstaller`
+- Implement PSR-2 standards and PHP 7.1 syntax
+- Update project `README.md` file
+
+## [1.1.2] - 2017-03-31
+### Changed
+- Minor syntax update to provide compatibility with PHP 5.3
+
+## [1.1.1] - 2016-07-05
+### Changed
+- Update composer/installers version requirement
+
+## [1.1.0] - 2016-03-02
+### Changed
+- Update package requirements to be less restrictive
+
+## [1.0.0] - 2016-01-07
+### Added
+- Initial release
diff --git a/vendor/oomphinc/composer-installers-extender/LICENSE b/vendor/oomphinc/composer-installers-extender/LICENSE
new file mode 100644
index 0000000000..6ce1578dd0
--- /dev/null
+++ b/vendor/oomphinc/composer-installers-extender/LICENSE
@@ -0,0 +1,21 @@
+MIT License
+
+Copyright (c) 2018 Oomph, Inc.
+
+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:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
diff --git a/vendor/oomphinc/composer-installers-extender/README.md b/vendor/oomphinc/composer-installers-extender/README.md
index a2bb3ca193..05ca2d3324 100644
--- a/vendor/oomphinc/composer-installers-extender/README.md
+++ b/vendor/oomphinc/composer-installers-extender/README.md
@@ -1,45 +1,79 @@
 # Composer Installers Extender
 
-The `composer-installers-extender` is a plugin for [Composer](https://getcomposer.org/) that allows
-any package to be installed to a directory other than the default `vendor/` directory within
-the repo on a package-by-package basis. This plugin extends the [`composer/installers`](https://github.com/composer/installers)
-plugin to allow any arbitrary package type to be handled by their custom installer and specified explicitly in the
-`"installer-paths"` mapping in the `"extra"` data property.
+The `composer-installers-extender` is a plugin for [Composer][] that allows
+any package to be installed to a directory other than the default `vendor`
+directory within a project on a package-by-package basis. This plugin extends
+the [`composer/installers`][] plugin to allow any arbitrary package type to be
+handled by their custom installer.
 
-`composer/installers` has a finite set of supported package types and we recognize the need for
-any arbitrary package type to be installed to a specific directory other than `vendor/`. This plugin
-allows additional package types to be handled by `composer/installers`, benefiting from their explicit install path
-mapping and token replacement of package properties.
+The [`composer/installers`][] plugin has a finite set of supported package types
+and we recognize the need for any arbitrary package type to be installed to a
+specific directory other than `vendor`. This plugin allows additional package
+types to be handled by the [`composer/installers`][] plugin, benefiting from
+their explicit install path mapping and token replacement of package properties.
 
-## How to Use
-Add `oomphinc/composer-installers-extender` as a dependency of your project.
-```sh
-composer require oomphinc/composer-installers-extender
-```
-`composer/installers` is a dependency of this plugin and will be automatically required as well.
+## How to Install
+
+Add `oomphinc/composer-installers-extender` as a dependency of your project:
 
-To support additional package types, add an array of these types in the `"extra"` property in your `composer.json`:
+```bash
+$ composer require oomphinc/composer-installers-extender
 ```
-	"extra": {
-		"installer-types": ["library"]
-	}
+
+This plugin requires at least PHP 7.1. If you're using a lower version of PHP
+use the latest stable 1.x release:
+
+```bash
+$ composer require oomphinc/composer-installers-extender:^1.1
 ```
-Then, you can add mappings for packages of these types in the same way that you would add package types
-that are supported by [`composer/installers`](https://github.com/composer/installers#custom-install-paths):
+
+## How to Use
+
+The [`composer/installers`][] plugin is a dependency of this plugin and will be
+automatically required as well if not already required.
+
+To support additional package types, add an array of these types in the
+`extra` property in your `composer.json`:
+
+```json
+{
+    "extra": {
+        "installer-types": ["library"]
+    }
+}
 ```
-  "extra": {
-    "installer-types": ["library"],
-    "installer-paths": {
-      "special/package/": ["my/package"],
-      "path/to/libraries/{$name}/": ["type:library"]
+
+Then, you can add mappings for packages of these types in the same way that you
+would add package types that are supported by [`composer/installers`][]:
+
+```json
+{
+    "extra": {
+        "installer-types": ["library"],
+        "installer-paths": {
+            "special/package/": ["my/package"],
+            "path/to/libraries/{$name}/": ["type:library"]
+        }
     }
-  }
+}
 ```
-By default, packages that do not specify a `type` will be considered type `library`. Adding support for this type
-allows any of these packages to be placed in a different install path.
 
-If a type has been added to `"installer-types"`, the plugin will attempt to find an explicit installer path in the mapping.
-If there is no match either by name or by type, the default installer path for all packages will be used instead.
+By default, packages that do not specify a `type` will be considered the type
+`library`. Adding support for this type allows any of these packages to be
+placed in a different install path.
+
+If a type has been added to `installer-types`, the plugin will attempt to find
+an explicit installer path in the mapping. If there is no match either by name
+or by type, the default installer path for all packages will be used instead.
+
+Please see the README for [`composer/installers`][] to see the supported syntax
+for package and type matching as well as the supported replacement tokens in
+the path (e.g. `{$name}`).
+
+## License
+
+[MIT License][]
 
-Please see the README for [`composer/installers`](https://github.com/composer/installers) to see the supported
-syntax for package and type matching as well as the supported replacement tokens in the path (e.g. `{$name}`).
+[Composer]: https://getcomposer.org
+[`composer/installers`]: https://github.com/composer/installers
+[MIT License]: LICENSE
diff --git a/vendor/oomphinc/composer-installers-extender/composer.json b/vendor/oomphinc/composer-installers-extender/composer.json
index 118835c700..3837d0feee 100644
--- a/vendor/oomphinc/composer-installers-extender/composer.json
+++ b/vendor/oomphinc/composer-installers-extender/composer.json
@@ -1,27 +1,55 @@
 {
-	"name": "oomphinc/composer-installers-extender",
-	"description": "Extend the composer/installers plugin to accept any arbitrary package type.",
-	"homepage": "http://www.oomphinc.com/",
-	"type": "composer-plugin",
-	"license": "MIT",
-	"authors": [
-		{
-			"name": "Stephen Beemsterboer",
-			"email": "stephen@oomphinc.com",
-			"homepage": "https://github.com/balbuf"
-		}
-	],
-	"support": {
-		"issues": "https://github.com/oomphinc/composer-installers-extender/issues"
-	},
-	"autoload": {
-		"psr-4": {"OomphInc\\ComposerInstallersExtender\\": "src/"}
-	},
-	"extra": {
-		"class": "OomphInc\\ComposerInstallersExtender\\Plugin"
-	},
-	"require": {
-		"composer-plugin-api": "^1.0",
-		"composer/installers": "^1.0"
-	}
+    "name": "oomphinc/composer-installers-extender",
+    "description": "Extend the composer/installers plugin to accept any arbitrary package type.",
+    "homepage": "http://www.oomphinc.com/",
+    "type": "composer-plugin",
+    "license": "MIT",
+    "authors": [
+        {
+            "name": "Stephen Beemsterboer",
+            "email": "stephen@oomphinc.com",
+            "homepage": "https://github.com/balbuf"
+        },
+        {
+            "name": "Nathan Dentzau",
+            "email": "nate@oomphinc.com",
+            "homepage": "http://oomph.is/ndentzau"
+        }
+    ],
+    "support": {
+        "issues": "https://github.com/oomphinc/composer-installers-extender/issues"
+    },
+    "require": {
+        "php": ">=7.1",
+        "composer-plugin-api": "^1.1 || ^2.0",
+        "composer/installers": "^1.0"
+    },
+    "require-dev": {
+        "composer/composer": "^2.0",
+        "phpunit/phpunit": "^7.2",
+        "squizlabs/php_codesniffer": "^3.3"
+    },
+    "autoload":{
+        "psr-4": {
+            "OomphInc\\ComposerInstallersExtender\\": "src/"
+        }
+    },
+    "autoload-dev": {
+        "psr-4": {
+            "OomphInc\\ComposerInstallerExtender\\Tests\\": "tests/src/"
+        }
+    },
+    "scripts": {
+        "fix": "vendor/bin/phpcbf",
+        "lint": "vendor/bin/phpcs",
+        "test": "vendor/bin/phpunit"
+    },
+    "config": {
+        "sort-packages": true
+    },
+    "extra": {
+        "class": "OomphInc\\ComposerInstallersExtender\\Plugin"
+    },
+    "minimum-stability": "dev",
+    "prefer-stable": true
 }
diff --git a/vendor/oomphinc/composer-installers-extender/phpcs.xml b/vendor/oomphinc/composer-installers-extender/phpcs.xml
new file mode 100644
index 0000000000..5560f3c008
--- /dev/null
+++ b/vendor/oomphinc/composer-installers-extender/phpcs.xml
@@ -0,0 +1,22 @@
+<?xml version="1.0"?>
+<ruleset name="Composer Installers Extender">
+  <description>
+    Coding standards for the Composer Installers Extender project using PSR-2
+    with PHP 7 syntax.
+  </description>
+
+  <!-- Directories to scan -->
+  <file>src/</file>
+
+  <!-- PHPCS argument overrides -->
+  <arg name="colors" />
+
+  <!-- PHP configuration overrides -->
+  <ini name="memory_limit" value="-1" />
+
+  <!-- Project autoloader -->
+  <autoload>vendor/autoload.php</autoload>
+
+  <!-- Import rules -->
+  <rule ref="PSR2" />
+</ruleset>
diff --git a/vendor/oomphinc/composer-installers-extender/phpunit.xml b/vendor/oomphinc/composer-installers-extender/phpunit.xml
new file mode 100644
index 0000000000..261373e864
--- /dev/null
+++ b/vendor/oomphinc/composer-installers-extender/phpunit.xml
@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<phpunit
+  colors="true"
+  beStrictAboutChangesToGlobalState="true"
+  beStrictAboutOutputDuringTests="true"
+  beStrictAboutTestsThatDoNotTestAnything="true"
+  bootstrap="vendor/autoload.php">
+  <php>
+    <ini name="error_reporting" value="32767" />
+    <ini name="memory_limit" value="-1" />
+  </php>
+  <testsuites>
+    <testsuite name="unit">
+      <directory>./tests/src</directory>
+    </testsuite>
+  </testsuites>
+  <filter>
+    <whitelist>
+      <directory>./src</directory>
+     </whitelist>
+  </filter>
+  <logging>
+    <log type="coverage-html" target="tests/results/html"/>
+    <log type="coverage-clover" target="tests/results/coverage.xml"/>
+    <log type="coverage-text" target="tests/results/coverage.txt"/>
+  </logging>
+</phpunit>
diff --git a/vendor/oomphinc/composer-installers-extender/src/Installer.php b/vendor/oomphinc/composer-installers-extender/src/Installer.php
deleted file mode 100644
index 437b49a798..0000000000
--- a/vendor/oomphinc/composer-installers-extender/src/Installer.php
+++ /dev/null
@@ -1,35 +0,0 @@
-<?php
-
-namespace OomphInc\ComposerInstallersExtender;
-
-use Composer\Installer\LibraryInstaller;
-use Composer\Installers\Installer as ComposerInstaller;
-use Composer\Package\PackageInterface;
-
-class Installer extends ComposerInstaller {
-
-	protected $packageTypes;
-
-	public function getInstallPath( PackageInterface $package ) {
-		$installer = new InstallerHelper( $package, $this->composer, $this->io );
-		$path = $installer->getInstallPath( $package, $package->getType() );
-		// if the path is false, use the default installer path instead
-		return $path !== false ? $path : LibraryInstaller::getInstallPath( $package );
-	}
-
-	public function supports( $packageType ) {
-		// grab the package types once
-		if ( !isset( $this->packageTypes ) ) {
-			$this->packageTypes = false;
-			if ( $this->composer->getPackage() ) {
-				// get data from the 'extra' field
-				$extra = $this->composer->getPackage()->getExtra();
-				if ( !empty( $extra['installer-types'] ) ) {
-					$this->packageTypes = (array) $extra['installer-types'];
-				}
-			}
-		}
-		return is_array( $this->packageTypes ) && in_array( $packageType, $this->packageTypes );
-	}
-
-}
\ No newline at end of file
diff --git a/vendor/oomphinc/composer-installers-extender/src/InstallerHelper.php b/vendor/oomphinc/composer-installers-extender/src/InstallerHelper.php
deleted file mode 100644
index fb332d6737..0000000000
--- a/vendor/oomphinc/composer-installers-extender/src/InstallerHelper.php
+++ /dev/null
@@ -1,15 +0,0 @@
-<?php
-
-namespace OomphInc\ComposerInstallersExtender;
-
-use Composer\Installers\BaseInstaller;
-
-class InstallerHelper extends BaseInstaller {
-
-	function getLocations() {
-		// it will be looking for a key of FALSE, which evaluates to 0, i.e. the first element
-		// that element value being false signals the installer to use the default path
-		return array( false );
-	}
-
-}
diff --git a/vendor/oomphinc/composer-installers-extender/src/Installers/CustomInstaller.php b/vendor/oomphinc/composer-installers-extender/src/Installers/CustomInstaller.php
new file mode 100644
index 0000000000..e80ab38719
--- /dev/null
+++ b/vendor/oomphinc/composer-installers-extender/src/Installers/CustomInstaller.php
@@ -0,0 +1,18 @@
+<?php
+
+declare(strict_types = 1);
+
+namespace OomphInc\ComposerInstallersExtender\Installers;
+
+use Composer\Installers\BaseInstaller;
+
+/**
+ * Provides a custom installer class for custom installer types.
+ *
+ * By default, the parent class has no specified locations. By not providing an
+ * array of locations we are forcing the installer to use custom installer
+ * paths.
+ */
+class CustomInstaller extends BaseInstaller
+{
+}
diff --git a/vendor/oomphinc/composer-installers-extender/src/Installers/Installer.php b/vendor/oomphinc/composer-installers-extender/src/Installers/Installer.php
new file mode 100644
index 0000000000..c686f77a86
--- /dev/null
+++ b/vendor/oomphinc/composer-installers-extender/src/Installers/Installer.php
@@ -0,0 +1,53 @@
+<?php
+
+declare(strict_types = 1);
+
+namespace OomphInc\ComposerInstallersExtender\Installers;
+
+use Composer\Package\PackageInterface;
+use Composer\Installer\LibraryInstaller;
+use Composer\Installers\Installer as InstallerBase;
+
+class Installer extends InstallerBase
+{
+    /**
+     * A list of installer types.
+     *
+     * @var array
+     */
+    protected $installerTypes;
+
+    /**
+     * {@inheritDoc}
+     */
+    public function getInstallPath(PackageInterface $package): string
+    {
+        $installer = new CustomInstaller($package, $this->composer, $this->io);
+        $path = $installer->getInstallPath($package, $package->getType());
+
+        return $path ?: LibraryInstaller::getInstallPath($package);
+    }
+
+    /**
+     * {@inheritDoc}
+     */
+    public function supports($packageType): bool
+    {
+        return in_array($packageType, $this->getInstallerTypes());
+    }
+
+    /**
+     * Get a list of custom installer types.
+     *
+     * @return array
+     */
+    public function getInstallerTypes(): array
+    {
+        if (!$this->installerTypes) {
+            $extra = $this->composer->getPackage()->getExtra();
+            $this->installerTypes = $extra['installer-types'] ?? [];
+        }
+
+        return $this->installerTypes;
+    }
+}
diff --git a/vendor/oomphinc/composer-installers-extender/src/Plugin.php b/vendor/oomphinc/composer-installers-extender/src/Plugin.php
index 09c1ad50fc..2f9b04d67a 100644
--- a/vendor/oomphinc/composer-installers-extender/src/Plugin.php
+++ b/vendor/oomphinc/composer-installers-extender/src/Plugin.php
@@ -1,16 +1,36 @@
 <?php
 
+declare(strict_types = 1);
+
 namespace OomphInc\ComposerInstallersExtender;
 
 use Composer\Composer;
 use Composer\IO\IOInterface;
 use Composer\Plugin\PluginInterface;
+use OomphInc\ComposerInstallersExtender\Installers\Installer;
 
-class Plugin implements PluginInterface {
+class Plugin implements PluginInterface
+{
+    /**
+     * {@inheritDoc}
+     */
+    public function activate(Composer $composer, IOInterface $io): void
+    {
+        $installer = new Installer($io, $composer);
+        $composer->getInstallationManager()->addInstaller($installer);
+    }
 
-	public function activate( Composer $composer, IOInterface $io ) {
-		$installer = new Installer( $io, $composer );
-		$composer->getInstallationManager()->addInstaller( $installer );
-	}
+    /**
+     * {@inheritDoc}
+     */
+    public function deactivate(Composer $composer, IOInterface $io): void
+    {
+    }
 
-}
\ No newline at end of file
+    /**
+     * {@inheritDoc}
+     */
+    public function uninstall(Composer $composer, IOInterface $io): void
+    {
+    }
+}
diff --git a/vendor/oomphinc/composer-installers-extender/tests/src/Installers/CustomInstallerTest.php b/vendor/oomphinc/composer-installers-extender/tests/src/Installers/CustomInstallerTest.php
new file mode 100644
index 0000000000..5d696ada5a
--- /dev/null
+++ b/vendor/oomphinc/composer-installers-extender/tests/src/Installers/CustomInstallerTest.php
@@ -0,0 +1,18 @@
+<?php
+
+declare(strict_types = 1);
+
+namespace OomphInc\ComposerInstallersExtender\Tests\Installers;
+
+use PHPUnit\Framework\TestCase;
+use OomphInc\ComposerInstallersExtender\Installers\CustomInstaller;
+
+class CustomInstallerTest extends TestCase
+{
+    public function testLocations(): void
+    {
+        $installer = (new \ReflectionClass(CustomInstaller::class))
+            ->newInstanceWithoutConstructor();
+        $this->assertEmpty($installer->getLocations());
+    }
+}
diff --git a/vendor/oomphinc/composer-installers-extender/tests/src/Installers/InstallerTest.php b/vendor/oomphinc/composer-installers-extender/tests/src/Installers/InstallerTest.php
new file mode 100644
index 0000000000..f090f504fc
--- /dev/null
+++ b/vendor/oomphinc/composer-installers-extender/tests/src/Installers/InstallerTest.php
@@ -0,0 +1,117 @@
+<?php
+
+declare(strict_types = 1);
+
+namespace OomphInc\ComposerInstallersExtender\Installers;
+
+use Composer\Composer;
+use Composer\IO\IOInterface;
+use PHPUnit\Framework\TestCase;
+use Composer\Package\Package;
+
+class InstallerTest extends TestCase
+{
+    protected $composer;
+
+    protected $io;
+
+    public function setUp(): void
+    {
+        parent::setUp();
+
+        $this->composer = $this->createMock(Composer::class);
+        $this->composer
+            ->method('getConfig')
+            ->willReturn(new class {
+                public function get($name) {
+                    return null;
+                }
+            });
+
+        $this->io = $this->createMock(IOInterface::class);
+    }
+
+    public function testGetInstallPath(): void
+    {
+        $this->composer
+            ->method('getPackage')
+            ->willReturn(new class {
+                public function getExtra()
+                {
+                    return [
+                        'installer-types' => ['custom-type'],
+                        'installer-paths' => [
+                            'custom/path/{$name}' => ['type:custom-type'],
+                        ],
+                    ];
+                }
+            });
+
+        $installer = new Installer($this->io, $this->composer);
+
+        $package = new Package('oomphinc/test', '1.0.0', '1.0.0');
+        $package->setType('custom-type');
+
+        $this->assertEquals(
+            'custom/path/test',
+            $installer->getInstallPath($package)
+        );
+    }
+
+    public function testSupports(): void
+    {
+        $installer = new class extends Installer {
+            public function __construct() {}
+
+            public function getInstallerTypes(): array
+            {
+                return ['custom-type'];
+            }
+        };
+
+        $this->assertTrue($installer->supports('custom-type'));
+        $this->assertFalse($installer->supports('oomph'));
+    }
+
+    /**
+     * @dataProvider installerTypesDataProvider
+     */
+    public function testGetInstallerTypes($package, array $expected): void
+    {
+        $this->composer
+            ->method('getPackage')
+            ->willReturn($package);
+
+        $installer = new Installer($this->io, $this->composer);
+        $this->assertEquals($expected, $installer->getInstallerTypes());
+    }
+
+    public function installerTypesDataProvider(): array
+    {
+        return [
+            [
+                new class {
+                    public function getExtra(): array
+                    {
+                        return [
+                            'installer-types' => ['custom-type'],
+                            'installer-paths' => [
+                                'custom/path/{$name}' => ['type:custom-type'],
+                            ],
+                        ];
+                    }
+                },
+                ['custom-type'],
+            ],
+            [
+                new class {
+                    public function getExtra(): array
+                    {
+                        return [];
+                    }
+                },
+                [],
+            ],
+        ];
+    }
+}
diff --git a/vendor/oomphinc/composer-installers-extender/tests/src/PluginTest.php b/vendor/oomphinc/composer-installers-extender/tests/src/PluginTest.php
new file mode 100644
index 0000000000..cb0fb9b795
--- /dev/null
+++ b/vendor/oomphinc/composer-installers-extender/tests/src/PluginTest.php
@@ -0,0 +1,55 @@
+<?php
+
+declare(strict_types = 1);
+
+namespace OomphInc\ComposerInstallersExtender\Tests;
+
+use Composer\Composer;
+use Composer\IO\IOInterface;
+use PHPUnit\Framework\TestCase;
+use Composer\Installer\InstallationManager;
+use OomphInc\ComposerInstallersExtender\Installers\Installer;
+use OomphInc\ComposerInstallersExtender\Plugin;
+
+class PluginTest extends TestCase
+{
+    protected $composer;
+
+    protected $io;
+
+    public function setUp(): void
+    {
+        parent::setUp();
+
+        $this->composer = $this->createMock(Composer::class);
+        $this->composer
+            ->method('getConfig')
+            ->willReturn(new class{
+                public function get($name)
+                {
+                    return null;
+                }
+            });
+
+        $this->io = $this->createMock(IOInterface::class);
+    }
+
+    public function testActive(): void
+    {
+        $installationManager = $this->createMock(InstallationManager::class);
+        $installationManager
+            ->expects($this->once())
+            ->method('addInstaller')
+            ->with(new Installer($this->io, $this->composer));
+
+        $this->composer
+            ->expects($this->once())
+            ->method('getInstallationManager')
+            ->willReturn($installationManager);
+
+        // There is no output to test from the activate method. Only test for
+        // method call expectations.
+        $plugin = new Plugin();
+        $plugin->activate($this->composer, $this->io);
+    }
+}
diff --git a/vendor/jakub-onderka/php-console-highlighter/LICENSE b/vendor/pantheon-systems/quicksilver-pushback/LICENSE
similarity index 96%
rename from vendor/jakub-onderka/php-console-highlighter/LICENSE
rename to vendor/pantheon-systems/quicksilver-pushback/LICENSE
index 1a8317fa15..c5be8b188f 100644
--- a/vendor/jakub-onderka/php-console-highlighter/LICENSE
+++ b/vendor/pantheon-systems/quicksilver-pushback/LICENSE
@@ -1,6 +1,6 @@
 The MIT License (MIT)
 
-Copyright (c) 2013 Jakub Onderka
+Copyright (c) 2015 Pantheon
 
 Permission is hereby granted, free of charge, to any person obtaining a copy
 of this software and associated documentation files (the "Software"), to deal
@@ -18,4 +18,5 @@ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
 AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
 LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
 OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
-SOFTWARE.
\ No newline at end of file
+SOFTWARE.
+
diff --git a/vendor/pantheon-systems/quicksilver-pushback/README.md b/vendor/pantheon-systems/quicksilver-pushback/README.md
new file mode 100644
index 0000000000..30a6954678
--- /dev/null
+++ b/vendor/pantheon-systems/quicksilver-pushback/README.md
@@ -0,0 +1,41 @@
+# Quicksilver Pushback
+This Quicksilver project is used in conjunction with the various suite of [Terminus Build Tools](https://github.com/pantheon-systems/terminus-build-tools-plugin)-based example repositories to push any commits made on the Pantheon dashboard back to the original GitHub repository for the site.
+
+This Quicksilver script only works with Pantheon sites that have been configured to use a GitHub PR workflow.
+
+### Example composer.json
+
+This project is designed to be included from a site's composer.json file, and placed in its appropriate installation directory by [Composer Installers](https://github.com/composer/installers).
+
+In order for this to work, you should have the following in your composer.json file:
+
+```json
+{
+  "require": {
+    "composer/installers": "^1.0.20"
+  },
+  "extra": {
+    "installer-paths": {
+      "web/private/scripts/quicksilver": ["type:quicksilver-script"]
+    }
+  }
+}
+```
+
+If you are using one of the example PR workflow projects as a starting point for your site, these entries should already be present in your composer.json.
+
+### Example `pantheon.yml`
+
+Here's an example of what your `pantheon.yml` would look like if this were the only Quicksilver operation you wanted to use.
+
+```yaml
+api_version: 1
+
+workflows:
+  sync_code:
+    after:
+      - type: webphp
+        description: Push changes back to GitHub if needed
+        script: private/scripts/quicksilver/quicksilver-pushback/push-back-to-github.php
+```
+If you are using one of the example PR workflow projects as a starting point for your site, this entry should already be present in your pantheon.yml.
diff --git a/vendor/pantheon-systems/quicksilver-pushback/composer.json b/vendor/pantheon-systems/quicksilver-pushback/composer.json
new file mode 100644
index 0000000000..b97612dff2
--- /dev/null
+++ b/vendor/pantheon-systems/quicksilver-pushback/composer.json
@@ -0,0 +1,9 @@
+{
+  "name": "pantheon-systems/quicksilver-pushback",
+  "description": "Push commits made via the Pantheon dashboard back to original GitHub repository.",
+  "type": "quicksilver-script",
+  "require": {
+    "composer/installers": "~1.0"
+  },
+  "license": "MIT"
+}
diff --git a/vendor/pantheon-systems/quicksilver-pushback/lean-repo-utils.php b/vendor/pantheon-systems/quicksilver-pushback/lean-repo-utils.php
new file mode 100644
index 0000000000..d09d94f281
--- /dev/null
+++ b/vendor/pantheon-systems/quicksilver-pushback/lean-repo-utils.php
@@ -0,0 +1,64 @@
+<?php
+
+function load_github_secrets($gitHubSecretsFile)
+{
+  if (!file_exists($gitHubSecretsFile)) {
+    print "Could not find $gitHubSecretsFile\n";
+    return [];
+  }
+  $gitHubSecretsContents = file_get_contents($gitHubSecretsFile);
+  if (empty($gitHubSecretsContents)) {
+    print "GitHub secrets file is empty\n";
+    return [];
+  }
+  $gitHubSecrets = json_decode($gitHubSecretsContents, true);
+  if (empty($gitHubSecrets)) {
+    print "No data in GitHub secrets\n";
+  }
+  return $gitHubSecrets;
+}
+
+/**
+ * Read the secrets.json file
+ */
+function pantheon_get_secrets($bindingDir, $requiredKeys, $defaultValues) {
+  $secretsFile = "$bindingDir/files/private/secrets.json";
+  if (!file_exists($secretsFile)) {
+    pantheon_raise_dashboard_error('Secrets file does not exist');
+  }
+  $secretsContents = file_get_contents($secretsFile);
+  if (empty($secretsContents)) {
+    pantheon_raise_dashboard_error('Could not read secrets file (or it is empty).');
+  }
+  $secrets = json_decode($secretsContents, 1);
+  if (empty($secrets)) {
+    pantheon_raise_dashboard_error('Could not parse json data in secrets file.');
+  }
+  $secrets += $defaultValues;
+  $missing = array_diff($requiredKeys, array_keys($secrets));
+  if (!empty($missing)) {
+    die('Missing required keys in json secrets file: ' . implode(',', $missing) . '. Aborting!');
+  }
+  return $secrets;
+}
+
+/**
+ * Function to report an error on the Pantheon dashboard
+ *
+ * Not supported; may stop working at any point in the future.
+ */
+function pantheon_raise_dashboard_error($reason = 'Uknown failure', $extended = FALSE) {
+  // Make creative use of the error reporting API
+  $data = array('file'=>'GitHub Integration',
+                'line'=>'Error',
+                'type'=>'error',
+                'message'=>$reason);
+  $params = http_build_query($data);
+  $result = pantheon_curl('https://api.live.getpantheon.com/sites/self/environments/self/events?'. $params, NULL, 8443, 'POST');
+  error_log("GitHub Integration failed - $reason");
+  // Dump additional debug info into the error log
+  if ($extended) {
+    error_log(print_r($extended, 1));
+  }
+  die("GitHub Integration failed - $reason");
+}
diff --git a/vendor/pantheon-systems/quicksilver-pushback/push-back-to-github.php b/vendor/pantheon-systems/quicksilver-pushback/push-back-to-github.php
new file mode 100644
index 0000000000..e49f77cc87
--- /dev/null
+++ b/vendor/pantheon-systems/quicksilver-pushback/push-back-to-github.php
@@ -0,0 +1,231 @@
+<?php
+
+include __DIR__ . '/lean-repo-utils.php';
+
+// ad-hoc cli usage: call with cwd set to full repository
+// TODO: refactor for testability (and write tests!)
+if (!isset($_ENV['PANTHEON_ENVIRONMENT'])) {
+  $fullRepository = getcwd();
+  $workDir = sys_get_temp_dir() . '/pushback-workdir';
+  passthru("rm -rf $workDir");
+  mkdir($workDir);
+  $github_token = getenv('GITHUB_TOKEN');
+
+  $result = push_back_to_github($fullRepository, $workDir, $github_token);
+
+  exit($result);
+}
+
+// Do nothing for test or live environments.
+if (in_array($_ENV['PANTHEON_ENVIRONMENT'], ['test', 'live'])) {
+  return;
+}
+
+/**
+ * This script will separates changes from the most recent commit
+ * and pushes any that affect the canonical sources back to the
+ * master repository.
+ */
+$bindingDir = $_SERVER['HOME'];
+$fullRepository = "$bindingDir/code";
+// $docRoot = "$fullRepository/" . $_SERVER['DOCROOT'];
+
+print "Enter push-back-to-github. Repository root is $fullRepository.\n";
+
+$privateFiles = "$bindingDir/files/private";
+$gitHubSecretsFile = "$privateFiles/github-secrets.json";
+$gitHubSecrets = load_github_secrets($gitHubSecretsFile);
+$github_token = $gitHubSecrets['token'];
+
+$workDir = "$bindingDir/tmp/pushback-workdir";
+
+// Temporary:
+passthru("rm -rf $workDir");
+mkdir($workDir);
+
+$status = push_back_to_github($fullRepository, $workDir, $github_token);
+
+// Throw out the working repository.
+passthru("rm -rf $workDir");
+
+// Post error to dashboard and exit if the merge fails.
+if ($status != 0) {
+  $message = "Commit back to canonical repository failed with exit code $status.";
+  pantheon_raise_dashboard_error($message, true);
+}
+
+function push_back_to_github($fullRepository, $workDir, $github_token)
+{
+  $buildMetadataFile = "build-metadata.json";
+  if (!file_exists("$fullRepository/$buildMetadataFile")) {
+    print "Could not find build metadata file, $buildMetadataFile\n";
+    return;
+  }
+  $buildMetadataFileContents = file_get_contents("$fullRepository/$buildMetadataFile");
+  $buildMetadata = json_decode($buildMetadataFileContents, true);
+  if (empty($buildMetadata)) {
+    print "No data in build metadata\n";
+    return;
+  }
+
+  print "::::::::::::::::: Build Metadata :::::::::::::::::\n";
+  var_export($buildMetadata);
+  print "\n\n";
+
+  // The remote repo to push to
+  $upstreamRepo = $buildMetadata['url'];
+  $upstreamRepoWithCredentials = $upstreamRepo;
+  if (!empty($github_token)) {
+    $upstreamRepoWithCredentials = str_replace('git@github.com:', 'https://github.com/', $upstreamRepoWithCredentials);
+    $upstreamRepoWithCredentials = str_replace('https://', "https://$github_token:x-oauth-basic@", $upstreamRepoWithCredentials);
+  }
+
+  // The last commit made on the lean repo prior to creating the build artifacts
+  $fromSha = $buildMetadata['sha'];
+
+  // The name of the PR branch
+  $branch = $buildMetadata['ref'];
+
+  // The commit to cherry-pick
+  $commitToSubmit = exec("git -C $fullRepository rev-parse HEAD");
+
+  // Seatbelts: is build metadatafile modified in the HEAD commit?
+  $commitWithBuildMetadataFile = exec("git -C $fullRepository log -n 1 --pretty=format:%H -- $buildMetadataFile");
+  if ($commitWithBuildMetadataFile == $commitToSubmit) {
+    print "Ignoring commit because it contains build assets.\n";
+    return;
+  }
+
+  // A working branch to make changes on
+  $targetBranch = $branch;
+
+  print "::::::::::::::::: Info :::::::::::::::::\n";
+  print "We are going to check out $branch from {$buildMetadata['url']}, branch from $fromSha and cherry-pick $commitToSubmit onto it\n";
+
+  $canonicalRepository = "$workDir/scratchRepository";
+  $workbranch = "recommit-work";
+
+  // Make a working clone of the GitHub branch. Clone just the branch
+  // and commit we need.
+  print "git clone $upstreamRepo --depth=1 --branch $branch --single-branch\n";
+  passthru("git clone $upstreamRepoWithCredentials --depth=1 --branch $branch --single-branch $canonicalRepository 2>&1");
+
+  // If there have been extra commits, then unshallow the repository so that
+  // we can make a branch off of the commit this multidev was built from.
+  print "git rev-parse HEAD\n";
+  $remoteHead = exec("git -C $canonicalRepository rev-parse HEAD");
+  if ($remoteHead != $fromSha) {
+    // TODO: If we had git 2.11.0, we could use --shallow-since with the date
+    // from $buildMetadata['commit-date'] to get exactly the commits we need.
+    // Until then, though, we will just `unshallow` the whole branch if there
+    // is a conflicting commit.
+    print "git fetch --unshallow\n";
+    passthru("git -C $canonicalRepository fetch --unshallow 2>&1");
+  }
+
+  // Get metadata from the commit at the HEAD of the full repository
+  $comment = escapeshellarg(exec("git -C $fullRepository log -1 --pretty=\"%s\""));
+  $commit_date = escapeshellarg(exec("git -C $fullRepository log -1 --pretty=\"%at\""));
+  $author_name = exec("git -C $fullRepository log -1 --pretty=\"%an\"");
+  $author_email = exec("git -C $fullRepository log -1 --pretty=\"%ae\"");
+  $author = escapeshellarg("$author_name <$author_email>");
+
+  print "Comment is $comment and author is $author and date is $commit_date\n";
+  // Make a safe space to store stuff
+  $safe_space = "$workDir/safe-space";
+  mkdir($safe_space);
+
+  // If there are conflicting commits, or if this new commit is on the master
+  // branch, then we will work from and push to a branch with a different name.
+  // The user should then create a new PR on GitHub, and use the GitHub UI
+  // to resolve any conflicts (or clone the branch locally to do the same thing).
+  $createNewBranchReason = '';
+  if ($branch == 'master') {
+    $createNewBranchReason = "the $branch branch cannot be pushed to directly";
+  }
+  elseif ($remoteHead != $fromSha) {
+    $createNewBranchReason = "new conflicting commits (e.g. $remoteHead) were added to the upstream repository";
+  }
+  if (!empty($createNewBranchReason)) {
+    // Warn that a new branch is being created.
+    $targetBranch = substr($commitToSubmit, 0, 5) . $branch;
+    print "Creating a new branch, '$targetBranch', because $createNewBranchReason.\n";
+    print "git checkout -B $targetBranch $fromSha\n";
+    passthru("git -C $canonicalRepository checkout -B $targetBranch $fromSha 2>&1");
+  }
+
+  // Now for some git magic.
+  //
+  // - $fullRepository contains all of the files we want to commit (and more).
+  // - $canonicalRepository is where we want to commit them.
+  //
+  // The .gitignore file in the canonical repository is correctly configured
+  // to ignore the build results that we do not want from the full repository.
+  //
+  // To affect the change, we will:
+  //
+  // - Copy the .gitignore file from the canonical repository to the full repo.
+  // - Operate on the CONTENTS of the full repository with the .git directory
+  //   of the canonical repository via the --git-dir and -C flags.
+  // - We restore the .gitignore at the end via `git checkout -- .gitignore`.
+
+  $gitignore_contents = file_get_contents("$canonicalRepository/.gitignore");
+  file_put_contents("$fullRepository/.gitignore", $gitignore_contents);
+
+  print "::::::::::::::::: .gitignore :::::::::::::::::\n$gitignore_contents\n";
+
+  // Add our files and make our commit
+  print "git add .\n";
+  passthru("git --git-dir=$canonicalRepository/.git -C $fullRepository add .", $status);
+  if ($status != 0) {
+    print "FAILED with $status\n";
+  }
+  // We don't want to commit the build-metadata to the canonical repository.
+  passthru("git --git-dir=$canonicalRepository/.git -C $fullRepository reset HEAD $buildMetadataFile");
+  // TODO: Copy author, message and perhaps other attributes from the commit at the head of the full repository
+  passthru("git --git-dir=$canonicalRepository/.git -C $fullRepository commit -q --no-edit --message=$comment --author=$author --date=$commit_date", $commitStatus);
+
+  // Get our .gitignore back
+  passthru("git -C $fullRepository checkout -- .gitignore");
+
+  // Make sure that HEAD changed after 'git apply'
+  $appliedCommit = exec("git -C $canonicalRepository rev-parse HEAD");
+
+  // Seatbelts: this generally should not happen. If it does, we will presume
+  // it is not an error; this situation might arise if someone commits only
+  // changes to build result files from dashboard.
+  if ($appliedCommit == $remoteHead) {
+    print "'git commit' did not add a commits. Status code: $commitStatus\n";
+    return;
+  }
+
+  exec("git -C $canonicalRepository diff-tree --no-commit-id --name-only -r HEAD", $committedFiles);
+  $committedFiles = implode("\n", $committedFiles);
+  if (empty($committedFiles)) {
+    print "Commit $appliedCommit does not contain any files.\n";
+    return;
+  }
+  // Even more seatbelts: ensure that there is nothing in the
+  // commit that should not have been modified. Our .gitignore
+  // file should ensure this never happens. For now, only test
+  // 'vendor'.
+  if (preg_match('#^vendor/#', $committedFiles)) {
+    print "Aborting: commit $appliedCommit contains changes to the 'vendor' directory.\n";
+    return 1;
+  }
+
+  // If the apply worked, then push the commit back to the light repository.
+  if (($commitStatus == 0) && ($appliedCommit != $remoteHead)) {
+
+    // Push the new branch back to Pantheon
+    print "git push $upstreamRepo $targetBranch\n";
+    passthru("git -C $canonicalRepository push $upstreamRepoWithCredentials $targetBranch 2>&1");
+
+    // TODO: If a new branch was created, it would be cool to use the GitHub API
+    // to create a new PR. If there is an existing PR (i.e. branch not master),
+    // it would also be cool to cross-reference the new PR to the old PR. The trouble
+    // here is converting the branch name to a PR number.
+  }
+
+  return $commitStatus;
+}
diff --git a/vendor/psy/psysh/.editorconfig b/vendor/psy/psysh/.editorconfig
deleted file mode 100644
index fddf9c1c6b..0000000000
--- a/vendor/psy/psysh/.editorconfig
+++ /dev/null
@@ -1,15 +0,0 @@
-root = true
-
-[*]
-indent_style = space
-indent_size = 4
-end_of_line = lf
-charset = utf-8
-trim_trailing_whitespace = true
-insert_final_newline = true
-
-[*.md]
-trim_trailing_whitespace = false
-
-[Makefile]
-indent_style = tab
diff --git a/vendor/psy/psysh/.github/CONTRIBUTING.md b/vendor/psy/psysh/.github/CONTRIBUTING.md
deleted file mode 100644
index efb87446cb..0000000000
--- a/vendor/psy/psysh/.github/CONTRIBUTING.md
+++ /dev/null
@@ -1,9 +0,0 @@
-## Code style
-
-Please make your code look like the other code in the project.
-
-PsySH follows [PSR-1](http://php-fig.org/psr/psr-1/) and [PSR-2](http://php-fig.org/psr/psr-2/). The easiest way to do make sure you're following the coding standard is to [install `php-cs-fixer`](https://github.com/friendsofphp/php-cs-fixer) and run `php-cs-fixer fix` before committing.
-
-## Branching model
-
-Please branch off and send pull requests to the `develop` branch.
diff --git a/vendor/psy/psysh/.gitignore b/vendor/psy/psysh/.gitignore
deleted file mode 100644
index da05f58cb7..0000000000
--- a/vendor/psy/psysh/.gitignore
+++ /dev/null
@@ -1,9 +0,0 @@
-/build/
-/dist/
-/composer.lock
-/manual/
-/psysh
-/__pycache__
-/.php_cs.cache
-/vendor/
-/vendor-bin/*/vendor/
diff --git a/vendor/psy/psysh/.phan/config.php b/vendor/psy/psysh/.phan/config.php
index 433a04ab90..9ec5014859 100644
--- a/vendor/psy/psysh/.phan/config.php
+++ b/vendor/psy/psysh/.phan/config.php
@@ -17,15 +17,9 @@
     'directory_list' => [
         'src/',
         'vendor/dnoegel/php-xdg-base-dir/src/',
-        'vendor/doctrine/instantiator/src/',
         'vendor/hoa/console/',
-        'vendor/jakub-onderka/php-console-color/src/',
-        'vendor/jakub-onderka/php-console-highlighter/src/',
         'vendor/nikic/php-parser/lib/',
-        'vendor/phpdocumentor/reflection-docblock/',
         'vendor/symfony/console/',
-        'vendor/symfony/filesystem/',
-        'vendor/symfony/finder/',
         'vendor/symfony/var-dumper/',
     ],
 
diff --git a/vendor/psy/psysh/.php_cs b/vendor/psy/psysh/.php_cs
deleted file mode 100644
index 421c31d2a5..0000000000
--- a/vendor/psy/psysh/.php_cs
+++ /dev/null
@@ -1,32 +0,0 @@
-<?php
-
-$finder = PhpCsFixer\Finder::create()
-    ->in(__DIR__)
-    ->name('.php_cs')
-    ->name('build-manual')
-    ->name('build-phar')
-    ->exclude('build-vendor');
-
-$header = <<<EOF
-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.
-EOF;
-
-return PhpCsFixer\Config::create()
-    ->setRules(array(
-        '@Symfony' => true,
-        'array_syntax' => array('syntax' => 'short'),
-        'binary_operator_spaces' => false,
-        'concat_space' => array('spacing' => 'one'),
-        'header_comment' => array('header' => $header),
-        'increment_style' => array('style' => 'post'),
-        'method_argument_space' => array('keep_multiple_spaces_after_comma' => true),
-        'ordered_imports' => true,
-        'pre_increment' => false,
-        'yoda_style' => false,
-    ))
-    ->setFinder($finder);
diff --git a/vendor/psy/psysh/.styleci.yml b/vendor/psy/psysh/.styleci.yml
deleted file mode 100644
index 96fc96bf40..0000000000
--- a/vendor/psy/psysh/.styleci.yml
+++ /dev/null
@@ -1,29 +0,0 @@
-preset: symfony
-
-enabled:
-  - align_double_arrow
-  - concat_with_spaces
-  - short_array_syntax
-  - ordered_use
-  - strict
-
-disabled:
-  - blank_line_before_break
-  - blank_line_before_continue
-  - blank_line_before_throw
-  - blank_line_before_try
-  - concat_without_spaces
-  - method_argument_space
-  - pre_increment
-  - unalign_double_arrow
-  - unalign_equals
-  - yoda_style
-  - property_separation
-  - const_separation
-
-finder:
-  name:
-    - "*.php"
-    - ".php_cs"
-    - "build-manual"
-    - "build-phar"
diff --git a/vendor/psy/psysh/.travis.yml b/vendor/psy/psysh/.travis.yml
deleted file mode 100644
index 3a77512aab..0000000000
--- a/vendor/psy/psysh/.travis.yml
+++ /dev/null
@@ -1,44 +0,0 @@
-language: php
-
-sudo: false
-
-matrix:
-  include:
-    - php: 5.4
-    - php: 5.4
-      env: 'COMPOSER_FLAGS="--prefer-lowest --prefer-stable"'
-    - php: 5.5
-    - php: 5.6
-    - php: 7.0
-    - php: 7.1
-    - php: 7.2
-    - php: hhvm
-      dist: trusty
-  allow_failures:
-    - php: 5.4
-      env: 'COMPOSER_FLAGS="--prefer-lowest --prefer-stable"'
-    - php: hhvm
-  fast_finish: true
-
-install: travis_retry composer update --no-interaction $COMPOSER_FLAGS
-
-script:
- - vendor/bin/phpunit --verbose --coverage-clover=coverage.xml
- - '[[ $TRAVIS_PHP_VERSION = 7.2* ]] && make build -j 4 || true'
-
-after_success:
-  - bash <(curl -s https://codecov.io/bash)
-
-before_deploy: make dist -j 4
-
-deploy:
-  provider: releases
-  api_key:
-    secure: LL8koDM1xDqzF9t0URHvmMPyWjojyd4PeZ7IW7XYgyvD6n1H6GYrVAeKCh5wfUKFbwHoa9s5AAn6pLzra00bODVkPTmUH+FSMWz9JKLw9ODAn8HvN7C+IooxmeClGHFZc0TfHfya8/D1E9C1iXtGGEoE/GqtaYq/z0C1DLpO0OU=
-  file_glob: true
-  file: dist/psysh-*.tar.gz
-  skip_cleanup: true
-  on:
-    tags: true
-    repo: bobthecow/psysh
-    condition: $TRAVIS_PHP_VERSION = 7.2*
diff --git a/vendor/psy/psysh/Makefile b/vendor/psy/psysh/Makefile
deleted file mode 100644
index a1fdb42ed2..0000000000
--- a/vendor/psy/psysh/Makefile
+++ /dev/null
@@ -1,95 +0,0 @@
-PSYSH_SRC = bin src box.json.dist composer.json build/stub
-PSYSH_SRC_FILES = $(shell find src -type f -name "*.php")
-VERSION = $(shell git describe --tag --always --dirty=-dev)
-
-COMPOSER_OPTS = --no-interaction --no-progress --verbose
-COMPOSER_REQUIRE_OPTS = $(COMPOSER_OPTS) --no-update
-COMPOSER_UPDATE_OPTS = $(COMPOSER_OPTS) --prefer-stable --no-dev --classmap-authoritative --prefer-dist
-
-
-# Commands
-
-.PHONY: help clean build dist
-.DEFAULT_GOAL := help
-
-help:
-	@echo "\033[33mUsage:\033[0m\n  make TARGET\n\n\033[33mTargets:\033[0m"
-	@grep -E '^[a-zA-Z0-9_-]+:.*?## .*$$' $(MAKEFILE_LIST) | sort | awk 'BEGIN {FS = ":.*?## "}; {printf "  \033[32m%-7s\033[0m %s\n", $$1, $$2}'
-
-clean: ## Clean all created artifacts
-	rm -rf build/*
-	rm -rf dist/*
-	rm -rf vendor-bin/*/vendor/
-
-build: ## Compile PHARs
-build: build/psysh/psysh build/psysh-compat/psysh build/psysh-php54/psysh build/psysh-php54-compat/psysh
-
-dist: ## Build tarballs for distribution
-dist: dist/psysh-$(VERSION).tar.gz dist/psysh-$(VERSION)-compat.tar.gz dist/psysh-$(VERSION)-php54.tar.gz dist/psysh-$(VERSION)-php54-compat.tar.gz
-
-
-# All the composer stuffs
-
-composer.lock: composer.json
-	composer install
-	touch $@
-
-vendor/autoload.php: composer.lock
-	composer install
-	touch $@
-
-vendor/bin/box: vendor/autoload.php
-	composer bin box install
-	touch $@
-
-
-# Lots of PHARs
-
-build/stub: bin/build-stub bin/psysh LICENSE
-	bin/build-stub
-
-build/psysh: $(PSYSH_SRC) $(PSYSH_SRC_FILES)
-	rm -rf $@ || true
-	mkdir $@
-	cp -R $(PSYSH_SRC) $@/
-	composer config --working-dir $@ platform.php 7.0
-	composer require --working-dir $@ $(COMPOSER_REQUIRE_OPTS) php:'>=7.0.0'
-	composer update --working-dir $@ $(COMPOSER_UPDATE_OPTS)
-
-build/psysh-compat: $(PSYSH_SRC) $(PSYSH_SRC_FILES)
-	rm -rf $@ || true
-	mkdir $@
-	cp -R $(PSYSH_SRC) $@/
-	composer config --working-dir $@ platform.php 7.0
-	composer require --working-dir $@ $(COMPOSER_REQUIRE_OPTS) php:'>=7.0.0'
-	composer require --working-dir $@ $(COMPOSER_REQUIRE_OPTS) symfony/polyfill-iconv symfony/polyfill-mbstring hoa/console
-	composer update --working-dir $@ $(COMPOSER_UPDATE_OPTS)
-
-build/psysh-php54: $(PSYSH_SRC) $(PSYSH_SRC_FILES)
-	rm -rf $@ || true
-	mkdir $@
-	cp -R $(PSYSH_SRC) $@/
-	composer config --working-dir $@ platform.php 5.4
-	composer update --working-dir $@ $(COMPOSER_UPDATE_OPTS)
-
-build/psysh-php54-compat: $(PSYSH_SRC) $(PSYSH_SRC_FILES)
-	rm -rf $@ || true
-	mkdir $@
-	cp -R $(PSYSH_SRC) $@/
-	composer config --working-dir $@ platform.php 5.4
-	composer require --working-dir $@ $(COMPOSER_REQUIRE_OPTS) symfony/polyfill-iconv symfony/polyfill-mbstring hoa/console:^2.15
-	composer update --working-dir $@ $(COMPOSER_UPDATE_OPTS)
-
-build/%/psysh: vendor/bin/box build/%
-	vendor/bin/box compile --working-dir $(dir $@)
-
-
-# Dist packages
-
-dist/psysh-$(VERSION).tar.gz: build/psysh/psysh
-	@mkdir -p $(@D)
-	tar -C $(dir $<) -czf $@ $(notdir $<)
-
-dist/psysh-$(VERSION)-%.tar.gz: build/psysh-%/psysh
-	@mkdir -p $(@D)
-	tar -C $(dir $<) -czf $@ $(notdir $<)
diff --git a/vendor/psy/psysh/README.md b/vendor/psy/psysh/README.md
index 710434caf5..f34e8183cd 100644
--- a/vendor/psy/psysh/README.md
+++ b/vendor/psy/psysh/README.md
@@ -24,6 +24,7 @@ PsySH is a runtime developer console, interactive debugger and [REPL](https://en
  * [⏳ Managing history](https://github.com/bobthecow/psysh/wiki/History)
  * [💲 System shell integration](https://github.com/bobthecow/psysh/wiki/Shell-integration)
  * [🎥 Tutorials & guides](https://github.com/bobthecow/psysh/wiki/Tutorials)
+ * [🐛 Troubleshooting](https://github.com/bobthecow/psysh/wiki/Troubleshooting)
 
 ### [📢 Commands](https://github.com/bobthecow/psysh/wiki/Commands)
 
diff --git a/vendor/psy/psysh/bin/build-stub b/vendor/psy/psysh/bin/build-stub
deleted file mode 100755
index 0d26110eab..0000000000
--- a/vendor/psy/psysh/bin/build-stub
+++ /dev/null
@@ -1,22 +0,0 @@
-#!/usr/bin/env php
-<?php
-
-$license = file_get_contents(dirname(__DIR__) . '/LICENSE');
-$license = str_replace('The MIT License (MIT)', '', $license);
-$license = str_replace("\n", "\n * ", trim($license));
-
-$autoload = <<<'EOS'
-    Phar::mapPhar('psysh.phar');
-    require 'phar://psysh.phar/.box/check_requirements.php';
-    require 'phar://psysh.phar/vendor/autoload.php';
-EOS;
-
-$content = file_get_contents(dirname(__DIR__) . '/bin/psysh');
-$content = preg_replace('{/\* <<<.*?>>> \*/}sm', $autoload, $content);
-$content = preg_replace('/\\(c\\) .*?with this source code./sm', $license, $content);
-
-$content .= '__HALT_COMPILER();';
-
-@mkdir(dirname(__DIR__) . '/build');
-
-file_put_contents(dirname(__DIR__) . '/build/stub', $content);
diff --git a/vendor/psy/psysh/bin/psysh b/vendor/psy/psysh/bin/psysh
index 7dbd203e7a..0829481e83 100755
--- a/vendor/psy/psysh/bin/psysh
+++ b/vendor/psy/psysh/bin/psysh
@@ -20,7 +20,7 @@ call_user_func(function () {
     foreach ($argv as $i => $arg) {
         if ($arg === '--cwd') {
             if ($i >= count($argv) - 1) {
-                echo 'Missing --cwd argument.' . PHP_EOL;
+                fwrite(STDERR, 'Missing --cwd argument.' . PHP_EOL);
                 exit(1);
             }
             $cwd = $argv[$i + 1];
@@ -43,14 +43,21 @@ call_user_func(function () {
     $chunks = explode('/', $cwd);
     while (!empty($chunks)) {
         $path = implode('/', $chunks);
+        $prettyPath = $path;
+        if (isset($_SERVER['HOME']) && $_SERVER['HOME']) {
+            $prettyPath = preg_replace('/^' . preg_quote($_SERVER['HOME'], '/') . '/', '~', $path);
+        }
 
         // Find composer.json
         if (is_file($path . '/composer.json')) {
             if ($cfg = json_decode(file_get_contents($path . '/composer.json'), true)) {
                 if (isset($cfg['name']) && $cfg['name'] === 'psy/psysh') {
-                    // We're inside the psysh project. Let's use the local
-                    // Composer autoload.
+                    // We're inside the psysh project. Let's use the local Composer autoload.
                     if (is_file($path . '/vendor/autoload.php')) {
+                        if (realpath($path) !== realpath(__DIR__ . '/..')) {
+                            fwrite(STDERR, 'Using local PsySH version at ' . $prettyPath . PHP_EOL);
+                        }
+
                         require $path . '/vendor/autoload.php';
                     }
 
@@ -64,9 +71,12 @@ call_user_func(function () {
             if ($cfg = json_decode(file_get_contents($path . '/composer.lock'), true)) {
                 foreach (array_merge($cfg['packages'], $cfg['packages-dev']) as $pkg) {
                     if (isset($pkg['name']) && $pkg['name'] === 'psy/psysh') {
-                        // We're inside a project which requires psysh. We'll
-                        // use the local Composer autoload.
+                        // We're inside a project which requires psysh. We'll use the local Composer autoload.
                         if (is_file($path . '/vendor/autoload.php')) {
+                            if (realpath($path . '/vendor') !== realpath(__DIR__ . '/../../..')) {
+                                fwrite(STDERR, 'Using local PsySH version at ' . $prettyPath . PHP_EOL);
+                            }
+
                             require $path . '/vendor/autoload.php';
                         }
 
@@ -89,8 +99,8 @@ if (!class_exists('Psy\Shell')) {
     } elseif (is_file(__DIR__ . '/../../../autoload.php')) {
         require __DIR__ . '/../../../autoload.php';
     } else {
-        echo 'PsySH dependencies not found, be sure to run `composer install`.' . PHP_EOL;
-        echo 'See https://getcomposer.org to get Composer.' . PHP_EOL;
+        fwrite(STDERR, 'PsySH dependencies not found, be sure to run `composer install`.' . PHP_EOL);
+        fwrite(STDERR, 'See https://getcomposer.org to get Composer.' . PHP_EOL);
         exit(1);
     }
 /* >>> */
@@ -99,8 +109,8 @@ if (!class_exists('Psy\Shell')) {
 // If the psysh binary was included directly, assume they just wanted an
 // autoloader and bail early.
 //
-// Keep this PHP 5.3 code around for a while in case someone is using a globally
-// installed psysh as a bin launcher for older local versions.
+// Keep this PHP 5.3 and 5.4 code around for a while in case someone is using a
+// globally installed psysh as a bin launcher for older local versions.
 if (version_compare(PHP_VERSION, '5.3.6', '<')) {
     $trace = debug_backtrace();
 } elseif (version_compare(PHP_VERSION, '5.4.0', '<')) {
@@ -120,17 +130,17 @@ unset($trace);
 
 // If the local version is too old, we can't do this
 if (!function_exists('Psy\bin')) {
-    $argv = $_SERVER['argv'];
+    $argv = isset($_SERVER['argv']) ? $_SERVER['argv'] : array();
     $first = array_shift($argv);
     if (preg_match('/php(\.exe)?$/', $first)) {
         array_shift($argv);
     }
     array_unshift($argv, 'vendor/bin/psysh');
 
-    echo 'A local PsySH dependency was found, but it cannot be loaded. Please update to' . PHP_EOL;
-    echo 'the latest version, or run the local copy directly, e.g.:' . PHP_EOL;
-    echo PHP_EOL;
-    echo '    ' . implode(' ', $argv) . PHP_EOL;
+    fwrite(STDERR, 'A local PsySH dependency was found, but it cannot be loaded. Please update to' . PHP_EOL);
+    fwrite(STDERR, 'the latest version, or run the local copy directly, e.g.:' . PHP_EOL);
+    fwrite(STDERR, PHP_EOL);
+    fwrite(STDERR, '    ' . implode(' ', $argv) . PHP_EOL);
     exit(1);
 }
 
diff --git a/vendor/psy/psysh/box.json.dist b/vendor/psy/psysh/box.json.dist
deleted file mode 100644
index e302f265eb..0000000000
--- a/vendor/psy/psysh/box.json.dist
+++ /dev/null
@@ -1,12 +0,0 @@
-{
-    "stub": "stub",
-    "output": "psysh",
-    "compactors": [
-        "KevinGH\\Box\\Compactor\\Php"
-    ],
-    "blacklist": [
-        "grammar",
-        "test_old",
-        "Documentation"
-    ]
-}
diff --git a/vendor/psy/psysh/composer.json b/vendor/psy/psysh/composer.json
index 4588ba60a5..a097b3dfb8 100644
--- a/vendor/psy/psysh/composer.json
+++ b/vendor/psy/psysh/composer.json
@@ -13,18 +13,16 @@
         }
     ],
     "require": {
-        "php": ">=5.4.0",
+        "php": "^8.0 || ^7.0 || ^5.5.9",
         "ext-json": "*",
         "ext-tokenizer": "*",
-        "symfony/console": "~2.3.10|^2.4.2|~3.0|~4.0",
-        "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.*|0.4.*"
+        "symfony/console": "~5.0|~4.0|~3.0|^2.4.2|~2.3.10",
+        "symfony/var-dumper": "~5.0|~4.0|~3.0|~2.7",
+        "nikic/php-parser": "~4.0|~3.0|~2.0|~1.3",
+        "dnoegel/php-xdg-base-dir": "0.1.*"
     },
     "require-dev": {
-        "phpunit/phpunit": "~4.8.35|~5.0|~6.0|~7.0",
-        "hoa/console": "~2.15|~3.16",
+        "hoa/console": "3.17.*",
         "bamarni/composer-bin-plugin": "^1.2"
     },
     "suggest": {
@@ -48,7 +46,7 @@
     "bin": ["bin/psysh"],
     "extra": {
         "branch-alias": {
-            "dev-develop": "0.9.x-dev"
+            "dev-master": "0.10.x-dev"
         }
     }
 }
diff --git a/vendor/psy/psysh/phpunit.xml.dist b/vendor/psy/psysh/phpunit.xml.dist
deleted file mode 100644
index 3534fca270..0000000000
--- a/vendor/psy/psysh/phpunit.xml.dist
+++ /dev/null
@@ -1,12 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<phpunit backupGlobals="false" colors="true" bootstrap="vendor/autoload.php">
-	<testsuite name="PsySH">
-		<directory suffix="Test.php">./test</directory>
-	</testsuite>
-
-	<filter>
-		<whitelist>
-			<directory suffix=".php">./src</directory>
-		</whitelist>
-	</filter>
-</phpunit>
diff --git a/vendor/psy/psysh/src/CodeCleaner.php b/vendor/psy/psysh/src/CodeCleaner.php
index e44c2c18e0..58876ce8ba 100644
--- a/vendor/psy/psysh/src/CodeCleaner.php
+++ b/vendor/psy/psysh/src/CodeCleaner.php
@@ -3,7 +3,7 @@
 /*
  * This file is part of Psy Shell.
  *
- * (c) 2012-2018 Justin Hileman
+ * (c) 2012-2020 Justin Hileman
  *
  * For the full copyright and license information, please view the LICENSE
  * file that was distributed with this source code.
@@ -18,20 +18,22 @@
 use Psy\CodeCleaner\AssignThisVariablePass;
 use Psy\CodeCleaner\CalledClassPass;
 use Psy\CodeCleaner\CallTimePassByReferencePass;
+use Psy\CodeCleaner\EmptyArrayDimFetchPass;
 use Psy\CodeCleaner\ExitPass;
 use Psy\CodeCleaner\FinalClassPass;
 use Psy\CodeCleaner\FunctionContextPass;
 use Psy\CodeCleaner\FunctionReturnInWriteContextPass;
 use Psy\CodeCleaner\ImplicitReturnPass;
 use Psy\CodeCleaner\InstanceOfPass;
+use Psy\CodeCleaner\LabelContextPass;
 use Psy\CodeCleaner\LeavePsyshAlonePass;
-use Psy\CodeCleaner\LegacyEmptyPass;
 use Psy\CodeCleaner\ListPass;
 use Psy\CodeCleaner\LoopContextPass;
 use Psy\CodeCleaner\MagicConstantsPass;
 use Psy\CodeCleaner\NamespacePass;
 use Psy\CodeCleaner\PassableByReferencePass;
 use Psy\CodeCleaner\RequirePass;
+use Psy\CodeCleaner\ReturnTypePass;
 use Psy\CodeCleaner\StrictTypesPass;
 use Psy\CodeCleaner\UseStatementPass;
 use Psy\CodeCleaner\ValidClassNamePass;
@@ -54,9 +56,9 @@ class CodeCleaner
     /**
      * CodeCleaner constructor.
      *
-     * @param Parser        $parser    A PhpParser Parser instance. One will be created if not explicitly supplied
-     * @param Printer       $printer   A PhpParser Printer instance. One will be created if not explicitly supplied
-     * @param NodeTraverser $traverser A PhpParser NodeTraverser instance. One will be created if not explicitly supplied
+     * @param Parser|null        $parser    A PhpParser Parser instance. One will be created if not explicitly supplied
+     * @param Printer|null       $printer   A PhpParser Printer instance. One will be created if not explicitly supplied
+     * @param NodeTraverser|null $traverser A PhpParser NodeTraverser instance. One will be created if not explicitly supplied
      */
     public function __construct(Parser $parser = null, Printer $printer = null, NodeTraverser $traverser = null)
     {
@@ -98,11 +100,13 @@ private function getDefaultPasses()
             new FunctionContextPass(),
             new FunctionReturnInWriteContextPass(),
             new InstanceOfPass(),
+            new LabelContextPass(),
             new LeavePsyshAlonePass(),
-            new LegacyEmptyPass(),
             new ListPass(),
             new LoopContextPass(),
             new PassableByReferencePass(),
+            new ReturnTypePass(),
+            new EmptyArrayDimFetchPass(),
             new ValidConstructorPass(),
 
             // Rewriting shenanigans
@@ -198,8 +202,8 @@ private static function isDebugCall(array $stackFrame)
         $class    = isset($stackFrame['class']) ? $stackFrame['class'] : null;
         $function = isset($stackFrame['function']) ? $stackFrame['function'] : null;
 
-        return ($class === null && $function === 'Psy\debug') ||
-            ($class === 'Psy\Shell' && $function === 'debug');
+        return ($class === null && $function === 'Psy\\debug') ||
+            ($class === Shell::class && $function === 'debug');
     }
 
     /**
@@ -237,9 +241,9 @@ public function clean(array $codeLines, $requireSemicolons = false)
     /**
      * Set the current local namespace.
      *
-     * @param null|array $namespace (default: null)
+     * @param array|null $namespace (default: null)
      *
-     * @return null|array
+     * @return array|null
      */
     public function setNamespace(array $namespace = null)
     {
@@ -249,7 +253,7 @@ public function setNamespace(array $namespace = null)
     /**
      * Get the current local namespace.
      *
-     * @return null|array
+     * @return array|null
      */
     public function getNamespace()
     {
diff --git a/vendor/psy/psysh/src/CodeCleaner/AbstractClassPass.php b/vendor/psy/psysh/src/CodeCleaner/AbstractClassPass.php
index 81d12b6a5f..62f6370d0b 100644
--- a/vendor/psy/psysh/src/CodeCleaner/AbstractClassPass.php
+++ b/vendor/psy/psysh/src/CodeCleaner/AbstractClassPass.php
@@ -3,7 +3,7 @@
 /*
  * This file is part of Psy Shell.
  *
- * (c) 2012-2018 Justin Hileman
+ * (c) 2012-2020 Justin Hileman
  *
  * For the full copyright and license information, please view the LICENSE
  * file that was distributed with this source code.
@@ -25,7 +25,7 @@ class AbstractClassPass extends CodeCleanerPass
     private $abstractMethods;
 
     /**
-     * @throws RuntimeException if the node is an abstract function with a body
+     * @throws FatalErrorException if the node is an abstract function with a body
      *
      * @param Node $node
      */
@@ -48,7 +48,7 @@ public function enterNode(Node $node)
     }
 
     /**
-     * @throws RuntimeException if the node is a non-abstract class with abstract methods
+     * @throws FatalErrorException if the node is a non-abstract class with abstract methods
      *
      * @param Node $node
      */
diff --git a/vendor/psy/psysh/src/CodeCleaner/AssignThisVariablePass.php b/vendor/psy/psysh/src/CodeCleaner/AssignThisVariablePass.php
index 4c42d97f3b..b95920c3d0 100644
--- a/vendor/psy/psysh/src/CodeCleaner/AssignThisVariablePass.php
+++ b/vendor/psy/psysh/src/CodeCleaner/AssignThisVariablePass.php
@@ -3,7 +3,7 @@
 /*
  * This file is part of Psy Shell.
  *
- * (c) 2012-2018 Justin Hileman
+ * (c) 2012-2020 Justin Hileman
  *
  * For the full copyright and license information, please view the LICENSE
  * file that was distributed with this source code.
@@ -26,7 +26,7 @@ class AssignThisVariablePass extends CodeCleanerPass
     /**
      * Validate that the user input does not assign the `$this` variable.
      *
-     * @throws RuntimeException if the user assign the `$this` variable
+     * @throws FatalErrorException if the user assign the `$this` variable
      *
      * @param Node $node
      */
diff --git a/vendor/psy/psysh/src/CodeCleaner/CallTimePassByReferencePass.php b/vendor/psy/psysh/src/CodeCleaner/CallTimePassByReferencePass.php
index cff2c519b9..4fb359a13f 100644
--- a/vendor/psy/psysh/src/CodeCleaner/CallTimePassByReferencePass.php
+++ b/vendor/psy/psysh/src/CodeCleaner/CallTimePassByReferencePass.php
@@ -3,7 +3,7 @@
 /*
  * This file is part of Psy Shell.
  *
- * (c) 2012-2018 Justin Hileman
+ * (c) 2012-2020 Justin Hileman
  *
  * For the full copyright and license information, please view the LICENSE
  * file that was distributed with this source code.
@@ -31,7 +31,7 @@ class CallTimePassByReferencePass extends CodeCleanerPass
     /**
      * Validate of use call-time pass-by-reference.
      *
-     * @throws RuntimeException if the user used call-time pass-by-reference
+     * @throws FatalErrorException if the user used call-time pass-by-reference
      *
      * @param Node $node
      */
diff --git a/vendor/psy/psysh/src/CodeCleaner/CalledClassPass.php b/vendor/psy/psysh/src/CodeCleaner/CalledClassPass.php
index e78f08d073..d920444eb7 100644
--- a/vendor/psy/psysh/src/CodeCleaner/CalledClassPass.php
+++ b/vendor/psy/psysh/src/CodeCleaner/CalledClassPass.php
@@ -3,7 +3,7 @@
 /*
  * This file is part of Psy Shell.
  *
- * (c) 2012-2018 Justin Hileman
+ * (c) 2012-2020 Justin Hileman
  *
  * For the full copyright and license information, please view the LICENSE
  * file that was distributed with this source code.
diff --git a/vendor/psy/psysh/src/CodeCleaner/CodeCleanerPass.php b/vendor/psy/psysh/src/CodeCleaner/CodeCleanerPass.php
index 58e5d05ec2..7d80ac896a 100644
--- a/vendor/psy/psysh/src/CodeCleaner/CodeCleanerPass.php
+++ b/vendor/psy/psysh/src/CodeCleaner/CodeCleanerPass.php
@@ -3,7 +3,7 @@
 /*
  * This file is part of Psy Shell.
  *
- * (c) 2012-2018 Justin Hileman
+ * (c) 2012-2020 Justin Hileman
  *
  * For the full copyright and license information, please view the LICENSE
  * file that was distributed with this source code.
diff --git a/vendor/psy/psysh/src/CodeCleaner/EmptyArrayDimFetchPass.php b/vendor/psy/psysh/src/CodeCleaner/EmptyArrayDimFetchPass.php
new file mode 100644
index 0000000000..60f5c56416
--- /dev/null
+++ b/vendor/psy/psysh/src/CodeCleaner/EmptyArrayDimFetchPass.php
@@ -0,0 +1,50 @@
+<?php
+
+/*
+ * This file is part of Psy Shell.
+ *
+ * (c) 2012-2020 Justin Hileman
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Psy\CodeCleaner;
+
+use PhpParser\Node;
+use PhpParser\Node\Expr\ArrayDimFetch;
+use PhpParser\Node\Expr\Assign;
+use Psy\Exception\FatalErrorException;
+
+/**
+ * Validate empty brackets are only used for assignment.
+ */
+class EmptyArrayDimFetchPass extends CodeCleanerPass
+{
+    const EXCEPTION_MESSAGE = 'Cannot use [] for reading';
+
+    private $theseOnesAreFine = [];
+
+    public function beforeTraverse(array $nodes)
+    {
+        $this->theseOnesAreFine = [];
+    }
+
+    /**
+     * @throws FatalErrorException if the user used empty empty array dim fetch outside of assignment
+     *
+     * @param Node $node
+     */
+    public function enterNode(Node $node)
+    {
+        if ($node instanceof Assign && $node->var instanceof ArrayDimFetch) {
+            $this->theseOnesAreFine[] = $node->var;
+        }
+
+        if ($node instanceof ArrayDimFetch && $node->dim === null) {
+            if (!\in_array($node, $this->theseOnesAreFine)) {
+                throw new FatalErrorException(self::EXCEPTION_MESSAGE, $node->getLine());
+            }
+        }
+    }
+}
diff --git a/vendor/psy/psysh/src/CodeCleaner/ExitPass.php b/vendor/psy/psysh/src/CodeCleaner/ExitPass.php
index 349a5c5711..6571bb7556 100644
--- a/vendor/psy/psysh/src/CodeCleaner/ExitPass.php
+++ b/vendor/psy/psysh/src/CodeCleaner/ExitPass.php
@@ -3,7 +3,7 @@
 /*
  * This file is part of Psy Shell.
  *
- * (c) 2012-2018 Justin Hileman
+ * (c) 2012-2020 Justin Hileman
  *
  * For the full copyright and license information, please view the LICENSE
  * file that was distributed with this source code.
@@ -15,6 +15,7 @@
 use PhpParser\Node\Expr\Exit_;
 use PhpParser\Node\Expr\StaticCall;
 use PhpParser\Node\Name\FullyQualified as FullyQualifiedName;
+use Psy\Exception\BreakException;
 
 class ExitPass extends CodeCleanerPass
 {
@@ -26,7 +27,7 @@ class ExitPass extends CodeCleanerPass
     public function leaveNode(Node $node)
     {
         if ($node instanceof Exit_) {
-            return new StaticCall(new FullyQualifiedName('Psy\Exception\BreakException'), 'exitShell');
+            return new StaticCall(new FullyQualifiedName(BreakException::class), 'exitShell');
         }
     }
 }
diff --git a/vendor/psy/psysh/src/CodeCleaner/FinalClassPass.php b/vendor/psy/psysh/src/CodeCleaner/FinalClassPass.php
index 23f143be54..648d4c5805 100644
--- a/vendor/psy/psysh/src/CodeCleaner/FinalClassPass.php
+++ b/vendor/psy/psysh/src/CodeCleaner/FinalClassPass.php
@@ -3,7 +3,7 @@
 /*
  * This file is part of Psy Shell.
  *
- * (c) 2012-2018 Justin Hileman
+ * (c) 2012-2020 Justin Hileman
  *
  * For the full copyright and license information, please view the LICENSE
  * file that was distributed with this source code.
@@ -31,7 +31,7 @@ public function beforeTraverse(array $nodes)
     }
 
     /**
-     * @throws RuntimeException if the node is a class that extends a final class
+     * @throws FatalErrorException if the node is a class that extends a final class
      *
      * @param Node $node
      */
diff --git a/vendor/psy/psysh/src/CodeCleaner/FunctionContextPass.php b/vendor/psy/psysh/src/CodeCleaner/FunctionContextPass.php
index adff5ca10f..f5b4a61c28 100644
--- a/vendor/psy/psysh/src/CodeCleaner/FunctionContextPass.php
+++ b/vendor/psy/psysh/src/CodeCleaner/FunctionContextPass.php
@@ -3,7 +3,7 @@
 /*
  * This file is part of Psy Shell.
  *
- * (c) 2012-2018 Justin Hileman
+ * (c) 2012-2020 Justin Hileman
  *
  * For the full copyright and license information, please view the LICENSE
  * file that was distributed with this source code.
diff --git a/vendor/psy/psysh/src/CodeCleaner/FunctionReturnInWriteContextPass.php b/vendor/psy/psysh/src/CodeCleaner/FunctionReturnInWriteContextPass.php
index 87e5e7abff..e47c60fe7f 100644
--- a/vendor/psy/psysh/src/CodeCleaner/FunctionReturnInWriteContextPass.php
+++ b/vendor/psy/psysh/src/CodeCleaner/FunctionReturnInWriteContextPass.php
@@ -3,7 +3,7 @@
 /*
  * This file is part of Psy Shell.
  *
- * (c) 2012-2018 Justin Hileman
+ * (c) 2012-2020 Justin Hileman
  *
  * For the full copyright and license information, please view the LICENSE
  * file that was distributed with this source code.
@@ -14,7 +14,6 @@
 use PhpParser\Node;
 use PhpParser\Node\Expr\Array_;
 use PhpParser\Node\Expr\Assign;
-use PhpParser\Node\Expr\Empty_;
 use PhpParser\Node\Expr\FuncCall;
 use PhpParser\Node\Expr\Isset_;
 use PhpParser\Node\Expr\MethodCall;
@@ -29,22 +28,14 @@
  */
 class FunctionReturnInWriteContextPass extends CodeCleanerPass
 {
-    const PHP55_MESSAGE = 'Cannot use isset() on the result of a function call (you can use "null !== func()" instead)';
+    const ISSET_MESSAGE = 'Cannot use isset() on the result of an expression (you can use "null !== expression" instead)';
     const EXCEPTION_MESSAGE = "Can't use function return value in write context";
 
-    private $atLeastPhp55;
-
-    public function __construct()
-    {
-        $this->atLeastPhp55 = \version_compare(PHP_VERSION, '5.5', '>=');
-    }
-
     /**
      * Validate that the functions are used correctly.
      *
      * @throws FatalErrorException if a function is passed as an argument reference
      * @throws FatalErrorException if a function is used as an argument in the isset
-     * @throws FatalErrorException if a function is used as an argument in the empty, only for PHP < 5.5
      * @throws FatalErrorException if a value is assigned to a function
      *
      * @param Node $node
@@ -64,11 +55,9 @@ public function enterNode(Node $node)
                     continue;
                 }
 
-                $msg = ($node instanceof Isset_ && $this->atLeastPhp55) ? self::PHP55_MESSAGE : self::EXCEPTION_MESSAGE;
+                $msg = $node instanceof Isset_ ? self::ISSET_MESSAGE : self::EXCEPTION_MESSAGE;
                 throw new FatalErrorException($msg, 0, E_ERROR, null, $node->getLine());
             }
-        } elseif ($node instanceof Empty_ && !$this->atLeastPhp55 && $this->isCallNode($node->expr)) {
-            throw new FatalErrorException(self::EXCEPTION_MESSAGE, 0, E_ERROR, null, $node->getLine()); // @codeCoverageIgnore
         } elseif ($node instanceof Assign && $this->isCallNode($node->var)) {
             throw new FatalErrorException(self::EXCEPTION_MESSAGE, 0, E_ERROR, null, $node->getLine());
         }
diff --git a/vendor/psy/psysh/src/CodeCleaner/ImplicitReturnPass.php b/vendor/psy/psysh/src/CodeCleaner/ImplicitReturnPass.php
index 06b069780b..94f886337f 100644
--- a/vendor/psy/psysh/src/CodeCleaner/ImplicitReturnPass.php
+++ b/vendor/psy/psysh/src/CodeCleaner/ImplicitReturnPass.php
@@ -3,7 +3,7 @@
 /*
  * This file is part of Psy Shell.
  *
- * (c) 2012-2018 Justin Hileman
+ * (c) 2012-2020 Justin Hileman
  *
  * For the full copyright and license information, please view the LICENSE
  * file that was distributed with this source code.
diff --git a/vendor/psy/psysh/src/CodeCleaner/InstanceOfPass.php b/vendor/psy/psysh/src/CodeCleaner/InstanceOfPass.php
index 44e24cae7c..87028af719 100644
--- a/vendor/psy/psysh/src/CodeCleaner/InstanceOfPass.php
+++ b/vendor/psy/psysh/src/CodeCleaner/InstanceOfPass.php
@@ -3,7 +3,7 @@
 /*
  * This file is part of Psy Shell.
  *
- * (c) 2012-2018 Justin Hileman
+ * (c) 2012-2020 Justin Hileman
  *
  * For the full copyright and license information, please view the LICENSE
  * file that was distributed with this source code.
@@ -12,6 +12,9 @@
 namespace Psy\CodeCleaner;
 
 use PhpParser\Node;
+use PhpParser\Node\Expr\Array_;
+use PhpParser\Node\Expr\BinaryOp;
+use PhpParser\Node\Expr\ClassConstFetch;
 use PhpParser\Node\Expr\ConstFetch;
 use PhpParser\Node\Expr\Instanceof_;
 use PhpParser\Node\Scalar;
@@ -40,7 +43,12 @@ public function enterNode(Node $node)
             return;
         }
 
-        if (($node->expr instanceof Scalar && !$node->expr instanceof Encapsed) || $node->expr instanceof ConstFetch) {
+        if (($node->expr instanceof Scalar && !$node->expr instanceof Encapsed) ||
+            $node->expr instanceof BinaryOp ||
+            $node->expr instanceof Array_ ||
+            $node->expr instanceof ConstFetch ||
+            $node->expr instanceof ClassConstFetch
+        ) {
             throw new FatalErrorException(self::EXCEPTION_MSG, 0, E_ERROR, null, $node->getLine());
         }
     }
diff --git a/vendor/psy/psysh/src/CodeCleaner/LabelContextPass.php b/vendor/psy/psysh/src/CodeCleaner/LabelContextPass.php
new file mode 100644
index 0000000000..e54d0cf9e5
--- /dev/null
+++ b/vendor/psy/psysh/src/CodeCleaner/LabelContextPass.php
@@ -0,0 +1,91 @@
+<?php
+
+/*
+ * This file is part of Psy Shell.
+ *
+ * (c) 2012-2020 Justin Hileman
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Psy\CodeCleaner;
+
+use PhpParser\Node;
+use PhpParser\Node\FunctionLike;
+use PhpParser\Node\Stmt\Goto_;
+use PhpParser\Node\Stmt\Label;
+use Psy\Exception\FatalErrorException;
+
+/**
+ * CodeCleanerPass for label context.
+ *
+ * This class partially emulates the PHP label specification.
+ * PsySH can not declare labels by sequentially executing lines with eval,
+ * but since it is not a syntax error, no error is raised.
+ * This class warns before invalid goto causes a fatal error.
+ * Since this is a simple checker, it does not block real fatal error
+ * with complex syntax.  (ex. it does not parse inside function.)
+ *
+ * @see http://php.net/goto
+ */
+class LabelContextPass extends CodeCleanerPass
+{
+    /** @var int */
+    private $functionDepth;
+
+    /** @var array */
+    private $labelDeclarations;
+    /** @var array */
+    private $labelGotos;
+
+    /**
+     * @param array $nodes
+     */
+    public function beforeTraverse(array $nodes)
+    {
+        $this->functionDepth = 0;
+        $this->labelDeclarations = [];
+        $this->labelGotos = [];
+    }
+
+    public function enterNode(Node $node)
+    {
+        if ($node instanceof FunctionLike) {
+            $this->functionDepth++;
+
+            return;
+        }
+
+        // node is inside function context
+        if ($this->functionDepth !== 0) {
+            return;
+        }
+
+        if ($node instanceof Goto_) {
+            $this->labelGotos[\strtolower($node->name)] = $node->getLine();
+        } elseif ($node instanceof Label) {
+            $this->labelDeclarations[\strtolower($node->name)] = $node->getLine();
+        }
+    }
+
+    /**
+     * @param \PhpParser\Node $node
+     */
+    public function leaveNode(Node $node)
+    {
+        if ($node instanceof FunctionLike) {
+            $this->functionDepth--;
+        }
+    }
+
+    public function afterTraverse(array $nodes)
+    {
+        foreach ($this->labelGotos as $name => $line) {
+            if (!isset($this->labelDeclarations[$name])) {
+                $msg = "'goto' to undefined label '{$name}'";
+                throw new FatalErrorException($msg, 0, E_ERROR, null, $line);
+            }
+        }
+    }
+}
diff --git a/vendor/psy/psysh/src/CodeCleaner/LeavePsyshAlonePass.php b/vendor/psy/psysh/src/CodeCleaner/LeavePsyshAlonePass.php
index 08f6fbee0c..2c28238631 100644
--- a/vendor/psy/psysh/src/CodeCleaner/LeavePsyshAlonePass.php
+++ b/vendor/psy/psysh/src/CodeCleaner/LeavePsyshAlonePass.php
@@ -3,7 +3,7 @@
 /*
  * This file is part of Psy Shell.
  *
- * (c) 2012-2018 Justin Hileman
+ * (c) 2012-2020 Justin Hileman
  *
  * For the full copyright and license information, please view the LICENSE
  * file that was distributed with this source code.
diff --git a/vendor/psy/psysh/src/CodeCleaner/LegacyEmptyPass.php b/vendor/psy/psysh/src/CodeCleaner/LegacyEmptyPass.php
deleted file mode 100644
index 9793d8c4c5..0000000000
--- a/vendor/psy/psysh/src/CodeCleaner/LegacyEmptyPass.php
+++ /dev/null
@@ -1,73 +0,0 @@
-<?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\CodeCleaner;
-
-use PhpParser\Node;
-use PhpParser\Node\Expr\Empty_;
-use PhpParser\Node\Expr\Variable;
-use Psy\Exception\ParseErrorException;
-
-/**
- * Validate that the user did not call the language construct `empty()` on a
- * statement in PHP < 5.5.
- *
- * @codeCoverageIgnore
- */
-class LegacyEmptyPass extends CodeCleanerPass
-{
-    private $atLeastPhp55;
-
-    public function __construct()
-    {
-        $this->atLeastPhp55 = \version_compare(PHP_VERSION, '5.5', '>=');
-    }
-
-    /**
-     * Validate use of empty in PHP < 5.5.
-     *
-     * @throws ParseErrorException if the user used empty with anything but a variable
-     *
-     * @param Node $node
-     */
-    public function enterNode(Node $node)
-    {
-        if ($this->atLeastPhp55) {
-            return;
-        }
-
-        if (!$node instanceof Empty_) {
-            return;
-        }
-
-        if (!$node->expr instanceof Variable) {
-            $msg = \sprintf('syntax error, unexpected %s', $this->getUnexpectedThing($node->expr));
-
-            throw new ParseErrorException($msg, $node->expr->getLine());
-        }
-    }
-
-    private function getUnexpectedThing(Node $node)
-    {
-        switch ($node->getType()) {
-            case 'Scalar_String':
-            case 'Scalar_LNumber':
-            case 'Scalar_DNumber':
-                return \json_encode($node->value);
-
-            case 'Expr_ConstFetch':
-                return (string) $node->name;
-
-            default:
-                return $node->getType();
-        }
-    }
-}
diff --git a/vendor/psy/psysh/src/CodeCleaner/ListPass.php b/vendor/psy/psysh/src/CodeCleaner/ListPass.php
index b0d1d73e40..e99faaaa2c 100644
--- a/vendor/psy/psysh/src/CodeCleaner/ListPass.php
+++ b/vendor/psy/psysh/src/CodeCleaner/ListPass.php
@@ -3,7 +3,7 @@
 /*
  * This file is part of Psy Shell.
  *
- * (c) 2012-2018 Justin Hileman
+ * (c) 2012-2020 Justin Hileman
  *
  * For the full copyright and license information, please view the LICENSE
  * file that was distributed with this source code.
diff --git a/vendor/psy/psysh/src/CodeCleaner/LoopContextPass.php b/vendor/psy/psysh/src/CodeCleaner/LoopContextPass.php
index 933278e736..c0da7b2cb3 100644
--- a/vendor/psy/psysh/src/CodeCleaner/LoopContextPass.php
+++ b/vendor/psy/psysh/src/CodeCleaner/LoopContextPass.php
@@ -3,7 +3,7 @@
 /*
  * This file is part of Psy Shell.
  *
- * (c) 2012-2018 Justin Hileman
+ * (c) 2012-2020 Justin Hileman
  *
  * For the full copyright and license information, please view the LICENSE
  * file that was distributed with this source code.
diff --git a/vendor/psy/psysh/src/CodeCleaner/MagicConstantsPass.php b/vendor/psy/psysh/src/CodeCleaner/MagicConstantsPass.php
index 50936b2ccf..adf92fba1e 100644
--- a/vendor/psy/psysh/src/CodeCleaner/MagicConstantsPass.php
+++ b/vendor/psy/psysh/src/CodeCleaner/MagicConstantsPass.php
@@ -3,7 +3,7 @@
 /*
  * This file is part of Psy Shell.
  *
- * (c) 2012-2018 Justin Hileman
+ * (c) 2012-2020 Justin Hileman
  *
  * For the full copyright and license information, please view the LICENSE
  * file that was distributed with this source code.
@@ -29,7 +29,7 @@ class MagicConstantsPass extends CodeCleanerPass
      *
      * @param Node $node
      *
-     * @return null|FuncCall|String_
+     * @return FuncCall|String_|null
      */
     public function enterNode(Node $node)
     {
diff --git a/vendor/psy/psysh/src/CodeCleaner/NamespaceAwarePass.php b/vendor/psy/psysh/src/CodeCleaner/NamespaceAwarePass.php
index 6679206dc0..eb2cfd7b61 100644
--- a/vendor/psy/psysh/src/CodeCleaner/NamespaceAwarePass.php
+++ b/vendor/psy/psysh/src/CodeCleaner/NamespaceAwarePass.php
@@ -3,7 +3,7 @@
 /*
  * This file is part of Psy Shell.
  *
- * (c) 2012-2018 Justin Hileman
+ * (c) 2012-2020 Justin Hileman
  *
  * For the full copyright and license information, please view the LICENSE
  * file that was distributed with this source code.
diff --git a/vendor/psy/psysh/src/CodeCleaner/NamespacePass.php b/vendor/psy/psysh/src/CodeCleaner/NamespacePass.php
index d26f07cce4..1f11072efa 100644
--- a/vendor/psy/psysh/src/CodeCleaner/NamespacePass.php
+++ b/vendor/psy/psysh/src/CodeCleaner/NamespacePass.php
@@ -3,7 +3,7 @@
 /*
  * This file is part of Psy Shell.
  *
- * (c) 2012-2018 Justin Hileman
+ * (c) 2012-2020 Justin Hileman
  *
  * For the full copyright and license information, please view the LICENSE
  * file that was distributed with this source code.
@@ -78,7 +78,7 @@ public function beforeTraverse(array $nodes)
      * Remember the namespace and (re)set the namespace on the CodeCleaner as
      * well.
      *
-     * @param null|Name $namespace
+     * @param Name|null $namespace
      */
     private function setNamespace($namespace)
     {
diff --git a/vendor/psy/psysh/src/CodeCleaner/NoReturnValue.php b/vendor/psy/psysh/src/CodeCleaner/NoReturnValue.php
index 90325701e6..d9c920bc7d 100644
--- a/vendor/psy/psysh/src/CodeCleaner/NoReturnValue.php
+++ b/vendor/psy/psysh/src/CodeCleaner/NoReturnValue.php
@@ -3,7 +3,7 @@
 /*
  * This file is part of Psy Shell.
  *
- * (c) 2012-2018 Justin Hileman
+ * (c) 2012-2020 Justin Hileman
  *
  * For the full copyright and license information, please view the LICENSE
  * file that was distributed with this source code.
@@ -26,10 +26,10 @@ class NoReturnValue
     /**
      * Get PhpParser AST expression for creating a new NoReturnValue.
      *
-     * @return PhpParser\Node\Expr\New_
+     * @return \PhpParser\Node\Expr\New_
      */
     public static function create()
     {
-        return new New_(new FullyQualifiedName('Psy\CodeCleaner\NoReturnValue'));
+        return new New_(new FullyQualifiedName(self::class));
     }
 }
diff --git a/vendor/psy/psysh/src/CodeCleaner/PassableByReferencePass.php b/vendor/psy/psysh/src/CodeCleaner/PassableByReferencePass.php
index 5b5dc0868b..dc347836b7 100644
--- a/vendor/psy/psysh/src/CodeCleaner/PassableByReferencePass.php
+++ b/vendor/psy/psysh/src/CodeCleaner/PassableByReferencePass.php
@@ -3,7 +3,7 @@
 /*
  * This file is part of Psy Shell.
  *
- * (c) 2012-2018 Justin Hileman
+ * (c) 2012-2020 Justin Hileman
  *
  * For the full copyright and license information, please view the LICENSE
  * file that was distributed with this source code.
@@ -13,6 +13,7 @@
 
 use PhpParser\Node;
 use PhpParser\Node\Expr;
+use PhpParser\Node\Expr\Array_;
 use PhpParser\Node\Expr\ClassConstFetch;
 use PhpParser\Node\Expr\FuncCall;
 use PhpParser\Node\Expr\MethodCall;
@@ -68,6 +69,11 @@ public function enterNode(Node $node)
 
     private function isPassableByReference(Node $arg)
     {
+        // Unpacked arrays can be passed by reference
+        if ($arg->value instanceof Array_) {
+            return $arg->unpack;
+        }
+
         // FuncCall, MethodCall and StaticCall are all PHP _warnings_ not fatal errors, so we'll let
         // PHP handle those ones :)
         return $arg->value instanceof ClassConstFetch ||
diff --git a/vendor/psy/psysh/src/CodeCleaner/RequirePass.php b/vendor/psy/psysh/src/CodeCleaner/RequirePass.php
index 31c156a37d..902fd343fa 100644
--- a/vendor/psy/psysh/src/CodeCleaner/RequirePass.php
+++ b/vendor/psy/psysh/src/CodeCleaner/RequirePass.php
@@ -3,7 +3,7 @@
 /*
  * This file is part of Psy Shell.
  *
- * (c) 2012-2018 Justin Hileman
+ * (c) 2012-2020 Justin Hileman
  *
  * For the full copyright and license information, please view the LICENSE
  * file that was distributed with this source code.
@@ -19,7 +19,6 @@
 use PhpParser\Node\Scalar\LNumber;
 use Psy\Exception\ErrorException;
 use Psy\Exception\FatalErrorException;
-use Psy\Shell;
 
 /**
  * Add runtime validation for `require` and `require_once` calls.
@@ -49,7 +48,7 @@ public function enterNode(Node $origNode)
          *   $foo = require \Psy\CodeCleaner\RequirePass::resolve($bar)
          */
         $node->expr = new StaticCall(
-            new FullyQualifiedName('Psy\CodeCleaner\RequirePass'),
+            new FullyQualifiedName(self::class),
             'resolve',
             [new Arg($origNode->expr), new Arg(new LNumber($origNode->getLine()))],
             $origNode->getAttributes()
diff --git a/vendor/psy/psysh/src/CodeCleaner/ReturnTypePass.php b/vendor/psy/psysh/src/CodeCleaner/ReturnTypePass.php
new file mode 100644
index 0000000000..e3a4c96b89
--- /dev/null
+++ b/vendor/psy/psysh/src/CodeCleaner/ReturnTypePass.php
@@ -0,0 +1,118 @@
+<?php
+
+/*
+ * This file is part of Psy Shell.
+ *
+ * (c) 2012-2020 Justin Hileman
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Psy\CodeCleaner;
+
+use PhpParser\Node;
+use PhpParser\Node\Expr\Closure;
+use PhpParser\Node\Expr\ConstFetch;
+use PhpParser\Node\Identifier;
+use PhpParser\Node\NullableType;
+use PhpParser\Node\Stmt\Function_;
+use PhpParser\Node\Stmt\Return_;
+use Psy\Exception\FatalErrorException;
+
+/**
+ * Add runtime validation for return types.
+ */
+class ReturnTypePass extends CodeCleanerPass
+{
+    const MESSAGE = 'A function with return type must return a value';
+    const NULLABLE_MESSAGE = 'A function with return type must return a value (did you mean "return null;" instead of "return;"?)';
+    const VOID_MESSAGE = 'A void function must not return a value';
+    const VOID_NULL_MESSAGE = 'A void function must not return a value (did you mean "return;" instead of "return null;"?)';
+    const NULLABLE_VOID_MESSAGE = 'Void type cannot be nullable';
+
+    private $atLeastPhp71;
+    private $returnTypeStack = [];
+
+    public function __construct()
+    {
+        $this->atLeastPhp71 = \version_compare(PHP_VERSION, '7.1', '>=');
+    }
+
+    /**
+     * {@inheritdoc}
+     */
+    public function enterNode(Node $node)
+    {
+        if (!$this->atLeastPhp71) {
+            return; // @codeCoverageIgnore
+        }
+
+        if ($this->isFunctionNode($node)) {
+            $this->returnTypeStack[] = $node->returnType;
+
+            return;
+        }
+
+        if (!empty($this->returnTypeStack) && $node instanceof Return_) {
+            $expectedType = \end($this->returnTypeStack);
+            if ($expectedType === null) {
+                return;
+            }
+
+            $msg = null;
+
+            if ($this->typeName($expectedType) === 'void') {
+                // Void functions
+                if ($expectedType instanceof NullableType) {
+                    $msg = self::NULLABLE_VOID_MESSAGE;
+                } elseif ($node->expr instanceof ConstFetch && \strtolower($node->expr->name) === 'null') {
+                    $msg = self::VOID_NULL_MESSAGE;
+                } elseif ($node->expr !== null) {
+                    $msg = self::VOID_MESSAGE;
+                }
+            } else {
+                // Everything else
+                if ($node->expr === null) {
+                    $msg = $expectedType instanceof NullableType ? self::NULLABLE_MESSAGE : self::MESSAGE;
+                }
+            }
+
+            if ($msg !== null) {
+                throw new FatalErrorException($msg, 0, E_ERROR, null, $node->getLine());
+            }
+        }
+    }
+
+    /**
+     * {@inheritdoc}
+     */
+    public function leaveNode(Node $node)
+    {
+        if (!$this->atLeastPhp71) {
+            return; // @codeCoverageIgnore
+        }
+
+        if (!empty($this->returnTypeStack) && $this->isFunctionNode($node)) {
+            \array_pop($this->returnTypeStack);
+        }
+    }
+
+    private function isFunctionNode(Node $node)
+    {
+        return $node instanceof Function_ || $node instanceof Closure;
+    }
+
+    private function typeName(Node $node)
+    {
+        if ($node instanceof NullableType) {
+            return \strtolower($node->type->name);
+        }
+
+        if ($node instanceof Identifier) {
+            return \strtolower($node->name);
+        }
+
+        throw new \InvalidArgumentException('Unable to find type name');
+    }
+}
diff --git a/vendor/psy/psysh/src/CodeCleaner/StrictTypesPass.php b/vendor/psy/psysh/src/CodeCleaner/StrictTypesPass.php
index 058a5a8290..c71b062c81 100644
--- a/vendor/psy/psysh/src/CodeCleaner/StrictTypesPass.php
+++ b/vendor/psy/psysh/src/CodeCleaner/StrictTypesPass.php
@@ -3,7 +3,7 @@
 /*
  * This file is part of Psy Shell.
  *
- * (c) 2012-2018 Justin Hileman
+ * (c) 2012-2020 Justin Hileman
  *
  * For the full copyright and license information, please view the LICENSE
  * file that was distributed with this source code.
@@ -57,7 +57,7 @@ public function beforeTraverse(array $nodes)
 
         $prependStrictTypes = $this->strictTypes;
 
-        foreach ($nodes as $key => $node) {
+        foreach ($nodes as $node) {
             if ($node instanceof Declare_) {
                 foreach ($node->declares as $declare) {
                     // For PHP Parser 4.x
diff --git a/vendor/psy/psysh/src/CodeCleaner/UseStatementPass.php b/vendor/psy/psysh/src/CodeCleaner/UseStatementPass.php
index 64ac5be6d5..c755296ceb 100644
--- a/vendor/psy/psysh/src/CodeCleaner/UseStatementPass.php
+++ b/vendor/psy/psysh/src/CodeCleaner/UseStatementPass.php
@@ -3,7 +3,7 @@
 /*
  * This file is part of Psy Shell.
  *
- * (c) 2012-2018 Justin Hileman
+ * (c) 2012-2020 Justin Hileman
  *
  * For the full copyright and license information, please view the LICENSE
  * file that was distributed with this source code.
@@ -17,6 +17,7 @@
 use PhpParser\Node\Stmt\GroupUse;
 use PhpParser\Node\Stmt\Namespace_;
 use PhpParser\Node\Stmt\Use_;
+use PhpParser\Node\Stmt\UseUse;
 use PhpParser\NodeTraverser;
 
 /**
@@ -65,18 +66,18 @@ public function enterNode(Node $node)
      */
     public function leaveNode(Node $node)
     {
+        // Store a reference to every "use" statement, because we'll need them in a bit.
         if ($node instanceof Use_) {
-            // Store a reference to every "use" statement, because we'll need
-            // them in a bit.
             foreach ($node->uses as $use) {
                 $alias = $use->alias ?: \end($use->name->parts);
                 $this->aliases[\strtolower($alias)] = $use->name;
             }
 
             return NodeTraverser::REMOVE_NODE;
-        } elseif ($node instanceof GroupUse) {
-            // Expand every "use" statement in the group into a full, standalone
-            // "use" and store 'em with the others.
+        }
+
+        // Expand every "use" statement in the group into a full, standalone "use" and store 'em with the others.
+        if ($node instanceof GroupUse) {
             foreach ($node->uses as $use) {
                 $alias = $use->alias ?: \end($use->name->parts);
                 $this->aliases[\strtolower($alias)] = Name::concat($node->prefix, $use->name, [
@@ -86,23 +87,32 @@ public function leaveNode(Node $node)
             }
 
             return NodeTraverser::REMOVE_NODE;
-        } elseif ($node instanceof Namespace_) {
-            // Start fresh, since we're done with this namespace.
+        }
+
+        // Start fresh, since we're done with this namespace.
+        if ($node instanceof Namespace_) {
             $this->lastNamespace = $node->name;
             $this->lastAliases   = $this->aliases;
             $this->aliases       = [];
-        } else {
-            foreach ($node as $name => $subNode) {
-                if ($subNode instanceof Name) {
-                    // Implicitly thunk all aliases.
-                    if ($replacement = $this->findAlias($subNode)) {
-                        $node->$name = $replacement;
-                    }
+
+            return;
+        }
+
+        // Do nothing with UseUse; this an entry in the list of uses in the use statement.
+        if ($node instanceof UseUse) {
+            return;
+        }
+
+        // For everything else, we'll implicitly thunk all aliases into fully-qualified names.
+        foreach ($node as $name => $subNode) {
+            if ($subNode instanceof Name) {
+                if ($replacement = $this->findAlias($subNode)) {
+                    $node->$name = $replacement;
                 }
             }
-
-            return $node;
         }
+
+        return $node;
     }
 
     /**
diff --git a/vendor/psy/psysh/src/CodeCleaner/ValidClassNamePass.php b/vendor/psy/psysh/src/CodeCleaner/ValidClassNamePass.php
index 9578c9a86f..c8579721ba 100644
--- a/vendor/psy/psysh/src/CodeCleaner/ValidClassNamePass.php
+++ b/vendor/psy/psysh/src/CodeCleaner/ValidClassNamePass.php
@@ -3,7 +3,7 @@
 /*
  * This file is part of Psy Shell.
  *
- * (c) 2012-2018 Justin Hileman
+ * (c) 2012-2020 Justin Hileman
  *
  * For the full copyright and license information, please view the LICENSE
  * file that was distributed with this source code.
@@ -39,12 +39,6 @@ class ValidClassNamePass extends NamespaceAwarePass
     const TRAIT_TYPE     = 'trait';
 
     private $conditionalScopes = 0;
-    private $atLeastPhp55;
-
-    public function __construct()
-    {
-        $this->atLeastPhp55 = \version_compare(PHP_VERSION, '5.5', '>=');
-    }
 
     /**
      * Validate class, interface and trait definitions.
@@ -163,8 +157,8 @@ protected function validateNewExpression(New_ $stmt)
      */
     protected function validateClassConstFetchExpression(ClassConstFetch $stmt)
     {
-        // there is no need to check exists for ::class const for php 5.5 or newer
-        if (\strtolower($stmt->name) === 'class' && $this->atLeastPhp55) {
+        // there is no need to check exists for ::class const
+        if (\strtolower($stmt->name) === 'class') {
             return;
         }
 
diff --git a/vendor/psy/psysh/src/CodeCleaner/ValidConstantPass.php b/vendor/psy/psysh/src/CodeCleaner/ValidConstantPass.php
index 2d5e3e6d94..765844a477 100644
--- a/vendor/psy/psysh/src/CodeCleaner/ValidConstantPass.php
+++ b/vendor/psy/psysh/src/CodeCleaner/ValidConstantPass.php
@@ -3,7 +3,7 @@
 /*
  * This file is part of Psy Shell.
  *
- * (c) 2012-2018 Justin Hileman
+ * (c) 2012-2020 Justin Hileman
  *
  * For the full copyright and license information, please view the LICENSE
  * file that was distributed with this source code.
diff --git a/vendor/psy/psysh/src/CodeCleaner/ValidConstructorPass.php b/vendor/psy/psysh/src/CodeCleaner/ValidConstructorPass.php
index a079e26c99..6fc2b095e0 100644
--- a/vendor/psy/psysh/src/CodeCleaner/ValidConstructorPass.php
+++ b/vendor/psy/psysh/src/CodeCleaner/ValidConstructorPass.php
@@ -3,7 +3,7 @@
 /*
  * This file is part of Psy Shell.
  *
- * (c) 2012-2018 Justin Hileman
+ * (c) 2012-2020 Justin Hileman
  *
  * For the full copyright and license information, please view the LICENSE
  * file that was distributed with this source code.
diff --git a/vendor/psy/psysh/src/CodeCleaner/ValidFunctionNamePass.php b/vendor/psy/psysh/src/CodeCleaner/ValidFunctionNamePass.php
index dd1e057630..318e355aae 100644
--- a/vendor/psy/psysh/src/CodeCleaner/ValidFunctionNamePass.php
+++ b/vendor/psy/psysh/src/CodeCleaner/ValidFunctionNamePass.php
@@ -3,7 +3,7 @@
 /*
  * This file is part of Psy Shell.
  *
- * (c) 2012-2018 Justin Hileman
+ * (c) 2012-2020 Justin Hileman
  *
  * For the full copyright and license information, please view the LICENSE
  * file that was distributed with this source code.
diff --git a/vendor/psy/psysh/src/Command/BufferCommand.php b/vendor/psy/psysh/src/Command/BufferCommand.php
index 83ba34a8a6..6e16ac536f 100644
--- a/vendor/psy/psysh/src/Command/BufferCommand.php
+++ b/vendor/psy/psysh/src/Command/BufferCommand.php
@@ -3,7 +3,7 @@
 /*
  * This file is part of Psy Shell.
  *
- * (c) 2012-2018 Justin Hileman
+ * (c) 2012-2020 Justin Hileman
  *
  * For the full copyright and license information, please view the LICENSE
  * file that was distributed with this source code.
@@ -56,6 +56,8 @@ protected function execute(InputInterface $input, OutputInterface $output)
         } else {
             $output->writeln($this->formatLines($buf), ShellOutput::NUMBER_LINES);
         }
+
+        return 0;
     }
 
     /**
diff --git a/vendor/psy/psysh/src/Command/ClearCommand.php b/vendor/psy/psysh/src/Command/ClearCommand.php
index 6b12048a96..d20abab128 100644
--- a/vendor/psy/psysh/src/Command/ClearCommand.php
+++ b/vendor/psy/psysh/src/Command/ClearCommand.php
@@ -3,7 +3,7 @@
 /*
  * This file is part of Psy Shell.
  *
- * (c) 2012-2018 Justin Hileman
+ * (c) 2012-2020 Justin Hileman
  *
  * For the full copyright and license information, please view the LICENSE
  * file that was distributed with this source code.
@@ -45,5 +45,7 @@ protected function configure()
     protected function execute(InputInterface $input, OutputInterface $output)
     {
         $output->write(\sprintf('%c[2J%c[0;0f', 27, 27));
+
+        return 0;
     }
 }
diff --git a/vendor/psy/psysh/src/Command/Command.php b/vendor/psy/psysh/src/Command/Command.php
index be013a1b92..27017094db 100644
--- a/vendor/psy/psysh/src/Command/Command.php
+++ b/vendor/psy/psysh/src/Command/Command.php
@@ -3,7 +3,7 @@
 /*
  * This file is part of Psy Shell.
  *
- * (c) 2012-2018 Justin Hileman
+ * (c) 2012-2020 Justin Hileman
  *
  * For the full copyright and license information, please view the LICENSE
  * file that was distributed with this source code.
@@ -27,7 +27,7 @@ abstract class Command extends BaseCommand
     /**
      * Sets the application instance for this command.
      *
-     * @param Application $application An Application instance
+     * @param Application|null $application An Application instance
      *
      * @api
      */
@@ -232,7 +232,7 @@ private function getMaxWidth()
     private function formatDefaultValue($default)
     {
         if (\is_array($default) && $default === \array_values($default)) {
-            return \sprintf("array('%s')", \implode("', '", $default));
+            return \sprintf("['%s']", \implode("', '", $default));
         }
 
         return \str_replace("\n", '', \var_export($default, true));
@@ -247,15 +247,22 @@ private function formatDefaultValue($default)
      */
     protected function getTable(OutputInterface $output)
     {
-        if (!\class_exists('Symfony\Component\Console\Helper\Table')) {
+        if (!\class_exists(Table::class)) {
             return $this->getTableHelper();
         }
 
         $style = new TableStyle();
-        $style
-            ->setVerticalBorderChar(' ')
-            ->setHorizontalBorderChar('')
-            ->setCrossingChar('');
+
+        // Symfony 4.1 deprecated single-argument style setters.
+        if (\method_exists($style, 'setVerticalBorderChars')) {
+            $style->setVerticalBorderChars(' ');
+            $style->setHorizontalBorderChars('');
+            $style->setCrossingChars('', '', '', '', '', '', '', '', '');
+        } else {
+            $style->setVerticalBorderChar(' ');
+            $style->setHorizontalBorderChar('');
+            $style->setCrossingChar('');
+        }
 
         $table = new Table($output);
 
diff --git a/vendor/psy/psysh/src/Command/DocCommand.php b/vendor/psy/psysh/src/Command/DocCommand.php
index 913634a0ab..ba6c24f340 100644
--- a/vendor/psy/psysh/src/Command/DocCommand.php
+++ b/vendor/psy/psysh/src/Command/DocCommand.php
@@ -3,7 +3,7 @@
 /*
  * This file is part of Psy Shell.
  *
- * (c) 2012-2018 Justin Hileman
+ * (c) 2012-2020 Justin Hileman
  *
  * For the full copyright and license information, please view the LICENSE
  * file that was distributed with this source code.
@@ -14,8 +14,11 @@
 use Psy\Formatter\DocblockFormatter;
 use Psy\Formatter\SignatureFormatter;
 use Psy\Input\CodeArgument;
+use Psy\Reflection\ReflectionClassConstant;
+use Psy\Reflection\ReflectionConstant_;
 use Psy\Reflection\ReflectionLanguageConstruct;
 use Symfony\Component\Console\Input\InputInterface;
+use Symfony\Component\Console\Input\InputOption;
 use Symfony\Component\Console\Output\OutputInterface;
 
 /**
@@ -32,6 +35,7 @@ protected function configure()
             ->setName('doc')
             ->setAliases(['rtfm', 'man'])
             ->setDefinition([
+                new InputOption('all', 'a', InputOption::VALUE_NONE, 'Show documentation for superclasses as well as the current class.'),
                 new CodeArgument('target', CodeArgument::REQUIRED, 'Function, class, instance, constant, method or property to document.'),
             ])
             ->setDescription('Read the documentation for an object, class, constant, method or property.')
@@ -67,49 +71,83 @@ protected function execute(InputInterface $input, OutputInterface $output)
 
         $db = $this->getApplication()->getManualDb();
 
-        $output->page(function ($output) use ($reflector, $doc, $db) {
-            $output->writeln(SignatureFormatter::format($reflector));
-            $output->writeln('');
+        if ($output instanceof ShellOutput) {
+            $output->startPaging();
+        }
+
+        // Maybe include the declaring class
+        if ($reflector instanceof \ReflectionMethod || $reflector instanceof \ReflectionProperty) {
+            $output->writeln(SignatureFormatter::format($reflector->getDeclaringClass()));
+        }
 
-            if (empty($doc) && !$db) {
-                $output->writeln('<warning>PHP manual not found</warning>');
-                $output->writeln('    To document core PHP functionality, download the PHP reference manual:');
-                $output->writeln('    https://github.com/bobthecow/psysh/wiki/PHP-manual');
-            } else {
-                $output->writeln($doc);
+        $output->writeln(SignatureFormatter::format($reflector));
+        $output->writeln('');
+
+        if (empty($doc) && !$db) {
+            $output->writeln('<warning>PHP manual not found</warning>');
+            $output->writeln('    To document core PHP functionality, download the PHP reference manual:');
+            $output->writeln('    https://github.com/bobthecow/psysh/wiki/PHP-manual');
+        } else {
+            $output->writeln($doc);
+        }
+
+        if ($input->getOption('all')) {
+            $parent = $reflector;
+            foreach ($this->getParentReflectors($reflector) as $parent) {
+                $output->writeln('');
+                $output->writeln('---');
+                $output->writeln('');
+
+                // Maybe include the declaring class
+                if ($parent instanceof \ReflectionMethod || $parent instanceof \ReflectionProperty) {
+                    $output->writeln(SignatureFormatter::format($parent->getDeclaringClass()));
+                }
+
+                $output->writeln(SignatureFormatter::format($parent));
+                $output->writeln('');
+
+                if ($doc = $this->getManualDoc($parent) ?: DocblockFormatter::format($parent)) {
+                    $output->writeln($doc);
+                }
             }
-        });
+        }
+
+        if ($output instanceof ShellOutput) {
+            $output->stopPaging();
+        }
 
         // Set some magic local variables
         $this->setCommandScopeVariables($reflector);
+
+        return 0;
     }
 
     private function getManualDoc($reflector)
     {
         switch (\get_class($reflector)) {
-            case 'ReflectionClass':
-            case 'ReflectionObject':
-            case 'ReflectionFunction':
+            case \ReflectionClass::class:
+            case \ReflectionObject::class:
+            case \ReflectionFunction::class:
                 $id = $reflector->name;
                 break;
 
-            case 'ReflectionMethod':
+            case \ReflectionMethod::class:
                 $id = $reflector->class . '::' . $reflector->name;
                 break;
 
-            case 'ReflectionProperty':
+            case \ReflectionProperty::class:
                 $id = $reflector->class . '::$' . $reflector->name;
                 break;
 
-            case 'ReflectionClassConstant':
-            case 'Psy\Reflection\ReflectionClassConstant':
+            case \ReflectionClassConstant::class:
+            case ReflectionClassConstant::class:
                 // @todo this is going to collide with ReflectionMethod ids
                 // someday... start running the query by id + type if the DB
                 // supports it.
                 $id = $reflector->class . '::' . $reflector->name;
                 break;
 
-            case 'Psy\Reflection\ReflectionConstant_':
+            case ReflectionConstant_::class:
                 $id = $reflector->name;
                 break;
 
@@ -120,6 +158,62 @@ private function getManualDoc($reflector)
         return $this->getManualDocById($id);
     }
 
+    /**
+     * Get all all parent Reflectors for a given Reflector.
+     *
+     * For example, passing a Class, Object or TraitReflector will yield all
+     * traits and parent classes. Passing a Method or PropertyReflector will
+     * yield Reflectors for the same-named method or property on all traits and
+     * parent classes.
+     *
+     * @return Generator a whole bunch of \Reflector instances
+     */
+    private function getParentReflectors($reflector)
+    {
+        switch (\get_class($reflector)) {
+            case \ReflectionClass::class:
+            case \ReflectionObject::class:
+                foreach ($reflector->getTraits() as $trait) {
+                    yield $trait;
+                }
+
+                foreach ($reflector->getInterfaces() as $interface) {
+                    yield $interface;
+                }
+
+                while ($reflector = $reflector->getParentClass()) {
+                    yield $reflector;
+
+                    foreach ($reflector->getTraits() as $trait) {
+                        yield $trait;
+                    }
+
+                    foreach ($reflector->getInterfaces() as $interface) {
+                        yield $interface;
+                    }
+                }
+
+                return;
+
+            case \ReflectionMethod::class:
+                foreach ($this->getParentReflectors($reflector->getDeclaringClass()) as $parent) {
+                    if ($parent->hasMethod($reflector->getName())) {
+                        yield $parent->getMethod($reflector->getName());
+                    }
+                }
+
+                return;
+
+            case \ReflectionProperty::class:
+                foreach ($this->getParentReflectors($reflector->getDeclaringClass()) as $parent) {
+                    if ($parent->hasProperty($reflector->getName())) {
+                        yield $parent->getProperty($reflector->getName());
+                    }
+                }
+                break;
+        }
+    }
+
     private function getManualDocById($id)
     {
         if ($db = $this->getApplication()->getManualDb()) {
diff --git a/vendor/psy/psysh/src/Command/DumpCommand.php b/vendor/psy/psysh/src/Command/DumpCommand.php
index 9a8aad826b..5dbfd7d073 100644
--- a/vendor/psy/psysh/src/Command/DumpCommand.php
+++ b/vendor/psy/psysh/src/Command/DumpCommand.php
@@ -3,7 +3,7 @@
 /*
  * This file is part of Psy Shell.
  *
- * (c) 2012-2018 Justin Hileman
+ * (c) 2012-2020 Justin Hileman
  *
  * For the full copyright and license information, please view the LICENSE
  * file that was distributed with this source code.
@@ -76,6 +76,8 @@ protected function execute(InputInterface $input, OutputInterface $output)
         if (\is_object($target)) {
             $this->setCommandScopeVariables(new \ReflectionObject($target));
         }
+
+        return 0;
     }
 
     /**
diff --git a/vendor/psy/psysh/src/Command/EditCommand.php b/vendor/psy/psysh/src/Command/EditCommand.php
index 0571414948..0f9d79545e 100644
--- a/vendor/psy/psysh/src/Command/EditCommand.php
+++ b/vendor/psy/psysh/src/Command/EditCommand.php
@@ -3,7 +3,7 @@
 /*
  * This file is part of Psy Shell.
  *
- * (c) 2012-2018 Justin Hileman
+ * (c) 2012-2020 Justin Hileman
  *
  * For the full copyright and license information, please view the LICENSE
  * file that was distributed with this source code.
@@ -104,6 +104,8 @@ protected function execute(InputInterface $input, OutputInterface $output)
         if ($execute) {
             $this->getApplication()->addInput($editedContent);
         }
+
+        return 0;
     }
 
     /**
@@ -148,7 +150,7 @@ private function extractFilePath($fileArgument)
 
     /**
      * @param string $filePath
-     * @param string $shouldRemoveFile
+     * @param bool   $shouldRemoveFile
      *
      * @return string
      *
@@ -157,9 +159,10 @@ private function extractFilePath($fileArgument)
     private function editFile($filePath, $shouldRemoveFile)
     {
         $escapedFilePath = \escapeshellarg($filePath);
+        $editor = (isset($_SERVER['EDITOR']) && $_SERVER['EDITOR']) ? $_SERVER['EDITOR'] : 'nano';
 
         $pipes = [];
-        $proc = \proc_open((\getenv('EDITOR') ?: 'nano') . " {$escapedFilePath}", [STDIN, STDOUT, STDERR], $pipes);
+        $proc = \proc_open("{$editor} {$escapedFilePath}", [STDIN, STDOUT, STDERR], $pipes);
         \proc_close($proc);
 
         $editedContent = @\file_get_contents($filePath);
diff --git a/vendor/psy/psysh/src/Command/ExitCommand.php b/vendor/psy/psysh/src/Command/ExitCommand.php
index 4339886123..3e51a3462b 100644
--- a/vendor/psy/psysh/src/Command/ExitCommand.php
+++ b/vendor/psy/psysh/src/Command/ExitCommand.php
@@ -3,7 +3,7 @@
 /*
  * This file is part of Psy Shell.
  *
- * (c) 2012-2018 Justin Hileman
+ * (c) 2012-2020 Justin Hileman
  *
  * For the full copyright and license information, please view the LICENSE
  * file that was distributed with this source code.
diff --git a/vendor/psy/psysh/src/Command/HelpCommand.php b/vendor/psy/psysh/src/Command/HelpCommand.php
index 82ec3a8359..d3cdb9402a 100644
--- a/vendor/psy/psysh/src/Command/HelpCommand.php
+++ b/vendor/psy/psysh/src/Command/HelpCommand.php
@@ -3,7 +3,7 @@
 /*
  * This file is part of Psy Shell.
  *
- * (c) 2012-2018 Justin Hileman
+ * (c) 2012-2020 Justin Hileman
  *
  * For the full copyright and license information, please view the LICENSE
  * file that was distributed with this source code.
@@ -11,6 +11,7 @@
 
 namespace Psy\Command;
 
+use Psy\Output\ShellOutput;
 use Symfony\Component\Console\Helper\TableHelper;
 use Symfony\Component\Console\Input\InputArgument;
 use Symfony\Component\Console\Input\InputInterface;
@@ -86,13 +87,21 @@ protected function execute(InputInterface $input, OutputInterface $output)
                 ]);
             }
 
-            $output->startPaging();
+            if ($output instanceof ShellOutput) {
+                $output->startPaging();
+            }
+
             if ($table instanceof TableHelper) {
                 $table->render($output);
             } else {
                 $table->render();
             }
-            $output->stopPaging();
+
+            if ($output instanceof ShellOutput) {
+                $output->stopPaging();
+            }
         }
+
+        return 0;
     }
 }
diff --git a/vendor/psy/psysh/src/Command/HistoryCommand.php b/vendor/psy/psysh/src/Command/HistoryCommand.php
index 23f6899e32..fe4a54b380 100644
--- a/vendor/psy/psysh/src/Command/HistoryCommand.php
+++ b/vendor/psy/psysh/src/Command/HistoryCommand.php
@@ -3,7 +3,7 @@
 /*
  * This file is part of Psy Shell.
  *
- * (c) 2012-2018 Justin Hileman
+ * (c) 2012-2020 Justin Hileman
  *
  * For the full copyright and license information, please view the LICENSE
  * file that was distributed with this source code.
@@ -140,11 +140,13 @@ protected function execute(InputInterface $input, OutputInterface $output)
         } else {
             $type = $input->getOption('no-numbers') ? 0 : ShellOutput::NUMBER_LINES;
             if (!$highlighted) {
-                $type = $type | ShellOutput::OUTPUT_RAW;
+                $type = $type | OutputInterface::OUTPUT_RAW;
             }
 
             $output->page($highlighted ?: $history, $type);
         }
+
+        return 0;
     }
 
     /**
diff --git a/vendor/psy/psysh/src/Command/ListCommand.php b/vendor/psy/psysh/src/Command/ListCommand.php
index 67f4e041e8..c2e7b26cb5 100644
--- a/vendor/psy/psysh/src/Command/ListCommand.php
+++ b/vendor/psy/psysh/src/Command/ListCommand.php
@@ -3,7 +3,7 @@
 /*
  * This file is part of Psy Shell.
  *
- * (c) 2012-2018 Justin Hileman
+ * (c) 2012-2020 Justin Hileman
  *
  * For the full copyright and license information, please view the LICENSE
  * file that was distributed with this source code.
@@ -22,6 +22,7 @@
 use Psy\Exception\RuntimeException;
 use Psy\Input\CodeArgument;
 use Psy\Input\FilterOptions;
+use Psy\Output\ShellOutput;
 use Psy\VarDumper\Presenter;
 use Psy\VarDumper\PresenterAware;
 use Symfony\Component\Console\Formatter\OutputFormatter;
@@ -57,7 +58,7 @@ protected function configure()
 
         $this
             ->setName('ls')
-            ->setAliases(['list', 'dir'])
+            ->setAliases(['dir'])
             ->setDefinition([
                 new CodeArgument('target', CodeArgument::OPTIONAL, 'A target class or object to list.'),
 
@@ -126,7 +127,7 @@ protected function execute(InputInterface $input, OutputInterface $output)
         }
 
         // @todo something cleaner than this :-/
-        if ($input->getOption('long')) {
+        if ($output instanceof ShellOutput && $input->getOption('long')) {
             $output->startPaging();
         }
 
@@ -134,7 +135,7 @@ protected function execute(InputInterface $input, OutputInterface $output)
             $this->$method($output, $enumerator->enumerate($input, $reflector, $target));
         }
 
-        if ($input->getOption('long')) {
+        if ($output instanceof ShellOutput && $input->getOption('long')) {
             $output->stopPaging();
         }
 
@@ -142,6 +143,8 @@ protected function execute(InputInterface $input, OutputInterface $output)
         if ($reflector !== null) {
             $this->setCommandScopeVariables($reflector);
         }
+
+        return 0;
     }
 
     /**
@@ -169,11 +172,11 @@ protected function initEnumerators()
      * Write the list items to $output.
      *
      * @param OutputInterface $output
-     * @param null|array      $result List of enumerated items
+     * @param array           $result List of enumerated items
      */
-    protected function write(OutputInterface $output, array $result = null)
+    protected function write(OutputInterface $output, array $result)
     {
-        if ($result === null) {
+        if (\count($result) === 0) {
             return;
         }
 
@@ -189,11 +192,11 @@ protected function write(OutputInterface $output, array $result = null)
      * Items are listed one per line, and include the item signature.
      *
      * @param OutputInterface $output
-     * @param null|array      $result List of enumerated items
+     * @param array           $result List of enumerated items
      */
-    protected function writeLong(OutputInterface $output, array $result = null)
+    protected function writeLong(OutputInterface $output, array $result)
     {
-        if ($result === null) {
+        if (\count($result) === 0) {
             return;
         }
 
@@ -255,13 +258,14 @@ private function validateInput(InputInterface $input)
             $input->setOption('vars', true);
         } else {
             // if a target is passed, classes, functions, etc don't make sense
-            foreach (['vars', 'globals', 'functions', 'classes', 'interfaces', 'traits'] as $option) {
+            foreach (['vars', 'globals'] as $option) {
                 if ($input->getOption($option)) {
                     throw new RuntimeException('--' . $option . ' does not make sense with a specified target');
                 }
             }
 
-            foreach (['constants', 'properties', 'methods'] as $option) {
+            // @todo ensure that 'functions', 'classes', 'interfaces', 'traits' only accept namespace target?
+            foreach (['constants', 'properties', 'methods', 'functions', 'classes', 'interfaces', 'traits'] as $option) {
                 if ($input->getOption($option)) {
                     return;
                 }
diff --git a/vendor/psy/psysh/src/Command/ListCommand/ClassConstantEnumerator.php b/vendor/psy/psysh/src/Command/ListCommand/ClassConstantEnumerator.php
index a1d82ead65..50c4a7090c 100644
--- a/vendor/psy/psysh/src/Command/ListCommand/ClassConstantEnumerator.php
+++ b/vendor/psy/psysh/src/Command/ListCommand/ClassConstantEnumerator.php
@@ -3,7 +3,7 @@
 /*
  * This file is part of Psy Shell.
  *
- * (c) 2012-2018 Justin Hileman
+ * (c) 2012-2020 Justin Hileman
  *
  * For the full copyright and license information, please view the LICENSE
  * file that was distributed with this source code.
@@ -25,27 +25,26 @@ class ClassConstantEnumerator extends Enumerator
     protected function listItems(InputInterface $input, \Reflector $reflector = null, $target = null)
     {
         // only list constants when a Reflector is present.
-
         if ($reflector === null) {
-            return;
+            return [];
         }
 
         // We can only list constants on actual class (or object) reflectors.
         if (!$reflector instanceof \ReflectionClass) {
             // @todo handle ReflectionExtension as well
-            return;
+            return [];
         }
 
         // only list constants if we are specifically asked
         if (!$input->getOption('constants')) {
-            return;
+            return [];
         }
 
         $noInherit = $input->getOption('no-inherit');
         $constants = $this->prepareConstants($this->getConstants($reflector, $noInherit));
 
         if (empty($constants)) {
-            return;
+            return [];
         }
 
         $ret = [];
@@ -118,8 +117,6 @@ protected function getKindLabel(\ReflectionClass $reflector)
     {
         if ($reflector->isInterface()) {
             return 'Interface Constants';
-        } elseif (\method_exists($reflector, 'isTrait') && $reflector->isTrait()) {
-            return 'Trait Constants';
         } else {
             return 'Class Constants';
         }
diff --git a/vendor/psy/psysh/src/Command/ListCommand/ClassEnumerator.php b/vendor/psy/psysh/src/Command/ListCommand/ClassEnumerator.php
index 8ab6d7a955..49a9c3a961 100644
--- a/vendor/psy/psysh/src/Command/ListCommand/ClassEnumerator.php
+++ b/vendor/psy/psysh/src/Command/ListCommand/ClassEnumerator.php
@@ -3,7 +3,7 @@
 /*
  * This file is part of Psy Shell.
  *
- * (c) 2012-2018 Justin Hileman
+ * (c) 2012-2020 Justin Hileman
  *
  * For the full copyright and license information, please view the LICENSE
  * file that was distributed with this source code.
@@ -11,6 +11,7 @@
 
 namespace Psy\Command\ListCommand;
 
+use Psy\Reflection\ReflectionNamespace;
 use Symfony\Component\Console\Input\InputInterface;
 
 /**
@@ -23,35 +24,29 @@ class ClassEnumerator extends Enumerator
      */
     protected function listItems(InputInterface $input, \Reflector $reflector = null, $target = null)
     {
-        // only list classes when no Reflector is present.
-        //
-        // @todo make a NamespaceReflector and pass that in for commands like:
-        //
-        //     ls --classes Foo
-        //
-        // ... for listing classes in the Foo namespace
-
-        if ($reflector !== null || $target !== null) {
-            return;
+        // if we have a reflector, ensure that it's a namespace reflector
+        if (($target !== null || $reflector !== null) && !$reflector instanceof ReflectionNamespace) {
+            return [];
         }
 
-        $user     = $input->getOption('user');
         $internal = $input->getOption('internal');
+        $user     = $input->getOption('user');
+        $prefix   = $reflector === null ? null : \strtolower($reflector->getName()) . '\\';
 
         $ret = [];
 
         // only list classes, interfaces and traits if we are specifically asked
 
         if ($input->getOption('classes')) {
-            $ret = \array_merge($ret, $this->filterClasses('Classes', \get_declared_classes(), $internal, $user));
+            $ret = \array_merge($ret, $this->filterClasses('Classes', \get_declared_classes(), $internal, $user, $prefix));
         }
 
         if ($input->getOption('interfaces')) {
-            $ret = \array_merge($ret, $this->filterClasses('Interfaces', \get_declared_interfaces(), $internal, $user));
+            $ret = \array_merge($ret, $this->filterClasses('Interfaces', \get_declared_interfaces(), $internal, $user, $prefix));
         }
 
         if ($input->getOption('traits')) {
-            $ret = \array_merge($ret, $this->filterClasses('Traits', \get_declared_traits(), $internal, $user));
+            $ret = \array_merge($ret, $this->filterClasses('Traits', \get_declared_traits(), $internal, $user, $prefix));
         }
 
         return \array_map([$this, 'prepareClasses'], \array_filter($ret));
@@ -67,15 +62,20 @@ protected function listItems(InputInterface $input, \Reflector $reflector = null
      * @param array  $classes
      * @param bool   $internal
      * @param bool   $user
+     * @param string $prefix
      *
      * @return array
      */
-    protected function filterClasses($key, $classes, $internal, $user)
+    protected function filterClasses($key, $classes, $internal, $user, $prefix = null)
     {
         $ret = [];
 
         if ($internal) {
-            $ret['Internal ' . $key] = \array_filter($classes, function ($class) {
+            $ret['Internal ' . $key] = \array_filter($classes, function ($class) use ($prefix) {
+                if ($prefix !== null && \strpos(\strtolower($class), $prefix) !== 0) {
+                    return false;
+                }
+
                 $refl = new \ReflectionClass($class);
 
                 return $refl->isInternal();
@@ -83,7 +83,11 @@ protected function filterClasses($key, $classes, $internal, $user)
         }
 
         if ($user) {
-            $ret['User ' . $key] = \array_filter($classes, function ($class) {
+            $ret['User ' . $key] = \array_filter($classes, function ($class) use ($prefix) {
+                if ($prefix !== null && \strpos(\strtolower($class), $prefix) !== 0) {
+                    return false;
+                }
+
                 $refl = new \ReflectionClass($class);
 
                 return !$refl->isInternal();
@@ -91,7 +95,9 @@ protected function filterClasses($key, $classes, $internal, $user)
         }
 
         if (!$user && !$internal) {
-            $ret[$key] = $classes;
+            $ret[$key] = \array_filter($classes, function ($class) use ($prefix) {
+                return $prefix === null || \strpos(\strtolower($class), $prefix) === 0;
+            });
         }
 
         return $ret;
diff --git a/vendor/psy/psysh/src/Command/ListCommand/ConstantEnumerator.php b/vendor/psy/psysh/src/Command/ListCommand/ConstantEnumerator.php
index ad4ce0d125..deb6fd1097 100644
--- a/vendor/psy/psysh/src/Command/ListCommand/ConstantEnumerator.php
+++ b/vendor/psy/psysh/src/Command/ListCommand/ConstantEnumerator.php
@@ -3,7 +3,7 @@
 /*
  * This file is part of Psy Shell.
  *
- * (c) 2012-2018 Justin Hileman
+ * (c) 2012-2020 Justin Hileman
  *
  * For the full copyright and license information, please view the LICENSE
  * file that was distributed with this source code.
@@ -11,6 +11,7 @@
 
 namespace Psy\Command\ListCommand;
 
+use Psy\Reflection\ReflectionNamespace;
 use Symfony\Component\Console\Input\InputInterface;
 
 /**
@@ -18,31 +19,64 @@
  */
 class ConstantEnumerator extends Enumerator
 {
+    // Because `Json` is ugly.
+    private static $categoryLabels = [
+        'libxml'   => 'libxml',
+        'openssl'  => 'OpenSSL',
+        'pcre'     => 'PCRE',
+        'sqlite3'  => 'SQLite3',
+        'curl'     => 'cURL',
+        'dom'      => 'DOM',
+        'ftp'      => 'FTP',
+        'gd'       => 'GD',
+        'gmp'      => 'GMP',
+        'iconv'    => 'iconv',
+        'json'     => 'JSON',
+        'ldap'     => 'LDAP',
+        'mbstring' => 'mbstring',
+        'odbc'     => 'ODBC',
+        'pcntl'    => 'PCNTL',
+        'pgsql'    => 'pgsql',
+        'posix'    => 'POSIX',
+        'mysqli'   => 'mysqli',
+        'soap'     => 'SOAP',
+        'exif'     => 'EXIF',
+        'sysvmsg'  => 'sysvmsg',
+        'xml'      => 'XML',
+        'xsl'      => 'XSL',
+    ];
+
     /**
      * {@inheritdoc}
      */
     protected function listItems(InputInterface $input, \Reflector $reflector = null, $target = null)
     {
-        // only list constants when no Reflector is present.
-        //
-        // @todo make a NamespaceReflector and pass that in for commands like:
-        //
-        //     ls --constants Foo
-        //
-        // ... for listing constants in the Foo namespace
-        if ($reflector !== null || $target !== null) {
-            return;
+        // if we have a reflector, ensure that it's a namespace reflector
+        if (($target !== null || $reflector !== null) && !$reflector instanceof ReflectionNamespace) {
+            return [];
         }
 
         // only list constants if we are specifically asked
         if (!$input->getOption('constants')) {
-            return;
+            return [];
         }
 
         $user     = $input->getOption('user');
         $internal = $input->getOption('internal');
         $category = $input->getOption('category');
 
+        if ($category) {
+            $category = \strtolower($category);
+
+            if ($category === 'internal') {
+                $internal = true;
+                $category = null;
+            } elseif ($category === 'user') {
+                $user = true;
+                $category = null;
+            }
+        }
+
         $ret = [];
 
         if ($user) {
@@ -50,11 +84,12 @@ protected function listItems(InputInterface $input, \Reflector $reflector = null
         }
 
         if ($internal) {
-            $ret['Interal Constants'] = $this->getConstants('internal');
+            $ret['Internal Constants'] = $this->getConstants('internal');
         }
 
         if ($category) {
-            $label = \ucfirst($category) . ' Constants';
+            $caseCategory = \array_key_exists($category, self::$categoryLabels) ? self::$categoryLabels[$category] : \ucfirst($category);
+            $label = $caseCategory . ' Constants';
             $ret[$label] = $this->getConstants($category);
         }
 
@@ -62,6 +97,18 @@ protected function listItems(InputInterface $input, \Reflector $reflector = null
             $ret['Constants'] = $this->getConstants();
         }
 
+        if ($reflector !== null) {
+            $prefix = \strtolower($reflector->getName()) . '\\';
+
+            foreach ($ret as $key => $names) {
+                foreach (\array_keys($names) as $name) {
+                    if (\strpos(\strtolower($name), $prefix) !== 0) {
+                        unset($ret[$key][$name]);
+                    }
+                }
+            }
+        }
+
         return \array_map([$this, 'prepareConstants'], \array_filter($ret));
     }
 
@@ -89,7 +136,13 @@ protected function getConstants($category = null)
             return \call_user_func_array('array_merge', $consts);
         }
 
-        return isset($consts[$category]) ? $consts[$category] : [];
+        foreach ($consts as $key => $value) {
+            if (\strtolower($key) === $category) {
+                return $value;
+            }
+        }
+
+        return [];
     }
 
     /**
diff --git a/vendor/psy/psysh/src/Command/ListCommand/Enumerator.php b/vendor/psy/psysh/src/Command/ListCommand/Enumerator.php
index 616543d0d5..40832d184a 100644
--- a/vendor/psy/psysh/src/Command/ListCommand/Enumerator.php
+++ b/vendor/psy/psysh/src/Command/ListCommand/Enumerator.php
@@ -3,7 +3,7 @@
 /*
  * This file is part of Psy Shell.
  *
- * (c) 2012-2018 Justin Hileman
+ * (c) 2012-2020 Justin Hileman
  *
  * For the full copyright and license information, please view the LICENSE
  * file that was distributed with this source code.
@@ -48,9 +48,9 @@ public function __construct(Presenter $presenter)
     /**
      * Return a list of categorized things with the given input options and target.
      *
-     * @param InputInterface $input
-     * @param \Reflector     $reflector
-     * @param mixed          $target
+     * @param InputInterface  $input
+     * @param \Reflector|null $reflector
+     * @param mixed           $target
      *
      * @return array
      */
@@ -76,9 +76,9 @@ public function enumerate(InputInterface $input, \Reflector $reflector = null, $
      *         ],
      *     ]
      *
-     * @param InputInterface $input
-     * @param \Reflector     $reflector
-     * @param mixed          $target
+     * @param InputInterface  $input
+     * @param \Reflector|null $reflector
+     * @param mixed           $target
      *
      * @return array
      */
diff --git a/vendor/psy/psysh/src/Command/ListCommand/FunctionEnumerator.php b/vendor/psy/psysh/src/Command/ListCommand/FunctionEnumerator.php
index 6c3fa5ea92..e979fe0a7d 100644
--- a/vendor/psy/psysh/src/Command/ListCommand/FunctionEnumerator.php
+++ b/vendor/psy/psysh/src/Command/ListCommand/FunctionEnumerator.php
@@ -3,7 +3,7 @@
 /*
  * This file is part of Psy Shell.
  *
- * (c) 2012-2018 Justin Hileman
+ * (c) 2012-2020 Justin Hileman
  *
  * For the full copyright and license information, please view the LICENSE
  * file that was distributed with this source code.
@@ -11,6 +11,7 @@
 
 namespace Psy\Command\ListCommand;
 
+use Psy\Reflection\ReflectionNamespace;
 use Symfony\Component\Console\Input\InputInterface;
 
 /**
@@ -23,21 +24,14 @@ class FunctionEnumerator extends Enumerator
      */
     protected function listItems(InputInterface $input, \Reflector $reflector = null, $target = null)
     {
-        // only list functions when no Reflector is present.
-        //
-        // @todo make a NamespaceReflector and pass that in for commands like:
-        //
-        //     ls --functions Foo
-        //
-        // ... for listing functions in the Foo namespace
-
-        if ($reflector !== null || $target !== null) {
-            return;
+        // if we have a reflector, ensure that it's a namespace reflector
+        if (($target !== null || $reflector !== null) && !$reflector instanceof ReflectionNamespace) {
+            return [];
         }
 
         // only list functions if we are specifically asked
         if (!$input->getOption('functions')) {
-            return;
+            return [];
         }
 
         if ($input->getOption('user')) {
@@ -51,10 +45,11 @@ protected function listItems(InputInterface $input, \Reflector $reflector = null
             $functions = $this->getFunctions();
         }
 
-        $functions = $this->prepareFunctions($functions);
+        $prefix = $reflector === null ? null : \strtolower($reflector->getName()) . '\\';
+        $functions = $this->prepareFunctions($functions, $prefix);
 
         if (empty($functions)) {
-            return;
+            return [];
         }
 
         $ret = [];
@@ -68,7 +63,7 @@ protected function listItems(InputInterface $input, \Reflector $reflector = null
      *
      * Optionally limit functions to "user" or "internal" functions.
      *
-     * @param null|string $type "user" or "internal" (default: both)
+     * @param string|null $type "user" or "internal" (default: both)
      *
      * @return array
      */
@@ -86,11 +81,12 @@ protected function getFunctions($type = null)
     /**
      * Prepare formatted function array.
      *
-     * @param array $functions
+     * @param array  $functions
+     * @param string $prefix
      *
      * @return array
      */
-    protected function prepareFunctions(array $functions)
+    protected function prepareFunctions(array $functions, $prefix = null)
     {
         \natcasesort($functions);
 
@@ -98,12 +94,20 @@ protected function prepareFunctions(array $functions)
         $ret = [];
 
         foreach ($functions as $name) {
+            if ($prefix !== null && \strpos(\strtolower($name), $prefix) !== 0) {
+                continue;
+            }
+
             if ($this->showItem($name)) {
-                $ret[$name] = [
-                    'name'  => $name,
-                    'style' => self::IS_FUNCTION,
-                    'value' => $this->presentSignature($name),
-                ];
+                try {
+                    $ret[$name] = [
+                        'name'  => $name,
+                        'style' => self::IS_FUNCTION,
+                        'value' => $this->presentSignature($name),
+                    ];
+                } catch (\Exception $e) {
+                    // Ignore failures. HHVM does this sometimes for internal functions.
+                }
             }
         }
 
diff --git a/vendor/psy/psysh/src/Command/ListCommand/GlobalVariableEnumerator.php b/vendor/psy/psysh/src/Command/ListCommand/GlobalVariableEnumerator.php
index f51791cb6d..5ba03f9dc4 100644
--- a/vendor/psy/psysh/src/Command/ListCommand/GlobalVariableEnumerator.php
+++ b/vendor/psy/psysh/src/Command/ListCommand/GlobalVariableEnumerator.php
@@ -3,7 +3,7 @@
 /*
  * This file is part of Psy Shell.
  *
- * (c) 2012-2018 Justin Hileman
+ * (c) 2012-2020 Justin Hileman
  *
  * For the full copyright and license information, please view the LICENSE
  * file that was distributed with this source code.
@@ -25,18 +25,18 @@ protected function listItems(InputInterface $input, \Reflector $reflector = null
     {
         // only list globals when no Reflector is present.
         if ($reflector !== null || $target !== null) {
-            return;
+            return [];
         }
 
         // only list globals if we are specifically asked
         if (!$input->getOption('globals')) {
-            return;
+            return [];
         }
 
         $globals = $this->prepareGlobals($this->getGlobals());
 
         if (empty($globals)) {
-            return;
+            return [];
         }
 
         return [
diff --git a/vendor/psy/psysh/src/Command/ListCommand/InterfaceEnumerator.php b/vendor/psy/psysh/src/Command/ListCommand/InterfaceEnumerator.php
deleted file mode 100644
index 4531fce83b..0000000000
--- a/vendor/psy/psysh/src/Command/ListCommand/InterfaceEnumerator.php
+++ /dev/null
@@ -1,89 +0,0 @@
-<?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\Command\ListCommand;
-
-use Psy\VarDumper\Presenter;
-use Symfony\Component\Console\Input\InputInterface;
-
-/**
- * Interface Enumerator class.
- *
- * @deprecated Nothing should use this anymore
- */
-class InterfaceEnumerator extends Enumerator
-{
-    public function __construct(Presenter $presenter)
-    {
-        @\trigger_error('InterfaceEnumerator is no longer used', E_USER_DEPRECATED);
-        parent::__construct($presenter);
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    protected function listItems(InputInterface $input, \Reflector $reflector = null, $target = null)
-    {
-        // only list interfaces when no Reflector is present.
-        //
-        // @todo make a NamespaceReflector and pass that in for commands like:
-        //
-        //     ls --interfaces Foo
-        //
-        // ... for listing interfaces in the Foo namespace
-
-        if ($reflector !== null || $target !== null) {
-            return;
-        }
-
-        // only list interfaces if we are specifically asked
-        if (!$input->getOption('interfaces')) {
-            return;
-        }
-
-        $interfaces = $this->prepareInterfaces(\get_declared_interfaces());
-
-        if (empty($interfaces)) {
-            return;
-        }
-
-        return [
-            'Interfaces' => $interfaces,
-        ];
-    }
-
-    /**
-     * Prepare formatted interface array.
-     *
-     * @param array $interfaces
-     *
-     * @return array
-     */
-    protected function prepareInterfaces(array $interfaces)
-    {
-        \natcasesort($interfaces);
-
-        // My kingdom for a generator.
-        $ret = [];
-
-        foreach ($interfaces as $name) {
-            if ($this->showItem($name)) {
-                $ret[$name] = [
-                    'name'  => $name,
-                    'style' => self::IS_CLASS,
-                    'value' => $this->presentSignature($name),
-                ];
-            }
-        }
-
-        return $ret;
-    }
-}
diff --git a/vendor/psy/psysh/src/Command/ListCommand/MethodEnumerator.php b/vendor/psy/psysh/src/Command/ListCommand/MethodEnumerator.php
index 49d7e104e9..7357ab1c95 100644
--- a/vendor/psy/psysh/src/Command/ListCommand/MethodEnumerator.php
+++ b/vendor/psy/psysh/src/Command/ListCommand/MethodEnumerator.php
@@ -3,7 +3,7 @@
 /*
  * This file is part of Psy Shell.
  *
- * (c) 2012-2018 Justin Hileman
+ * (c) 2012-2020 Justin Hileman
  *
  * For the full copyright and license information, please view the LICENSE
  * file that was distributed with this source code.
@@ -24,19 +24,18 @@ class MethodEnumerator extends Enumerator
     protected function listItems(InputInterface $input, \Reflector $reflector = null, $target = null)
     {
         // only list methods when a Reflector is present.
-
         if ($reflector === null) {
-            return;
+            return [];
         }
 
         // We can only list methods on actual class (or object) reflectors.
         if (!$reflector instanceof \ReflectionClass) {
-            return;
+            return [];
         }
 
         // only list methods if we are specifically asked
         if (!$input->getOption('methods')) {
-            return;
+            return [];
         }
 
         $showAll   = $input->getOption('all');
@@ -44,7 +43,7 @@ protected function listItems(InputInterface $input, \Reflector $reflector = null
         $methods   = $this->prepareMethods($this->getMethods($showAll, $reflector, $noInherit));
 
         if (empty($methods)) {
-            return;
+            return [];
         }
 
         $ret = [];
@@ -68,7 +67,9 @@ protected function getMethods($showAll, \Reflector $reflector, $noInherit = fals
 
         $methods = [];
         foreach ($reflector->getMethods() as $name => $method) {
-            if ($noInherit && $method->getDeclaringClass()->getName() !== $className) {
+            // For some reason PHP reflection shows private methods from the parent class, even
+            // though they're effectively worthless. Let's suppress them here, like --no-inherit
+            if (($noInherit || $method->isPrivate()) && $method->getDeclaringClass()->getName() !== $className) {
                 continue;
             }
 
diff --git a/vendor/psy/psysh/src/Command/ListCommand/PropertyEnumerator.php b/vendor/psy/psysh/src/Command/ListCommand/PropertyEnumerator.php
index d56caded69..186c607c1e 100644
--- a/vendor/psy/psysh/src/Command/ListCommand/PropertyEnumerator.php
+++ b/vendor/psy/psysh/src/Command/ListCommand/PropertyEnumerator.php
@@ -3,7 +3,7 @@
 /*
  * This file is part of Psy Shell.
  *
- * (c) 2012-2018 Justin Hileman
+ * (c) 2012-2020 Justin Hileman
  *
  * For the full copyright and license information, please view the LICENSE
  * file that was distributed with this source code.
@@ -26,17 +26,17 @@ protected function listItems(InputInterface $input, \Reflector $reflector = null
         // only list properties when a Reflector is present.
 
         if ($reflector === null) {
-            return;
+            return [];
         }
 
         // We can only list properties on actual class (or object) reflectors.
         if (!$reflector instanceof \ReflectionClass) {
-            return;
+            return [];
         }
 
         // only list properties if we are specifically asked
         if (!$input->getOption('properties')) {
-            return;
+            return [];
         }
 
         $showAll    = $input->getOption('all');
@@ -44,7 +44,7 @@ protected function listItems(InputInterface $input, \Reflector $reflector = null
         $properties = $this->prepareProperties($this->getProperties($showAll, $reflector, $noInherit), $target);
 
         if (empty($properties)) {
-            return;
+            return [];
         }
 
         $ret = [];
@@ -117,9 +117,7 @@ protected function prepareProperties(array $properties, $target = null)
      */
     protected function getKindLabel(\ReflectionClass $reflector)
     {
-        if ($reflector->isInterface()) {
-            return 'Interface Properties';
-        } elseif (\method_exists($reflector, 'isTrait') && $reflector->isTrait()) {
+        if (\method_exists($reflector, 'isTrait') && $reflector->isTrait()) {
             return 'Trait Properties';
         } else {
             return 'Class Properties';
@@ -154,7 +152,7 @@ private function getVisibilityStyle(\ReflectionProperty $property)
      */
     protected function presentValue(\ReflectionProperty $property, $target)
     {
-        // If $target is a class, trait or interface (try to) get the default
+        // If $target is a class or trait (try to) get the default
         // value for the property.
         if (!\is_object($target)) {
             try {
diff --git a/vendor/psy/psysh/src/Command/ListCommand/TraitEnumerator.php b/vendor/psy/psysh/src/Command/ListCommand/TraitEnumerator.php
deleted file mode 100644
index 3ee601558d..0000000000
--- a/vendor/psy/psysh/src/Command/ListCommand/TraitEnumerator.php
+++ /dev/null
@@ -1,89 +0,0 @@
-<?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\Command\ListCommand;
-
-use Psy\VarDumper\Presenter;
-use Symfony\Component\Console\Input\InputInterface;
-
-/**
- * Trait Enumerator class.
- *
- * @deprecated Nothing should use this anymore
- */
-class TraitEnumerator extends Enumerator
-{
-    public function __construct(Presenter $presenter)
-    {
-        @\trigger_error('TraitEnumerator is no longer used', E_USER_DEPRECATED);
-        parent::__construct($presenter);
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    protected function listItems(InputInterface $input, \Reflector $reflector = null, $target = null)
-    {
-        // only list traits when no Reflector is present.
-        //
-        // @todo make a NamespaceReflector and pass that in for commands like:
-        //
-        //     ls --traits Foo
-        //
-        // ... for listing traits in the Foo namespace
-
-        if ($reflector !== null || $target !== null) {
-            return;
-        }
-
-        // only list traits if we are specifically asked
-        if (!$input->getOption('traits')) {
-            return;
-        }
-
-        $traits = $this->prepareTraits(\get_declared_traits());
-
-        if (empty($traits)) {
-            return;
-        }
-
-        return [
-            'Traits' => $traits,
-        ];
-    }
-
-    /**
-     * Prepare formatted trait array.
-     *
-     * @param array $traits
-     *
-     * @return array
-     */
-    protected function prepareTraits(array $traits)
-    {
-        \natcasesort($traits);
-
-        // My kingdom for a generator.
-        $ret = [];
-
-        foreach ($traits as $name) {
-            if ($this->showItem($name)) {
-                $ret[$name] = [
-                    'name'  => $name,
-                    'style' => self::IS_CLASS,
-                    'value' => $this->presentSignature($name),
-                ];
-            }
-        }
-
-        return $ret;
-    }
-}
diff --git a/vendor/psy/psysh/src/Command/ListCommand/VariableEnumerator.php b/vendor/psy/psysh/src/Command/ListCommand/VariableEnumerator.php
index 0586c203e6..f39e678f7d 100644
--- a/vendor/psy/psysh/src/Command/ListCommand/VariableEnumerator.php
+++ b/vendor/psy/psysh/src/Command/ListCommand/VariableEnumerator.php
@@ -3,7 +3,7 @@
 /*
  * This file is part of Psy Shell.
  *
- * (c) 2012-2018 Justin Hileman
+ * (c) 2012-2020 Justin Hileman
  *
  * For the full copyright and license information, please view the LICENSE
  * file that was distributed with this source code.
@@ -49,19 +49,19 @@ protected function listItems(InputInterface $input, \Reflector $reflector = null
     {
         // only list variables when no Reflector is present.
         if ($reflector !== null || $target !== null) {
-            return;
+            return [];
         }
 
         // only list variables if we are specifically asked
         if (!$input->getOption('vars')) {
-            return;
+            return [];
         }
 
         $showAll   = $input->getOption('all');
         $variables = $this->prepareVariables($this->getVariables($showAll));
 
         if (empty($variables)) {
-            return;
+            return [];
         }
 
         return [
diff --git a/vendor/psy/psysh/src/Command/ParseCommand.php b/vendor/psy/psysh/src/Command/ParseCommand.php
index 3f3286e8af..0849075f6d 100644
--- a/vendor/psy/psysh/src/Command/ParseCommand.php
+++ b/vendor/psy/psysh/src/Command/ParseCommand.php
@@ -3,7 +3,7 @@
 /*
  * This file is part of Psy Shell.
  *
- * (c) 2012-2018 Justin Hileman
+ * (c) 2012-2020 Justin Hileman
  *
  * For the full copyright and license information, please view the LICENSE
  * file that was distributed with this source code.
@@ -70,7 +70,7 @@ public function setPresenter(Presenter $presenter)
     {
         $this->presenter = clone $presenter;
         $this->presenter->addCasters([
-            'PhpParser\Node' => function (Node $node, array $a) {
+            Node::class => function (Node $node, array $a) {
                 $a = [
                     Caster::PREFIX_VIRTUAL . 'type'       => $node->getType(),
                     Caster::PREFIX_VIRTUAL . 'attributes' => $node->getAttributes(),
@@ -128,7 +128,7 @@ protected function configure()
     protected function execute(InputInterface $input, OutputInterface $output)
     {
         $code = $input->getArgument('code');
-        if (\strpos('<?', $code) === false) {
+        if (\strpos($code, '<?') === false) {
             $code = '<?php ' . $code;
         }
 
@@ -138,6 +138,8 @@ protected function execute(InputInterface $input, OutputInterface $output)
         $output->page($this->presenter->present($nodes, $depth));
 
         $this->context->setReturnValue($nodes);
+
+        return 0;
     }
 
     /**
diff --git a/vendor/psy/psysh/src/Command/PsyVersionCommand.php b/vendor/psy/psysh/src/Command/PsyVersionCommand.php
index 7d0846c1b4..1355841f14 100644
--- a/vendor/psy/psysh/src/Command/PsyVersionCommand.php
+++ b/vendor/psy/psysh/src/Command/PsyVersionCommand.php
@@ -3,7 +3,7 @@
 /*
  * This file is part of Psy Shell.
  *
- * (c) 2012-2018 Justin Hileman
+ * (c) 2012-2020 Justin Hileman
  *
  * For the full copyright and license information, please view the LICENSE
  * file that was distributed with this source code.
@@ -37,5 +37,7 @@ protected function configure()
     protected function execute(InputInterface $input, OutputInterface $output)
     {
         $output->writeln($this->getApplication()->getVersion());
+
+        return 0;
     }
 }
diff --git a/vendor/psy/psysh/src/Command/ReflectingCommand.php b/vendor/psy/psysh/src/Command/ReflectingCommand.php
index 3286328058..53b84a8d60 100644
--- a/vendor/psy/psysh/src/Command/ReflectingCommand.php
+++ b/vendor/psy/psysh/src/Command/ReflectingCommand.php
@@ -3,7 +3,7 @@
 /*
  * This file is part of Psy Shell.
  *
- * (c) 2012-2018 Justin Hileman
+ * (c) 2012-2020 Justin Hileman
  *
  * For the full copyright and license information, please view the LICENSE
  * file that was distributed with this source code.
@@ -16,6 +16,9 @@
 use Psy\ContextAware;
 use Psy\Exception\ErrorException;
 use Psy\Exception\RuntimeException;
+use Psy\Exception\UnexpectedTargetException;
+use Psy\Reflection\ReflectionClassConstant;
+use Psy\Reflection\ReflectionConstant_;
 use Psy\Util\Mirror;
 
 /**
@@ -114,6 +117,18 @@ protected function resolveName($name, $includeFunctions = false)
             return $name;
         }
 
+        // Check $name against the current namespace and use statements.
+        if (self::couldBeClassName($name)) {
+            try {
+                $maybeAlias = $this->resolveCode($name . '::class');
+                if ($maybeAlias !== $name) {
+                    return $maybeAlias;
+                }
+            } catch (RuntimeException $e) {
+                // /shrug
+            }
+        }
+
         if ($namespace = $shell->getNamespace()) {
             $fullName = $namespace . '\\' . $name;
 
@@ -125,6 +140,15 @@ protected function resolveName($name, $includeFunctions = false)
         return $name;
     }
 
+    /**
+     * Check whether a given name could be a class name.
+     */
+    protected function couldBeClassName($name)
+    {
+        // Regex based on https://www.php.net/manual/en/language.oop5.basic.php#language.oop5.basic.class
+        return \preg_match('/^[a-zA-Z_\x80-\xff][a-zA-Z0-9_\x80-\xff]*(\\[a-zA-Z_\x80-\xff][a-zA-Z0-9_\x80-\xff]*)*$/', $name);
+    }
+
     /**
      * Get a Reflector and documentation for a function, class or instance, constant, method or property.
      *
@@ -166,7 +190,7 @@ protected function resolveCode($code)
     /**
      * Resolve code to an object in the current scope.
      *
-     * @throws RuntimeException when the code resolves to a non-object value
+     * @throws UnexpectedTargetException when the code resolves to a non-object value
      *
      * @param string $code
      *
@@ -177,7 +201,7 @@ private function resolveObject($code)
         $value = $this->resolveCode($code);
 
         if (!\is_object($value)) {
-            throw new RuntimeException('Unable to inspect a non-object');
+            throw new UnexpectedTargetException($value, 'Unable to inspect a non-object');
         }
 
         return $value;
@@ -231,15 +255,15 @@ protected function setCommandScopeVariables(\Reflector $reflector)
         $vars = [];
 
         switch (\get_class($reflector)) {
-            case 'ReflectionClass':
-            case 'ReflectionObject':
+            case \ReflectionClass::class:
+            case \ReflectionObject::class:
                 $vars['__class'] = $reflector->name;
                 if ($reflector->inNamespace()) {
                     $vars['__namespace'] = $reflector->getNamespaceName();
                 }
                 break;
 
-            case 'ReflectionMethod':
+            case \ReflectionMethod::class:
                 $vars['__method'] = \sprintf('%s::%s', $reflector->class, $reflector->name);
                 $vars['__class'] = $reflector->class;
                 $classReflector = $reflector->getDeclaringClass();
@@ -248,14 +272,14 @@ protected function setCommandScopeVariables(\Reflector $reflector)
                 }
                 break;
 
-            case 'ReflectionFunction':
+            case \ReflectionFunction::class:
                 $vars['__function'] = $reflector->name;
                 if ($reflector->inNamespace()) {
                     $vars['__namespace'] = $reflector->getNamespaceName();
                 }
                 break;
 
-            case 'ReflectionGenerator':
+            case \ReflectionGenerator::class:
                 $funcReflector = $reflector->getFunction();
                 $vars['__function'] = $funcReflector->name;
                 if ($funcReflector->inNamespace()) {
@@ -268,9 +292,9 @@ protected function setCommandScopeVariables(\Reflector $reflector)
                 }
                 break;
 
-            case 'ReflectionProperty':
-            case 'ReflectionClassConstant':
-            case 'Psy\Reflection\ReflectionClassConstant':
+            case \ReflectionProperty::class:
+            case \ReflectionClassConstant::class:
+            case ReflectionClassConstant::class:
                 $classReflector = $reflector->getDeclaringClass();
                 $vars['__class'] = $classReflector->name;
                 if ($classReflector->inNamespace()) {
@@ -283,7 +307,7 @@ protected function setCommandScopeVariables(\Reflector $reflector)
                 }
                 break;
 
-            case 'Psy\Reflection\ReflectionConstant_':
+            case ReflectionConstant_::class:
                 if ($reflector->inNamespace()) {
                     $vars['__namespace'] = $reflector->getNamespaceName();
                 }
diff --git a/vendor/psy/psysh/src/Command/ShowCommand.php b/vendor/psy/psysh/src/Command/ShowCommand.php
index 47d1865486..60da02643b 100644
--- a/vendor/psy/psysh/src/Command/ShowCommand.php
+++ b/vendor/psy/psysh/src/Command/ShowCommand.php
@@ -3,7 +3,7 @@
 /*
  * This file is part of Psy Shell.
  *
- * (c) 2012-2018 Justin Hileman
+ * (c) 2012-2020 Justin Hileman
  *
  * For the full copyright and license information, please view the LICENSE
  * file that was distributed with this source code.
@@ -11,14 +11,11 @@
 
 namespace Psy\Command;
 
-use JakubOnderka\PhpConsoleHighlighter\Highlighter;
-use Psy\Configuration;
-use Psy\ConsoleColorFactory;
 use Psy\Exception\RuntimeException;
+use Psy\Exception\UnexpectedTargetException;
 use Psy\Formatter\CodeFormatter;
 use Psy\Formatter\SignatureFormatter;
 use Psy\Input\CodeArgument;
-use Psy\Output\ShellOutput;
 use Symfony\Component\Console\Formatter\OutputFormatter;
 use Symfony\Component\Console\Input\InputInterface;
 use Symfony\Component\Console\Input\InputOption;
@@ -29,18 +26,14 @@
  */
 class ShowCommand extends ReflectingCommand
 {
-    private $colorMode;
-    private $highlighter;
     private $lastException;
     private $lastExceptionIndex;
 
     /**
-     * @param null|string $colorMode (default: null)
+     * @param string|null $colorMode (deprecated and ignored)
      */
     public function __construct($colorMode = null)
     {
-        $this->colorMode = $colorMode ?: Configuration::COLOR_MODE_AUTO;
-
         parent::__construct();
     }
 
@@ -99,11 +92,15 @@ protected function execute(InputInterface $input, OutputInterface $output)
                 throw new \InvalidArgumentException('Too many arguments (supply either "target" or "--ex")');
             }
 
-            return $this->writeExceptionContext($input, $output);
+            $this->writeExceptionContext($input, $output);
+
+            return 0;
         }
 
         if ($input->getArgument('target')) {
-            return $this->writeCodeContext($input, $output);
+            $this->writeCodeContext($input, $output);
+
+            return 0;
         }
 
         throw new RuntimeException('Not enough arguments (missing: "target")');
@@ -111,13 +108,24 @@ protected function execute(InputInterface $input, OutputInterface $output)
 
     private function writeCodeContext(InputInterface $input, OutputInterface $output)
     {
-        list($target, $reflector) = $this->getTargetAndReflector($input->getArgument('target'));
+        try {
+            list($target, $reflector) = $this->getTargetAndReflector($input->getArgument('target'));
+        } catch (UnexpectedTargetException $e) {
+            // If we didn't get a target and Reflector, maybe we got a filename?
+            $target = $e->getTarget();
+            if (\is_string($target) && \is_file($target) && $code = @\file_get_contents($target)) {
+                // @todo maybe set $__file to $target?
+                return $output->page(CodeFormatter::formatCode($code));
+            } else {
+                throw $e;
+            }
+        }
 
         // Set some magic local variables
         $this->setCommandScopeVariables($reflector);
 
         try {
-            $output->page(CodeFormatter::format($reflector, $this->colorMode), ShellOutput::OUTPUT_RAW);
+            $output->page(CodeFormatter::format($reflector));
         } catch (RuntimeException $e) {
             $output->writeln(SignatureFormatter::format($reflector));
             throw $e;
@@ -170,7 +178,7 @@ private function writeTraceLine(OutputInterface $output, array $trace, $index)
         $line = isset($trace[$index]['line']) ? $trace[$index]['line'] : 'n/a';
 
         $output->writeln(\sprintf(
-            'From <info>%s:%d</info> at <strong>level %d</strong> of backtrace (of %d).',
+            'From <info>%s:%d</info> at <strong>level %d</strong> of backtrace (of %d):',
             OutputFormatter::escape($file),
             OutputFormatter::escape($line),
             $index + 1,
@@ -216,17 +224,10 @@ private function writeTraceCodeSnippet(OutputInterface $output, array $trace, $i
             return;
         }
 
-        $output->write($this->getHighlighter()->getCodeSnippet($code, $line, 5, 5), ShellOutput::OUTPUT_RAW);
-    }
-
-    private function getHighlighter()
-    {
-        if (!$this->highlighter) {
-            $factory = new ConsoleColorFactory($this->colorMode);
-            $this->highlighter = new Highlighter($factory->getConsoleColor());
-        }
+        $startLine = \max($line - 5, 0);
+        $endLine = $line + 5;
 
-        return $this->highlighter;
+        $output->write(CodeFormatter::formatCode($code, $startLine, $endLine, $line), false);
     }
 
     private function setCommandScopeVariablesFromContext(array $context)
diff --git a/vendor/psy/psysh/src/Command/SudoCommand.php b/vendor/psy/psysh/src/Command/SudoCommand.php
index 9d5afbf04c..c971a19b6a 100644
--- a/vendor/psy/psysh/src/Command/SudoCommand.php
+++ b/vendor/psy/psysh/src/Command/SudoCommand.php
@@ -3,7 +3,7 @@
 /*
  * This file is part of Psy Shell.
  *
- * (c) 2012-2018 Justin Hileman
+ * (c) 2012-2020 Justin Hileman
  *
  * For the full copyright and license information, please view the LICENSE
  * file that was distributed with this source code.
@@ -109,7 +109,7 @@ protected function execute(InputInterface $input, OutputInterface $output)
             $code = $history[\count($history) - 2];
         }
 
-        if (\strpos('<?', $code) === false) {
+        if (\strpos($code, '<?') === false) {
             $code = '<?php ' . $code;
         }
 
@@ -118,6 +118,8 @@ protected function execute(InputInterface $input, OutputInterface $output)
         $sudoCode = $this->printer->prettyPrint($nodes);
         $shell = $this->getApplication();
         $shell->addCode($sudoCode, !$shell->hasCode());
+
+        return 0;
     }
 
     /**
diff --git a/vendor/psy/psysh/src/Command/ThrowUpCommand.php b/vendor/psy/psysh/src/Command/ThrowUpCommand.php
index b37f7573c1..bd672ad684 100644
--- a/vendor/psy/psysh/src/Command/ThrowUpCommand.php
+++ b/vendor/psy/psysh/src/Command/ThrowUpCommand.php
@@ -3,7 +3,7 @@
 /*
  * This file is part of Psy Shell.
  *
- * (c) 2012-2018 Justin Hileman
+ * (c) 2012-2020 Justin Hileman
  *
  * For the full copyright and license information, please view the LICENSE
  * file that was distributed with this source code.
@@ -21,6 +21,7 @@
 use PhpParser\PrettyPrinter\Standard as Printer;
 use Psy\Context;
 use Psy\ContextAware;
+use Psy\Exception\ThrowUpException;
 use Psy\Input\CodeArgument;
 use Psy\ParserFactory;
 use Symfony\Component\Console\Input\InputInterface;
@@ -31,18 +32,9 @@
  */
 class ThrowUpCommand extends Command implements ContextAware
 {
-    const THROW_CLASS = 'Psy\Exception\ThrowUpException';
-
     private $parser;
     private $printer;
 
-    /**
-     * Context instance (for ContextAware interface).
-     *
-     * @var Context
-     */
-    protected $context;
-
     /**
      * {@inheritdoc}
      */
@@ -57,13 +49,13 @@ public function __construct($name = null)
     }
 
     /**
-     * ContextAware interface.
+     * @deprecated throwUp no longer needs to be ContextAware
      *
      * @param Context $context
      */
     public function setContext(Context $context)
     {
-        $this->context = $context;
+        // Do nothing
     }
 
     /**
@@ -95,16 +87,18 @@ protected function configure()
     /**
      * {@inheritdoc}
      *
-     * @throws InvalidArgumentException if there is no exception to throw
+     * @throws \InvalidArgumentException if there is no exception to throw
      */
     protected function execute(InputInterface $input, OutputInterface $output)
     {
         $args = $this->prepareArgs($input->getArgument('exception'));
-        $throwStmt = new Throw_(new StaticCall(new FullyQualifiedName(self::THROW_CLASS), 'fromThrowable', $args));
+        $throwStmt = new Throw_(new StaticCall(new FullyQualifiedName(ThrowUpException::class), 'fromThrowable', $args));
         $throwCode = $this->printer->prettyPrint([$throwStmt]);
 
         $shell = $this->getApplication();
         $shell->addCode($throwCode, !$shell->hasCode());
+
+        return 0;
     }
 
     /**
@@ -112,7 +106,7 @@ protected function execute(InputInterface $input, OutputInterface $output)
      *
      * If no argument was given, this falls back to `$_e`
      *
-     * @throws InvalidArgumentException if there is no exception to throw
+     * @throws \InvalidArgumentException if there is no exception to throw
      *
      * @param string $code
      *
@@ -125,7 +119,7 @@ private function prepareArgs($code = null)
             return [new Arg(new Variable('_e'))];
         }
 
-        if (\strpos('<?', $code) === false) {
+        if (\strpos($code, '<?') === false) {
             $code = '<?php ' . $code;
         }
 
@@ -143,7 +137,7 @@ private function prepareArgs($code = null)
 
         // Allow throwing via a string, e.g. `throw-up "SUP"`
         if ($expr instanceof String_) {
-            return [new New_(new FullyQualifiedName('Exception'), $args)];
+            return [new New_(new FullyQualifiedName(\Exception::class), $args)];
         }
 
         return $args;
diff --git a/vendor/psy/psysh/src/Command/TimeitCommand.php b/vendor/psy/psysh/src/Command/TimeitCommand.php
index c596631311..edaa2b80a2 100644
--- a/vendor/psy/psysh/src/Command/TimeitCommand.php
+++ b/vendor/psy/psysh/src/Command/TimeitCommand.php
@@ -3,7 +3,7 @@
 /*
  * This file is part of Psy Shell.
  *
- * (c) 2012-2018 Justin Hileman
+ * (c) 2012-2020 Justin Hileman
  *
  * For the full copyright and license information, please view the LICENSE
  * file that was distributed with this source code.
@@ -106,6 +106,8 @@ protected function execute(InputInterface $input, OutputInterface $output)
 
             $output->writeln(\sprintf(self::AVG_RESULT_MSG, $total / $num, $median, $total));
         }
+
+        return 0;
     }
 
     /**
diff --git a/vendor/psy/psysh/src/Command/TimeitCommand/TimeitVisitor.php b/vendor/psy/psysh/src/Command/TimeitCommand/TimeitVisitor.php
index 841ba135d8..8deb7335ab 100644
--- a/vendor/psy/psysh/src/Command/TimeitCommand/TimeitVisitor.php
+++ b/vendor/psy/psysh/src/Command/TimeitCommand/TimeitVisitor.php
@@ -3,7 +3,7 @@
 /*
  * This file is part of Psy Shell.
  *
- * (c) 2012-2018 Justin Hileman
+ * (c) 2012-2020 Justin Hileman
  *
  * For the full copyright and license information, please view the LICENSE
  * file that was distributed with this source code.
@@ -21,6 +21,7 @@
 use PhpParser\Node\Stmt\Return_;
 use PhpParser\NodeVisitorAbstract;
 use Psy\CodeCleaner\NoReturnValue;
+use Psy\Command\TimeitCommand;
 
 /**
  * A node visitor for instrumenting code to be executed by the `timeit` command.
@@ -97,11 +98,11 @@ public function afterTraverse(array $nodes)
     /**
      * Get PhpParser AST nodes for a `markStart` call.
      *
-     * @return PhpParser\Node\Expr\StaticCall
+     * @return \PhpParser\Node\Expr\StaticCall
      */
     private function getStartCall()
     {
-        return new StaticCall(new FullyQualifiedName('Psy\Command\TimeitCommand'), 'markStart');
+        return new StaticCall(new FullyQualifiedName(TimeitCommand::class), 'markStart');
     }
 
     /**
@@ -111,7 +112,7 @@ private function getStartCall()
      *
      * @param Expr|null $arg
      *
-     * @return PhpParser\Node\Expr\StaticCall
+     * @return \PhpParser\Node\Expr\StaticCall
      */
     private function getEndCall(Expr $arg = null)
     {
@@ -119,7 +120,7 @@ private function getEndCall(Expr $arg = null)
             $arg = NoReturnValue::create();
         }
 
-        return new StaticCall(new FullyQualifiedName('Psy\Command\TimeitCommand'), 'markEnd', [new Arg($arg)]);
+        return new StaticCall(new FullyQualifiedName(TimeitCommand::class), 'markEnd', [new Arg($arg)]);
     }
 
     /**
@@ -127,13 +128,13 @@ private function getEndCall(Expr $arg = null)
      *
      * Wrap $expr in a PhpParser\Node\Stmt\Expression if the class exists.
      *
-     * @param PhpParser\Node $expr
-     * @param array          $attrs
+     * @param \PhpParser\Node $expr
+     * @param array           $attrs
      *
-     * @return PhpParser\Node\Expr|PhpParser\Node\Stmt\Expression
+     * @return \PhpParser\Node\Expr|\PhpParser\Node\Stmt\Expression
      */
     private function maybeExpression($expr, $attrs = [])
     {
-        return \class_exists('PhpParser\Node\Stmt\Expression') ? new Expression($expr, $attrs) : $expr;
+        return \class_exists(Expression::class) ? new Expression($expr, $attrs) : $expr;
     }
 }
diff --git a/vendor/psy/psysh/src/Command/TraceCommand.php b/vendor/psy/psysh/src/Command/TraceCommand.php
index c28b0e7288..7aa3c18e36 100644
--- a/vendor/psy/psysh/src/Command/TraceCommand.php
+++ b/vendor/psy/psysh/src/Command/TraceCommand.php
@@ -3,7 +3,7 @@
 /*
  * This file is part of Psy Shell.
  *
- * (c) 2012-2018 Justin Hileman
+ * (c) 2012-2020 Justin Hileman
  *
  * For the full copyright and license information, please view the LICENSE
  * file that was distributed with this source code.
@@ -11,9 +11,9 @@
 
 namespace Psy\Command;
 
+use Psy\Formatter\TraceFormatter;
 use Psy\Input\FilterOptions;
 use Psy\Output\ShellOutput;
-use Symfony\Component\Console\Formatter\OutputFormatter;
 use Symfony\Component\Console\Input\InputInterface;
 use Symfony\Component\Console\Input\InputOption;
 use Symfony\Component\Console\Output\OutputInterface;
@@ -74,6 +74,8 @@ protected function execute(InputInterface $input, OutputInterface $output)
         $this->filter->bind($input);
         $trace = $this->getBacktrace(new \Exception(), $input->getOption('num'), $input->getOption('include-psy'));
         $output->page($trace, ShellOutput::NUMBER_LINES);
+
+        return 0;
     }
 
     /**
@@ -90,78 +92,6 @@ protected function execute(InputInterface $input, OutputInterface $output)
      */
     protected function getBacktrace(\Exception $e, $count = null, $includePsy = true)
     {
-        if ($cwd = \getcwd()) {
-            $cwd = \rtrim($cwd, DIRECTORY_SEPARATOR) . DIRECTORY_SEPARATOR;
-        }
-
-        if ($count === null) {
-            $count = PHP_INT_MAX;
-        }
-
-        $lines = [];
-
-        $trace = $e->getTrace();
-        \array_unshift($trace, [
-            'function' => '',
-            'file'     => $e->getFile() !== null ? $e->getFile() : 'n/a',
-            'line'     => $e->getLine() !== null ? $e->getLine() : 'n/a',
-            'args'     => [],
-        ]);
-
-        if (!$includePsy) {
-            for ($i = \count($trace) - 1; $i >= 0; $i--) {
-                $thing = isset($trace[$i]['class']) ? $trace[$i]['class'] : $trace[$i]['function'];
-                if (\preg_match('/\\\\?Psy\\\\/', $thing)) {
-                    $trace = \array_slice($trace, $i + 1);
-                    break;
-                }
-            }
-        }
-
-        for ($i = 0, $count = \min($count, \count($trace)); $i < $count; $i++) {
-            $class    = isset($trace[$i]['class']) ? $trace[$i]['class'] : '';
-            $type     = isset($trace[$i]['type']) ? $trace[$i]['type'] : '';
-            $function = $trace[$i]['function'];
-            $file     = isset($trace[$i]['file']) ? $this->replaceCwd($cwd, $trace[$i]['file']) : 'n/a';
-            $line     = isset($trace[$i]['line']) ? $trace[$i]['line'] : 'n/a';
-
-            // Leave execution loop out of the `eval()'d code` lines
-            if (\preg_match("#/src/Execution(?:Loop)?Closure.php\(\d+\) : eval\(\)'d code$#", \str_replace('\\', '/', $file))) {
-                $file = "eval()'d code";
-            }
-
-            // Skip any lines that don't match our filter options
-            if (!$this->filter->match(\sprintf('%s%s%s() at %s:%s', $class, $type, $function, $file, $line))) {
-                continue;
-            }
-
-            $lines[] = \sprintf(
-                ' <class>%s</class>%s%s() at <info>%s:%s</info>',
-                OutputFormatter::escape($class),
-                OutputFormatter::escape($type),
-                OutputFormatter::escape($function),
-                OutputFormatter::escape($file),
-                OutputFormatter::escape($line)
-            );
-        }
-
-        return $lines;
-    }
-
-    /**
-     * Replace the given directory from the start of a filepath.
-     *
-     * @param string $cwd
-     * @param string $file
-     *
-     * @return string
-     */
-    private function replaceCwd($cwd, $file)
-    {
-        if ($cwd === false) {
-            return $file;
-        } else {
-            return \preg_replace('/^' . \preg_quote($cwd, '/') . '/', '', $file);
-        }
+        return TraceFormatter::formatTrace($e, $this->filter, $count, $includePsy);
     }
 }
diff --git a/vendor/psy/psysh/src/Command/WhereamiCommand.php b/vendor/psy/psysh/src/Command/WhereamiCommand.php
index 98593d13aa..b04a21a410 100644
--- a/vendor/psy/psysh/src/Command/WhereamiCommand.php
+++ b/vendor/psy/psysh/src/Command/WhereamiCommand.php
@@ -3,7 +3,7 @@
 /*
  * This file is part of Psy Shell.
  *
- * (c) 2012-2018 Justin Hileman
+ * (c) 2012-2020 Justin Hileman
  *
  * For the full copyright and license information, please view the LICENSE
  * file that was distributed with this source code.
@@ -11,10 +11,9 @@
 
 namespace Psy\Command;
 
-use JakubOnderka\PhpConsoleHighlighter\Highlighter;
-use Psy\Configuration;
-use Psy\ConsoleColorFactory;
+use Psy\Formatter\CodeFormatter;
 use Psy\Output\ShellOutput;
+use Psy\Shell;
 use Symfony\Component\Console\Input\InputInterface;
 use Symfony\Component\Console\Input\InputOption;
 use Symfony\Component\Console\Output\OutputInterface;
@@ -24,15 +23,13 @@
  */
 class WhereamiCommand extends Command
 {
-    private $colorMode;
     private $backtrace;
 
     /**
-     * @param null|string $colorMode (default: null)
+     * @param string|null $colorMode (deprecated and ignored)
      */
     public function __construct($colorMode = null)
     {
-        $this->colorMode = $colorMode ?: Configuration::COLOR_MODE_AUTO;
         $this->backtrace = \debug_backtrace(DEBUG_BACKTRACE_IGNORE_ARGS);
 
         parent::__construct();
@@ -46,18 +43,21 @@ protected function configure()
         $this
             ->setName('whereami')
             ->setDefinition([
-                new InputOption('num', 'n', InputOption::VALUE_OPTIONAL, 'Number of lines before and after.', '5'),
+                new InputOption('num',  'n',   InputOption::VALUE_OPTIONAL, 'Number of lines before and after.', '5'),
+                new InputOption('file', 'f|a', InputOption::VALUE_NONE,     'Show the full source for the current file.'),
             ])
             ->setDescription('Show where you are in the code.')
             ->setHelp(
                 <<<'HELP'
 Show where you are in the code.
 
-Optionally, include how many lines before and after you want to display.
+Optionally, include the number of lines before and after you want to display,
+or --file for the whole file.
 
 e.g.
 <return>> whereami </return>
 <return>> whereami -n10</return>
+<return>> whereami --file</return>
 HELP
             );
     }
@@ -83,8 +83,8 @@ private static function isDebugCall(array $stackFrame)
         $class    = isset($stackFrame['class']) ? $stackFrame['class'] : null;
         $function = isset($stackFrame['function']) ? $stackFrame['function'] : null;
 
-        return ($class === null && $function === 'Psy\debug') ||
-            ($class === 'Psy\Shell' && \in_array($function, ['__construct', 'debug']));
+        return ($class === null && $function === 'Psy\\debug') ||
+            ($class === Shell::class && \in_array($function, ['__construct', 'debug']));
     }
 
     /**
@@ -112,19 +112,30 @@ protected function fileInfo()
      */
     protected function execute(InputInterface $input, OutputInterface $output)
     {
-        $info        = $this->fileInfo();
-        $num         = $input->getOption('num');
-        $factory     = new ConsoleColorFactory($this->colorMode);
-        $colors      = $factory->getConsoleColor();
-        $highlighter = new Highlighter($colors);
-        $contents    = \file_get_contents($info['file']);
-
-        $output->startPaging();
-        $output->writeln('');
-        $output->writeln(\sprintf('From <info>%s:%s</info>:', $this->replaceCwd($info['file']), $info['line']));
-        $output->writeln('');
-        $output->write($highlighter->getCodeSnippet($contents, $info['line'], $num, $num), ShellOutput::OUTPUT_RAW);
-        $output->stopPaging();
+        $info      = $this->fileInfo();
+        $num       = $input->getOption('num');
+        $lineNum   = $info['line'];
+        $startLine = \max($lineNum - $num, 1);
+        $endLine   = $lineNum + $num;
+        $code      = \file_get_contents($info['file']);
+
+        if ($input->getOption('file')) {
+            $startLine = 1;
+            $endLine   = null;
+        }
+
+        if ($output instanceof ShellOutput) {
+            $output->startPaging();
+        }
+
+        $output->writeln(\sprintf('From <info>%s:%s</info>:', $this->replaceCwd($info['file']), $lineNum));
+        $output->write(CodeFormatter::formatCode($code, $startLine, $endLine, $lineNum), false);
+
+        if ($output instanceof ShellOutput) {
+            $output->stopPaging();
+        }
+
+        return 0;
     }
 
     /**
diff --git a/vendor/psy/psysh/src/Command/WtfCommand.php b/vendor/psy/psysh/src/Command/WtfCommand.php
index c6d53000ed..7bd71707d5 100644
--- a/vendor/psy/psysh/src/Command/WtfCommand.php
+++ b/vendor/psy/psysh/src/Command/WtfCommand.php
@@ -3,7 +3,7 @@
 /*
  * This file is part of Psy Shell.
  *
- * (c) 2012-2018 Justin Hileman
+ * (c) 2012-2020 Justin Hileman
  *
  * For the full copyright and license information, please view the LICENSE
  * file that was distributed with this source code.
@@ -95,7 +95,11 @@ protected function execute(InputInterface $input, OutputInterface $output)
         $count     = $input->getOption('all') ? PHP_INT_MAX : \max(3, \pow(2, \strlen($incredulity) + 1));
 
         $shell = $this->getApplication();
-        $output->startPaging();
+
+        if ($output instanceof ShellOutput) {
+            $output->startPaging();
+        }
+
         do {
             $traceCount = \count($exception->getTrace());
             $showLines  = $count;
@@ -120,6 +124,11 @@ protected function execute(InputInterface $input, OutputInterface $output)
                 $output->writeln('');
             }
         } while ($exception = $exception->getPrevious());
-        $output->stopPaging();
+
+        if ($output instanceof ShellOutput) {
+            $output->stopPaging();
+        }
+
+        return 0;
     }
 }
diff --git a/vendor/psy/psysh/src/ConfigPaths.php b/vendor/psy/psysh/src/ConfigPaths.php
index c4de2d5769..8057a3a967 100644
--- a/vendor/psy/psysh/src/ConfigPaths.php
+++ b/vendor/psy/psysh/src/ConfigPaths.php
@@ -3,7 +3,7 @@
 /*
  * This file is part of Psy Shell.
  *
- * (c) 2012-2018 Justin Hileman
+ * (c) 2012-2020 Justin Hileman
  *
  * For the full copyright and license information, please view the LICENSE
  * file that was distributed with this source code.
@@ -11,6 +11,7 @@
 
 namespace Psy;
 
+use Psy\Exception\ErrorException;
 use XdgBaseDir\Xdg;
 
 /**
@@ -136,7 +137,7 @@ public static function getRuntimeDir()
     {
         $xdg = new Xdg();
 
-        \set_error_handler(['Psy\Exception\ErrorException', 'throwException']);
+        \set_error_handler([ErrorException::class, 'throwException']);
 
         try {
             // XDG doesn't really work on Windows, sometimes complains about
@@ -161,18 +162,18 @@ private static function getDirNames(array $baseDirs)
         }, $baseDirs);
 
         // Add ~/.psysh
-        if ($home = \getenv('HOME')) {
-            $dirs[] = \strtr($home, '\\', '/') . '/.psysh';
+        if (isset($_SERVER['HOME']) && $_SERVER['HOME']) {
+            $dirs[] = \strtr($_SERVER['HOME'], '\\', '/') . '/.psysh';
         }
 
         // Add some Windows specific ones :)
         if (\defined('PHP_WINDOWS_VERSION_MAJOR')) {
-            if ($appData = \getenv('APPDATA')) {
+            if (isset($_SERVER['APPDATA']) && $_SERVER['APPDATA']) {
                 // AppData gets preference
-                \array_unshift($dirs, \strtr($appData, '\\', '/') . '/PsySH');
+                \array_unshift($dirs, \strtr($_SERVER['APPDATA'], '\\', '/') . '/PsySH');
             }
 
-            $dir = \strtr(\getenv('HOMEDRIVE') . '/' . \getenv('HOMEPATH'), '\\', '/') . '/.psysh';
+            $dir = \strtr($_SERVER['HOMEDRIVE'] . '/' . $_SERVER['HOMEPATH'], '\\', '/') . '/.psysh';
             if (!\in_array($dir, $dirs)) {
                 $dirs[] = $dir;
             }
@@ -196,6 +197,31 @@ private static function getRealFiles(array $dirNames, array $fileNames)
         return $files;
     }
 
+    /**
+     * Ensure that $dir exists and is writable.
+     *
+     * Generates E_USER_NOTICE error if the directory is not writable or creatable.
+     *
+     * @param string $dir
+     *
+     * @return bool False if directory exists but is not writeable, or cannot be created
+     */
+    public static function ensureDir($dir)
+    {
+        if (!\is_dir($dir)) {
+            // Just try making it and see if it works
+            @\mkdir($dir, 0700, true);
+        }
+
+        if (!\is_dir($dir) || !\is_writable($dir)) {
+            \trigger_error(\sprintf('Writing to %s is not allowed.', $dir), E_USER_NOTICE);
+
+            return false;
+        }
+
+        return true;
+    }
+
     /**
      * Ensure that $file exists and is writable, make the parent directory if necessary.
      *
@@ -217,16 +243,7 @@ public static function touchFileWithMkdir($file)
             return false;
         }
 
-        $dir = \dirname($file);
-
-        if (!\is_dir($dir)) {
-            // Just try making it and see if it works
-            @\mkdir($dir, 0700, true);
-        }
-
-        if (!\is_dir($dir) || !\is_writable($dir)) {
-            \trigger_error(\sprintf('Writing to %s is not allowed.', $dir), E_USER_NOTICE);
-
+        if (!self::ensureDir(\dirname($file))) {
             return false;
         }
 
diff --git a/vendor/psy/psysh/src/Configuration.php b/vendor/psy/psysh/src/Configuration.php
index 67c76e7b3d..5236eee5ae 100644
--- a/vendor/psy/psysh/src/Configuration.php
+++ b/vendor/psy/psysh/src/Configuration.php
@@ -3,7 +3,7 @@
 /*
  * This file is part of Psy Shell.
  *
- * (c) 2012-2018 Justin Hileman
+ * (c) 2012-2020 Justin Hileman
  *
  * For the full copyright and license information, please view the LICENSE
  * file that was distributed with this source code.
@@ -13,19 +13,19 @@
 
 use Psy\Exception\DeprecatedException;
 use Psy\Exception\RuntimeException;
+use Psy\ExecutionLoop\ProcessForker;
 use Psy\Output\OutputPager;
 use Psy\Output\ShellOutput;
-use Psy\Readline\GNUReadline;
-use Psy\Readline\HoaConsole;
-use Psy\Readline\Libedit;
-use Psy\Readline\Readline;
-use Psy\Readline\Transient;
 use Psy\TabCompletion\AutoCompleter;
 use Psy\VarDumper\Presenter;
 use Psy\VersionUpdater\Checker;
 use Psy\VersionUpdater\GitHubChecker;
 use Psy\VersionUpdater\IntervalChecker;
 use Psy\VersionUpdater\NoopChecker;
+use Symfony\Component\Console\Formatter\OutputFormatterStyle;
+use Symfony\Component\Console\Input\InputInterface;
+use Symfony\Component\Console\Input\InputOption;
+use Symfony\Component\Console\Output\OutputInterface;
 
 /**
  * The Psy Shell configuration.
@@ -36,6 +36,16 @@ class Configuration
     const COLOR_MODE_FORCED   = 'forced';
     const COLOR_MODE_DISABLED = 'disabled';
 
+    const INTERACTIVE_MODE_AUTO     = 'auto';
+    const INTERACTIVE_MODE_FORCED   = 'forced';
+    const INTERACTIVE_MODE_DISABLED = 'disabled';
+
+    const VERBOSITY_QUIET        = 'quiet';
+    const VERBOSITY_NORMAL       = 'normal';
+    const VERBOSITY_VERBOSE      = 'verbose';
+    const VERBOSITY_VERY_VERBOSE = 'very_verbose';
+    const VERBOSITY_DEBUG        = 'debug';
+
     private static $AVAILABLE_OPTIONS = [
         'codeCleaner',
         'colorMode',
@@ -45,10 +55,13 @@ class Configuration
         'eraseDuplicates',
         'errorLoggingLevel',
         'forceArrayIndexes',
+        'formatterStyles',
         'historySize',
+        'interactiveMode',
         'manualDbFile',
         'pager',
         'prompt',
+        'rawOutput',
         'requireSemicolons',
         'runtimeDir',
         'startupMessage',
@@ -58,6 +71,7 @@ class Configuration
         'useReadline',
         'useTabCompletion',
         'useUnicode',
+        'verbosity',
         'warnOnMultipleConfigs',
     ];
 
@@ -76,17 +90,23 @@ class Configuration
     private $useBracketedPaste;
     private $hasPcntl;
     private $usePcntl;
-    private $newCommands       = [];
+    private $newCommands = [];
+    private $pipedInput;
+    private $pipedOutput;
+    private $rawOutput = false;
     private $requireSemicolons = false;
     private $useUnicode;
     private $useTabCompletion;
     private $newMatchers = [];
     private $errorLoggingLevel = E_ALL;
     private $warnOnMultipleConfigs = false;
-    private $colorMode;
+    private $colorMode = self::COLOR_MODE_AUTO;
+    private $interactiveMode = self::INTERACTIVE_MODE_AUTO;
     private $updateCheck;
     private $startupMessage;
     private $forceArrayIndexes = false;
+    private $formatterStyles = [];
+    private $verbosity = self::VERBOSITY_NORMAL;
 
     // services
     private $readline;
@@ -109,13 +129,11 @@ class Configuration
      */
     public function __construct(array $config = [])
     {
-        $this->setColorMode(self::COLOR_MODE_AUTO);
-
         // explicit configFile option
         if (isset($config['configFile'])) {
             $this->configFile = $config['configFile'];
-        } elseif ($configFile = \getenv('PSYSH_CONFIG')) {
-            $this->configFile = $configFile;
+        } elseif (isset($_SERVER['PSYSH_CONFIG']) && $_SERVER['PSYSH_CONFIG']) {
+            $this->configFile = $_SERVER['PSYSH_CONFIG'];
         }
 
         // legacy baseDir option
@@ -132,6 +150,200 @@ public function __construct(array $config = [])
         $this->init();
     }
 
+    /**
+     * Construct a Configuration object from Symfony Console input.
+     *
+     * This is great for adding psysh-compatible command line options to framework- or app-specific
+     * wrappers.
+     *
+     * $input should already be bound to an appropriate InputDefinition (see self::getInputOptions
+     * if you want to build your own) before calling this method. It's not required, but things work
+     * a lot better if we do.
+     *
+     * @see self::getInputOptions
+     *
+     * @throws \InvalidArgumentException
+     *
+     * @param InputInterface $input
+     *
+     * @return self
+     */
+    public static function fromInput(InputInterface $input)
+    {
+        $config = new self(['configFile' => self::getConfigFileFromInput($input)]);
+
+        // Handle --color and --no-color (and --ansi and --no-ansi aliases)
+        if (self::getOptionFromInput($input, ['color', 'ansi'])) {
+            $config->setColorMode(self::COLOR_MODE_FORCED);
+        } elseif (self::getOptionFromInput($input, ['no-color', 'no-ansi'])) {
+            $config->setColorMode(self::COLOR_MODE_DISABLED);
+        }
+
+        // Handle verbosity options
+        if ($verbosity = self::getVerbosityFromInput($input)) {
+            $config->setVerbosity($verbosity);
+        }
+
+        // Handle interactive mode
+        if (self::getOptionFromInput($input, ['interactive', 'interaction'], ['-a', '-i'])) {
+            $config->setInteractiveMode(self::INTERACTIVE_MODE_FORCED);
+        } elseif (self::getOptionFromInput($input, ['no-interactive', 'no-interaction'], ['-n'])) {
+            $config->setInteractiveMode(self::INTERACTIVE_MODE_DISABLED);
+        }
+
+        // Handle --raw-output
+        // @todo support raw output with interactive input?
+        if (!$config->getInputInteractive()) {
+            if (self::getOptionFromInput($input, ['raw-output'], ['-r'])) {
+                $config->setRawOutput(true);
+            }
+        }
+
+        return $config;
+    }
+
+    /**
+     * Get the desired config file from the given input.
+     *
+     * @return string|null config file path, or null if none is specified
+     */
+    private static function getConfigFileFromInput(InputInterface $input)
+    {
+        // Best case, input is properly bound and validated.
+        if ($input->hasOption('config')) {
+            return $input->getOption('config');
+        }
+
+        return $input->getParameterOption('--config', null, true) ?: $input->getParameterOption('-c', null, true);
+    }
+
+    /**
+     * Get a boolean option from the given input.
+     *
+     * This helper allows fallback for unbound and unvalidated input. It's not perfect--for example,
+     * it can't deal with several short options squished together--but it's better than falling over
+     * any time someone gives us unbound input.
+     *
+     * @return bool true if the option (or an alias) is present
+     */
+    private static function getOptionFromInput(InputInterface $input, array $names, array $otherParams = [])
+    {
+        // Best case, input is properly bound and validated.
+        foreach ($names as $name) {
+            if ($input->hasOption($name) && $input->getOption($name)) {
+                return true;
+            }
+        }
+
+        foreach ($names as $name) {
+            $otherParams[] = '--' . $name;
+        }
+
+        foreach ($otherParams as $name) {
+            if ($input->hasParameterOption($name, true)) {
+                return true;
+            }
+        }
+
+        return false;
+    }
+
+    /**
+     * Get the desired verbosity from the given input.
+     *
+     * This is a bit more complext than the other options parsers. It handles `--quiet` and
+     * `--verbose`, along with their short aliases, and fancy things like `-vvv`.
+     *
+     * @return string|null configuration constant, or null if no verbosity option is specified
+     */
+    private static function getVerbosityFromInput(InputInterface $input)
+    {
+        // --quiet wins!
+        if (self::getOptionFromInput($input, ['quiet'], ['-q'])) {
+            return self::VERBOSITY_QUIET;
+        }
+
+        // Best case, input is properly bound and validated.
+        //
+        // Note that if the `--verbose` option is incorrectly defined as `VALUE_NONE` rather than
+        // `VALUE_OPTIONAL` (as it is in Symfony Console by default) it doesn't actually work with
+        // multiple verbosity levels as it claims.
+        //
+        // We can detect this by checking whether the the value === true, and fall back to unbound
+        // parsing for this option.
+        if ($input->hasOption('verbose') && $input->getOption('verbose') !== true) {
+            switch ($input->getOption('verbose')) {
+                case '-1':
+                    return self::VERBOSITY_QUIET;
+                case '0': // explicitly normal, overrides config file default
+                    return self::VERBOSITY_NORMAL;
+                case '1':
+                case null: // `--verbose` and `-v`
+                    return self::VERBOSITY_VERBOSE;
+                case '2':
+                case 'v': // `-vv`
+                    return self::VERBOSITY_VERY_VERBOSE;
+                case '3':
+                case 'vv': // `-vvv`
+                    return self::VERBOSITY_DEBUG;
+                default: // implicitly normal, config file default wins
+                    return;
+            }
+        }
+
+        // quiet and normal have to come before verbose, because it eats everything else.
+        if ($input->hasParameterOption('--verbose=-1', true) || $input->getParameterOption('--verbose', false, true) === '-1') {
+            return self::VERBOSITY_QUIET;
+        }
+
+        if ($input->hasParameterOption('--verbose=0', true) || $input->getParameterOption('--verbose', false, true) === '0') {
+            return self::VERBOSITY_NORMAL;
+        }
+
+        // `-vvv`, `-vv` and `-v` have to come in descending length order, because `hasParameterOption` matches prefixes.
+        if ($input->hasParameterOption('-vvv', true) || $input->hasParameterOption('--verbose=3', true) || $input->getParameterOption('--verbose', false, true) === '3') {
+            return self::VERBOSITY_DEBUG;
+        }
+
+        if ($input->hasParameterOption('-vv', true) || $input->hasParameterOption('--verbose=2', true) || $input->getParameterOption('--verbose', false, true) === '2') {
+            return self::VERBOSITY_VERY_VERBOSE;
+        }
+
+        if ($input->hasParameterOption('-v', true) || $input->hasParameterOption('--verbose=1', true) || $input->hasParameterOption('--verbose', true)) {
+            return self::VERBOSITY_VERBOSE;
+        }
+    }
+
+    /**
+     * Get a list of input options expected when initializing Configuration via input.
+     *
+     * @see self::fromInput
+     *
+     * @return InputOption[]
+     */
+    public static function getInputOptions()
+    {
+        return [
+            new InputOption('config',         'c',        InputOption::VALUE_REQUIRED, 'Use an alternate PsySH config file location.'),
+            new InputOption('cwd',            null,       InputOption::VALUE_REQUIRED, 'Use an alternate working directory.'),
+
+            new InputOption('color',          null,       InputOption::VALUE_NONE,     'Force colors in output.'),
+            new InputOption('no-color',       null,       InputOption::VALUE_NONE,     'Disable colors in output.'),
+            // --ansi and --no-ansi aliases to match Symfony, Composer, etc.
+            new InputOption('ansi',           null,       InputOption::VALUE_NONE,     'Force colors in output.'),
+            new InputOption('no-ansi',        null,       InputOption::VALUE_NONE,     'Disable colors in output.'),
+
+            new InputOption('quiet',          'q',        InputOption::VALUE_NONE,     'Shhhhhh.'),
+            new InputOption('verbose',        'v|vv|vvv', InputOption::VALUE_OPTIONAL, 'Increase the verbosity of messages.', '0'),
+            new InputOption('interactive',    'i|a',      InputOption::VALUE_NONE,     'Force PsySH to run in interactive mode.'),
+            new InputOption('no-interactive', 'n',        InputOption::VALUE_NONE,     'Run PsySH without interactive input. Requires input from stdin.'),
+            // --interaction and --no-interaction aliases for compatibility with Symfony, Composer, etc
+            new InputOption('interaction',    null,       InputOption::VALUE_NONE,     'Force PsySH to run in interactive mode.'),
+            new InputOption('no-interaction', null,       InputOption::VALUE_NONE,     'Run PsySH without interactive input. Requires input from stdin.'),
+            new InputOption('raw-output',     'r',        InputOption::VALUE_NONE,     'Print var_export-style return values (for non-interactive input)'),
+        ];
+    }
+
     /**
      * Initialize the configuration.
      *
@@ -146,7 +358,7 @@ public function init()
     {
         // feature detection
         $this->hasReadline = \function_exists('readline');
-        $this->hasPcntl    = \function_exists('pcntl_signal') && \function_exists('posix_getpid');
+        $this->hasPcntl    = ProcessForker::isSupported();
 
         if ($configFile = $this->getConfigFile()) {
             $this->loadConfigFile($configFile);
@@ -181,7 +393,7 @@ public function getConfigFile()
 
         if (!empty($files)) {
             if ($this->warnOnMultipleConfigs && \count($files) > 1) {
-                $msg = \sprintf('Multiple configuration files found: %s. Using %s', \implode($files, ', '), $files[0]);
+                $msg = \sprintf('Multiple configuration files found: %s. Using %s', \implode(', ', $files), $files[0]);
                 \trigger_error($msg, E_USER_NOTICE);
             }
 
@@ -251,12 +463,16 @@ public function loadConfig(array $options)
      * The config file may directly manipulate the configuration, or may return
      * an array of options which will be merged with the current configuration.
      *
-     * @throws \InvalidArgumentException if the config file returns a non-array result
+     * @throws \InvalidArgumentException if the config file does not exist or returns a non-array result
      *
      * @param string $file
      */
     public function loadConfigFile($file)
     {
+        if (!\is_file($file)) {
+            throw new \InvalidArgumentException(\sprintf('Invalid configuration file specified, %s does not exist', $file));
+        }
+
         $__psysh_config_file__ = $file;
         $load = function ($config) use ($__psysh_config_file__) {
             $result = require $__psysh_config_file__;
@@ -360,7 +576,9 @@ public function getRuntimeDir()
         }
 
         if (!\is_dir($this->runtimeDir)) {
-            \mkdir($this->runtimeDir, 0700, true);
+            if (!@\mkdir($this->runtimeDir, 0700, true)) {
+                throw new RuntimeException(sprintf('Unable to create PsySH runtime directory. Make sure PHP is able to write to %s in order to continue.', dirname($this->runtimeDir)));
+            }
         }
 
         return $this->runtimeDir;
@@ -394,7 +612,7 @@ public function getHistoryFile()
 
         if (!empty($files)) {
             if ($this->warnOnMultipleConfigs && \count($files) > 1) {
-                $msg = \sprintf('Multiple history files found: %s. Using %s', \implode($files, ', '), $files[0]);
+                $msg = \sprintf('Multiple history files found: %s. Using %s', \implode(', ', $files), $files[0]);
                 \trigger_error($msg, E_USER_NOTICE);
             }
 
@@ -516,9 +734,9 @@ public function useReadline()
     /**
      * Set the Psy Shell readline service.
      *
-     * @param Readline $readline
+     * @param Readline\Readline $readline
      */
-    public function setReadline(Readline $readline)
+    public function setReadline(Readline\Readline $readline)
     {
         $this->readline = $readline;
     }
@@ -532,7 +750,7 @@ public function setReadline(Readline $readline)
      *  * Libedit
      *  * A transient array-based readline emulation.
      *
-     * @return Readline
+     * @return Readline\Readline
      */
     public function getReadline()
     {
@@ -558,16 +776,16 @@ public function getReadline()
     private function getReadlineClass()
     {
         if ($this->useReadline()) {
-            if (GNUReadline::isSupported()) {
-                return 'Psy\Readline\GNUReadline';
-            } elseif (Libedit::isSupported()) {
-                return 'Psy\Readline\Libedit';
-            } elseif (HoaConsole::isSupported()) {
-                return 'Psy\Readline\HoaConsole';
+            if (Readline\GNUReadline::isSupported()) {
+                return Readline\GNUReadline::class;
+            } elseif (Readline\Libedit::isSupported()) {
+                return Readline\Libedit::class;
+            } elseif (Readline\HoaConsole::isSupported()) {
+                return Readline\HoaConsole::class;
             }
         }
 
-        return 'Psy\Readline\Transient';
+        return Readline\Transient::class;
     }
 
     /**
@@ -600,7 +818,7 @@ public function setUseBracketedPaste($useBracketedPaste)
     public function useBracketedPaste()
     {
         // For now, only the GNU readline implementation supports bracketed paste.
-        $supported = ($this->getReadlineClass() === 'Psy\Readline\GNUReadline');
+        $supported = ($this->getReadlineClass() === Readline\GNUReadline::class);
 
         return $supported && $this->useBracketedPaste;
 
@@ -641,6 +859,29 @@ public function usePcntl()
         return isset($this->usePcntl) ? ($this->hasPcntl && $this->usePcntl) : $this->hasPcntl;
     }
 
+    /**
+     * Check whether to use raw output.
+     *
+     * This is set by the --raw-output (-r) flag, and really only makes sense
+     * when non-interactive, e.g. executing stdin.
+     *
+     * @return bool true if raw output is enabled
+     */
+    public function rawOutput()
+    {
+        return $this->rawOutput;
+    }
+
+    /**
+     * Enable or disable raw output.
+     *
+     * @param bool $rawOutput
+     */
+    public function setRawOutput($rawOutput)
+    {
+        $this->rawOutput = (bool) $rawOutput;
+    }
+
     /**
      * Enable or disable strict requirement of semicolons.
      *
@@ -714,8 +955,7 @@ public function setErrorLoggingLevel($errorLoggingLevel)
      * Get the current error logging level.
      *
      * By default, PsySH will automatically log all errors, regardless of the
-     * current `error_reporting` level. Additionally, if the `error_reporting`
-     * level warrants, an ErrorException will be thrown.
+     * current `error_reporting` level.
      *
      * Set `errorLoggingLevel` to 0 to prevent logging non-thrown errors. Set it
      * to any valid error_reporting value to log only errors which match that
@@ -807,14 +1047,17 @@ public function getTabCompletion()
     public function setOutput(ShellOutput $output)
     {
         $this->output = $output;
+        $this->pipedOutput = null; // Reset cached pipe info
+        $this->applyFormatterStyles();
     }
 
     /**
      * Get a Shell Output service instance.
      *
      * If none has been explicitly provided, this will create a new instance
-     * with VERBOSITY_NORMAL and the output page supplied by self::getPager
+     * with the configured verbosity and output pager supplied by self::getPager
      *
+     * @see self::verbosity
      * @see self::getPager
      *
      * @return ShellOutput
@@ -822,12 +1065,20 @@ public function setOutput(ShellOutput $output)
     public function getOutput()
     {
         if (!isset($this->output)) {
-            $this->output = new ShellOutput(
-                ShellOutput::VERBOSITY_NORMAL,
-                $this->getOutputDecorated(),
+            $this->setOutput(new ShellOutput(
+                $this->getOutputVerbosity(),
+                null,
                 null,
                 $this->getPager()
-            );
+            ));
+
+            // This is racy because `getOutputDecorated` needs access to the
+            // output stream to figure out if it's piped or not, so create it
+            // first, then update after we have a stream.
+            $decorated = $this->getOutputDecorated();
+            if ($decorated !== null) {
+                $this->output->setDecorated($decorated);
+            }
         }
 
         return $this->output;
@@ -836,16 +1087,34 @@ public function getOutput()
     /**
      * Get the decoration (i.e. color) setting for the Shell Output service.
      *
-     * @return null|bool 3-state boolean corresponding to the current color mode
+     * @return bool|null 3-state boolean corresponding to the current color mode
      */
     public function getOutputDecorated()
     {
-        if ($this->colorMode() === self::COLOR_MODE_AUTO) {
-            return;
-        } elseif ($this->colorMode() === self::COLOR_MODE_FORCED) {
-            return true;
-        } elseif ($this->colorMode() === self::COLOR_MODE_DISABLED) {
-            return false;
+        switch ($this->colorMode()) {
+            case self::COLOR_MODE_AUTO:
+                return $this->outputIsPiped() ? false : null;
+            case self::COLOR_MODE_FORCED:
+                return true;
+            case self::COLOR_MODE_DISABLED:
+                return false;
+        }
+    }
+
+    /**
+     * Get the interactive setting for shell input.
+     *
+     * @return bool
+     */
+    public function getInputInteractive()
+    {
+        switch ($this->interactiveMode()) {
+            case self::INTERACTIVE_MODE_AUTO:
+                return !$this->inputIsPiped();
+            case self::INTERACTIVE_MODE_FORCED:
+                return true;
+            case self::INTERACTIVE_MODE_DISABLED:
+                return false;
         }
     }
 
@@ -1034,7 +1303,7 @@ public function getManualDbFile()
         $files = ConfigPaths::getDataFiles(['php_manual.sqlite'], $this->dataDir);
         if (!empty($files)) {
             if ($this->warnOnMultipleConfigs && \count($files) > 1) {
-                $msg = \sprintf('Multiple manual database files found: %s. Using %s', \implode($files, ', '), $files[0]);
+                $msg = \sprintf('Multiple manual database files found: %s. Using %s', \implode(', ', $files), $files[0]);
                 \trigger_error($msg, E_USER_NOTICE);
             }
 
@@ -1133,11 +1402,12 @@ public function setColorMode($colorMode)
             self::COLOR_MODE_DISABLED,
         ];
 
-        if (\in_array($colorMode, $validColorModes)) {
-            $this->colorMode = $colorMode;
-        } else {
+        if (!\in_array($colorMode, $validColorModes)) {
+            // @todo Fix capitalization for 0.11.0
             throw new \InvalidArgumentException('invalid color mode: ' . $colorMode);
         }
+
+        $this->colorMode = $colorMode;
     }
 
     /**
@@ -1150,6 +1420,36 @@ public function colorMode()
         return $this->colorMode;
     }
 
+    /**
+     * Set the shell's interactive mode.
+     *
+     * @param string $interactiveMode
+     */
+    public function setInteractiveMode($interactiveMode)
+    {
+        $validInteractiveModes = [
+            self::INTERACTIVE_MODE_AUTO,
+            self::INTERACTIVE_MODE_FORCED,
+            self::INTERACTIVE_MODE_DISABLED,
+        ];
+
+        if (!\in_array($interactiveMode, $validInteractiveModes)) {
+            throw new \InvalidArgumentException('Invalid interactive mode: ' . $interactiveMode);
+        }
+
+        $this->interactiveMode = $interactiveMode;
+    }
+
+    /**
+     * Get the current interactive mode.
+     *
+     * @return string
+     */
+    public function interactiveMode()
+    {
+        return $this->interactiveMode;
+    }
+
     /**
      * Set an update checker service instance.
      *
@@ -1212,7 +1512,7 @@ public function getUpdateCheck()
     /**
      * Set the update check interval.
      *
-     * @throws \InvalidArgumentDescription if the update check interval is unknown
+     * @throws \InvalidArgumentException if the update check interval is unknown
      *
      * @param string $interval
      */
@@ -1227,6 +1527,7 @@ public function setUpdateCheck($interval)
         ];
 
         if (!\in_array($interval, $validIntervals)) {
+            // @todo Fix capitalization for 0.11.0
             throw new \InvalidArgumentException('invalid update check interval: ' . $interval);
         }
 
@@ -1304,4 +1605,157 @@ public function setForceArrayIndexes($forceArrayIndexes)
     {
         $this->forceArrayIndexes = $forceArrayIndexes;
     }
+
+    /**
+     * Set the shell output formatter styles.
+     *
+     * Accepts a map from style name to [fg, bg, options], for example:
+     *
+     *     [
+     *         'error' => ['white', 'red', ['bold']],
+     *         'warning' => ['black', 'yellow'],
+     *     ]
+     *
+     * Foreground, background or options can be null, or even omitted entirely.
+     *
+     * @see ShellOutput::initFormatters
+     *
+     * @param array $formatterStyles
+     */
+    public function setFormatterStyles(array $formatterStyles)
+    {
+        foreach ($formatterStyles as $name => $style) {
+            list($fg, $bg, $opts) = \array_pad($style, 3, null);
+            $this->formatterStyles[$name] = new OutputFormatterStyle($fg ?: null, $bg ?: null, $opts ?: []);
+        }
+
+        if (isset($this->output)) {
+            $this->applyFormatterStyles();
+        }
+    }
+
+    /**
+     * Internal method for applying output formatter style customization.
+     *
+     * This is called on initialization of the shell output, and again if the
+     * formatter styles config is updated.
+     */
+    private function applyFormatterStyles()
+    {
+        $formatter = $this->output->getFormatter();
+        foreach ($this->formatterStyles as $name => $style) {
+            $formatter->setStyle($name, $style);
+        }
+    }
+
+    /**
+     * Get the configured output verbosity.
+     *
+     * @return string
+     */
+    public function verbosity()
+    {
+        return $this->verbosity;
+    }
+
+    /**
+     * Set the shell output verbosity.
+     *
+     * Accepts OutputInterface verbosity constants.
+     *
+     * @param string $verbosity
+     */
+    public function setVerbosity($verbosity)
+    {
+        $validVerbosityLevels = [
+            self::VERBOSITY_QUIET,
+            self::VERBOSITY_NORMAL,
+            self::VERBOSITY_VERBOSE,
+            self::VERBOSITY_VERY_VERBOSE,
+            self::VERBOSITY_DEBUG,
+        ];
+
+        if (!\in_array($verbosity, $validVerbosityLevels)) {
+            throw new \InvalidArgumentException('Invalid verbosity level: ' . $verbosity);
+        }
+
+        $this->verbosity = $verbosity;
+
+        if (isset($this->output)) {
+            $this->output->setVerbosity($this->getOutputVerbosity());
+        }
+    }
+
+    /**
+     * Map the verbosity configuration to OutputInterface verbosity constants.
+     *
+     * @return int OutputInterface verbosity level
+     */
+    public function getOutputVerbosity()
+    {
+        switch ($this->verbosity()) {
+            case self::VERBOSITY_QUIET:
+                return OutputInterface::VERBOSITY_QUIET;
+            case self::VERBOSITY_VERBOSE:
+                return OutputInterface::VERBOSITY_VERBOSE;
+            case self::VERBOSITY_VERY_VERBOSE:
+                return OutputInterface::VERBOSITY_VERY_VERBOSE;
+            case self::VERBOSITY_DEBUG:
+                return OutputInterface::VERBOSITY_DEBUG;
+            case self::VERBOSITY_NORMAL:
+            default:
+                return OutputInterface::VERBOSITY_NORMAL;
+        }
+    }
+
+    /**
+     * Guess whether stdin is piped.
+     *
+     * This is mostly useful for deciding whether to use non-interactive mode.
+     *
+     * @return bool
+     */
+    public function inputIsPiped()
+    {
+        if ($this->pipedInput === null) {
+            $this->pipedInput = \defined('STDIN') && static::looksLikeAPipe(\STDIN);
+        }
+
+        return $this->pipedInput;
+    }
+
+    /**
+     * Guess whether shell output is piped.
+     *
+     * This is mostly useful for deciding whether to use non-decorated output.
+     *
+     * @return bool
+     */
+    public function outputIsPiped()
+    {
+        if ($this->pipedOutput === null) {
+            $this->pipedOutput = static::looksLikeAPipe($this->getOutput()->getStream());
+        }
+
+        return $this->pipedOutput;
+    }
+
+    /**
+     * Guess whether an input or output stream is piped.
+     *
+     * @param resource|int $stream
+     *
+     * @return bool
+     */
+    private static function looksLikeAPipe($stream)
+    {
+        if (\function_exists('posix_isatty')) {
+            return !\posix_isatty($stream);
+        }
+
+        $stat = \fstat($stream);
+        $mode = $stat['mode'] & 0170000;
+
+        return $mode === 0010000 || $mode === 0040000 || $mode === 0100000 || $mode === 0120000;
+    }
 }
diff --git a/vendor/psy/psysh/src/ConsoleColorFactory.php b/vendor/psy/psysh/src/ConsoleColorFactory.php
index 76ad3b5123..9cfbf40e37 100644
--- a/vendor/psy/psysh/src/ConsoleColorFactory.php
+++ b/vendor/psy/psysh/src/ConsoleColorFactory.php
@@ -3,7 +3,7 @@
 /*
  * This file is part of Psy Shell.
  *
- * (c) 2012-2018 Justin Hileman
+ * (c) 2012-2020 Justin Hileman
  *
  * For the full copyright and license information, please view the LICENSE
  * file that was distributed with this source code.
@@ -12,21 +12,18 @@
 namespace Psy;
 
 use JakubOnderka\PhpConsoleColor\ConsoleColor;
-use JakubOnderka\PhpConsoleHighlighter\Highlighter;
 
 /**
- * Builds `ConsoleColor` instances configured according to the given color mode.
+ * @deprecated Nothing should use this anymore
  */
 class ConsoleColorFactory
 {
-    private $colorMode;
-
     /**
      * @param string $colorMode
      */
     public function __construct($colorMode)
     {
-        $this->colorMode = $colorMode;
+        // Nothing to see here
     }
 
     /**
@@ -37,46 +34,6 @@ public function __construct($colorMode)
      */
     public function getConsoleColor()
     {
-        if ($this->colorMode === Configuration::COLOR_MODE_AUTO) {
-            return $this->getDefaultConsoleColor();
-        } elseif ($this->colorMode === Configuration::COLOR_MODE_FORCED) {
-            return $this->getForcedConsoleColor();
-        } elseif ($this->colorMode === Configuration::COLOR_MODE_DISABLED) {
-            return $this->getDisabledConsoleColor();
-        }
-    }
-
-    private function getDefaultConsoleColor()
-    {
-        $color = new ConsoleColor();
-        $color->addTheme(Highlighter::LINE_NUMBER, ['blue']);
-        $color->addTheme(Highlighter::TOKEN_KEYWORD, ['yellow']);
-        $color->addTheme(Highlighter::TOKEN_STRING, ['green']);
-        $color->addTheme(Highlighter::TOKEN_COMMENT, ['dark_gray']);
-
-        return $color;
-    }
-
-    private function getForcedConsoleColor()
-    {
-        $color = $this->getDefaultConsoleColor();
-        $color->setForceStyle(true);
-
-        return $color;
-    }
-
-    private function getDisabledConsoleColor()
-    {
-        $color = new ConsoleColor();
-
-        $color->addTheme(Highlighter::TOKEN_STRING, ['none']);
-        $color->addTheme(Highlighter::TOKEN_COMMENT, ['none']);
-        $color->addTheme(Highlighter::TOKEN_KEYWORD, ['none']);
-        $color->addTheme(Highlighter::TOKEN_DEFAULT, ['none']);
-        $color->addTheme(Highlighter::TOKEN_HTML, ['none']);
-        $color->addTheme(Highlighter::ACTUAL_LINE_MARK, ['none']);
-        $color->addTheme(Highlighter::LINE_NUMBER, ['none']);
-
-        return $color;
+        return new ConsoleColor(); // /shrug
     }
 }
diff --git a/vendor/psy/psysh/src/Context.php b/vendor/psy/psysh/src/Context.php
index 104dc8ffa6..661ff0bc09 100644
--- a/vendor/psy/psysh/src/Context.php
+++ b/vendor/psy/psysh/src/Context.php
@@ -3,7 +3,7 @@
 /*
  * This file is part of Psy Shell.
  *
- * (c) 2012-2018 Justin Hileman
+ * (c) 2012-2020 Justin Hileman
  *
  * For the full copyright and license information, please view the LICENSE
  * file that was distributed with this source code.
@@ -38,7 +38,7 @@ class Context
     /**
      * Get a context variable.
      *
-     * @throws InvalidArgumentException If the variable is not found in the current context
+     * @throws \InvalidArgumentException If the variable is not found in the current context
      *
      * @param string $name
      *
@@ -182,7 +182,7 @@ public function setLastException(\Exception $e)
      *
      * @throws \InvalidArgumentException If no Exception has been caught
      *
-     * @return null|\Exception
+     * @return \Exception|null
      */
     public function getLastException()
     {
@@ -208,7 +208,7 @@ public function setLastStdout($lastStdout)
      *
      * @throws \InvalidArgumentException If no output has happened yet
      *
-     * @return null|string
+     * @return string|null
      */
     public function getLastStdout()
     {
diff --git a/vendor/psy/psysh/src/ContextAware.php b/vendor/psy/psysh/src/ContextAware.php
index 748f13aa3e..121d4db18d 100644
--- a/vendor/psy/psysh/src/ContextAware.php
+++ b/vendor/psy/psysh/src/ContextAware.php
@@ -3,7 +3,7 @@
 /*
  * This file is part of Psy Shell.
  *
- * (c) 2012-2018 Justin Hileman
+ * (c) 2012-2020 Justin Hileman
  *
  * For the full copyright and license information, please view the LICENSE
  * file that was distributed with this source code.
diff --git a/vendor/psy/psysh/src/Exception/BreakException.php b/vendor/psy/psysh/src/Exception/BreakException.php
index 2200e78dc9..6efc7acb77 100644
--- a/vendor/psy/psysh/src/Exception/BreakException.php
+++ b/vendor/psy/psysh/src/Exception/BreakException.php
@@ -3,7 +3,7 @@
 /*
  * This file is part of Psy Shell.
  *
- * (c) 2012-2018 Justin Hileman
+ * (c) 2012-2020 Justin Hileman
  *
  * For the full copyright and license information, please view the LICENSE
  * file that was distributed with this source code.
diff --git a/vendor/psy/psysh/src/Exception/DeprecatedException.php b/vendor/psy/psysh/src/Exception/DeprecatedException.php
index 8ac0104b9f..d06608ebb3 100644
--- a/vendor/psy/psysh/src/Exception/DeprecatedException.php
+++ b/vendor/psy/psysh/src/Exception/DeprecatedException.php
@@ -3,7 +3,7 @@
 /*
  * This file is part of Psy Shell.
  *
- * (c) 2012-2018 Justin Hileman
+ * (c) 2012-2020 Justin Hileman
  *
  * For the full copyright and license information, please view the LICENSE
  * file that was distributed with this source code.
diff --git a/vendor/psy/psysh/src/Exception/ErrorException.php b/vendor/psy/psysh/src/Exception/ErrorException.php
index 822fa92758..ae7bd03f1e 100644
--- a/vendor/psy/psysh/src/Exception/ErrorException.php
+++ b/vendor/psy/psysh/src/Exception/ErrorException.php
@@ -3,7 +3,7 @@
 /*
  * This file is part of Psy Shell.
  *
- * (c) 2012-2018 Justin Hileman
+ * (c) 2012-2020 Justin Hileman
  *
  * For the full copyright and license information, please view the LICENSE
  * file that was distributed with this source code.
@@ -21,12 +21,12 @@ class ErrorException extends \ErrorException implements Exception
     /**
      * Construct a Psy ErrorException.
      *
-     * @param string    $message  (default: "")
-     * @param int       $code     (default: 0)
-     * @param int       $severity (default: 1)
-     * @param string    $filename (default: null)
-     * @param int       $lineno   (default: null)
-     * @param Exception $previous (default: null)
+     * @param string         $message  (default: "")
+     * @param int            $code     (default: 0)
+     * @param int            $severity (default: 1)
+     * @param string|null    $filename (default: null)
+     * @param int|null       $lineno   (default: null)
+     * @param Exception|null $previous (default: null)
      */
     public function __construct($message = '', $code = 0, $severity = 1, $filename = null, $lineno = null, $previous = null)
     {
@@ -86,7 +86,7 @@ public function getRawMessage()
      *
      * This allows us to:
      *
-     *     set_error_handler(array('Psy\Exception\ErrorException', 'throwException'));
+     *     set_error_handler([ErrorException::class, 'throwException']);
      *
      * @throws ErrorException
      *
diff --git a/vendor/psy/psysh/src/Exception/Exception.php b/vendor/psy/psysh/src/Exception/Exception.php
index de68954793..4b02d1326c 100644
--- a/vendor/psy/psysh/src/Exception/Exception.php
+++ b/vendor/psy/psysh/src/Exception/Exception.php
@@ -3,7 +3,7 @@
 /*
  * This file is part of Psy Shell.
  *
- * (c) 2012-2018 Justin Hileman
+ * (c) 2012-2020 Justin Hileman
  *
  * For the full copyright and license information, please view the LICENSE
  * file that was distributed with this source code.
diff --git a/vendor/psy/psysh/src/Exception/FatalErrorException.php b/vendor/psy/psysh/src/Exception/FatalErrorException.php
index 48a4e2b81b..6642264e2e 100644
--- a/vendor/psy/psysh/src/Exception/FatalErrorException.php
+++ b/vendor/psy/psysh/src/Exception/FatalErrorException.php
@@ -3,7 +3,7 @@
 /*
  * This file is part of Psy Shell.
  *
- * (c) 2012-2018 Justin Hileman
+ * (c) 2012-2020 Justin Hileman
  *
  * For the full copyright and license information, please view the LICENSE
  * file that was distributed with this source code.
@@ -21,12 +21,12 @@ class FatalErrorException extends \ErrorException implements Exception
     /**
      * Create a fatal error.
      *
-     * @param string     $message  (default: "")
-     * @param int        $code     (default: 0)
-     * @param int        $severity (default: 1)
-     * @param string     $filename (default: null)
-     * @param int        $lineno   (default: null)
-     * @param \Exception $previous (default: null)
+     * @param string          $message  (default: "")
+     * @param int             $code     (default: 0)
+     * @param int             $severity (default: 1)
+     * @param string|null     $filename (default: null)
+     * @param int|null        $lineno   (default: null)
+     * @param \Exception|null $previous (default: null)
      */
     public function __construct($message = '', $code = 0, $severity = 1, $filename = null, $lineno = null, $previous = null)
     {
diff --git a/vendor/psy/psysh/src/Exception/ParseErrorException.php b/vendor/psy/psysh/src/Exception/ParseErrorException.php
index cb6380e6b9..cfc5f70ca1 100644
--- a/vendor/psy/psysh/src/Exception/ParseErrorException.php
+++ b/vendor/psy/psysh/src/Exception/ParseErrorException.php
@@ -3,7 +3,7 @@
 /*
  * This file is part of Psy Shell.
  *
- * (c) 2012-2018 Justin Hileman
+ * (c) 2012-2020 Justin Hileman
  *
  * For the full copyright and license information, please view the LICENSE
  * file that was distributed with this source code.
diff --git a/vendor/psy/psysh/src/Exception/RuntimeException.php b/vendor/psy/psysh/src/Exception/RuntimeException.php
index 09e68483e5..31890517e2 100644
--- a/vendor/psy/psysh/src/Exception/RuntimeException.php
+++ b/vendor/psy/psysh/src/Exception/RuntimeException.php
@@ -3,7 +3,7 @@
 /*
  * This file is part of Psy Shell.
  *
- * (c) 2012-2018 Justin Hileman
+ * (c) 2012-2020 Justin Hileman
  *
  * For the full copyright and license information, please view the LICENSE
  * file that was distributed with this source code.
@@ -21,9 +21,9 @@ class RuntimeException extends \RuntimeException implements Exception
     /**
      * Make this bad boy.
      *
-     * @param string     $message  (default: "")
-     * @param int        $code     (default: 0)
-     * @param \Exception $previous (default: null)
+     * @param string          $message  (default: "")
+     * @param int             $code     (default: 0)
+     * @param \Exception|null $previous (default: null)
      */
     public function __construct($message = '', $code = 0, \Exception $previous = null)
     {
diff --git a/vendor/psy/psysh/src/Exception/ThrowUpException.php b/vendor/psy/psysh/src/Exception/ThrowUpException.php
index b0ca490a77..692c4a3c67 100644
--- a/vendor/psy/psysh/src/Exception/ThrowUpException.php
+++ b/vendor/psy/psysh/src/Exception/ThrowUpException.php
@@ -3,7 +3,7 @@
 /*
  * This file is part of Psy Shell.
  *
- * (c) 2012-2018 Justin Hileman
+ * (c) 2012-2020 Justin Hileman
  *
  * For the full copyright and license information, please view the LICENSE
  * file that was distributed with this source code.
diff --git a/vendor/psy/psysh/src/Exception/TypeErrorException.php b/vendor/psy/psysh/src/Exception/TypeErrorException.php
index b6894983f6..40dccf47e5 100644
--- a/vendor/psy/psysh/src/Exception/TypeErrorException.php
+++ b/vendor/psy/psysh/src/Exception/TypeErrorException.php
@@ -3,7 +3,7 @@
 /*
  * This file is part of Psy Shell.
  *
- * (c) 2012-2018 Justin Hileman
+ * (c) 2012-2020 Justin Hileman
  *
  * For the full copyright and license information, please view the LICENSE
  * file that was distributed with this source code.
diff --git a/vendor/psy/psysh/src/Exception/UnexpectedTargetException.php b/vendor/psy/psysh/src/Exception/UnexpectedTargetException.php
new file mode 100644
index 0000000000..fd23305086
--- /dev/null
+++ b/vendor/psy/psysh/src/Exception/UnexpectedTargetException.php
@@ -0,0 +1,37 @@
+<?php
+
+/*
+ * This file is part of Psy Shell.
+ *
+ * (c) 2012-2020 Justin Hileman
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Psy\Exception;
+
+class UnexpectedTargetException extends RuntimeException
+{
+    private $target;
+
+    /**
+     * @param mixed           $target
+     * @param string          $message  (default: "")
+     * @param int             $code     (default: 0)
+     * @param \Exception|null $previous (default: null)
+     */
+    public function __construct($target, $message = '', $code = 0, \Exception $previous = null)
+    {
+        $this->target = $target;
+        parent::__construct($message, $code, $previous);
+    }
+
+    /**
+     * @return mixed
+     */
+    public function getTarget()
+    {
+        return $this->target;
+    }
+}
diff --git a/vendor/psy/psysh/src/ExecutionClosure.php b/vendor/psy/psysh/src/ExecutionClosure.php
index 5c7cd25ac7..bebec13492 100644
--- a/vendor/psy/psysh/src/ExecutionClosure.php
+++ b/vendor/psy/psysh/src/ExecutionClosure.php
@@ -3,7 +3,7 @@
 /*
  * This file is part of Psy Shell.
  *
- * (c) 2012-2018 Justin Hileman
+ * (c) 2012-2020 Justin Hileman
  *
  * For the full copyright and license information, please view the LICENSE
  * file that was distributed with this source code.
@@ -37,10 +37,9 @@ public function __construct(Shell $__psysh__)
                 \set_error_handler([$__psysh__, 'handleError']);
 
                 // Evaluate the current code buffer
-                $_ = eval($__psysh__->onExecute($__psysh__->flushCode() ?: ExecutionClosure::NOOP_INPUT));
+                $_ = eval($__psysh__->onExecute($__psysh__->flushCode() ?: self::NOOP_INPUT));
             } catch (\Throwable $_e) {
                 // Clean up on our way out.
-                \restore_error_handler();
                 if (\ob_get_level() > 0) {
                     \ob_end_clean();
                 }
@@ -48,17 +47,16 @@ public function __construct(Shell $__psysh__)
                 throw $_e;
             } catch (\Exception $_e) {
                 // Clean up on our way out.
-                \restore_error_handler();
                 if (\ob_get_level() > 0) {
                     \ob_end_clean();
                 }
 
                 throw $_e;
+            } finally {
+                // Won't be needing this anymore
+                \restore_error_handler();
             }
 
-            // Won't be needing this anymore
-            \restore_error_handler();
-
             // Flush stdout (write to shell output, plus save to magic variable)
             \ob_end_flush();
 
@@ -72,21 +70,18 @@ public function __construct(Shell $__psysh__)
     /**
      * Set the closure instance.
      *
-     * @param Shell    $psysh
+     * @param Shell    $shell
      * @param \Closure $closure
      */
     protected function setClosure(Shell $shell, \Closure $closure)
     {
-        if (self::shouldBindClosure()) {
-            $that = $shell->getBoundObject();
-            if (\is_object($that)) {
-                $closure = $closure->bindTo($that, \get_class($that));
-            } else {
-                $closure = $closure->bindTo(null, $shell->getBoundClass());
-            }
-        }
+        $that = $shell->getBoundObject();
 
-        $this->closure = $closure;
+        if (\is_object($that)) {
+            $this->closure = $closure->bindTo($that, \get_class($that));
+        } else {
+            $this->closure = $closure->bindTo(null, $shell->getBoundClass());
+        }
     }
 
     /**
@@ -100,20 +95,4 @@ public function execute()
 
         return $closure();
     }
-
-    /**
-     * Decide whether to bind the execution closure.
-     *
-     * @return bool
-     */
-    protected static function shouldBindClosure()
-    {
-        // skip binding on HHVM < 3.5.0
-        // see https://github.com/facebook/hhvm/issues/1203
-        if (\defined('HHVM_VERSION')) {
-            return \version_compare(HHVM_VERSION, '3.5.0', '>=');
-        }
-
-        return true;
-    }
 }
diff --git a/vendor/psy/psysh/src/ExecutionLoop.php b/vendor/psy/psysh/src/ExecutionLoop.php
deleted file mode 100644
index 2e4307cb77..0000000000
--- a/vendor/psy/psysh/src/ExecutionLoop.php
+++ /dev/null
@@ -1,67 +0,0 @@
-<?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;
-
-use Psy\Exception\ErrorException;
-
-/**
- * The Psy Shell execution loop.
- */
-class ExecutionLoop
-{
-    /**
-     * Run the execution loop.
-     *
-     * @throws ThrowUpException if thrown by the `throw-up` command
-     *
-     * @param Shell $shell
-     */
-    public function run(Shell $shell)
-    {
-        $this->loadIncludes($shell);
-
-        $closure = new ExecutionLoopClosure($shell);
-        $closure->execute();
-    }
-
-    /**
-     * Load user-defined includes.
-     *
-     * @param Shell $shell
-     */
-    protected function loadIncludes(Shell $shell)
-    {
-        // Load user-defined includes
-        $load = function (Shell $__psysh__) {
-            \set_error_handler([$__psysh__, 'handleError']);
-            foreach ($__psysh__->getIncludes() as $__psysh_include__) {
-                try {
-                    include $__psysh_include__;
-                } catch (\Error $_e) {
-                    $__psysh__->writeException(ErrorException::fromError($_e));
-                } catch (\Exception $_e) {
-                    $__psysh__->writeException($_e);
-                }
-            }
-            \restore_error_handler();
-            unset($__psysh_include__);
-
-            // Override any new local variables with pre-defined scope variables
-            \extract($__psysh__->getScopeVariables(false));
-
-            // ... then add the whole mess of variables back.
-            $__psysh__->setScopeVariables(\get_defined_vars());
-        };
-
-        $load($shell);
-    }
-}
diff --git a/vendor/psy/psysh/src/ExecutionLoop/AbstractListener.php b/vendor/psy/psysh/src/ExecutionLoop/AbstractListener.php
index 3617fa2438..0bfa3fdf5d 100644
--- a/vendor/psy/psysh/src/ExecutionLoop/AbstractListener.php
+++ b/vendor/psy/psysh/src/ExecutionLoop/AbstractListener.php
@@ -3,7 +3,7 @@
 /*
  * This file is part of Psy Shell.
  *
- * (c) 2012-2018 Justin Hileman
+ * (c) 2012-2020 Justin Hileman
  *
  * For the full copyright and license information, please view the LICENSE
  * file that was distributed with this source code.
diff --git a/vendor/psy/psysh/src/ExecutionLoop/Listener.php b/vendor/psy/psysh/src/ExecutionLoop/Listener.php
index 3886a208bc..5bc03c1968 100644
--- a/vendor/psy/psysh/src/ExecutionLoop/Listener.php
+++ b/vendor/psy/psysh/src/ExecutionLoop/Listener.php
@@ -3,7 +3,7 @@
 /*
  * This file is part of Psy Shell.
  *
- * (c) 2012-2018 Justin Hileman
+ * (c) 2012-2020 Justin Hileman
  *
  * For the full copyright and license information, please view the LICENSE
  * file that was distributed with this source code.
diff --git a/vendor/psy/psysh/src/ExecutionLoop/ProcessForker.php b/vendor/psy/psysh/src/ExecutionLoop/ProcessForker.php
index 4704795942..5f7fd96962 100644
--- a/vendor/psy/psysh/src/ExecutionLoop/ProcessForker.php
+++ b/vendor/psy/psysh/src/ExecutionLoop/ProcessForker.php
@@ -3,7 +3,7 @@
 /*
  * This file is part of Psy Shell.
  *
- * (c) 2012-2018 Justin Hileman
+ * (c) 2012-2020 Justin Hileman
  *
  * For the full copyright and license information, please view the LICENSE
  * file that was distributed with this source code.
@@ -26,6 +26,19 @@ class ProcessForker extends AbstractListener
     private $savegame;
     private $up;
 
+    private static $pcntlFunctions = [
+        'pcntl_fork',
+        'pcntl_signal_dispatch',
+        'pcntl_signal',
+        'pcntl_waitpid',
+        'pcntl_wexitstatus',
+    ];
+
+    private static $posixFunctions = [
+        'posix_getpid',
+        'posix_kill',
+    ];
+
     /**
      * Process forker is supported if pcntl and posix extensions are available.
      *
@@ -33,7 +46,56 @@ class ProcessForker extends AbstractListener
      */
     public static function isSupported()
     {
-        return \function_exists('pcntl_signal') && \function_exists('posix_getpid');
+        return self::isPcntlSupported() && !self::disabledPcntlFunctions() && self::isPosixSupported() && !self::disabledPosixFunctions();
+    }
+
+    /**
+     * Verify that all required pcntl functions are, in fact, available.
+     */
+    public static function isPcntlSupported()
+    {
+        foreach (self::$pcntlFunctions as $func) {
+            if (!\function_exists($func)) {
+                return false;
+            }
+        }
+
+        return true;
+    }
+
+    /**
+     * Check whether required pcntl functions are disabled.
+     */
+    public static function disabledPcntlFunctions()
+    {
+        return self::checkDisabledFunctions(self::$pcntlFunctions);
+    }
+
+    /**
+     * Verify that all required posix functions are, in fact, available.
+     */
+    public static function isPosixSupported()
+    {
+        foreach (self::$posixFunctions as $func) {
+            if (!\function_exists($func)) {
+                return false;
+            }
+        }
+
+        return true;
+    }
+
+    /**
+     * Check whether required posix functions are disabled.
+     */
+    public static function disabledPosixFunctions()
+    {
+        return self::checkDisabledFunctions(self::$posixFunctions);
+    }
+
+    private static function checkDisabledFunctions(array $functions)
+    {
+        return \array_values(\array_intersect($functions, \array_map('strtolower', \array_map('trim', \explode(',', \ini_get('disable_functions'))))));
     }
 
     /**
@@ -95,8 +157,11 @@ public function beforeRun(Shell $shell)
         }
 
         // This is the child process. It's going to do all the work.
-        if (\function_exists('setproctitle')) {
-            setproctitle('psysh (loop)');
+        if (!@\cli_set_process_title('psysh (loop)')) {
+            // Fall back to `setproctitle` if that wasn't succesful.
+            if (\function_exists('setproctitle')) {
+                @\setproctitle('psysh (loop)');
+            }
         }
 
         // We won't be needing this one.
diff --git a/vendor/psy/psysh/src/ExecutionLoop/RunkitReloader.php b/vendor/psy/psysh/src/ExecutionLoop/RunkitReloader.php
index d80480b0af..de10aa0412 100644
--- a/vendor/psy/psysh/src/ExecutionLoop/RunkitReloader.php
+++ b/vendor/psy/psysh/src/ExecutionLoop/RunkitReloader.php
@@ -3,7 +3,7 @@
 /*
  * This file is part of Psy Shell.
  *
- * (c) 2012-2018 Justin Hileman
+ * (c) 2012-2020 Justin Hileman
  *
  * For the full copyright and license information, please view the LICENSE
  * file that was distributed with this source code.
diff --git a/vendor/psy/psysh/src/ExecutionLoopClosure.php b/vendor/psy/psysh/src/ExecutionLoopClosure.php
index 5b8238cf63..0ee316fb70 100644
--- a/vendor/psy/psysh/src/ExecutionLoopClosure.php
+++ b/vendor/psy/psysh/src/ExecutionLoopClosure.php
@@ -3,7 +3,7 @@
 /*
  * This file is part of Psy Shell.
  *
- * (c) 2012-2018 Justin Hileman
+ * (c) 2012-2020 Justin Hileman
  *
  * For the full copyright and license information, please view the LICENSE
  * file that was distributed with this source code.
@@ -55,7 +55,6 @@ public function __construct(Shell $__psysh__)
                         $_ = eval($__psysh__->onExecute($__psysh__->flushCode() ?: ExecutionClosure::NOOP_INPUT));
                     } catch (\Throwable $_e) {
                         // Clean up on our way out.
-                        \restore_error_handler();
                         if (\ob_get_level() > 0) {
                             \ob_end_clean();
                         }
@@ -63,17 +62,16 @@ public function __construct(Shell $__psysh__)
                         throw $_e;
                     } catch (\Exception $_e) {
                         // Clean up on our way out.
-                        \restore_error_handler();
                         if (\ob_get_level() > 0) {
                             \ob_end_clean();
                         }
 
                         throw $_e;
+                    } finally {
+                        // Won't be needing this anymore
+                        \restore_error_handler();
                     }
 
-                    // Won't be needing this anymore
-                    \restore_error_handler();
-
                     // Flush stdout (write to shell output, plus save to magic variable)
                     \ob_end_flush();
 
diff --git a/vendor/psy/psysh/src/Formatter/CodeFormatter.php b/vendor/psy/psysh/src/Formatter/CodeFormatter.php
index 2ac37cc9da..03ddde47c6 100644
--- a/vendor/psy/psysh/src/Formatter/CodeFormatter.php
+++ b/vendor/psy/psysh/src/Formatter/CodeFormatter.php
@@ -3,7 +3,7 @@
 /*
  * This file is part of Psy Shell.
  *
- * (c) 2012-2018 Justin Hileman
+ * (c) 2012-2020 Justin Hileman
  *
  * For the full copyright and license information, please view the LICENSE
  * file that was distributed with this source code.
@@ -11,48 +11,298 @@
 
 namespace Psy\Formatter;
 
-use JakubOnderka\PhpConsoleHighlighter\Highlighter;
-use Psy\Configuration;
-use Psy\ConsoleColorFactory;
 use Psy\Exception\RuntimeException;
+use Symfony\Component\Console\Formatter\OutputFormatter;
 
 /**
  * A pretty-printer for code.
  */
-class CodeFormatter implements Formatter
+class CodeFormatter implements ReflectorFormatter
 {
+    const LINE_MARKER    = '  <urgent>></urgent> ';
+    const NO_LINE_MARKER = '    ';
+
+    const HIGHLIGHT_DEFAULT     = 'default';
+    const HIGHLIGHT_KEYWORD     = 'keyword';
+
+    const HIGHLIGHT_PUBLIC      = 'public';
+    const HIGHLIGHT_PROTECTED   = 'protected';
+    const HIGHLIGHT_PRIVATE     = 'private';
+
+    const HIGHLIGHT_CONST       = 'const';
+    const HIGHLIGHT_NUMBER      = 'number';
+    const HIGHLIGHT_STRING      = 'string';
+    const HIGHLIGHT_COMMENT     = 'comment';
+    const HIGHLIGHT_INLINE_HTML = 'inline_html';
+
+    private static $tokenMap = [
+        // Not highlighted
+        \T_OPEN_TAG           => self::HIGHLIGHT_DEFAULT,
+        \T_OPEN_TAG_WITH_ECHO => self::HIGHLIGHT_DEFAULT,
+        \T_CLOSE_TAG          => self::HIGHLIGHT_DEFAULT,
+        \T_STRING             => self::HIGHLIGHT_DEFAULT,
+        \T_VARIABLE           => self::HIGHLIGHT_DEFAULT,
+        \T_NS_SEPARATOR       => self::HIGHLIGHT_DEFAULT,
+
+        // Visibility
+        \T_PUBLIC    => self::HIGHLIGHT_PUBLIC,
+        \T_PROTECTED => self::HIGHLIGHT_PROTECTED,
+        \T_PRIVATE   => self::HIGHLIGHT_PRIVATE,
+
+        // Constants
+        \T_DIR      => self::HIGHLIGHT_CONST,
+        \T_FILE     => self::HIGHLIGHT_CONST,
+        \T_METHOD_C => self::HIGHLIGHT_CONST,
+        \T_NS_C     => self::HIGHLIGHT_CONST,
+        \T_LINE     => self::HIGHLIGHT_CONST,
+        \T_CLASS_C  => self::HIGHLIGHT_CONST,
+        \T_FUNC_C   => self::HIGHLIGHT_CONST,
+        \T_TRAIT_C  => self::HIGHLIGHT_CONST,
+
+        // Types
+        \T_DNUMBER                  => self::HIGHLIGHT_NUMBER,
+        \T_LNUMBER                  => self::HIGHLIGHT_NUMBER,
+        \T_ENCAPSED_AND_WHITESPACE  => self::HIGHLIGHT_STRING,
+        \T_CONSTANT_ENCAPSED_STRING => self::HIGHLIGHT_STRING,
+
+        // Comments
+        \T_COMMENT     => self::HIGHLIGHT_COMMENT,
+        \T_DOC_COMMENT => self::HIGHLIGHT_COMMENT,
+
+        // @todo something better here?
+        \T_INLINE_HTML => self::HIGHLIGHT_INLINE_HTML,
+    ];
+
     /**
-     * Format the code represented by $reflector.
+     * Format the code represented by $reflector for shell output.
      *
      * @param \Reflector  $reflector
-     * @param null|string $colorMode (default: null)
+     * @param string|null $colorMode (deprecated and ignored)
      *
      * @return string formatted code
      */
     public static function format(\Reflector $reflector, $colorMode = null)
     {
-        if (!self::isReflectable($reflector)) {
-            throw new RuntimeException('Source code unavailable');
+        if (self::isReflectable($reflector)) {
+            if ($code = @\file_get_contents($reflector->getFileName())) {
+                return self::formatCode($code, self::getStartLine($reflector), $reflector->getEndLine());
+            }
+        }
+
+        throw new RuntimeException('Source code unavailable');
+    }
+
+    /**
+     * Format code for shell output.
+     *
+     * Optionally, restrict by $startLine and $endLine line numbers, or pass $markLine to add a line marker.
+     *
+     * @param string   $code
+     * @param int      $startLine
+     * @param int|null $endLine
+     * @param int|null $markLine
+     *
+     * @return string formatted code
+     */
+    public static function formatCode($code, $startLine = 1, $endLine = null, $markLine = null)
+    {
+        $spans = self::tokenizeSpans($code);
+        $lines = self::splitLines($spans, $startLine, $endLine);
+        $lines = self::formatLines($lines);
+        $lines = self::numberLines($lines, $markLine);
+
+        return \implode('', \iterator_to_array($lines));
+    }
+
+    /**
+     * Get the start line for a given Reflector.
+     *
+     * Tries to incorporate doc comments if possible.
+     *
+     * This is typehinted as \Reflector but we've narrowed the input via self::isReflectable already.
+     *
+     * @param \ReflectionClass|\ReflectionFunctionAbstract $reflector
+     *
+     * @return int
+     */
+    private static function getStartLine(\Reflector $reflector)
+    {
+        $startLine = $reflector->getStartLine();
+
+        if ($docComment = $reflector->getDocComment()) {
+            $startLine -= \preg_match_all('/(\r\n?|\n)/', $docComment) + 1;
         }
 
-        $colorMode = $colorMode ?: Configuration::COLOR_MODE_AUTO;
+        return \max($startLine, 1);
+    }
+
+    /**
+     * Split code into highlight spans.
+     *
+     * Tokenize via \token_get_all, then map these tokens to internal highlight types, combining
+     * adjacent spans of the same highlight type.
+     *
+     * @todo consider switching \token_get_all() out for PHP-Parser-based formatting at some point.
+     *
+     * @param string $code
+     *
+     * @return \Generator [$spanType, $spanText] highlight spans
+     */
+    private static function tokenizeSpans($code)
+    {
+        $spanType = null;
+        $buffer   = '';
+
+        foreach (\token_get_all($code) as $token) {
+            $nextType = self::nextHighlightType($token, $spanType);
+            $spanType = $spanType ?: $nextType;
 
-        if ($fileName = $reflector->getFileName()) {
-            if (!\is_file($fileName)) {
-                throw new RuntimeException('Source code unavailable');
+            if ($spanType !== $nextType) {
+                yield [$spanType, $buffer];
+                $spanType = $nextType;
+                $buffer   = '';
             }
 
-            $file  = \file_get_contents($fileName);
-            $start = $reflector->getStartLine();
-            $end   = $reflector->getEndLine() - $start;
+            $buffer .= \is_array($token) ? $token[1] : $token;
+        }
 
-            $factory     = new ConsoleColorFactory($colorMode);
-            $colors      = $factory->getConsoleColor();
-            $highlighter = new Highlighter($colors);
+        if ($spanType !== null && $buffer !== '') {
+            yield [$spanType, $buffer];
+        }
+    }
+
+    /**
+     * Given a token and the current highlight span type, compute the next type.
+     *
+     * @param array|string $token       \token_get_all token
+     * @param string|null  $currentType
+     *
+     * @return string|null
+     */
+    private static function nextHighlightType($token, $currentType)
+    {
+        if ($token === '"') {
+            return self::HIGHLIGHT_STRING;
+        }
+
+        if (\is_array($token)) {
+            if ($token[0] === \T_WHITESPACE) {
+                return $currentType;
+            }
+
+            if (\array_key_exists($token[0], self::$tokenMap)) {
+                return self::$tokenMap[$token[0]];
+            }
+        }
+
+        return self::HIGHLIGHT_KEYWORD;
+    }
+
+    /**
+     * Group highlight spans into an array of lines.
+     *
+     * Optionally, restrict by start and end line numbers.
+     *
+     * @param \Generator $spans     as [$spanType, $spanText] pairs
+     * @param int        $startLine
+     * @param int|null   $endLine
+     *
+     * @return \Generator lines, each an array of [$spanType, $spanText] pairs
+     */
+    private static function splitLines(\Generator $spans, $startLine = 1, $endLine = null)
+    {
+        $lineNum = 1;
+        $buffer  = [];
+
+        foreach ($spans as list($spanType, $spanText)) {
+            foreach (\preg_split('/(\r\n?|\n)/', $spanText) as $index => $spanLine) {
+                if ($index > 0) {
+                    if ($lineNum >= $startLine) {
+                        yield $lineNum => $buffer;
+                    }
+
+                    $lineNum++;
+                    $buffer = [];
+
+                    if ($endLine !== null && $lineNum > $endLine) {
+                        return;
+                    }
+                }
+
+                if ($spanLine !== '') {
+                    $buffer[] = [$spanType, $spanLine];
+                }
+            }
+        }
+
+        if (!empty($buffer)) {
+            yield $lineNum => $buffer;
+        }
+    }
+
+    /**
+     * Format lines of highlight spans for shell output.
+     *
+     * @param \Generator $spanLines lines, each an array of [$spanType, $spanText] pairs
+     *
+     * @return \Generator Formatted lines
+     */
+    private static function formatLines(\Generator $spanLines)
+    {
+        foreach ($spanLines as $lineNum => $spanLine) {
+            $line = '';
+
+            foreach ($spanLine as list($spanType, $spanText)) {
+                if ($spanType === self::HIGHLIGHT_DEFAULT) {
+                    $line .= OutputFormatter::escape($spanText);
+                } else {
+                    $line .= \sprintf('<%s>%s</%s>', $spanType, OutputFormatter::escape($spanText), $spanType);
+                }
+            }
+
+            yield $lineNum => $line . \PHP_EOL;
+        }
+    }
+
+    /**
+     * Prepend line numbers to formatted lines.
+     *
+     * Lines must be in an associative array with the correct keys in order to be numbered properly.
+     *
+     * Optionally, pass $markLine to add a line marker.
+     *
+     * @param \Generator $lines    Formatted lines
+     * @param int|null   $markLine
+     *
+     * @return \Generator Numbered, formatted lines
+     */
+    private static function numberLines(\Generator $lines, $markLine = null)
+    {
+        $lines = \iterator_to_array($lines);
+
+        // Figure out how much space to reserve for line numbers.
+        \end($lines);
+        $pad = \strlen(\key($lines));
+
+        // If $markLine is before or after our line range, don't bother reserving space for the marker.
+        if ($markLine !== null) {
+            if ($markLine > \key($lines)) {
+                $markLine = null;
+            }
+
+            \reset($lines);
+            if ($markLine < \key($lines)) {
+                $markLine = null;
+            }
+        }
+
+        foreach ($lines as $lineNum => $line) {
+            $mark = '';
+            if ($markLine !== null) {
+                $mark = ($markLine === $lineNum) ? self::LINE_MARKER : self::NO_LINE_MARKER;
+            }
 
-            return $highlighter->getCodeSnippet($file, $start, 0, $end);
-        } else {
-            throw new RuntimeException('Source code unavailable');
+            yield \sprintf("%s<aside>%${pad}s</aside>: %s", $mark, $lineNum, $line);
         }
     }
 
@@ -65,7 +315,6 @@ public static function format(\Reflector $reflector, $colorMode = null)
      */
     private static function isReflectable(\Reflector $reflector)
     {
-        return $reflector instanceof \ReflectionClass ||
-            $reflector instanceof \ReflectionFunctionAbstract;
+        return ($reflector instanceof \ReflectionClass || $reflector instanceof \ReflectionFunctionAbstract) && \is_file($reflector->getFileName());
     }
 }
diff --git a/vendor/psy/psysh/src/Formatter/DocblockFormatter.php b/vendor/psy/psysh/src/Formatter/DocblockFormatter.php
index 39ea60e54a..3ea9f6dd28 100644
--- a/vendor/psy/psysh/src/Formatter/DocblockFormatter.php
+++ b/vendor/psy/psysh/src/Formatter/DocblockFormatter.php
@@ -3,7 +3,7 @@
 /*
  * This file is part of Psy Shell.
  *
- * (c) 2012-2018 Justin Hileman
+ * (c) 2012-2020 Justin Hileman
  *
  * For the full copyright and license information, please view the LICENSE
  * file that was distributed with this source code.
@@ -17,7 +17,7 @@
 /**
  * A pretty-printer for docblocks.
  */
-class DocblockFormatter implements Formatter
+class DocblockFormatter implements ReflectorFormatter
 {
     private static $vectorParamTemplates = [
         'type' => 'info',
@@ -89,7 +89,13 @@ private static function formatVector(array $vector, array $lines)
         $template = \implode(' ', $template);
 
         return \implode("\n", \array_map(function ($line) use ($template) {
-            $escaped = \array_map(['Symfony\Component\Console\Formatter\OutputFormatter', 'escape'], $line);
+            $escaped = \array_map(function ($l) {
+                if ($l === null) {
+                    return '';
+                }
+
+                return OutputFormatter::escape($l);
+            }, $line);
 
             return \rtrim(\vsprintf($template, $escaped));
         }, $lines));
diff --git a/vendor/psy/psysh/src/Formatter/Formatter.php b/vendor/psy/psysh/src/Formatter/Formatter.php
index 08a8e4c16d..8800c18663 100644
--- a/vendor/psy/psysh/src/Formatter/Formatter.php
+++ b/vendor/psy/psysh/src/Formatter/Formatter.php
@@ -3,7 +3,7 @@
 /*
  * This file is part of Psy Shell.
  *
- * (c) 2012-2018 Justin Hileman
+ * (c) 2012-2020 Justin Hileman
  *
  * For the full copyright and license information, please view the LICENSE
  * file that was distributed with this source code.
@@ -13,13 +13,9 @@
 
 /**
  * Formatter interface.
+ *
+ * @deprecated this interface only exists for backwards compatibility. Use ReflectorFormatter.
  */
-interface Formatter
+interface Formatter extends ReflectorFormatter
 {
-    /**
-     * @param \Reflector $reflector
-     *
-     * @return string
-     */
-    public static function format(\Reflector $reflector);
 }
diff --git a/vendor/psy/psysh/src/Formatter/ReflectorFormatter.php b/vendor/psy/psysh/src/Formatter/ReflectorFormatter.php
new file mode 100644
index 0000000000..cf2f25340b
--- /dev/null
+++ b/vendor/psy/psysh/src/Formatter/ReflectorFormatter.php
@@ -0,0 +1,25 @@
+<?php
+
+/*
+ * This file is part of Psy Shell.
+ *
+ * (c) 2012-2020 Justin Hileman
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Psy\Formatter;
+
+/**
+ * Reflector formatter interface.
+ */
+interface ReflectorFormatter
+{
+    /**
+     * @param \Reflector $reflector
+     *
+     * @return string
+     */
+    public static function format(\Reflector $reflector);
+}
diff --git a/vendor/psy/psysh/src/Formatter/SignatureFormatter.php b/vendor/psy/psysh/src/Formatter/SignatureFormatter.php
index ec8725d9ff..aefa9dae30 100644
--- a/vendor/psy/psysh/src/Formatter/SignatureFormatter.php
+++ b/vendor/psy/psysh/src/Formatter/SignatureFormatter.php
@@ -3,7 +3,7 @@
 /*
  * This file is part of Psy Shell.
  *
- * (c) 2012-2018 Justin Hileman
+ * (c) 2012-2020 Justin Hileman
  *
  * For the full copyright and license information, please view the LICENSE
  * file that was distributed with this source code.
@@ -20,7 +20,7 @@
 /**
  * An abstract representation of a function, class or property signature.
  */
-class SignatureFormatter implements Formatter
+class SignatureFormatter implements ReflectorFormatter
 {
     /**
      * Format a signature for the given reflector.
@@ -85,7 +85,7 @@ private static function formatModifiers(\Reflector $reflector)
             // For some reason, PHP 5.x returns `abstract public` modifiers for
             // traits. Let's just ignore that business entirely.
             if (\version_compare(PHP_VERSION, '7.0.0', '<')) {
-                return [];
+                return '';
             }
         }
 
@@ -126,7 +126,7 @@ private static function formatClass(\ReflectionClass $reflector)
         if (!empty($interfaces)) {
             \sort($interfaces);
 
-            $chunks[] = 'implements';
+            $chunks[] = $reflector->isInterface() ? 'extends' : 'implements';
             $chunks[] = \implode(', ', \array_map(function ($name) {
                 return \sprintf('<class>%s</class>', $name);
             }, $interfaces));
@@ -287,7 +287,7 @@ private static function formatFunctionParams(\ReflectionFunctionAbstract $reflec
                 } else {
                     $value     = $param->getDefaultValue();
                     $typeStyle = self::getTypeStyle($value);
-                    $value     = \is_array($value) ? 'array()' : \is_null($value) ? 'null' : \var_export($value, true);
+                    $value     = \is_array($value) ? '[]' : (\is_null($value) ? 'null' : \var_export($value, true));
                 }
                 $default = \sprintf(' = <%s>%s</%s>', $typeStyle, OutputFormatter::escape($value), $typeStyle);
             } else {
diff --git a/vendor/psy/psysh/src/Formatter/TraceFormatter.php b/vendor/psy/psysh/src/Formatter/TraceFormatter.php
new file mode 100644
index 0000000000..e815ab7d77
--- /dev/null
+++ b/vendor/psy/psysh/src/Formatter/TraceFormatter.php
@@ -0,0 +1,116 @@
+<?php
+
+/*
+ * This file is part of Psy Shell.
+ *
+ * (c) 2012-2020 Justin Hileman
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Psy\Formatter;
+
+use Psy\Input\FilterOptions;
+use Symfony\Component\Console\Formatter\OutputFormatter;
+
+/**
+ * Output formatter for exception traces.
+ */
+class TraceFormatter
+{
+    /**
+     * Format the trace of the given exception.
+     *
+     * @throws \InvalidArgumentException if passed a non-Throwable value
+     *
+     * @todo type hint $throwable when we drop support for PHP 5.x
+     *
+     * @param \Throwable    $throwable  The error or exception with a backtrace
+     * @param FilterOptions $filter     (default: null)
+     * @param int           $count      (default: PHP_INT_MAX)
+     * @param bool          $includePsy (default: true)
+     *
+     * @return string[] Formatted stacktrace lines
+     */
+    public static function formatTrace($throwable, FilterOptions $filter = null, $count = null, $includePsy = true)
+    {
+        if (!($throwable instanceof \Throwable || $throwable instanceof \Exception)) {
+            throw new \InvalidArgumentException('Unable to format non-throwable value');
+        }
+
+        if ($cwd = \getcwd()) {
+            $cwd = \rtrim($cwd, DIRECTORY_SEPARATOR) . DIRECTORY_SEPARATOR;
+        }
+
+        if ($count === null) {
+            $count = PHP_INT_MAX;
+        }
+
+        $lines = [];
+
+        $trace = $throwable->getTrace();
+        \array_unshift($trace, [
+            'function' => '',
+            'file'     => $throwable->getFile() !== null ? $throwable->getFile() : 'n/a',
+            'line'     => $throwable->getLine() !== null ? $throwable->getLine() : 'n/a',
+            'args'     => [],
+        ]);
+
+        if (!$includePsy) {
+            for ($i = \count($trace) - 1; $i >= 0; $i--) {
+                $thing = isset($trace[$i]['class']) ? $trace[$i]['class'] : $trace[$i]['function'];
+                if (\preg_match('/\\\\?Psy\\\\/', $thing)) {
+                    $trace = \array_slice($trace, $i + 1);
+                    break;
+                }
+            }
+        }
+
+        for ($i = 0, $count = \min($count, \count($trace)); $i < $count; $i++) {
+            $class    = isset($trace[$i]['class']) ? $trace[$i]['class'] : '';
+            $type     = isset($trace[$i]['type']) ? $trace[$i]['type'] : '';
+            $function = $trace[$i]['function'];
+            $file     = isset($trace[$i]['file']) ? self::replaceCwd($cwd, $trace[$i]['file']) : 'n/a';
+            $line     = isset($trace[$i]['line']) ? $trace[$i]['line'] : 'n/a';
+
+            // Leave execution loop out of the `eval()'d code` lines
+            if (\preg_match("#/src/Execution(?:Loop)?Closure.php\(\d+\) : eval\(\)'d code$#", \str_replace('\\', '/', $file))) {
+                $file = "eval()'d code";
+            }
+
+            // Skip any lines that don't match our filter options
+            if ($filter !== null && !$filter->match(\sprintf('%s%s%s() at %s:%s', $class, $type, $function, $file, $line))) {
+                continue;
+            }
+
+            $lines[] = \sprintf(
+                ' <class>%s</class>%s%s() at <info>%s:%s</info>',
+                OutputFormatter::escape($class),
+                OutputFormatter::escape($type),
+                OutputFormatter::escape($function),
+                OutputFormatter::escape($file),
+                OutputFormatter::escape($line)
+            );
+        }
+
+        return $lines;
+    }
+
+    /**
+     * Replace the given directory from the start of a filepath.
+     *
+     * @param string $cwd
+     * @param string $file
+     *
+     * @return string
+     */
+    private static function replaceCwd($cwd, $file)
+    {
+        if ($cwd === false) {
+            return $file;
+        } else {
+            return \preg_replace('/^' . \preg_quote($cwd, '/') . '/', '', $file);
+        }
+    }
+}
diff --git a/vendor/psy/psysh/src/Input/CodeArgument.php b/vendor/psy/psysh/src/Input/CodeArgument.php
index cfeb9e16d2..a2189af7fe 100644
--- a/vendor/psy/psysh/src/Input/CodeArgument.php
+++ b/vendor/psy/psysh/src/Input/CodeArgument.php
@@ -3,7 +3,7 @@
 /*
  * This file is part of Psy Shell.
  *
- * (c) 2012-2018 Justin Hileman
+ * (c) 2012-2020 Justin Hileman
  *
  * For the full copyright and license information, please view the LICENSE
  * file that was distributed with this source code.
diff --git a/vendor/psy/psysh/src/Input/FilterOptions.php b/vendor/psy/psysh/src/Input/FilterOptions.php
index d77a04fb70..53e9b3e5ca 100644
--- a/vendor/psy/psysh/src/Input/FilterOptions.php
+++ b/vendor/psy/psysh/src/Input/FilterOptions.php
@@ -3,7 +3,7 @@
 /*
  * This file is part of Psy Shell.
  *
- * (c) 2012-2018 Justin Hileman
+ * (c) 2012-2020 Justin Hileman
  *
  * For the full copyright and license information, please view the LICENSE
  * file that was distributed with this source code.
@@ -97,9 +97,9 @@ public function match($string, array &$matches = null)
     /**
      * Validate that grep, invert and insensitive input options are consistent.
      *
-     * @param InputInterface $input
+     * @throws RuntimeException if input is invalid
      *
-     * @return bool
+     * @param InputInterface $input
      */
     private function validateInput(InputInterface $input)
     {
@@ -127,19 +127,19 @@ private function stringIsRegex($string)
     /**
      * Validate that $pattern is a valid regular expression.
      *
-     * @param string $pattern
+     * @throws RuntimeException if pattern is invalid
      *
-     * @return bool
+     * @param string $pattern
      */
     private function validateRegex($pattern)
     {
-        \set_error_handler(['Psy\Exception\ErrorException', 'throwException']);
+        \set_error_handler([ErrorException::class, 'throwException']);
         try {
             \preg_match($pattern, '');
         } catch (ErrorException $e) {
-            \restore_error_handler();
             throw new RuntimeException(\str_replace('preg_match(): ', 'Invalid regular expression: ', $e->getRawMessage()));
+        } finally {
+            \restore_error_handler();
         }
-        \restore_error_handler();
     }
 }
diff --git a/vendor/psy/psysh/src/Input/ShellInput.php b/vendor/psy/psysh/src/Input/ShellInput.php
index 8675f4d12d..49762d89c4 100644
--- a/vendor/psy/psysh/src/Input/ShellInput.php
+++ b/vendor/psy/psysh/src/Input/ShellInput.php
@@ -3,7 +3,7 @@
 /*
  * This file is part of Psy Shell.
  *
- * (c) 2012-2018 Justin Hileman
+ * (c) 2012-2020 Justin Hileman
  *
  * For the full copyright and license information, please view the LICENSE
  * file that was distributed with this source code.
@@ -87,18 +87,18 @@ private function tokenize($input)
         $length = \strlen($input);
         $cursor = 0;
         while ($cursor < $length) {
-            if (\preg_match('/\s+/A', $input, $match, null, $cursor)) {
-            } elseif (\preg_match('/([^="\'\s]+?)(=?)(' . StringInput::REGEX_QUOTED_STRING . '+)/A', $input, $match, null, $cursor)) {
+            if (\preg_match('/\s+/A', $input, $match, 0, $cursor)) {
+            } elseif (\preg_match('/([^="\'\s]+?)(=?)(' . StringInput::REGEX_QUOTED_STRING . '+)/A', $input, $match, 0, $cursor)) {
                 $tokens[] = [
                     $match[1] . $match[2] . \stripcslashes(\str_replace(['"\'', '\'"', '\'\'', '""'], '', \substr($match[3], 1, \strlen($match[3]) - 2))),
                     \stripcslashes(\substr($input, $cursor)),
                 ];
-            } elseif (\preg_match('/' . StringInput::REGEX_QUOTED_STRING . '/A', $input, $match, null, $cursor)) {
+            } elseif (\preg_match('/' . StringInput::REGEX_QUOTED_STRING . '/A', $input, $match, 0, $cursor)) {
                 $tokens[] = [
                     \stripcslashes(\substr($match[0], 1, \strlen($match[0]) - 2)),
                     \stripcslashes(\substr($input, $cursor)),
                 ];
-            } elseif (\preg_match('/' . StringInput::REGEX_STRING . '/A', $input, $match, null, $cursor)) {
+            } elseif (\preg_match('/' . StringInput::REGEX_STRING . '/A', $input, $match, 0, $cursor)) {
                 $tokens[] = [
                     \stripcslashes($match[1]),
                     \stripcslashes(\substr($input, $cursor)),
diff --git a/vendor/psy/psysh/src/Input/SilentInput.php b/vendor/psy/psysh/src/Input/SilentInput.php
index c6f234ba9d..b4804c611a 100644
--- a/vendor/psy/psysh/src/Input/SilentInput.php
+++ b/vendor/psy/psysh/src/Input/SilentInput.php
@@ -3,7 +3,7 @@
 /*
  * This file is part of Psy Shell.
  *
- * (c) 2012-2018 Justin Hileman
+ * (c) 2012-2020 Justin Hileman
  *
  * For the full copyright and license information, please view the LICENSE
  * file that was distributed with this source code.
diff --git a/vendor/psy/psysh/src/Output/OutputPager.php b/vendor/psy/psysh/src/Output/OutputPager.php
index a2f12aead5..b9dcdf82db 100644
--- a/vendor/psy/psysh/src/Output/OutputPager.php
+++ b/vendor/psy/psysh/src/Output/OutputPager.php
@@ -3,7 +3,7 @@
 /*
  * This file is part of Psy Shell.
  *
- * (c) 2012-2018 Justin Hileman
+ * (c) 2012-2020 Justin Hileman
  *
  * For the full copyright and license information, please view the LICENSE
  * file that was distributed with this source code.
diff --git a/vendor/psy/psysh/src/Output/PassthruPager.php b/vendor/psy/psysh/src/Output/PassthruPager.php
index 2dcb74398e..3eaa9cf78c 100644
--- a/vendor/psy/psysh/src/Output/PassthruPager.php
+++ b/vendor/psy/psysh/src/Output/PassthruPager.php
@@ -3,7 +3,7 @@
 /*
  * This file is part of Psy Shell.
  *
- * (c) 2012-2018 Justin Hileman
+ * (c) 2012-2020 Justin Hileman
  *
  * For the full copyright and license information, please view the LICENSE
  * file that was distributed with this source code.
diff --git a/vendor/psy/psysh/src/Output/ProcOutputPager.php b/vendor/psy/psysh/src/Output/ProcOutputPager.php
index a047b1c3f8..a6769890c8 100644
--- a/vendor/psy/psysh/src/Output/ProcOutputPager.php
+++ b/vendor/psy/psysh/src/Output/ProcOutputPager.php
@@ -3,7 +3,7 @@
 /*
  * This file is part of Psy Shell.
  *
- * (c) 2012-2018 Justin Hileman
+ * (c) 2012-2020 Justin Hileman
  *
  * For the full copyright and license information, please view the LICENSE
  * file that was distributed with this source code.
@@ -77,7 +77,8 @@ public function close()
             }
         }
 
-        unset($this->pipe, $this->proc);
+        $this->pipe = null;
+        $this->proc = null;
     }
 
     /**
diff --git a/vendor/psy/psysh/src/Output/ShellOutput.php b/vendor/psy/psysh/src/Output/ShellOutput.php
index 5881a5c205..485cef8d3c 100644
--- a/vendor/psy/psysh/src/Output/ShellOutput.php
+++ b/vendor/psy/psysh/src/Output/ShellOutput.php
@@ -3,7 +3,7 @@
 /*
  * This file is part of Psy Shell.
  *
- * (c) 2012-2018 Justin Hileman
+ * (c) 2012-2020 Justin Hileman
  *
  * For the full copyright and license information, please view the LICENSE
  * file that was distributed with this source code.
@@ -11,6 +11,7 @@
 
 namespace Psy\Output;
 
+use Symfony\Component\Console\Formatter\OutputFormatter;
 use Symfony\Component\Console\Formatter\OutputFormatterInterface;
 use Symfony\Component\Console\Formatter\OutputFormatterStyle;
 use Symfony\Component\Console\Output\ConsoleOutput;
@@ -28,10 +29,10 @@ class ShellOutput extends ConsoleOutput
     /**
      * Construct a ShellOutput instance.
      *
-     * @param mixed                    $verbosity (default: self::VERBOSITY_NORMAL)
-     * @param bool                     $decorated (default: null)
-     * @param OutputFormatterInterface $formatter (default: null)
-     * @param null|string|OutputPager  $pager     (default: null)
+     * @param mixed                         $verbosity (default: self::VERBOSITY_NORMAL)
+     * @param bool|null                     $decorated (default: null)
+     * @param OutputFormatterInterface|null $formatter (default: null)
+     * @param string|OutputPager|null       $pager     (default: null)
      */
     public function __construct($verbosity = self::VERBOSITY_NORMAL, $decorated = null, OutputFormatterInterface $formatter = null, $pager = null)
     {
@@ -126,7 +127,7 @@ public function write($messages, $newline = false, $type = 0)
             $template = $this->isDecorated() ? "<aside>%{$pad}s</aside>: %s" : "%{$pad}s: %s";
 
             if ($type & self::OUTPUT_RAW) {
-                $messages = \array_map(['Symfony\Component\Console\Formatter\OutputFormatter', 'escape'], $messages);
+                $messages = \array_map([OutputFormatter::class, 'escape'], $messages);
             }
 
             foreach ($messages as $i => $line) {
@@ -175,7 +176,7 @@ private function initFormatters()
         $formatter = $this->getFormatter();
 
         $formatter->setStyle('warning', new OutputFormatterStyle('black', 'yellow'));
-        $formatter->setStyle('error',   new OutputFormatterStyle('black', 'red', ['bold']));
+        $formatter->setStyle('error',   new OutputFormatterStyle('white', 'red', ['bold']));
         $formatter->setStyle('aside',   new OutputFormatterStyle('blue'));
         $formatter->setStyle('strong',  new OutputFormatterStyle(null, null, ['bold']));
         $formatter->setStyle('return',  new OutputFormatterStyle('cyan'));
@@ -200,5 +201,8 @@ private function initFormatters()
         $formatter->setStyle('comment',  new OutputFormatterStyle('blue'));
         $formatter->setStyle('object',   new OutputFormatterStyle('blue'));
         $formatter->setStyle('resource', new OutputFormatterStyle('yellow'));
+
+        // Code-specific formatting
+        $formatter->setStyle('inline_html', new OutputFormatterStyle('cyan'));
     }
 }
diff --git a/vendor/psy/psysh/src/ParserFactory.php b/vendor/psy/psysh/src/ParserFactory.php
index 263da2022b..992ff3790a 100644
--- a/vendor/psy/psysh/src/ParserFactory.php
+++ b/vendor/psy/psysh/src/ParserFactory.php
@@ -3,7 +3,7 @@
 /*
  * This file is part of Psy Shell.
  *
- * (c) 2012-2018 Justin Hileman
+ * (c) 2012-2020 Justin Hileman
  *
  * For the full copyright and license information, please view the LICENSE
  * file that was distributed with this source code.
@@ -44,7 +44,7 @@ public static function getPossibleKinds()
      */
     public function hasKindsSupport()
     {
-        return \class_exists('PhpParser\ParserFactory');
+        return \class_exists(OriginalParserFactory::class);
     }
 
     /**
@@ -77,7 +77,7 @@ public function createParser($kind = null)
                 throw new \InvalidArgumentException('Unknown parser kind');
             }
 
-            $parser = $originalFactory->create(\constant('PhpParser\ParserFactory::' . $kind));
+            $parser = $originalFactory->create(\constant(OriginalParserFactory::class . '::' . $kind));
         } else {
             if ($kind !== null) {
                 throw new \InvalidArgumentException('Install PHP Parser v2.x to specify parser kind');
diff --git a/vendor/psy/psysh/src/Readline/GNUReadline.php b/vendor/psy/psysh/src/Readline/GNUReadline.php
index 1cec3c63a0..ef2ea724d8 100644
--- a/vendor/psy/psysh/src/Readline/GNUReadline.php
+++ b/vendor/psy/psysh/src/Readline/GNUReadline.php
@@ -3,7 +3,7 @@
 /*
  * This file is part of Psy Shell.
  *
- * (c) 2012-2018 Justin Hileman
+ * (c) 2012-2020 Justin Hileman
  *
  * For the full copyright and license information, please view the LICENSE
  * file that was distributed with this source code.
@@ -51,6 +51,11 @@ public function __construct($historyFile = null, $historySize = 0, $eraseDups =
         $this->historyFile = ($historyFile !== null) ? $historyFile : false;
         $this->historySize = $historySize;
         $this->eraseDups   = $eraseDups;
+
+        // HHVM errors on this, so HHVM doesn't get a readline_name.
+        if (!\defined('HHVM_VERSION')) {
+            \readline_info('readline_name', 'psysh');
+        }
     }
 
     /**
diff --git a/vendor/psy/psysh/src/Readline/HoaConsole.php b/vendor/psy/psysh/src/Readline/HoaConsole.php
index a49b592850..bd4d9d541b 100644
--- a/vendor/psy/psysh/src/Readline/HoaConsole.php
+++ b/vendor/psy/psysh/src/Readline/HoaConsole.php
@@ -3,7 +3,7 @@
 /*
  * This file is part of Psy Shell.
  *
- * (c) 2012-2018 Justin Hileman
+ * (c) 2012-2020 Justin Hileman
  *
  * For the full copyright and license information, please view the LICENSE
  * file that was distributed with this source code.
@@ -11,6 +11,8 @@
 
 namespace Psy\Readline;
 
+use Hoa\Console\Console;
+use Hoa\Console\Cursor;
 use Hoa\Console\Readline\Readline as HoaReadline;
 use Psy\Exception\BreakException;
 
@@ -22,17 +24,25 @@ class HoaConsole implements Readline
     /** @var HoaReadline */
     private $hoaReadline;
 
+    /** @var string|null */
+    private $lastPrompt;
+
     /**
      * @return bool
      */
     public static function isSupported()
     {
-        return \class_exists('\Hoa\Console\Console', true);
+        return \class_exists(Console::class, true);
     }
 
     public function __construct()
     {
         $this->hoaReadline = new HoaReadline();
+        $this->hoaReadline->addMapping('\C-l', function () {
+            $this->redisplay();
+
+            return HoaReadline::STATE_NO_ECHO;
+        });
     }
 
     /**
@@ -86,6 +96,8 @@ public function readHistory()
      */
     public function readline($prompt = null)
     {
+        $this->lastPrompt = $prompt;
+
         return $this->hoaReadline->readLine($prompt);
     }
 
@@ -94,7 +106,9 @@ public function readline($prompt = null)
      */
     public function redisplay()
     {
-        // noop
+        $currentLine = $this->hoaReadline->getLine();
+        Cursor::clear('all');
+        echo $this->lastPrompt, $currentLine;
     }
 
     /**
diff --git a/vendor/psy/psysh/src/Readline/Libedit.php b/vendor/psy/psysh/src/Readline/Libedit.php
index d1dc002fd6..bec4cfe51e 100644
--- a/vendor/psy/psysh/src/Readline/Libedit.php
+++ b/vendor/psy/psysh/src/Readline/Libedit.php
@@ -3,7 +3,7 @@
 /*
  * This file is part of Psy Shell.
  *
- * (c) 2012-2018 Justin Hileman
+ * (c) 2012-2020 Justin Hileman
  *
  * For the full copyright and license information, please view the LICENSE
  * file that was distributed with this source code.
@@ -22,6 +22,8 @@
  */
 class Libedit extends GNUReadline
 {
+    private $hasWarnedOwnership = false;
+
     /**
      * Let's emulate GNU Readline by manually reading and parsing the history file!
      *
@@ -56,6 +58,28 @@ public function listHistory()
         return \array_values(\array_filter($history));
     }
 
+    /**
+     * {@inheritdoc}
+     */
+    public function writeHistory()
+    {
+        $res = parent::writeHistory();
+
+        // Libedit apparently refuses to save history if the history file is not
+        // owned by the user, even if it is writable. Warn when this happens.
+        //
+        // See https://github.com/bobthecow/psysh/issues/552
+        if ($res === false && !$this->hasWarnedOwnership) {
+            if (\is_file($this->historyFile) && \is_writable($this->historyFile)) {
+                $this->hasWarnedOwnership = true;
+                $msg = \sprintf('Error writing history file, check file ownership: %s', $this->historyFile);
+                \trigger_error($msg, E_USER_NOTICE);
+            }
+        }
+
+        return $res;
+    }
+
     /**
      * From GNUReadline (readline/histfile.c & readline/histexpand.c):
      * lines starting with "\0" are comments or timestamps;
diff --git a/vendor/psy/psysh/src/Readline/Readline.php b/vendor/psy/psysh/src/Readline/Readline.php
index 6d0cb6e6b9..7e404dccc9 100644
--- a/vendor/psy/psysh/src/Readline/Readline.php
+++ b/vendor/psy/psysh/src/Readline/Readline.php
@@ -3,7 +3,7 @@
 /*
  * This file is part of Psy Shell.
  *
- * (c) 2012-2018 Justin Hileman
+ * (c) 2012-2020 Justin Hileman
  *
  * For the full copyright and license information, please view the LICENSE
  * file that was distributed with this source code.
@@ -56,7 +56,7 @@ public function readHistory();
     /**
      * Read a single line of input from the user.
      *
-     * @param null|string $prompt
+     * @param string|null $prompt
      *
      * @return false|string
      */
diff --git a/vendor/psy/psysh/src/Readline/Transient.php b/vendor/psy/psysh/src/Readline/Transient.php
index 6623bd9818..c3f3433aeb 100644
--- a/vendor/psy/psysh/src/Readline/Transient.php
+++ b/vendor/psy/psysh/src/Readline/Transient.php
@@ -3,7 +3,7 @@
 /*
  * This file is part of Psy Shell.
  *
- * (c) 2012-2018 Justin Hileman
+ * (c) 2012-2020 Justin Hileman
  *
  * For the full copyright and license information, please view the LICENSE
  * file that was distributed with this source code.
diff --git a/vendor/psy/psysh/src/Reflection/ReflectionClassConstant.php b/vendor/psy/psysh/src/Reflection/ReflectionClassConstant.php
index 019ad21da8..4d27a1820b 100644
--- a/vendor/psy/psysh/src/Reflection/ReflectionClassConstant.php
+++ b/vendor/psy/psysh/src/Reflection/ReflectionClassConstant.php
@@ -3,7 +3,7 @@
 /*
  * This file is part of Psy Shell.
  *
- * (c) 2012-2018 Justin Hileman
+ * (c) 2012-2020 Justin Hileman
  *
  * For the full copyright and license information, please view the LICENSE
  * file that was distributed with this source code.
@@ -52,7 +52,7 @@ public function __construct($class, $name)
      * @param string        $name
      * @param bool          $return pass true to return the export, as opposed to emitting it
      *
-     * @return null|string
+     * @return string|null
      */
     public static function export($class, $name, $return = false)
     {
@@ -219,7 +219,7 @@ public function getEndLine()
      */
     public static function create($class, $name)
     {
-        if (\class_exists('\\ReflectionClassConstant')) {
+        if (\class_exists(\ReflectionClassConstant::class)) {
             return new \ReflectionClassConstant($class, $name);
         }
 
diff --git a/vendor/psy/psysh/src/Reflection/ReflectionConstant.php b/vendor/psy/psysh/src/Reflection/ReflectionConstant.php
index a813fc5736..139b920a7d 100644
--- a/vendor/psy/psysh/src/Reflection/ReflectionConstant.php
+++ b/vendor/psy/psysh/src/Reflection/ReflectionConstant.php
@@ -3,7 +3,7 @@
 /*
  * This file is part of Psy Shell.
  *
- * (c) 2012-2018 Justin Hileman
+ * (c) 2012-2020 Justin Hileman
  *
  * For the full copyright and license information, please view the LICENSE
  * file that was distributed with this source code.
diff --git a/vendor/psy/psysh/src/Reflection/ReflectionConstant_.php b/vendor/psy/psysh/src/Reflection/ReflectionConstant_.php
index b355e35091..c24e7f74e9 100644
--- a/vendor/psy/psysh/src/Reflection/ReflectionConstant_.php
+++ b/vendor/psy/psysh/src/Reflection/ReflectionConstant_.php
@@ -3,7 +3,7 @@
 /*
  * This file is part of Psy Shell.
  *
- * (c) 2012-2018 Justin Hileman
+ * (c) 2012-2020 Justin Hileman
  *
  * For the full copyright and license information, please view the LICENSE
  * file that was distributed with this source code.
@@ -61,7 +61,7 @@ public function __construct($name)
      * @param string $name
      * @param bool   $return pass true to return the export, as opposed to emitting it
      *
-     * @return null|string
+     * @return string|null
      */
     public static function export($name, $return = false)
     {
diff --git a/vendor/psy/psysh/src/Reflection/ReflectionLanguageConstruct.php b/vendor/psy/psysh/src/Reflection/ReflectionLanguageConstruct.php
index 9b8eefc179..3de301adf3 100644
--- a/vendor/psy/psysh/src/Reflection/ReflectionLanguageConstruct.php
+++ b/vendor/psy/psysh/src/Reflection/ReflectionLanguageConstruct.php
@@ -3,7 +3,7 @@
 /*
  * This file is part of Psy Shell.
  *
- * (c) 2012-2018 Justin Hileman
+ * (c) 2012-2020 Justin Hileman
  *
  * For the full copyright and license information, please view the LICENSE
  * file that was distributed with this source code.
diff --git a/vendor/psy/psysh/src/Reflection/ReflectionLanguageConstructParameter.php b/vendor/psy/psysh/src/Reflection/ReflectionLanguageConstructParameter.php
index 9161aa78b5..b1fcba814a 100644
--- a/vendor/psy/psysh/src/Reflection/ReflectionLanguageConstructParameter.php
+++ b/vendor/psy/psysh/src/Reflection/ReflectionLanguageConstructParameter.php
@@ -3,7 +3,7 @@
 /*
  * This file is part of Psy Shell.
  *
- * (c) 2012-2018 Justin Hileman
+ * (c) 2012-2020 Justin Hileman
  *
  * For the full copyright and license information, please view the LICENSE
  * file that was distributed with this source code.
diff --git a/vendor/psy/psysh/src/Reflection/ReflectionNamespace.php b/vendor/psy/psysh/src/Reflection/ReflectionNamespace.php
new file mode 100644
index 0000000000..f50a322a84
--- /dev/null
+++ b/vendor/psy/psysh/src/Reflection/ReflectionNamespace.php
@@ -0,0 +1,60 @@
+<?php
+
+/*
+ * This file is part of Psy Shell.
+ *
+ * (c) 2012-2020 Justin Hileman
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Psy\Reflection;
+
+/**
+ * A fake Reflector for namespaces.
+ */
+class ReflectionNamespace implements \Reflector
+{
+    private $name;
+
+    /**
+     * Construct a ReflectionNamespace object.
+     *
+     * @param string $name
+     */
+    public function __construct($name)
+    {
+        $this->name = $name;
+    }
+
+    /**
+     * Gets the constant name.
+     *
+     * @return string
+     */
+    public function getName()
+    {
+        return $this->name;
+    }
+
+    /**
+     * This can't (and shouldn't) do anything :).
+     *
+     * @throws \RuntimeException
+     */
+    public static function export($name)
+    {
+        throw new \RuntimeException('Not yet implemented because it\'s unclear what I should do here :)');
+    }
+
+    /**
+     * To string.
+     *
+     * @return string
+     */
+    public function __toString()
+    {
+        return $this->getName();
+    }
+}
diff --git a/vendor/psy/psysh/src/Shell.php b/vendor/psy/psysh/src/Shell.php
index 7a0fbac28a..c2e9f307d6 100644
--- a/vendor/psy/psysh/src/Shell.php
+++ b/vendor/psy/psysh/src/Shell.php
@@ -3,7 +3,7 @@
 /*
  * This file is part of Psy Shell.
  *
- * (c) 2012-2018 Justin Hileman
+ * (c) 2012-2020 Justin Hileman
  *
  * For the full copyright and license information, please view the LICENSE
  * file that was distributed with this source code.
@@ -19,20 +19,21 @@
 use Psy\Exception\TypeErrorException;
 use Psy\ExecutionLoop\ProcessForker;
 use Psy\ExecutionLoop\RunkitReloader;
+use Psy\Formatter\TraceFormatter;
 use Psy\Input\ShellInput;
 use Psy\Input\SilentInput;
-use Psy\Output\ShellOutput;
 use Psy\TabCompletion\Matcher;
 use Psy\VarDumper\PresenterAware;
 use Symfony\Component\Console\Application;
 use Symfony\Component\Console\Command\Command as BaseCommand;
 use Symfony\Component\Console\Formatter\OutputFormatter;
-use Symfony\Component\Console\Input\ArgvInput;
+use Symfony\Component\Console\Input\ArrayInput;
 use Symfony\Component\Console\Input\InputArgument;
 use Symfony\Component\Console\Input\InputDefinition;
 use Symfony\Component\Console\Input\InputInterface;
 use Symfony\Component\Console\Input\InputOption;
 use Symfony\Component\Console\Input\StringInput;
+use Symfony\Component\Console\Output\ConsoleOutput;
 use Symfony\Component\Console\Output\OutputInterface;
 
 /**
@@ -47,7 +48,7 @@
  */
 class Shell extends Application
 {
-    const VERSION = 'v0.9.9';
+    const VERSION = 'v0.10.4';
 
     const PROMPT      = '>>> ';
     const BUFF_PROMPT = '... ';
@@ -57,6 +58,7 @@ class Shell extends Application
     private $config;
     private $cleaner;
     private $output;
+    private $originalVerbosity;
     private $readline;
     private $inputBuffer;
     private $code;
@@ -66,9 +68,7 @@ class Shell extends Application
     private $stdoutBuffer;
     private $context;
     private $includes;
-    private $loop;
     private $outputWantsNewline = false;
-    private $prompt;
     private $loopListeners;
     private $autoCompleter;
     private $matchers = [];
@@ -78,13 +78,12 @@ class Shell extends Application
     /**
      * Create a new Psy Shell.
      *
-     * @param Configuration $config (default: null)
+     * @param Configuration|null $config (default: null)
      */
     public function __construct(Configuration $config = null)
     {
         $this->config        = $config ?: new Configuration();
         $this->cleaner       = $this->config->getCodeCleaner();
-        $this->loop          = new ExecutionLoop();
         $this->context       = new Context();
         $this->includes      = [];
         $this->readline      = $this->config->getReadline();
@@ -119,7 +118,7 @@ public static function isIncluded(array $trace)
      * @see Psy\debug
      * @deprecated will be removed in 1.0. Use \Psy\debug instead
      *
-     * @param array         $vars   Scope variables from the calling context (default: array())
+     * @param array         $vars   Scope variables from the calling context (default: [])
      * @param object|string $bindTo Bound object ($this) or class (self) value for the shell
      *
      * @return array Scope variables from the debugger session
@@ -188,9 +187,9 @@ protected function getDefaultCommands()
             new Command\ListCommand(),
             new Command\DumpCommand(),
             new Command\DocCommand(),
-            new Command\ShowCommand($this->config->colorMode()),
-            new Command\WtfCommand($this->config->colorMode()),
-            new Command\WhereamiCommand($this->config->colorMode()),
+            new Command\ShowCommand(),
+            new Command\WtfCommand(),
+            new Command\WhereamiCommand(),
             new Command\ThrowUpCommand(),
             new Command\TimeitCommand(),
             new Command\TraceCommand(),
@@ -290,28 +289,29 @@ public function addTabCompletionMatchers(array $matchers)
     public function setOutput(OutputInterface $output)
     {
         $this->output = $output;
+        $this->originalVerbosity = $output->getVerbosity();
     }
 
     /**
-     * Runs the current application.
+     * Runs PsySH.
      *
-     * @param InputInterface  $input  An Input instance
-     * @param OutputInterface $output An Output instance
+     * @param InputInterface|null  $input  An Input instance
+     * @param OutputInterface|null $output An Output instance
      *
      * @return int 0 if everything went fine, or an error code
      */
     public function run(InputInterface $input = null, OutputInterface $output = null)
     {
-        $this->initializeTabCompletion();
-
-        if ($input === null && !isset($_SERVER['argv'])) {
-            $input = new ArgvInput([]);
-        }
+        // We'll just ignore the input passed in, and set up our own!
+        $input = new ArrayInput([]);
 
         if ($output === null) {
             $output = $this->config->getOutput();
         }
 
+        $this->setAutoExit(false);
+        $this->setCatchExceptions(false);
+
         try {
             return parent::run($input, $output);
         } catch (\Exception $e) {
@@ -322,9 +322,9 @@ public function run(InputInterface $input = null, OutputInterface $output = null
     }
 
     /**
-     * Runs the current application.
+     * Runs PsySH.
      *
-     * @throws Exception if thrown via the `throw-up` command
+     * @throws \Exception if thrown via the `throw-up` command
      *
      * @param InputInterface  $input  An Input instance
      * @param OutputInterface $output An Output instance
@@ -334,12 +334,29 @@ public function run(InputInterface $input = null, OutputInterface $output = null
     public function doRun(InputInterface $input, OutputInterface $output)
     {
         $this->setOutput($output);
-
         $this->resetCodeBuffer();
 
-        $this->setAutoExit(false);
-        $this->setCatchExceptions(false);
+        if ($input->isInteractive()) {
+            // @todo should it be possible to have raw output in an interactive run?
+            return $this->doInteractiveRun();
+        } else {
+            return $this->doNonInteractiveRun($this->config->rawOutput());
+        }
+    }
 
+    /**
+     * Run PsySH in interactive mode.
+     *
+     * Initializes tab completion and readline history, then spins up the
+     * execution loop.
+     *
+     * @throws \Exception if thrown via the `throw-up` command
+     *
+     * @return int 0 if everything went fine, or an error code
+     */
+    private function doInteractiveRun()
+    {
+        $this->initializeTabCompletion();
         $this->readline->readHistory();
 
         $this->output->writeln($this->getHeader());
@@ -348,14 +365,101 @@ public function doRun(InputInterface $input, OutputInterface $output)
 
         try {
             $this->beforeRun();
-            $this->loop->run($this);
+            $this->loadIncludes();
+            $loop = new ExecutionLoopClosure($this);
+            $loop->execute();
             $this->afterRun();
         } catch (ThrowUpException $e) {
             throw $e->getPrevious();
         } catch (BreakException $e) {
             // The ProcessForker throws a BreakException to finish the main thread.
-            return;
         }
+
+        return 0;
+    }
+
+    /**
+     * Run PsySH in non-interactive mode.
+     *
+     * Note that this isn't very useful unless you supply "include" arguments at
+     * the command line, or code via stdin.
+     *
+     * @param bool $rawOutput
+     *
+     * @return int 0 if everything went fine, or an error code
+     */
+    private function doNonInteractiveRun($rawOutput)
+    {
+        // If raw output is enabled (or output is piped) we don't want startup messages.
+        if (!$rawOutput && !$this->config->outputIsPiped()) {
+            $this->output->writeln($this->getHeader());
+            $this->writeVersionInfo();
+            $this->writeStartupMessage();
+        }
+
+        $this->beforeRun();
+        $this->loadIncludes();
+
+        // For non-interactive execution, read only from the input buffer or from piped input.
+        // Otherwise it'll try to readline and hang, waiting for user input with no indication of
+        // what's holding things up.
+        if (!empty($this->inputBuffer) || $this->config->inputIsPiped()) {
+            $this->getInput(false);
+        }
+
+        if ($this->hasCode()) {
+            $ret = $this->execute($this->flushCode());
+            $this->writeReturnValue($ret, $rawOutput);
+        }
+
+        $this->afterRun();
+
+        return 0;
+    }
+
+    /**
+     * Configures the input and output instances based on the user arguments and options.
+     */
+    protected function configureIO(InputInterface $input, OutputInterface $output)
+    {
+        // @todo overrides via environment variables (or should these happen in config? ... probably config)
+        $input->setInteractive($this->config->getInputInteractive());
+
+        if ($this->config->getOutputDecorated() !== null) {
+            $output->setDecorated($this->config->getOutputDecorated());
+        }
+
+        $output->setVerbosity($this->config->getOutputVerbosity());
+    }
+
+    /**
+     * Load user-defined includes.
+     */
+    private function loadIncludes()
+    {
+        // Load user-defined includes
+        $load = function (self $__psysh__) {
+            \set_error_handler([$__psysh__, 'handleError']);
+            foreach ($__psysh__->getIncludes() as $__psysh_include__) {
+                try {
+                    include $__psysh_include__;
+                } catch (\Error $_e) {
+                    $__psysh__->writeException(ErrorException::fromError($_e));
+                } catch (\Exception $_e) {
+                    $__psysh__->writeException($_e);
+                }
+            }
+            \restore_error_handler();
+            unset($__psysh_include__);
+
+            // Override any new local variables with pre-defined scope variables
+            \extract($__psysh__->getScopeVariables(false));
+
+            // ... then add the whole mess of variables back.
+            $__psysh__->setScopeVariables(\get_defined_vars());
+        };
+
+        $load($this);
     }
 
     /**
@@ -365,14 +469,16 @@ public function doRun(InputInterface $input, OutputInterface $output)
      * valid code.
      *
      * @throws BreakException if user hits Ctrl+D
+     *
+     * @param bool $interactive
      */
-    public function getInput()
+    public function getInput($interactive = true)
     {
         $this->codeBufferOpen = false;
 
         do {
             // reset output verbosity (in case it was altered by a subcommand)
-            $this->output->setVerbosity(ShellOutput::VERBOSITY_VERBOSE);
+            $this->output->setVerbosity($this->originalVerbosity);
 
             $input = $this->readline();
 
@@ -381,8 +487,13 @@ public function getInput()
              *
              *   1) In an expression, like a function or "if" block, clear the input buffer
              *   2) At top-level session, behave like the exit command
+             *   3) When non-interactive, return, because that's the end of stdin
              */
             if ($input === false) {
+                if (!$interactive) {
+                    return;
+                }
+
                 $this->output->writeln('');
 
                 if ($this->hasCode()) {
@@ -408,7 +519,7 @@ public function getInput()
             }
 
             $this->addCode($input);
-        } while (!$this->hasValidCode());
+        } while (!$interactive || !$this->hasValidCode());
     }
 
     /**
@@ -421,7 +532,7 @@ public function getInput()
     private function inputInOpenStringOrComment($input)
     {
         if (!$this->hasCode()) {
-            return;
+            return false;
         }
 
         $code = $this->codeBuffer;
@@ -777,7 +888,7 @@ public function getCodeBuffer()
     /**
      * Run a Psy Shell command given the user input.
      *
-     * @throws InvalidArgumentException if the input is not a valid command
+     * @throws \InvalidArgumentException if the input is not a valid command
      *
      * @param string $input User input string
      *
@@ -797,7 +908,7 @@ protected function runCommand($input)
             $helpCommand = $this->get('help');
             $helpCommand->setCommand($command);
 
-            return $helpCommand->run($input, $this->output);
+            return $helpCommand->run(new StringInput(''), $this->output);
         }
 
         return $command->run($input, $this->output);
@@ -931,7 +1042,7 @@ public function writeStdout($out, $phase = PHP_OUTPUT_HANDLER_END)
 
         // Incremental flush
         if ($out !== '' && !$isCleaning) {
-            $this->output->write($out, false, ShellOutput::OUTPUT_RAW);
+            $this->output->write($out, false, OutputInterface::OUTPUT_RAW);
             $this->outputWantsNewline = (\substr($out, -1) !== "\n");
             $this->stdoutBuffer .= $out;
         }
@@ -940,7 +1051,11 @@ public function writeStdout($out, $phase = PHP_OUTPUT_HANDLER_END)
         if ($phase & PHP_OUTPUT_HANDLER_END) {
             // Write an extra newline if stdout didn't end with one
             if ($this->outputWantsNewline) {
-                $this->output->writeln(\sprintf('<aside>%s</aside>', $this->config->useUnicode() ? '⏎' : '\\n'));
+                if (!$this->config->rawOutput() && !$this->config->outputIsPiped()) {
+                    $this->output->writeln(\sprintf('<aside>%s</aside>', $this->config->useUnicode() ? '⏎' : '\\n'));
+                } else {
+                    $this->output->writeln('');
+                }
                 $this->outputWantsNewline = false;
             }
 
@@ -961,8 +1076,9 @@ public function writeStdout($out, $phase = PHP_OUTPUT_HANDLER_END)
      * @see self::presentValue
      *
      * @param mixed $ret
+     * @param bool  $rawOutput Write raw var_export-style values
      */
-    public function writeReturnValue($ret)
+    public function writeReturnValue($ret, $rawOutput = false)
     {
         $this->lastExecSuccess = true;
 
@@ -971,10 +1087,16 @@ public function writeReturnValue($ret)
         }
 
         $this->context->setReturnValue($ret);
-        $ret    = $this->presentValue($ret);
-        $indent = \str_repeat(' ', \strlen(static::RETVAL));
 
-        $this->output->writeln(static::RETVAL . \str_replace(PHP_EOL, PHP_EOL . $indent, $ret));
+        if ($rawOutput) {
+            $formatted = \var_export($ret, true);
+        } else {
+            $indent = \str_repeat(' ', \strlen(static::RETVAL));
+            $formatted = $this->presentValue($ret);
+            $formatted = static::RETVAL . \str_replace(PHP_EOL, PHP_EOL . $indent, $formatted);
+        }
+
+        $this->output->writeln($formatted);
     }
 
     /**
@@ -991,7 +1113,23 @@ public function writeException(\Exception $e)
     {
         $this->lastExecSuccess = false;
         $this->context->setLastException($e);
-        $this->output->writeln($this->formatException($e));
+
+        $output = $this->output;
+        if ($output instanceof ConsoleOutput) {
+            $output = $output->getErrorOutput();
+        }
+        $output->writeln($this->formatException($e));
+
+        // Include an exception trace (as long as this isn't a BreakException).
+        if (!$e instanceof BreakException && $output->getVerbosity() >= OutputInterface::VERBOSITY_VERBOSE) {
+            $trace = TraceFormatter::formatTrace($e);
+            if (\count($trace) !== 0) {
+                $output->writeln('--');
+                $output->write($trace, true);
+                $output->writeln('');
+            }
+        }
+
         $this->resetCodeBuffer();
     }
 
@@ -1103,13 +1241,12 @@ public function execute($code, $throwExceptions = false)
      *
      * This allows us to:
      *
-     *     set_error_handler(array($psysh, 'handleError'));
+     *     set_error_handler([$psysh, 'handleError']);
      *
-     * Unlike ErrorException::throwException, this error handler respects the
-     * current error_reporting level; i.e. it logs warnings and notices, but
-     * doesn't throw an exception unless it's above the current error_reporting
-     * threshold. This should probably only be used in the inner execution loop
-     * of the shell, as most of the time a thrown exception is much more useful.
+     * Unlike ErrorException::throwException, this error handler respects error
+     * levels; i.e. it logs warnings and notices, but doesn't throw exceptions.
+     * This should probably only be used in the inner execution loop of the
+     * shell, as most of the time a thrown exception is much more useful.
      *
      * If the error type matches the `errorLoggingLevel` config, it will be
      * logged as well, regardless of the `error_reporting` level.
@@ -1117,7 +1254,7 @@ public function execute($code, $throwExceptions = false)
      * @see \Psy\Exception\ErrorException::throwException
      * @see \Psy\Shell::writeException
      *
-     * @throws \Psy\Exception\ErrorException depending on the current error_reporting level
+     * @throws \Psy\Exception\ErrorException depending on the error level
      *
      * @param int    $errno   Error type
      * @param string $errstr  Message
@@ -1126,10 +1263,16 @@ public function execute($code, $throwExceptions = false)
      */
     public function handleError($errno, $errstr, $errfile, $errline)
     {
-        if ($errno & \error_reporting()) {
+        // This is an error worth throwing.
+        //
+        // n.b. Technically we can't handle all of these in userland code, but
+        // we'll list 'em all for good measure
+        if ($errno & (E_ERROR | E_PARSE | E_CORE_ERROR | E_COMPILE_ERROR | E_USER_ERROR | E_RECOVERABLE_ERROR)) {
             ErrorException::throwException($errno, $errstr, $errfile, $errline);
-        } elseif ($errno & $this->config->errorLoggingLevel()) {
-            // log it and continue...
+        }
+
+        // Otherwise log it and continue.
+        if ($errno & \error_reporting() || $errno & $this->config->errorLoggingLevel()) {
             $this->writeException(new ErrorException($errstr, 0, $errno, $errfile, $errline));
         }
     }
@@ -1153,7 +1296,7 @@ protected function presentValue($val)
      *
      * @param string $input
      *
-     * @return null|BaseCommand
+     * @return BaseCommand|null
      */
     protected function getCommand($input)
     {
@@ -1182,10 +1325,14 @@ protected function hasCommand($input)
     /**
      * Get the current input prompt.
      *
-     * @return string
+     * @return string | null
      */
     protected function getPrompt()
     {
+        if ($this->output->isQuiet()) {
+            return null;
+        }
+
         if ($this->hasCode()) {
             return static::BUFF_PROMPT;
         }
@@ -1202,9 +1349,11 @@ protected function getPrompt()
      * If readline is enabled, this delegates to readline. Otherwise, it's an
      * ugly `fgets` call.
      *
+     * @param bool $interactive
+     *
      * @return string One line of user input
      */
-    protected function readline()
+    protected function readline($interactive = true)
     {
         if (!empty($this->inputBuffer)) {
             $line = \array_shift($this->inputBuffer);
@@ -1215,7 +1364,9 @@ protected function readline()
             return $line;
         }
 
-        if ($bracketedPaste = $this->config->useBracketedPaste()) {
+        $bracketedPaste = $interactive && $this->config->useBracketedPaste();
+
+        if ($bracketedPaste) {
             \printf("\e[?2004h"); // Enable bracketed paste
         }
 
@@ -1241,11 +1392,25 @@ protected function getHeader()
     /**
      * Get the current version of Psy Shell.
      *
+     * @deprecated call self::getVersionHeader instead
+     *
      * @return string
      */
     public function getVersion()
     {
-        $separator = $this->config->useUnicode() ? '—' : '-';
+        return self::getVersionHeader($this->config->useUnicode());
+    }
+
+    /**
+     * Get a pretty header including the current version of Psy Shell.
+     *
+     * @param bool $useUnicode
+     *
+     * @return string
+     */
+    public static function getVersionHeader($useUnicode = false)
+    {
+        $separator = $useUnicode ? '—' : '-';
 
         return \sprintf('Psy Shell %s (PHP %s %s %s)', self::VERSION, PHP_VERSION, $separator, PHP_SAPI);
     }
diff --git a/vendor/psy/psysh/src/Sudo.php b/vendor/psy/psysh/src/Sudo.php
index be354bef97..b06e1b320f 100644
--- a/vendor/psy/psysh/src/Sudo.php
+++ b/vendor/psy/psysh/src/Sudo.php
@@ -3,7 +3,7 @@
 /*
  * This file is part of Psy Shell.
  *
- * (c) 2012-2018 Justin Hileman
+ * (c) 2012-2020 Justin Hileman
  *
  * For the full copyright and license information, please view the LICENSE
  * file that was distributed with this source code.
diff --git a/vendor/psy/psysh/src/Sudo/SudoVisitor.php b/vendor/psy/psysh/src/Sudo/SudoVisitor.php
index 2b78a423ed..1d4cb15591 100644
--- a/vendor/psy/psysh/src/Sudo/SudoVisitor.php
+++ b/vendor/psy/psysh/src/Sudo/SudoVisitor.php
@@ -3,7 +3,7 @@
 /*
  * This file is part of Psy Shell.
  *
- * (c) 2012-2018 Justin Hileman
+ * (c) 2012-2020 Justin Hileman
  *
  * For the full copyright and license information, please view the LICENSE
  * file that was distributed with this source code.
@@ -24,6 +24,7 @@
 use PhpParser\Node\Name\FullyQualified as FullyQualifiedName;
 use PhpParser\Node\Scalar\String_;
 use PhpParser\NodeVisitorAbstract;
+use Psy\Sudo;
 
 /**
  * A PHP Parser node visitor which rewrites property and method access to use
@@ -33,8 +34,6 @@
  */
 class SudoVisitor extends NodeVisitorAbstract
 {
-    const SUDO_CLASS = 'Psy\Sudo';
-
     const PROPERTY_FETCH         = 'fetchProperty';
     const PROPERTY_ASSIGN        = 'assignProperty';
     const METHOD_CALL            = 'callMethod';
@@ -73,7 +72,7 @@ public function enterNode(Node $node)
             \array_unshift($args, new Arg($node->var));
 
             // not using prepareCall because the $node->args we started with are already Arg instances
-            return new StaticCall(new FullyQualifiedName(self::SUDO_CLASS), self::METHOD_CALL, $args);
+            return new StaticCall(new FullyQualifiedName(Sudo::class), self::METHOD_CALL, $args);
         } elseif ($node instanceof StaticPropertyFetch) {
             $class = $node->class instanceof Name ? $node->class->toString() : $node->class;
             $name = $node->name instanceof Identifier ? $node->name->toString() : $node->name;
@@ -102,7 +101,7 @@ public function enterNode(Node $node)
             \array_unshift($args, new Arg(\is_string($class) ? new String_($class) : $class));
 
             // not using prepareCall because the $node->args we started with are already Arg instances
-            return new StaticCall(new FullyQualifiedName(self::SUDO_CLASS), self::STATIC_CALL, $args);
+            return new StaticCall(new FullyQualifiedName(Sudo::class), self::STATIC_CALL, $args);
         } elseif ($node instanceof ClassConstFetch) {
             $class = $node->class instanceof Name ? $node->class->toString() : $node->class;
             $name  = $node->name instanceof Identifier ? $node->name->toString() : $node->name;
@@ -117,7 +116,7 @@ public function enterNode(Node $node)
 
     private function prepareCall($method, $args)
     {
-        return new StaticCall(new FullyQualifiedName(self::SUDO_CLASS), $method, \array_map(function ($arg) {
+        return new StaticCall(new FullyQualifiedName(Sudo::class), $method, \array_map(function ($arg) {
             return new Arg($arg);
         }, $args));
     }
diff --git a/vendor/psy/psysh/src/TabCompletion/AutoCompleter.php b/vendor/psy/psysh/src/TabCompletion/AutoCompleter.php
index 0751aa78bf..d5cc1f6651 100644
--- a/vendor/psy/psysh/src/TabCompletion/AutoCompleter.php
+++ b/vendor/psy/psysh/src/TabCompletion/AutoCompleter.php
@@ -3,7 +3,7 @@
 /*
  * This file is part of Psy Shell.
  *
- * (c) 2012-2018 Justin Hileman
+ * (c) 2012-2020 Justin Hileman
  *
  * For the full copyright and license information, please view the LICENSE
  * file that was distributed with this source code.
diff --git a/vendor/psy/psysh/src/TabCompletion/Matcher/AbstractContextAwareMatcher.php b/vendor/psy/psysh/src/TabCompletion/Matcher/AbstractContextAwareMatcher.php
index 91816b2026..f7da443b96 100644
--- a/vendor/psy/psysh/src/TabCompletion/Matcher/AbstractContextAwareMatcher.php
+++ b/vendor/psy/psysh/src/TabCompletion/Matcher/AbstractContextAwareMatcher.php
@@ -3,7 +3,7 @@
 /*
  * This file is part of Psy Shell.
  *
- * (c) 2012-2018 Justin Hileman
+ * (c) 2012-2020 Justin Hileman
  *
  * For the full copyright and license information, please view the LICENSE
  * file that was distributed with this source code.
diff --git a/vendor/psy/psysh/src/TabCompletion/Matcher/AbstractDefaultParametersMatcher.php b/vendor/psy/psysh/src/TabCompletion/Matcher/AbstractDefaultParametersMatcher.php
index c44af36ad2..a93c7f7f29 100644
--- a/vendor/psy/psysh/src/TabCompletion/Matcher/AbstractDefaultParametersMatcher.php
+++ b/vendor/psy/psysh/src/TabCompletion/Matcher/AbstractDefaultParametersMatcher.php
@@ -3,7 +3,7 @@
 /*
  * This file is part of Psy Shell.
  *
- * (c) 2012-2018 Justin Hileman
+ * (c) 2012-2020 Justin Hileman
  *
  * For the full copyright and license information, please view the LICENSE
  * file that was distributed with this source code.
diff --git a/vendor/psy/psysh/src/TabCompletion/Matcher/AbstractMatcher.php b/vendor/psy/psysh/src/TabCompletion/Matcher/AbstractMatcher.php
index 63b7154738..e42588945c 100644
--- a/vendor/psy/psysh/src/TabCompletion/Matcher/AbstractMatcher.php
+++ b/vendor/psy/psysh/src/TabCompletion/Matcher/AbstractMatcher.php
@@ -3,7 +3,7 @@
 /*
  * This file is part of Psy Shell.
  *
- * (c) 2012-2018 Justin Hileman
+ * (c) 2012-2020 Justin Hileman
  *
  * For the full copyright and license information, please view the LICENSE
  * file that was distributed with this source code.
@@ -141,8 +141,8 @@ public static function hasSyntax($token, $syntax = self::VAR_SYNTAX)
     /**
      * Check whether $token type is $which.
      *
-     * @param string $which A PHP token type
      * @param mixed  $token A PHP token (see token_get_all)
+     * @param string $which A PHP token type
      *
      * @return bool
      */
diff --git a/vendor/psy/psysh/src/TabCompletion/Matcher/ClassAttributesMatcher.php b/vendor/psy/psysh/src/TabCompletion/Matcher/ClassAttributesMatcher.php
index 8e976b0a26..e4244009ad 100644
--- a/vendor/psy/psysh/src/TabCompletion/Matcher/ClassAttributesMatcher.php
+++ b/vendor/psy/psysh/src/TabCompletion/Matcher/ClassAttributesMatcher.php
@@ -3,7 +3,7 @@
 /*
  * This file is part of Psy Shell.
  *
- * (c) 2012-2018 Justin Hileman
+ * (c) 2012-2020 Justin Hileman
  *
  * For the full copyright and license information, please view the LICENSE
  * file that was distributed with this source code.
diff --git a/vendor/psy/psysh/src/TabCompletion/Matcher/ClassMethodDefaultParametersMatcher.php b/vendor/psy/psysh/src/TabCompletion/Matcher/ClassMethodDefaultParametersMatcher.php
index 3a269a3534..0860e0dc1e 100644
--- a/vendor/psy/psysh/src/TabCompletion/Matcher/ClassMethodDefaultParametersMatcher.php
+++ b/vendor/psy/psysh/src/TabCompletion/Matcher/ClassMethodDefaultParametersMatcher.php
@@ -3,7 +3,7 @@
 /*
  * This file is part of Psy Shell.
  *
- * (c) 2012-2018 Justin Hileman
+ * (c) 2012-2020 Justin Hileman
  *
  * For the full copyright and license information, please view the LICENSE
  * file that was distributed with this source code.
diff --git a/vendor/psy/psysh/src/TabCompletion/Matcher/ClassMethodsMatcher.php b/vendor/psy/psysh/src/TabCompletion/Matcher/ClassMethodsMatcher.php
index d278c18bfd..e3778fdf0b 100644
--- a/vendor/psy/psysh/src/TabCompletion/Matcher/ClassMethodsMatcher.php
+++ b/vendor/psy/psysh/src/TabCompletion/Matcher/ClassMethodsMatcher.php
@@ -3,7 +3,7 @@
 /*
  * This file is part of Psy Shell.
  *
- * (c) 2012-2018 Justin Hileman
+ * (c) 2012-2020 Justin Hileman
  *
  * For the full copyright and license information, please view the LICENSE
  * file that was distributed with this source code.
diff --git a/vendor/psy/psysh/src/TabCompletion/Matcher/ClassNamesMatcher.php b/vendor/psy/psysh/src/TabCompletion/Matcher/ClassNamesMatcher.php
index 844b3d2ae3..ec11326b65 100644
--- a/vendor/psy/psysh/src/TabCompletion/Matcher/ClassNamesMatcher.php
+++ b/vendor/psy/psysh/src/TabCompletion/Matcher/ClassNamesMatcher.php
@@ -3,7 +3,7 @@
 /*
  * This file is part of Psy Shell.
  *
- * (c) 2012-2018 Justin Hileman
+ * (c) 2012-2020 Justin Hileman
  *
  * For the full copyright and license information, please view the LICENSE
  * file that was distributed with this source code.
@@ -40,7 +40,7 @@ function ($className) use ($class) {
                 return \implode('\\', \array_slice($pieces, $nsPos, \count($pieces)));
             },
             \array_filter(
-                \get_declared_classes(),
+                \array_merge(\get_declared_classes(), \get_declared_interfaces()),
                 function ($className) use ($quotedClass) {
                     return AbstractMatcher::startsWith($quotedClass, $className);
                 }
diff --git a/vendor/psy/psysh/src/TabCompletion/Matcher/CommandsMatcher.php b/vendor/psy/psysh/src/TabCompletion/Matcher/CommandsMatcher.php
index e3d8423a60..bdeb45d4c3 100644
--- a/vendor/psy/psysh/src/TabCompletion/Matcher/CommandsMatcher.php
+++ b/vendor/psy/psysh/src/TabCompletion/Matcher/CommandsMatcher.php
@@ -3,7 +3,7 @@
 /*
  * This file is part of Psy Shell.
  *
- * (c) 2012-2018 Justin Hileman
+ * (c) 2012-2020 Justin Hileman
  *
  * For the full copyright and license information, please view the LICENSE
  * file that was distributed with this source code.
diff --git a/vendor/psy/psysh/src/TabCompletion/Matcher/ConstantsMatcher.php b/vendor/psy/psysh/src/TabCompletion/Matcher/ConstantsMatcher.php
index 71be18f58c..5d5381260b 100644
--- a/vendor/psy/psysh/src/TabCompletion/Matcher/ConstantsMatcher.php
+++ b/vendor/psy/psysh/src/TabCompletion/Matcher/ConstantsMatcher.php
@@ -3,7 +3,7 @@
 /*
  * This file is part of Psy Shell.
  *
- * (c) 2012-2018 Justin Hileman
+ * (c) 2012-2020 Justin Hileman
  *
  * For the full copyright and license information, please view the LICENSE
  * file that was distributed with this source code.
diff --git a/vendor/psy/psysh/src/TabCompletion/Matcher/FunctionDefaultParametersMatcher.php b/vendor/psy/psysh/src/TabCompletion/Matcher/FunctionDefaultParametersMatcher.php
index 66d9ea1dc7..e1277c2eec 100644
--- a/vendor/psy/psysh/src/TabCompletion/Matcher/FunctionDefaultParametersMatcher.php
+++ b/vendor/psy/psysh/src/TabCompletion/Matcher/FunctionDefaultParametersMatcher.php
@@ -3,7 +3,7 @@
 /*
  * This file is part of Psy Shell.
  *
- * (c) 2012-2018 Justin Hileman
+ * (c) 2012-2020 Justin Hileman
  *
  * For the full copyright and license information, please view the LICENSE
  * file that was distributed with this source code.
diff --git a/vendor/psy/psysh/src/TabCompletion/Matcher/FunctionsMatcher.php b/vendor/psy/psysh/src/TabCompletion/Matcher/FunctionsMatcher.php
index 3aa12a1f05..7045423a2f 100644
--- a/vendor/psy/psysh/src/TabCompletion/Matcher/FunctionsMatcher.php
+++ b/vendor/psy/psysh/src/TabCompletion/Matcher/FunctionsMatcher.php
@@ -3,7 +3,7 @@
 /*
  * This file is part of Psy Shell.
  *
- * (c) 2012-2018 Justin Hileman
+ * (c) 2012-2020 Justin Hileman
  *
  * For the full copyright and license information, please view the LICENSE
  * file that was distributed with this source code.
diff --git a/vendor/psy/psysh/src/TabCompletion/Matcher/KeywordsMatcher.php b/vendor/psy/psysh/src/TabCompletion/Matcher/KeywordsMatcher.php
index 9d0deeeea0..3c84b3dc15 100644
--- a/vendor/psy/psysh/src/TabCompletion/Matcher/KeywordsMatcher.php
+++ b/vendor/psy/psysh/src/TabCompletion/Matcher/KeywordsMatcher.php
@@ -3,7 +3,7 @@
 /*
  * This file is part of Psy Shell.
  *
- * (c) 2012-2018 Justin Hileman
+ * (c) 2012-2020 Justin Hileman
  *
  * For the full copyright and license information, please view the LICENSE
  * file that was distributed with this source code.
diff --git a/vendor/psy/psysh/src/TabCompletion/Matcher/MongoClientMatcher.php b/vendor/psy/psysh/src/TabCompletion/Matcher/MongoClientMatcher.php
index fb51bf7d27..69c7e9bbd4 100644
--- a/vendor/psy/psysh/src/TabCompletion/Matcher/MongoClientMatcher.php
+++ b/vendor/psy/psysh/src/TabCompletion/Matcher/MongoClientMatcher.php
@@ -3,7 +3,7 @@
 /*
  * This file is part of Psy Shell.
  *
- * (c) 2012-2018 Justin Hileman
+ * (c) 2012-2020 Justin Hileman
  *
  * For the full copyright and license information, please view the LICENSE
  * file that was distributed with this source code.
diff --git a/vendor/psy/psysh/src/TabCompletion/Matcher/MongoDatabaseMatcher.php b/vendor/psy/psysh/src/TabCompletion/Matcher/MongoDatabaseMatcher.php
index fb1b9bbfb6..8775e22118 100644
--- a/vendor/psy/psysh/src/TabCompletion/Matcher/MongoDatabaseMatcher.php
+++ b/vendor/psy/psysh/src/TabCompletion/Matcher/MongoDatabaseMatcher.php
@@ -3,7 +3,7 @@
 /*
  * This file is part of Psy Shell.
  *
- * (c) 2012-2018 Justin Hileman
+ * (c) 2012-2020 Justin Hileman
  *
  * For the full copyright and license information, please view the LICENSE
  * file that was distributed with this source code.
diff --git a/vendor/psy/psysh/src/TabCompletion/Matcher/ObjectAttributesMatcher.php b/vendor/psy/psysh/src/TabCompletion/Matcher/ObjectAttributesMatcher.php
index ff44f5ac12..5a96444f57 100644
--- a/vendor/psy/psysh/src/TabCompletion/Matcher/ObjectAttributesMatcher.php
+++ b/vendor/psy/psysh/src/TabCompletion/Matcher/ObjectAttributesMatcher.php
@@ -3,7 +3,7 @@
 /*
  * This file is part of Psy Shell.
  *
- * (c) 2012-2018 Justin Hileman
+ * (c) 2012-2020 Justin Hileman
  *
  * For the full copyright and license information, please view the LICENSE
  * file that was distributed with this source code.
diff --git a/vendor/psy/psysh/src/TabCompletion/Matcher/ObjectMethodDefaultParametersMatcher.php b/vendor/psy/psysh/src/TabCompletion/Matcher/ObjectMethodDefaultParametersMatcher.php
index 16fa0189fe..9c62fcfcbc 100644
--- a/vendor/psy/psysh/src/TabCompletion/Matcher/ObjectMethodDefaultParametersMatcher.php
+++ b/vendor/psy/psysh/src/TabCompletion/Matcher/ObjectMethodDefaultParametersMatcher.php
@@ -3,7 +3,7 @@
 /*
  * This file is part of Psy Shell.
  *
- * (c) 2012-2018 Justin Hileman
+ * (c) 2012-2020 Justin Hileman
  *
  * For the full copyright and license information, please view the LICENSE
  * file that was distributed with this source code.
diff --git a/vendor/psy/psysh/src/TabCompletion/Matcher/ObjectMethodsMatcher.php b/vendor/psy/psysh/src/TabCompletion/Matcher/ObjectMethodsMatcher.php
index 23c751c7b0..01300c78bc 100644
--- a/vendor/psy/psysh/src/TabCompletion/Matcher/ObjectMethodsMatcher.php
+++ b/vendor/psy/psysh/src/TabCompletion/Matcher/ObjectMethodsMatcher.php
@@ -3,7 +3,7 @@
 /*
  * This file is part of Psy Shell.
  *
- * (c) 2012-2018 Justin Hileman
+ * (c) 2012-2020 Justin Hileman
  *
  * For the full copyright and license information, please view the LICENSE
  * file that was distributed with this source code.
diff --git a/vendor/psy/psysh/src/TabCompletion/Matcher/VariablesMatcher.php b/vendor/psy/psysh/src/TabCompletion/Matcher/VariablesMatcher.php
index a142b7b2e1..f2438d3d1a 100644
--- a/vendor/psy/psysh/src/TabCompletion/Matcher/VariablesMatcher.php
+++ b/vendor/psy/psysh/src/TabCompletion/Matcher/VariablesMatcher.php
@@ -3,7 +3,7 @@
 /*
  * This file is part of Psy Shell.
  *
- * (c) 2012-2018 Justin Hileman
+ * (c) 2012-2020 Justin Hileman
  *
  * For the full copyright and license information, please view the LICENSE
  * file that was distributed with this source code.
diff --git a/vendor/psy/psysh/src/Util/Docblock.php b/vendor/psy/psysh/src/Util/Docblock.php
index 750210baa1..f251c864db 100644
--- a/vendor/psy/psysh/src/Util/Docblock.php
+++ b/vendor/psy/psysh/src/Util/Docblock.php
@@ -3,7 +3,7 @@
 /*
  * This file is part of Psy Shell.
  *
- * (c) 2012-2018 Justin Hileman
+ * (c) 2012-2020 Justin Hileman
  *
  * For the full copyright and license information, please view the LICENSE
  * file that was distributed with this source code.
@@ -111,6 +111,11 @@ protected static function prefixLength(array $lines)
         $first = \reset($lines);
         $last  = \end($lines);
 
+        // Special case for single-line comments
+        if (\count($lines) === 1) {
+            return \strspn($first, "* \t\n\r\0\x0B");
+        }
+
         // find the longest common substring
         $count = \min(\strlen($first), \strlen($last));
         for ($i = 0; $i < $count; $i++) {
diff --git a/vendor/psy/psysh/src/Util/Json.php b/vendor/psy/psysh/src/Util/Json.php
index 471f10e7d8..b7059033a6 100644
--- a/vendor/psy/psysh/src/Util/Json.php
+++ b/vendor/psy/psysh/src/Util/Json.php
@@ -3,7 +3,7 @@
 /*
  * This file is part of Psy Shell.
  *
- * (c) 2012-2018 Justin Hileman
+ * (c) 2012-2020 Justin Hileman
  *
  * For the full copyright and license information, please view the LICENSE
  * file that was distributed with this source code.
diff --git a/vendor/psy/psysh/src/Util/Mirror.php b/vendor/psy/psysh/src/Util/Mirror.php
index 09c0b5b9af..d7d02836a8 100644
--- a/vendor/psy/psysh/src/Util/Mirror.php
+++ b/vendor/psy/psysh/src/Util/Mirror.php
@@ -3,7 +3,7 @@
 /*
  * This file is part of Psy Shell.
  *
- * (c) 2012-2018 Justin Hileman
+ * (c) 2012-2020 Justin Hileman
  *
  * For the full copyright and license information, please view the LICENSE
  * file that was distributed with this source code.
@@ -14,6 +14,7 @@
 use Psy\Exception\RuntimeException;
 use Psy\Reflection\ReflectionClassConstant;
 use Psy\Reflection\ReflectionConstant_;
+use Psy\Reflection\ReflectionNamespace;
 
 /**
  * A utility class for getting Reflectors.
@@ -65,22 +66,18 @@ public static function get($value, $member = null, $filter = 15)
         } elseif ($filter & self::STATIC_PROPERTY && $class->hasProperty($member) && $class->getProperty($member)->isStatic()) {
             return $class->getProperty($member);
         } else {
-            throw new RuntimeException(\sprintf(
-                'Unknown member %s on class %s',
-                $member,
-                \is_object($value) ? \get_class($value) : $value
-            ));
+            throw new RuntimeException(\sprintf('Unknown member %s on class %s', $member, \is_object($value) ? \get_class($value) : $value));
         }
     }
 
     /**
-     * Get a ReflectionClass (or ReflectionObject) if possible.
+     * Get a ReflectionClass (or ReflectionObject, or ReflectionNamespace) if possible.
      *
-     * @throws \InvalidArgumentException if $value is not a class name or instance
+     * @throws \InvalidArgumentException if $value is not a namespace or class name or instance
      *
      * @param mixed $value
      *
-     * @return \ReflectionClass
+     * @return \ReflectionClass|ReflectionNamespace
      */
     private static function getClass($value)
     {
@@ -90,10 +87,64 @@ private static function getClass($value)
 
         if (!\is_string($value)) {
             throw new \InvalidArgumentException('Mirror expects an object or class');
-        } elseif (!\class_exists($value) && !\interface_exists($value) && !\trait_exists($value)) {
-            throw new \InvalidArgumentException('Unknown class or function: ' . $value);
         }
 
-        return new \ReflectionClass($value);
+        if (\class_exists($value) || \interface_exists($value) || \trait_exists($value)) {
+            return new \ReflectionClass($value);
+        }
+
+        $namespace = \preg_replace('/(^\\\\|\\\\$)/', '', $value);
+        if (self::namespaceExists($namespace)) {
+            return new ReflectionNamespace($namespace);
+        }
+
+        throw new \InvalidArgumentException('Unknown namespace, class or function: ' . $value);
+    }
+
+    /**
+     * Check declared namespaces for a given namespace.
+     */
+    private static function namespaceExists($value)
+    {
+        return \in_array(\strtolower($value), self::getDeclaredNamespaces());
+    }
+
+    /**
+     * Get an array of all currently declared namespaces.
+     *
+     * Note that this relies on at least one function, class, interface, trait
+     * or constant to have been declared in that namespace.
+     */
+    private static function getDeclaredNamespaces()
+    {
+        $functions = \get_defined_functions();
+
+        $allNames = \array_merge(
+            $functions['internal'],
+            $functions['user'],
+            \get_declared_classes(),
+            \get_declared_interfaces(),
+            \get_declared_traits(),
+            \array_keys(\get_defined_constants())
+        );
+
+        $namespaces = [];
+        foreach ($allNames as $name) {
+            $chunks = \explode('\\', \strtolower($name));
+
+            // the last one is the function or class or whatever...
+            \array_pop($chunks);
+
+            while (!empty($chunks)) {
+                $namespaces[\implode('\\', $chunks)] = true;
+                \array_pop($chunks);
+            }
+        }
+
+        $namespaceNames = \array_keys($namespaces);
+
+        \sort($namespaceNames);
+
+        return $namespaceNames;
     }
 }
diff --git a/vendor/psy/psysh/src/Util/Str.php b/vendor/psy/psysh/src/Util/Str.php
index 47d5239968..8fc0abc1a4 100644
--- a/vendor/psy/psysh/src/Util/Str.php
+++ b/vendor/psy/psysh/src/Util/Str.php
@@ -3,7 +3,7 @@
 /*
  * This file is part of Psy Shell.
  *
- * (c) 2012-2018 Justin Hileman
+ * (c) 2012-2020 Justin Hileman
  *
  * For the full copyright and license information, please view the LICENSE
  * file that was distributed with this source code.
diff --git a/vendor/psy/psysh/src/VarDumper/Cloner.php b/vendor/psy/psysh/src/VarDumper/Cloner.php
index eb6c65e195..bbb658f82a 100644
--- a/vendor/psy/psysh/src/VarDumper/Cloner.php
+++ b/vendor/psy/psysh/src/VarDumper/Cloner.php
@@ -3,7 +3,7 @@
 /*
  * This file is part of Psy Shell.
  *
- * (c) 2012-2018 Justin Hileman
+ * (c) 2012-2020 Justin Hileman
  *
  * For the full copyright and license information, please view the LICENSE
  * file that was distributed with this source code.
diff --git a/vendor/psy/psysh/src/VarDumper/Dumper.php b/vendor/psy/psysh/src/VarDumper/Dumper.php
index cc13b265a5..0dbddb0ec2 100644
--- a/vendor/psy/psysh/src/VarDumper/Dumper.php
+++ b/vendor/psy/psysh/src/VarDumper/Dumper.php
@@ -3,7 +3,7 @@
 /*
  * This file is part of Psy Shell.
  *
- * (c) 2012-2018 Justin Hileman
+ * (c) 2012-2020 Justin Hileman
  *
  * For the full copyright and license information, please view the LICENSE
  * file that was distributed with this source code.
diff --git a/vendor/psy/psysh/src/VarDumper/Presenter.php b/vendor/psy/psysh/src/VarDumper/Presenter.php
index 4f821e0cd8..1e8095017c 100644
--- a/vendor/psy/psysh/src/VarDumper/Presenter.php
+++ b/vendor/psy/psysh/src/VarDumper/Presenter.php
@@ -3,7 +3,7 @@
 /*
  * This file is part of Psy Shell.
  *
- * (c) 2012-2018 Justin Hileman
+ * (c) 2012-2020 Justin Hileman
  *
  * For the full copyright and license information, please view the LICENSE
  * file that was distributed with this source code.
diff --git a/vendor/psy/psysh/src/VarDumper/PresenterAware.php b/vendor/psy/psysh/src/VarDumper/PresenterAware.php
index 1645c604e4..d0c02ae333 100644
--- a/vendor/psy/psysh/src/VarDumper/PresenterAware.php
+++ b/vendor/psy/psysh/src/VarDumper/PresenterAware.php
@@ -3,7 +3,7 @@
 /*
  * This file is part of Psy Shell.
  *
- * (c) 2012-2018 Justin Hileman
+ * (c) 2012-2020 Justin Hileman
  *
  * For the full copyright and license information, please view the LICENSE
  * file that was distributed with this source code.
diff --git a/vendor/psy/psysh/src/VersionUpdater/Checker.php b/vendor/psy/psysh/src/VersionUpdater/Checker.php
index c4044870df..ffefc912b5 100644
--- a/vendor/psy/psysh/src/VersionUpdater/Checker.php
+++ b/vendor/psy/psysh/src/VersionUpdater/Checker.php
@@ -3,7 +3,7 @@
 /*
  * This file is part of Psy Shell.
  *
- * (c) 2012-2018 Justin Hileman
+ * (c) 2012-2020 Justin Hileman
  *
  * For the full copyright and license information, please view the LICENSE
  * file that was distributed with this source code.
diff --git a/vendor/psy/psysh/src/VersionUpdater/GitHubChecker.php b/vendor/psy/psysh/src/VersionUpdater/GitHubChecker.php
index 40cfc2e2f8..923a0ec9b8 100644
--- a/vendor/psy/psysh/src/VersionUpdater/GitHubChecker.php
+++ b/vendor/psy/psysh/src/VersionUpdater/GitHubChecker.php
@@ -3,7 +3,7 @@
 /*
  * This file is part of Psy Shell.
  *
- * (c) 2012-2018 Justin Hileman
+ * (c) 2012-2020 Justin Hileman
  *
  * For the full copyright and license information, please view the LICENSE
  * file that was distributed with this source code.
diff --git a/vendor/psy/psysh/src/VersionUpdater/IntervalChecker.php b/vendor/psy/psysh/src/VersionUpdater/IntervalChecker.php
index 7e0da4327a..ea5ceef47f 100644
--- a/vendor/psy/psysh/src/VersionUpdater/IntervalChecker.php
+++ b/vendor/psy/psysh/src/VersionUpdater/IntervalChecker.php
@@ -3,7 +3,7 @@
 /*
  * This file is part of Psy Shell.
  *
- * (c) 2012-2018 Justin Hileman
+ * (c) 2012-2020 Justin Hileman
  *
  * For the full copyright and license information, please view the LICENSE
  * file that was distributed with this source code.
diff --git a/vendor/psy/psysh/src/VersionUpdater/NoopChecker.php b/vendor/psy/psysh/src/VersionUpdater/NoopChecker.php
index c5c9bcb4ee..22340f7634 100644
--- a/vendor/psy/psysh/src/VersionUpdater/NoopChecker.php
+++ b/vendor/psy/psysh/src/VersionUpdater/NoopChecker.php
@@ -3,7 +3,7 @@
 /*
  * This file is part of Psy Shell.
  *
- * (c) 2012-2018 Justin Hileman
+ * (c) 2012-2020 Justin Hileman
  *
  * For the full copyright and license information, please view the LICENSE
  * file that was distributed with this source code.
diff --git a/vendor/psy/psysh/src/functions.php b/vendor/psy/psysh/src/functions.php
index 4e875bbabc..b42dcdb246 100644
--- a/vendor/psy/psysh/src/functions.php
+++ b/vendor/psy/psysh/src/functions.php
@@ -3,7 +3,7 @@
 /*
  * This file is part of Psy Shell.
  *
- * (c) 2012-2018 Justin Hileman
+ * (c) 2012-2020 Justin Hileman
  *
  * For the full copyright and license information, please view the LICENSE
  * file that was distributed with this source code.
@@ -11,6 +11,7 @@
 
 namespace Psy;
 
+use Psy\ExecutionLoop\ProcessForker;
 use Psy\VersionUpdater\GitHubChecker;
 use Symfony\Component\Console\Input\ArgvInput;
 use Symfony\Component\Console\Input\InputArgument;
@@ -18,7 +19,7 @@
 use Symfony\Component\Console\Input\InputOption;
 use XdgBaseDir\Xdg;
 
-if (!\function_exists('Psy\sh')) {
+if (!\function_exists('Psy\\sh')) {
     /**
      * Command to return the eval-able code to startup PsySH.
      *
@@ -32,7 +33,7 @@ function sh()
     }
 }
 
-if (!\function_exists('Psy\debug')) {
+if (!\function_exists('Psy\\debug')) {
     /**
      * Invoke a Psy Shell from the current context.
      *
@@ -70,7 +71,7 @@ function sh()
      *         }
      *     }
      *
-     * @param array         $vars   Scope variables from the calling context (default: array())
+     * @param array         $vars   Scope variables from the calling context (default: [])
      * @param object|string $bindTo Bound object ($this) or class (self) value for the shell
      *
      * @return array Scope variables from the debugger session
@@ -101,7 +102,7 @@ function debug(array $vars = [], $bindTo = null)
     }
 }
 
-if (!\function_exists('Psy\info')) {
+if (!\function_exists('Psy\\info')) {
     /**
      * Get a bunch of debugging info about the current PsySH environment and
      * configuration.
@@ -135,6 +136,7 @@ function info(Configuration $config = null)
         };
 
         $config = $lastConfig ?: new Configuration();
+        $configEnv = (isset($_SERVER['PSYSH_CONFIG']) && $_SERVER['PSYSH_CONFIG']) ? $_SERVER['PSYSH_CONFIG'] : false;
 
         $core = [
             'PsySH version'       => Shell::VERSION,
@@ -146,7 +148,7 @@ function info(Configuration $config = null)
             'config file'         => [
                 'default config file' => $prettyPath($config->getConfigFile()),
                 'local config file'   => $prettyPath($config->getLocalConfigFile()),
-                'PSYSH_CONFIG env'    => $prettyPath(\getenv('PSYSH_CONFIG')),
+                'PSYSH_CONFIG env'    => $prettyPath($configEnv),
             ],
             // 'config dir'  => $config->getConfigDir(),
             // 'data dir'    => $config->getDataDir(),
@@ -170,6 +172,11 @@ function info(Configuration $config = null)
             'update cache file'      => $prettyPath($config->getUpdateCheckCacheFile()),
         ];
 
+        $input = [
+            'interactive mode'  => $config->interactiveMode(),
+            'input interactive' => $config->getInputInteractive(),
+        ];
+
         if ($config->hasReadline()) {
             $info = \readline_info();
 
@@ -192,16 +199,27 @@ function info(Configuration $config = null)
             ];
         }
 
+        $output = [
+            'color mode'       => $config->colorMode(),
+            'output decorated' => $config->getOutputDecorated(),
+            'output verbosity' => $config->verbosity(),
+        ];
+
         $pcntl = [
-            'pcntl available' => \function_exists('pcntl_signal'),
-            'posix available' => \function_exists('posix_getpid'),
+            'pcntl available' => ProcessForker::isPcntlSupported(),
+            'posix available' => ProcessForker::isPosixSupported(),
         ];
 
-        $disabledFuncs = \array_map('trim', \explode(',', \ini_get('disable_functions')));
-        if (\in_array('pcntl_signal', $disabledFuncs) || \in_array('pcntl_fork', $disabledFuncs)) {
-            $pcntl['pcntl disabled'] = true;
+        if ($disabledPcntl = ProcessForker::disabledPcntlFunctions()) {
+            $pcntl['disabled pcntl functions'] = $disabledPcntl;
         }
 
+        if ($disabledPosix = ProcessForker::disabledPosixFunctions()) {
+            $pcntl['disabled posix functions'] = $disabledPosix;
+        }
+
+        $pcntl['use pcntl'] = $config->usePcntl();
+
         $history = [
             'history file'     => $prettyPath($config->getHistoryFile()),
             'history size'     => $config->getHistorySize(),
@@ -243,7 +261,6 @@ function info(Configuration $config = null)
 
         $autocomplete = [
             'tab completion enabled' => $config->useTabCompletion(),
-            'custom matchers'        => \array_map('get_class', $config->getTabCompletionMatchers()),
             'bracketed paste'        => $config->useBracketedPaste(),
         ];
 
@@ -257,11 +274,11 @@ function info(Configuration $config = null)
 
         // @todo Show Presenter / custom casters.
 
-        return \array_merge($core, \compact('updates', 'pcntl', 'readline', 'history', 'docs', 'autocomplete'));
+        return \array_merge($core, \compact('updates', 'pcntl', 'input', 'readline', 'output', 'history', 'docs', 'autocomplete'));
     }
 }
 
-if (!\function_exists('Psy\bin')) {
+if (!\function_exists('Psy\\bin')) {
     /**
      * `psysh` command line executable.
      *
@@ -270,50 +287,68 @@ function info(Configuration $config = null)
     function bin()
     {
         return function () {
+            if (!isset($_SERVER['PSYSH_IGNORE_ENV']) || !$_SERVER['PSYSH_IGNORE_ENV']) {
+                if (defined('HHVM_VERSION_ID') && \HHVM_VERSION_ID < 31800) {
+                    fwrite(STDERR, 'HHVM 3.18 or higher is required. You can set the environment variable PSYSH_IGNORE_ENV=1 to override this restriction and proceed anyway.' . PHP_EOL);
+                    exit(1);
+                }
+
+                if (defined('HHVM_VERSION_ID') && \HHVM_VERSION_ID > 39999) {
+                    fwrite(STDERR, 'HHVM 4 or higher is not supported. You can set the environment variable PSYSH_IGNORE_ENV=1 to override this restriction and proceed anyway.' . PHP_EOL);
+                    exit(1);
+                }
+
+                if (\PHP_VERSION_ID < 50509) {
+                    fwrite(STDERR, 'PHP 5.5.9 or higher is required. You can set the environment variable PSYSH_IGNORE_ENV=1 to override this restriction and proceed anyway.' . PHP_EOL);
+                    exit(1);
+                }
+
+                if (\PHP_VERSION_ID > 89999) {
+                    fwrite(STDERR, 'PHP 9 or higher is not supported. You can set the environment variable PSYSH_IGNORE_ENV=1 to override this restriction and proceed anyway.' . PHP_EOL);
+                    exit(1);
+                }
+
+                if (!function_exists('json_encode')) {
+                    fwrite(STDERR, 'The JSON extension is required. Please install it. You can set the environment variable PSYSH_IGNORE_ENV=1 to override this restriction and proceed anyway.' . PHP_EOL);
+                    exit(1);
+                }
+
+                if (!function_exists('token_get_all')) {
+                    fwrite(STDERR, 'The Tokenizer extension is required. Please install it. You can set the environment variable PSYSH_IGNORE_ENV=1 to override this restriction and proceed anyway.' . PHP_EOL);
+                    exit(1);
+                }
+            }
+
             $usageException = null;
 
             $input = new ArgvInput();
             try {
-                $input->bind(new InputDefinition([
-                    new InputOption('help',     'h',  InputOption::VALUE_NONE),
-                    new InputOption('config',   'c',  InputOption::VALUE_REQUIRED),
-                    new InputOption('version',  'v',  InputOption::VALUE_NONE),
-                    new InputOption('cwd',      null, InputOption::VALUE_REQUIRED),
-                    new InputOption('color',    null, InputOption::VALUE_NONE),
-                    new InputOption('no-color', null, InputOption::VALUE_NONE),
+                $input->bind(new InputDefinition(\array_merge(Configuration::getInputOptions(), [
+                    new InputOption('help',    'h', InputOption::VALUE_NONE),
+                    new InputOption('version', 'V', InputOption::VALUE_NONE),
 
                     new InputArgument('include', InputArgument::IS_ARRAY),
-                ]));
+                ])));
             } catch (\RuntimeException $e) {
                 $usageException = $e;
             }
 
-            $config = [];
-
-            // Handle --config
-            if ($configFile = $input->getOption('config')) {
-                $config['configFile'] = $configFile;
-            }
-
-            // Handle --color and --no-color
-            if ($input->getOption('color') && $input->getOption('no-color')) {
-                $usageException = new \RuntimeException('Using both "--color" and "--no-color" options is invalid');
-            } elseif ($input->getOption('color')) {
-                $config['colorMode'] = Configuration::COLOR_MODE_FORCED;
-            } elseif ($input->getOption('no-color')) {
-                $config['colorMode'] = Configuration::COLOR_MODE_DISABLED;
+            try {
+                $config = Configuration::fromInput($input);
+            } catch (\InvalidArgumentException $e) {
+                $usageException = $e;
             }
 
-            $shell = new Shell(new Configuration($config));
-
             // Handle --help
             if ($usageException !== null || $input->getOption('help')) {
                 if ($usageException !== null) {
                     echo $usageException->getMessage() . PHP_EOL . PHP_EOL;
                 }
 
-                $version = $shell->getVersion();
-                $name    = \basename(\reset($_SERVER['argv']));
+                $version = Shell::getVersionHeader(false);
+                $argv    = isset($_SERVER['argv']) ? $_SERVER['argv'] : [];
+                $name    = $argv ? \basename(\reset($argv)) : 'psysh';
+
                 echo <<<EOL
 $version
 
@@ -321,12 +356,17 @@ function bin()
   $name [--version] [--help] [files...]
 
 Options:
-  --help     -h Display this help message.
-  --config   -c Use an alternate PsySH config file location.
-  --cwd         Use an alternate working directory.
-  --version  -v Display the PsySH version.
-  --color       Force colors in output.
-  --no-color    Disable colors in output.
+  -h, --help            Display this help message.
+  -c, --config FILE     Use an alternate PsySH config file location.
+      --cwd PATH        Use an alternate working directory.
+  -V, --version         Display the PsySH version.
+      --color           Force colors in output.
+      --no-color        Disable colors in output.
+  -i, --interactive     Force PsySH to run in interactive mode.
+  -n, --no-interactive  Run PsySH without interactive input. Requires input from stdin.
+  -r, --raw-output      Print var_export-style return values (for non-interactive input)
+  -q, --quiet           Shhhhhh.
+  -v|vv|vvv, --verbose  Increase the verbosity of messages.
 
 EOL;
                 exit($usageException === null ? 0 : 1);
@@ -334,10 +374,12 @@ function bin()
 
             // Handle --version
             if ($input->getOption('version')) {
-                echo $shell->getVersion() . PHP_EOL;
+                echo Shell::getVersionHeader($config->useUnicode()) . PHP_EOL;
                 exit(0);
             }
 
+            $shell = new Shell($config);
+
             // Pass additional arguments to Shell as 'includes'
             $shell->setIncludes($input->getArgument('include'));
 
@@ -345,7 +387,7 @@ function bin()
                 // And go!
                 $shell->run();
             } catch (\Exception $e) {
-                echo $e->getMessage() . PHP_EOL;
+                fwrite(STDERR, $e->getMessage() . PHP_EOL);
 
                 // @todo this triggers the "exited unexpectedly" logic in the
                 // ForkingLoop, so we can't exit(1) after starting the shell...
diff --git a/vendor/psy/psysh/test/ClassWithSecrets.php b/vendor/psy/psysh/test/ClassWithSecrets.php
deleted file mode 100644
index adf27e3fd9..0000000000
--- a/vendor/psy/psysh/test/ClassWithSecrets.php
+++ /dev/null
@@ -1,37 +0,0 @@
-<?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;
-
-class ClassWithSecrets
-{
-    private const PRIVATE_CONST = 'private and const';
-    private static $privateStaticProp = 'private and static and prop';
-    private $privateProp = 'private and prop';
-
-    private static function privateStaticMethod($extra = null)
-    {
-        if ($extra !== null) {
-            return 'private and static and method with ' . \json_encode($extra);
-        }
-
-        return 'private and static and method';
-    }
-
-    private function privateMethod($extra = null)
-    {
-        if ($extra !== null) {
-            return 'private and method with ' . \json_encode($extra);
-        }
-
-        return 'private and method';
-    }
-}
diff --git a/vendor/psy/psysh/test/CodeCleaner/AbstractClassPassTest.php b/vendor/psy/psysh/test/CodeCleaner/AbstractClassPassTest.php
deleted file mode 100644
index 1925c38037..0000000000
--- a/vendor/psy/psysh/test/CodeCleaner/AbstractClassPassTest.php
+++ /dev/null
@@ -1,57 +0,0 @@
-<?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;
-
-use Psy\CodeCleaner\AbstractClassPass;
-
-class AbstractClassPassTest extends CodeCleanerTestCase
-{
-    public function setUp()
-    {
-        $this->setPass(new AbstractClassPass());
-    }
-
-    /**
-     * @dataProvider invalidStatements
-     * @expectedException \Psy\Exception\FatalErrorException
-     */
-    public function testProcessStatementFails($code)
-    {
-        $this->parseAndTraverse($code);
-    }
-
-    public function invalidStatements()
-    {
-        return [
-            ['class A { abstract function a(); }'],
-            ['abstract class B { abstract function b() {} }'],
-            ['abstract class B { abstract function b() { echo "yep"; } }'],
-        ];
-    }
-
-    /**
-     * @dataProvider validStatements
-     */
-    public function testProcessStatementPasses($code)
-    {
-        $this->parseAndTraverse($code);
-        $this->assertTrue(true);
-    }
-
-    public function validStatements()
-    {
-        return [
-            ['abstract class C { function c() {} }'],
-            ['abstract class D { abstract function d(); }'],
-        ];
-    }
-}
diff --git a/vendor/psy/psysh/test/CodeCleaner/AssignThisVariablePassTest.php b/vendor/psy/psysh/test/CodeCleaner/AssignThisVariablePassTest.php
deleted file mode 100644
index 1ff15c571d..0000000000
--- a/vendor/psy/psysh/test/CodeCleaner/AssignThisVariablePassTest.php
+++ /dev/null
@@ -1,58 +0,0 @@
-<?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;
-
-use Psy\CodeCleaner\AssignThisVariablePass;
-
-class AssignThisVariablePassTest extends CodeCleanerTestCase
-{
-    public function setUp()
-    {
-        $this->setPass(new AssignThisVariablePass());
-    }
-
-    /**
-     * @dataProvider invalidStatements
-     * @expectedException \Psy\Exception\FatalErrorException
-     */
-    public function testProcessStatementFails($code)
-    {
-        $this->parseAndTraverse($code);
-    }
-
-    public function invalidStatements()
-    {
-        return [
-            ['$this = 3'],
-            ['strtolower($this = "this")'],
-        ];
-    }
-
-    /**
-     * @dataProvider validStatements
-     */
-    public function testProcessStatementPasses($code)
-    {
-        $this->parseAndTraverse($code);
-        $this->assertTrue(true);
-    }
-
-    public function validStatements()
-    {
-        return [
-            ['$this'],
-            ['$a = $this'],
-            ['$a = "this"; $$a = 3'],
-            ['$$this = "b"'],
-        ];
-    }
-}
diff --git a/vendor/psy/psysh/test/CodeCleaner/CallTimePassByReferencePassTest.php b/vendor/psy/psysh/test/CodeCleaner/CallTimePassByReferencePassTest.php
deleted file mode 100644
index cd321b5def..0000000000
--- a/vendor/psy/psysh/test/CodeCleaner/CallTimePassByReferencePassTest.php
+++ /dev/null
@@ -1,59 +0,0 @@
-<?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;
-
-use Psy\CodeCleaner\CallTimePassByReferencePass;
-
-class CallTimePassByReferencePassTest extends CodeCleanerTestCase
-{
-    public function setUp()
-    {
-        $this->setPass(new CallTimePassByReferencePass());
-    }
-
-    /**
-     * @dataProvider invalidStatements
-     * @expectedException \Psy\Exception\FatalErrorException
-     */
-    public function testProcessStatementFails($code)
-    {
-        $this->parseAndTraverse($code);
-    }
-
-    public function invalidStatements()
-    {
-        return [
-            ['f(&$arg)'],
-            ['$object->method($first, &$arg)'],
-            ['$closure($first, &$arg, $last)'],
-            ['A::b(&$arg)'],
-        ];
-    }
-
-    /**
-     * @dataProvider validStatements
-     */
-    public function testProcessStatementPasses($code)
-    {
-        $this->parseAndTraverse($code);
-        $this->assertTrue(true);
-    }
-
-    public function validStatements()
-    {
-        return [
-            ['array(&$var)'],
-            ['$a = &$b'],
-            ['f(array(&$b))'],
-        ];
-    }
-}
diff --git a/vendor/psy/psysh/test/CodeCleaner/CalledClassPassTest.php b/vendor/psy/psysh/test/CodeCleaner/CalledClassPassTest.php
deleted file mode 100644
index c80f257ac9..0000000000
--- a/vendor/psy/psysh/test/CodeCleaner/CalledClassPassTest.php
+++ /dev/null
@@ -1,90 +0,0 @@
-<?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;
-
-use Psy\CodeCleaner\CalledClassPass;
-
-class CalledClassPassTest extends CodeCleanerTestCase
-{
-    public function setUp()
-    {
-        $this->setPass(new CalledClassPass());
-    }
-
-    /**
-     * @dataProvider invalidStatements
-     * @expectedException \Psy\Exception\ErrorException
-     */
-    public function testProcessStatementFails($code)
-    {
-        $this->parseAndTraverse($code);
-    }
-
-    public function invalidStatements()
-    {
-        return [
-            ['get_class()'],
-            ['get_class(null)'],
-            ['get_called_class()'],
-            ['get_called_class(null)'],
-            ['function foo() { return get_class(); }'],
-            ['function foo() { return get_class(null); }'],
-            ['function foo() { return get_called_class(); }'],
-            ['function foo() { return get_called_class(null); }'],
-        ];
-    }
-
-    /**
-     * @dataProvider validStatements
-     */
-    public function testProcessStatementPasses($code)
-    {
-        $this->parseAndTraverse($code);
-        $this->assertTrue(true);
-    }
-
-    public function validStatements()
-    {
-        return [
-            ['get_class($foo)'],
-            ['get_class(bar())'],
-            ['get_called_class($foo)'],
-            ['get_called_class(bar())'],
-            ['function foo($bar) { return get_class($bar); }'],
-            ['function foo($bar) { return get_called_class($bar); }'],
-            ['class Foo { function bar() { return get_class(); } }'],
-            ['class Foo { function bar() { return get_class(null); } }'],
-            ['class Foo { function bar() { return get_called_class(); } }'],
-            ['class Foo { function bar() { return get_called_class(null); } }'],
-            ['$foo = function () {}; $foo()'],
-        ];
-    }
-
-    /**
-     * @dataProvider validTraitStatements
-     */
-    public function testProcessTraitStatementPasses($code)
-    {
-        $this->parseAndTraverse($code);
-        $this->assertTrue(true);
-    }
-
-    public function validTraitStatements()
-    {
-        return [
-            ['trait Foo { function bar() { return get_class(); } }'],
-            ['trait Foo { function bar() { return get_class(null); } }'],
-            ['trait Foo { function bar() { return get_called_class(); } }'],
-            ['trait Foo { function bar() { return get_called_class(null); } }'],
-        ];
-    }
-}
diff --git a/vendor/psy/psysh/test/CodeCleaner/CodeCleanerTestCase.php b/vendor/psy/psysh/test/CodeCleaner/CodeCleanerTestCase.php
deleted file mode 100644
index 6962c11414..0000000000
--- a/vendor/psy/psysh/test/CodeCleaner/CodeCleanerTestCase.php
+++ /dev/null
@@ -1,41 +0,0 @@
-<?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;
-
-use PhpParser\NodeTraverser;
-use Psy\CodeCleaner\CodeCleanerPass;
-use Psy\Test\ParserTestCase;
-
-class CodeCleanerTestCase extends ParserTestCase
-{
-    protected $pass;
-
-    public function tearDown()
-    {
-        $this->pass = null;
-        parent::tearDown();
-    }
-
-    protected function setPass(CodeCleanerPass $pass)
-    {
-        $this->pass = $pass;
-        if (!isset($this->traverser)) {
-            $this->traverser = new NodeTraverser();
-        }
-        $this->traverser->addVisitor($this->pass);
-    }
-
-    protected function parseAndTraverse($code, $prefix = '<?php ')
-    {
-        return $this->traverse($this->parse($code, $prefix));
-    }
-}
diff --git a/vendor/psy/psysh/test/CodeCleaner/ExitPassTest.php b/vendor/psy/psysh/test/CodeCleaner/ExitPassTest.php
deleted file mode 100644
index b22766c76e..0000000000
--- a/vendor/psy/psysh/test/CodeCleaner/ExitPassTest.php
+++ /dev/null
@@ -1,59 +0,0 @@
-<?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;
-
-use Psy\CodeCleaner\ExitPass;
-
-class ExitPassTest extends CodeCleanerTestCase
-{
-    /**
-     * @var string
-     */
-    private $expectedExceptionString = '\\Psy\\Exception\\BreakException::exitShell()';
-
-    public function setUp()
-    {
-        $this->setPass(new ExitPass());
-    }
-
-    /**
-     * @dataProvider dataProviderExitStatement
-     */
-    public function testExitStatement($from, $to)
-    {
-        $this->assertProcessesAs($from, $to);
-    }
-
-    /**
-     * Data provider for testExitStatement.
-     *
-     * @return array
-     */
-    public function dataProviderExitStatement()
-    {
-        return [
-            ['exit;', "{$this->expectedExceptionString};"],
-            ['exit();', "{$this->expectedExceptionString};"],
-            ['die;', "{$this->expectedExceptionString};"],
-            ['exit(die(die));', "{$this->expectedExceptionString};"],
-            ['if (true) { exit; }', "if (true) {\n    {$this->expectedExceptionString};\n}"],
-            ['if (false) { exit; }', "if (false) {\n    {$this->expectedExceptionString};\n}"],
-            ['1 and exit();', "1 and {$this->expectedExceptionString};"],
-            ['foo() or die', "foo() or {$this->expectedExceptionString};"],
-            ['exit and 1;', "{$this->expectedExceptionString} and 1;"],
-            ['if (exit) { echo $wat; }', "if ({$this->expectedExceptionString}) {\n    echo \$wat;\n}"],
-            ['exit or die;', "{$this->expectedExceptionString} or {$this->expectedExceptionString};"],
-            ['switch (die) { }', "switch ({$this->expectedExceptionString}) {\n}"],
-            ['for ($i = 1; $i < 10; die) {}', "for (\$i = 1; \$i < 10; {$this->expectedExceptionString}) {\n}"],
-        ];
-    }
-}
diff --git a/vendor/psy/psysh/test/CodeCleaner/FinalClassPassTest.php b/vendor/psy/psysh/test/CodeCleaner/FinalClassPassTest.php
deleted file mode 100644
index 1808d11fb1..0000000000
--- a/vendor/psy/psysh/test/CodeCleaner/FinalClassPassTest.php
+++ /dev/null
@@ -1,65 +0,0 @@
-<?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;
-
-use Psy\CodeCleaner\FinalClassPass;
-
-class FinalClassPassTest extends CodeCleanerTestCase
-{
-    public function setUp()
-    {
-        $this->setPass(new FinalClassPass());
-    }
-
-    /**
-     * @dataProvider invalidStatements
-     * @expectedException \Psy\Exception\FatalErrorException
-     */
-    public function testProcessStatementFails($code)
-    {
-        $this->parseAndTraverse($code);
-    }
-
-    public function invalidStatements()
-    {
-        $data = [
-            ['final class A {} class B extends A {}'],
-            ['class A {} final class B extends A {} class C extends B {}'],
-            // array('namespace A { final class B {} } namespace C { class D extends \\A\\B {} }'),
-        ];
-
-        if (!\defined('HHVM_VERSION')) {
-            // For some reason Closure isn't final in HHVM?
-            $data[] = ['class A extends \\Closure {}'];
-        }
-
-        return $data;
-    }
-
-    /**
-     * @dataProvider validStatements
-     */
-    public function testProcessStatementPasses($code)
-    {
-        $this->parseAndTraverse($code);
-        $this->assertTrue(true);
-    }
-
-    public function validStatements()
-    {
-        return [
-            ['class A extends \\stdClass {}'],
-            ['final class A extends \\stdClass {}'],
-            ['class A {} class B extends A {}'],
-        ];
-    }
-}
diff --git a/vendor/psy/psysh/test/CodeCleaner/Fixtures/ClassWithCallStatic.php b/vendor/psy/psysh/test/CodeCleaner/Fixtures/ClassWithCallStatic.php
deleted file mode 100644
index 0c674c0ed1..0000000000
--- a/vendor/psy/psysh/test/CodeCleaner/Fixtures/ClassWithCallStatic.php
+++ /dev/null
@@ -1,20 +0,0 @@
-<?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;
-
-class ClassWithCallStatic
-{
-    public static function __callStatic($name, $arguments)
-    {
-        // wheee!
-    }
-}
diff --git a/vendor/psy/psysh/test/CodeCleaner/Fixtures/ClassWithStatic.php b/vendor/psy/psysh/test/CodeCleaner/Fixtures/ClassWithStatic.php
deleted file mode 100644
index 64c64c76cb..0000000000
--- a/vendor/psy/psysh/test/CodeCleaner/Fixtures/ClassWithStatic.php
+++ /dev/null
@@ -1,20 +0,0 @@
-<?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;
-
-class ClassWithStatic
-{
-    public static function doStuff()
-    {
-        // Don't actually do stuff.
-    }
-}
diff --git a/vendor/psy/psysh/test/CodeCleaner/Fixtures/TraitWithStatic.php b/vendor/psy/psysh/test/CodeCleaner/Fixtures/TraitWithStatic.php
deleted file mode 100644
index 132dc061cb..0000000000
--- a/vendor/psy/psysh/test/CodeCleaner/Fixtures/TraitWithStatic.php
+++ /dev/null
@@ -1,20 +0,0 @@
-<?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/FunctionContextPassTest.php b/vendor/psy/psysh/test/CodeCleaner/FunctionContextPassTest.php
deleted file mode 100644
index 851eb2284e..0000000000
--- a/vendor/psy/psysh/test/CodeCleaner/FunctionContextPassTest.php
+++ /dev/null
@@ -1,56 +0,0 @@
-<?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;
-
-use Psy\CodeCleaner\FunctionContextPass;
-
-class FunctionContextPassTest extends CodeCleanerTestCase
-{
-    public function setUp()
-    {
-        $this->setPass(new FunctionContextPass());
-    }
-
-    /**
-     * @dataProvider validStatements
-     */
-    public function testProcessStatementPasses($code)
-    {
-        $this->parseAndTraverse($code);
-        $this->assertTrue(true);
-    }
-
-    public function validStatements()
-    {
-        return [
-            ['function foo() { yield; }'],
-            ['if (function(){ yield; })'],
-        ];
-    }
-
-    /**
-     * @dataProvider invalidYieldStatements
-     * @expectedException \Psy\Exception\FatalErrorException
-     */
-    public function testInvalidYield($code)
-    {
-        $this->parseAndTraverse($code);
-    }
-
-    public function invalidYieldStatements()
-    {
-        return [
-            ['yield'],
-            ['if (yield)'],
-        ];
-    }
-}
diff --git a/vendor/psy/psysh/test/CodeCleaner/FunctionReturnInWriteContextPassTest.php b/vendor/psy/psysh/test/CodeCleaner/FunctionReturnInWriteContextPassTest.php
deleted file mode 100644
index 85f6a04c06..0000000000
--- a/vendor/psy/psysh/test/CodeCleaner/FunctionReturnInWriteContextPassTest.php
+++ /dev/null
@@ -1,91 +0,0 @@
-<?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;
-
-use Psy\CodeCleaner\FunctionReturnInWriteContextPass;
-use Psy\Exception\FatalErrorException;
-
-class FunctionReturnInWriteContextPassTest extends CodeCleanerTestCase
-{
-    public function setUp()
-    {
-        $this->setPass(new FunctionReturnInWriteContextPass());
-    }
-
-    /**
-     * @dataProvider invalidStatements
-     * @expectedException \Psy\Exception\FatalErrorException
-     * @expectedExceptionMessage Can't use function return value in write context
-     */
-    public function testProcessStatementFails($code)
-    {
-        $this->parseAndTraverse($code);
-    }
-
-    public function invalidStatements()
-    {
-        return [
-            ['f(&g())'],
-            ['array(& $object->method())'],
-            ['$a->method(& $closure())'],
-            ['array(& A::b())'],
-            ['f() = 5'],
-            ['unset(h())'],
-        ];
-    }
-
-    public function testIsset()
-    {
-        try {
-            $this->traverser->traverse($this->parse('isset(strtolower("A"))'));
-            $this->fail();
-        } catch (FatalErrorException $e) {
-            if (\version_compare(PHP_VERSION, '5.5', '>=')) {
-                $this->assertContains(
-                    'Cannot use isset() on the result of a function call (you can use "null !== func()" instead)',
-                    $e->getMessage()
-                );
-            } else {
-                $this->assertContains("Can't use function return value in write context", $e->getMessage());
-            }
-        }
-    }
-
-    /**
-     * @expectedException \Psy\Exception\FatalErrorException
-     * @expectedExceptionMessage Can't use function return value in write context
-     */
-    public function testEmpty()
-    {
-        if (\version_compare(PHP_VERSION, '5.5', '>=')) {
-            $this->markTestSkipped();
-        }
-
-        $this->traverser->traverse($this->parse('empty(strtolower("A"))'));
-    }
-
-    /**
-     * @dataProvider validStatements
-     */
-    public function testValidStatements($code)
-    {
-        $this->parseAndTraverse($code);
-        $this->assertTrue(true);
-    }
-
-    public function validStatements()
-    {
-        return [
-            ['isset($foo)'],
-        ];
-    }
-}
diff --git a/vendor/psy/psysh/test/CodeCleaner/ImplicitReturnPassTest.php b/vendor/psy/psysh/test/CodeCleaner/ImplicitReturnPassTest.php
deleted file mode 100644
index 1c28b4a859..0000000000
--- a/vendor/psy/psysh/test/CodeCleaner/ImplicitReturnPassTest.php
+++ /dev/null
@@ -1,112 +0,0 @@
-<?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;
-
-use Psy\CodeCleaner\ImplicitReturnPass;
-
-class ImplicitReturnPassTest extends CodeCleanerTestCase
-{
-    public function setUp()
-    {
-        $this->setPass(new ImplicitReturnPass());
-    }
-
-    /**
-     * @dataProvider implicitReturns
-     */
-    public function testProcess($from, $to)
-    {
-        $this->assertProcessesAs($from, $to);
-    }
-
-    public function implicitReturns()
-    {
-        $data = [
-            ['4',        'return 4;'],
-            ['foo()',    'return foo();'],
-            ['return 1', 'return 1;'],
-            ['',         'return new \Psy\CodeCleaner\NoReturnValue();'],
-        ];
-
-        $from = 'echo "foo";';
-        $to   = <<<'EOS'
-echo "foo";
-return new \Psy\CodeCleaner\NoReturnValue();
-EOS;
-        $data[] = [$from, $to];
-
-        $from = 'if (true) { 1; } elseif (true) { 2; } else { 3; }';
-        $to   = <<<'EOS'
-if (true) {
-    return 1;
-} elseif (true) {
-    return 2;
-} else {
-    return 3;
-}
-return new \Psy\CodeCleaner\NoReturnValue();
-EOS;
-        $data[] = [$from, $to];
-
-        $from = 'class A {}';
-        $to   = <<<'EOS'
-class A
-{
-}
-return new \Psy\CodeCleaner\NoReturnValue();
-EOS;
-        $data[] = [$from, $to];
-
-        $from = <<<'EOS'
-switch (false) {
-    case 0:
-        0;
-    case 1:
-        1;
-        break;
-    case 2:
-        2;
-        return;
-}
-EOS;
-        $to = <<<'EOS'
-switch (false) {
-    case 0:
-        0;
-    case 1:
-        return 1;
-        break;
-    case 2:
-        2;
-        return;
-}
-return new \Psy\CodeCleaner\NoReturnValue();
-EOS;
-        $data[] = [$from, $to];
-
-        $from = <<<'EOS'
-namespace Foo {
-    1 + 1;
-}
-EOS;
-        $to = <<<'EOS'
-namespace Foo;
-
-return 1 + 1;
-EOS;
-        $data[] = [$from, $to];
-
-        $data[] = ['exit()', 'exit;'];
-
-        return $data;
-    }
-}
diff --git a/vendor/psy/psysh/test/CodeCleaner/InstanceOfPassTest.php b/vendor/psy/psysh/test/CodeCleaner/InstanceOfPassTest.php
deleted file mode 100644
index b8c63313ed..0000000000
--- a/vendor/psy/psysh/test/CodeCleaner/InstanceOfPassTest.php
+++ /dev/null
@@ -1,72 +0,0 @@
-<?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;
-
-use Psy\CodeCleaner\InstanceOfPass;
-
-class InstanceOfPassTest extends CodeCleanerTestCase
-{
-    protected function setUp()
-    {
-        $this->setPass(new InstanceOfPass());
-    }
-
-    /**
-     * @dataProvider invalidStatements
-     * @expectedException \Psy\Exception\FatalErrorException
-     */
-    public function testProcessInvalidStatement($code)
-    {
-        $this->parseAndTraverse($code);
-    }
-
-    public function invalidStatements()
-    {
-        return [
-            ['null instanceof stdClass'],
-            ['true instanceof stdClass'],
-            ['9 instanceof stdClass'],
-            ['1.0 instanceof stdClass'],
-            ['"foo" instanceof stdClass'],
-            ['__DIR__ instanceof stdClass'],
-            ['PHP_SAPI instanceof stdClass'],
-            ['1+1 instanceof stdClass'],
-            ['true && false instanceof stdClass'],
-            ['"a"."b" instanceof stdClass'],
-            ['!5 instanceof stdClass'],
-        ];
-    }
-
-    /**
-     * @dataProvider validStatements
-     */
-    public function testProcessValidStatement($code)
-    {
-        $this->parseAndTraverse($code);
-        $this->assertTrue(true);
-    }
-
-    public function validStatements()
-    {
-        $data = [
-            ['$a instanceof stdClass'],
-            ['strtolower("foo") instanceof stdClass'],
-            ['array(1) instanceof stdClass'],
-            ['(string) "foo" instanceof stdClass'],
-            ['(1+1) instanceof stdClass'],
-            ['"foo ${foo} $bar" instanceof stdClass'],
-            ['DateTime::ISO8601 instanceof stdClass'],
-        ];
-
-        return $data;
-    }
-}
diff --git a/vendor/psy/psysh/test/CodeCleaner/LeavePsyshAlonePassTest.php b/vendor/psy/psysh/test/CodeCleaner/LeavePsyshAlonePassTest.php
deleted file mode 100644
index 9df633e89a..0000000000
--- a/vendor/psy/psysh/test/CodeCleaner/LeavePsyshAlonePassTest.php
+++ /dev/null
@@ -1,69 +0,0 @@
-<?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;
-
-use Psy\CodeCleaner\LeavePsyshAlonePass;
-
-class LeavePsyshAlonePassTest extends CodeCleanerTestCase
-{
-    public function setUp()
-    {
-        $this->setPass(new LeavePsyshAlonePass());
-    }
-
-    public function testPassesInlineHtmlThroughJustFine()
-    {
-        $inline = $this->parse('not php at all!', '');
-        $this->traverse($inline);
-        $this->assertTrue(true);
-    }
-
-    /**
-     * @dataProvider validStatements
-     */
-    public function testProcessStatementPasses($code)
-    {
-        $this->parseAndTraverse($code);
-        $this->assertTrue(true);
-    }
-
-    public function validStatements()
-    {
-        return [
-            ['array_merge()'],
-            ['__psysh__()'],
-            ['$this'],
-            ['$psysh'],
-            ['$__psysh'],
-            ['$banana'],
-        ];
-    }
-
-    /**
-     * @dataProvider invalidStatements
-     * @expectedException \Psy\Exception\RuntimeException
-     */
-    public function testProcessStatementFails($code)
-    {
-        $this->parseAndTraverse($code);
-    }
-
-    public function invalidStatements()
-    {
-        return [
-            ['$__psysh__'],
-            ['var_dump($__psysh__)'],
-            ['$__psysh__ = "your mom"'],
-            ['$__psysh__->fakeFunctionCall()'],
-        ];
-    }
-}
diff --git a/vendor/psy/psysh/test/CodeCleaner/LegacyEmptyPassTest.php b/vendor/psy/psysh/test/CodeCleaner/LegacyEmptyPassTest.php
deleted file mode 100644
index 5c4c7b0590..0000000000
--- a/vendor/psy/psysh/test/CodeCleaner/LegacyEmptyPassTest.php
+++ /dev/null
@@ -1,76 +0,0 @@
-<?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;
-
-use Psy\CodeCleaner\LegacyEmptyPass;
-
-class LegacyEmptyPassTest extends CodeCleanerTestCase
-{
-    public function setUp()
-    {
-        $this->setPass(new LegacyEmptyPass());
-    }
-
-    /**
-     * @dataProvider invalidStatements
-     * @expectedException \Psy\Exception\ParseErrorException
-     */
-    public function testProcessInvalidStatement($code)
-    {
-        $this->parseAndTraverse($code);
-    }
-
-    public function invalidStatements()
-    {
-        if (\version_compare(PHP_VERSION, '5.5', '>=')) {
-            return [
-                ['empty()'],
-            ];
-        }
-
-        return [
-            ['empty()'],
-            ['empty(null)'],
-            ['empty(PHP_EOL)'],
-            ['empty("wat")'],
-            ['empty(1.1)'],
-            ['empty(Foo::$bar)'],
-        ];
-    }
-
-    /**
-     * @dataProvider validStatements
-     */
-    public function testProcessValidStatement($code)
-    {
-        $this->parseAndTraverse($code);
-        $this->assertTrue(true);
-    }
-
-    public function validStatements()
-    {
-        if (\version_compare(PHP_VERSION, '5.5', '<')) {
-            return [
-                ['empty($foo)'],
-            ];
-        }
-
-        return [
-            ['empty($foo)'],
-            ['empty(null)'],
-            ['empty(PHP_EOL)'],
-            ['empty("wat")'],
-            ['empty(1.1)'],
-            ['empty(Foo::$bar)'],
-        ];
-    }
-}
diff --git a/vendor/psy/psysh/test/CodeCleaner/ListPassTest.php b/vendor/psy/psysh/test/CodeCleaner/ListPassTest.php
deleted file mode 100644
index b7a360d690..0000000000
--- a/vendor/psy/psysh/test/CodeCleaner/ListPassTest.php
+++ /dev/null
@@ -1,115 +0,0 @@
-<?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;
-
-use Psy\CodeCleaner\ListPass;
-
-class ListPassTest extends CodeCleanerTestCase
-{
-    public function setUp()
-    {
-        $this->setPass(new ListPass());
-    }
-
-    /**
-     * @dataProvider invalidStatements
-     * @expectedException \Psy\Exception\ParseErrorException
-     */
-    public function testProcessInvalidStatement($code, $expectedMessage)
-    {
-        if (\method_exists($this, 'setExpectedException')) {
-            $this->setExpectedException('Psy\Exception\ParseErrorException', $expectedMessage);
-        } else {
-            $this->expectExceptionMessage($expectedMessage);
-        }
-
-        $stmts = $this->parse($code);
-        $this->traverser->traverse($stmts);
-    }
-
-    public function invalidStatements()
-    {
-        // Not typo.  It is ambiguous whether "Syntax" or "syntax".
-        $errorShortListAssign = "yntax error, unexpected '='";
-        $errorEmptyList = 'Cannot use empty list';
-        $errorAssocListAssign = 'Syntax error, unexpected T_CONSTANT_ENCAPSED_STRING, expecting \',\' or \')\'';
-        $errorNonVariableAssign = 'Assignments can only happen to writable values';
-        $errorPhpParserSyntax = 'PHP Parse error: Syntax error, unexpected';
-
-        $invalidExpr = [
-            ['list() = array()', $errorEmptyList],
-            ['list("a") = array(1)', $errorPhpParserSyntax],
-        ];
-
-        if (\version_compare(PHP_VERSION, '7.1', '<')) {
-            return \array_merge($invalidExpr, [
-                ['list("a" => _) = array("a" => 1)', $errorPhpParserSyntax],
-                ['[] = []', $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],
-            ]);
-        }
-
-        return \array_merge($invalidExpr, [
-            ['list("a" => _) = array("a" => 1)', $errorPhpParserSyntax],
-            ['["a"] = [1]', $errorNonVariableAssign],
-            ['[] = []', $errorEmptyList],
-            ['[,] = [1,2]', $errorEmptyList],
-            ['[,,] = [1,2,3]', $errorEmptyList],
-        ]);
-    }
-
-    /**
-     * @dataProvider validStatements
-     */
-    public function testProcessValidStatement($code)
-    {
-        $stmts = $this->parse($code);
-        $this->traverser->traverse($stmts);
-        $this->assertTrue(true);
-    }
-
-    public function validStatements()
-    {
-        $validExpr = [
-            ['list($a) = array(1)'],
-            ['list($x, $y) = array(1, 2)'],
-        ];
-
-        if (\version_compare(PHP_VERSION, '7.1', '>=')) {
-            return \array_merge($validExpr, [
-                ['[$a] = array(1)'],
-                ['list($b) = [2]'],
-                ['[$x, $y] = array(1, 2)'],
-                ['[$a] = [1]'],
-                ['[$x, $y] = [1, 2]'],
-                ['["_" => $v] = ["_" => 1]'],
-                ['[$a,] = [1,2,3]'],
-                ['[,$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]'],
-            ]);
-        }
-
-        return $validExpr;
-    }
-}
diff --git a/vendor/psy/psysh/test/CodeCleaner/LoopContextPassTest.php b/vendor/psy/psysh/test/CodeCleaner/LoopContextPassTest.php
deleted file mode 100644
index 3b36306833..0000000000
--- a/vendor/psy/psysh/test/CodeCleaner/LoopContextPassTest.php
+++ /dev/null
@@ -1,108 +0,0 @@
-<?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;
-
-use Psy\CodeCleaner\LoopContextPass;
-
-class LoopContextPassTest extends CodeCleanerTestCase
-{
-    public function setUp()
-    {
-        $this->setPass(new LoopContextPass());
-    }
-
-    /**
-     * @dataProvider invalidStatements
-     * @expectedException \Psy\Exception\FatalErrorException
-     */
-    public function testProcessStatementFails($code)
-    {
-        $this->parseAndTraverse($code);
-    }
-
-    public function invalidStatements()
-    {
-        return [
-            ['continue'],
-            ['break'],
-            ['if (true) { continue; }'],
-            ['if (true) { break; }'],
-            ['if (false) { continue; }'],
-            ['if (false) { break; }'],
-            ['function foo() { break; }'],
-            ['function foo() { continue; }'],
-
-            // actually enforce break/continue depth argument
-            ['do { break 2; } while (true)'],
-            ['do { continue 2; } while (true)'],
-            ['for ($a; $b; $c) { break 2; }'],
-            ['for ($a; $b; $c) { continue 2; }'],
-            ['foreach ($a as $b) { break 2; }'],
-            ['foreach ($a as $b) { continue 2; }'],
-            ['switch (true) { default: break 2; }'],
-            ['switch (true) { default: continue 2; }'],
-            ['while (true) { break 2; }'],
-            ['while (true) { continue 2; }'],
-
-            // In PHP 5.4+, only positive literal integers are allowed
-            ['while (true) { break $n; }'],
-            ['while (true) { continue $n; }'],
-            ['while (true) { break N; }'],
-            ['while (true) { continue N; }'],
-            ['while (true) { break 0; }'],
-            ['while (true) { continue 0; }'],
-            ['while (true) { break -1; }'],
-            ['while (true) { continue -1; }'],
-            ['while (true) { break 1.0; }'],
-            ['while (true) { continue 1.0; }'],
-            ['while (true) { break 2.0; }'],
-            ['while (true) { continue 2.0; }'],
-
-            // and once with nested loops, just for good measure
-            ['while (true) { while (true) { break 3; } }'],
-            ['while (true) { while (true) { continue 3; } }'],
-        ];
-    }
-
-    /**
-     * @dataProvider validStatements
-     */
-    public function testProcessStatementPasses($code)
-    {
-        $this->parseAndTraverse($code);
-        $this->assertTrue(true);
-    }
-
-    public function validStatements()
-    {
-        return [
-            ['do { break; } while (true)'],
-            ['do { continue; } while (true)'],
-            ['for ($a; $b; $c) { break; }'],
-            ['for ($a; $b; $c) { continue; }'],
-            ['foreach ($a as $b) { break; }'],
-            ['foreach ($a as $b) { continue; }'],
-            ['switch (true) { default: break; }'],
-            ['switch (true) { default: continue; }'],
-            ['while (true) { break; }'],
-            ['while (true) { continue; }'],
-
-            // `break 1` is redundant, but not invalid
-            ['while (true) { break 1; }'],
-            ['while (true) { continue 1; }'],
-
-            // and once with nested loops just for good measure
-            ['while (true) { while (true) { break 2; } }'],
-            ['while (true) { while (true) { continue 2; } }'],
-        ];
-    }
-}
diff --git a/vendor/psy/psysh/test/CodeCleaner/MagicConstantsPassTest.php b/vendor/psy/psysh/test/CodeCleaner/MagicConstantsPassTest.php
deleted file mode 100644
index 321ac6ff3d..0000000000
--- a/vendor/psy/psysh/test/CodeCleaner/MagicConstantsPassTest.php
+++ /dev/null
@@ -1,39 +0,0 @@
-<?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;
-
-use Psy\CodeCleaner\MagicConstantsPass;
-
-class MagicConstantsPassTest extends CodeCleanerTestCase
-{
-    public function setUp()
-    {
-        $this->setPass(new MagicConstantsPass());
-    }
-
-    /**
-     * @dataProvider magicConstants
-     */
-    public function testProcess($from, $to)
-    {
-        $this->assertProcessesAs($from, $to);
-    }
-
-    public function magicConstants()
-    {
-        return [
-            ['__DIR__;', 'getcwd();'],
-            ['__FILE__;', "'';"],
-            ['___FILE___;', '___FILE___;'],
-        ];
-    }
-}
diff --git a/vendor/psy/psysh/test/CodeCleaner/NamespacePassTest.php b/vendor/psy/psysh/test/CodeCleaner/NamespacePassTest.php
deleted file mode 100644
index e8f013961c..0000000000
--- a/vendor/psy/psysh/test/CodeCleaner/NamespacePassTest.php
+++ /dev/null
@@ -1,59 +0,0 @@
-<?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;
-
-use Psy\CodeCleaner;
-use Psy\CodeCleaner\NamespacePass;
-
-class NamespacePassTest extends CodeCleanerTestCase
-{
-    private $cleaner;
-
-    public function setUp()
-    {
-        $this->cleaner = new CodeCleaner();
-        $this->setPass(new NamespacePass($this->cleaner));
-    }
-
-    public function testProcess()
-    {
-        $this->parseAndTraverse('');
-        $this->assertNull($this->cleaner->getNamespace());
-
-        $this->parseAndTraverse('array_merge()');
-        $this->assertNull($this->cleaner->getNamespace());
-
-        // A non-block namespace statement should set the current namespace.
-        $this->parseAndTraverse('namespace Alpha');
-        $this->assertSame(['Alpha'], $this->cleaner->getNamespace());
-
-        // A new non-block namespace statement should override the current namespace.
-        $this->parseAndTraverse('namespace Beta; class B {}');
-        $this->assertSame(['Beta'], $this->cleaner->getNamespace());
-
-        // A new block namespace clears out the current namespace...
-        $this->parseAndTraverse('namespace Gamma { array_merge(); }');
-
-        if (\defined('PhpParser\\Node\\Stmt\\Namespace_::KIND_SEMICOLON')) {
-            $this->assertNull($this->cleaner->getNamespace());
-        } else {
-            // But not for PHP-Parser < v3.1.2 :(
-            $this->assertSame(['Gamma'], $this->cleaner->getNamespace());
-        }
-
-        $this->parseAndTraverse('namespace Delta');
-
-        // A null namespace clears out the current namespace.
-        $this->parseAndTraverse('namespace { array_merge(); }');
-        $this->assertNull($this->cleaner->getNamespace());
-    }
-}
diff --git a/vendor/psy/psysh/test/CodeCleaner/NoReturnValueTest.php b/vendor/psy/psysh/test/CodeCleaner/NoReturnValueTest.php
deleted file mode 100644
index 11e9d013f4..0000000000
--- a/vendor/psy/psysh/test/CodeCleaner/NoReturnValueTest.php
+++ /dev/null
@@ -1,32 +0,0 @@
-<?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;
-
-use PhpParser\Node\Stmt\Expression;
-use Psy\CodeCleaner\NoReturnValue;
-use Psy\Test\ParserTestCase;
-
-class NoReturnValueTest extends ParserTestCase
-{
-    public function testCreate()
-    {
-        $stmt = NoReturnValue::create();
-        if (\class_exists('PhpParser\Node\Stmt\Expression')) {
-            $stmt = new Expression($stmt);
-        }
-
-        $this->assertSame(
-            $this->prettyPrint($this->parse('new \\Psy\CodeCleaner\\NoReturnValue()')),
-            $this->prettyPrint([$stmt])
-        );
-    }
-}
diff --git a/vendor/psy/psysh/test/CodeCleaner/PassableByReferencePassTest.php b/vendor/psy/psysh/test/CodeCleaner/PassableByReferencePassTest.php
deleted file mode 100644
index a73ad471f8..0000000000
--- a/vendor/psy/psysh/test/CodeCleaner/PassableByReferencePassTest.php
+++ /dev/null
@@ -1,104 +0,0 @@
-<?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;
-
-use Psy\CodeCleaner\PassableByReferencePass;
-
-class PassableByReferencePassTest extends CodeCleanerTestCase
-{
-    public function setUp()
-    {
-        $this->setPass(new PassableByReferencePass());
-    }
-
-    /**
-     * @dataProvider invalidStatements
-     * @expectedException \Psy\Exception\FatalErrorException
-     */
-    public function testProcessStatementFails($code)
-    {
-        $this->parseAndTraverse($code);
-    }
-
-    public function invalidStatements()
-    {
-        return [
-            ['array_pop(array())'],
-            ['array_pop(array($foo))'],
-            ['array_shift(array())'],
-        ];
-    }
-
-    /**
-     * @dataProvider validStatements
-     */
-    public function testProcessStatementPasses($code)
-    {
-        $this->parseAndTraverse($code);
-        $this->assertTrue(true);
-    }
-
-    public function validStatements()
-    {
-        return [
-            ['array_pop(json_decode("[]"))'],
-            ['array_pop($foo)'],
-            ['array_pop($foo->bar)'],
-            ['array_pop($foo::baz)'],
-            ['array_pop(Foo::qux)'],
-        ];
-    }
-
-    /**
-     * @dataProvider validArrayMultisort
-     */
-    public function testArrayMultisort($code)
-    {
-        $this->parseAndTraverse($code);
-        $this->assertTrue(true);
-    }
-
-    public function validArrayMultisort()
-    {
-        return [
-            ['array_multisort($a)'],
-            ['array_multisort($a, $b)'],
-            ['array_multisort($a, SORT_NATURAL, $b)'],
-            ['array_multisort($a, SORT_NATURAL | SORT_FLAG_CASE, $b)'],
-            ['array_multisort($a, SORT_ASC, SORT_NATURAL | SORT_FLAG_CASE, $b)'],
-            ['array_multisort($a, SORT_NATURAL | SORT_FLAG_CASE, SORT_ASC, $b)'],
-            ['array_multisort($a, $b, SORT_ASC, SORT_NATURAL | SORT_FLAG_CASE)'],
-            ['array_multisort($a, SORT_NATURAL | SORT_FLAG_CASE, $b, SORT_ASC, SORT_NATURAL | SORT_FLAG_CASE)'],
-            ['array_multisort($a, 1, $b)'],
-            ['array_multisort($a, 1 + 2, $b)'],
-            ['array_multisort($a, getMultisortFlags(), $b)'],
-        ];
-    }
-
-    /**
-     * @dataProvider invalidArrayMultisort
-     * @expectedException \Psy\Exception\FatalErrorException
-     */
-    public function testInvalidArrayMultisort($code)
-    {
-        $this->parseAndTraverse($code);
-    }
-
-    public function invalidArrayMultisort()
-    {
-        return [
-            ['array_multisort(1)'],
-            ['array_multisort(array(1, 2, 3))'],
-            ['array_multisort($a, SORT_NATURAL, SORT_ASC, SORT_NATURAL, $b)'],
-        ];
-    }
-}
diff --git a/vendor/psy/psysh/test/CodeCleaner/RequirePassTest.php b/vendor/psy/psysh/test/CodeCleaner/RequirePassTest.php
deleted file mode 100644
index 6640e639b9..0000000000
--- a/vendor/psy/psysh/test/CodeCleaner/RequirePassTest.php
+++ /dev/null
@@ -1,93 +0,0 @@
-<?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;
-
-use Psy\CodeCleaner\RequirePass;
-
-class RequirePassTest extends CodeCleanerTestCase
-{
-    public function setUp()
-    {
-        $this->setPass(new RequirePass());
-    }
-
-    /**
-     * @dataProvider exitStatements
-     */
-    public function testExitStatement($from, $to)
-    {
-        $this->assertProcessesAs($from, $to);
-    }
-
-    public function exitStatements()
-    {
-        $resolve = '\\Psy\\CodeCleaner\\RequirePass::resolve';
-
-        return [
-            // The basics
-            ['require "a"', "require $resolve(\"a\", 1);"],
-            ['require "b.php"', "require $resolve(\"b.php\", 1);"],
-            ['require_once "c"', "require_once $resolve(\"c\", 1);"],
-            ['require_once "d.php"', "require_once $resolve(\"d.php\", 1);"],
-
-            // Ensure that line numbers work correctly
-            ["null;\nrequire \"e.php\"", "null;\nrequire $resolve(\"e.php\", 2);"],
-            ["null;\nrequire_once \"f.php\"", "null;\nrequire_once $resolve(\"f.php\", 2);"],
-
-            // Things with expressions
-            ['require $foo', "require $resolve(\$foo, 1);"],
-            ['require_once $foo', "require_once $resolve(\$foo, 1);"],
-            ['require ($bar = "g.php")', "require $resolve(\$bar = \"g.php\", 1);"],
-            ['require_once ($bar = "h.php")', "require_once $resolve(\$bar = \"h.php\", 1);"],
-            ['$bar = require ($baz = "i.php")', "\$bar = (require $resolve(\$baz = \"i.php\", 1));"],
-            ['$bar = require_once ($baz = "j.php")', "\$bar = (require_once $resolve(\$baz = \"j.php\", 1));"],
-        ];
-    }
-
-    /**
-     * @expectedException \Psy\Exception\FatalErrorException
-     * @expectedExceptionMessage Failed opening required 'not a file name' in eval()'d code on line 2
-     */
-    public function testResolve()
-    {
-        RequirePass::resolve('not a file name', 2);
-    }
-
-    /**
-     * @dataProvider emptyWarnings
-     *
-     * @expectedException \Psy\Exception\ErrorException
-     * @expectedExceptionMessage Filename cannot be empty on line 1
-     */
-    public function testResolveEmptyWarnings($file)
-    {
-        if (!E_WARNING & \error_reporting()) {
-            $this->markTestSkipped();
-        }
-
-        RequirePass::resolve($file, 1);
-    }
-
-    public function emptyWarnings()
-    {
-        return [
-            [null],
-            [false],
-            [''],
-        ];
-    }
-
-    public function testResolveWorks()
-    {
-        $this->assertEquals(__FILE__, RequirePass::resolve(__FILE__, 3));
-    }
-}
diff --git a/vendor/psy/psysh/test/CodeCleaner/StrictTypesPassTest.php b/vendor/psy/psysh/test/CodeCleaner/StrictTypesPassTest.php
deleted file mode 100644
index 54186190d5..0000000000
--- a/vendor/psy/psysh/test/CodeCleaner/StrictTypesPassTest.php
+++ /dev/null
@@ -1,52 +0,0 @@
-<?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;
-
-use Psy\CodeCleaner\StrictTypesPass;
-
-class StrictTypesPassTest extends CodeCleanerTestCase
-{
-    public function setUp()
-    {
-        if (\version_compare(PHP_VERSION, '7.0', '<')) {
-            $this->markTestSkipped();
-        }
-
-        $this->setPass(new StrictTypesPass());
-    }
-
-    public function testProcess()
-    {
-        $this->assertProcessesAs('declare(strict_types=1)', 'declare (strict_types=1);');
-        $this->assertProcessesAs('null', "declare (strict_types=1);\nnull;");
-        $this->assertProcessesAs('declare(strict_types=0)', 'declare (strict_types=0);');
-        $this->assertProcessesAs('null', 'null;');
-    }
-
-    /**
-     * @dataProvider invalidDeclarations
-     * @expectedException \Psy\Exception\FatalErrorException
-     */
-    public function testInvalidDeclarations($code)
-    {
-        $this->parseAndTraverse($code);
-    }
-
-    public function invalidDeclarations()
-    {
-        return [
-            ['declare(strict_types=-1)'],
-            ['declare(strict_types=2)'],
-            ['declare(strict_types="foo")'],
-        ];
-    }
-}
diff --git a/vendor/psy/psysh/test/CodeCleaner/UseStatementPassTest.php b/vendor/psy/psysh/test/CodeCleaner/UseStatementPassTest.php
deleted file mode 100644
index 4d5ac3420d..0000000000
--- a/vendor/psy/psysh/test/CodeCleaner/UseStatementPassTest.php
+++ /dev/null
@@ -1,102 +0,0 @@
-<?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;
-
-use Psy\CodeCleaner\UseStatementPass;
-
-class UseStatementPassTest extends CodeCleanerTestCase
-{
-    public function setUp()
-    {
-        $this->setPass(new UseStatementPass());
-    }
-
-    /**
-     * @dataProvider useStatements
-     */
-    public function testProcess($from, $to)
-    {
-        $this->assertProcessesAs($from, $to);
-    }
-
-    public function useStatements()
-    {
-        return [
-            [
-                "use StdClass as NotSoStd;\n\$std = new NotSoStd();",
-                '$std = new \\StdClass();',
-            ],
-            [
-                "namespace Foo;\n\nuse StdClass as S;\n\$std = new S();",
-                "namespace Foo;\n\n\$std = new \\StdClass();",
-            ],
-            [
-                "namespace Foo;\n\nuse \\StdClass as S;\n\$std = new S();",
-                "namespace Foo;\n\n\$std = new \\StdClass();",
-            ],
-            [
-                "use Foo\\Bar as fb;\n\$baz = new fb\\Baz();",
-                '$baz = new \\Foo\\Bar\\Baz();',
-            ],
-            [
-                "use Foo\\Bar;\n\$baz = new Bar\\Baz();",
-                '$baz = new \\Foo\\Bar\\Baz();',
-            ],
-            [
-                "namespace Foo;\nuse Bar;\n\$baz = new Bar\\Baz();",
-                "namespace Foo;\n\n\$baz = new \\Bar\\Baz();",
-            ],
-            [
-                "namespace Foo;\n\nuse \\StdClass as S;\n\$std = new S();\nnamespace Foo;\n\n\$std = new S();",
-                "namespace Foo;\n\n\$std = new \\StdClass();\nnamespace Foo;\n\n\$std = new \\StdClass();",
-            ],
-            [
-                "namespace Foo;\n\nuse \\StdClass as S;\n\$std = new S();\nnamespace Bar;\n\n\$std = new S();",
-                "namespace Foo;\n\n\$std = new \\StdClass();\nnamespace Bar;\n\n\$std = new S();",
-            ],
-            [
-                "use Foo\\Bar as fb, Qux as Q;\n\$baz = new fb\\Baz();\n\$qux = new Q();",
-                "\$baz = new \\Foo\\Bar\\Baz();\n\$qux = new \\Qux();",
-            ],
-        ];
-    }
-
-    /**
-     * @dataProvider groupUseStatements
-     */
-    public function testGroupUseProcess($from, $to)
-    {
-        $this->assertProcessesAs($from, $to);
-    }
-
-    public function groupUseStatements()
-    {
-        if (\version_compare(PHP_VERSION, '7.0', '<')) {
-            $this->markTestSkipped();
-        }
-
-        return [
-            [
-                "use Foo\\{Bar, Baz, Qux as Q};\n\$bar = new Bar();\n\$baz = new Baz();\n\$qux = new Q();",
-                "\$bar = new \\Foo\\Bar();\n\$baz = new \\Foo\\Baz();\n\$qux = new \\Foo\\Qux();",
-            ],
-            [
-                "use X\\{Foo, Bar as B};\n\$foo = new Foo();\n\$baz = new B\\Baz();",
-                "\$foo = new \\X\\Foo();\n\$baz = new \\X\\Bar\\Baz();",
-            ],
-            [
-                "use X\\{Foo, Bar as B};\n\$foo = new Foo();\n\$bar = new Bar();\n\$baz = new B\\Baz();",
-                "\$foo = new \\X\\Foo();\n\$bar = new Bar();\n\$baz = new \\X\\Bar\\Baz();",
-            ],
-        ];
-    }
-}
diff --git a/vendor/psy/psysh/test/CodeCleaner/ValidClassNamePassTest.php b/vendor/psy/psysh/test/CodeCleaner/ValidClassNamePassTest.php
deleted file mode 100644
index 2d9ed60b58..0000000000
--- a/vendor/psy/psysh/test/CodeCleaner/ValidClassNamePassTest.php
+++ /dev/null
@@ -1,325 +0,0 @@
-<?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;
-
-use Psy\CodeCleaner\ValidClassNamePass;
-
-class ValidClassNamePassTest extends CodeCleanerTestCase
-{
-    public function setUp()
-    {
-        $this->setPass(new ValidClassNamePass());
-    }
-
-    /**
-     * @dataProvider getInvalid
-     * @expectedException \Psy\Exception\FatalErrorException
-     */
-    public function testProcessInvalid($code)
-    {
-        $this->parseAndTraverse($code);
-    }
-
-    public function getInvalid()
-    {
-        // class declarations
-        return [
-            // core class
-            ['class stdClass {}'],
-            // capitalization
-            ['class stdClass {}'],
-
-            // collisions with interfaces and traits
-            ['interface stdClass {}'],
-            ['trait stdClass {}'],
-
-            // collisions inside the same code snippet
-            ['
-                class Psy_Test_CodeCleaner_ValidClassNamePass_Alpha {}
-                class Psy_Test_CodeCleaner_ValidClassNamePass_Alpha {}
-            '],
-            ['
-                class Psy_Test_CodeCleaner_ValidClassNamePass_Alpha {}
-                trait Psy_Test_CodeCleaner_ValidClassNamePass_Alpha {}
-            '],
-            ['
-                trait Psy_Test_CodeCleaner_ValidClassNamePass_Alpha {}
-                class Psy_Test_CodeCleaner_ValidClassNamePass_Alpha {}
-            '],
-            ['
-                trait Psy_Test_CodeCleaner_ValidClassNamePass_Alpha {}
-                interface Psy_Test_CodeCleaner_ValidClassNamePass_Alpha {}
-            '],
-            ['
-                interface Psy_Test_CodeCleaner_ValidClassNamePass_Alpha {}
-                trait Psy_Test_CodeCleaner_ValidClassNamePass_Alpha {}
-            '],
-            ['
-                interface Psy_Test_CodeCleaner_ValidClassNamePass_Alpha {}
-                class Psy_Test_CodeCleaner_ValidClassNamePass_Alpha {}
-            '],
-            ['
-                class Psy_Test_CodeCleaner_ValidClassNamePass_Alpha {}
-                interface Psy_Test_CodeCleaner_ValidClassNamePass_Alpha {}
-            '],
-
-            // namespaced collisions
-            ['
-                namespace Psy\\Test\\CodeCleaner {
-                    class ValidClassNamePassTest {}
-                }
-            '],
-            ['
-                namespace Psy\\Test\\CodeCleaner\\ValidClassNamePass {
-                    class Beta {}
-                }
-                namespace Psy\\Test\\CodeCleaner\\ValidClassNamePass {
-                    class Beta {}
-                }
-            '],
-
-            // extends and implements
-            ['class ValidClassNamePassTest extends NotAClass {}'],
-            ['class ValidClassNamePassTest extends ArrayAccess {}'],
-            ['class ValidClassNamePassTest implements stdClass {}'],
-            ['class ValidClassNamePassTest implements ArrayAccess, stdClass {}'],
-            ['interface ValidClassNamePassTest extends stdClass {}'],
-            ['interface ValidClassNamePassTest extends ArrayAccess, stdClass {}'],
-
-            // class instantiations
-            ['new Psy_Test_CodeCleaner_ValidClassNamePass_Gamma();'],
-            ['
-                namespace Psy\\Test\\CodeCleaner\\ValidClassNamePass {
-                    new Psy_Test_CodeCleaner_ValidClassNamePass_Delta();
-                }
-            '],
-
-            // class constant fetch
-            ['Psy\\Test\\CodeCleaner\\ValidClassNamePass\\NotAClass::FOO'],
-
-            // static call
-            ['Psy\\Test\\CodeCleaner\\ValidClassNamePass\\NotAClass::foo()'],
-            ['Psy\\Test\\CodeCleaner\\ValidClassNamePass\\NotAClass::$foo()'],
-            ['Psy\\Test\\CodeCleaner\\ValidClassNamePassTest::notAMethod()'],
-        ];
-    }
-
-    /**
-     * @dataProvider getValid
-     */
-    public function testProcessValid($code)
-    {
-        $this->parseAndTraverse($code);
-        $this->assertTrue(true);
-    }
-
-    public function getValid()
-    {
-        $valid = [
-            // class declarations
-            ['class Psy_Test_CodeCleaner_ValidClassNamePass_Epsilon {}'],
-            ['namespace Psy\Test\CodeCleaner\ValidClassNamePass; class Zeta {}'],
-            ['
-                namespace { class Psy_Test_CodeCleaner_ValidClassNamePass_Eta {}; }
-                namespace Psy\\Test\\CodeCleaner\\ValidClassNamePass {
-                    class Psy_Test_CodeCleaner_ValidClassNamePass_Eta {}
-                }
-            '],
-            ['namespace Psy\Test\CodeCleaner\ValidClassNamePass { class stdClass {} }'],
-
-            // class instantiations
-            ['new stdClass();'],
-            ['new stdClass();'],
-            ['
-                namespace Psy\\Test\\CodeCleaner\\ValidClassNamePass {
-                    class Theta {}
-                }
-                namespace Psy\\Test\\CodeCleaner\\ValidClassNamePass {
-                    new Theta();
-                }
-            '],
-            ['
-                namespace Psy\\Test\\CodeCleaner\\ValidClassNamePass {
-                    class Iota {}
-                    new Iota();
-                }
-            '],
-            ['
-                namespace Psy\\Test\\CodeCleaner\\ValidClassNamePass {
-                    class Kappa {}
-                }
-                namespace {
-                    new \\Psy\\Test\\CodeCleaner\\ValidClassNamePass\\Kappa();
-                }
-            '],
-
-            // Class constant fetch (ValidConstantPassTest validates the actual constant)
-            ['class A {} A::FOO'],
-            ['$a = new DateTime; $a::ATOM'],
-            ['interface A { const B = 1; } A::B'],
-
-            // static call
-            ['DateTime::createFromFormat()'],
-            ['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.
-            ['
-                class Psy_Test_CodeCleaner_ValidClassNamePass_ClassWithStatic {
-                    public static function getInstance() {
-                        return new self();
-                    }
-                }
-            '],
-            ['
-                class Psy_Test_CodeCleaner_ValidClassNamePass_ClassWithStatic {
-                    public static function getInstance() {
-                        return new SELF();
-                    }
-                }
-            '],
-            ['
-                class Psy_Test_CodeCleaner_ValidClassNamePass_ClassWithStatic {
-                    public static function getInstance() {
-                        return new self;
-                    }
-                }
-            '],
-            ['
-                class Psy_Test_CodeCleaner_ValidClassNamePass_ClassWithStatic {
-                    public static function getInstance() {
-                        return new static();
-                    }
-                }
-            '],
-            ['
-                class Psy_Test_CodeCleaner_ValidClassNamePass_ClassWithStatic {
-                    public static function getInstance() {
-                        return new Static();
-                    }
-                }
-            '],
-            ['
-                class Psy_Test_CodeCleaner_ValidClassNamePass_ClassWithStatic {
-                    public static function getInstance() {
-                        return new static;
-                    }
-                }
-            '],
-            ['
-                class Psy_Test_CodeCleaner_ValidClassNamePass_ClassWithStatic {
-                    public static function foo() {
-                        return parent::bar();
-                    }
-                }
-            '],
-            ['
-                class Psy_Test_CodeCleaner_ValidClassNamePass_ClassWithStatic {
-                    public static function foo() {
-                        return self::bar();
-                    }
-                }
-            '],
-            ['
-                class Psy_Test_CodeCleaner_ValidClassNamePass_ClassWithStatic {
-                    public static function foo() {
-                        return static::bar();
-                    }
-                }
-            '],
-
-            ['class A { static function b() { return new A; } }'],
-            ['
-                class A {
-                    const B = 123;
-                    function c() {
-                        return A::B;
-                    }
-                }
-            '],
-            ['class A {} class B { function c() { return new A; } }'],
-
-            // recursion
-            ['class A { function a() { A::a(); } }'],
-
-            // conditionally defined classes
-            ['
-                class A {}
-                if (false) {
-                    class A {}
-                }
-            '],
-            ['
-                class A {}
-                if (true) {
-                    class A {}
-                } else if (false) {
-                    class A {}
-                } else {
-                    class A {}
-                }
-            '],
-            // ewww
-            ['
-                class A {}
-                if (true):
-                    class A {}
-                elseif (false):
-                    class A {}
-                else:
-                    class A {}
-                endif;
-            '],
-            ['
-                class A {}
-                while (false) { class A {} }
-            '],
-            ['
-                class A {}
-                do { class A {} } while (false);
-            '],
-            ['
-                class A {}
-                switch (1) {
-                    case 0:
-                        class A {}
-                        break;
-                    case 1:
-                        class A {}
-                        break;
-                    case 2:
-                        class A {}
-                        break;
-                }
-            '],
-        ];
-
-        // Ugh. There's gotta be a better way to test for this.
-        if (\class_exists('PhpParser\ParserFactory')) {
-            // PHP 7.0 anonymous classes, only supported by PHP Parser v2.x
-            $valid[] = ['$obj = new class() {}'];
-        }
-
-        if (\version_compare(PHP_VERSION, '5.5', '>=')) {
-            $valid[] = ['interface A {} A::class'];
-            $valid[] = ['interface A {} A::CLASS'];
-            $valid[] = ['class A {} A::class'];
-            $valid[] = ['class A {} A::CLASS'];
-            $valid[] = ['A::class'];
-            $valid[] = ['A::CLASS'];
-        }
-
-        return $valid;
-    }
-}
diff --git a/vendor/psy/psysh/test/CodeCleaner/ValidConstantPassTest.php b/vendor/psy/psysh/test/CodeCleaner/ValidConstantPassTest.php
deleted file mode 100644
index a6c52e0419..0000000000
--- a/vendor/psy/psysh/test/CodeCleaner/ValidConstantPassTest.php
+++ /dev/null
@@ -1,65 +0,0 @@
-<?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;
-
-use Psy\CodeCleaner\ValidConstantPass;
-
-class ValidConstantPassTest extends CodeCleanerTestCase
-{
-    public function setUp()
-    {
-        $this->setPass(new ValidConstantPass());
-    }
-
-    /**
-     * @dataProvider getInvalidReferences
-     * @expectedException \Psy\Exception\FatalErrorException
-     */
-    public function testProcessInvalidConstantReferences($code)
-    {
-        $this->parseAndTraverse($code);
-    }
-
-    public function getInvalidReferences()
-    {
-        return [
-            ['Foo\BAR'],
-
-            // class constant fetch
-            ['Psy\Test\CodeCleaner\ValidConstantPassTest::FOO'],
-            ['DateTime::BACON'],
-        ];
-    }
-
-    /**
-     * @dataProvider getValidReferences
-     */
-    public function testProcessValidConstantReferences($code)
-    {
-        $this->parseAndTraverse($code);
-        $this->assertTrue(true);
-    }
-
-    public function getValidReferences()
-    {
-        return [
-            ['PHP_EOL'],
-
-            // class constant fetch
-            ['NotAClass::FOO'],
-            ['DateTime::ATOM'],
-            ['$a = new DateTime; $a::ATOM'],
-            ['DateTime::class'],
-            ['$a = new DateTime; $a::class'],
-        ];
-    }
-}
diff --git a/vendor/psy/psysh/test/CodeCleaner/ValidConstructorPassTest.php b/vendor/psy/psysh/test/CodeCleaner/ValidConstructorPassTest.php
deleted file mode 100644
index 4f7e40c441..0000000000
--- a/vendor/psy/psysh/test/CodeCleaner/ValidConstructorPassTest.php
+++ /dev/null
@@ -1,93 +0,0 @@
-<?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;
-
-use Psy\CodeCleaner\ValidConstructorPass;
-
-class ValidConstructorPassTest extends CodeCleanerTestCase
-{
-    protected function setUp()
-    {
-        $this->setPass(new ValidConstructorPass());
-    }
-
-    /**
-     * @dataProvider invalidStatements
-     * @expectedException \Psy\Exception\FatalErrorException
-     */
-    public function testProcessInvalidStatement($code)
-    {
-        $this->parseAndTraverse($code);
-    }
-
-    /**
-     * @dataProvider invalidParserStatements
-     * @expectedException \Psy\Exception\ParseErrorException
-     */
-    public function testProcessInvalidStatementCatchedByParser($code)
-    {
-        $this->parseAndTraverse($code);
-    }
-
-    public function invalidStatements()
-    {
-        $data = [
-            ['class A { public static function A() {}}'],
-            ['class A { public static function a() {}}'],
-            ['class A { private static function A() {}}'],
-            ['class A { private static function a() {}}'],
-        ];
-
-        if (\version_compare(PHP_VERSION, '7.0', '>=')) {
-            $data[] = ['class A { public function A(): ?array {}}'];
-            $data[] = ['class A { public function a(): ?array {}}'];
-        }
-
-        return $data;
-    }
-
-    public function invalidParserStatements()
-    {
-        return [
-            ['class A { public static function __construct() {}}'],
-            ['class A { private static function __construct() {}}'],
-            ['class A { private static function __construct() {} public function A() {}}'],
-            ['namespace B; class A { private static function __construct() {}}'],
-        ];
-    }
-
-    /**
-     * @dataProvider validStatements
-     */
-    public function testProcessValidStatement($code)
-    {
-        $this->parseAndTraverse($code);
-        $this->assertTrue(true);
-    }
-
-    public function validStatements()
-    {
-        $data = [
-            ['class A { public static function A() {} public function __construct() {}}'],
-            ['class A { private function __construct() {} public static function A() {}}'],
-            ['namespace B; class A { private static function A() {}}'],
-        ];
-
-        if (\version_compare(PHP_VERSION, '7.0', '>=')) {
-            $data[] = ['class A { public static function A() {} public function __construct() {}}'];
-            $data[] = ['class A { private function __construct() {} public static function A(): ?array {}}'];
-            $data[] = ['namespace B; class A { private static function A(): ?array {}}'];
-        }
-
-        return $data;
-    }
-}
diff --git a/vendor/psy/psysh/test/CodeCleaner/ValidFunctionNamePassTest.php b/vendor/psy/psysh/test/CodeCleaner/ValidFunctionNamePassTest.php
deleted file mode 100644
index 70a17315d8..0000000000
--- a/vendor/psy/psysh/test/CodeCleaner/ValidFunctionNamePassTest.php
+++ /dev/null
@@ -1,180 +0,0 @@
-<?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;
-
-use Psy\CodeCleaner\ValidFunctionNamePass;
-
-class ValidFunctionNamePassTest extends CodeCleanerTestCase
-{
-    public function setUp()
-    {
-        $this->setPass(new ValidFunctionNamePass());
-    }
-
-    /**
-     * @dataProvider getInvalidFunctions
-     * @expectedException \Psy\Exception\FatalErrorException
-     */
-    public function testProcessInvalidFunctionCallsAndDeclarations($code)
-    {
-        $this->parseAndTraverse($code);
-    }
-
-    public function getInvalidFunctions()
-    {
-        return [
-            // function declarations
-            ['function array_merge() {}'],
-            ['function Array_Merge() {}'],
-            ['
-                function psy_test_codecleaner_validfunctionnamepass_alpha() {}
-                function psy_test_codecleaner_validfunctionnamepass_alpha() {}
-            '],
-            ['
-                namespace Psy\\Test\\CodeCleaner\\ValidFunctionNamePass {
-                    function beta() {}
-                }
-                namespace Psy\\Test\\CodeCleaner\\ValidFunctionNamePass {
-                    function beta() {}
-                }
-            '],
-
-            // function calls
-            ['psy_test_codecleaner_validfunctionnamepass_gamma()'],
-            ['
-                namespace Psy\\Test\\CodeCleaner\\ValidFunctionNamePass {
-                    delta();
-                }
-            '],
-
-            // recursion
-            ['function a() { a(); } function a() {}'],
-        ];
-    }
-
-    /**
-     * @dataProvider getValidFunctions
-     */
-    public function testProcessValidFunctionCallsAndDeclarations($code)
-    {
-        $this->parseAndTraverse($code);
-        $this->assertTrue(true);
-    }
-
-    public function getValidFunctions()
-    {
-        return [
-            ['function psy_test_codecleaner_validfunctionnamepass_epsilon() {}'],
-            ['
-                namespace Psy\\Test\\CodeCleaner\\ValidFunctionNamePass {
-                    function zeta() {}
-                }
-            '],
-            ['
-                namespace {
-                    function psy_test_codecleaner_validfunctionnamepass_eta() {}
-                }
-                namespace Psy\\Test\\CodeCleaner\\ValidFunctionNamePass {
-                    function psy_test_codecleaner_validfunctionnamepass_eta() {}
-                }
-            '],
-            ['
-                namespace Psy\\Test\\CodeCleaner\\ValidFunctionNamePass {
-                    function psy_test_codecleaner_validfunctionnamepass_eta() {}
-                }
-                namespace {
-                    function psy_test_codecleaner_validfunctionnamepass_eta() {}
-                }
-            '],
-            ['
-                namespace Psy\\Test\\CodeCleaner\\ValidFunctionNamePass {
-                    function array_merge() {}
-                }
-            '],
-
-            // function calls
-            ['array_merge();'],
-            ['
-                namespace Psy\\Test\\CodeCleaner\\ValidFunctionNamePass {
-                    function theta() {}
-                }
-                namespace Psy\\Test\\CodeCleaner\\ValidFunctionNamePass {
-                    theta();
-                }
-            '],
-            // closures
-            ['$test = function(){};$test()'],
-            ['
-                namespace Psy\\Test\\CodeCleaner\\ValidFunctionNamePass {
-                    function theta() {}
-                }
-                namespace {
-                    Psy\\Test\\CodeCleaner\\ValidFunctionNamePass\\theta();
-                }
-            '],
-
-            // recursion
-            ['function a() { a(); }'],
-
-            // conditionally defined functions
-            ['
-                function a() {}
-                if (false) {
-                    function a() {}
-                }
-            '],
-            ['
-                function a() {}
-                if (true) {
-                    function a() {}
-                } else if (false) {
-                    function a() {}
-                } else {
-                    function a() {}
-                }
-            '],
-            // ewww
-            ['
-                function a() {}
-                if (true):
-                    function a() {}
-                elseif (false):
-                    function a() {}
-                else:
-                    function a() {}
-                endif;
-            '],
-            ['
-                function a() {}
-                while (false) { function a() {} }
-            '],
-            ['
-                function a() {}
-                do { function a() {} } while (false);
-            '],
-            ['
-                function a() {}
-                switch (1) {
-                    case 0:
-                        function a() {}
-                        break;
-                    case 1:
-                        function a() {}
-                        break;
-                    case 2:
-                        function a() {}
-                        break;
-                }
-            '],
-        ];
-    }
-}
diff --git a/vendor/psy/psysh/test/CodeCleanerTest.php b/vendor/psy/psysh/test/CodeCleanerTest.php
deleted file mode 100644
index 2195a4ff87..0000000000
--- a/vendor/psy/psysh/test/CodeCleanerTest.php
+++ /dev/null
@@ -1,131 +0,0 @@
-<?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;
-
-use Psy\CodeCleaner;
-
-class CodeCleanerTest extends \PHPUnit\Framework\TestCase
-{
-    /**
-     * @dataProvider semicolonCodeProvider
-     */
-    public function testAutomaticSemicolons(array $lines, $requireSemicolons, $expected)
-    {
-        $cc = new CodeCleaner();
-        $this->assertSame($expected, $cc->clean($lines, $requireSemicolons));
-    }
-
-    public function semicolonCodeProvider()
-    {
-        return [
-            [['true'],  false, 'return true;'],
-            [['true;'], false, 'return true;'],
-            [['true;'], true,  'return true;'],
-            [['true'],  true,  false],
-
-            [['echo "foo";', 'true'], true,  false],
-
-            [['echo "foo";', 'true'], false, "echo \"foo\";\nreturn true;"],
-        ];
-    }
-
-    /**
-     * @dataProvider unclosedStatementsProvider
-     */
-    public function testUnclosedStatements(array $lines, $isUnclosed)
-    {
-        $cc  = new CodeCleaner();
-        $res = $cc->clean($lines);
-
-        if ($isUnclosed) {
-            $this->assertFalse($res);
-        } else {
-            $this->assertNotFalse($res);
-        }
-    }
-
-    public function unclosedStatementsProvider()
-    {
-        return [
-            [['echo "'],   true],
-            [['echo \''],  true],
-            [['if (1) {'], true],
-
-            [['echo "foo",'], true],
-
-            [['echo ""'],   false],
-            [["echo ''"],   false],
-            [['if (1) {}'], false],
-
-            [['// closed comment'],    false],
-            [['function foo() { /**'], true],
-
-            [['var_dump(1, 2,'], true],
-            [['var_dump(1, 2,', '3)'], false],
-        ];
-    }
-
-    /**
-     * @dataProvider moreUnclosedStatementsProvider
-     */
-    public function testMoreUnclosedStatements(array $lines)
-    {
-        if (\defined('HHVM_VERSION')) {
-            $this->markTestSkipped('HHVM not supported.');
-        }
-
-        $cc  = new CodeCleaner();
-        $res = $cc->clean($lines);
-
-        $this->assertFalse($res);
-    }
-
-    public function moreUnclosedStatementsProvider()
-    {
-        return [
-            [["\$content = <<<EOS\n"]],
-            [["\$content = <<<'EOS'\n"]],
-
-            [['/* unclosed comment']],
-            [['/** unclosed comment']],
-        ];
-    }
-
-    /**
-     * @dataProvider invalidStatementsProvider
-     * @expectedException \Psy\Exception\ParseErrorException
-     */
-    public function testInvalidStatementsThrowParseErrors($code)
-    {
-        $cc = new CodeCleaner();
-        $cc->clean([$code]);
-    }
-
-    public function invalidStatementsProvider()
-    {
-        // n.b. We used to check that `var_dump(1,2,)` failed, but PHP Parser
-        // 4.x backported trailing comma function calls from PHP 7.3 for free!
-        // so we're not going to spend too much time worrying about it :)
-
-        return [
-            ['function "what'],
-            ["function 'what"],
-            ['echo }'],
-            ['echo {'],
-            ['if (1) }'],
-            ['echo """'],
-            ["echo '''"],
-            ['$foo "bar'],
-            ['$foo \'bar'],
-        ];
-    }
-}
diff --git a/vendor/psy/psysh/test/Command/ExitCommandTest.php b/vendor/psy/psysh/test/Command/ExitCommandTest.php
deleted file mode 100644
index 45626be2ca..0000000000
--- a/vendor/psy/psysh/test/Command/ExitCommandTest.php
+++ /dev/null
@@ -1,29 +0,0 @@
-<?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 Symfony\Component\Console\Tests\Command;
-
-use Psy\Command\ExitCommand;
-use Symfony\Component\Console\Tester\CommandTester;
-
-class ExitCommandTest extends \PHPUnit\Framework\TestCase
-{
-    /**
-     * @expectedException \Psy\Exception\BreakException
-     * @expectedExceptionMessage Goodbye
-     */
-    public function testExecute()
-    {
-        $command = new ExitCommand();
-        $tester = new CommandTester($command);
-        $tester->execute([]);
-    }
-}
diff --git a/vendor/psy/psysh/test/Command/ThrowUpCommandTest.php b/vendor/psy/psysh/test/Command/ThrowUpCommandTest.php
deleted file mode 100644
index 511c5809c2..0000000000
--- a/vendor/psy/psysh/test/Command/ThrowUpCommandTest.php
+++ /dev/null
@@ -1,89 +0,0 @@
-<?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 Symfony\Component\Console\Tests\Command;
-
-use Psy\Command\ThrowUpCommand;
-use Psy\Shell;
-use Symfony\Component\Console\Tester\CommandTester;
-
-class ThrowUpCommandTest extends \PHPUnit\Framework\TestCase
-{
-    /**
-     * @dataProvider executeThis
-     */
-    public function testExecute($args, $hasCode, $expect, $addSilent = true)
-    {
-        $shell = $this->getMockBuilder('Psy\\Shell')
-            ->setMethods(['hasCode', 'addCode'])
-            ->getMock();
-
-        $shell->expects($this->once())->method('hasCode')->willReturn($hasCode);
-        $shell->expects($this->once())
-            ->method('addCode')
-            ->with($this->equalTo($expect), $this->equalTo($addSilent));
-
-        $command = new ThrowUpCommand();
-        $command->setApplication($shell);
-        $tester = new CommandTester($command);
-        $tester->execute($args);
-        $this->assertEquals('', $tester->getDisplay());
-    }
-
-    public function executeThis()
-    {
-        $throw = 'throw \Psy\Exception\ThrowUpException::fromThrowable';
-
-        return [
-            [[], false, $throw . '($_e);'],
-
-            [['exception' => '$ex'], false, $throw . '($ex);'],
-            [['exception' => 'getException()'], false, $throw . '(getException());'],
-            [['exception' => 'new \\Exception("WAT")'], false, $throw . '(new \\Exception("WAT"));'],
-
-            [['exception' => '\'some string\''], false, $throw . '(new \\Exception(\'some string\'));'],
-            [['exception' => '"WHEEEEEEE!"'], false, $throw . '(new \\Exception("WHEEEEEEE!"));'],
-
-            // Everything should work with or without semicolons.
-            [['exception' => '$ex;'], false, $throw . '($ex);'],
-            [['exception' => '"WHEEEEEEE!";'], false, $throw . '(new \\Exception("WHEEEEEEE!"));'],
-
-            // Don't add as silent code if we've already got code.
-            [[], true, $throw . '($_e);', false],
-            [['exception' => 'getException()'], true, $throw . '(getException());', false],
-            [['exception' => '\'some string\''], true, $throw . '(new \\Exception(\'some string\'));', false],
-        ];
-    }
-
-    /**
-     * @expectedException \InvalidArgumentException
-     * @expectedExceptionMessage No idea how to throw this
-     */
-    public function testMultipleArgsThrowsException()
-    {
-        $command = new ThrowUpCommand();
-        $command->setApplication(new Shell());
-        $tester = new CommandTester($command);
-        $tester->execute(['exception' => 'foo(); bar()']);
-    }
-
-    /**
-     * @expectedException \PhpParser\Error
-     * @expectedExceptionMessage Syntax error, unexpected ')' on line 1
-     */
-    public function testParseErrorThrowsException()
-    {
-        $command = new ThrowUpCommand();
-        $command->setApplication(new Shell());
-        $tester = new CommandTester($command);
-        $tester->execute(['exception' => 'foo)']);
-    }
-}
diff --git a/vendor/psy/psysh/test/Command/TimeitCommand/TimeitVisitorTest.php b/vendor/psy/psysh/test/Command/TimeitCommand/TimeitVisitorTest.php
deleted file mode 100644
index 1f317350ee..0000000000
--- a/vendor/psy/psysh/test/Command/TimeitCommand/TimeitVisitorTest.php
+++ /dev/null
@@ -1,52 +0,0 @@
-<?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\Command\TimeitCommand;
-
-use PhpParser\NodeTraverser;
-use Psy\Command\TimeitCommand\TimeitVisitor;
-use Psy\Test\ParserTestCase;
-
-class TimeitVisitorTest extends ParserTestCase
-{
-    public function setUp()
-    {
-        $this->traverser = new NodeTraverser();
-        $this->traverser->addVisitor(new TimeitVisitor());
-    }
-
-    /**
-     * @dataProvider codez
-     */
-    public function testProcess($from, $to)
-    {
-        $this->assertProcessesAs($from, $to);
-    }
-
-    public function codez()
-    {
-        $start = '\Psy\Command\TimeitCommand::markStart';
-        $end = '\Psy\Command\TimeitCommand::markEnd';
-        $noReturn = 'new \Psy\CodeCleaner\NoReturnValue()';
-
-        return [
-            ['', "$end($start());"], // heh
-            ['a()', "$start(); $end(a());"],
-            ['$b()', "$start(); $end(\$b());"],
-            ['$c->d()', "$start(); $end(\$c->d());"],
-            ['e(); f()', "$start(); e(); $end(f());"],
-            ['function g() { return 1; }', "$start(); function g() {return 1;} $end($noReturn);"],
-            ['return 1', "$start(); return $end(1);"],
-            ['return 1; 2', "$start(); return $end(1); $end(2);"],
-            ['return 1; function h() {}', "$start(); return $end(1); function h() {} $end($noReturn);"],
-        ];
-    }
-}
diff --git a/vendor/psy/psysh/test/ConfigurationTest.php b/vendor/psy/psysh/test/ConfigurationTest.php
deleted file mode 100644
index b7b6c0c013..0000000000
--- a/vendor/psy/psysh/test/ConfigurationTest.php
+++ /dev/null
@@ -1,256 +0,0 @@
-<?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;
-
-use Psy\CodeCleaner;
-use Psy\Configuration;
-use Psy\Output\PassthruPager;
-use Psy\VersionUpdater\GitHubChecker;
-use Symfony\Component\Console\Output\ConsoleOutput;
-
-class ConfigurationTest extends \PHPUnit\Framework\TestCase
-{
-    private function getConfig($configFile = null)
-    {
-        return new Configuration([
-            'configFile' => $configFile ?: __DIR__ . '/fixtures/empty.php',
-        ]);
-    }
-
-    public function testDefaults()
-    {
-        $config = $this->getConfig();
-
-        $this->assertSame(\function_exists('readline'), $config->hasReadline());
-        $this->assertSame(\function_exists('readline'), $config->useReadline());
-        $this->assertSame(\function_exists('pcntl_signal'), $config->hasPcntl());
-        $this->assertSame(\function_exists('pcntl_signal'), $config->usePcntl());
-        $this->assertFalse($config->requireSemicolons());
-        $this->assertSame(Configuration::COLOR_MODE_AUTO, $config->colorMode());
-        $this->assertNull($config->getStartupMessage());
-    }
-
-    public function testGettersAndSetters()
-    {
-        $config = $this->getConfig();
-
-        $this->assertNull($config->getDataDir());
-        $config->setDataDir('wheee');
-        $this->assertSame('wheee', $config->getDataDir());
-
-        $this->assertNull($config->getConfigDir());
-        $config->setConfigDir('wheee');
-        $this->assertSame('wheee', $config->getConfigDir());
-    }
-
-    /**
-     * @dataProvider directories
-     */
-    public function testFilesAndDirectories($home, $configFile, $historyFile, $manualDbFile)
-    {
-        $oldHome = \getenv('HOME');
-        \putenv("HOME=$home");
-
-        $config = new Configuration();
-        $this->assertSame(\realpath($configFile),   \realpath($config->getConfigFile()));
-        $this->assertSame(\realpath($historyFile),  \realpath($config->getHistoryFile()));
-        $this->assertSame(\realpath($manualDbFile), \realpath($config->getManualDbFile()));
-
-        \putenv("HOME=$oldHome");
-    }
-
-    public function directories()
-    {
-        $base = \realpath(__DIR__ . '/fixtures');
-
-        return [
-            [
-                $base . '/default',
-                $base . '/default/.config/psysh/config.php',
-                $base . '/default/.config/psysh/psysh_history',
-                $base . '/default/.local/share/psysh/php_manual.sqlite',
-            ],
-            [
-                $base . '/legacy',
-                $base . '/legacy/.psysh/rc.php',
-                $base . '/legacy/.psysh/history',
-                $base . '/legacy/.psysh/php_manual.sqlite',
-            ],
-            [
-                $base . '/mixed',
-                $base . '/mixed/.psysh/config.php',
-                $base . '/mixed/.psysh/psysh_history',
-                null,
-            ],
-        ];
-    }
-
-    public function testLoadConfig()
-    {
-        $config  = $this->getConfig();
-        $cleaner = new CodeCleaner();
-        $pager   = new PassthruPager(new ConsoleOutput());
-
-        $config->loadConfig([
-            'useReadline'       => false,
-            'usePcntl'          => false,
-            'codeCleaner'       => $cleaner,
-            'pager'             => $pager,
-            'requireSemicolons' => true,
-            'errorLoggingLevel' => E_ERROR | E_WARNING,
-            'colorMode'         => Configuration::COLOR_MODE_FORCED,
-            'startupMessage'    => 'Psysh is awesome!',
-        ]);
-
-        $this->assertFalse($config->useReadline());
-        $this->assertFalse($config->usePcntl());
-        $this->assertSame($cleaner, $config->getCodeCleaner());
-        $this->assertSame($pager, $config->getPager());
-        $this->assertTrue($config->requireSemicolons());
-        $this->assertSame(E_ERROR | E_WARNING, $config->errorLoggingLevel());
-        $this->assertSame(Configuration::COLOR_MODE_FORCED, $config->colorMode());
-        $this->assertSame('Psysh is awesome!', $config->getStartupMessage());
-    }
-
-    public function testLoadConfigFile()
-    {
-        $config = $this->getConfig(__DIR__ . '/fixtures/config.php');
-
-        $runtimeDir = $this->joinPath(\realpath(\sys_get_temp_dir()), 'psysh_test', 'withconfig', 'temp');
-
-        $this->assertStringStartsWith($runtimeDir, \realpath($config->getTempFile('foo', 123)));
-        $this->assertStringStartsWith($runtimeDir, \realpath(\dirname($config->getPipe('pipe', 123))));
-        $this->assertStringStartsWith($runtimeDir, \realpath($config->getRuntimeDir()));
-
-        $this->assertSame(\function_exists('readline'), $config->useReadline());
-        $this->assertFalse($config->usePcntl());
-        $this->assertSame(E_ALL & ~E_NOTICE, $config->errorLoggingLevel());
-    }
-
-    public function testLoadLocalConfigFile()
-    {
-        $oldPwd = \getcwd();
-        \chdir(\realpath(__DIR__ . '/fixtures/project/'));
-
-        $config = new Configuration();
-
-        // When no configuration file is specified local project config is merged
-        $this->assertTrue($config->requireSemicolons());
-        $this->assertFalse($config->useUnicode());
-
-        $config = new Configuration(['configFile' => __DIR__ . '/fixtures/config.php']);
-
-        // Defining a configuration file skips loading local project config
-        $this->assertFalse($config->requireSemicolons());
-        $this->assertTrue($config->useUnicode());
-
-        \chdir($oldPwd);
-    }
-
-    /**
-     * @expectedException \Psy\Exception\DeprecatedException
-     */
-    public function testBaseDirConfigIsDeprecated()
-    {
-        $config = new Configuration(['baseDir' => 'fake']);
-    }
-
-    private function joinPath()
-    {
-        return \implode(DIRECTORY_SEPARATOR, \func_get_args());
-    }
-
-    public function testConfigIncludes()
-    {
-        $config = new Configuration([
-            'defaultIncludes' => ['/file.php'],
-            'configFile'      => __DIR__ . '/fixtures/empty.php',
-        ]);
-
-        $includes = $config->getDefaultIncludes();
-        $this->assertCount(1, $includes);
-        $this->assertSame('/file.php', $includes[0]);
-    }
-
-    public function testGetOutput()
-    {
-        $config = $this->getConfig();
-        $output = $config->getOutput();
-
-        $this->assertInstanceOf('Psy\Output\ShellOutput', $output);
-    }
-
-    public function getOutputDecoratedProvider()
-    {
-        return [
-            'auto' => [
-                null,
-                Configuration::COLOR_MODE_AUTO,
-            ],
-            'forced' => [
-                true,
-                Configuration::COLOR_MODE_FORCED,
-            ],
-            'disabled' => [
-                false,
-                Configuration::COLOR_MODE_DISABLED,
-            ],
-        ];
-    }
-
-    /** @dataProvider getOutputDecoratedProvider */
-    public function testGetOutputDecorated($expectation, $colorMode)
-    {
-        $config = $this->getConfig();
-        $config->setColorMode($colorMode);
-
-        $this->assertSame($expectation, $config->getOutputDecorated());
-    }
-
-    public function setColorModeValidProvider()
-    {
-        return [
-            'auto'     => [Configuration::COLOR_MODE_AUTO],
-            'forced'   => [Configuration::COLOR_MODE_FORCED],
-            'disabled' => [Configuration::COLOR_MODE_DISABLED],
-        ];
-    }
-
-    /** @dataProvider setColorModeValidProvider */
-    public function testSetColorModeValid($colorMode)
-    {
-        $config = $this->getConfig();
-        $config->setColorMode($colorMode);
-
-        $this->assertSame($colorMode, $config->colorMode());
-    }
-
-    /**
-     * @expectedException \InvalidArgumentException
-     * @expectedExceptionMessage invalid color mode: some invalid mode
-     */
-    public function testSetColorModeInvalid()
-    {
-        $config = $this->getConfig();
-        $config->setColorMode('some invalid mode');
-    }
-
-    public function testSetCheckerValid()
-    {
-        $config  = $this->getConfig();
-        $checker = new GitHubChecker();
-
-        $config->setChecker($checker);
-
-        $this->assertSame($checker, $config->getChecker());
-    }
-}
diff --git a/vendor/psy/psysh/test/ConsoleColorFactoryTest.php b/vendor/psy/psysh/test/ConsoleColorFactoryTest.php
deleted file mode 100644
index d58a48d369..0000000000
--- a/vendor/psy/psysh/test/ConsoleColorFactoryTest.php
+++ /dev/null
@@ -1,51 +0,0 @@
-<?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;
-
-use Psy\Configuration;
-use Psy\ConsoleColorFactory;
-
-class ConsoleColorFactoryTest extends \PHPUnit\Framework\TestCase
-{
-    public function testGetConsoleColorAuto()
-    {
-        $colorMode = Configuration::COLOR_MODE_AUTO;
-        $factory   = new ConsoleColorFactory($colorMode);
-        $colors    = $factory->getConsoleColor();
-        $themes    = $colors->getThemes();
-
-        $this->assertFalse($colors->isStyleForced());
-        $this->assertSame(['blue'], $themes['line_number']);
-    }
-
-    public function testGetConsoleColorForced()
-    {
-        $colorMode = Configuration::COLOR_MODE_FORCED;
-        $factory   = new ConsoleColorFactory($colorMode);
-        $colors    = $factory->getConsoleColor();
-        $themes    = $colors->getThemes();
-
-        $this->assertTrue($colors->isStyleForced());
-        $this->assertSame(['blue'], $themes['line_number']);
-    }
-
-    public function testGetConsoleColorDisabled()
-    {
-        $colorMode = Configuration::COLOR_MODE_DISABLED;
-        $factory   = new ConsoleColorFactory($colorMode);
-        $colors    = $factory->getConsoleColor();
-        $themes    = $colors->getThemes();
-
-        $this->assertFalse($colors->isStyleForced());
-        $this->assertSame(['none'], $themes['line_number']);
-    }
-}
diff --git a/vendor/psy/psysh/test/ContextTest.php b/vendor/psy/psysh/test/ContextTest.php
deleted file mode 100644
index d193703670..0000000000
--- a/vendor/psy/psysh/test/ContextTest.php
+++ /dev/null
@@ -1,325 +0,0 @@
-<?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;
-
-use Psy\Context;
-
-class ContextTest extends \PHPUnit\Framework\TestCase
-{
-    public function testGet()
-    {
-        $this->assertTrue(true);
-    }
-
-    public function testGetAll()
-    {
-        $this->assertTrue(true);
-    }
-
-    public function testGetSpecialVariables()
-    {
-        $context = new Context();
-
-        $this->assertNull($context->get('_'));
-        $this->assertNull($context->getReturnValue());
-
-        $this->assertEquals(['_' => null], $context->getAll());
-
-        $e = new \Exception('eeeeeee');
-        $obj = new \StdClass();
-        $context->setLastException($e);
-        $context->setLastStdout('out');
-        $context->setBoundObject($obj);
-
-        $context->setCommandScopeVariables([
-            '__function'  => 'function',
-            '__method'    => 'method',
-            '__class'     => 'class',
-            '__namespace' => 'namespace',
-            '__file'      => 'file',
-            '__line'      => 'line',
-            '__dir'       => 'dir',
-        ]);
-
-        $expected = [
-            '_'           => null,
-            '_e'          => $e,
-            '__out'       => 'out',
-            'this'        => $obj,
-            '__function'  => 'function',
-            '__method'    => 'method',
-            '__class'     => 'class',
-            '__namespace' => 'namespace',
-            '__file'      => 'file',
-            '__line'      => 'line',
-            '__dir'       => 'dir',
-        ];
-
-        $this->assertEquals($expected, $context->getAll());
-    }
-
-    public function testSetAll()
-    {
-        $context = new Context();
-
-        $baz = new \StdClass();
-        $vars = [
-            'foo' => 'Foo',
-            'bar' => 123,
-            'baz' => $baz,
-
-            '_'         => 'fail',
-            '_e'        => 'fail',
-            '__out'     => 'fail',
-            'this'      => 'fail',
-            '__psysh__' => 'fail',
-
-            '__function'  => 'fail',
-            '__method'    => 'fail',
-            '__class'     => 'fail',
-            '__namespace' => 'fail',
-            '__file'      => 'fail',
-            '__line'      => 'fail',
-            '__dir'       => 'fail',
-        ];
-
-        $context->setAll($vars);
-
-        $this->assertEquals('Foo', $context->get('foo'));
-        $this->assertEquals(123, $context->get('bar'));
-        $this->assertSame($baz, $context->get('baz'));
-
-        $this->assertEquals(['foo' => 'Foo', 'bar' => 123, 'baz' => $baz, '_' => null], $context->getAll());
-    }
-
-    /**
-     * @dataProvider specialNames
-     * @expectedException \InvalidArgumentException
-     * @expectedExceptionMessageRegEx /Unknown variable: \$\w+/
-     */
-    public function testSetAllDoesNotSetSpecial($name)
-    {
-        $context = new Context();
-        $context->setAll([$name => 'fail']);
-        $context->get($name);
-    }
-
-    public function specialNames()
-    {
-        return [
-            ['_e'],
-            ['__out'],
-            ['this'],
-            ['__psysh__'],
-            ['__function'],
-            ['__method'],
-            ['__class'],
-            ['__namespace'],
-            ['__file'],
-            ['__line'],
-            ['__dir'],
-        ];
-    }
-
-    public function testReturnValue()
-    {
-        $context = new Context();
-        $this->assertNull($context->getReturnValue());
-
-        $val = 'some string';
-        $context->setReturnValue($val);
-        $this->assertEquals($val, $context->getReturnValue());
-        $this->assertEquals($val, $context->get('_'));
-
-        $obj = new \StdClass();
-        $context->setReturnValue($obj);
-        $this->assertSame($obj, $context->getReturnValue());
-        $this->assertSame($obj, $context->get('_'));
-
-        $context->setReturnValue(null);
-        $this->assertNull($context->getReturnValue());
-    }
-
-    public function testLastException()
-    {
-        $context = new Context();
-        $e = new \Exception('wat');
-        $context->setLastException($e);
-        $this->assertSame($e, $context->getLastException());
-        $this->assertSame($e, $context->get('_e'));
-    }
-
-    /**
-     * @expectedException \InvalidArgumentException
-     * @expectedExceptionMessage No most-recent exception
-     */
-    public function testLastExceptionThrowsSometimes()
-    {
-        $context = new Context();
-        $context->getLastException();
-    }
-
-    public function testLastStdout()
-    {
-        $context = new Context();
-        $context->setLastStdout('ouuuuut');
-        $this->assertEquals('ouuuuut', $context->getLastStdout());
-        $this->assertEquals('ouuuuut', $context->get('__out'));
-    }
-
-    /**
-     * @expectedException \InvalidArgumentException
-     * @expectedExceptionMessage No most-recent output
-     */
-    public function testLastStdoutThrowsSometimes()
-    {
-        $context = new Context();
-        $context->getLastStdout();
-    }
-
-    public function testBoundObject()
-    {
-        $context = new Context();
-        $this->assertNull($context->getBoundObject());
-
-        $obj = new \StdClass();
-        $context->setBoundObject($obj);
-        $this->assertSame($obj, $context->getBoundObject());
-        $this->assertSame($obj, $context->get('this'));
-
-        $context->setBoundObject(null);
-        $this->assertNull($context->getBoundObject());
-    }
-
-    /**
-     * @expectedException \InvalidArgumentException
-     * @expectedExceptionMessage Unknown variable: $this
-     */
-    public function testBoundObjectThrowsSometimes()
-    {
-        $context = new Context();
-        $context->get('this');
-    }
-
-    public function testBoundClass()
-    {
-        $context = new Context();
-        $this->assertNull($context->getBoundClass());
-
-        $context->setBoundClass('');
-        $this->assertNull($context->getBoundClass());
-
-        $context->setBoundClass('Psy\Shell');
-        $this->assertEquals('Psy\Shell', $context->getBoundClass());
-
-        $context->setBoundObject(new \StdClass());
-        $this->assertNotNull($context->getBoundObject());
-        $this->assertNull($context->getBoundClass());
-
-        $context->setBoundClass('Psy\Shell');
-        $this->assertEquals('Psy\Shell', $context->getBoundClass());
-        $this->assertNull($context->getBoundObject());
-
-        $context->setBoundClass(null);
-        $this->assertNull($context->getBoundClass());
-        $this->assertNull($context->getBoundObject());
-    }
-
-    public function testCommandScopeVariables()
-    {
-        $__function  = 'donkey';
-        $__method    = 'diddy';
-        $__class     = 'cranky';
-        $__namespace = 'funky';
-        $__file      = 'candy';
-        $__line      = 'dixie';
-        $__dir       = 'wrinkly';
-
-        $vars = \compact('__function', '__method', '__class', '__namespace', '__file', '__line', '__dir');
-
-        $context = new Context();
-        $context->setCommandScopeVariables($vars);
-
-        $this->assertEquals($vars, $context->getCommandScopeVariables());
-
-        $this->assertEquals($__function, $context->get('__function'));
-        $this->assertEquals($__method, $context->get('__method'));
-        $this->assertEquals($__class, $context->get('__class'));
-        $this->assertEquals($__namespace, $context->get('__namespace'));
-        $this->assertEquals($__file, $context->get('__file'));
-        $this->assertEquals($__line, $context->get('__line'));
-        $this->assertEquals($__dir, $context->get('__dir'));
-
-        $someVars = \compact('__function', '__namespace', '__file', '__line', '__dir');
-        $context->setCommandScopeVariables($someVars);
-    }
-
-    public function testGetUnusedCommandScopeVariableNames()
-    {
-        $context = new Context();
-
-        $this->assertEquals(
-            ['__function', '__method', '__class', '__namespace', '__file', '__line', '__dir'],
-            $context->getUnusedCommandScopeVariableNames()
-        );
-
-        $context->setCommandScopeVariables([
-            '__function'  => 'foo',
-            '__namespace' => 'bar',
-            '__file'      => 'baz',
-            '__line'      => 123,
-            '__dir'       => 'qux',
-        ]);
-
-        $this->assertEquals(
-            ['__method', '__class'],
-            \array_values($context->getUnusedCommandScopeVariableNames())
-        );
-    }
-
-    /**
-     * @dataProvider specialAndNotSpecialVariableNames
-     */
-    public function testIsSpecialVariableName($name, $isSpecial)
-    {
-        $context = new Context();
-
-        if ($isSpecial) {
-            $this->assertTrue($context->isSpecialVariableName($name));
-        } else {
-            $this->assertFalse($context->isSpecialVariableName($name));
-        }
-    }
-
-    public function specialAndNotSpecialVariableNames()
-    {
-        return [
-            ['foo', false],
-            ['psysh', false],
-            ['__psysh', false],
-
-            ['_', true],
-            ['_e', true],
-            ['__out', true],
-            ['this', true],
-            ['__psysh__', true],
-
-            ['__function', true],
-            ['__method', true],
-            ['__class', true],
-            ['__namespace', true],
-            ['__file', true],
-            ['__line', true],
-            ['__dir', true],
-        ];
-    }
-}
diff --git a/vendor/psy/psysh/test/Exception/BreakExceptionTest.php b/vendor/psy/psysh/test/Exception/BreakExceptionTest.php
deleted file mode 100644
index ae39fb1f48..0000000000
--- a/vendor/psy/psysh/test/Exception/BreakExceptionTest.php
+++ /dev/null
@@ -1,42 +0,0 @@
-<?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\Exception;
-
-use Psy\Exception\BreakException;
-
-class BreakExceptionTest extends \PHPUnit\Framework\TestCase
-{
-    public function testInstance()
-    {
-        $e = new BreakException();
-
-        $this->assertInstanceOf('Psy\Exception\Exception', $e);
-        $this->assertInstanceOf('Psy\Exception\BreakException', $e);
-    }
-
-    public function testMessage()
-    {
-        $e = new BreakException('foo');
-
-        $this->assertContains('foo', $e->getMessage());
-        $this->assertSame('foo', $e->getRawMessage());
-    }
-
-    /**
-     * @expectedException \Psy\Exception\BreakException
-     * @expectedExceptionMessage Goodbye
-     */
-    public function testExitShell()
-    {
-        BreakException::exitShell();
-    }
-}
diff --git a/vendor/psy/psysh/test/Exception/ErrorExceptionTest.php b/vendor/psy/psysh/test/Exception/ErrorExceptionTest.php
deleted file mode 100644
index ef9fb9ab4d..0000000000
--- a/vendor/psy/psysh/test/Exception/ErrorExceptionTest.php
+++ /dev/null
@@ -1,125 +0,0 @@
-<?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\Exception;
-
-use Psy\Exception\ErrorException;
-
-class ErrorExceptionTest extends \PHPUnit\Framework\TestCase
-{
-    public function testInstance()
-    {
-        $e = new ErrorException();
-
-        $this->assertInstanceOf('Psy\Exception\Exception', $e);
-        $this->assertInstanceOf('ErrorException', $e);
-        $this->assertInstanceOf('Psy\Exception\ErrorException', $e);
-    }
-
-    public function testMessage()
-    {
-        $e = new ErrorException('foo');
-
-        $this->assertContains('foo', $e->getMessage());
-        $this->assertSame('foo', $e->getRawMessage());
-    }
-
-    /**
-     * @dataProvider getLevels
-     */
-    public function testErrorLevels($level, $type)
-    {
-        $e = new ErrorException('foo', 0, $level);
-        $this->assertContains('PHP ' . $type, $e->getMessage());
-    }
-
-    /**
-     * @dataProvider getLevels
-     */
-    public function testThrowException($level, $type)
-    {
-        try {
-            ErrorException::throwException($level, '{whot}', '{file}', '13');
-        } catch (ErrorException $e) {
-            $this->assertContains('PHP ' . $type, $e->getMessage());
-            $this->assertContains('{whot}', $e->getMessage());
-            $this->assertContains('in {file}', $e->getMessage());
-            $this->assertContains('on line 13', $e->getMessage());
-        }
-    }
-
-    public function getLevels()
-    {
-        return [
-            [E_WARNING,           'Warning'],
-            [E_CORE_WARNING,      'Warning'],
-            [E_COMPILE_WARNING,   'Warning'],
-            [E_USER_WARNING,      'Warning'],
-            [E_STRICT,            'Strict error'],
-            [E_DEPRECATED,        'Deprecated'],
-            [E_USER_DEPRECATED,   'Deprecated'],
-            [E_RECOVERABLE_ERROR, 'Recoverable fatal error'],
-            [0,                   'Error'],
-        ];
-    }
-
-    /**
-     * @dataProvider getUserLevels
-     */
-    public function testThrowExceptionAsErrorHandler($level, $type)
-    {
-        \set_error_handler(['Psy\Exception\ErrorException', 'throwException']);
-        try {
-            \trigger_error('{whot}', $level);
-        } catch (ErrorException $e) {
-            $this->assertContains('PHP ' . $type, $e->getMessage());
-            $this->assertContains('{whot}', $e->getMessage());
-        }
-        \restore_error_handler();
-    }
-
-    public function getUserLevels()
-    {
-        return [
-            [E_USER_ERROR,      'Error'],
-            [E_USER_WARNING,    'Warning'],
-            [E_USER_NOTICE,     'Notice'],
-            [E_USER_DEPRECATED, 'Deprecated'],
-        ];
-    }
-
-    public function testIgnoreExecutionLoopFilename()
-    {
-        $e = new ErrorException('{{message}}', 0, 1, '/fake/path/to/Psy/ExecutionLoop.php');
-        $this->assertEmpty($e->getFile());
-
-        $e = new ErrorException('{{message}}', 0, 1, 'c:\fake\path\to\Psy\ExecutionLoop.php');
-        $this->assertEmpty($e->getFile());
-
-        $e = new ErrorException('{{message}}', 0, 1, '/fake/path/to/Psy/File.php');
-        $this->assertNotEmpty($e->getFile());
-    }
-
-    public function testFromError()
-    {
-        if (\version_compare(PHP_VERSION, '7.0.0', '<')) {
-            $this->markTestSkipped();
-        }
-
-        $error = new \Error('{{message}}', 0);
-        $exception = ErrorException::fromError($error);
-
-        $this->assertContains('PHP Error:  {{message}}', $exception->getMessage());
-        $this->assertEquals(0, $exception->getCode());
-        $this->assertEquals($error->getFile(), $exception->getFile());
-        $this->assertSame($exception->getPrevious(), $error);
-    }
-}
diff --git a/vendor/psy/psysh/test/Exception/FatalErrorExceptionTest.php b/vendor/psy/psysh/test/Exception/FatalErrorExceptionTest.php
deleted file mode 100644
index 36c7dd8c11..0000000000
--- a/vendor/psy/psysh/test/Exception/FatalErrorExceptionTest.php
+++ /dev/null
@@ -1,51 +0,0 @@
-<?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\Exception;
-
-use Psy\Exception\FatalErrorException;
-
-class FatalErrorExceptionTest extends \PHPUnit\Framework\TestCase
-{
-    public function testInstance()
-    {
-        $e = new FatalErrorException();
-
-        $this->assertInstanceOf('Psy\Exception\Exception', $e);
-        $this->assertInstanceOf('ErrorException', $e);
-        $this->assertInstanceOf('Psy\Exception\FatalErrorException', $e);
-    }
-
-    public function testMessage()
-    {
-        $e = new FatalErrorException('{msg}', 0, 0, '{filename}', 13);
-
-        $this->assertSame('{msg}', $e->getRawMessage());
-        $this->assertContains('{msg}', $e->getMessage());
-        $this->assertContains('{filename}', $e->getMessage());
-        $this->assertContains('line 13', $e->getMessage());
-    }
-
-    public function testMessageWithNoFilename()
-    {
-        $e = new FatalErrorException('{msg}');
-
-        $this->assertSame('{msg}', $e->getRawMessage());
-        $this->assertContains('{msg}', $e->getMessage());
-        $this->assertContains('eval()\'d code', $e->getMessage());
-    }
-
-    public function testNegativeOneLineNumberIgnored()
-    {
-        $e = new FatalErrorException('{msg}', 0, 1, null, -1);
-        $this->assertEquals(0, $e->getLine());
-    }
-}
diff --git a/vendor/psy/psysh/test/Exception/ParseErrorExceptionTest.php b/vendor/psy/psysh/test/Exception/ParseErrorExceptionTest.php
deleted file mode 100644
index 446b9389c4..0000000000
--- a/vendor/psy/psysh/test/Exception/ParseErrorExceptionTest.php
+++ /dev/null
@@ -1,42 +0,0 @@
-<?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\Exception;
-
-use Psy\Exception\ParseErrorException;
-
-class ParseErrorExceptionTest extends \PHPUnit\Framework\TestCase
-{
-    public function testInstance()
-    {
-        $e = new ParseErrorException();
-
-        $this->assertInstanceOf('Psy\Exception\Exception', $e);
-        $this->assertInstanceOf('PhpParser\Error', $e);
-        $this->assertInstanceOf('Psy\Exception\ParseErrorException', $e);
-    }
-
-    public function testMessage()
-    {
-        $e = new ParseErrorException('{msg}', 1);
-
-        $this->assertContains('{msg}', $e->getMessage());
-        $this->assertContains('PHP Parse error:', $e->getMessage());
-    }
-
-    public function testConstructFromParseError()
-    {
-        $e = ParseErrorException::fromParseError(new \PhpParser\Error('{msg}'));
-
-        $this->assertContains('{msg}', $e->getRawMessage());
-        $this->assertContains('PHP Parse error:', $e->getMessage());
-    }
-}
diff --git a/vendor/psy/psysh/test/Exception/RuntimeExceptionTest.php b/vendor/psy/psysh/test/Exception/RuntimeExceptionTest.php
deleted file mode 100644
index 1121ea4e5b..0000000000
--- a/vendor/psy/psysh/test/Exception/RuntimeExceptionTest.php
+++ /dev/null
@@ -1,30 +0,0 @@
-<?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\Exception;
-
-use Psy\Exception\RuntimeException;
-
-class RuntimeExceptionTest extends \PHPUnit\Framework\TestCase
-{
-    public function testException()
-    {
-        $msg = 'bananas';
-        $e   = new RuntimeException($msg);
-
-        $this->assertInstanceOf('Psy\Exception\Exception', $e);
-        $this->assertInstanceOf('RuntimeException', $e);
-        $this->assertInstanceOf('Psy\Exception\RuntimeException', $e);
-
-        $this->assertSame($msg, $e->getMessage());
-        $this->assertSame($msg, $e->getRawMessage());
-    }
-}
diff --git a/vendor/psy/psysh/test/Exception/ThrowUpExceptionTest.php b/vendor/psy/psysh/test/Exception/ThrowUpExceptionTest.php
deleted file mode 100644
index 09c3373240..0000000000
--- a/vendor/psy/psysh/test/Exception/ThrowUpExceptionTest.php
+++ /dev/null
@@ -1,66 +0,0 @@
-<?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\Exception;
-
-use Psy\Exception\ThrowUpException;
-
-class ThrowUpExceptionTest extends \PHPUnit\Framework\TestCase
-{
-    public function testException()
-    {
-        $previous = new \Exception('{{message}}', 123);
-        $e = new ThrowUpException($previous);
-
-        $this->assertInstanceOf('Psy\Exception\Exception', $e);
-        $this->assertInstanceOf('Psy\Exception\ThrowUpException', $e);
-
-        $this->assertEquals("Throwing Exception with message '{{message}}'", $e->getMessage());
-        $this->assertEquals('{{message}}', $e->getRawMessage());
-        $this->assertEquals(123, $e->getCode());
-        $this->assertSame($previous, $e->getPrevious());
-    }
-
-    public function testFromThrowable()
-    {
-        $previous = new \Exception('{{message}}');
-        $e = ThrowUpException::fromThrowable($previous);
-
-        $this->assertInstanceOf('Psy\Exception\ThrowUpException', $e);
-        $this->assertSame($previous, $e->getPrevious());
-    }
-
-    public function testFromThrowableWithError()
-    {
-        if (\version_compare(PHP_VERSION, '7.0.0', '<')) {
-            $this->markTestSkipped();
-        }
-
-        $previous = new \Error('{{message}}');
-        $e = ThrowUpException::fromThrowable($previous);
-
-        $this->assertInstanceOf('Psy\Exception\ThrowUpException', $e);
-        $this->assertInstanceOf('Psy\Exception\ErrorException', $e->getPrevious());
-
-        $this->assertNotSame($previous, $e->getPrevious());
-        $this->assertSame($previous, $e->getPrevious()->getPrevious());
-    }
-
-    /**
-     * @expectedException \InvalidArgumentException
-     * @expectedExceptionMessage throw-up can only throw Exceptions and Errors
-     */
-    public function testFromThrowableThrowsError()
-    {
-        $notThrowable = new \StdClass();
-        ThrowUpException::fromThrowable($notThrowable);
-    }
-}
diff --git a/vendor/psy/psysh/test/Exception/TypeErrorExceptionTest.php b/vendor/psy/psysh/test/Exception/TypeErrorExceptionTest.php
deleted file mode 100644
index 01f251bb88..0000000000
--- a/vendor/psy/psysh/test/Exception/TypeErrorExceptionTest.php
+++ /dev/null
@@ -1,52 +0,0 @@
-<?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\Exception;
-
-use Psy\Exception\TypeErrorException;
-
-class TypeErrorExceptionTest extends \PHPUnit\Framework\TestCase
-{
-    public function testException()
-    {
-        $e = new TypeErrorException('{{message}}', 13);
-
-        $this->assertInstanceOf('Psy\Exception\Exception', $e);
-        $this->assertInstanceOf('Psy\Exception\TypeErrorException', $e);
-
-        $this->assertEquals('TypeError: {{message}}', $e->getMessage());
-        $this->assertEquals('{{message}}', $e->getRawMessage());
-        $this->assertEquals(13, $e->getCode());
-    }
-
-    public function testStripsEvalFromMessage()
-    {
-        $message = 'Something or other, called in line 10: eval()\'d code';
-        $e = new TypeErrorException($message);
-        $this->assertEquals($message, $e->getRawMessage());
-        $this->assertEquals('TypeError: Something or other', $e->getMessage());
-    }
-
-    public function testFromTypeError()
-    {
-        if (\version_compare(PHP_VERSION, '7.0.0', '<')) {
-            $this->markTestSkipped();
-        }
-
-        $previous = new \TypeError('{{message}}', 13);
-        $e = TypeErrorException::fromTypeError($previous);
-
-        $this->assertInstanceOf('Psy\Exception\TypeErrorException', $e);
-        $this->assertEquals('TypeError: {{message}}', $e->getMessage());
-        $this->assertEquals('{{message}}', $e->getRawMessage());
-        $this->assertEquals(13, $e->getCode());
-    }
-}
diff --git a/vendor/psy/psysh/test/FakeShell.php b/vendor/psy/psysh/test/FakeShell.php
deleted file mode 100644
index 9f6fa97fc6..0000000000
--- a/vendor/psy/psysh/test/FakeShell.php
+++ /dev/null
@@ -1,29 +0,0 @@
-<?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;
-
-use Psy\Shell;
-
-class FakeShell extends Shell
-{
-    public $matchers;
-
-    public function __construct(Configuration $config = null)
-    {
-        // This space intentionally left blank
-    }
-
-    public function addMatchers(array $matchers)
-    {
-        $this->matchers = $matchers;
-    }
-}
diff --git a/vendor/psy/psysh/test/Formatter/CodeFormatterTest.php b/vendor/psy/psysh/test/Formatter/CodeFormatterTest.php
deleted file mode 100644
index 87f56dfd70..0000000000
--- a/vendor/psy/psysh/test/Formatter/CodeFormatterTest.php
+++ /dev/null
@@ -1,129 +0,0 @@
-<?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\Formatter;
-
-use Psy\Formatter\CodeFormatter;
-use Psy\Test\Formatter\Fixtures\SomeClass;
-
-class CodeFormatterTest extends \PHPUnit\Framework\TestCase
-{
-    /**
-     * @dataProvider reflectors
-     */
-    public function testFormat($reflector, $expected)
-    {
-        $formatted = CodeFormatter::format($reflector);
-        $formattedWithoutColors = \preg_replace('#' . \chr(27) . '\[\d\d?m#', '', $formatted);
-
-        $this->assertEquals($expected, self::trimLines($formattedWithoutColors));
-        $this->assertNotEquals($expected, self::trimLines($formatted));
-    }
-
-    public function reflectors()
-    {
-        $expectClass = <<<'EOS'
-  > 14| class SomeClass
-    15| {
-    16|     const SOME_CONST = 'some const';
-    17|     private $someProp = 'some prop';
-    18|
-    19|     public function someMethod($someParam)
-    20|     {
-    21|         return 'some method';
-    22|     }
-    23|
-    24|     public static function someClosure()
-    25|     {
-    26|         return function () {
-    27|             return 'some closure';
-    28|         };
-    29|     }
-    30| }
-EOS;
-
-        $expectMethod = <<<'EOS'
-  > 19|     public function someMethod($someParam)
-    20|     {
-    21|         return 'some method';
-    22|     }
-EOS;
-
-        $expectClosure = <<<'EOS'
-  > 26|         return function () {
-    27|             return 'some closure';
-    28|         };
-EOS;
-
-        return [
-            [new \ReflectionClass('Psy\Test\Formatter\Fixtures\SomeClass'), $expectClass],
-            [new \ReflectionObject(new SomeClass()), $expectClass],
-            [new \ReflectionMethod('Psy\Test\Formatter\Fixtures\SomeClass', 'someMethod'), $expectMethod],
-            [new \ReflectionFunction(SomeClass::someClosure()), $expectClosure],
-        ];
-    }
-
-    /**
-     * @dataProvider invalidReflectors
-     * @expectedException \Psy\Exception\RuntimeException
-     */
-    public function testCodeFormatterThrowsExceptionForReflectorsItDoesntUnderstand($reflector)
-    {
-        CodeFormatter::format($reflector);
-    }
-
-    public function invalidReflectors()
-    {
-        $reflectors = [
-            [new \ReflectionExtension('json')],
-            [new \ReflectionParameter(['Psy\Test\Formatter\Fixtures\SomeClass', 'someMethod'], 'someParam')],
-            [new \ReflectionProperty('Psy\Test\Formatter\Fixtures\SomeClass', 'someProp')],
-        ];
-
-        if (\version_compare(PHP_VERSION, '7.1.0', '>=')) {
-            $reflectors[] = [new \ReflectionClassConstant('Psy\Test\Formatter\Fixtures\SomeClass', 'SOME_CONST')];
-        }
-
-        return $reflectors;
-    }
-
-    /**
-     * @dataProvider filenames
-     * @expectedException \Psy\Exception\RuntimeException
-     */
-    public function testCodeFormatterThrowsExceptionForMissingFile($filename)
-    {
-        $reflector = $this->getMockBuilder('ReflectionClass')
-            ->disableOriginalConstructor()
-            ->getMock();
-
-        $reflector
-            ->expects($this->once())
-            ->method('getFileName')
-            ->will($this->returnValue($filename));
-
-        CodeFormatter::format($reflector);
-    }
-
-    public function filenames()
-    {
-        if (\defined('HHVM_VERSION')) {
-            $this->markTestSkipped('We have issues with PHPUnit mocks on HHVM.');
-        }
-
-        return [[null], ['not a file']];
-    }
-
-    private static function trimLines($code)
-    {
-        return \rtrim(\implode("\n", \array_map('rtrim', \explode("\n", $code))));
-    }
-}
diff --git a/vendor/psy/psysh/test/Formatter/DocblockFormatterTest.php b/vendor/psy/psysh/test/Formatter/DocblockFormatterTest.php
deleted file mode 100644
index 134c76d02f..0000000000
--- a/vendor/psy/psysh/test/Formatter/DocblockFormatterTest.php
+++ /dev/null
@@ -1,63 +0,0 @@
-<?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\Formatter;
-
-use Psy\Formatter\DocblockFormatter;
-
-class DocblockFormatterTest extends \PHPUnit\Framework\TestCase
-{
-    /**
-     * This is a docblock!
-     *
-     * @author Justin Hileman <justin@justinhileman.info>
-     *
-     * @throws InvalidArgumentException if $foo is empty
-     *
-     * @param mixed $foo It's a foo thing
-     * @param int   $bar This is definitely bar
-     *
-     * @return string A string of no consequence
-     */
-    private function methodWithDocblock($foo, $bar = 1)
-    {
-        if (empty($foo)) {
-            throw new \InvalidArgumentException();
-        }
-
-        return 'method called';
-    }
-
-    public function testFormat()
-    {
-        $expected = <<<EOS
-<comment>Description:</comment>
-  This is a docblock!
-
-<comment>Throws:</comment>
-  <info>InvalidArgumentException </info> if \$foo is empty
-
-<comment>Param:</comment>
-  <info>mixed </info> <strong>\$foo </strong> It's a foo thing
-  <info>int   </info> <strong>\$bar </strong> This is definitely bar
-
-<comment>Return:</comment>
-  <info>string </info> A string of no consequence
-
-<comment>Author:</comment> Justin Hileman \<justin@justinhileman.info>
-EOS;
-
-        $this->assertSame(
-            $expected,
-            DocblockFormatter::format(new \ReflectionMethod($this, 'methodWithDocblock'))
-        );
-    }
-}
diff --git a/vendor/psy/psysh/test/Formatter/Fixtures/BoringTrait.php b/vendor/psy/psysh/test/Formatter/Fixtures/BoringTrait.php
deleted file mode 100644
index 9f13ab9325..0000000000
--- a/vendor/psy/psysh/test/Formatter/Fixtures/BoringTrait.php
+++ /dev/null
@@ -1,20 +0,0 @@
-<?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\Formatter\Fixtures;
-
-trait BoringTrait
-{
-    public function boringMethod($one = 1)
-    {
-        // Do nothing.
-    }
-}
diff --git a/vendor/psy/psysh/test/Formatter/Fixtures/SomeClass.php b/vendor/psy/psysh/test/Formatter/Fixtures/SomeClass.php
deleted file mode 100644
index 8208fe348d..0000000000
--- a/vendor/psy/psysh/test/Formatter/Fixtures/SomeClass.php
+++ /dev/null
@@ -1,30 +0,0 @@
-<?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\Formatter\Fixtures;
-
-class SomeClass
-{
-    const SOME_CONST = 'some const';
-    private $someProp = 'some prop';
-
-    public function someMethod($someParam)
-    {
-        return 'some method';
-    }
-
-    public static function someClosure()
-    {
-        return function () {
-            return 'some closure';
-        };
-    }
-}
diff --git a/vendor/psy/psysh/test/Formatter/SignatureFormatterTest.php b/vendor/psy/psysh/test/Formatter/SignatureFormatterTest.php
deleted file mode 100644
index 096e6ae786..0000000000
--- a/vendor/psy/psysh/test/Formatter/SignatureFormatterTest.php
+++ /dev/null
@@ -1,95 +0,0 @@
-<?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\Formatter;
-
-use Psy\Formatter\SignatureFormatter;
-use Psy\Reflection\ReflectionClassConstant;
-use Psy\Reflection\ReflectionConstant_;
-
-class SignatureFormatterTest extends \PHPUnit\Framework\TestCase
-{
-    const FOO = 'foo value';
-    private static $bar = 'bar value';
-
-    private function someFakeMethod(array $one, $two = 'TWO', \Reflector $three = null)
-    {
-    }
-
-    /**
-     * @dataProvider signatureReflectors
-     */
-    public function testFormat($reflector, $expected)
-    {
-        $this->assertSame($expected, \strip_tags(SignatureFormatter::format($reflector)));
-    }
-
-    public function signatureReflectors()
-    {
-        return [
-            [
-                new \ReflectionFunction('implode'),
-                \defined('HHVM_VERSION') ? 'function implode($arg1, $arg2 = null)' : 'function implode($glue, $pieces)',
-            ],
-            [
-                ReflectionClassConstant::create($this, 'FOO'),
-                'const FOO = "foo value"',
-            ],
-            [
-                new \ReflectionMethod($this, 'someFakeMethod'),
-                'private function someFakeMethod(array $one, $two = \'TWO\', Reflector $three = null)',
-            ],
-            [
-                new \ReflectionProperty($this, 'bar'),
-                'private static $bar',
-            ],
-            [
-                new \ReflectionClass('Psy\CodeCleaner\CodeCleanerPass'),
-                'abstract class Psy\CodeCleaner\CodeCleanerPass '
-                . 'extends PhpParser\NodeVisitorAbstract '
-                . 'implements PhpParser\NodeVisitor',
-            ],
-            [
-                new \ReflectionFunction('array_chunk'),
-                'function array_chunk($arg, $size, $preserve_keys = unknown)',
-            ],
-            [
-                new \ReflectionClass('Psy\Test\Formatter\Fixtures\BoringTrait'),
-                'trait Psy\Test\Formatter\Fixtures\BoringTrait',
-            ],
-            [
-                new \ReflectionMethod('Psy\Test\Formatter\Fixtures\BoringTrait', 'boringMethod'),
-                'public function boringMethod($one = 1)',
-            ],
-            [
-                new ReflectionConstant_('E_ERROR'),
-                'define("E_ERROR", 1)',
-            ],
-            [
-                new ReflectionConstant_('PHP_VERSION'),
-                'define("PHP_VERSION", "' . PHP_VERSION . '")',
-            ],
-            [
-                new ReflectionConstant_('__LINE__'),
-                'define("__LINE__", null)', // @todo show this as `unknown` in red or something?
-            ],
-        ];
-    }
-
-    /**
-     * @expectedException \InvalidArgumentException
-     */
-    public function testSignatureFormatterThrowsUnknownReflectorExpeption()
-    {
-        $refl = $this->getMockBuilder('Reflector')->getMock();
-        SignatureFormatter::format($refl);
-    }
-}
diff --git a/vendor/psy/psysh/test/Input/CodeArgumentTest.php b/vendor/psy/psysh/test/Input/CodeArgumentTest.php
deleted file mode 100644
index c39615208d..0000000000
--- a/vendor/psy/psysh/test/Input/CodeArgumentTest.php
+++ /dev/null
@@ -1,52 +0,0 @@
-<?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\Input;
-
-use Psy\Input\CodeArgument;
-use Symfony\Component\Console\Input\InputArgument;
-
-class CodeArgumentTest extends \PHPUnit\Framework\TestCase
-{
-    /**
-     * @dataProvider getInvalidModes
-     * @expectedException \InvalidArgumentException
-     */
-    public function testInvalidModes($mode)
-    {
-        new CodeArgument('wat', $mode);
-    }
-
-    public function getInvalidModes()
-    {
-        return [
-            [InputArgument::IS_ARRAY],
-            [InputArgument::IS_ARRAY | InputArgument::REQUIRED],
-            [InputArgument::IS_ARRAY | InputArgument::OPTIONAL],
-        ];
-    }
-
-    /**
-     * @dataProvider getValidModes
-     */
-    public function testValidModes($mode)
-    {
-        $this->assertInstanceOf('Psy\Input\CodeArgument', new CodeArgument('yeah', $mode));
-    }
-
-    public function getValidModes()
-    {
-        return [
-            [InputArgument::REQUIRED],
-            [InputArgument::OPTIONAL],
-        ];
-    }
-}
diff --git a/vendor/psy/psysh/test/Input/FilterOptionsTest.php b/vendor/psy/psysh/test/Input/FilterOptionsTest.php
deleted file mode 100644
index 7ed8919bd1..0000000000
--- a/vendor/psy/psysh/test/Input/FilterOptionsTest.php
+++ /dev/null
@@ -1,105 +0,0 @@
-<?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\Input;
-
-use Psy\Input\FilterOptions;
-use Symfony\Component\Console\Input\InputDefinition;
-use Symfony\Component\Console\Input\StringInput;
-
-class FilterOptionsTest extends \PHPUnit\Framework\TestCase
-{
-    public function testGetOptions()
-    {
-        $opts = FilterOptions::getOptions();
-        $this->assertCount(3, $opts);
-    }
-
-    /**
-     * @dataProvider validInputs
-     */
-    public function testBindValidInput($input, $hasFilter = true)
-    {
-        $input = $this->getInput($input);
-        $filterOptions = new FilterOptions();
-        $filterOptions->bind($input);
-
-        $this->assertEquals($hasFilter, $filterOptions->hasFilter());
-    }
-
-    public function validInputs()
-    {
-        return [
-            ['--grep="bar"'],
-            ['--grep="bar" --invert'],
-            ['--grep="bar" --insensitive'],
-            ['--grep="bar" --invert --insensitive'],
-            ['', false],
-        ];
-    }
-
-    /**
-     * @dataProvider invalidInputs
-     * @expectedException \Psy\Exception\RuntimeException
-     */
-    public function testBindInvalidInput($input)
-    {
-        $input = $this->getInput($input);
-        $filterOptions = new FilterOptions();
-        $filterOptions->bind($input);
-    }
-
-    public function invalidInputs()
-    {
-        return [
-            ['--invert'],
-            ['--insensitive'],
-            ['--invert --insensitive'],
-
-            // invalid because regex
-            ['--grep /*/'],
-        ];
-    }
-
-    /**
-     * @dataProvider matchData
-     */
-    public function testMatch($input, $str, $matches)
-    {
-        $input = $this->getInput($input);
-        $filterOptions = new FilterOptions();
-        $filterOptions->bind($input);
-
-        $this->assertEquals($matches, $filterOptions->match($str));
-    }
-
-    public function matchData()
-    {
-        return [
-            ['', 'whatever', true],
-            ['--grep FOO', 'foo', false],
-            ['--grep foo', 'foo', true],
-            ['--grep foo', 'food', true],
-            ['--grep oo', 'Food', true],
-            ['--grep oo -i', 'FOOD', true],
-            ['--grep foo -v', 'food', false],
-            ['--grep foo -v', 'whatever', true],
-        ];
-    }
-
-    private function getInput($input)
-    {
-        $input = new StringInput($input);
-        $input->bind(new InputDefinition(FilterOptions::getOptions()));
-
-        return $input;
-    }
-}
diff --git a/vendor/psy/psysh/test/Input/ShellInputTest.php b/vendor/psy/psysh/test/Input/ShellInputTest.php
deleted file mode 100644
index f19d126180..0000000000
--- a/vendor/psy/psysh/test/Input/ShellInputTest.php
+++ /dev/null
@@ -1,254 +0,0 @@
-<?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\Input;
-
-use Psy\Input\CodeArgument;
-use Psy\Input\ShellInput;
-use Symfony\Component\Console\Input\InputArgument;
-use Symfony\Component\Console\Input\InputDefinition;
-use Symfony\Component\Console\Input\InputOption;
-
-class ShellInputTest extends \PHPUnit\Framework\TestCase
-{
-    /**
-     * @expectedException \InvalidArgumentException
-     * @expectedExceptionMessage Unexpected CodeArgument before the final position: a
-     */
-    public function testThrowsWhenCodeArgumentNotInFinalPosition()
-    {
-        $definition = new InputDefinition([
-            new CodeArgument('a', null, CodeArgument::REQUIRED),
-            new InputArgument('b', null, InputArgument::REQUIRED),
-        ]);
-
-        $input = new ShellInput('foo bar');
-        $input->bind($definition);
-    }
-
-    public function testInputOptionWithGivenString()
-    {
-        $definition = new InputDefinition([
-            new InputOption('foo', null, InputOption::VALUE_REQUIRED),
-            new CodeArgument('code', null, CodeArgument::REQUIRED),
-        ]);
-
-        $input = new ShellInput('--foo=bar echo "baz\\\\n";');
-        $input->bind($definition);
-        $this->assertSame('bar', $input->getOption('foo'));
-        $this->assertSame('echo "baz\n";', $input->getArgument('code'));
-    }
-
-    public function testInputOptionWithoutCodeArguments()
-    {
-        $definition = new InputDefinition([
-            new InputOption('foo', null, InputOption::VALUE_REQUIRED),
-            new InputOption('qux', 'q', InputOption::VALUE_REQUIRED),
-            new InputArgument('bar', null, InputArgument::REQUIRED),
-            new InputArgument('baz', null, InputArgument::REQUIRED),
-        ]);
-
-        $input = new ShellInput('--foo=foo -q qux bar "baz\\\\n"');
-        $input->bind($definition);
-        $this->assertSame('foo', $input->getOption('foo'));
-        $this->assertSame('qux', $input->getOption('qux'));
-        $this->assertSame('bar', $input->getArgument('bar'));
-        $this->assertSame('baz\\n', $input->getArgument('baz'));
-    }
-
-    public function testInputWithDashDash()
-    {
-        $definition = new InputDefinition([
-            new InputOption('foo', null, InputOption::VALUE_REQUIRED),
-            new CodeArgument('code', null, CodeArgument::REQUIRED),
-        ]);
-
-        $input = new ShellInput('-- echo --foo::$bar');
-        $input->bind($definition);
-        $this->assertNull($input->getOption('foo'));
-        $this->assertSame('echo --foo::$bar', $input->getArgument('code'));
-    }
-
-    public function testInputWithEmptyString()
-    {
-        $definition = new InputDefinition([
-            new InputOption('foo', null, InputOption::VALUE_REQUIRED),
-            new CodeArgument('code', null, CodeArgument::REQUIRED),
-        ]);
-
-        $input = new ShellInput('"" --foo bar');
-        $input->bind($definition);
-        $this->assertSame('"" --foo bar', $input->getArgument('code'));
-    }
-
-    /**
-     * @dataProvider getTokenizeData
-     */
-    public function testTokenize($input, $tokens, $message)
-    {
-        $input = new ShellInput($input);
-        $r = new \ReflectionClass('Psy\Input\ShellInput');
-        $p = $r->getProperty('tokenPairs');
-        $p->setAccessible(true);
-        $this->assertSame($tokens, $p->getValue($input), $message);
-    }
-
-    public function getTokenizeData()
-    {
-        // Test all the cases from StringInput test, ensuring they have an appropriate $rest token.
-        return [
-            [
-                '',
-                [],
-                '->tokenize() parses an empty string',
-            ],
-            [
-                'foo',
-                [['foo', 'foo']],
-                '->tokenize() parses arguments',
-            ],
-            [
-                '  foo  bar  ',
-                [['foo', 'foo  bar  '], ['bar', 'bar  ']],
-                '->tokenize() ignores whitespaces between arguments',
-            ],
-            [
-                '"quoted"',
-                [['quoted', '"quoted"']],
-                '->tokenize() parses quoted arguments',
-            ],
-            [
-                "'quoted'",
-                [['quoted', "'quoted'"]],
-                '->tokenize() parses quoted arguments',
-            ],
-            [
-                "'a\rb\nc\td'",
-                [["a\rb\nc\td", "'a\rb\nc\td'"]],
-                '->tokenize() parses whitespace chars in strings',
-            ],
-            [
-                "'a'\r'b'\n'c'\t'd'",
-                [
-                    ['a', "'a'\r'b'\n'c'\t'd'"],
-                    ['b', "'b'\n'c'\t'd'"],
-                    ['c', "'c'\t'd'"],
-                    ['d', "'d'"],
-                ],
-                '->tokenize() parses whitespace chars between args as spaces',
-            ],
-
-            /*
-             * These don't play nice with unescaping input, but the end result
-             * is correct, so disable the tests for now.
-             *
-             * @todo Sort this out and re-enable these test cases.
-             */
-            // [
-            //     '\"quoted\"',
-            //     [['"quoted"', '\"quoted\"']],
-            //     '->tokenize() parses escaped-quoted arguments',
-            // ],
-            // [
-            //     "\'quoted\'",
-            //     [['\'quoted\'', "\'quoted\'"]],
-            //     '->tokenize() parses escaped-quoted arguments',
-            // ],
-
-            [
-                '-a',
-                 [['-a', '-a']],
-                 '->tokenize() parses short options',
-             ],
-            [
-                '-azc',
-                [['-azc', '-azc']],
-                '->tokenize() parses aggregated short options',
-            ],
-            [
-                '-awithavalue',
-                [['-awithavalue', '-awithavalue']],
-                '->tokenize() parses short options with a value',
-            ],
-            [
-                '-a"foo bar"',
-                [['-afoo bar', '-a"foo bar"']],
-                '->tokenize() parses short options with a value',
-            ],
-            [
-                '-a"foo bar""foo bar"',
-                [['-afoo barfoo bar', '-a"foo bar""foo bar"']],
-                '->tokenize() parses short options with a value',
-            ],
-            [
-                '-a\'foo bar\'',
-                [['-afoo bar', '-a\'foo bar\'']],
-                '->tokenize() parses short options with a value',
-            ],
-            [
-                '-a\'foo bar\'\'foo bar\'',
-                [['-afoo barfoo bar', '-a\'foo bar\'\'foo bar\'']],
-                '->tokenize() parses short options with a value',
-            ],
-            [
-                '-a\'foo bar\'"foo bar"',
-                [['-afoo barfoo bar', '-a\'foo bar\'"foo bar"']],
-                '->tokenize() parses short options with a value',
-            ],
-            [
-                '--long-option',
-                [['--long-option', '--long-option']],
-                '->tokenize() parses long options',
-            ],
-            [
-                '--long-option=foo',
-                [['--long-option=foo', '--long-option=foo']],
-                '->tokenize() parses long options with a value',
-            ],
-            [
-                '--long-option="foo bar"',
-                [['--long-option=foo bar', '--long-option="foo bar"']],
-                '->tokenize() parses long options with a value',
-            ],
-            [
-                '--long-option="foo bar""another"',
-                [['--long-option=foo baranother', '--long-option="foo bar""another"']],
-                '->tokenize() parses long options with a value',
-            ],
-            [
-                '--long-option=\'foo bar\'',
-                [['--long-option=foo bar', '--long-option=\'foo bar\'']],
-                '->tokenize() parses long options with a value',
-            ],
-            [
-                "--long-option='foo bar''another'",
-                [['--long-option=foo baranother', "--long-option='foo bar''another'"]],
-                '->tokenize() parses long options with a value',
-            ],
-            [
-                "--long-option='foo bar'\"another\"",
-                [['--long-option=foo baranother', "--long-option='foo bar'\"another\""]],
-                '->tokenize() parses long options with a value',
-            ],
-            [
-                'foo -a -ffoo --long bar',
-                [
-                    ['foo', 'foo -a -ffoo --long bar'],
-                    ['-a', '-a -ffoo --long bar'],
-                    ['-ffoo', '-ffoo --long bar'],
-                    ['--long', '--long bar'],
-                    ['bar', 'bar'],
-                ],
-                '->tokenize() parses when several arguments and options',
-            ],
-        ];
-    }
-}
diff --git a/vendor/psy/psysh/test/ParserTestCase.php b/vendor/psy/psysh/test/ParserTestCase.php
deleted file mode 100644
index a0740b6636..0000000000
--- a/vendor/psy/psysh/test/ParserTestCase.php
+++ /dev/null
@@ -1,97 +0,0 @@
-<?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;
-
-use PhpParser\PrettyPrinter\Standard as Printer;
-use Psy\Exception\ParseErrorException;
-use Psy\ParserFactory;
-
-class ParserTestCase extends \PHPUnit\Framework\TestCase
-{
-    protected $traverser;
-    private $parser;
-    private $printer;
-
-    public function tearDown()
-    {
-        $this->traverser = null;
-        $this->parser = null;
-        $this->printer = null;
-    }
-
-    protected function parse($code, $prefix = '<?php ')
-    {
-        $code = $prefix . $code;
-        try {
-            return $this->getParser()->parse($code);
-        } catch (\PhpParser\Error $e) {
-            if (!$this->parseErrorIsEOF($e)) {
-                throw ParseErrorException::fromParseError($e);
-            }
-
-            try {
-                // Unexpected EOF, try again with an implicit semicolon
-                return $this->getParser()->parse($code . ';');
-            } catch (\PhpParser\Error $e) {
-                return false;
-            }
-        }
-    }
-
-    protected function traverse(array $stmts)
-    {
-        if (!isset($this->traverser)) {
-            throw new \RuntimeException('Test cases must provide a traverser');
-        }
-
-        return $this->traverser->traverse($stmts);
-    }
-
-    protected function prettyPrint(array $stmts)
-    {
-        return $this->getPrinter()->prettyPrint($stmts);
-    }
-
-    protected function assertProcessesAs($from, $to)
-    {
-        $stmts = $this->parse($from);
-        $stmts = $this->traverse($stmts);
-        $toStmts = $this->parse($to);
-        $this->assertSame($this->prettyPrint($toStmts), $this->prettyPrint($stmts));
-    }
-
-    private function getParser()
-    {
-        if (!isset($this->parser)) {
-            $parserFactory = new ParserFactory();
-            $this->parser  = $parserFactory->createParser();
-        }
-
-        return $this->parser;
-    }
-
-    private function getPrinter()
-    {
-        if (!isset($this->printer)) {
-            $this->printer = new Printer();
-        }
-
-        return $this->printer;
-    }
-
-    private function parseErrorIsEOF(\PhpParser\Error $e)
-    {
-        $msg = $e->getRawMessage();
-
-        return ($msg === 'Unexpected token EOF') || (\strpos($msg, 'Syntax error, unexpected EOF') !== false);
-    }
-}
diff --git a/vendor/psy/psysh/test/Readline/GNUReadlineTest.php b/vendor/psy/psysh/test/Readline/GNUReadlineTest.php
deleted file mode 100644
index 406377fcc6..0000000000
--- a/vendor/psy/psysh/test/Readline/GNUReadlineTest.php
+++ /dev/null
@@ -1,80 +0,0 @@
-<?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\Readline;
-
-use Psy\Readline\GNUReadline;
-
-class GNUReadlineTest extends \PHPUnit\Framework\TestCase
-{
-    private $historyFile;
-
-    public function setUp()
-    {
-        if (!GNUReadline::isSupported()) {
-            $this->markTestSkipped('GNUReadline not enabled');
-        }
-
-        $this->historyFile = \tempnam(\sys_get_temp_dir(), 'psysh_test_history');
-        \file_put_contents($this->historyFile, "_HiStOrY_V2_\n");
-    }
-
-    public function testHistory()
-    {
-        $readline = new GNUReadline($this->historyFile);
-        $this->assertEmpty($readline->listHistory());
-        $readline->addHistory('foo');
-        $this->assertSame(['foo'], $readline->listHistory());
-        $readline->addHistory('bar');
-        $this->assertSame(['foo', 'bar'], $readline->listHistory());
-        $readline->addHistory('baz');
-        $this->assertSame(['foo', 'bar', 'baz'], $readline->listHistory());
-        $readline->clearHistory();
-        $this->assertEmpty($readline->listHistory());
-    }
-
-    /**
-     * @depends testHistory
-     */
-    public function testHistorySize()
-    {
-        $readline = new GNUReadline($this->historyFile, 2);
-        $this->assertEmpty($readline->listHistory());
-        $readline->addHistory('foo');
-        $readline->addHistory('bar');
-        $this->assertSame(['foo', 'bar'], $readline->listHistory());
-        $readline->addHistory('baz');
-        $this->assertSame(['bar', 'baz'], $readline->listHistory());
-        $readline->addHistory('w00t');
-        $this->assertSame(['baz', 'w00t'], $readline->listHistory());
-        $readline->clearHistory();
-        $this->assertEmpty($readline->listHistory());
-    }
-
-    /**
-     * @depends testHistory
-     */
-    public function testHistoryEraseDups()
-    {
-        $readline = new GNUReadline($this->historyFile, 0, true);
-        $this->assertEmpty($readline->listHistory());
-        $readline->addHistory('foo');
-        $readline->addHistory('bar');
-        $readline->addHistory('foo');
-        $this->assertSame(['bar', 'foo'], $readline->listHistory());
-        $readline->addHistory('baz');
-        $readline->addHistory('w00t');
-        $readline->addHistory('baz');
-        $this->assertSame(['bar', 'foo', 'w00t', 'baz'], $readline->listHistory());
-        $readline->clearHistory();
-        $this->assertEmpty($readline->listHistory());
-    }
-}
diff --git a/vendor/psy/psysh/test/Readline/HoaConsoleTest.php b/vendor/psy/psysh/test/Readline/HoaConsoleTest.php
deleted file mode 100644
index ecf444f396..0000000000
--- a/vendor/psy/psysh/test/Readline/HoaConsoleTest.php
+++ /dev/null
@@ -1,31 +0,0 @@
-<?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\Readline;
-
-use Psy\Readline\HoaConsole;
-
-class HoaConsoleTest extends \PHPUnit\Framework\TestCase
-{
-    public function testHistory()
-    {
-        $readline = new HoaConsole();
-        $this->assertEmpty($readline->listHistory());
-        $readline->addHistory('foo');
-        $this->assertSame(['foo'], $readline->listHistory());
-        $readline->addHistory('bar');
-        $this->assertSame(['foo', 'bar'], $readline->listHistory());
-        $readline->addHistory('baz');
-        $this->assertSame(['foo', 'bar', 'baz'], $readline->listHistory());
-        $readline->clearHistory();
-        $this->assertEmpty($readline->listHistory());
-    }
-}
diff --git a/vendor/psy/psysh/test/Readline/LibeditTest.php b/vendor/psy/psysh/test/Readline/LibeditTest.php
deleted file mode 100644
index 2d7be2889a..0000000000
--- a/vendor/psy/psysh/test/Readline/LibeditTest.php
+++ /dev/null
@@ -1,128 +0,0 @@
-<?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\Readline;
-
-use Psy\Readline\Libedit;
-
-class LibeditTest extends \PHPUnit\Framework\TestCase
-{
-    private $historyFile;
-
-    public function setUp()
-    {
-        if (!Libedit::isSupported()) {
-            $this->markTestSkipped('Libedit not enabled');
-        }
-
-        $this->historyFile = \tempnam(\sys_get_temp_dir(), 'psysh_test_history');
-        if (false === \file_put_contents($this->historyFile, "_HiStOrY_V2_\n")) {
-            $this->fail('Unable to write history file: ' . $this->historyFile);
-        }
-        // Calling readline_read_history before readline_clear_history
-        // avoids segfault with PHP 5.5.7 & libedit v3.1
-        \readline_read_history($this->historyFile);
-        \readline_clear_history();
-    }
-
-    public function tearDown()
-    {
-        if (\is_file($this->historyFile)) {
-            \unlink($this->historyFile);
-        }
-    }
-
-    public function testHistory()
-    {
-        $readline = new Libedit($this->historyFile);
-        $this->assertEmpty($readline->listHistory());
-        $readline->addHistory('foo');
-        $this->assertSame(['foo'], $readline->listHistory());
-        $readline->addHistory('bar');
-        $this->assertSame(['foo', 'bar'], $readline->listHistory());
-        $readline->addHistory('baz');
-        $this->assertSame(['foo', 'bar', 'baz'], $readline->listHistory());
-        $readline->clearHistory();
-        $this->assertEmpty($readline->listHistory());
-    }
-
-    /**
-     * @depends testHistory
-     */
-    public function testHistorySize()
-    {
-        $readline = new Libedit($this->historyFile, 2);
-        $this->assertEmpty($readline->listHistory());
-        $readline->addHistory('foo');
-        $readline->addHistory('bar');
-        $this->assertSame(['foo', 'bar'], $readline->listHistory());
-        $readline->addHistory('baz');
-        $this->assertSame(['bar', 'baz'], $readline->listHistory());
-        $readline->addHistory('w00t');
-        $this->assertSame(['baz', 'w00t'], $readline->listHistory());
-        $readline->clearHistory();
-        $this->assertEmpty($readline->listHistory());
-    }
-
-    /**
-     * @depends testHistory
-     */
-    public function testHistoryEraseDups()
-    {
-        $readline = new Libedit($this->historyFile, 0, true);
-        $this->assertEmpty($readline->listHistory());
-        $readline->addHistory('foo');
-        $readline->addHistory('bar');
-        $readline->addHistory('foo');
-        $this->assertSame(['bar', 'foo'], $readline->listHistory());
-        $readline->addHistory('baz');
-        $readline->addHistory('w00t');
-        $readline->addHistory('baz');
-        $this->assertSame(['bar', 'foo', 'w00t', 'baz'], $readline->listHistory());
-        $readline->clearHistory();
-        $this->assertEmpty($readline->listHistory());
-    }
-
-    public function testListHistory()
-    {
-        $readline = new Libedit($this->historyFile);
-        \file_put_contents(
-            $this->historyFile,
-            "This is an entry\n\0This is a comment\nThis is an entry\0With a comment\n",
-            FILE_APPEND
-        );
-        $this->assertSame([
-            'This is an entry',
-            'This is an entry',
-        ], $readline->listHistory());
-        $readline->clearHistory();
-    }
-
-    /**
-     * Libedit being a BSD library,
-     * it doesn't support non-unix line separators.
-     */
-    public function testLinebreaksSupport()
-    {
-        $readline = new Libedit($this->historyFile);
-        \file_put_contents(
-            $this->historyFile,
-            "foo\rbar\nbaz\r\nw00t",
-            FILE_APPEND
-        );
-        $this->assertSame([
-            "foo\rbar",
-            "baz\r",
-            'w00t',
-        ], $readline->listHistory());
-        $readline->clearHistory();
-    }
-}
diff --git a/vendor/psy/psysh/test/Readline/TransientTest.php b/vendor/psy/psysh/test/Readline/TransientTest.php
deleted file mode 100644
index 24fcba0b2a..0000000000
--- a/vendor/psy/psysh/test/Readline/TransientTest.php
+++ /dev/null
@@ -1,76 +0,0 @@
-<?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\Readline;
-
-use Psy\Readline\Transient;
-
-class TransientTest extends \PHPUnit\Framework\TestCase
-{
-    public function testHistory()
-    {
-        $readline = new Transient();
-        $this->assertEmpty($readline->listHistory());
-        $readline->addHistory('foo');
-        $this->assertSame(['foo'], $readline->listHistory());
-        $readline->addHistory('bar');
-        $this->assertSame(['foo', 'bar'], $readline->listHistory());
-        $readline->addHistory('baz');
-        $this->assertSame(['foo', 'bar', 'baz'], $readline->listHistory());
-        $readline->clearHistory();
-        $this->assertEmpty($readline->listHistory());
-    }
-
-    /**
-     * @depends testHistory
-     */
-    public function testHistorySize()
-    {
-        $readline = new Transient(null, 2);
-        $this->assertEmpty($readline->listHistory());
-        $readline->addHistory('foo');
-        $readline->addHistory('bar');
-        $this->assertSame(['foo', 'bar'], $readline->listHistory());
-        $readline->addHistory('baz');
-        $this->assertSame(['bar', 'baz'], $readline->listHistory());
-        $readline->addHistory('w00t');
-        $this->assertSame(['baz', 'w00t'], $readline->listHistory());
-        $readline->clearHistory();
-        $this->assertEmpty($readline->listHistory());
-    }
-
-    /**
-     * @depends testHistory
-     */
-    public function testHistoryEraseDups()
-    {
-        $readline = new Transient(null, 0, true);
-        $this->assertEmpty($readline->listHistory());
-        $readline->addHistory('foo');
-        $readline->addHistory('bar');
-        $readline->addHistory('foo');
-        $this->assertSame(['bar', 'foo'], $readline->listHistory());
-        $readline->addHistory('baz');
-        $readline->addHistory('w00t');
-        $readline->addHistory('baz');
-        $this->assertSame(['bar', 'foo', 'w00t', 'baz'], $readline->listHistory());
-        $readline->clearHistory();
-        $this->assertEmpty($readline->listHistory());
-    }
-
-    public function testSomeThingsAreAlwaysTrue()
-    {
-        $readline = new Transient();
-        $this->assertTrue(Transient::isSupported());
-        $this->assertTrue($readline->readHistory());
-        $this->assertTrue($readline->writeHistory());
-    }
-}
diff --git a/vendor/psy/psysh/test/Reflection/ReflectionClassConstantTest.php b/vendor/psy/psysh/test/Reflection/ReflectionClassConstantTest.php
deleted file mode 100644
index 87d4f7520b..0000000000
--- a/vendor/psy/psysh/test/Reflection/ReflectionClassConstantTest.php
+++ /dev/null
@@ -1,81 +0,0 @@
-<?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\Reflection;
-
-use Psy\Reflection\ReflectionClassConstant;
-
-class ReflectionClassConstantTest extends \PHPUnit\Framework\TestCase
-{
-    const CONSTANT_ONE = 'one';
-
-    public function testConstruction()
-    {
-        $refl  = new ReflectionClassConstant($this, 'CONSTANT_ONE');
-        $class = $refl->getDeclaringClass();
-
-        $this->assertInstanceOf('ReflectionClass', $class);
-        $this->assertSame('Psy\Test\Reflection\ReflectionClassConstantTest', $class->getName());
-        $this->assertSame('CONSTANT_ONE', $refl->getName());
-        $this->assertSame('CONSTANT_ONE', (string) $refl);
-        $this->assertSame('one', $refl->getValue());
-        $this->assertNull($refl->getFileName());
-        $this->assertFalse($refl->getDocComment());
-    }
-
-    /**
-     * @expectedException \InvalidArgumentException
-     */
-    public function testUnknownConstantThrowsException()
-    {
-        new ReflectionClassConstant($this, 'UNKNOWN_CONSTANT');
-    }
-
-    public function testExport()
-    {
-        $ret = ReflectionClassConstant::export($this, 'CONSTANT_ONE', true);
-        $this->assertEquals($ret, 'Constant [ public string CONSTANT_ONE ] { one }');
-    }
-
-    public function testExportOutput()
-    {
-        $this->expectOutputString("Constant [ public string CONSTANT_ONE ] { one }\n");
-        ReflectionClassConstant::export($this, 'CONSTANT_ONE', false);
-    }
-
-    public function testModifiers()
-    {
-        $refl = new ReflectionClassConstant($this, 'CONSTANT_ONE');
-
-        $this->assertEquals(\ReflectionMethod::IS_PUBLIC, $refl->getModifiers());
-        $this->assertFalse($refl->isPrivate());
-        $this->assertFalse($refl->isProtected());
-        $this->assertTrue($refl->isPublic());
-    }
-
-    /**
-     * @expectedException \RuntimeException
-     * @dataProvider notYetImplemented
-     */
-    public function testNotYetImplemented($method)
-    {
-        $refl = new ReflectionClassConstant($this, 'CONSTANT_ONE');
-        $refl->$method();
-    }
-
-    public function notYetImplemented()
-    {
-        return [
-            ['getStartLine'],
-            ['getEndLine'],
-        ];
-    }
-}
diff --git a/vendor/psy/psysh/test/Reflection/ReflectionConstantBCTest.php b/vendor/psy/psysh/test/Reflection/ReflectionConstantBCTest.php
deleted file mode 100644
index 69d2797099..0000000000
--- a/vendor/psy/psysh/test/Reflection/ReflectionConstantBCTest.php
+++ /dev/null
@@ -1,26 +0,0 @@
-<?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\Reflection;
-
-use Psy\Reflection\ReflectionConstant;
-
-class ReflectionConstantBCTest extends \PHPUnit\Framework\TestCase
-{
-    const CONSTANT_ONE = 'one';
-
-    public function testConstruction()
-    {
-        $refl = new ReflectionConstant($this, 'CONSTANT_ONE');
-        $this->assertInstanceOf('Psy\Reflection\ReflectionConstant', $refl);
-        $this->assertInstanceOf('Psy\Reflection\ReflectionClassConstant', $refl);
-    }
-}
diff --git a/vendor/psy/psysh/test/Reflection/ReflectionConstantTest.php b/vendor/psy/psysh/test/Reflection/ReflectionConstantTest.php
deleted file mode 100644
index 02c1a8442e..0000000000
--- a/vendor/psy/psysh/test/Reflection/ReflectionConstantTest.php
+++ /dev/null
@@ -1,114 +0,0 @@
-<?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\Reflection;
-
-use Psy\Reflection\ReflectionConstant_;
-
-\define('Psy\\Test\\Reflection\\SOME_CONSTANT', 'yep');
-
-class ReflectionConstantTest extends \PHPUnit\Framework\TestCase
-{
-    public function testConstruction()
-    {
-        $refl = new ReflectionConstant_('Psy\\Test\\Reflection\\SOME_CONSTANT');
-
-        $this->assertFalse($refl->getDocComment());
-        $this->assertEquals('Psy\\Test\\Reflection\\SOME_CONSTANT', $refl->getName());
-        $this->assertEquals('Psy\\Test\\Reflection', $refl->getNamespaceName());
-        $this->assertEquals('yep', $refl->getValue());
-        $this->assertTrue($refl->inNamespace());
-        $this->assertEquals('Psy\\Test\\Reflection\\SOME_CONSTANT', (string) $refl);
-        $this->assertNull($refl->getFileName());
-    }
-
-    public function testBuiltInConstant()
-    {
-        $refl = new ReflectionConstant_('PHP_VERSION');
-
-        $this->assertEquals('PHP_VERSION', $refl->getName());
-        $this->assertEquals('PHP_VERSION', (string) $refl);
-        $this->assertEquals(PHP_VERSION, $refl->getValue());
-        $this->assertFalse($refl->inNamespace());
-        $this->assertSame('', $refl->getNamespaceName());
-    }
-
-    /**
-     * @dataProvider magicConstants
-     */
-    public function testIsMagicConstant($name, $is)
-    {
-        $this->assertEquals($is, ReflectionConstant_::isMagicConstant($name));
-    }
-
-    public function magicConstants()
-    {
-        return [
-            ['__LINE__', true],
-            ['__FILE__', true],
-            ['__DIR__', true],
-            ['__FUNCTION__', true],
-            ['__CLASS__', true],
-            ['__TRAIT__', true],
-            ['__METHOD__', true],
-            ['__NAMESPACE__', true],
-            ['__COMPILER_HALT_OFFSET__', true],
-            ['PHP_VERSION', false],
-            ['PHP_EOL', false],
-            ['Psy\\Test\\Reflection\\SOME_CONSTANT', false],
-            ['What if it isn\'t even a valid constant name?', false],
-        ];
-    }
-
-    /**
-     * @expectedException \InvalidArgumentException
-     */
-    public function testUnknownConstantThrowsException()
-    {
-        new ReflectionConstant_('UNKNOWN_CONSTANT');
-    }
-
-    public function testExport()
-    {
-        $ret = ReflectionConstant_::export('Psy\\Test\\Reflection\\SOME_CONSTANT', true);
-        $this->assertEquals($ret, 'Constant [ string Psy\\Test\\Reflection\\SOME_CONSTANT ] { yep }');
-    }
-
-    public function testExportOutput()
-    {
-        $this->expectOutputString("Constant [ string Psy\\Test\\Reflection\\SOME_CONSTANT ] { yep }\n");
-        ReflectionConstant_::export('Psy\\Test\\Reflection\\SOME_CONSTANT', false);
-    }
-
-    public function testGetFileName()
-    {
-        $refl = new ReflectionConstant_('Psy\\Test\\Reflection\\SOME_CONSTANT');
-        $this->assertNull($refl->getFileName());
-    }
-
-    /**
-     * @expectedException \RuntimeException
-     * @dataProvider notYetImplemented
-     */
-    public function testNotYetImplemented($method)
-    {
-        $refl = new ReflectionConstant_('Psy\\Test\\Reflection\\SOME_CONSTANT');
-        $refl->$method();
-    }
-
-    public function notYetImplemented()
-    {
-        return [
-            ['getStartLine'],
-            ['getEndLine'],
-        ];
-    }
-}
diff --git a/vendor/psy/psysh/test/Reflection/ReflectionLanguageConstructParameterTest.php b/vendor/psy/psysh/test/Reflection/ReflectionLanguageConstructParameterTest.php
deleted file mode 100644
index 223432f8c9..0000000000
--- a/vendor/psy/psysh/test/Reflection/ReflectionLanguageConstructParameterTest.php
+++ /dev/null
@@ -1,64 +0,0 @@
-<?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\Reflection;
-
-use Psy\Reflection\ReflectionLanguageConstruct;
-use Psy\Reflection\ReflectionLanguageConstructParameter;
-
-class ReflectionLanguageConstructParameterTest extends \PHPUnit\Framework\TestCase
-{
-    public function testOptions()
-    {
-        $keyword = new ReflectionLanguageConstruct('die');
-
-        $refl = new ReflectionLanguageConstructParameter($keyword, 'one', [
-            'isArray'             => false,
-            'defaultValue'        => null,
-            'isOptional'          => false,
-            'isPassedByReference' => false,
-        ]);
-
-        $this->assertNull($refl->getClass());
-        $this->assertEquals('one', $refl->getName());
-        $this->assertFalse($refl->isArray());
-        $this->assertTrue($refl->isDefaultValueAvailable());
-        $this->assertNull($refl->getDefaultValue());
-        $this->assertFalse($refl->isOptional());
-        $this->assertFalse($refl->isPassedByReference());
-
-        $reflTwo = new ReflectionLanguageConstructParameter($keyword, 'two', [
-            'isArray'             => true,
-            'isOptional'          => true,
-            'isPassedByReference' => true,
-        ]);
-
-        $this->assertNull($refl->getClass());
-        $this->assertEquals('two', $reflTwo->getName());
-        $this->assertTrue($reflTwo->isArray());
-        $this->assertFalse($reflTwo->isDefaultValueAvailable());
-        $this->assertNull($reflTwo->getDefaultValue());
-        $this->assertTrue($reflTwo->isOptional());
-        $this->assertTrue($reflTwo->isPassedByReference());
-
-        $refl = new ReflectionLanguageConstructParameter($keyword, 'three', [
-            'defaultValue' => 3,
-        ]);
-
-        $this->assertNull($refl->getClass());
-        $this->assertEquals('three', $refl->getName());
-        $this->assertFalse($refl->isArray());
-        $this->assertTrue($refl->isDefaultValueAvailable());
-        $this->assertEquals(3, $refl->getDefaultValue());
-        $this->assertFalse($refl->isOptional());
-        $this->assertFalse($refl->isPassedByReference());
-    }
-}
diff --git a/vendor/psy/psysh/test/Reflection/ReflectionLanguageConstructTest.php b/vendor/psy/psysh/test/Reflection/ReflectionLanguageConstructTest.php
deleted file mode 100644
index 872a726d64..0000000000
--- a/vendor/psy/psysh/test/Reflection/ReflectionLanguageConstructTest.php
+++ /dev/null
@@ -1,102 +0,0 @@
-<?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\Reflection;
-
-use Psy\Reflection\ReflectionLanguageConstruct;
-
-class ReflectionLanguageConstructTest extends \PHPUnit\Framework\TestCase
-{
-    /**
-     * @dataProvider languageConstructs
-     */
-    public function testConstruction($keyword)
-    {
-        $refl = new ReflectionLanguageConstruct($keyword);
-        $this->assertEquals($keyword, $refl->getName());
-        $this->assertEquals($keyword, (string) $refl);
-    }
-
-    /**
-     * @dataProvider languageConstructs
-     */
-    public function testKnownLanguageConstructs($keyword)
-    {
-        $this->assertTrue(ReflectionLanguageConstruct::isLanguageConstruct($keyword));
-    }
-
-    /**
-     * @dataProvider languageConstructs
-     */
-    public function testFileName($keyword)
-    {
-        $refl = new ReflectionLanguageConstruct($keyword);
-        $this->assertFalse($refl->getFileName());
-    }
-
-    /**
-     * @dataProvider languageConstructs
-     */
-    public function testReturnsReference($keyword)
-    {
-        $refl = new ReflectionLanguageConstruct($keyword);
-        $this->assertFalse($refl->returnsReference());
-    }
-
-    /**
-     * @dataProvider languageConstructs
-     */
-    public function testGetParameters($keyword)
-    {
-        $refl = new ReflectionLanguageConstruct($keyword);
-        $this->assertNotEmpty($refl->getParameters());
-    }
-
-    /**
-     * @dataProvider languageConstructs
-     * @expectedException \RuntimeException
-     */
-    public function testExportThrows($keyword)
-    {
-        ReflectionLanguageConstruct::export($keyword);
-    }
-
-    public function languageConstructs()
-    {
-        return [
-            ['isset'],
-            ['unset'],
-            ['empty'],
-            ['echo'],
-            ['print'],
-            ['die'],
-            ['exit'],
-        ];
-    }
-
-    /**
-     * @dataProvider unknownLanguageConstructs
-     * @expectedException \InvalidArgumentException
-     */
-    public function testUnknownLanguageConstructsThrowExceptions($keyword)
-    {
-        new ReflectionLanguageConstruct($keyword);
-    }
-
-    public function unknownLanguageConstructs()
-    {
-        return [
-            ['async'],
-            ['await'],
-            ['comefrom'],
-        ];
-    }
-}
diff --git a/vendor/psy/psysh/test/ShellTest.php b/vendor/psy/psysh/test/ShellTest.php
deleted file mode 100644
index 809af021e4..0000000000
--- a/vendor/psy/psysh/test/ShellTest.php
+++ /dev/null
@@ -1,442 +0,0 @@
-<?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;
-
-use Psy\Configuration;
-use Psy\Exception\ErrorException;
-use Psy\Exception\ParseErrorException;
-use Psy\Shell;
-use Psy\TabCompletion\Matcher\ClassMethodsMatcher;
-use Symfony\Component\Console\Output\StreamOutput;
-
-class ShellTest extends \PHPUnit\Framework\TestCase
-{
-    private $streams = [];
-
-    public function tearDown()
-    {
-        foreach ($this->streams as $stream) {
-            \fclose($stream);
-        }
-    }
-
-    public function testScopeVariables()
-    {
-        $one       = 'banana';
-        $two       = 123;
-        $three     = new \StdClass();
-        $__psysh__ = 'ignore this';
-        $_         = 'ignore this';
-        $_e        = 'ignore this';
-
-        $shell = new Shell($this->getConfig());
-        $shell->setScopeVariables(\compact('one', 'two', 'three', '__psysh__', '_', '_e', 'this'));
-
-        $this->assertNotContains('__psysh__', $shell->getScopeVariableNames());
-        $this->assertSame(['one', 'two', 'three', '_'], $shell->getScopeVariableNames());
-        $this->assertSame('banana', $shell->getScopeVariable('one'));
-        $this->assertSame(123, $shell->getScopeVariable('two'));
-        $this->assertSame($three, $shell->getScopeVariable('three'));
-        $this->assertNull($shell->getScopeVariable('_'));
-
-        $diff = $shell->getScopeVariablesDiff(['one' => $one, 'two' => 'not two']);
-        $this->assertSame(['two' => $two, 'three' => $three, '_' => null], $diff);
-
-        $shell->setScopeVariables([]);
-        $this->assertSame(['_'], $shell->getScopeVariableNames());
-
-        $shell->setBoundObject($this);
-        $this->assertSame(['_', 'this'], $shell->getScopeVariableNames());
-        $this->assertSame($this, $shell->getScopeVariable('this'));
-        $this->assertSame(['_' => null], $shell->getScopeVariables(false));
-        $this->assertSame(['_' => null, 'this' => $this], $shell->getScopeVariables());
-    }
-
-    /**
-     * @expectedException \InvalidArgumentException
-     */
-    public function testUnknownScopeVariablesThrowExceptions()
-    {
-        $shell = new Shell($this->getConfig());
-        $shell->setScopeVariables(['foo' => 'FOO', 'bar' => 1]);
-        $shell->getScopeVariable('baz');
-    }
-
-    public function testIncludesWithScopeVariables()
-    {
-        $one       = 'banana';
-        $two       = 123;
-        $three     = new \StdClass();
-        $__psysh__ = 'ignore this';
-        $_         = 'ignore this';
-        $_e        = 'ignore this';
-
-        $config = $this->getConfig(['usePcntl' => false]);
-
-        $shell = new Shell($config);
-        $shell->setScopeVariables(\compact('one', 'two', 'three', '__psysh__', '_', '_e', 'this'));
-        $shell->addInput('exit', true);
-
-        // This is super slow and we shouldn't do this :(
-        $shell->run(null, $this->getOutput());
-
-        $this->assertNotContains('__psysh__', $shell->getScopeVariableNames());
-        $this->assertSame(['one', 'two', 'three', '_', '_e'], $shell->getScopeVariableNames());
-        $this->assertSame('banana', $shell->getScopeVariable('one'));
-        $this->assertSame(123, $shell->getScopeVariable('two'));
-        $this->assertSame($three, $shell->getScopeVariable('three'));
-        $this->assertNull($shell->getScopeVariable('_'));
-    }
-
-    public function testIncludes()
-    {
-        $config = $this->getConfig(['configFile' => __DIR__ . '/fixtures/empty.php']);
-
-        $shell = new Shell($config);
-        $this->assertEmpty($shell->getIncludes());
-        $shell->setIncludes(['foo', 'bar', 'baz']);
-        $this->assertSame(['foo', 'bar', 'baz'], $shell->getIncludes());
-    }
-
-    public function testIncludesConfig()
-    {
-        $config = $this->getConfig([
-            'defaultIncludes' => ['/file.php'],
-            'configFile'      => __DIR__ . '/fixtures/empty.php',
-        ]);
-
-        $shell = new Shell($config);
-
-        $includes = $shell->getIncludes();
-        $this->assertSame('/file.php', $includes[0]);
-    }
-
-    public function testAddMatchersViaConfig()
-    {
-        $shell = new FakeShell();
-        $matcher = new ClassMethodsMatcher();
-
-        $config = $this->getConfig([
-            'matchers' => [$matcher],
-        ]);
-        $config->setShell($shell);
-
-        $this->assertSame([$matcher], $shell->matchers);
-    }
-
-    public function testAddMatchersViaConfigAfterShell()
-    {
-        $shell = new FakeShell();
-        $matcher = new ClassMethodsMatcher();
-
-        $config = $this->getConfig([]);
-        $config->setShell($shell);
-        $config->addMatchers([$matcher]);
-
-        $this->assertSame([$matcher], $shell->matchers);
-    }
-
-    public function testRenderingExceptions()
-    {
-        $shell  = new Shell($this->getConfig());
-        $output = $this->getOutput();
-        $stream = $output->getStream();
-        $e      = new ParseErrorException('message', 13);
-
-        $shell->setOutput($output);
-        $shell->addCode('code');
-        $this->assertTrue($shell->hasCode());
-        $this->assertNotEmpty($shell->getCodeBuffer());
-
-        $shell->writeException($e);
-
-        $this->assertSame($e, $shell->getScopeVariable('_e'));
-        $this->assertFalse($shell->hasCode());
-        $this->assertEmpty($shell->getCodeBuffer());
-
-        \rewind($stream);
-        $streamContents = \stream_get_contents($stream);
-
-        $this->assertContains('PHP Parse error', $streamContents);
-        $this->assertContains('message', $streamContents);
-        $this->assertContains('line 13', $streamContents);
-    }
-
-    public function testHandlingErrors()
-    {
-        $shell  = new Shell($this->getConfig());
-        $output = $this->getOutput();
-        $stream = $output->getStream();
-        $shell->setOutput($output);
-
-        $oldLevel = \error_reporting();
-        \error_reporting($oldLevel & ~E_USER_NOTICE);
-
-        try {
-            $shell->handleError(E_USER_NOTICE, 'wheee', null, 13);
-        } catch (ErrorException $e) {
-            \error_reporting($oldLevel);
-            $this->fail('Unexpected error exception');
-        }
-        \error_reporting($oldLevel);
-
-        \rewind($stream);
-        $streamContents = \stream_get_contents($stream);
-
-        $this->assertContains('PHP Notice:', $streamContents);
-        $this->assertContains('wheee',       $streamContents);
-        $this->assertContains('line 13',     $streamContents);
-    }
-
-    /**
-     * @expectedException \Psy\Exception\ErrorException
-     */
-    public function testNotHandlingErrors()
-    {
-        $shell    = new Shell($this->getConfig());
-        $oldLevel = \error_reporting();
-        \error_reporting($oldLevel | E_USER_NOTICE);
-
-        try {
-            $shell->handleError(E_USER_NOTICE, 'wheee', null, 13);
-        } catch (ErrorException $e) {
-            \error_reporting($oldLevel);
-            throw $e;
-        }
-    }
-
-    public function testVersion()
-    {
-        $shell = new Shell($this->getConfig());
-
-        $this->assertInstanceOf('Symfony\Component\Console\Application', $shell);
-        $this->assertContains(Shell::VERSION, $shell->getVersion());
-        $this->assertContains(PHP_VERSION, $shell->getVersion());
-        $this->assertContains(PHP_SAPI, $shell->getVersion());
-    }
-
-    public function testCodeBuffer()
-    {
-        $shell = new Shell($this->getConfig());
-
-        $shell->addCode('class');
-        $this->assertNull($shell->flushCode());
-        $this->assertTrue($shell->hasCode());
-
-        $shell->addCode('a');
-        $this->assertNull($shell->flushCode());
-        $this->assertTrue($shell->hasCode());
-
-        $shell->addCode('{}');
-        $code = $shell->flushCode();
-        $this->assertFalse($shell->hasCode());
-        $code = \preg_replace('/\s+/', ' ', $code);
-        $this->assertNotNull($code);
-        $this->assertSame('class a { } return new \\Psy\\CodeCleaner\\NoReturnValue();', $code);
-    }
-
-    public function testKeepCodeBufferOpen()
-    {
-        $shell = new Shell($this->getConfig());
-
-        $shell->addCode('1 \\');
-        $this->assertNull($shell->flushCode());
-        $this->assertTrue($shell->hasCode());
-
-        $shell->addCode('+ 1 \\');
-        $this->assertNull($shell->flushCode());
-        $this->assertTrue($shell->hasCode());
-
-        $shell->addCode('+ 1');
-        $code = $shell->flushCode();
-        $this->assertFalse($shell->hasCode());
-        $code = \preg_replace('/\s+/', ' ', $code);
-        $this->assertNotNull($code);
-        $this->assertSame('return 1 + 1 + 1;', $code);
-    }
-
-    /**
-     * @expectedException \Psy\Exception\ParseErrorException
-     */
-    public function testCodeBufferThrowsParseExceptions()
-    {
-        $shell = new Shell($this->getConfig());
-        $shell->addCode('this is not valid');
-        $shell->flushCode();
-    }
-
-    public function testClosuresSupport()
-    {
-        $shell = new Shell($this->getConfig());
-        $code = '$test = function () {}';
-        $shell->addCode($code);
-        $shell->flushCode();
-        $code = '$test()';
-        $shell->addCode($code);
-        $this->assertSame($shell->flushCode(), 'return $test();');
-    }
-
-    public function testWriteStdout()
-    {
-        $output = $this->getOutput();
-        $stream = $output->getStream();
-        $shell  = new Shell($this->getConfig());
-        $shell->setOutput($output);
-
-        $shell->writeStdout("{{stdout}}\n");
-
-        \rewind($stream);
-        $streamContents = \stream_get_contents($stream);
-
-        $this->assertSame('{{stdout}}' . PHP_EOL, $streamContents);
-    }
-
-    public function testWriteStdoutWithoutNewline()
-    {
-        $output = $this->getOutput();
-        $stream = $output->getStream();
-        $shell  = new Shell($this->getConfig());
-        $shell->setOutput($output);
-
-        $shell->writeStdout('{{stdout}}');
-
-        \rewind($stream);
-        $streamContents = \stream_get_contents($stream);
-
-        $this->assertSame('{{stdout}}<aside>⏎</aside>' . PHP_EOL, $streamContents);
-    }
-
-    /**
-     * @dataProvider getReturnValues
-     */
-    public function testWriteReturnValue($input, $expected)
-    {
-        $output = $this->getOutput();
-        $stream = $output->getStream();
-        $shell  = new Shell($this->getConfig());
-        $shell->setOutput($output);
-
-        $shell->writeReturnValue($input);
-        \rewind($stream);
-        $this->assertEquals($expected, \stream_get_contents($stream));
-    }
-
-    public function getReturnValues()
-    {
-        return [
-            ['{{return value}}', "=> \"\033[32m{{return value}}\033[39m\"" . PHP_EOL],
-            [1, "=> \033[35m1\033[39m" . PHP_EOL],
-        ];
-    }
-
-    /**
-     * @dataProvider getRenderedExceptions
-     */
-    public function testWriteException($exception, $expected)
-    {
-        $output = $this->getOutput();
-        $stream = $output->getStream();
-        $shell  = new Shell($this->getConfig());
-        $shell->setOutput($output);
-
-        $shell->writeException($exception);
-        \rewind($stream);
-        $this->assertSame($expected, \stream_get_contents($stream));
-    }
-
-    public function getRenderedExceptions()
-    {
-        return [
-            [new \Exception('{{message}}'), "Exception with message '{{message}}'" . PHP_EOL],
-        ];
-    }
-
-    /**
-     * @dataProvider getExecuteValues
-     */
-    public function testShellExecute($input, $expected)
-    {
-        $output = $this->getOutput();
-        $stream = $output->getStream();
-        $shell  = new Shell($this->getConfig());
-        $shell->setOutput($output);
-        $this->assertEquals($expected, $shell->execute($input));
-        \rewind($stream);
-        $this->assertSame('', \stream_get_contents($stream));
-    }
-
-    public function getExecuteValues()
-    {
-        return [
-            ['return 12', 12],
-            ['"{{return value}}"', '{{return value}}'],
-            ['1', '1'],
-        ];
-    }
-
-    /**
-     * @dataProvider commandsToHas
-     */
-    public function testHasCommand($command, $has)
-    {
-        $shell = new Shell($this->getConfig());
-
-        // :-/
-        $refl = new \ReflectionClass('Psy\\Shell');
-        $method = $refl->getMethod('hasCommand');
-        $method->setAccessible(true);
-
-        $this->assertEquals($method->invokeArgs($shell, [$command]), $has);
-    }
-
-    public function commandsToHas()
-    {
-        return [
-            ['help', true],
-            ['help help', true],
-            ['"help"', false],
-            ['"help help"', false],
-            ['ls -al ', true],
-            ['ls "-al" ', true],
-            ['ls"-al"', false],
-            [' q', true],
-            ['   q  --help', true],
-            ['"q"', false],
-            ['"q",', false],
-        ];
-    }
-
-    private function getOutput()
-    {
-        $stream = \fopen('php://memory', 'w+');
-        $this->streams[] = $stream;
-
-        $output = new StreamOutput($stream, StreamOutput::VERBOSITY_NORMAL, false);
-
-        return $output;
-    }
-
-    private function getConfig(array $config = [])
-    {
-        // Mebbe there's a better way than this?
-        $dir = \tempnam(\sys_get_temp_dir(), 'psysh_shell_test_');
-        \unlink($dir);
-
-        $defaults = [
-            'configDir'  => $dir,
-            'dataDir'    => $dir,
-            'runtimeDir' => $dir,
-        ];
-
-        return new Configuration(\array_merge($defaults, $config));
-    }
-}
diff --git a/vendor/psy/psysh/test/Sudo/SudoVisitorTest.php b/vendor/psy/psysh/test/Sudo/SudoVisitorTest.php
deleted file mode 100644
index 1f2042c866..0000000000
--- a/vendor/psy/psysh/test/Sudo/SudoVisitorTest.php
+++ /dev/null
@@ -1,142 +0,0 @@
-<?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\Sudo;
-
-use PhpParser\NodeTraverser;
-use Psy\Sudo\SudoVisitor;
-use Psy\Test\ParserTestCase;
-
-class SudoVisitorTest extends ParserTestCase
-{
-    public function setUp()
-    {
-        $this->traverser = new NodeTraverser();
-        $this->traverser->addVisitor(new SudoVisitor());
-    }
-
-    /**
-     * @dataProvider propertyFetches
-     */
-    public function testPropertyFetch($from, $to)
-    {
-        $this->assertProcessesAs($from, $to);
-    }
-
-    public function propertyFetches()
-    {
-        return [
-            ['$a->b', "\Psy\Sudo::fetchProperty(\$a, 'b');"],
-            ['$a->$b', '\Psy\Sudo::fetchProperty($a, $b);'],
-            ["\$a->{'b'}", "\Psy\Sudo::fetchProperty(\$a, 'b');"],
-        ];
-    }
-
-    /**
-     * @dataProvider propertyAssigns
-     */
-    public function testPropertyAssign($from, $to)
-    {
-        $this->assertProcessesAs($from, $to);
-    }
-
-    public function propertyAssigns()
-    {
-        return [
-            ['$a->b = $c', "\Psy\Sudo::assignProperty(\$a, 'b', \$c);"],
-            ['$a->$b = $c', '\Psy\Sudo::assignProperty($a, $b, $c);'],
-            ["\$a->{'b'} = \$c", "\Psy\Sudo::assignProperty(\$a, 'b', \$c);"],
-        ];
-    }
-
-    /**
-     * @dataProvider methodCalls
-     */
-    public function testMethodCall($from, $to)
-    {
-        $this->assertProcessesAs($from, $to);
-    }
-
-    public function methodCalls()
-    {
-        return [
-            ['$a->b()', "\Psy\Sudo::callMethod(\$a, 'b');"],
-            ['$a->$b()', '\Psy\Sudo::callMethod($a, $b);'],
-            ["\$a->b(\$c, 'd')", "\Psy\Sudo::callMethod(\$a, 'b', \$c, 'd');"],
-            ["\$a->\$b(\$c, 'd')", "\Psy\Sudo::callMethod(\$a, \$b, \$c, 'd');"],
-        ];
-    }
-
-    /**
-     * @dataProvider staticPropertyFetches
-     */
-    public function testStaticPropertyFetch($from, $to)
-    {
-        $this->assertProcessesAs($from, $to);
-    }
-
-    public function staticPropertyFetches()
-    {
-        return [
-            ['A::$b', "\Psy\Sudo::fetchStaticProperty('A', 'b');"],
-            ['$a::$b', "\Psy\Sudo::fetchStaticProperty(\$a, 'b');"],
-        ];
-    }
-
-    /**
-     * @dataProvider staticPropertyAssigns
-     */
-    public function testStaticPropertyAssign($from, $to)
-    {
-        $this->assertProcessesAs($from, $to);
-    }
-
-    public function staticPropertyAssigns()
-    {
-        return [
-            ['A::$b = $c', "\Psy\Sudo::assignStaticProperty('A', 'b', \$c);"],
-            ['$a::$b = $c', "\Psy\Sudo::assignStaticProperty(\$a, 'b', \$c);"],
-        ];
-    }
-
-    /**
-     * @dataProvider staticCalls
-     */
-    public function testStaticCall($from, $to)
-    {
-        $this->assertProcessesAs($from, $to);
-    }
-
-    public function staticCalls()
-    {
-        return [
-            ['A::b()', "\Psy\Sudo::callStatic('A', 'b');"],
-            ['A::$b()', "\Psy\Sudo::callStatic('A', \$b);"],
-            ["A::b(\$c, 'd')", "\Psy\Sudo::callStatic('A', 'b', \$c, 'd');"],
-            ["A::\$b(\$c, 'd')", "\Psy\Sudo::callStatic('A', \$b, \$c, 'd');"],
-        ];
-    }
-
-    /**
-     * @dataProvider classConstFetches
-     */
-    public function testClassConstFetch($from, $to)
-    {
-        $this->assertProcessesAs($from, $to);
-    }
-
-    public function classConstFetches()
-    {
-        return [
-            ['A::B', "\Psy\Sudo::fetchClassConst('A', 'B');"],
-        ];
-    }
-}
diff --git a/vendor/psy/psysh/test/SudoTest.php b/vendor/psy/psysh/test/SudoTest.php
deleted file mode 100644
index 6123db04e6..0000000000
--- a/vendor/psy/psysh/test/SudoTest.php
+++ /dev/null
@@ -1,80 +0,0 @@
-<?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;
-
-use Psy\Sudo;
-
-class SudoTest extends \PHPUnit\Framework\TestCase
-{
-    public function setUp()
-    {
-        if (\version_compare(PHP_VERSION, '7.1.0', '<')) {
-            $this->markTestSkipped('YOLO');
-        }
-    }
-
-    public function testFetchProperty()
-    {
-        $obj = new ClassWithSecrets();
-        $this->assertSame('private and prop', Sudo::fetchProperty($obj, 'privateProp'));
-    }
-
-    public function testAssignProperty()
-    {
-        $obj = new ClassWithSecrets();
-        $this->assertSame('private and prop', Sudo::fetchProperty($obj, 'privateProp'));
-        $this->assertSame('not so private now', Sudo::assignProperty($obj, 'privateProp', 'not so private now'));
-        $this->assertSame('not so private now', Sudo::fetchProperty($obj, 'privateProp'));
-    }
-
-    public function testCallMethod()
-    {
-        $obj = new ClassWithSecrets();
-        $this->assertSame('private and method', Sudo::callMethod($obj, 'privateMethod'));
-        $this->assertSame('private and method with 1', Sudo::callMethod($obj, 'privateMethod', 1));
-        $this->assertSame(
-            'private and method with ["foo",2]',
-            Sudo::callMethod($obj, 'privateMethod', ['foo', 2]
-        ));
-    }
-
-    public function testFetchStaticProperty()
-    {
-        $obj = new ClassWithSecrets();
-        $this->assertSame('private and static and prop', Sudo::fetchStaticProperty($obj, 'privateStaticProp'));
-    }
-
-    public function testAssignStaticProperty()
-    {
-        $obj = new ClassWithSecrets();
-        $this->assertSame('private and static and prop', Sudo::fetchStaticProperty($obj, 'privateStaticProp'));
-        $this->assertSame('not so private now', Sudo::assignStaticProperty($obj, 'privateStaticProp', 'not so private now'));
-        $this->assertSame('not so private now', Sudo::fetchStaticProperty($obj, 'privateStaticProp'));
-    }
-
-    public function testCallStatic()
-    {
-        $obj = new ClassWithSecrets();
-        $this->assertSame('private and static and method', Sudo::callStatic($obj, 'privateStaticMethod'));
-        $this->assertSame('private and static and method with 1', Sudo::callStatic($obj, 'privateStaticMethod', 1));
-        $this->assertSame(
-            'private and static and method with ["foo",2]',
-            Sudo::callStatic($obj, 'privateStaticMethod', ['foo', 2]
-        ));
-    }
-
-    public function testFetchClassConst()
-    {
-        $obj = new ClassWithSecrets();
-        $this->assertSame('private and const', Sudo::fetchClassConst($obj, 'PRIVATE_CONST'));
-    }
-}
diff --git a/vendor/psy/psysh/test/TabCompletion/AutoCompleterTest.php b/vendor/psy/psysh/test/TabCompletion/AutoCompleterTest.php
deleted file mode 100644
index d98d452c43..0000000000
--- a/vendor/psy/psysh/test/TabCompletion/AutoCompleterTest.php
+++ /dev/null
@@ -1,145 +0,0 @@
-<?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\TabCompletion;
-
-use Psy\Command\ListCommand;
-use Psy\Command\ShowCommand;
-use Psy\Configuration;
-use Psy\Context;
-use Psy\ContextAware;
-use Psy\TabCompletion\Matcher;
-
-class AutoCompleterTest extends \PHPUnit\Framework\TestCase
-{
-    /**
-     * @param string $line
-     * @param array  $mustContain
-     * @param array  $mustNotContain
-     * @dataProvider classesInput
-     */
-    public function testClassesCompletion($line, $mustContain, $mustNotContain)
-    {
-        $context = new Context();
-
-        $commands = [
-            new ShowCommand(),
-            new ListCommand(),
-        ];
-
-        $matchers = [
-            new Matcher\VariablesMatcher(),
-            new Matcher\ClassNamesMatcher(),
-            new Matcher\ConstantsMatcher(),
-            new Matcher\FunctionsMatcher(),
-            new Matcher\ObjectMethodsMatcher(),
-            new Matcher\ObjectAttributesMatcher(),
-            new Matcher\KeywordsMatcher(),
-            new Matcher\ClassAttributesMatcher(),
-            new Matcher\ClassMethodsMatcher(),
-            new Matcher\CommandsMatcher($commands),
-        ];
-
-        $config = new Configuration();
-        $tabCompletion = $config->getAutoCompleter();
-        foreach ($matchers as $matcher) {
-            if ($matcher instanceof ContextAware) {
-                $matcher->setContext($context);
-            }
-            $tabCompletion->addMatcher($matcher);
-        }
-
-        $context->setAll(['foo' => 12, 'bar' => new \DOMDocument()]);
-
-        $code = $tabCompletion->processCallback('', 0, [
-           'line_buffer' => $line,
-           'point'       => 0,
-           'end'         => \strlen($line),
-        ]);
-
-        foreach ($mustContain as $mc) {
-            $this->assertContains($mc, $code);
-        }
-
-        foreach ($mustNotContain as $mnc) {
-            $this->assertNotContains($mnc, $code);
-        }
-    }
-
-    /**
-     * TODO
-     * ====
-     * draft, open to modifications
-     * - [ ] if the variable is an array, return the square bracket for completion
-     * - [ ] if the variable is a constructor or method, reflect to complete as a function call
-     * - [ ] if the preceding token is a variable, call operators or keywords compatible for completion
-     * - [X] a command always should be the second token after php_open_tag
-     * - [X] keywords are never consecutive
-     * - [X] namespacing completion should work just fine
-     * - [X] after a new keyword, should always be a class constructor, never a function call or keyword, constant,
-     *       or variable that does not contain a existing class name.
-     * - [X] on a namespaced constructor the completion must show the classes related, not constants.
-     *
-     * @return array
-     */
-    public function classesInput()
-    {
-        return [
-            // input, must had, must not had
-            ['T_OPE', ['T_OPEN_TAG'], []],
-            ['st', ['stdClass'], []],
-            ['stdCla', ['stdClass'], []],
-            ['new s', ['stdClass'], []],
-            [
-                'new ',
-                ['stdClass', 'Psy\\Context', 'Psy\\Configuration'],
-                ['require', 'array_search', 'T_OPEN_TAG', '$foo'],
-            ],
-            ['new Psy\\C', ['Context'], ['CASE_LOWER']],
-            ['\s', ['stdClass'], []],
-            ['array_', ['array_search', 'array_map', 'array_merge'], []],
-            ['$bar->', ['load'], []],
-            ['$b', ['bar'], []],
-            ['6 + $b', ['bar'], []],
-            ['$f', ['foo'], []],
-            ['l', ['ls'], []],
-            ['ls ', [], ['ls']],
-            ['sho', ['show'], []],
-            ['12 + clone $', ['foo'], []],
-            // array(
-            //   '$foo ',
-            //   array('+', 'clone'),
-            //   array('$foo', 'DOMDocument', 'array_map')
-            // ), requires a operator matcher?
-            ['$', ['foo', 'bar'], ['require', 'array_search', 'T_OPEN_TAG', 'Psy']],
-            [
-                'Psy\\',
-                ['Context', 'TabCompletion\\Matcher\\AbstractMatcher'],
-                ['require', 'array_search'],
-            ],
-            [
-                'Psy\Test\TabCompletion\StaticSample::CO',
-                ['StaticSample::CONSTANT_VALUE'],
-                [],
-            ],
-            [
-                'Psy\Test\TabCompletion\StaticSample::',
-                ['StaticSample::$staticVariable'],
-                [],
-            ],
-            [
-                'Psy\Test\TabCompletion\StaticSample::',
-                ['StaticSample::staticFunction'],
-                [],
-            ],
-        ];
-    }
-}
diff --git a/vendor/psy/psysh/test/TabCompletion/StaticSample.php b/vendor/psy/psysh/test/TabCompletion/StaticSample.php
deleted file mode 100644
index e0de2f0bb3..0000000000
--- a/vendor/psy/psysh/test/TabCompletion/StaticSample.php
+++ /dev/null
@@ -1,27 +0,0 @@
-<?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\TabCompletion;
-
-/**
- * Class StaticSample.
- */
-class StaticSample
-{
-    const CONSTANT_VALUE = 12;
-
-    public static $staticVariable;
-
-    public static function staticFunction()
-    {
-        return self::CONSTANT_VALUE;
-    }
-}
diff --git a/vendor/psy/psysh/test/Util/DocblockTest.php b/vendor/psy/psysh/test/Util/DocblockTest.php
deleted file mode 100644
index 82e12feded..0000000000
--- a/vendor/psy/psysh/test/Util/DocblockTest.php
+++ /dev/null
@@ -1,100 +0,0 @@
-<?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\Util;
-
-use Psy\Util\Docblock;
-
-class DocblockTest extends \PHPUnit\Framework\TestCase
-{
-    /**
-     * @dataProvider comments
-     */
-    public function testDocblockParsing($comment, $body, $tags)
-    {
-        $reflector = $this
-            ->getMockBuilder('ReflectionClass')
-            ->disableOriginalConstructor()
-            ->getMock();
-
-        $reflector->expects($this->once())
-            ->method('getDocComment')
-            ->will($this->returnValue($comment));
-
-        $docblock = new Docblock($reflector);
-
-        $this->assertSame($body, $docblock->desc);
-
-        foreach ($tags as $tag => $value) {
-            $this->assertTrue($docblock->hasTag($tag));
-            $this->assertEquals($value, $docblock->tag($tag));
-        }
-    }
-
-    public function comments()
-    {
-        if (\defined('HHVM_VERSION')) {
-            $this->markTestSkipped('We have issues with PHPUnit mocks on HHVM.');
-        }
-
-        return [
-            ['', '', []],
-            [
-                '/**
-                 * This is a docblock
-                 *
-                 * @throws \Exception with a description
-                 */',
-                'This is a docblock',
-                [
-                    'throws' => [['type' => '\Exception', 'desc' => 'with a description']],
-                ],
-            ],
-            [
-                '/**
-                 * This is a slightly longer docblock
-                 *
-                 * @param int         $foo Is a Foo
-                 * @param string      $bar With some sort of description
-                 * @param \ClassName $baz is cool too
-                 *
-                 * @return int At least it isn\'t a string
-                 */',
-                'This is a slightly longer docblock',
-                [
-                    'param' => [
-                        ['type' => 'int', 'desc' => 'Is a Foo', 'var' => '$foo'],
-                        ['type' => 'string', 'desc' => 'With some sort of description', 'var' => '$bar'],
-                        ['type' => '\ClassName', 'desc' => 'is cool too', 'var' => '$baz'],
-                    ],
-                    'return' => [
-                        ['type' => 'int', 'desc' => 'At least it isn\'t a string'],
-                    ],
-                ],
-            ],
-            [
-                '/**
-                 * This is a docblock!
-                 *
-                 * It spans lines, too!
-                 *
-                 * @tagname plus a description
-                 *
-                 * @return
-                 */',
-                "This is a docblock!\n\nIt spans lines, too!",
-                [
-                    'tagname' => ['plus a description'],
-                ],
-            ],
-        ];
-    }
-}
diff --git a/vendor/psy/psysh/test/Util/MirrorTest.php b/vendor/psy/psysh/test/Util/MirrorTest.php
deleted file mode 100644
index 585fffbb2d..0000000000
--- a/vendor/psy/psysh/test/Util/MirrorTest.php
+++ /dev/null
@@ -1,86 +0,0 @@
-<?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\Util;
-
-use Psy\Util\Mirror;
-
-class MirrorTest extends \PHPUnit\Framework\TestCase
-{
-    const FOO           = 1;
-    private $bar        = 2;
-    private static $baz = 3;
-
-    public function aPublicMethod()
-    {
-        // nada
-    }
-
-    public function testMirror()
-    {
-        $refl = Mirror::get('sort');
-        $this->assertInstanceOf('ReflectionFunction', $refl);
-
-        $refl = Mirror::get('Psy\Test\Util\MirrorTest');
-        $this->assertInstanceOf('ReflectionClass', $refl);
-
-        $refl = Mirror::get($this);
-        $this->assertInstanceOf('ReflectionObject', $refl);
-
-        $refl = Mirror::get($this, 'FOO');
-        if (\version_compare(PHP_VERSION, '7.1.0', '>=')) {
-            $this->assertInstanceOf('ReflectionClassConstant', $refl);
-        } else {
-            $this->assertInstanceOf('Psy\Reflection\ReflectionClassConstant', $refl);
-        }
-
-        $refl = Mirror::get('PHP_VERSION');
-        $this->assertInstanceOf('Psy\Reflection\ReflectionConstant_', $refl);
-
-        $refl = Mirror::get($this, 'bar');
-        $this->assertInstanceOf('ReflectionProperty', $refl);
-
-        $refl = Mirror::get($this, 'baz');
-        $this->assertInstanceOf('ReflectionProperty', $refl);
-
-        $refl = Mirror::get($this, 'aPublicMethod');
-        $this->assertInstanceOf('ReflectionMethod', $refl);
-
-        $refl = Mirror::get($this, 'baz', Mirror::STATIC_PROPERTY);
-        $this->assertInstanceOf('ReflectionProperty', $refl);
-    }
-
-    /**
-     * @expectedException \RuntimeException
-     */
-    public function testMirrorThrowsExceptions()
-    {
-        Mirror::get($this, 'notAMethod');
-    }
-
-    /**
-     * @expectedException \InvalidArgumentException
-     * @dataProvider invalidArguments
-     */
-    public function testMirrorThrowsInvalidArgumentExceptions($value)
-    {
-        Mirror::get($value);
-    }
-
-    public function invalidArguments()
-    {
-        return [
-            ['not_a_function_or_class'],
-            [[]],
-            [1],
-        ];
-    }
-}
diff --git a/vendor/psy/psysh/test/Util/StrTest.php b/vendor/psy/psysh/test/Util/StrTest.php
deleted file mode 100644
index 4f99a79b37..0000000000
--- a/vendor/psy/psysh/test/Util/StrTest.php
+++ /dev/null
@@ -1,31 +0,0 @@
-<?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\Util;
-
-use Psy\Util\Str;
-
-class StrTest extends \PHPUnit\Framework\TestCase
-{
-    /**
-     * @dataProvider unvisProvider
-     */
-    public function testUnvis($input, $expected)
-    {
-        $this->assertSame($expected, Str::unvis($input));
-    }
-
-    public function unvisProvider()
-    {
-        //return require_once(__DIR__.'/../fixtures/unvis_fixtures.php');
-        return \json_decode(\file_get_contents(__DIR__ . '/../fixtures/unvis_fixtures.json'));
-    }
-}
diff --git a/vendor/psy/psysh/test/VersionUpdater/GitHubCheckerTest.php b/vendor/psy/psysh/test/VersionUpdater/GitHubCheckerTest.php
deleted file mode 100644
index 7d12d47d60..0000000000
--- a/vendor/psy/psysh/test/VersionUpdater/GitHubCheckerTest.php
+++ /dev/null
@@ -1,82 +0,0 @@
-<?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\VersionUpdater;
-
-use Psy\Shell;
-
-class GitHubCheckerTest extends \PHPUnit\Framework\TestCase
-{
-    /**
-     * @dataProvider malformedResults
-     * @expectedException \InvalidArgumentException
-     * @expectedExceptionMessage Unable to check for updates
-     *
-     * @param mixed $input
-     */
-    public function testExceptionInvocation($input)
-    {
-        $checker = $this->getMockBuilder('Psy\\VersionUpdater\\GitHubChecker')
-            ->setMethods(['fetchLatestRelease'])
-            ->getMock();
-        $checker->expects($this->once())->method('fetchLatestRelease')->willReturn($input);
-        $checker->isLatest();
-    }
-
-    /**
-     * @dataProvider jsonResults
-     *
-     * @param bool  $assertion
-     * @param mixed $input
-     */
-    public function testDataSetResults($assertion, $input)
-    {
-        $checker = $this->getMockBuilder('Psy\\VersionUpdater\\GitHubChecker')
-            ->setMethods(['fetchLatestRelease'])
-            ->getMock();
-        $checker->expects($this->once())->method('fetchLatestRelease')->willReturn($input);
-        $this->assertSame($assertion, $checker->isLatest());
-    }
-
-    /**
-     * @return array
-     */
-    public function jsonResults()
-    {
-        return [
-            [false, \json_decode('{"tag_name":"v9.0.0"}')],
-            [true, \json_decode('{"tag_name":"v' . Shell::VERSION . '"}')],
-            [true, \json_decode('{"tag_name":"v0.0.1"}')],
-            [true, \json_decode('{"tag_name":"v0.4.1-alpha"}')],
-            [true, \json_decode('{"tag_name":"v0.4.2-beta3"}')],
-            [true, \json_decode('{"tag_name":"v0.0.1"}')],
-            [true, \json_decode('{"tag_name":""}')],
-        ];
-    }
-
-    /**
-     * @return array
-     */
-    public function malformedResults()
-    {
-        return [
-            [null],
-            [false],
-            [true],
-            [\json_decode('{"foo":"bar"}')],
-            [\json_decode('{}')],
-            [\json_decode('[]')],
-            [[]],
-            [\json_decode('{"tag_name":false"}')],
-            [\json_decode('{"tag_name":true"}')],
-        ];
-    }
-}
diff --git a/vendor/psy/psysh/test/VersionUpdater/NoopCheckerTest.php b/vendor/psy/psysh/test/VersionUpdater/NoopCheckerTest.php
deleted file mode 100644
index b9ba568c7a..0000000000
--- a/vendor/psy/psysh/test/VersionUpdater/NoopCheckerTest.php
+++ /dev/null
@@ -1,25 +0,0 @@
-<?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\VersionUpdater;
-
-use Psy\Shell;
-use Psy\VersionUpdater\NoopChecker;
-
-class NoopCheckerTest extends \PHPUnit\Framework\TestCase
-{
-    public function testTheThings()
-    {
-        $checker = new NoopChecker();
-        $this->assertTrue($checker->isLatest());
-        $this->assertEquals(Shell::VERSION, $checker->getLatest());
-    }
-}
diff --git a/vendor/psy/psysh/test/fixtures/config.php b/vendor/psy/psysh/test/fixtures/config.php
deleted file mode 100644
index 4c74b79d02..0000000000
--- a/vendor/psy/psysh/test/fixtures/config.php
+++ /dev/null
@@ -1,20 +0,0 @@
-<?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.
- */
-
-$config->setRuntimeDir(\sys_get_temp_dir() . '/psysh_test/withconfig/temp');
-
-return [
-    'useReadline'       => true,
-    'usePcntl'          => false,
-    'requireSemicolons' => false,
-    'useUnicode'        => true,
-    'errorLoggingLevel' => E_ALL & ~E_NOTICE,
-];
diff --git a/vendor/psy/psysh/test/fixtures/default/.config/psysh/config.php b/vendor/psy/psysh/test/fixtures/default/.config/psysh/config.php
deleted file mode 100644
index b3d9bbc7f3..0000000000
--- a/vendor/psy/psysh/test/fixtures/default/.config/psysh/config.php
+++ /dev/null
@@ -1 +0,0 @@
-<?php
diff --git a/vendor/psy/psysh/test/fixtures/default/.config/psysh/psysh_history b/vendor/psy/psysh/test/fixtures/default/.config/psysh/psysh_history
deleted file mode 100644
index e69de29bb2..0000000000
diff --git a/vendor/psy/psysh/test/fixtures/default/.local/share/psysh/php_manual.sqlite b/vendor/psy/psysh/test/fixtures/default/.local/share/psysh/php_manual.sqlite
deleted file mode 100644
index e69de29bb2..0000000000
diff --git a/vendor/psy/psysh/test/fixtures/empty.php b/vendor/psy/psysh/test/fixtures/empty.php
deleted file mode 100644
index ba4e5784ce..0000000000
--- a/vendor/psy/psysh/test/fixtures/empty.php
+++ /dev/null
@@ -1,12 +0,0 @@
-<?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.
- */
-
-/* this space intentionally left blank */
diff --git a/vendor/psy/psysh/test/fixtures/legacy/.psysh/history b/vendor/psy/psysh/test/fixtures/legacy/.psysh/history
deleted file mode 100644
index e69de29bb2..0000000000
diff --git a/vendor/psy/psysh/test/fixtures/legacy/.psysh/php_manual.sqlite b/vendor/psy/psysh/test/fixtures/legacy/.psysh/php_manual.sqlite
deleted file mode 100644
index e69de29bb2..0000000000
diff --git a/vendor/psy/psysh/test/fixtures/legacy/.psysh/rc.php b/vendor/psy/psysh/test/fixtures/legacy/.psysh/rc.php
deleted file mode 100644
index b3d9bbc7f3..0000000000
--- a/vendor/psy/psysh/test/fixtures/legacy/.psysh/rc.php
+++ /dev/null
@@ -1 +0,0 @@
-<?php
diff --git a/vendor/psy/psysh/test/fixtures/mixed/.psysh/config.php b/vendor/psy/psysh/test/fixtures/mixed/.psysh/config.php
deleted file mode 100644
index b3d9bbc7f3..0000000000
--- a/vendor/psy/psysh/test/fixtures/mixed/.psysh/config.php
+++ /dev/null
@@ -1 +0,0 @@
-<?php
diff --git a/vendor/psy/psysh/test/fixtures/mixed/.psysh/psysh_history b/vendor/psy/psysh/test/fixtures/mixed/.psysh/psysh_history
deleted file mode 100644
index e69de29bb2..0000000000
diff --git a/vendor/psy/psysh/test/fixtures/mixed/.psysh/rc.php b/vendor/psy/psysh/test/fixtures/mixed/.psysh/rc.php
deleted file mode 100644
index b3d9bbc7f3..0000000000
--- a/vendor/psy/psysh/test/fixtures/mixed/.psysh/rc.php
+++ /dev/null
@@ -1 +0,0 @@
-<?php
diff --git a/vendor/psy/psysh/test/fixtures/project/.psysh.php b/vendor/psy/psysh/test/fixtures/project/.psysh.php
deleted file mode 100644
index 8ba668c812..0000000000
--- a/vendor/psy/psysh/test/fixtures/project/.psysh.php
+++ /dev/null
@@ -1,17 +0,0 @@
-<?php
-
-/*
- * This file is part of Psy Shell
- *
- * (c) 2012-2017 Justin Hileman
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-return array(
-    'useReadline'       => false,
-    'usePcntl'          => true,
-    'requireSemicolons' => true,
-    'useUnicode'        => false,
-);
diff --git a/vendor/psy/psysh/test/fixtures/unvis_fixtures.json b/vendor/psy/psysh/test/fixtures/unvis_fixtures.json
deleted file mode 100644
index 960fb02a13..0000000000
--- a/vendor/psy/psysh/test/fixtures/unvis_fixtures.json
+++ /dev/null
@@ -1 +0,0 @@
-[["", ""], ["\\^A", "\u0001"], ["\\^B", "\u0002"], ["\\^C", "\u0003"], ["\\^D", "\u0004"], ["\\^E", "\u0005"], ["\\^F", "\u0006"], ["\\^G", "\u0007"], ["\\^H", "\b"], ["\\^I", "\t"], ["\\^J", "\n"], ["\\^K", "\u000b"], ["\\^L", "\f"], ["\\^M", "\r"], ["\\^N", "\u000e"], ["\\^O", "\u000f"], ["\\^P", "\u0010"], ["\\^Q", "\u0011"], ["\\^R", "\u0012"], ["\\^S", "\u0013"], ["\\^T", "\u0014"], ["\\^U", "\u0015"], ["\\^V", "\u0016"], ["\\^W", "\u0017"], ["\\^X", "\u0018"], ["\\^Y", "\u0019"], ["\\^Z", "\u001a"], ["\\^[", "\u001b"], ["\\^\\", "\u001c"], ["\\^]", "\u001d"], ["\\^^", "\u001e"], ["\\^_", "\u001f"], ["\\040", " "], ["!", "!"], ["\"", "\""], ["#", "#"], ["$", "$"], ["%", "%"], ["&", "&"], ["'", "'"], ["(", "("], [")", ")"], ["*", "*"], ["+", "+"], [",", ","], ["-", "-"], [".", "."], ["/", "/"], ["0", "0"], ["1", "1"], ["2", "2"], ["3", "3"], ["4", "4"], ["5", "5"], ["6", "6"], ["7", "7"], ["8", "8"], ["9", "9"], [":", ":"], [";", ";"], ["<", "<"], ["=", "="], [">", ">"], ["?", "?"], ["@", "@"], ["A", "A"], ["B", "B"], ["C", "C"], ["D", "D"], ["E", "E"], ["F", "F"], ["G", "G"], ["H", "H"], ["I", "I"], ["J", "J"], ["K", "K"], ["L", "L"], ["M", "M"], ["N", "N"], ["O", "O"], ["P", "P"], ["Q", "Q"], ["R", "R"], ["S", "S"], ["T", "T"], ["U", "U"], ["V", "V"], ["W", "W"], ["X", "X"], ["Y", "Y"], ["Z", "Z"], ["[", "["], ["\\\\", "\\"], ["]", "]"], ["^", "^"], ["_", "_"], ["`", "`"], ["a", "a"], ["b", "b"], ["c", "c"], ["d", "d"], ["e", "e"], ["f", "f"], ["g", "g"], ["h", "h"], ["i", "i"], ["j", "j"], ["k", "k"], ["l", "l"], ["m", "m"], ["n", "n"], ["o", "o"], ["p", "p"], ["q", "q"], ["r", "r"], ["s", "s"], ["t", "t"], ["u", "u"], ["v", "v"], ["w", "w"], ["x", "x"], ["y", "y"], ["z", "z"], ["{", "{"], ["|", "|"], ["}", "}"], ["~", "~"], ["\\^?", "\u007f"], ["\\M-B\\M^@", "\u0080"], ["\\M-B\\M^A", "\u0081"], ["\\M-B\\M^B", "\u0082"], ["\\M-B\\M^C", "\u0083"], ["\\M-B\\M^D", "\u0084"], ["\\M-B\\M^E", "\u0085"], ["\\M-B\\M^F", "\u0086"], ["\\M-B\\M^G", "\u0087"], ["\\M-B\\M^H", "\u0088"], ["\\M-B\\M^I", "\u0089"], ["\\M-B\\M^J", "\u008a"], ["\\M-B\\M^K", "\u008b"], ["\\M-B\\M^L", "\u008c"], ["\\M-B\\M^M", "\u008d"], ["\\M-B\\M^N", "\u008e"], ["\\M-B\\M^O", "\u008f"], ["\\M-B\\M^P", "\u0090"], ["\\M-B\\M^Q", "\u0091"], ["\\M-B\\M^R", "\u0092"], ["\\M-B\\M^S", "\u0093"], ["\\M-B\\M^T", "\u0094"], ["\\M-B\\M^U", "\u0095"], ["\\M-B\\M^V", "\u0096"], ["\\M-B\\M^W", "\u0097"], ["\\M-B\\M^X", "\u0098"], ["\\M-B\\M^Y", "\u0099"], ["\\M-B\\M^Z", "\u009a"], ["\\M-B\\M^[", "\u009b"], ["\\M-B\\M^\\", "\u009c"], ["\\M-B\\M^]", "\u009d"], ["\\M-B\\M^^", "\u009e"], ["\\M-B\\M^_", "\u009f"], ["\\M-B\\240", "\u00a0"], ["\\M-B\\M-!", "\u00a1"], ["\\M-B\\M-\"", "\u00a2"], ["\\M-B\\M-#", "\u00a3"], ["\\M-B\\M-$", "\u00a4"], ["\\M-B\\M-%", "\u00a5"], ["\\M-B\\M-&", "\u00a6"], ["\\M-B\\M-'", "\u00a7"], ["\\M-B\\M-(", "\u00a8"], ["\\M-B\\M-)", "\u00a9"], ["\\M-B\\M-*", "\u00aa"], ["\\M-B\\M-+", "\u00ab"], ["\\M-B\\M-,", "\u00ac"], ["\\M-B\\M--", "\u00ad"], ["\\M-B\\M-.", "\u00ae"], ["\\M-B\\M-/", "\u00af"], ["\\M-B\\M-0", "\u00b0"], ["\\M-B\\M-1", "\u00b1"], ["\\M-B\\M-2", "\u00b2"], ["\\M-B\\M-3", "\u00b3"], ["\\M-B\\M-4", "\u00b4"], ["\\M-B\\M-5", "\u00b5"], ["\\M-B\\M-6", "\u00b6"], ["\\M-B\\M-7", "\u00b7"], ["\\M-B\\M-8", "\u00b8"], ["\\M-B\\M-9", "\u00b9"], ["\\M-B\\M-:", "\u00ba"], ["\\M-B\\M-;", "\u00bb"], ["\\M-B\\M-<", "\u00bc"], ["\\M-B\\M-=", "\u00bd"], ["\\M-B\\M->", "\u00be"], ["\\M-B\\M-?", "\u00bf"], ["\\M-C\\M^@", "\u00c0"], ["\\M-C\\M^A", "\u00c1"], ["\\M-C\\M^B", "\u00c2"], ["\\M-C\\M^C", "\u00c3"], ["\\M-C\\M^D", "\u00c4"], ["\\M-C\\M^E", "\u00c5"], ["\\M-C\\M^F", "\u00c6"], ["\\M-C\\M^G", "\u00c7"], ["\\M-C\\M^H", "\u00c8"], ["\\M-C\\M^I", "\u00c9"], ["\\M-C\\M^J", "\u00ca"], ["\\M-C\\M^K", "\u00cb"], ["\\M-C\\M^L", "\u00cc"], ["\\M-C\\M^M", "\u00cd"], ["\\M-C\\M^N", "\u00ce"], ["\\M-C\\M^O", "\u00cf"], ["\\M-C\\M^P", "\u00d0"], ["\\M-C\\M^Q", "\u00d1"], ["\\M-C\\M^R", "\u00d2"], ["\\M-C\\M^S", "\u00d3"], ["\\M-C\\M^T", "\u00d4"], ["\\M-C\\M^U", "\u00d5"], ["\\M-C\\M^V", "\u00d6"], ["\\M-C\\M^W", "\u00d7"], ["\\M-C\\M^X", "\u00d8"], ["\\M-C\\M^Y", "\u00d9"], ["\\M-C\\M^Z", "\u00da"], ["\\M-C\\M^[", "\u00db"], ["\\M-C\\M^\\", "\u00dc"], ["\\M-C\\M^]", "\u00dd"], ["\\M-C\\M^^", "\u00de"], ["\\M-C\\M^_", "\u00df"], ["\\M-C\\240", "\u00e0"], ["\\M-C\\M-!", "\u00e1"], ["\\M-C\\M-\"", "\u00e2"], ["\\M-C\\M-#", "\u00e3"], ["\\M-C\\M-$", "\u00e4"], ["\\M-C\\M-%", "\u00e5"], ["\\M-C\\M-&", "\u00e6"], ["\\M-C\\M-'", "\u00e7"], ["\\M-C\\M-(", "\u00e8"], ["\\M-C\\M-)", "\u00e9"], ["\\M-C\\M-*", "\u00ea"], ["\\M-C\\M-+", "\u00eb"], ["\\M-C\\M-,", "\u00ec"], ["\\M-C\\M--", "\u00ed"], ["\\M-C\\M-.", "\u00ee"], ["\\M-C\\M-/", "\u00ef"], ["\\M-C\\M-0", "\u00f0"], ["\\M-C\\M-1", "\u00f1"], ["\\M-C\\M-2", "\u00f2"], ["\\M-C\\M-3", "\u00f3"], ["\\M-C\\M-4", "\u00f4"], ["\\M-C\\M-5", "\u00f5"], ["\\M-C\\M-6", "\u00f6"], ["\\M-C\\M-7", "\u00f7"], ["\\M-C\\M-8", "\u00f8"], ["\\M-C\\M-9", "\u00f9"], ["\\M-C\\M-:", "\u00fa"], ["\\M-C\\M-;", "\u00fb"], ["\\M-C\\M-<", "\u00fc"], ["\\M-C\\M-=", "\u00fd"], ["\\M-C\\M->", "\u00fe"], ["\\M-C\\M-?", "\u00ff"], ["\\M-D\\M^@", "\u0100"], ["\\M-D\\M^A", "\u0101"], ["\\M-D\\M^B", "\u0102"], ["\\M-D\\M^C", "\u0103"], ["\\M-D\\M^D", "\u0104"], ["\\M-D\\M^E", "\u0105"], ["\\M-D\\M^F", "\u0106"], ["\\M-D\\M^G", "\u0107"], ["\\M-D\\M^H", "\u0108"], ["\\M-D\\M^I", "\u0109"], ["\\M-D\\M^J", "\u010a"], ["\\M-D\\M^K", "\u010b"], ["\\M-D\\M^L", "\u010c"], ["\\M-D\\M^M", "\u010d"], ["\\M-D\\M^N", "\u010e"], ["\\M-D\\M^O", "\u010f"], ["\\M-D\\M^P", "\u0110"], ["\\M-D\\M^Q", "\u0111"], ["\\M-D\\M^R", "\u0112"], ["\\M-D\\M^S", "\u0113"], ["\\M-D\\M^T", "\u0114"], ["\\M-D\\M^U", "\u0115"], ["\\M-D\\M^V", "\u0116"], ["\\M-D\\M^W", "\u0117"], ["\\M-D\\M^X", "\u0118"], ["\\M-D\\M^Y", "\u0119"], ["\\M-D\\M^Z", "\u011a"], ["\\M-D\\M^[", "\u011b"], ["\\M-D\\M^\\", "\u011c"], ["\\M-D\\M^]", "\u011d"], ["\\M-D\\M^^", "\u011e"], ["\\M-D\\M^_", "\u011f"], ["\\M-D\\240", "\u0120"], ["\\M-D\\M-!", "\u0121"], ["\\M-D\\M-\"", "\u0122"], ["\\M-D\\M-#", "\u0123"], ["\\M-D\\M-$", "\u0124"], ["\\M-D\\M-%", "\u0125"], ["\\M-D\\M-&", "\u0126"], ["\\M-D\\M-'", "\u0127"], ["\\M-D\\M-(", "\u0128"], ["\\M-D\\M-)", "\u0129"], ["\\M-D\\M-*", "\u012a"], ["\\M-D\\M-+", "\u012b"], ["\\M-D\\M-,", "\u012c"], ["\\M-D\\M--", "\u012d"], ["\\M-D\\M-.", "\u012e"], ["\\M-D\\M-/", "\u012f"], ["\\M-D\\M-0", "\u0130"], ["\\M-D\\M-1", "\u0131"], ["\\M-D\\M-2", "\u0132"], ["\\M-D\\M-3", "\u0133"], ["\\M-D\\M-4", "\u0134"], ["\\M-D\\M-5", "\u0135"], ["\\M-D\\M-6", "\u0136"], ["\\M-D\\M-7", "\u0137"], ["\\M-D\\M-8", "\u0138"], ["\\M-D\\M-9", "\u0139"], ["\\M-D\\M-:", "\u013a"], ["\\M-D\\M-;", "\u013b"], ["\\M-D\\M-<", "\u013c"], ["\\M-D\\M-=", "\u013d"], ["\\M-D\\M->", "\u013e"], ["\\M-D\\M-?", "\u013f"], ["\\M-E\\M^@", "\u0140"], ["\\M-E\\M^A", "\u0141"], ["\\M-E\\M^B", "\u0142"], ["\\M-E\\M^C", "\u0143"], ["\\M-E\\M^D", "\u0144"], ["\\M-E\\M^E", "\u0145"], ["\\M-E\\M^F", "\u0146"], ["\\M-E\\M^G", "\u0147"], ["\\M-E\\M^H", "\u0148"], ["\\M-E\\M^I", "\u0149"], ["\\M-E\\M^J", "\u014a"], ["\\M-E\\M^K", "\u014b"], ["\\M-E\\M^L", "\u014c"], ["\\M-E\\M^M", "\u014d"], ["\\M-E\\M^N", "\u014e"], ["\\M-E\\M^O", "\u014f"], ["\\M-E\\M^P", "\u0150"], ["\\M-E\\M^Q", "\u0151"], ["\\M-E\\M^R", "\u0152"], ["\\M-E\\M^S", "\u0153"], ["\\M-E\\M^T", "\u0154"], ["\\M-E\\M^U", "\u0155"], ["\\M-E\\M^V", "\u0156"], ["\\M-E\\M^W", "\u0157"], ["\\M-E\\M^X", "\u0158"], ["\\M-E\\M^Y", "\u0159"], ["\\M-E\\M^Z", "\u015a"], ["\\M-E\\M^[", "\u015b"], ["\\M-E\\M^\\", "\u015c"], ["\\M-E\\M^]", "\u015d"], ["\\M-E\\M^^", "\u015e"], ["\\M-E\\M^_", "\u015f"], ["\\M-E\\240", "\u0160"], ["\\M-E\\M-!", "\u0161"], ["\\M-E\\M-\"", "\u0162"], ["\\M-E\\M-#", "\u0163"], ["\\M-E\\M-$", "\u0164"], ["\\M-E\\M-%", "\u0165"], ["\\M-E\\M-&", "\u0166"], ["\\M-E\\M-'", "\u0167"], ["\\M-E\\M-(", "\u0168"], ["\\M-E\\M-)", "\u0169"], ["\\M-E\\M-*", "\u016a"], ["\\M-E\\M-+", "\u016b"], ["\\M-E\\M-,", "\u016c"], ["\\M-E\\M--", "\u016d"], ["\\M-E\\M-.", "\u016e"], ["\\M-E\\M-/", "\u016f"], ["\\M-E\\M-0", "\u0170"], ["\\M-E\\M-1", "\u0171"], ["\\M-E\\M-2", "\u0172"], ["\\M-E\\M-3", "\u0173"], ["\\M-E\\M-4", "\u0174"], ["\\M-E\\M-5", "\u0175"], ["\\M-E\\M-6", "\u0176"], ["\\M-E\\M-7", "\u0177"], ["\\M-E\\M-8", "\u0178"], ["\\M-E\\M-9", "\u0179"], ["\\M-E\\M-:", "\u017a"], ["\\M-E\\M-;", "\u017b"], ["\\M-E\\M-<", "\u017c"], ["\\M-E\\M-=", "\u017d"], ["\\M-E\\M->", "\u017e"], ["\\M-E\\M-?", "\u017f"], ["\\M-F\\M^@", "\u0180"], ["\\M-F\\M^A", "\u0181"], ["\\M-F\\M^B", "\u0182"], ["\\M-F\\M^C", "\u0183"], ["\\M-F\\M^D", "\u0184"], ["\\M-F\\M^E", "\u0185"], ["\\M-F\\M^F", "\u0186"], ["\\M-F\\M^G", "\u0187"], ["\\M-F\\M^H", "\u0188"], ["\\M-F\\M^I", "\u0189"], ["\\M-F\\M^J", "\u018a"], ["\\M-F\\M^K", "\u018b"], ["\\M-F\\M^L", "\u018c"], ["\\M-F\\M^M", "\u018d"], ["\\M-F\\M^N", "\u018e"], ["\\M-F\\M^O", "\u018f"], ["\\M-F\\M^P", "\u0190"], ["\\M-F\\M^Q", "\u0191"], ["\\M-F\\M^R", "\u0192"], ["\\M-F\\M^S", "\u0193"], ["\\M-F\\M^T", "\u0194"], ["\\M-F\\M^U", "\u0195"], ["\\M-F\\M^V", "\u0196"], ["\\M-F\\M^W", "\u0197"], ["\\M-F\\M^X", "\u0198"], ["\\M-F\\M^Y", "\u0199"], ["\\M-F\\M^Z", "\u019a"], ["\\M-F\\M^[", "\u019b"], ["\\M-F\\M^\\", "\u019c"], ["\\M-F\\M^]", "\u019d"], ["\\M-F\\M^^", "\u019e"], ["\\M-F\\M^_", "\u019f"], ["\\M-F\\240", "\u01a0"], ["\\M-F\\M-!", "\u01a1"], ["\\M-F\\M-\"", "\u01a2"], ["\\M-F\\M-#", "\u01a3"], ["\\M-F\\M-$", "\u01a4"], ["\\M-F\\M-%", "\u01a5"], ["\\M-F\\M-&", "\u01a6"], ["\\M-F\\M-'", "\u01a7"], ["\\M-F\\M-(", "\u01a8"], ["\\M-F\\M-)", "\u01a9"], ["\\M-F\\M-*", "\u01aa"], ["\\M-F\\M-+", "\u01ab"], ["\\M-F\\M-,", "\u01ac"], ["\\M-F\\M--", "\u01ad"], ["\\M-F\\M-.", "\u01ae"], ["\\M-F\\M-/", "\u01af"], ["\\M-F\\M-0", "\u01b0"], ["\\M-F\\M-1", "\u01b1"], ["\\M-F\\M-2", "\u01b2"], ["\\M-F\\M-3", "\u01b3"], ["\\M-F\\M-4", "\u01b4"], ["\\M-F\\M-5", "\u01b5"], ["\\M-F\\M-6", "\u01b6"], ["\\M-F\\M-7", "\u01b7"], ["\\M-F\\M-8", "\u01b8"], ["\\M-F\\M-9", "\u01b9"], ["\\M-F\\M-:", "\u01ba"], ["\\M-F\\M-;", "\u01bb"], ["\\M-F\\M-<", "\u01bc"], ["\\M-F\\M-=", "\u01bd"], ["\\M-F\\M->", "\u01be"], ["\\M-F\\M-?", "\u01bf"], ["\\M-G\\M^@", "\u01c0"], ["\\M-G\\M^A", "\u01c1"], ["\\M-G\\M^B", "\u01c2"], ["\\M-G\\M^C", "\u01c3"], ["\\M-G\\M^D", "\u01c4"], ["\\M-G\\M^E", "\u01c5"], ["\\M-G\\M^F", "\u01c6"], ["\\M-G\\M^G", "\u01c7"], ["\\M-G\\M^H", "\u01c8"], ["\\M-G\\M^I", "\u01c9"], ["\\M-G\\M^J", "\u01ca"], ["\\M-G\\M^K", "\u01cb"], ["\\M-G\\M^L", "\u01cc"], ["\\M-G\\M^M", "\u01cd"], ["\\M-G\\M^N", "\u01ce"], ["\\M-G\\M^O", "\u01cf"], ["\\M-G\\M^P", "\u01d0"], ["\\M-G\\M^Q", "\u01d1"], ["\\M-G\\M^R", "\u01d2"], ["\\M-G\\M^S", "\u01d3"], ["\\M-G\\M^T", "\u01d4"], ["\\M-G\\M^U", "\u01d5"], ["\\M-G\\M^V", "\u01d6"], ["\\M-G\\M^W", "\u01d7"], ["\\M-G\\M^X", "\u01d8"], ["\\M-G\\M^Y", "\u01d9"], ["\\M-G\\M^Z", "\u01da"], ["\\M-G\\M^[", "\u01db"], ["\\M-G\\M^\\", "\u01dc"], ["\\M-G\\M^]", "\u01dd"], ["\\M-G\\M^^", "\u01de"], ["\\M-G\\M^_", "\u01df"], ["\\M-G\\240", "\u01e0"], ["\\M-G\\M-!", "\u01e1"], ["\\M-G\\M-\"", "\u01e2"], ["\\M-G\\M-#", "\u01e3"], ["\\M-G\\M-$", "\u01e4"], ["\\M-G\\M-%", "\u01e5"], ["\\M-G\\M-&", "\u01e6"], ["\\M-G\\M-'", "\u01e7"], ["\\M-G\\M-(", "\u01e8"], ["\\M-G\\M-)", "\u01e9"], ["\\M-G\\M-*", "\u01ea"], ["\\M-G\\M-+", "\u01eb"], ["\\M-G\\M-,", "\u01ec"], ["\\M-G\\M--", "\u01ed"], ["\\M-G\\M-.", "\u01ee"], ["\\M-G\\M-/", "\u01ef"], ["\\M-G\\M-0", "\u01f0"], ["\\M-G\\M-1", "\u01f1"], ["\\M-G\\M-2", "\u01f2"], ["\\M-G\\M-3", "\u01f3"], ["\\M-G\\M-4", "\u01f4"], ["\\M-G\\M-5", "\u01f5"], ["\\M-G\\M-6", "\u01f6"], ["\\M-G\\M-7", "\u01f7"], ["\\M-G\\M-8", "\u01f8"], ["\\M-G\\M-9", "\u01f9"], ["\\M-G\\M-:", "\u01fa"], ["\\M-G\\M-;", "\u01fb"], ["\\M-G\\M-<", "\u01fc"], ["\\M-G\\M-=", "\u01fd"], ["\\M-G\\M->", "\u01fe"], ["\\M-G\\M-?", "\u01ff"], ["\\M-H\\M^@", "\u0200"], ["\\M-H\\M^A", "\u0201"], ["\\M-H\\M^B", "\u0202"], ["\\M-H\\M^C", "\u0203"], ["\\M-H\\M^D", "\u0204"], ["\\M-H\\M^E", "\u0205"], ["\\M-H\\M^F", "\u0206"], ["\\M-H\\M^G", "\u0207"], ["\\M-H\\M^H", "\u0208"], ["\\M-H\\M^I", "\u0209"], ["\\M-H\\M^J", "\u020a"], ["\\M-H\\M^K", "\u020b"], ["\\M-H\\M^L", "\u020c"], ["\\M-H\\M^M", "\u020d"], ["\\M-H\\M^N", "\u020e"], ["\\M-H\\M^O", "\u020f"], ["\\M-H\\M^P", "\u0210"], ["\\M-H\\M^Q", "\u0211"], ["\\M-H\\M^R", "\u0212"], ["\\M-H\\M^S", "\u0213"], ["\\M-H\\M^T", "\u0214"], ["\\M-H\\M^U", "\u0215"], ["\\M-H\\M^V", "\u0216"], ["\\M-H\\M^W", "\u0217"], ["\\M-H\\M^X", "\u0218"], ["\\M-H\\M^Y", "\u0219"], ["\\M-H\\M^Z", "\u021a"], ["\\M-H\\M^[", "\u021b"], ["\\M-H\\M^\\", "\u021c"], ["\\M-H\\M^]", "\u021d"], ["\\M-H\\M^^", "\u021e"], ["\\M-H\\M^_", "\u021f"], ["\\M-H\\240", "\u0220"], ["\\M-H\\M-!", "\u0221"], ["\\M-H\\M-\"", "\u0222"], ["\\M-H\\M-#", "\u0223"], ["\\M-H\\M-$", "\u0224"], ["\\M-H\\M-%", "\u0225"], ["\\M-H\\M-&", "\u0226"], ["\\M-H\\M-'", "\u0227"], ["\\M-H\\M-(", "\u0228"], ["\\M-H\\M-)", "\u0229"], ["\\M-H\\M-*", "\u022a"], ["\\M-H\\M-+", "\u022b"], ["\\M-H\\M-,", "\u022c"], ["\\M-H\\M--", "\u022d"], ["\\M-H\\M-.", "\u022e"], ["\\M-H\\M-/", "\u022f"], ["\\M-H\\M-0", "\u0230"], ["\\M-H\\M-1", "\u0231"], ["\\M-H\\M-2", "\u0232"], ["\\M-H\\M-3", "\u0233"], ["\\M-H\\M-4", "\u0234"], ["\\M-H\\M-5", "\u0235"], ["\\M-H\\M-6", "\u0236"], ["\\M-H\\M-7", "\u0237"], ["\\M-H\\M-8", "\u0238"], ["\\M-H\\M-9", "\u0239"], ["\\M-H\\M-:", "\u023a"], ["\\M-H\\M-;", "\u023b"], ["\\M-H\\M-<", "\u023c"], ["\\M-H\\M-=", "\u023d"], ["\\M-H\\M->", "\u023e"], ["\\M-H\\M-?", "\u023f"], ["\\M-I\\M^@", "\u0240"], ["\\M-I\\M^A", "\u0241"], ["\\M-I\\M^B", "\u0242"], ["\\M-I\\M^C", "\u0243"], ["\\M-I\\M^D", "\u0244"], ["\\M-I\\M^E", "\u0245"], ["\\M-I\\M^F", "\u0246"], ["\\M-I\\M^G", "\u0247"], ["\\M-I\\M^H", "\u0248"], ["\\M-I\\M^I", "\u0249"], ["\\M-I\\M^J", "\u024a"], ["\\M-I\\M^K", "\u024b"], ["\\M-I\\M^L", "\u024c"], ["\\M-I\\M^M", "\u024d"], ["\\M-I\\M^N", "\u024e"], ["\\M-I\\M^O", "\u024f"], ["\\M-M\\M-0", "\u0370"], ["\\M-M\\M-1", "\u0371"], ["\\M-M\\M-2", "\u0372"], ["\\M-M\\M-3", "\u0373"], ["\\M-M\\M-4", "\u0374"], ["\\M-M\\M-5", "\u0375"], ["\\M-M\\M-6", "\u0376"], ["\\M-M\\M-7", "\u0377"], ["\\M-M\\M-8", "\u0378"], ["\\M-M\\M-9", "\u0379"], ["\\M-M\\M-:", "\u037a"], ["\\M-M\\M-;", "\u037b"], ["\\M-M\\M-<", "\u037c"], ["\\M-M\\M-=", "\u037d"], ["\\M-M\\M->", "\u037e"], ["\\M-M\\M-?", "\u037f"], ["\\M-N\\M^@", "\u0380"], ["\\M-N\\M^A", "\u0381"], ["\\M-N\\M^B", "\u0382"], ["\\M-N\\M^C", "\u0383"], ["\\M-N\\M^D", "\u0384"], ["\\M-N\\M^E", "\u0385"], ["\\M-N\\M^F", "\u0386"], ["\\M-N\\M^G", "\u0387"], ["\\M-N\\M^H", "\u0388"], ["\\M-N\\M^I", "\u0389"], ["\\M-N\\M^J", "\u038a"], ["\\M-N\\M^K", "\u038b"], ["\\M-N\\M^L", "\u038c"], ["\\M-N\\M^M", "\u038d"], ["\\M-N\\M^N", "\u038e"], ["\\M-N\\M^O", "\u038f"], ["\\M-N\\M^P", "\u0390"], ["\\M-N\\M^Q", "\u0391"], ["\\M-N\\M^R", "\u0392"], ["\\M-N\\M^S", "\u0393"], ["\\M-N\\M^T", "\u0394"], ["\\M-N\\M^U", "\u0395"], ["\\M-N\\M^V", "\u0396"], ["\\M-N\\M^W", "\u0397"], ["\\M-N\\M^X", "\u0398"], ["\\M-N\\M^Y", "\u0399"], ["\\M-N\\M^Z", "\u039a"], ["\\M-N\\M^[", "\u039b"], ["\\M-N\\M^\\", "\u039c"], ["\\M-N\\M^]", "\u039d"], ["\\M-N\\M^^", "\u039e"], ["\\M-N\\M^_", "\u039f"], ["\\M-N\\240", "\u03a0"], ["\\M-N\\M-!", "\u03a1"], ["\\M-N\\M-\"", "\u03a2"], ["\\M-N\\M-#", "\u03a3"], ["\\M-N\\M-$", "\u03a4"], ["\\M-N\\M-%", "\u03a5"], ["\\M-N\\M-&", "\u03a6"], ["\\M-N\\M-'", "\u03a7"], ["\\M-N\\M-(", "\u03a8"], ["\\M-N\\M-)", "\u03a9"], ["\\M-N\\M-*", "\u03aa"], ["\\M-N\\M-+", "\u03ab"], ["\\M-N\\M-,", "\u03ac"], ["\\M-N\\M--", "\u03ad"], ["\\M-N\\M-.", "\u03ae"], ["\\M-N\\M-/", "\u03af"], ["\\M-N\\M-0", "\u03b0"], ["\\M-N\\M-1", "\u03b1"], ["\\M-N\\M-2", "\u03b2"], ["\\M-N\\M-3", "\u03b3"], ["\\M-N\\M-4", "\u03b4"], ["\\M-N\\M-5", "\u03b5"], ["\\M-N\\M-6", "\u03b6"], ["\\M-N\\M-7", "\u03b7"], ["\\M-N\\M-8", "\u03b8"], ["\\M-N\\M-9", "\u03b9"], ["\\M-N\\M-:", "\u03ba"], ["\\M-N\\M-;", "\u03bb"], ["\\M-N\\M-<", "\u03bc"], ["\\M-N\\M-=", "\u03bd"], ["\\M-N\\M->", "\u03be"], ["\\M-N\\M-?", "\u03bf"], ["\\M-O\\M^@", "\u03c0"], ["\\M-O\\M^A", "\u03c1"], ["\\M-O\\M^B", "\u03c2"], ["\\M-O\\M^C", "\u03c3"], ["\\M-O\\M^D", "\u03c4"], ["\\M-O\\M^E", "\u03c5"], ["\\M-O\\M^F", "\u03c6"], ["\\M-O\\M^G", "\u03c7"], ["\\M-O\\M^H", "\u03c8"], ["\\M-O\\M^I", "\u03c9"], ["\\M-O\\M^J", "\u03ca"], ["\\M-O\\M^K", "\u03cb"], ["\\M-O\\M^L", "\u03cc"], ["\\M-O\\M^M", "\u03cd"], ["\\M-O\\M^N", "\u03ce"], ["\\M-O\\M^O", "\u03cf"], ["\\M-O\\M^P", "\u03d0"], ["\\M-O\\M^Q", "\u03d1"], ["\\M-O\\M^R", "\u03d2"], ["\\M-O\\M^S", "\u03d3"], ["\\M-O\\M^T", "\u03d4"], ["\\M-O\\M^U", "\u03d5"], ["\\M-O\\M^V", "\u03d6"], ["\\M-O\\M^W", "\u03d7"], ["\\M-O\\M^X", "\u03d8"], ["\\M-O\\M^Y", "\u03d9"], ["\\M-O\\M^Z", "\u03da"], ["\\M-O\\M^[", "\u03db"], ["\\M-O\\M^\\", "\u03dc"], ["\\M-O\\M^]", "\u03dd"], ["\\M-O\\M^^", "\u03de"], ["\\M-O\\M^_", "\u03df"], ["\\M-O\\240", "\u03e0"], ["\\M-O\\M-!", "\u03e1"], ["\\M-O\\M-\"", "\u03e2"], ["\\M-O\\M-#", "\u03e3"], ["\\M-O\\M-$", "\u03e4"], ["\\M-O\\M-%", "\u03e5"], ["\\M-O\\M-&", "\u03e6"], ["\\M-O\\M-'", "\u03e7"], ["\\M-O\\M-(", "\u03e8"], ["\\M-O\\M-)", "\u03e9"], ["\\M-O\\M-*", "\u03ea"], ["\\M-O\\M-+", "\u03eb"], ["\\M-O\\M-,", "\u03ec"], ["\\M-O\\M--", "\u03ed"], ["\\M-O\\M-.", "\u03ee"], ["\\M-O\\M-/", "\u03ef"], ["\\M-O\\M-0", "\u03f0"], ["\\M-O\\M-1", "\u03f1"], ["\\M-O\\M-2", "\u03f2"], ["\\M-O\\M-3", "\u03f3"], ["\\M-O\\M-4", "\u03f4"], ["\\M-O\\M-5", "\u03f5"], ["\\M-O\\M-6", "\u03f6"], ["\\M-O\\M-7", "\u03f7"], ["\\M-O\\M-8", "\u03f8"], ["\\M-O\\M-9", "\u03f9"], ["\\M-O\\M-:", "\u03fa"], ["\\M-O\\M-;", "\u03fb"], ["\\M-O\\M-<", "\u03fc"], ["\\M-O\\M-=", "\u03fd"], ["\\M-O\\M->", "\u03fe"], ["\\M-O\\M-?", "\u03ff"], ["\\M-P\\M^@", "\u0400"], ["\\M-P\\M^A", "\u0401"], ["\\M-P\\M^B", "\u0402"], ["\\M-P\\M^C", "\u0403"], ["\\M-P\\M^D", "\u0404"], ["\\M-P\\M^E", "\u0405"], ["\\M-P\\M^F", "\u0406"], ["\\M-P\\M^G", "\u0407"], ["\\M-P\\M^H", "\u0408"], ["\\M-P\\M^I", "\u0409"], ["\\M-P\\M^J", "\u040a"], ["\\M-P\\M^K", "\u040b"], ["\\M-P\\M^L", "\u040c"], ["\\M-P\\M^M", "\u040d"], ["\\M-P\\M^N", "\u040e"], ["\\M-P\\M^O", "\u040f"], ["\\M-P\\M^P", "\u0410"], ["\\M-P\\M^Q", "\u0411"], ["\\M-P\\M^R", "\u0412"], ["\\M-P\\M^S", "\u0413"], ["\\M-P\\M^T", "\u0414"], ["\\M-P\\M^U", "\u0415"], ["\\M-P\\M^V", "\u0416"], ["\\M-P\\M^W", "\u0417"], ["\\M-P\\M^X", "\u0418"], ["\\M-P\\M^Y", "\u0419"], ["\\M-P\\M^Z", "\u041a"], ["\\M-P\\M^[", "\u041b"], ["\\M-P\\M^\\", "\u041c"], ["\\M-P\\M^]", "\u041d"], ["\\M-P\\M^^", "\u041e"], ["\\M-P\\M^_", "\u041f"], ["\\M-P\\240", "\u0420"], ["\\M-P\\M-!", "\u0421"], ["\\M-P\\M-\"", "\u0422"], ["\\M-P\\M-#", "\u0423"], ["\\M-P\\M-$", "\u0424"], ["\\M-P\\M-%", "\u0425"], ["\\M-P\\M-&", "\u0426"], ["\\M-P\\M-'", "\u0427"], ["\\M-P\\M-(", "\u0428"], ["\\M-P\\M-)", "\u0429"], ["\\M-P\\M-*", "\u042a"], ["\\M-P\\M-+", "\u042b"], ["\\M-P\\M-,", "\u042c"], ["\\M-P\\M--", "\u042d"], ["\\M-P\\M-.", "\u042e"], ["\\M-P\\M-/", "\u042f"], ["\\M-P\\M-0", "\u0430"], ["\\M-P\\M-1", "\u0431"], ["\\M-P\\M-2", "\u0432"], ["\\M-P\\M-3", "\u0433"], ["\\M-P\\M-4", "\u0434"], ["\\M-P\\M-5", "\u0435"], ["\\M-P\\M-6", "\u0436"], ["\\M-P\\M-7", "\u0437"], ["\\M-P\\M-8", "\u0438"], ["\\M-P\\M-9", "\u0439"], ["\\M-P\\M-:", "\u043a"], ["\\M-P\\M-;", "\u043b"], ["\\M-P\\M-<", "\u043c"], ["\\M-P\\M-=", "\u043d"], ["\\M-P\\M->", "\u043e"], ["\\M-P\\M-?", "\u043f"], ["\\M-Q\\M^@", "\u0440"], ["\\M-Q\\M^A", "\u0441"], ["\\M-Q\\M^B", "\u0442"], ["\\M-Q\\M^C", "\u0443"], ["\\M-Q\\M^D", "\u0444"], ["\\M-Q\\M^E", "\u0445"], ["\\M-Q\\M^F", "\u0446"], ["\\M-Q\\M^G", "\u0447"], ["\\M-Q\\M^H", "\u0448"], ["\\M-Q\\M^I", "\u0449"], ["\\M-Q\\M^J", "\u044a"], ["\\M-Q\\M^K", "\u044b"], ["\\M-Q\\M^L", "\u044c"], ["\\M-Q\\M^M", "\u044d"], ["\\M-Q\\M^N", "\u044e"], ["\\M-Q\\M^O", "\u044f"], ["\\M-Q\\M^P", "\u0450"], ["\\M-Q\\M^Q", "\u0451"], ["\\M-Q\\M^R", "\u0452"], ["\\M-Q\\M^S", "\u0453"], ["\\M-Q\\M^T", "\u0454"], ["\\M-Q\\M^U", "\u0455"], ["\\M-Q\\M^V", "\u0456"], ["\\M-Q\\M^W", "\u0457"], ["\\M-Q\\M^X", "\u0458"], ["\\M-Q\\M^Y", "\u0459"], ["\\M-Q\\M^Z", "\u045a"], ["\\M-Q\\M^[", "\u045b"], ["\\M-Q\\M^\\", "\u045c"], ["\\M-Q\\M^]", "\u045d"], ["\\M-Q\\M^^", "\u045e"], ["\\M-Q\\M^_", "\u045f"], ["\\M-Q\\240", "\u0460"], ["\\M-Q\\M-!", "\u0461"], ["\\M-Q\\M-\"", "\u0462"], ["\\M-Q\\M-#", "\u0463"], ["\\M-Q\\M-$", "\u0464"], ["\\M-Q\\M-%", "\u0465"], ["\\M-Q\\M-&", "\u0466"], ["\\M-Q\\M-'", "\u0467"], ["\\M-Q\\M-(", "\u0468"], ["\\M-Q\\M-)", "\u0469"], ["\\M-Q\\M-*", "\u046a"], ["\\M-Q\\M-+", "\u046b"], ["\\M-Q\\M-,", "\u046c"], ["\\M-Q\\M--", "\u046d"], ["\\M-Q\\M-.", "\u046e"], ["\\M-Q\\M-/", "\u046f"], ["\\M-Q\\M-0", "\u0470"], ["\\M-Q\\M-1", "\u0471"], ["\\M-Q\\M-2", "\u0472"], ["\\M-Q\\M-3", "\u0473"], ["\\M-Q\\M-4", "\u0474"], ["\\M-Q\\M-5", "\u0475"], ["\\M-Q\\M-6", "\u0476"], ["\\M-Q\\M-7", "\u0477"], ["\\M-Q\\M-8", "\u0478"], ["\\M-Q\\M-9", "\u0479"], ["\\M-Q\\M-:", "\u047a"], ["\\M-Q\\M-;", "\u047b"], ["\\M-Q\\M-<", "\u047c"], ["\\M-Q\\M-=", "\u047d"], ["\\M-Q\\M->", "\u047e"], ["\\M-Q\\M-?", "\u047f"], ["\\M-R\\M^@", "\u0480"], ["\\M-R\\M^A", "\u0481"], ["\\M-R\\M^B", "\u0482"], ["\\M-R\\M^C", "\u0483"], ["\\M-R\\M^D", "\u0484"], ["\\M-R\\M^E", "\u0485"], ["\\M-R\\M^F", "\u0486"], ["\\M-R\\M^G", "\u0487"], ["\\M-R\\M^H", "\u0488"], ["\\M-R\\M^I", "\u0489"], ["\\M-R\\M^J", "\u048a"], ["\\M-R\\M^K", "\u048b"], ["\\M-R\\M^L", "\u048c"], ["\\M-R\\M^M", "\u048d"], ["\\M-R\\M^N", "\u048e"], ["\\M-R\\M^O", "\u048f"], ["\\M-R\\M^P", "\u0490"], ["\\M-R\\M^Q", "\u0491"], ["\\M-R\\M^R", "\u0492"], ["\\M-R\\M^S", "\u0493"], ["\\M-R\\M^T", "\u0494"], ["\\M-R\\M^U", "\u0495"], ["\\M-R\\M^V", "\u0496"], ["\\M-R\\M^W", "\u0497"], ["\\M-R\\M^X", "\u0498"], ["\\M-R\\M^Y", "\u0499"], ["\\M-R\\M^Z", "\u049a"], ["\\M-R\\M^[", "\u049b"], ["\\M-R\\M^\\", "\u049c"], ["\\M-R\\M^]", "\u049d"], ["\\M-R\\M^^", "\u049e"], ["\\M-R\\M^_", "\u049f"], ["\\M-R\\240", "\u04a0"], ["\\M-R\\M-!", "\u04a1"], ["\\M-R\\M-\"", "\u04a2"], ["\\M-R\\M-#", "\u04a3"], ["\\M-R\\M-$", "\u04a4"], ["\\M-R\\M-%", "\u04a5"], ["\\M-R\\M-&", "\u04a6"], ["\\M-R\\M-'", "\u04a7"], ["\\M-R\\M-(", "\u04a8"], ["\\M-R\\M-)", "\u04a9"], ["\\M-R\\M-*", "\u04aa"], ["\\M-R\\M-+", "\u04ab"], ["\\M-R\\M-,", "\u04ac"], ["\\M-R\\M--", "\u04ad"], ["\\M-R\\M-.", "\u04ae"], ["\\M-R\\M-/", "\u04af"], ["\\M-R\\M-0", "\u04b0"], ["\\M-R\\M-1", "\u04b1"], ["\\M-R\\M-2", "\u04b2"], ["\\M-R\\M-3", "\u04b3"], ["\\M-R\\M-4", "\u04b4"], ["\\M-R\\M-5", "\u04b5"], ["\\M-R\\M-6", "\u04b6"], ["\\M-R\\M-7", "\u04b7"], ["\\M-R\\M-8", "\u04b8"], ["\\M-R\\M-9", "\u04b9"], ["\\M-R\\M-:", "\u04ba"], ["\\M-R\\M-;", "\u04bb"], ["\\M-R\\M-<", "\u04bc"], ["\\M-R\\M-=", "\u04bd"], ["\\M-R\\M->", "\u04be"], ["\\M-R\\M-?", "\u04bf"], ["\\M-S\\M^@", "\u04c0"], ["\\M-S\\M^A", "\u04c1"], ["\\M-S\\M^B", "\u04c2"], ["\\M-S\\M^C", "\u04c3"], ["\\M-S\\M^D", "\u04c4"], ["\\M-S\\M^E", "\u04c5"], ["\\M-S\\M^F", "\u04c6"], ["\\M-S\\M^G", "\u04c7"], ["\\M-S\\M^H", "\u04c8"], ["\\M-S\\M^I", "\u04c9"], ["\\M-S\\M^J", "\u04ca"], ["\\M-S\\M^K", "\u04cb"], ["\\M-S\\M^L", "\u04cc"], ["\\M-S\\M^M", "\u04cd"], ["\\M-S\\M^N", "\u04ce"], ["\\M-S\\M^O", "\u04cf"], ["\\M-S\\M^P", "\u04d0"], ["\\M-S\\M^Q", "\u04d1"], ["\\M-S\\M^R", "\u04d2"], ["\\M-S\\M^S", "\u04d3"], ["\\M-S\\M^T", "\u04d4"], ["\\M-S\\M^U", "\u04d5"], ["\\M-S\\M^V", "\u04d6"], ["\\M-S\\M^W", "\u04d7"], ["\\M-S\\M^X", "\u04d8"], ["\\M-S\\M^Y", "\u04d9"], ["\\M-S\\M^Z", "\u04da"], ["\\M-S\\M^[", "\u04db"], ["\\M-S\\M^\\", "\u04dc"], ["\\M-S\\M^]", "\u04dd"], ["\\M-S\\M^^", "\u04de"], ["\\M-S\\M^_", "\u04df"], ["\\M-S\\240", "\u04e0"], ["\\M-S\\M-!", "\u04e1"], ["\\M-S\\M-\"", "\u04e2"], ["\\M-S\\M-#", "\u04e3"], ["\\M-S\\M-$", "\u04e4"], ["\\M-S\\M-%", "\u04e5"], ["\\M-S\\M-&", "\u04e6"], ["\\M-S\\M-'", "\u04e7"], ["\\M-S\\M-(", "\u04e8"], ["\\M-S\\M-)", "\u04e9"], ["\\M-S\\M-*", "\u04ea"], ["\\M-S\\M-+", "\u04eb"], ["\\M-S\\M-,", "\u04ec"], ["\\M-S\\M--", "\u04ed"], ["\\M-S\\M-.", "\u04ee"], ["\\M-S\\M-/", "\u04ef"], ["\\M-S\\M-0", "\u04f0"], ["\\M-S\\M-1", "\u04f1"], ["\\M-S\\M-2", "\u04f2"], ["\\M-S\\M-3", "\u04f3"], ["\\M-S\\M-4", "\u04f4"], ["\\M-S\\M-5", "\u04f5"], ["\\M-S\\M-6", "\u04f6"], ["\\M-S\\M-7", "\u04f7"], ["\\M-S\\M-8", "\u04f8"], ["\\M-S\\M-9", "\u04f9"], ["\\M-S\\M-:", "\u04fa"], ["\\M-S\\M-;", "\u04fb"], ["\\M-S\\M-<", "\u04fc"], ["\\M-S\\M-=", "\u04fd"], ["\\M-S\\M->", "\u04fe"], ["\\M-S\\M-?", "\u04ff"], ["\\M-T\\M^@", "\u0500"], ["\\M-T\\M^A", "\u0501"], ["\\M-T\\M^B", "\u0502"], ["\\M-T\\M^C", "\u0503"], ["\\M-T\\M^D", "\u0504"], ["\\M-T\\M^E", "\u0505"], ["\\M-T\\M^F", "\u0506"], ["\\M-T\\M^G", "\u0507"], ["\\M-T\\M^H", "\u0508"], ["\\M-T\\M^I", "\u0509"], ["\\M-T\\M^J", "\u050a"], ["\\M-T\\M^K", "\u050b"], ["\\M-T\\M^L", "\u050c"], ["\\M-T\\M^M", "\u050d"], ["\\M-T\\M^N", "\u050e"], ["\\M-T\\M^O", "\u050f"], ["\\M-T\\M^P", "\u0510"], ["\\M-T\\M^Q", "\u0511"], ["\\M-T\\M^R", "\u0512"], ["\\M-T\\M^S", "\u0513"], ["\\M-T\\M^T", "\u0514"], ["\\M-T\\M^U", "\u0515"], ["\\M-T\\M^V", "\u0516"], ["\\M-T\\M^W", "\u0517"], ["\\M-T\\M^X", "\u0518"], ["\\M-T\\M^Y", "\u0519"], ["\\M-T\\M^Z", "\u051a"], ["\\M-T\\M^[", "\u051b"], ["\\M-T\\M^\\", "\u051c"], ["\\M-T\\M^]", "\u051d"], ["\\M-T\\M^^", "\u051e"], ["\\M-T\\M^_", "\u051f"], ["\\M-T\\240", "\u0520"], ["\\M-T\\M-!", "\u0521"], ["\\M-T\\M-\"", "\u0522"], ["\\M-T\\M-#", "\u0523"], ["\\M-T\\M-$", "\u0524"], ["\\M-T\\M-%", "\u0525"], ["\\M-T\\M-&", "\u0526"], ["\\M-T\\M-'", "\u0527"], ["\\M-T\\M-(", "\u0528"], ["\\M-T\\M-)", "\u0529"], ["\\M-T\\M-*", "\u052a"], ["\\M-T\\M-+", "\u052b"], ["\\M-T\\M-,", "\u052c"], ["\\M-T\\M--", "\u052d"], ["\\M-T\\M-.", "\u052e"], ["\\M-T\\M-/", "\u052f"], ["\\M-V\\M^P", "\u0590"], ["\\M-V\\M^Q", "\u0591"], ["\\M-V\\M^R", "\u0592"], ["\\M-V\\M^S", "\u0593"], ["\\M-V\\M^T", "\u0594"], ["\\M-V\\M^U", "\u0595"], ["\\M-V\\M^V", "\u0596"], ["\\M-V\\M^W", "\u0597"], ["\\M-V\\M^X", "\u0598"], ["\\M-V\\M^Y", "\u0599"], ["\\M-V\\M^Z", "\u059a"], ["\\M-V\\M^[", "\u059b"], ["\\M-V\\M^\\", "\u059c"], ["\\M-V\\M^]", "\u059d"], ["\\M-V\\M^^", "\u059e"], ["\\M-V\\M^_", "\u059f"], ["\\M-V\\240", "\u05a0"], ["\\M-V\\M-!", "\u05a1"], ["\\M-V\\M-\"", "\u05a2"], ["\\M-V\\M-#", "\u05a3"], ["\\M-V\\M-$", "\u05a4"], ["\\M-V\\M-%", "\u05a5"], ["\\M-V\\M-&", "\u05a6"], ["\\M-V\\M-'", "\u05a7"], ["\\M-V\\M-(", "\u05a8"], ["\\M-V\\M-)", "\u05a9"], ["\\M-V\\M-*", "\u05aa"], ["\\M-V\\M-+", "\u05ab"], ["\\M-V\\M-,", "\u05ac"], ["\\M-V\\M--", "\u05ad"], ["\\M-V\\M-.", "\u05ae"], ["\\M-V\\M-/", "\u05af"], ["\\M-V\\M-0", "\u05b0"], ["\\M-V\\M-1", "\u05b1"], ["\\M-V\\M-2", "\u05b2"], ["\\M-V\\M-3", "\u05b3"], ["\\M-V\\M-4", "\u05b4"], ["\\M-V\\M-5", "\u05b5"], ["\\M-V\\M-6", "\u05b6"], ["\\M-V\\M-7", "\u05b7"], ["\\M-V\\M-8", "\u05b8"], ["\\M-V\\M-9", "\u05b9"], ["\\M-V\\M-:", "\u05ba"], ["\\M-V\\M-;", "\u05bb"], ["\\M-V\\M-<", "\u05bc"], ["\\M-V\\M-=", "\u05bd"], ["\\M-V\\M->", "\u05be"], ["\\M-V\\M-?", "\u05bf"], ["\\M-W\\M^@", "\u05c0"], ["\\M-W\\M^A", "\u05c1"], ["\\M-W\\M^B", "\u05c2"], ["\\M-W\\M^C", "\u05c3"], ["\\M-W\\M^D", "\u05c4"], ["\\M-W\\M^E", "\u05c5"], ["\\M-W\\M^F", "\u05c6"], ["\\M-W\\M^G", "\u05c7"], ["\\M-W\\M^H", "\u05c8"], ["\\M-W\\M^I", "\u05c9"], ["\\M-W\\M^J", "\u05ca"], ["\\M-W\\M^K", "\u05cb"], ["\\M-W\\M^L", "\u05cc"], ["\\M-W\\M^M", "\u05cd"], ["\\M-W\\M^N", "\u05ce"], ["\\M-W\\M^O", "\u05cf"], ["\\M-W\\M^P", "\u05d0"], ["\\M-W\\M^Q", "\u05d1"], ["\\M-W\\M^R", "\u05d2"], ["\\M-W\\M^S", "\u05d3"], ["\\M-W\\M^T", "\u05d4"], ["\\M-W\\M^U", "\u05d5"], ["\\M-W\\M^V", "\u05d6"], ["\\M-W\\M^W", "\u05d7"], ["\\M-W\\M^X", "\u05d8"], ["\\M-W\\M^Y", "\u05d9"], ["\\M-W\\M^Z", "\u05da"], ["\\M-W\\M^[", "\u05db"], ["\\M-W\\M^\\", "\u05dc"], ["\\M-W\\M^]", "\u05dd"], ["\\M-W\\M^^", "\u05de"], ["\\M-W\\M^_", "\u05df"], ["\\M-W\\240", "\u05e0"], ["\\M-W\\M-!", "\u05e1"], ["\\M-W\\M-\"", "\u05e2"], ["\\M-W\\M-#", "\u05e3"], ["\\M-W\\M-$", "\u05e4"], ["\\M-W\\M-%", "\u05e5"], ["\\M-W\\M-&", "\u05e6"], ["\\M-W\\M-'", "\u05e7"], ["\\M-W\\M-(", "\u05e8"], ["\\M-W\\M-)", "\u05e9"], ["\\M-W\\M-*", "\u05ea"], ["\\M-W\\M-+", "\u05eb"], ["\\M-W\\M-,", "\u05ec"], ["\\M-W\\M--", "\u05ed"], ["\\M-W\\M-.", "\u05ee"], ["\\M-W\\M-/", "\u05ef"], ["\\M-W\\M-0", "\u05f0"], ["\\M-W\\M-1", "\u05f1"], ["\\M-W\\M-2", "\u05f2"], ["\\M-W\\M-3", "\u05f3"], ["\\M-W\\M-4", "\u05f4"], ["\\M-W\\M-5", "\u05f5"], ["\\M-W\\M-6", "\u05f6"], ["\\M-W\\M-7", "\u05f7"], ["\\M-W\\M-8", "\u05f8"], ["\\M-W\\M-9", "\u05f9"], ["\\M-W\\M-:", "\u05fa"], ["\\M-W\\M-;", "\u05fb"], ["\\M-W\\M-<", "\u05fc"], ["\\M-W\\M-=", "\u05fd"], ["\\M-W\\M->", "\u05fe"], ["\\M-W\\M-?", "\u05ff"], ["\\M-X\\M^@", "\u0600"], ["\\M-X\\M^A", "\u0601"], ["\\M-X\\M^B", "\u0602"], ["\\M-X\\M^C", "\u0603"], ["\\M-X\\M^D", "\u0604"], ["\\M-X\\M^E", "\u0605"], ["\\M-X\\M^F", "\u0606"], ["\\M-X\\M^G", "\u0607"], ["\\M-X\\M^H", "\u0608"], ["\\M-X\\M^I", "\u0609"], ["\\M-X\\M^J", "\u060a"], ["\\M-X\\M^K", "\u060b"], ["\\M-X\\M^L", "\u060c"], ["\\M-X\\M^M", "\u060d"], ["\\M-X\\M^N", "\u060e"], ["\\M-X\\M^O", "\u060f"], ["\\M-X\\M^P", "\u0610"], ["\\M-X\\M^Q", "\u0611"], ["\\M-X\\M^R", "\u0612"], ["\\M-X\\M^S", "\u0613"], ["\\M-X\\M^T", "\u0614"], ["\\M-X\\M^U", "\u0615"], ["\\M-X\\M^V", "\u0616"], ["\\M-X\\M^W", "\u0617"], ["\\M-X\\M^X", "\u0618"], ["\\M-X\\M^Y", "\u0619"], ["\\M-X\\M^Z", "\u061a"], ["\\M-X\\M^[", "\u061b"], ["\\M-X\\M^\\", "\u061c"], ["\\M-X\\M^]", "\u061d"], ["\\M-X\\M^^", "\u061e"], ["\\M-X\\M^_", "\u061f"], ["\\M-X\\240", "\u0620"], ["\\M-X\\M-!", "\u0621"], ["\\M-X\\M-\"", "\u0622"], ["\\M-X\\M-#", "\u0623"], ["\\M-X\\M-$", "\u0624"], ["\\M-X\\M-%", "\u0625"], ["\\M-X\\M-&", "\u0626"], ["\\M-X\\M-'", "\u0627"], ["\\M-X\\M-(", "\u0628"], ["\\M-X\\M-)", "\u0629"], ["\\M-X\\M-*", "\u062a"], ["\\M-X\\M-+", "\u062b"], ["\\M-X\\M-,", "\u062c"], ["\\M-X\\M--", "\u062d"], ["\\M-X\\M-.", "\u062e"], ["\\M-X\\M-/", "\u062f"], ["\\M-X\\M-0", "\u0630"], ["\\M-X\\M-1", "\u0631"], ["\\M-X\\M-2", "\u0632"], ["\\M-X\\M-3", "\u0633"], ["\\M-X\\M-4", "\u0634"], ["\\M-X\\M-5", "\u0635"], ["\\M-X\\M-6", "\u0636"], ["\\M-X\\M-7", "\u0637"], ["\\M-X\\M-8", "\u0638"], ["\\M-X\\M-9", "\u0639"], ["\\M-X\\M-:", "\u063a"], ["\\M-X\\M-;", "\u063b"], ["\\M-X\\M-<", "\u063c"], ["\\M-X\\M-=", "\u063d"], ["\\M-X\\M->", "\u063e"], ["\\M-X\\M-?", "\u063f"], ["\\M-Y\\M^@", "\u0640"], ["\\M-Y\\M^A", "\u0641"], ["\\M-Y\\M^B", "\u0642"], ["\\M-Y\\M^C", "\u0643"], ["\\M-Y\\M^D", "\u0644"], ["\\M-Y\\M^E", "\u0645"], ["\\M-Y\\M^F", "\u0646"], ["\\M-Y\\M^G", "\u0647"], ["\\M-Y\\M^H", "\u0648"], ["\\M-Y\\M^I", "\u0649"], ["\\M-Y\\M^J", "\u064a"], ["\\M-Y\\M^K", "\u064b"], ["\\M-Y\\M^L", "\u064c"], ["\\M-Y\\M^M", "\u064d"], ["\\M-Y\\M^N", "\u064e"], ["\\M-Y\\M^O", "\u064f"], ["\\M-Y\\M^P", "\u0650"], ["\\M-Y\\M^Q", "\u0651"], ["\\M-Y\\M^R", "\u0652"], ["\\M-Y\\M^S", "\u0653"], ["\\M-Y\\M^T", "\u0654"], ["\\M-Y\\M^U", "\u0655"], ["\\M-Y\\M^V", "\u0656"], ["\\M-Y\\M^W", "\u0657"], ["\\M-Y\\M^X", "\u0658"], ["\\M-Y\\M^Y", "\u0659"], ["\\M-Y\\M^Z", "\u065a"], ["\\M-Y\\M^[", "\u065b"], ["\\M-Y\\M^\\", "\u065c"], ["\\M-Y\\M^]", "\u065d"], ["\\M-Y\\M^^", "\u065e"], ["\\M-Y\\M^_", "\u065f"], ["\\M-Y\\240", "\u0660"], ["\\M-Y\\M-!", "\u0661"], ["\\M-Y\\M-\"", "\u0662"], ["\\M-Y\\M-#", "\u0663"], ["\\M-Y\\M-$", "\u0664"], ["\\M-Y\\M-%", "\u0665"], ["\\M-Y\\M-&", "\u0666"], ["\\M-Y\\M-'", "\u0667"], ["\\M-Y\\M-(", "\u0668"], ["\\M-Y\\M-)", "\u0669"], ["\\M-Y\\M-*", "\u066a"], ["\\M-Y\\M-+", "\u066b"], ["\\M-Y\\M-,", "\u066c"], ["\\M-Y\\M--", "\u066d"], ["\\M-Y\\M-.", "\u066e"], ["\\M-Y\\M-/", "\u066f"], ["\\M-Y\\M-0", "\u0670"], ["\\M-Y\\M-1", "\u0671"], ["\\M-Y\\M-2", "\u0672"], ["\\M-Y\\M-3", "\u0673"], ["\\M-Y\\M-4", "\u0674"], ["\\M-Y\\M-5", "\u0675"], ["\\M-Y\\M-6", "\u0676"], ["\\M-Y\\M-7", "\u0677"], ["\\M-Y\\M-8", "\u0678"], ["\\M-Y\\M-9", "\u0679"], ["\\M-Y\\M-:", "\u067a"], ["\\M-Y\\M-;", "\u067b"], ["\\M-Y\\M-<", "\u067c"], ["\\M-Y\\M-=", "\u067d"], ["\\M-Y\\M->", "\u067e"], ["\\M-Y\\M-?", "\u067f"], ["\\M-Z\\M^@", "\u0680"], ["\\M-Z\\M^A", "\u0681"], ["\\M-Z\\M^B", "\u0682"], ["\\M-Z\\M^C", "\u0683"], ["\\M-Z\\M^D", "\u0684"], ["\\M-Z\\M^E", "\u0685"], ["\\M-Z\\M^F", "\u0686"], ["\\M-Z\\M^G", "\u0687"], ["\\M-Z\\M^H", "\u0688"], ["\\M-Z\\M^I", "\u0689"], ["\\M-Z\\M^J", "\u068a"], ["\\M-Z\\M^K", "\u068b"], ["\\M-Z\\M^L", "\u068c"], ["\\M-Z\\M^M", "\u068d"], ["\\M-Z\\M^N", "\u068e"], ["\\M-Z\\M^O", "\u068f"], ["\\M-Z\\M^P", "\u0690"], ["\\M-Z\\M^Q", "\u0691"], ["\\M-Z\\M^R", "\u0692"], ["\\M-Z\\M^S", "\u0693"], ["\\M-Z\\M^T", "\u0694"], ["\\M-Z\\M^U", "\u0695"], ["\\M-Z\\M^V", "\u0696"], ["\\M-Z\\M^W", "\u0697"], ["\\M-Z\\M^X", "\u0698"], ["\\M-Z\\M^Y", "\u0699"], ["\\M-Z\\M^Z", "\u069a"], ["\\M-Z\\M^[", "\u069b"], ["\\M-Z\\M^\\", "\u069c"], ["\\M-Z\\M^]", "\u069d"], ["\\M-Z\\M^^", "\u069e"], ["\\M-Z\\M^_", "\u069f"], ["\\M-Z\\240", "\u06a0"], ["\\M-Z\\M-!", "\u06a1"], ["\\M-Z\\M-\"", "\u06a2"], ["\\M-Z\\M-#", "\u06a3"], ["\\M-Z\\M-$", "\u06a4"], ["\\M-Z\\M-%", "\u06a5"], ["\\M-Z\\M-&", "\u06a6"], ["\\M-Z\\M-'", "\u06a7"], ["\\M-Z\\M-(", "\u06a8"], ["\\M-Z\\M-)", "\u06a9"], ["\\M-Z\\M-*", "\u06aa"], ["\\M-Z\\M-+", "\u06ab"], ["\\M-Z\\M-,", "\u06ac"], ["\\M-Z\\M--", "\u06ad"], ["\\M-Z\\M-.", "\u06ae"], ["\\M-Z\\M-/", "\u06af"], ["\\M-Z\\M-0", "\u06b0"], ["\\M-Z\\M-1", "\u06b1"], ["\\M-Z\\M-2", "\u06b2"], ["\\M-Z\\M-3", "\u06b3"], ["\\M-Z\\M-4", "\u06b4"], ["\\M-Z\\M-5", "\u06b5"], ["\\M-Z\\M-6", "\u06b6"], ["\\M-Z\\M-7", "\u06b7"], ["\\M-Z\\M-8", "\u06b8"], ["\\M-Z\\M-9", "\u06b9"], ["\\M-Z\\M-:", "\u06ba"], ["\\M-Z\\M-;", "\u06bb"], ["\\M-Z\\M-<", "\u06bc"], ["\\M-Z\\M-=", "\u06bd"], ["\\M-Z\\M->", "\u06be"], ["\\M-Z\\M-?", "\u06bf"], ["\\M-[\\M^@", "\u06c0"], ["\\M-[\\M^A", "\u06c1"], ["\\M-[\\M^B", "\u06c2"], ["\\M-[\\M^C", "\u06c3"], ["\\M-[\\M^D", "\u06c4"], ["\\M-[\\M^E", "\u06c5"], ["\\M-[\\M^F", "\u06c6"], ["\\M-[\\M^G", "\u06c7"], ["\\M-[\\M^H", "\u06c8"], ["\\M-[\\M^I", "\u06c9"], ["\\M-[\\M^J", "\u06ca"], ["\\M-[\\M^K", "\u06cb"], ["\\M-[\\M^L", "\u06cc"], ["\\M-[\\M^M", "\u06cd"], ["\\M-[\\M^N", "\u06ce"], ["\\M-[\\M^O", "\u06cf"], ["\\M-[\\M^P", "\u06d0"], ["\\M-[\\M^Q", "\u06d1"], ["\\M-[\\M^R", "\u06d2"], ["\\M-[\\M^S", "\u06d3"], ["\\M-[\\M^T", "\u06d4"], ["\\M-[\\M^U", "\u06d5"], ["\\M-[\\M^V", "\u06d6"], ["\\M-[\\M^W", "\u06d7"], ["\\M-[\\M^X", "\u06d8"], ["\\M-[\\M^Y", "\u06d9"], ["\\M-[\\M^Z", "\u06da"], ["\\M-[\\M^[", "\u06db"], ["\\M-[\\M^\\", "\u06dc"], ["\\M-[\\M^]", "\u06dd"], ["\\M-[\\M^^", "\u06de"], ["\\M-[\\M^_", "\u06df"], ["\\M-[\\240", "\u06e0"], ["\\M-[\\M-!", "\u06e1"], ["\\M-[\\M-\"", "\u06e2"], ["\\M-[\\M-#", "\u06e3"], ["\\M-[\\M-$", "\u06e4"], ["\\M-[\\M-%", "\u06e5"], ["\\M-[\\M-&", "\u06e6"], ["\\M-[\\M-'", "\u06e7"], ["\\M-[\\M-(", "\u06e8"], ["\\M-[\\M-)", "\u06e9"], ["\\M-[\\M-*", "\u06ea"], ["\\M-[\\M-+", "\u06eb"], ["\\M-[\\M-,", "\u06ec"], ["\\M-[\\M--", "\u06ed"], ["\\M-[\\M-.", "\u06ee"], ["\\M-[\\M-/", "\u06ef"], ["\\M-[\\M-0", "\u06f0"], ["\\M-[\\M-1", "\u06f1"], ["\\M-[\\M-2", "\u06f2"], ["\\M-[\\M-3", "\u06f3"], ["\\M-[\\M-4", "\u06f4"], ["\\M-[\\M-5", "\u06f5"], ["\\M-[\\M-6", "\u06f6"], ["\\M-[\\M-7", "\u06f7"], ["\\M-[\\M-8", "\u06f8"], ["\\M-[\\M-9", "\u06f9"], ["\\M-[\\M-:", "\u06fa"], ["\\M-[\\M-;", "\u06fb"], ["\\M-[\\M-<", "\u06fc"], ["\\M-[\\M-=", "\u06fd"], ["\\M-[\\M->", "\u06fe"], ["\\M-[\\M-?", "\u06ff"], ["\\M-b\\M-:\\M^@", "\u2e80"], ["\\M-b\\M-:\\M^A", "\u2e81"], ["\\M-b\\M-:\\M^B", "\u2e82"], ["\\M-b\\M-:\\M^C", "\u2e83"], ["\\M-b\\M-:\\M^D", "\u2e84"], ["\\M-b\\M-:\\M^E", "\u2e85"], ["\\M-b\\M-:\\M^F", "\u2e86"], ["\\M-b\\M-:\\M^G", "\u2e87"], ["\\M-b\\M-:\\M^H", "\u2e88"], ["\\M-b\\M-:\\M^I", "\u2e89"], ["\\M-b\\M-:\\M^J", "\u2e8a"], ["\\M-b\\M-:\\M^K", "\u2e8b"], ["\\M-b\\M-:\\M^L", "\u2e8c"], ["\\M-b\\M-:\\M^M", "\u2e8d"], ["\\M-b\\M-:\\M^N", "\u2e8e"], ["\\M-b\\M-:\\M^O", "\u2e8f"], ["\\M-b\\M-:\\M^P", "\u2e90"], ["\\M-b\\M-:\\M^Q", "\u2e91"], ["\\M-b\\M-:\\M^R", "\u2e92"], ["\\M-b\\M-:\\M^S", "\u2e93"], ["\\M-b\\M-:\\M^T", "\u2e94"], ["\\M-b\\M-:\\M^U", "\u2e95"], ["\\M-b\\M-:\\M^V", "\u2e96"], ["\\M-b\\M-:\\M^W", "\u2e97"], ["\\M-b\\M-:\\M^X", "\u2e98"], ["\\M-b\\M-:\\M^Y", "\u2e99"], ["\\M-b\\M-:\\M^Z", "\u2e9a"], ["\\M-b\\M-:\\M^[", "\u2e9b"], ["\\M-b\\M-:\\M^\\", "\u2e9c"], ["\\M-b\\M-:\\M^]", "\u2e9d"], ["\\M-b\\M-:\\M^^", "\u2e9e"], ["\\M-b\\M-:\\M^_", "\u2e9f"], ["\\M-b\\M-:\\240", "\u2ea0"], ["\\M-b\\M-:\\M-!", "\u2ea1"], ["\\M-b\\M-:\\M-\"", "\u2ea2"], ["\\M-b\\M-:\\M-#", "\u2ea3"], ["\\M-b\\M-:\\M-$", "\u2ea4"], ["\\M-b\\M-:\\M-%", "\u2ea5"], ["\\M-b\\M-:\\M-&", "\u2ea6"], ["\\M-b\\M-:\\M-'", "\u2ea7"], ["\\M-b\\M-:\\M-(", "\u2ea8"], ["\\M-b\\M-:\\M-)", "\u2ea9"], ["\\M-b\\M-:\\M-*", "\u2eaa"], ["\\M-b\\M-:\\M-+", "\u2eab"], ["\\M-b\\M-:\\M-,", "\u2eac"], ["\\M-b\\M-:\\M--", "\u2ead"], ["\\M-b\\M-:\\M-.", "\u2eae"], ["\\M-b\\M-:\\M-/", "\u2eaf"], ["\\M-b\\M-:\\M-0", "\u2eb0"], ["\\M-b\\M-:\\M-1", "\u2eb1"], ["\\M-b\\M-:\\M-2", "\u2eb2"], ["\\M-b\\M-:\\M-3", "\u2eb3"], ["\\M-b\\M-:\\M-4", "\u2eb4"], ["\\M-b\\M-:\\M-5", "\u2eb5"], ["\\M-b\\M-:\\M-6", "\u2eb6"], ["\\M-b\\M-:\\M-7", "\u2eb7"], ["\\M-b\\M-:\\M-8", "\u2eb8"], ["\\M-b\\M-:\\M-9", "\u2eb9"], ["\\M-b\\M-:\\M-:", "\u2eba"], ["\\M-b\\M-:\\M-;", "\u2ebb"], ["\\M-b\\M-:\\M-<", "\u2ebc"], ["\\M-b\\M-:\\M-=", "\u2ebd"], ["\\M-b\\M-:\\M->", "\u2ebe"], ["\\M-b\\M-:\\M-?", "\u2ebf"], ["\\M-b\\M-;\\M^@", "\u2ec0"], ["\\M-b\\M-;\\M^A", "\u2ec1"], ["\\M-b\\M-;\\M^B", "\u2ec2"], ["\\M-b\\M-;\\M^C", "\u2ec3"], ["\\M-b\\M-;\\M^D", "\u2ec4"], ["\\M-b\\M-;\\M^E", "\u2ec5"], ["\\M-b\\M-;\\M^F", "\u2ec6"], ["\\M-b\\M-;\\M^G", "\u2ec7"], ["\\M-b\\M-;\\M^H", "\u2ec8"], ["\\M-b\\M-;\\M^I", "\u2ec9"], ["\\M-b\\M-;\\M^J", "\u2eca"], ["\\M-b\\M-;\\M^K", "\u2ecb"], ["\\M-b\\M-;\\M^L", "\u2ecc"], ["\\M-b\\M-;\\M^M", "\u2ecd"], ["\\M-b\\M-;\\M^N", "\u2ece"], ["\\M-b\\M-;\\M^O", "\u2ecf"], ["\\M-b\\M-;\\M^P", "\u2ed0"], ["\\M-b\\M-;\\M^Q", "\u2ed1"], ["\\M-b\\M-;\\M^R", "\u2ed2"], ["\\M-b\\M-;\\M^S", "\u2ed3"], ["\\M-b\\M-;\\M^T", "\u2ed4"], ["\\M-b\\M-;\\M^U", "\u2ed5"], ["\\M-b\\M-;\\M^V", "\u2ed6"], ["\\M-b\\M-;\\M^W", "\u2ed7"], ["\\M-b\\M-;\\M^X", "\u2ed8"], ["\\M-b\\M-;\\M^Y", "\u2ed9"], ["\\M-b\\M-;\\M^Z", "\u2eda"], ["\\M-b\\M-;\\M^[", "\u2edb"], ["\\M-b\\M-;\\M^\\", "\u2edc"], ["\\M-b\\M-;\\M^]", "\u2edd"], ["\\M-b\\M-;\\M^^", "\u2ede"], ["\\M-b\\M-;\\M^_", "\u2edf"], ["\\M-b\\M-;\\240", "\u2ee0"], ["\\M-b\\M-;\\M-!", "\u2ee1"], ["\\M-b\\M-;\\M-\"", "\u2ee2"], ["\\M-b\\M-;\\M-#", "\u2ee3"], ["\\M-b\\M-;\\M-$", "\u2ee4"], ["\\M-b\\M-;\\M-%", "\u2ee5"], ["\\M-b\\M-;\\M-&", "\u2ee6"], ["\\M-b\\M-;\\M-'", "\u2ee7"], ["\\M-b\\M-;\\M-(", "\u2ee8"], ["\\M-b\\M-;\\M-)", "\u2ee9"], ["\\M-b\\M-;\\M-*", "\u2eea"], ["\\M-b\\M-;\\M-+", "\u2eeb"], ["\\M-b\\M-;\\M-,", "\u2eec"], ["\\M-b\\M-;\\M--", "\u2eed"], ["\\M-b\\M-;\\M-.", "\u2eee"], ["\\M-b\\M-;\\M-/", "\u2eef"], ["\\M-b\\M-;\\M-0", "\u2ef0"], ["\\M-b\\M-;\\M-1", "\u2ef1"], ["\\M-b\\M-;\\M-2", "\u2ef2"], ["\\M-b\\M-;\\M-3", "\u2ef3"], ["\\M-b\\M-;\\M-4", "\u2ef4"], ["\\M-b\\M-;\\M-5", "\u2ef5"], ["\\M-b\\M-;\\M-6", "\u2ef6"], ["\\M-b\\M-;\\M-7", "\u2ef7"], ["\\M-b\\M-;\\M-8", "\u2ef8"], ["\\M-b\\M-;\\M-9", "\u2ef9"], ["\\M-b\\M-;\\M-:", "\u2efa"], ["\\M-b\\M-;\\M-;", "\u2efb"], ["\\M-b\\M-;\\M-<", "\u2efc"], ["\\M-b\\M-;\\M-=", "\u2efd"], ["\\M-b\\M-;\\M->", "\u2efe"], ["\\M-b\\M-;\\M-?", "\u2eff"], ["\\M-c\\M^A\\M^@", "\u3040"], ["\\M-c\\M^A\\M^A", "\u3041"], ["\\M-c\\M^A\\M^B", "\u3042"], ["\\M-c\\M^A\\M^C", "\u3043"], ["\\M-c\\M^A\\M^D", "\u3044"], ["\\M-c\\M^A\\M^E", "\u3045"], ["\\M-c\\M^A\\M^F", "\u3046"], ["\\M-c\\M^A\\M^G", "\u3047"], ["\\M-c\\M^A\\M^H", "\u3048"], ["\\M-c\\M^A\\M^I", "\u3049"], ["\\M-c\\M^A\\M^J", "\u304a"], ["\\M-c\\M^A\\M^K", "\u304b"], ["\\M-c\\M^A\\M^L", "\u304c"], ["\\M-c\\M^A\\M^M", "\u304d"], ["\\M-c\\M^A\\M^N", "\u304e"], ["\\M-c\\M^A\\M^O", "\u304f"], ["\\M-c\\M^A\\M^P", "\u3050"], ["\\M-c\\M^A\\M^Q", "\u3051"], ["\\M-c\\M^A\\M^R", "\u3052"], ["\\M-c\\M^A\\M^S", "\u3053"], ["\\M-c\\M^A\\M^T", "\u3054"], ["\\M-c\\M^A\\M^U", "\u3055"], ["\\M-c\\M^A\\M^V", "\u3056"], ["\\M-c\\M^A\\M^W", "\u3057"], ["\\M-c\\M^A\\M^X", "\u3058"], ["\\M-c\\M^A\\M^Y", "\u3059"], ["\\M-c\\M^A\\M^Z", "\u305a"], ["\\M-c\\M^A\\M^[", "\u305b"], ["\\M-c\\M^A\\M^\\", "\u305c"], ["\\M-c\\M^A\\M^]", "\u305d"], ["\\M-c\\M^A\\M^^", "\u305e"], ["\\M-c\\M^A\\M^_", "\u305f"], ["\\M-c\\M^A\\240", "\u3060"], ["\\M-c\\M^A\\M-!", "\u3061"], ["\\M-c\\M^A\\M-\"", "\u3062"], ["\\M-c\\M^A\\M-#", "\u3063"], ["\\M-c\\M^A\\M-$", "\u3064"], ["\\M-c\\M^A\\M-%", "\u3065"], ["\\M-c\\M^A\\M-&", "\u3066"], ["\\M-c\\M^A\\M-'", "\u3067"], ["\\M-c\\M^A\\M-(", "\u3068"], ["\\M-c\\M^A\\M-)", "\u3069"], ["\\M-c\\M^A\\M-*", "\u306a"], ["\\M-c\\M^A\\M-+", "\u306b"], ["\\M-c\\M^A\\M-,", "\u306c"], ["\\M-c\\M^A\\M--", "\u306d"], ["\\M-c\\M^A\\M-.", "\u306e"], ["\\M-c\\M^A\\M-/", "\u306f"], ["\\M-c\\M^A\\M-0", "\u3070"], ["\\M-c\\M^A\\M-1", "\u3071"], ["\\M-c\\M^A\\M-2", "\u3072"], ["\\M-c\\M^A\\M-3", "\u3073"], ["\\M-c\\M^A\\M-4", "\u3074"], ["\\M-c\\M^A\\M-5", "\u3075"], ["\\M-c\\M^A\\M-6", "\u3076"], ["\\M-c\\M^A\\M-7", "\u3077"], ["\\M-c\\M^A\\M-8", "\u3078"], ["\\M-c\\M^A\\M-9", "\u3079"], ["\\M-c\\M^A\\M-:", "\u307a"], ["\\M-c\\M^A\\M-;", "\u307b"], ["\\M-c\\M^A\\M-<", "\u307c"], ["\\M-c\\M^A\\M-=", "\u307d"], ["\\M-c\\M^A\\M->", "\u307e"], ["\\M-c\\M^A\\M-?", "\u307f"], ["\\M-c\\M^B\\M^@", "\u3080"], ["\\M-c\\M^B\\M^A", "\u3081"], ["\\M-c\\M^B\\M^B", "\u3082"], ["\\M-c\\M^B\\M^C", "\u3083"], ["\\M-c\\M^B\\M^D", "\u3084"], ["\\M-c\\M^B\\M^E", "\u3085"], ["\\M-c\\M^B\\M^F", "\u3086"], ["\\M-c\\M^B\\M^G", "\u3087"], ["\\M-c\\M^B\\M^H", "\u3088"], ["\\M-c\\M^B\\M^I", "\u3089"], ["\\M-c\\M^B\\M^J", "\u308a"], ["\\M-c\\M^B\\M^K", "\u308b"], ["\\M-c\\M^B\\M^L", "\u308c"], ["\\M-c\\M^B\\M^M", "\u308d"], ["\\M-c\\M^B\\M^N", "\u308e"], ["\\M-c\\M^B\\M^O", "\u308f"], ["\\M-c\\M^B\\M^P", "\u3090"], ["\\M-c\\M^B\\M^Q", "\u3091"], ["\\M-c\\M^B\\M^R", "\u3092"], ["\\M-c\\M^B\\M^S", "\u3093"], ["\\M-c\\M^B\\M^T", "\u3094"], ["\\M-c\\M^B\\M^U", "\u3095"], ["\\M-c\\M^B\\M^V", "\u3096"], ["\\M-c\\M^B\\M^W", "\u3097"], ["\\M-c\\M^B\\M^X", "\u3098"], ["\\M-c\\M^B\\M^Y", "\u3099"], ["\\M-c\\M^B\\M^Z", "\u309a"], ["\\M-c\\M^B\\M^[", "\u309b"], ["\\M-c\\M^B\\M^\\", "\u309c"], ["\\M-c\\M^B\\M^]", "\u309d"], ["\\M-c\\M^B\\M^^", "\u309e"], ["\\M-c\\M^B\\M^_", "\u309f"], ["\\M-c\\M^B\\240", "\u30a0"], ["\\M-c\\M^B\\M-!", "\u30a1"], ["\\M-c\\M^B\\M-\"", "\u30a2"], ["\\M-c\\M^B\\M-#", "\u30a3"], ["\\M-c\\M^B\\M-$", "\u30a4"], ["\\M-c\\M^B\\M-%", "\u30a5"], ["\\M-c\\M^B\\M-&", "\u30a6"], ["\\M-c\\M^B\\M-'", "\u30a7"], ["\\M-c\\M^B\\M-(", "\u30a8"], ["\\M-c\\M^B\\M-)", "\u30a9"], ["\\M-c\\M^B\\M-*", "\u30aa"], ["\\M-c\\M^B\\M-+", "\u30ab"], ["\\M-c\\M^B\\M-,", "\u30ac"], ["\\M-c\\M^B\\M--", "\u30ad"], ["\\M-c\\M^B\\M-.", "\u30ae"], ["\\M-c\\M^B\\M-/", "\u30af"], ["\\M-c\\M^B\\M-0", "\u30b0"], ["\\M-c\\M^B\\M-1", "\u30b1"], ["\\M-c\\M^B\\M-2", "\u30b2"], ["\\M-c\\M^B\\M-3", "\u30b3"], ["\\M-c\\M^B\\M-4", "\u30b4"], ["\\M-c\\M^B\\M-5", "\u30b5"], ["\\M-c\\M^B\\M-6", "\u30b6"], ["\\M-c\\M^B\\M-7", "\u30b7"], ["\\M-c\\M^B\\M-8", "\u30b8"], ["\\M-c\\M^B\\M-9", "\u30b9"], ["\\M-c\\M^B\\M-:", "\u30ba"], ["\\M-c\\M^B\\M-;", "\u30bb"], ["\\M-c\\M^B\\M-<", "\u30bc"], ["\\M-c\\M^B\\M-=", "\u30bd"], ["\\M-c\\M^B\\M->", "\u30be"], ["\\M-c\\M^B\\M-?", "\u30bf"], ["\\M-c\\M^C\\M^@", "\u30c0"], ["\\M-c\\M^C\\M^A", "\u30c1"], ["\\M-c\\M^C\\M^B", "\u30c2"], ["\\M-c\\M^C\\M^C", "\u30c3"], ["\\M-c\\M^C\\M^D", "\u30c4"], ["\\M-c\\M^C\\M^E", "\u30c5"], ["\\M-c\\M^C\\M^F", "\u30c6"], ["\\M-c\\M^C\\M^G", "\u30c7"], ["\\M-c\\M^C\\M^H", "\u30c8"], ["\\M-c\\M^C\\M^I", "\u30c9"], ["\\M-c\\M^C\\M^J", "\u30ca"], ["\\M-c\\M^C\\M^K", "\u30cb"], ["\\M-c\\M^C\\M^L", "\u30cc"], ["\\M-c\\M^C\\M^M", "\u30cd"], ["\\M-c\\M^C\\M^N", "\u30ce"], ["\\M-c\\M^C\\M^O", "\u30cf"], ["\\M-c\\M^C\\M^P", "\u30d0"], ["\\M-c\\M^C\\M^Q", "\u30d1"], ["\\M-c\\M^C\\M^R", "\u30d2"], ["\\M-c\\M^C\\M^S", "\u30d3"], ["\\M-c\\M^C\\M^T", "\u30d4"], ["\\M-c\\M^C\\M^U", "\u30d5"], ["\\M-c\\M^C\\M^V", "\u30d6"], ["\\M-c\\M^C\\M^W", "\u30d7"], ["\\M-c\\M^C\\M^X", "\u30d8"], ["\\M-c\\M^C\\M^Y", "\u30d9"], ["\\M-c\\M^C\\M^Z", "\u30da"], ["\\M-c\\M^C\\M^[", "\u30db"], ["\\M-c\\M^C\\M^\\", "\u30dc"], ["\\M-c\\M^C\\M^]", "\u30dd"], ["\\M-c\\M^C\\M^^", "\u30de"], ["\\M-c\\M^C\\M^_", "\u30df"], ["\\M-c\\M^C\\240", "\u30e0"], ["\\M-c\\M^C\\M-!", "\u30e1"], ["\\M-c\\M^C\\M-\"", "\u30e2"], ["\\M-c\\M^C\\M-#", "\u30e3"], ["\\M-c\\M^C\\M-$", "\u30e4"], ["\\M-c\\M^C\\M-%", "\u30e5"], ["\\M-c\\M^C\\M-&", "\u30e6"], ["\\M-c\\M^C\\M-'", "\u30e7"], ["\\M-c\\M^C\\M-(", "\u30e8"], ["\\M-c\\M^C\\M-)", "\u30e9"], ["\\M-c\\M^C\\M-*", "\u30ea"], ["\\M-c\\M^C\\M-+", "\u30eb"], ["\\M-c\\M^C\\M-,", "\u30ec"], ["\\M-c\\M^C\\M--", "\u30ed"], ["\\M-c\\M^C\\M-.", "\u30ee"], ["\\M-c\\M^C\\M-/", "\u30ef"], ["\\M-c\\M^C\\M-0", "\u30f0"], ["\\M-c\\M^C\\M-1", "\u30f1"], ["\\M-c\\M^C\\M-2", "\u30f2"], ["\\M-c\\M^C\\M-3", "\u30f3"], ["\\M-c\\M^C\\M-4", "\u30f4"], ["\\M-c\\M^C\\M-5", "\u30f5"], ["\\M-c\\M^C\\M-6", "\u30f6"], ["\\M-c\\M^C\\M-7", "\u30f7"], ["\\M-c\\M^C\\M-8", "\u30f8"], ["\\M-c\\M^C\\M-9", "\u30f9"], ["\\M-c\\M^C\\M-:", "\u30fa"], ["\\M-c\\M^C\\M-;", "\u30fb"], ["\\M-c\\M^C\\M-<", "\u30fc"], ["\\M-c\\M^C\\M-=", "\u30fd"], ["\\M-c\\M^C\\M->", "\u30fe"], ["\\M-c\\M^C\\M-?", "\u30ff"], ["foo\\040bar", "foo bar"], ["foo\\^Jbar", "foo\nbar"], ["$bar\\040=\\040'baz';", "$bar = 'baz';"], ["$foo\\040=\\040\"\\\\x20\\\\\\\\x20\\\\\\\\\\\\x20\\\\\\\\\\\\\\\\x20\"", "$foo = \"\\x20\\\\x20\\\\\\x20\\\\\\\\x20\""], ["$foo\\040=\\040function($bar)\\040use($baz)\\040{\\^J\\^Ireturn\\040$baz->getFoo()\\^J};", "$foo = function($bar) use($baz) {\n\treturn $baz->getFoo()\n};"], ["", ""]]
\ No newline at end of file
diff --git a/vendor/psy/psysh/test/tools/gen_unvis_fixtures.py b/vendor/psy/psysh/test/tools/gen_unvis_fixtures.py
deleted file mode 100755
index e02a741459..0000000000
--- a/vendor/psy/psysh/test/tools/gen_unvis_fixtures.py
+++ /dev/null
@@ -1,94 +0,0 @@
-#! /usr/bin/env python3
-import sys
-from os.path import abspath, expanduser, dirname, join
-from itertools import chain
-import json
-import argparse
-
-from vis import vis, unvis, VIS_WHITE
-
-
-__dir__ = dirname(abspath(__file__))
-
-OUTPUT_FILE = join(__dir__, '..', 'fixtures', 'unvis_fixtures.json')
-
-# Add custom fixtures here
-CUSTOM_FIXTURES = [
-    # test long multibyte string
-    ''.join(chr(cp) for cp in range(1024)),
-    'foo bar',
-    'foo\nbar',
-    "$bar = 'baz';",
-    r'$foo = "\x20\\x20\\\x20\\\\x20"',
-    '$foo = function($bar) use($baz) {\n\treturn $baz->getFoo()\n};'
-]
-
-RANGES = {
-    # All valid codepoints in the BMP
-    'bmp': chain(range(0x0000, 0xD800), range(0xE000, 0xFFFF)),
-    # Smaller set of pertinent? codepoints inside BMP
-    # see: http://en.wikipedia.org/wiki/Plane_(Unicode)#Basic_Multilingual_Plane
-    'small': chain(
-        # latin blocks
-        range(0x0000, 0x0250),
-        # Greek, Cyrillic
-        range(0x0370, 0x0530),
-        # Hebrew, Arabic
-        range(0x590, 0x0700),
-        # CJK radicals
-        range(0x2E80, 0x2F00),
-        # Hiragana, Katakana
-        range(0x3040, 0x3100)
-    )
-}
-
-
-if __name__ == '__main__':
-
-    argp = argparse.ArgumentParser(
-        description='Generates test data for Psy\\Test\\Util\\StrTest')
-    argp.add_argument('-f', '--format-output', action='store_true',
-                      help='Indent JSON output to ease debugging')
-    argp.add_argument('-a', '--all', action='store_true',
-                      help="""Generates test data for all codepoints of the BMP.
-                      (same as --range=bmp). WARNING: You will need quite
-                      a lot of RAM to run the testsuite !
-                      """)
-    argp.add_argument('-r', '--range',
-                      help="""Choose the range of codepoints used to generate
-                      test data.""",
-                      choices=list(RANGES.keys()),
-                      default='small')
-    argp.add_argument('-o', '--output-file',
-                      help="""Write test data to OUTPUT_FILE
-                      (defaults to PSYSH_DIR/test/fixtures)""")
-    args = argp.parse_args()
-
-    cp_range = RANGES['bmp'] if args.all else RANGES[args.range]
-    indent = 2 if args.format_output else None
-    if args.output_file:
-        OUTPUT_FILE = abspath(expanduser(args.output_file))
-
-    fixtures = []
-
-    # use SMALL_RANGE by default, it should be enough.
-    # use BMP_RANGE for a more complete smoke test
-    for codepoint in cp_range:
-        char = chr(codepoint)
-        encoded = vis(char, VIS_WHITE)
-        decoded = unvis(encoded)
-        fixtures.append((encoded, decoded))
-
-    # Add our own custom fixtures at the end,
-    # since they would fail anyway if one of the previous did.
-    for fixture in CUSTOM_FIXTURES:
-        encoded = vis(fixture, VIS_WHITE)
-        decoded = unvis(encoded)
-        fixtures.append((encoded, decoded))
-
-    with open(OUTPUT_FILE, 'w') as fp:
-        # dump as json to avoid backslashin and quotin nightmare
-        # between php and python
-        json.dump(fixtures, fp, indent=indent)
-
-    sys.exit(0)
diff --git a/vendor/psy/psysh/test/tools/vis.py b/vendor/psy/psysh/test/tools/vis.py
deleted file mode 100644
index 4e45c4c93f..0000000000
--- a/vendor/psy/psysh/test/tools/vis.py
+++ /dev/null
@@ -1,126 +0,0 @@
-"""
-vis.py
-======
-
-Ctypes based module to access libbsd's strvis & strunvis functions.
-
-The `vis` function is the equivalent of strvis.
-The `unvis` function is the equivalent of strunvis.
-All functions accept unicode string as input and return a unicode string.
-
-Constants:
-----------
-
-* to select alternate encoding format
-  `VIS_OCTAL`:      use octal \ddd format
-  `VIS_CSTYLE`:     use \[nrft0..] where appropiate
-
-* to alter set of characters encoded
-  (default is to encode all non-graphic except space, tab, and newline).
-  `VIS_SP`:         also encode space
-  `VIS_TAB`:        also encode tab
-  `VIS_NL`:         also encode newline
-  `VIS_WHITE`:      same as (VIS_SP | VIS_TAB | VIS_NL)
-  `VIS_SAFE`:       only encode "unsafe" characters
-
-* other
-  `VIS_NOSLASH`:    inhibit printing '\'
-  `VIS_HTTP1808`:   http-style escape % hex hex
-  `VIS_HTTPSTYLE`:  http-style escape % hex hex
-  `VIS_MIMESTYLE`:  mime-style escape = HEX HEX
-  `VIS_HTTP1866`:   http-style &#num; or &string;
-  `VIS_NOESCAPE`:   don't decode `\'
-  `VIS_GLOB`:       encode glob(3) magic characters
-
-:Authors:
-    - ju1ius (http://github.com/ju1ius)
-:Version: 1
-:Date: 2014-01-05
-"""
-from ctypes import CDLL, c_char_p, c_int
-from ctypes.util import find_library
-
-
-__all__ = [
-    'vis', 'unvis',
-    'VIS_OCTAL', 'VIS_CSTYLE',
-    'VIS_SP', 'VIS_TAB', 'VIS_NL', 'VIS_WHITE', 'VIS_SAFE',
-    'VIS_NOSLASH', 'VIS_HTTP1808', 'VIS_HTTPSTYLE', 'VIS_MIMESTYLE',
-    'VIS_HTTP1866', 'VIS_NOESCAPE', 'VIS_GLOB'
-]
-
-
-#############################################################
-# Constants from bsd/vis.h
-#############################################################
-
-#to select alternate encoding format
-VIS_OCTAL = 0x0001
-VIS_CSTYLE = 0x0002
-# to alter set of characters encoded
-# (default is to encode all non-graphic except space, tab, and newline).
-VIS_SP = 0x0004
-VIS_TAB = 0x0008
-VIS_NL = 0x0010
-VIS_WHITE = VIS_SP | VIS_TAB | VIS_NL
-VIS_SAFE = 0x0020
-# other
-VIS_NOSLASH = 0x0040
-VIS_HTTP1808 = 0x0080
-VIS_HTTPSTYLE = 0x0080
-VIS_MIMESTYLE = 0x0100
-VIS_HTTP1866 = 0x0200
-VIS_NOESCAPE = 0x0400
-VIS_GLOB = 0x1000
-
-#############################################################
-# Import libbsd/vis functions
-#############################################################
-
-_libbsd = CDLL(find_library('bsd'))
-
-_strvis = _libbsd.strvis
-_strvis.argtypes = [c_char_p, c_char_p, c_int]
-_strvis.restype = c_int
-
-_strunvis = _libbsd.strunvis
-_strvis.argtypes = [c_char_p, c_char_p]
-_strvis.restype = c_int
-
-
-def vis(src, flags=VIS_WHITE):
-    """
-    Encodes the string `src` into libbsd's vis encoding.
-    `flags` must be one of the VIS_* constants
-
-    C definition:
-    int strvis(char *dst, char *src, int flags);
-    """
-    src = bytes(src, 'utf-8')
-    dst_p = c_char_p(bytes(len(src) * 4))
-    src_p = c_char_p(src)
-    flags = c_int(flags)
-
-    bytes_written = _strvis(dst_p, src_p, flags)
-    if -1 == bytes_written:
-        raise RuntimeError('vis failed to encode string "{}"'.format(src))
-
-    return dst_p.value.decode('utf-8')
-
-
-def unvis(src):
-    """
-    Decodes a string encoded by vis.
-
-    C definition:
-    int strunvis(char *dst, char *src);
-    """
-    src = bytes(src, 'utf-8')
-    dst_p = c_char_p(bytes(len(src)))
-    src_p = c_char_p(src)
-
-    bytes_written = _strunvis(dst_p, src_p)
-    if -1 == bytes_written:
-        raise RuntimeError('unvis failed to decode string "{}"'.format(src))
-
-    return dst_p.value.decode('utf-8')
diff --git a/vendor/psy/psysh/vendor-bin/box/composer.json b/vendor/psy/psysh/vendor-bin/box/composer.json
deleted file mode 100644
index 13b78794fb..0000000000
--- a/vendor/psy/psysh/vendor-bin/box/composer.json
+++ /dev/null
@@ -1,7 +0,0 @@
-{
-    "minimum-stability": "dev",
-    "prefer-stable": true,
-    "require": {
-        "humbug/box": "^3.1"
-    }
-}
diff --git a/vendor/psy/psysh/vendor-bin/box/composer.lock b/vendor/psy/psysh/vendor-bin/box/composer.lock
deleted file mode 100644
index 3c4496384a..0000000000
--- a/vendor/psy/psysh/vendor-bin/box/composer.lock
+++ /dev/null
@@ -1,2524 +0,0 @@
-{
-    "_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": "d98ffe050f0ba4e81c2d1a98ca945200",
-    "packages": [
-        {
-            "name": "amphp/amp",
-            "version": "v2.0.7",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/amphp/amp.git",
-                "reference": "d561cc9736bc18dd94a2fc9cdae98b616bd92c43"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/amphp/amp/zipball/d561cc9736bc18dd94a2fc9cdae98b616bd92c43",
-                "reference": "d561cc9736bc18dd94a2fc9cdae98b616bd92c43",
-                "shasum": ""
-            },
-            "require": {
-                "php": ">=7"
-            },
-            "require-dev": {
-                "amphp/phpunit-util": "^1",
-                "friendsofphp/php-cs-fixer": "^2.3",
-                "phpstan/phpstan": "^0.8.5",
-                "phpunit/phpunit": "^6.0.9",
-                "react/promise": "^2"
-            },
-            "type": "library",
-            "extra": {
-                "branch-alias": {
-                    "dev-master": "2.0.x-dev"
-                }
-            },
-            "autoload": {
-                "psr-4": {
-                    "Amp\\": "lib"
-                },
-                "files": [
-                    "lib/functions.php",
-                    "lib/Internal/functions.php"
-                ]
-            },
-            "notification-url": "https://packagist.org/downloads/",
-            "license": [
-                "MIT"
-            ],
-            "authors": [
-                {
-                    "name": "Bob Weinand",
-                    "email": "bobwei9@hotmail.com"
-                },
-                {
-                    "name": "Niklas Keller",
-                    "email": "me@kelunik.com"
-                },
-                {
-                    "name": "Daniel Lowrey",
-                    "email": "rdlowrey@php.net"
-                },
-                {
-                    "name": "Aaron Piotrowski",
-                    "email": "aaron@trowski.com"
-                }
-            ],
-            "description": "A non-blocking concurrency framework for PHP applications.",
-            "homepage": "http://amphp.org/amp",
-            "keywords": [
-                "async",
-                "asynchronous",
-                "awaitable",
-                "concurrency",
-                "event",
-                "event-loop",
-                "future",
-                "non-blocking",
-                "promise"
-            ],
-            "time": "2018-04-30T20:49:57+00:00"
-        },
-        {
-            "name": "amphp/byte-stream",
-            "version": "v1.3.1",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/amphp/byte-stream.git",
-                "reference": "1b75b122e6f069e7d102eef065dc192119d99ca7"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/amphp/byte-stream/zipball/1b75b122e6f069e7d102eef065dc192119d99ca7",
-                "reference": "1b75b122e6f069e7d102eef065dc192119d99ca7",
-                "shasum": ""
-            },
-            "require": {
-                "amphp/amp": "^2"
-            },
-            "require-dev": {
-                "amphp/phpunit-util": "^1",
-                "friendsofphp/php-cs-fixer": "^2.3",
-                "phpunit/phpunit": "^6"
-            },
-            "type": "library",
-            "autoload": {
-                "psr-4": {
-                    "Amp\\ByteStream\\": "lib"
-                },
-                "files": [
-                    "lib/functions.php"
-                ]
-            },
-            "notification-url": "https://packagist.org/downloads/",
-            "license": [
-                "MIT"
-            ],
-            "authors": [
-                {
-                    "name": "Niklas Keller",
-                    "email": "me@kelunik.com"
-                },
-                {
-                    "name": "Aaron Piotrowski",
-                    "email": "aaron@trowski.com"
-                }
-            ],
-            "description": "A stream abstraction to make working with non-blocking I/O simple.",
-            "homepage": "http://amphp.org/byte-stream",
-            "keywords": [
-                "amp",
-                "amphp",
-                "async",
-                "io",
-                "non-blocking",
-                "stream"
-            ],
-            "time": "2018-04-04T05:33:09+00:00"
-        },
-        {
-            "name": "amphp/parallel",
-            "version": "v0.2.5",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/amphp/parallel.git",
-                "reference": "732694688461936bec02c0ccf020dfee10c4f7ee"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/amphp/parallel/zipball/732694688461936bec02c0ccf020dfee10c4f7ee",
-                "reference": "732694688461936bec02c0ccf020dfee10c4f7ee",
-                "shasum": ""
-            },
-            "require": {
-                "amphp/amp": "^2",
-                "amphp/byte-stream": "^1.2",
-                "amphp/parser": "^1",
-                "amphp/process": "^0.2 || ^0.3",
-                "amphp/sync": "^1.0.1"
-            },
-            "require-dev": {
-                "amphp/phpunit-util": "^1",
-                "friendsofphp/php-cs-fixer": "^2.3",
-                "phpunit/phpunit": "^6"
-            },
-            "suggest": {
-                "ext-pthreads": "Required for thread contexts"
-            },
-            "type": "library",
-            "autoload": {
-                "psr-4": {
-                    "Amp\\Parallel\\": "lib"
-                },
-                "files": [
-                    "lib/Worker/functions.php"
-                ]
-            },
-            "notification-url": "https://packagist.org/downloads/",
-            "license": [
-                "MIT"
-            ],
-            "authors": [
-                {
-                    "name": "Stephen Coakley",
-                    "email": "me@stephencoakley.com"
-                },
-                {
-                    "name": "Aaron Piotrowski",
-                    "email": "aaron@trowski.com"
-                }
-            ],
-            "description": "Parallel processing component for Amp.",
-            "homepage": "https://github.com/amphp/parallel",
-            "keywords": [
-                "async",
-                "asynchronous",
-                "concurrent",
-                "multi-processing",
-                "multi-threading"
-            ],
-            "time": "2018-03-21T14:37:51+00:00"
-        },
-        {
-            "name": "amphp/parallel-functions",
-            "version": "v0.1.2",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/amphp/parallel-functions.git",
-                "reference": "999ba8a00adaf4d1fd3a7cb40bf7e565e507ff48"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/amphp/parallel-functions/zipball/999ba8a00adaf4d1fd3a7cb40bf7e565e507ff48",
-                "reference": "999ba8a00adaf4d1fd3a7cb40bf7e565e507ff48",
-                "shasum": ""
-            },
-            "require": {
-                "amphp/amp": "^2.0.3",
-                "amphp/parallel": "^0.1.8 || ^0.2",
-                "opis/closure": "^3.0.7",
-                "php": ">=7"
-            },
-            "require-dev": {
-                "amphp/phpunit-util": "^1.0",
-                "friendsofphp/php-cs-fixer": "^2.9",
-                "phpunit/phpunit": "^6.5"
-            },
-            "type": "library",
-            "autoload": {
-                "psr-4": {
-                    "Amp\\ParallelFunctions\\": "src"
-                },
-                "files": [
-                    "src/functions.php"
-                ]
-            },
-            "notification-url": "https://packagist.org/downloads/",
-            "license": [
-                "MIT"
-            ],
-            "authors": [
-                {
-                    "name": "Niklas Keller",
-                    "email": "me@kelunik.com"
-                }
-            ],
-            "description": "Parallel processing made simple.",
-            "time": "2017-12-17T18:33:29+00:00"
-        },
-        {
-            "name": "amphp/parser",
-            "version": "v1.0.0",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/amphp/parser.git",
-                "reference": "f83e68f03d5b8e8e0365b8792985a7f341c57ae1"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/amphp/parser/zipball/f83e68f03d5b8e8e0365b8792985a7f341c57ae1",
-                "reference": "f83e68f03d5b8e8e0365b8792985a7f341c57ae1",
-                "shasum": ""
-            },
-            "require": {
-                "php": ">=7"
-            },
-            "require-dev": {
-                "friendsofphp/php-cs-fixer": "^2.3",
-                "phpunit/phpunit": "^6"
-            },
-            "type": "library",
-            "autoload": {
-                "psr-4": {
-                    "Amp\\Parser\\": "lib"
-                }
-            },
-            "notification-url": "https://packagist.org/downloads/",
-            "license": [
-                "MIT"
-            ],
-            "authors": [
-                {
-                    "name": "Niklas Keller",
-                    "email": "me@kelunik.com"
-                },
-                {
-                    "name": "Aaron Piotrowski",
-                    "email": "aaron@trowski.com"
-                }
-            ],
-            "description": "A generator parser to make streaming parsers simple.",
-            "homepage": "https://github.com/amphp/parser",
-            "keywords": [
-                "async",
-                "non-blocking",
-                "parser",
-                "stream"
-            ],
-            "time": "2017-06-06T05:29:10+00:00"
-        },
-        {
-            "name": "amphp/process",
-            "version": "v0.3.3",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/amphp/process.git",
-                "reference": "b795d20a7f6d5a0637128a02be613f520f1705fc"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/amphp/process/zipball/b795d20a7f6d5a0637128a02be613f520f1705fc",
-                "reference": "b795d20a7f6d5a0637128a02be613f520f1705fc",
-                "shasum": ""
-            },
-            "require": {
-                "amphp/amp": "^2",
-                "amphp/byte-stream": "^1",
-                "php": ">=7"
-            },
-            "require-dev": {
-                "amphp/phpunit-util": "^1",
-                "friendsofphp/php-cs-fixer": "^2.3",
-                "phpunit/phpunit": "^6"
-            },
-            "type": "library",
-            "autoload": {
-                "psr-4": {
-                    "Amp\\Process\\": "lib"
-                },
-                "files": [
-                    "lib/constants.php"
-                ]
-            },
-            "notification-url": "https://packagist.org/downloads/",
-            "license": [
-                "MIT"
-            ],
-            "authors": [
-                {
-                    "name": "Bob Weinand",
-                    "email": "bobwei9@hotmail.com"
-                },
-                {
-                    "name": "Niklas Keller",
-                    "email": "me@kelunik.com"
-                },
-                {
-                    "name": "Aaron Piotrowski",
-                    "email": "aaron@trowski.com"
-                }
-            ],
-            "description": "Asynchronous process manager.",
-            "homepage": "https://github.com/amphp/process",
-            "time": "2018-04-08T18:55:42+00:00"
-        },
-        {
-            "name": "amphp/sync",
-            "version": "v1.0.1",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/amphp/sync.git",
-                "reference": "a1d8f244eb19e3e2a96abc4686cebc80995bbc90"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/amphp/sync/zipball/a1d8f244eb19e3e2a96abc4686cebc80995bbc90",
-                "reference": "a1d8f244eb19e3e2a96abc4686cebc80995bbc90",
-                "shasum": ""
-            },
-            "require": {
-                "amphp/amp": "^2"
-            },
-            "require-dev": {
-                "amphp/phpunit-util": "^1",
-                "friendsofphp/php-cs-fixer": "^2.3",
-                "phpunit/phpunit": "^6"
-            },
-            "type": "library",
-            "autoload": {
-                "psr-4": {
-                    "Amp\\Sync\\": "lib"
-                },
-                "files": [
-                    "lib/functions.php"
-                ]
-            },
-            "notification-url": "https://packagist.org/downloads/",
-            "license": [
-                "MIT"
-            ],
-            "authors": [
-                {
-                    "name": "Stephen Coakley",
-                    "email": "me@stephencoakley.com"
-                },
-                {
-                    "name": "Aaron Piotrowski",
-                    "email": "aaron@trowski.com"
-                }
-            ],
-            "description": "Mutex, Semaphore, and other synchronization tools for Amp.",
-            "homepage": "https://github.com/amphp/sync",
-            "keywords": [
-                "async",
-                "asynchronous",
-                "mutex",
-                "semaphore",
-                "synchronization"
-            ],
-            "time": "2017-11-29T21:48:53+00:00"
-        },
-        {
-            "name": "beberlei/assert",
-            "version": "v2.9.5",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/beberlei/assert.git",
-                "reference": "c07fe163d6a3b3e4b1275981ec004397954afa89"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/beberlei/assert/zipball/c07fe163d6a3b3e4b1275981ec004397954afa89",
-                "reference": "c07fe163d6a3b3e4b1275981ec004397954afa89",
-                "shasum": ""
-            },
-            "require": {
-                "ext-mbstring": "*",
-                "php": ">=5.3"
-            },
-            "require-dev": {
-                "friendsofphp/php-cs-fixer": "^2.1.1",
-                "phpunit/phpunit": "^4.8.35|^5.7"
-            },
-            "type": "library",
-            "autoload": {
-                "psr-4": {
-                    "Assert\\": "lib/Assert"
-                },
-                "files": [
-                    "lib/Assert/functions.php"
-                ]
-            },
-            "notification-url": "https://packagist.org/downloads/",
-            "license": [
-                "BSD-2-Clause"
-            ],
-            "authors": [
-                {
-                    "name": "Benjamin Eberlei",
-                    "email": "kontakt@beberlei.de",
-                    "role": "Lead Developer"
-                },
-                {
-                    "name": "Richard Quadling",
-                    "email": "rquadling@gmail.com",
-                    "role": "Collaborator"
-                }
-            ],
-            "description": "Thin assertion library for input validation in business models.",
-            "keywords": [
-                "assert",
-                "assertion",
-                "validation"
-            ],
-            "time": "2018-04-16T11:18:27+00:00"
-        },
-        {
-            "name": "composer/ca-bundle",
-            "version": "1.1.1",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/composer/ca-bundle.git",
-                "reference": "d2c0a83b7533d6912e8d516756ebd34f893e9169"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/composer/ca-bundle/zipball/d2c0a83b7533d6912e8d516756ebd34f893e9169",
-                "reference": "d2c0a83b7533d6912e8d516756ebd34f893e9169",
-                "shasum": ""
-            },
-            "require": {
-                "ext-openssl": "*",
-                "ext-pcre": "*",
-                "php": "^5.3.2 || ^7.0"
-            },
-            "require-dev": {
-                "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.5",
-                "psr/log": "^1.0",
-                "symfony/process": "^2.5 || ^3.0 || ^4.0"
-            },
-            "type": "library",
-            "extra": {
-                "branch-alias": {
-                    "dev-master": "1.x-dev"
-                }
-            },
-            "autoload": {
-                "psr-4": {
-                    "Composer\\CaBundle\\": "src"
-                }
-            },
-            "notification-url": "https://packagist.org/downloads/",
-            "license": [
-                "MIT"
-            ],
-            "authors": [
-                {
-                    "name": "Jordi Boggiano",
-                    "email": "j.boggiano@seld.be",
-                    "homepage": "http://seld.be"
-                }
-            ],
-            "description": "Lets you find a path to the system CA bundle, and includes a fallback to the Mozilla CA bundle.",
-            "keywords": [
-                "cabundle",
-                "cacert",
-                "certificate",
-                "ssl",
-                "tls"
-            ],
-            "time": "2018-03-29T19:57:20+00:00"
-        },
-        {
-            "name": "composer/composer",
-            "version": "1.6.5",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/composer/composer.git",
-                "reference": "b184a92419cc9a9c4c6a09db555a94d441cb11c9"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/composer/composer/zipball/b184a92419cc9a9c4c6a09db555a94d441cb11c9",
-                "reference": "b184a92419cc9a9c4c6a09db555a94d441cb11c9",
-                "shasum": ""
-            },
-            "require": {
-                "composer/ca-bundle": "^1.0",
-                "composer/semver": "^1.0",
-                "composer/spdx-licenses": "^1.2",
-                "justinrainbow/json-schema": "^3.0 || ^4.0 || ^5.0",
-                "php": "^5.3.2 || ^7.0",
-                "psr/log": "^1.0",
-                "seld/cli-prompt": "^1.0",
-                "seld/jsonlint": "^1.4",
-                "seld/phar-utils": "^1.0",
-                "symfony/console": "^2.7 || ^3.0 || ^4.0",
-                "symfony/filesystem": "^2.7 || ^3.0 || ^4.0",
-                "symfony/finder": "^2.7 || ^3.0 || ^4.0",
-                "symfony/process": "^2.7 || ^3.0 || ^4.0"
-            },
-            "conflict": {
-                "symfony/console": "2.8.38"
-            },
-            "require-dev": {
-                "phpunit/phpunit": "^4.8.35 || ^5.7",
-                "phpunit/phpunit-mock-objects": "^2.3 || ^3.0"
-            },
-            "suggest": {
-                "ext-openssl": "Enabling the openssl extension allows you to access https URLs for repositories and packages",
-                "ext-zip": "Enabling the zip extension allows you to unzip archives",
-                "ext-zlib": "Allow gzip compression of HTTP requests"
-            },
-            "bin": [
-                "bin/composer"
-            ],
-            "type": "library",
-            "extra": {
-                "branch-alias": {
-                    "dev-master": "1.6-dev"
-                }
-            },
-            "autoload": {
-                "psr-4": {
-                    "Composer\\": "src/Composer"
-                }
-            },
-            "notification-url": "https://packagist.org/downloads/",
-            "license": [
-                "MIT"
-            ],
-            "authors": [
-                {
-                    "name": "Nils Adermann",
-                    "email": "naderman@naderman.de",
-                    "homepage": "http://www.naderman.de"
-                },
-                {
-                    "name": "Jordi Boggiano",
-                    "email": "j.boggiano@seld.be",
-                    "homepage": "http://seld.be"
-                }
-            ],
-            "description": "Composer helps you declare, manage and install dependencies of PHP projects, ensuring you have the right stack everywhere.",
-            "homepage": "https://getcomposer.org/",
-            "keywords": [
-                "autoload",
-                "dependency",
-                "package"
-            ],
-            "time": "2018-05-04T09:44:59+00:00"
-        },
-        {
-            "name": "composer/semver",
-            "version": "1.4.2",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/composer/semver.git",
-                "reference": "c7cb9a2095a074d131b65a8a0cd294479d785573"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/composer/semver/zipball/c7cb9a2095a074d131b65a8a0cd294479d785573",
-                "reference": "c7cb9a2095a074d131b65a8a0cd294479d785573",
-                "shasum": ""
-            },
-            "require": {
-                "php": "^5.3.2 || ^7.0"
-            },
-            "require-dev": {
-                "phpunit/phpunit": "^4.5 || ^5.0.5",
-                "phpunit/phpunit-mock-objects": "2.3.0 || ^3.0"
-            },
-            "type": "library",
-            "extra": {
-                "branch-alias": {
-                    "dev-master": "1.x-dev"
-                }
-            },
-            "autoload": {
-                "psr-4": {
-                    "Composer\\Semver\\": "src"
-                }
-            },
-            "notification-url": "https://packagist.org/downloads/",
-            "license": [
-                "MIT"
-            ],
-            "authors": [
-                {
-                    "name": "Nils Adermann",
-                    "email": "naderman@naderman.de",
-                    "homepage": "http://www.naderman.de"
-                },
-                {
-                    "name": "Jordi Boggiano",
-                    "email": "j.boggiano@seld.be",
-                    "homepage": "http://seld.be"
-                },
-                {
-                    "name": "Rob Bast",
-                    "email": "rob.bast@gmail.com",
-                    "homepage": "http://robbast.nl"
-                }
-            ],
-            "description": "Semver library that offers utilities, version constraint parsing and validation.",
-            "keywords": [
-                "semantic",
-                "semver",
-                "validation",
-                "versioning"
-            ],
-            "time": "2016-08-30T16:08:34+00:00"
-        },
-        {
-            "name": "composer/spdx-licenses",
-            "version": "1.4.0",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/composer/spdx-licenses.git",
-                "reference": "cb17687e9f936acd7e7245ad3890f953770dec1b"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/composer/spdx-licenses/zipball/cb17687e9f936acd7e7245ad3890f953770dec1b",
-                "reference": "cb17687e9f936acd7e7245ad3890f953770dec1b",
-                "shasum": ""
-            },
-            "require": {
-                "php": "^5.3.2 || ^7.0"
-            },
-            "require-dev": {
-                "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.5",
-                "phpunit/phpunit-mock-objects": "2.3.0 || ^3.0"
-            },
-            "type": "library",
-            "extra": {
-                "branch-alias": {
-                    "dev-master": "1.x-dev"
-                }
-            },
-            "autoload": {
-                "psr-4": {
-                    "Composer\\Spdx\\": "src"
-                }
-            },
-            "notification-url": "https://packagist.org/downloads/",
-            "license": [
-                "MIT"
-            ],
-            "authors": [
-                {
-                    "name": "Nils Adermann",
-                    "email": "naderman@naderman.de",
-                    "homepage": "http://www.naderman.de"
-                },
-                {
-                    "name": "Jordi Boggiano",
-                    "email": "j.boggiano@seld.be",
-                    "homepage": "http://seld.be"
-                },
-                {
-                    "name": "Rob Bast",
-                    "email": "rob.bast@gmail.com",
-                    "homepage": "http://robbast.nl"
-                }
-            ],
-            "description": "SPDX licenses list and validation library.",
-            "keywords": [
-                "license",
-                "spdx",
-                "validator"
-            ],
-            "time": "2018-04-30T10:33:04+00:00"
-        },
-        {
-            "name": "composer/xdebug-handler",
-            "version": "1.1.0",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/composer/xdebug-handler.git",
-                "reference": "c919dc6c62e221fc6406f861ea13433c0aa24f08"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/composer/xdebug-handler/zipball/c919dc6c62e221fc6406f861ea13433c0aa24f08",
-                "reference": "c919dc6c62e221fc6406f861ea13433c0aa24f08",
-                "shasum": ""
-            },
-            "require": {
-                "php": "^5.3.2 || ^7.0",
-                "psr/log": "^1.0"
-            },
-            "require-dev": {
-                "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.5"
-            },
-            "type": "library",
-            "autoload": {
-                "psr-4": {
-                    "Composer\\XdebugHandler\\": "src"
-                }
-            },
-            "notification-url": "https://packagist.org/downloads/",
-            "license": [
-                "MIT"
-            ],
-            "authors": [
-                {
-                    "name": "John Stevenson",
-                    "email": "john-stevenson@blueyonder.co.uk"
-                }
-            ],
-            "description": "Restarts a process without xdebug.",
-            "keywords": [
-                "Xdebug",
-                "performance"
-            ],
-            "time": "2018-04-11T15:42:36+00:00"
-        },
-        {
-            "name": "doctrine/annotations",
-            "version": "v1.6.0",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/doctrine/annotations.git",
-                "reference": "c7f2050c68a9ab0bdb0f98567ec08d80ea7d24d5"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/doctrine/annotations/zipball/c7f2050c68a9ab0bdb0f98567ec08d80ea7d24d5",
-                "reference": "c7f2050c68a9ab0bdb0f98567ec08d80ea7d24d5",
-                "shasum": ""
-            },
-            "require": {
-                "doctrine/lexer": "1.*",
-                "php": "^7.1"
-            },
-            "require-dev": {
-                "doctrine/cache": "1.*",
-                "phpunit/phpunit": "^6.4"
-            },
-            "type": "library",
-            "extra": {
-                "branch-alias": {
-                    "dev-master": "1.6.x-dev"
-                }
-            },
-            "autoload": {
-                "psr-4": {
-                    "Doctrine\\Common\\Annotations\\": "lib/Doctrine/Common/Annotations"
-                }
-            },
-            "notification-url": "https://packagist.org/downloads/",
-            "license": [
-                "MIT"
-            ],
-            "authors": [
-                {
-                    "name": "Roman Borschel",
-                    "email": "roman@code-factory.org"
-                },
-                {
-                    "name": "Benjamin Eberlei",
-                    "email": "kontakt@beberlei.de"
-                },
-                {
-                    "name": "Guilherme Blanco",
-                    "email": "guilhermeblanco@gmail.com"
-                },
-                {
-                    "name": "Jonathan Wage",
-                    "email": "jonwage@gmail.com"
-                },
-                {
-                    "name": "Johannes Schmitt",
-                    "email": "schmittjoh@gmail.com"
-                }
-            ],
-            "description": "Docblock Annotations Parser",
-            "homepage": "http://www.doctrine-project.org",
-            "keywords": [
-                "annotations",
-                "docblock",
-                "parser"
-            ],
-            "time": "2017-12-06T07:11:42+00:00"
-        },
-        {
-            "name": "doctrine/lexer",
-            "version": "v1.0.1",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/doctrine/lexer.git",
-                "reference": "83893c552fd2045dd78aef794c31e694c37c0b8c"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/doctrine/lexer/zipball/83893c552fd2045dd78aef794c31e694c37c0b8c",
-                "reference": "83893c552fd2045dd78aef794c31e694c37c0b8c",
-                "shasum": ""
-            },
-            "require": {
-                "php": ">=5.3.2"
-            },
-            "type": "library",
-            "extra": {
-                "branch-alias": {
-                    "dev-master": "1.0.x-dev"
-                }
-            },
-            "autoload": {
-                "psr-0": {
-                    "Doctrine\\Common\\Lexer\\": "lib/"
-                }
-            },
-            "notification-url": "https://packagist.org/downloads/",
-            "license": [
-                "MIT"
-            ],
-            "authors": [
-                {
-                    "name": "Roman Borschel",
-                    "email": "roman@code-factory.org"
-                },
-                {
-                    "name": "Guilherme Blanco",
-                    "email": "guilhermeblanco@gmail.com"
-                },
-                {
-                    "name": "Johannes Schmitt",
-                    "email": "schmittjoh@gmail.com"
-                }
-            ],
-            "description": "Base library for a lexer that can be used in Top-Down, Recursive Descent Parsers.",
-            "homepage": "http://www.doctrine-project.org",
-            "keywords": [
-                "lexer",
-                "parser"
-            ],
-            "time": "2014-09-09T13:34:57+00:00"
-        },
-        {
-            "name": "herrera-io/annotations",
-            "version": "1.0.1",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/kherge-abandoned/php-annotations.git",
-                "reference": "7d8b9a536da7f12aad8de7f28b2cb5266bde8da1"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/kherge-abandoned/php-annotations/zipball/7d8b9a536da7f12aad8de7f28b2cb5266bde8da1",
-                "reference": "7d8b9a536da7f12aad8de7f28b2cb5266bde8da1",
-                "shasum": ""
-            },
-            "require": {
-                "doctrine/annotations": "~1.0",
-                "php": ">=5.3.3"
-            },
-            "require-dev": {
-                "herrera-io/phpunit-test-case": "1.*",
-                "phpunit/phpunit": "3.7.*"
-            },
-            "type": "library",
-            "extra": {
-                "branch-alias": {
-                    "dev-master": "1.0-dev"
-                }
-            },
-            "autoload": {
-                "psr-0": {
-                    "Herrera\\Annotations": "src/lib"
-                }
-            },
-            "notification-url": "https://packagist.org/downloads/",
-            "license": [
-                "MIT"
-            ],
-            "authors": [
-                {
-                    "name": "Kevin Herrera",
-                    "email": "kevin@herrera.io",
-                    "homepage": "http://kevin.herrera.io"
-                }
-            ],
-            "description": "A tokenizer for Doctrine annotations.",
-            "homepage": "https://github.com/herrera-io/php-annotations",
-            "keywords": [
-                "annotations",
-                "doctrine",
-                "tokenizer"
-            ],
-            "abandoned": true,
-            "time": "2014-02-03T17:34:08+00:00"
-        },
-        {
-            "name": "humbug/box",
-            "version": "3.0.0-alpha.5",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/humbug/box.git",
-                "reference": "26b3f481e3b375f55c0644f501b831f7c05d8058"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/humbug/box/zipball/26b3f481e3b375f55c0644f501b831f7c05d8058",
-                "reference": "26b3f481e3b375f55c0644f501b831f7c05d8058",
-                "shasum": ""
-            },
-            "require": {
-                "amphp/parallel-functions": "^0.1.2",
-                "beberlei/assert": "^2.8",
-                "composer/composer": "^1.6",
-                "composer/xdebug-handler": "^1.1.0",
-                "ext-phar": "*",
-                "herrera-io/annotations": "~1.0",
-                "humbug/php-scoper": "^1.0@dev",
-                "justinrainbow/json-schema": "^5.2",
-                "nikic/iter": "^1.6",
-                "php": "^7.1",
-                "phpseclib/phpseclib": "~2.0",
-                "seld/jsonlint": "^1.6",
-                "symfony/console": "^3.4 || ^4.0",
-                "symfony/filesystem": "^3.4 || ^4.0",
-                "symfony/finder": "^3.4 || ^4.0",
-                "symfony/var-dumper": "^3.4 || ^4.0",
-                "webmozart/path-util": "^2.3"
-            },
-            "require-dev": {
-                "bamarni/composer-bin-plugin": "^1.2",
-                "infection/infection": "^0.8",
-                "mikey179/vfsstream": "^1.1",
-                "phpunit/phpunit": "^7.0"
-            },
-            "suggest": {
-                "ext-openssl": "To accelerate private key generation."
-            },
-            "bin": [
-                "bin/box"
-            ],
-            "type": "library",
-            "extra": {
-                "branch-alias": {
-                    "dev-master": "3.x-dev"
-                },
-                "bamarni-bin": {
-                    "bin-links": false
-                }
-            },
-            "autoload": {
-                "psr-4": {
-                    "KevinGH\\Box\\": "src"
-                },
-                "files": [
-                    "src/FileSystem/file_system.php",
-                    "src/functions.php"
-                ],
-                "exclude-from-classmap": [
-                    "/Test/"
-                ]
-            },
-            "notification-url": "https://packagist.org/downloads/",
-            "license": [
-                "MIT"
-            ],
-            "authors": [
-                {
-                    "name": "Kevin Herrera",
-                    "email": "kevin@herrera.io",
-                    "homepage": "http://kevin.herrera.io"
-                },
-                {
-                    "name": "Théo Fidry",
-                    "email": "theo.fidry@gmail.com"
-                }
-            ],
-            "description": "Fast, zero config application bundler with PHARs.",
-            "keywords": [
-                "phar"
-            ],
-            "time": "2018-05-04T22:04:10+00:00"
-        },
-        {
-            "name": "humbug/php-scoper",
-            "version": "dev-master",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/humbug/php-scoper.git",
-                "reference": "450fe36a7457847d0cb431e7379b5df9d05992a4"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/humbug/php-scoper/zipball/450fe36a7457847d0cb431e7379b5df9d05992a4",
-                "reference": "450fe36a7457847d0cb431e7379b5df9d05992a4",
-                "shasum": ""
-            },
-            "require": {
-                "nikic/php-parser": "^3.0",
-                "ocramius/package-versions": "^1.1",
-                "padraic/phar-updater": "^1.0",
-                "php": "^7.1",
-                "roave/better-reflection": "^2.0",
-                "symfony/console": "^3.2 || ^4.0",
-                "symfony/filesystem": "^3.2 || ^4.0",
-                "symfony/finder": "^3.2 || ^4.0"
-            },
-            "require-dev": {
-                "bamarni/composer-bin-plugin": "^1.1",
-                "phpunit/phpunit": "^6.1"
-            },
-            "bin": [
-                "bin/php-scoper"
-            ],
-            "type": "library",
-            "extra": {
-                "bamarni-bin": {
-                    "bin-links": false
-                },
-                "branch-alias": {
-                    "dev-master": "1.0-dev"
-                }
-            },
-            "autoload": {
-                "files": [
-                    "src/functions.php"
-                ],
-                "psr-4": {
-                    "Humbug\\PhpScoper\\": "src/"
-                }
-            },
-            "notification-url": "https://packagist.org/downloads/",
-            "license": [
-                "MIT"
-            ],
-            "authors": [
-                {
-                    "name": "Bernhard Schussek",
-                    "email": "bschussek@gmail.com"
-                },
-                {
-                    "name": "Théo Fidry",
-                    "email": "theo.fidry@gmail.com"
-                },
-                {
-                    "name": "Pádraic Brady",
-                    "email": "padraic.brady@gmail.com"
-                }
-            ],
-            "description": "Prefixes all PHP namespaces in a file or directory.",
-            "time": "2018-04-25T21:59:07+00:00"
-        },
-        {
-            "name": "justinrainbow/json-schema",
-            "version": "5.2.7",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/justinrainbow/json-schema.git",
-                "reference": "8560d4314577199ba51bf2032f02cd1315587c23"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/justinrainbow/json-schema/zipball/8560d4314577199ba51bf2032f02cd1315587c23",
-                "reference": "8560d4314577199ba51bf2032f02cd1315587c23",
-                "shasum": ""
-            },
-            "require": {
-                "php": ">=5.3.3"
-            },
-            "require-dev": {
-                "friendsofphp/php-cs-fixer": "^2.1",
-                "json-schema/json-schema-test-suite": "1.2.0",
-                "phpunit/phpunit": "^4.8.35"
-            },
-            "bin": [
-                "bin/validate-json"
-            ],
-            "type": "library",
-            "extra": {
-                "branch-alias": {
-                    "dev-master": "5.0.x-dev"
-                }
-            },
-            "autoload": {
-                "psr-4": {
-                    "JsonSchema\\": "src/JsonSchema/"
-                }
-            },
-            "notification-url": "https://packagist.org/downloads/",
-            "license": [
-                "MIT"
-            ],
-            "authors": [
-                {
-                    "name": "Bruno Prieto Reis",
-                    "email": "bruno.p.reis@gmail.com"
-                },
-                {
-                    "name": "Justin Rainbow",
-                    "email": "justin.rainbow@gmail.com"
-                },
-                {
-                    "name": "Igor Wiedler",
-                    "email": "igor@wiedler.ch"
-                },
-                {
-                    "name": "Robert Schönthal",
-                    "email": "seroscho@googlemail.com"
-                }
-            ],
-            "description": "A library to validate a json schema.",
-            "homepage": "https://github.com/justinrainbow/json-schema",
-            "keywords": [
-                "json",
-                "schema"
-            ],
-            "time": "2018-02-14T22:26:30+00:00"
-        },
-        {
-            "name": "nikic/iter",
-            "version": "v1.6.0",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/nikic/iter.git",
-                "reference": "fed36b417ea93fe9b4b7cb2e2abf98d91092564c"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/nikic/iter/zipball/fed36b417ea93fe9b4b7cb2e2abf98d91092564c",
-                "reference": "fed36b417ea93fe9b4b7cb2e2abf98d91092564c",
-                "shasum": ""
-            },
-            "require": {
-                "php": ">=5.5.0"
-            },
-            "require-dev": {
-                "phpunit/phpunit": "~4.0|~5.0"
-            },
-            "type": "library",
-            "autoload": {
-                "files": [
-                    "src/bootstrap.php"
-                ]
-            },
-            "notification-url": "https://packagist.org/downloads/",
-            "license": [
-                "BSD-3-Clause"
-            ],
-            "authors": [
-                {
-                    "name": "Nikita Popov",
-                    "email": "nikic@php.net"
-                }
-            ],
-            "description": "Iteration primitives using generators",
-            "keywords": [
-                "functional",
-                "generator",
-                "iterator"
-            ],
-            "time": "2017-11-10T22:56:03+00:00"
-        },
-        {
-            "name": "nikic/php-parser",
-            "version": "v3.1.5",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/nikic/PHP-Parser.git",
-                "reference": "bb87e28e7d7b8d9a7fda231d37457c9210faf6ce"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/bb87e28e7d7b8d9a7fda231d37457c9210faf6ce",
-                "reference": "bb87e28e7d7b8d9a7fda231d37457c9210faf6ce",
-                "shasum": ""
-            },
-            "require": {
-                "ext-tokenizer": "*",
-                "php": ">=5.5"
-            },
-            "require-dev": {
-                "phpunit/phpunit": "~4.0|~5.0"
-            },
-            "bin": [
-                "bin/php-parse"
-            ],
-            "type": "library",
-            "extra": {
-                "branch-alias": {
-                    "dev-master": "3.0-dev"
-                }
-            },
-            "autoload": {
-                "psr-4": {
-                    "PhpParser\\": "lib/PhpParser"
-                }
-            },
-            "notification-url": "https://packagist.org/downloads/",
-            "license": [
-                "BSD-3-Clause"
-            ],
-            "authors": [
-                {
-                    "name": "Nikita Popov"
-                }
-            ],
-            "description": "A PHP parser written in PHP",
-            "keywords": [
-                "parser",
-                "php"
-            ],
-            "time": "2018-02-28T20:30:58+00:00"
-        },
-        {
-            "name": "ocramius/package-versions",
-            "version": "1.3.0",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/Ocramius/PackageVersions.git",
-                "reference": "4489d5002c49d55576fa0ba786f42dbb009be46f"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/Ocramius/PackageVersions/zipball/4489d5002c49d55576fa0ba786f42dbb009be46f",
-                "reference": "4489d5002c49d55576fa0ba786f42dbb009be46f",
-                "shasum": ""
-            },
-            "require": {
-                "composer-plugin-api": "^1.0.0",
-                "php": "^7.1.0"
-            },
-            "require-dev": {
-                "composer/composer": "^1.6.3",
-                "ext-zip": "*",
-                "infection/infection": "^0.7.1",
-                "phpunit/phpunit": "^7.0.0"
-            },
-            "type": "composer-plugin",
-            "extra": {
-                "class": "PackageVersions\\Installer",
-                "branch-alias": {
-                    "dev-master": "2.0.x-dev"
-                }
-            },
-            "autoload": {
-                "psr-4": {
-                    "PackageVersions\\": "src/PackageVersions"
-                }
-            },
-            "notification-url": "https://packagist.org/downloads/",
-            "license": [
-                "MIT"
-            ],
-            "authors": [
-                {
-                    "name": "Marco Pivetta",
-                    "email": "ocramius@gmail.com"
-                }
-            ],
-            "description": "Composer plugin that provides efficient querying for installed package versions (no runtime IO)",
-            "time": "2018-02-05T13:05:30+00:00"
-        },
-        {
-            "name": "opis/closure",
-            "version": "3.0.12",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/opis/closure.git",
-                "reference": "507a28d15e79258d404ba76e73976ba895d0eb11"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/opis/closure/zipball/507a28d15e79258d404ba76e73976ba895d0eb11",
-                "reference": "507a28d15e79258d404ba76e73976ba895d0eb11",
-                "shasum": ""
-            },
-            "require": {
-                "php": ">=5.4.0"
-            },
-            "require-dev": {
-                "jeremeamia/superclosure": "^2.0",
-                "phpunit/phpunit": "^4.0"
-            },
-            "type": "library",
-            "extra": {
-                "branch-alias": {
-                    "dev-master": "3.0.x-dev"
-                }
-            },
-            "autoload": {
-                "psr-4": {
-                    "Opis\\Closure\\": "src/"
-                },
-                "files": [
-                    "functions.php"
-                ]
-            },
-            "notification-url": "https://packagist.org/downloads/",
-            "license": [
-                "MIT"
-            ],
-            "authors": [
-                {
-                    "name": "Marius Sarca",
-                    "email": "marius.sarca@gmail.com"
-                }
-            ],
-            "description": "A library that can be used to serialize closures (anonymous functions) and arbitrary objects.",
-            "homepage": "http://www.opis.io/closure",
-            "keywords": [
-                "anonymous functions",
-                "closure",
-                "function",
-                "serializable",
-                "serialization",
-                "serialize"
-            ],
-            "time": "2018-02-23T08:08:14+00:00"
-        },
-        {
-            "name": "padraic/humbug_get_contents",
-            "version": "1.1.2",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/humbug/file_get_contents.git",
-                "reference": "dcb086060c9dd6b2f51d8f7a895500307110b7a7"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/humbug/file_get_contents/zipball/dcb086060c9dd6b2f51d8f7a895500307110b7a7",
-                "reference": "dcb086060c9dd6b2f51d8f7a895500307110b7a7",
-                "shasum": ""
-            },
-            "require": {
-                "composer/ca-bundle": "^1.0",
-                "ext-openssl": "*",
-                "php": "^5.3 || ^7.0 || ^7.1 || ^7.2"
-            },
-            "require-dev": {
-                "bamarni/composer-bin-plugin": "^1.1",
-                "mikey179/vfsstream": "^1.6",
-                "phpunit/phpunit": "^4.8 || ^5.7 || ^6.5"
-            },
-            "type": "library",
-            "extra": {
-                "bamarni-bin": {
-                    "bin-links": false
-                },
-                "branch-alias": {
-                    "dev-master": "2.0-dev"
-                }
-            },
-            "autoload": {
-                "psr-4": {
-                    "Humbug\\": "src/"
-                },
-                "files": [
-                    "src/function.php",
-                    "src/functions.php"
-                ]
-            },
-            "notification-url": "https://packagist.org/downloads/",
-            "license": [
-                "BSD-3-Clause"
-            ],
-            "authors": [
-                {
-                    "name": "Padraic Brady",
-                    "email": "padraic.brady@gmail.com",
-                    "homepage": "http://blog.astrumfutura.com"
-                },
-                {
-                    "name": "Théo Fidry",
-                    "email": "theo.fidry@gmail.com"
-                }
-            ],
-            "description": "Secure wrapper for accessing HTTPS resources with file_get_contents for PHP 5.3+",
-            "homepage": "https://github.com/padraic/file_get_contents",
-            "keywords": [
-                "download",
-                "file_get_contents",
-                "http",
-                "https",
-                "ssl",
-                "tls"
-            ],
-            "time": "2018-02-12T18:47:17+00:00"
-        },
-        {
-            "name": "padraic/phar-updater",
-            "version": "v1.0.6",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/humbug/phar-updater.git",
-                "reference": "d01d3b8f26e541ac9b9eeba1e18d005d852f7ff1"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/humbug/phar-updater/zipball/d01d3b8f26e541ac9b9eeba1e18d005d852f7ff1",
-                "reference": "d01d3b8f26e541ac9b9eeba1e18d005d852f7ff1",
-                "shasum": ""
-            },
-            "require": {
-                "padraic/humbug_get_contents": "^1.0",
-                "php": ">=5.3.3"
-            },
-            "require-dev": {
-                "phpunit/phpunit": "~4.0"
-            },
-            "type": "library",
-            "extra": {
-                "branch-alias": {
-                    "dev-master": "1.0-dev"
-                }
-            },
-            "autoload": {
-                "psr-4": {
-                    "Humbug\\SelfUpdate\\": "src/"
-                }
-            },
-            "notification-url": "https://packagist.org/downloads/",
-            "license": [
-                "BSD-3-Clause"
-            ],
-            "authors": [
-                {
-                    "name": "Pádraic Brady",
-                    "email": "padraic.brady@gmail.com",
-                    "homepage": "http://blog.astrumfutura.com"
-                }
-            ],
-            "description": "A thing to make PHAR self-updating easy and secure.",
-            "keywords": [
-                "humbug",
-                "phar",
-                "self-update",
-                "update"
-            ],
-            "time": "2018-03-30T12:52:15+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": "phpseclib/phpseclib",
-            "version": "2.0.11",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/phpseclib/phpseclib.git",
-                "reference": "7053f06f91b3de78e143d430e55a8f7889efc08b"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/phpseclib/phpseclib/zipball/7053f06f91b3de78e143d430e55a8f7889efc08b",
-                "reference": "7053f06f91b3de78e143d430e55a8f7889efc08b",
-                "shasum": ""
-            },
-            "require": {
-                "php": ">=5.3.3"
-            },
-            "require-dev": {
-                "phing/phing": "~2.7",
-                "phpunit/phpunit": "^4.8.35|^5.7|^6.0",
-                "sami/sami": "~2.0",
-                "squizlabs/php_codesniffer": "~2.0"
-            },
-            "suggest": {
-                "ext-gmp": "Install the GMP (GNU Multiple Precision) extension in order to speed up arbitrary precision integer arithmetic operations.",
-                "ext-libsodium": "SSH2/SFTP can make use of some algorithms provided by the libsodium-php extension.",
-                "ext-mcrypt": "Install the Mcrypt extension in order to speed up a few other cryptographic operations.",
-                "ext-openssl": "Install the OpenSSL extension in order to speed up a wide variety of cryptographic operations."
-            },
-            "type": "library",
-            "autoload": {
-                "files": [
-                    "phpseclib/bootstrap.php"
-                ],
-                "psr-4": {
-                    "phpseclib\\": "phpseclib/"
-                }
-            },
-            "notification-url": "https://packagist.org/downloads/",
-            "license": [
-                "MIT"
-            ],
-            "authors": [
-                {
-                    "name": "Jim Wigginton",
-                    "email": "terrafrost@php.net",
-                    "role": "Lead Developer"
-                },
-                {
-                    "name": "Patrick Monnerat",
-                    "email": "pm@datasphere.ch",
-                    "role": "Developer"
-                },
-                {
-                    "name": "Andreas Fischer",
-                    "email": "bantu@phpbb.com",
-                    "role": "Developer"
-                },
-                {
-                    "name": "Hans-Jürgen Petrich",
-                    "email": "petrich@tronic-media.com",
-                    "role": "Developer"
-                },
-                {
-                    "name": "Graham Campbell",
-                    "email": "graham@alt-three.com",
-                    "role": "Developer"
-                }
-            ],
-            "description": "PHP Secure Communications Library - Pure-PHP implementations of RSA, AES, SSH2, SFTP, X.509 etc.",
-            "homepage": "http://phpseclib.sourceforge.net",
-            "keywords": [
-                "BigInteger",
-                "aes",
-                "asn.1",
-                "asn1",
-                "blowfish",
-                "crypto",
-                "cryptography",
-                "encryption",
-                "rsa",
-                "security",
-                "sftp",
-                "signature",
-                "signing",
-                "ssh",
-                "twofish",
-                "x.509",
-                "x509"
-            ],
-            "time": "2018-04-15T16:55:05+00:00"
-        },
-        {
-            "name": "psr/log",
-            "version": "1.0.2",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/php-fig/log.git",
-                "reference": "4ebe3a8bf773a19edfe0a84b6585ba3d401b724d"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/php-fig/log/zipball/4ebe3a8bf773a19edfe0a84b6585ba3d401b724d",
-                "reference": "4ebe3a8bf773a19edfe0a84b6585ba3d401b724d",
-                "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": "2016-10-10T12:19:37+00:00"
-        },
-        {
-            "name": "roave/better-reflection",
-            "version": "2.0.2",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/Roave/BetterReflection.git",
-                "reference": "efc45b50cb52d5eeaacab15741376e981e28738b"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/Roave/BetterReflection/zipball/efc45b50cb52d5eeaacab15741376e981e28738b",
-                "reference": "efc45b50cb52d5eeaacab15741376e981e28738b",
-                "shasum": ""
-            },
-            "require": {
-                "nikic/php-parser": "^3.1.1",
-                "php": ">=7.1.0,<7.3.0",
-                "phpdocumentor/reflection-docblock": "^4.1.1",
-                "phpdocumentor/type-resolver": "^0.4.0",
-                "roave/signature": "^1.0"
-            },
-            "require-dev": {
-                "phpunit/phpunit": "^6.3.0"
-            },
-            "suggest": {
-                "composer/composer": "Required to use the ComposerSourceLocator"
-            },
-            "type": "library",
-            "autoload": {
-                "psr-4": {
-                    "Roave\\BetterReflection\\": "src"
-                }
-            },
-            "notification-url": "https://packagist.org/downloads/",
-            "license": [
-                "MIT"
-            ],
-            "authors": [
-                {
-                    "name": "Marco Pivetta",
-                    "email": "ocramius@gmail.com",
-                    "homepage": "http://ocramius.github.io/"
-                },
-                {
-                    "name": "James Titcumb",
-                    "email": "james@asgrim.com",
-                    "homepage": "https://github.com/asgrim"
-                },
-                {
-                    "name": "Gary Hockin",
-                    "email": "gary@roave.com",
-                    "homepage": "https://github.com/geeh"
-                },
-                {
-                    "name": "Jaroslav Hanslík",
-                    "email": "kukulich@kukulich.cz",
-                    "homepage": "https://github.com/kukulich"
-                }
-            ],
-            "description": "Better Reflection - an improved code reflection API",
-            "time": "2018-02-05T08:08:57+00:00"
-        },
-        {
-            "name": "roave/signature",
-            "version": "1.0.0",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/Roave/Signature.git",
-                "reference": "bed4ecbdd7f312ab6bb39561ac191f520bcee386"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/Roave/Signature/zipball/bed4ecbdd7f312ab6bb39561ac191f520bcee386",
-                "reference": "bed4ecbdd7f312ab6bb39561ac191f520bcee386",
-                "shasum": ""
-            },
-            "require": {
-                "php": "^7.0|^7.1"
-            },
-            "require-dev": {
-                "phpunit/phpunit": "^5.6"
-            },
-            "type": "library",
-            "autoload": {
-                "psr-4": {
-                    "Roave\\Signature\\": "src"
-                }
-            },
-            "notification-url": "https://packagist.org/downloads/",
-            "license": [
-                "MIT"
-            ],
-            "description": "Sign and verify stuff",
-            "time": "2017-02-17T13:53:21+00:00"
-        },
-        {
-            "name": "seld/cli-prompt",
-            "version": "1.0.3",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/Seldaek/cli-prompt.git",
-                "reference": "a19a7376a4689d4d94cab66ab4f3c816019ba8dd"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/Seldaek/cli-prompt/zipball/a19a7376a4689d4d94cab66ab4f3c816019ba8dd",
-                "reference": "a19a7376a4689d4d94cab66ab4f3c816019ba8dd",
-                "shasum": ""
-            },
-            "require": {
-                "php": ">=5.3"
-            },
-            "type": "library",
-            "extra": {
-                "branch-alias": {
-                    "dev-master": "1.x-dev"
-                }
-            },
-            "autoload": {
-                "psr-4": {
-                    "Seld\\CliPrompt\\": "src/"
-                }
-            },
-            "notification-url": "https://packagist.org/downloads/",
-            "license": [
-                "MIT"
-            ],
-            "authors": [
-                {
-                    "name": "Jordi Boggiano",
-                    "email": "j.boggiano@seld.be"
-                }
-            ],
-            "description": "Allows you to prompt for user input on the command line, and optionally hide the characters they type",
-            "keywords": [
-                "cli",
-                "console",
-                "hidden",
-                "input",
-                "prompt"
-            ],
-            "time": "2017-03-18T11:32:45+00:00"
-        },
-        {
-            "name": "seld/jsonlint",
-            "version": "1.7.1",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/Seldaek/jsonlint.git",
-                "reference": "d15f59a67ff805a44c50ea0516d2341740f81a38"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/Seldaek/jsonlint/zipball/d15f59a67ff805a44c50ea0516d2341740f81a38",
-                "reference": "d15f59a67ff805a44c50ea0516d2341740f81a38",
-                "shasum": ""
-            },
-            "require": {
-                "php": "^5.3 || ^7.0"
-            },
-            "require-dev": {
-                "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.0"
-            },
-            "bin": [
-                "bin/jsonlint"
-            ],
-            "type": "library",
-            "autoload": {
-                "psr-4": {
-                    "Seld\\JsonLint\\": "src/Seld/JsonLint/"
-                }
-            },
-            "notification-url": "https://packagist.org/downloads/",
-            "license": [
-                "MIT"
-            ],
-            "authors": [
-                {
-                    "name": "Jordi Boggiano",
-                    "email": "j.boggiano@seld.be",
-                    "homepage": "http://seld.be"
-                }
-            ],
-            "description": "JSON Linter",
-            "keywords": [
-                "json",
-                "linter",
-                "parser",
-                "validator"
-            ],
-            "time": "2018-01-24T12:46:19+00:00"
-        },
-        {
-            "name": "seld/phar-utils",
-            "version": "1.0.1",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/Seldaek/phar-utils.git",
-                "reference": "7009b5139491975ef6486545a39f3e6dad5ac30a"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/Seldaek/phar-utils/zipball/7009b5139491975ef6486545a39f3e6dad5ac30a",
-                "reference": "7009b5139491975ef6486545a39f3e6dad5ac30a",
-                "shasum": ""
-            },
-            "require": {
-                "php": ">=5.3"
-            },
-            "type": "library",
-            "extra": {
-                "branch-alias": {
-                    "dev-master": "1.x-dev"
-                }
-            },
-            "autoload": {
-                "psr-4": {
-                    "Seld\\PharUtils\\": "src/"
-                }
-            },
-            "notification-url": "https://packagist.org/downloads/",
-            "license": [
-                "MIT"
-            ],
-            "authors": [
-                {
-                    "name": "Jordi Boggiano",
-                    "email": "j.boggiano@seld.be"
-                }
-            ],
-            "description": "PHAR file format utilities, for when PHP phars you up",
-            "keywords": [
-                "phra"
-            ],
-            "time": "2015-10-13T18:44:15+00:00"
-        },
-        {
-            "name": "symfony/console",
-            "version": "v4.0.9",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/symfony/console.git",
-                "reference": "3e820bc2c520a87ca209ad8fa961c97f42e0b4ae"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/symfony/console/zipball/3e820bc2c520a87ca209ad8fa961c97f42e0b4ae",
-                "reference": "3e820bc2c520a87ca209ad8fa961c97f42e0b4ae",
-                "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.0-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-04-30T01:23:47+00:00"
-        },
-        {
-            "name": "symfony/filesystem",
-            "version": "v4.0.9",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/symfony/filesystem.git",
-                "reference": "5d2d655b2c72fc4d9bf7e9bf14f72a447b940f21"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/symfony/filesystem/zipball/5d2d655b2c72fc4d9bf7e9bf14f72a447b940f21",
-                "reference": "5d2d655b2c72fc4d9bf7e9bf14f72a447b940f21",
-                "shasum": ""
-            },
-            "require": {
-                "php": "^7.1.3"
-            },
-            "type": "library",
-            "extra": {
-                "branch-alias": {
-                    "dev-master": "4.0-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-02-22T10:50:29+00:00"
-        },
-        {
-            "name": "symfony/finder",
-            "version": "v4.0.9",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/symfony/finder.git",
-                "reference": "ca27c02b7a3fef4828c998c2ff9ba7aae1641c49"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/symfony/finder/zipball/ca27c02b7a3fef4828c998c2ff9ba7aae1641c49",
-                "reference": "ca27c02b7a3fef4828c998c2ff9ba7aae1641c49",
-                "shasum": ""
-            },
-            "require": {
-                "php": "^7.1.3"
-            },
-            "type": "library",
-            "extra": {
-                "branch-alias": {
-                    "dev-master": "4.0-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-04-04T05:10:37+00:00"
-        },
-        {
-            "name": "symfony/polyfill-mbstring",
-            "version": "v1.8.0",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/symfony/polyfill-mbstring.git",
-                "reference": "3296adf6a6454a050679cde90f95350ad604b171"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/3296adf6a6454a050679cde90f95350ad604b171",
-                "reference": "3296adf6a6454a050679cde90f95350ad604b171",
-                "shasum": ""
-            },
-            "require": {
-                "php": ">=5.3.3"
-            },
-            "suggest": {
-                "ext-mbstring": "For best performance"
-            },
-            "type": "library",
-            "extra": {
-                "branch-alias": {
-                    "dev-master": "1.8-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-04-26T10:06:28+00:00"
-        },
-        {
-            "name": "symfony/polyfill-php72",
-            "version": "v1.8.0",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/symfony/polyfill-php72.git",
-                "reference": "a4576e282d782ad82397f3e4ec1df8e0f0cafb46"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/symfony/polyfill-php72/zipball/a4576e282d782ad82397f3e4ec1df8e0f0cafb46",
-                "reference": "a4576e282d782ad82397f3e4ec1df8e0f0cafb46",
-                "shasum": ""
-            },
-            "require": {
-                "php": ">=5.3.3"
-            },
-            "type": "library",
-            "extra": {
-                "branch-alias": {
-                    "dev-master": "1.8-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-04-26T10:06:28+00:00"
-        },
-        {
-            "name": "symfony/process",
-            "version": "v4.0.9",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/symfony/process.git",
-                "reference": "d7dc1ee5dfe9f732cb1bba7310f5b99f2b7a6d25"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/symfony/process/zipball/d7dc1ee5dfe9f732cb1bba7310f5b99f2b7a6d25",
-                "reference": "d7dc1ee5dfe9f732cb1bba7310f5b99f2b7a6d25",
-                "shasum": ""
-            },
-            "require": {
-                "php": "^7.1.3"
-            },
-            "type": "library",
-            "extra": {
-                "branch-alias": {
-                    "dev-master": "4.0-dev"
-                }
-            },
-            "autoload": {
-                "psr-4": {
-                    "Symfony\\Component\\Process\\": ""
-                },
-                "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 Process Component",
-            "homepage": "https://symfony.com",
-            "time": "2018-04-03T05:24:00+00:00"
-        },
-        {
-            "name": "symfony/var-dumper",
-            "version": "v4.0.9",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/symfony/var-dumper.git",
-                "reference": "3c34cf3f4bbac9e003d9325225e9ef1a49180a18"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/symfony/var-dumper/zipball/3c34cf3f4bbac9e003d9325225e9ef1a49180a18",
-                "reference": "3c34cf3f4bbac9e003d9325225e9ef1a49180a18",
-                "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"
-            },
-            "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"
-            },
-            "type": "library",
-            "extra": {
-                "branch-alias": {
-                    "dev-master": "4.0-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-04-26T16:12:06+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"
-        },
-        {
-            "name": "webmozart/path-util",
-            "version": "2.3.0",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/webmozart/path-util.git",
-                "reference": "d939f7edc24c9a1bb9c0dee5cb05d8e859490725"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/webmozart/path-util/zipball/d939f7edc24c9a1bb9c0dee5cb05d8e859490725",
-                "reference": "d939f7edc24c9a1bb9c0dee5cb05d8e859490725",
-                "shasum": ""
-            },
-            "require": {
-                "php": ">=5.3.3",
-                "webmozart/assert": "~1.0"
-            },
-            "require-dev": {
-                "phpunit/phpunit": "^4.6",
-                "sebastian/version": "^1.0.1"
-            },
-            "type": "library",
-            "extra": {
-                "branch-alias": {
-                    "dev-master": "2.3-dev"
-                }
-            },
-            "autoload": {
-                "psr-4": {
-                    "Webmozart\\PathUtil\\": "src/"
-                }
-            },
-            "notification-url": "https://packagist.org/downloads/",
-            "license": [
-                "MIT"
-            ],
-            "authors": [
-                {
-                    "name": "Bernhard Schussek",
-                    "email": "bschussek@gmail.com"
-                }
-            ],
-            "description": "A robust cross-platform utility for normalizing, comparing and modifying file paths.",
-            "time": "2015-12-17T08:42:14+00:00"
-        }
-    ],
-    "packages-dev": [],
-    "aliases": [],
-    "minimum-stability": "dev",
-    "stability-flags": {
-        "humbug/box": 15
-    },
-    "prefer-stable": true,
-    "prefer-lowest": false,
-    "platform": [],
-    "platform-dev": []
-}
diff --git a/vendor/symfony/filesystem/Filesystem.php b/vendor/symfony/filesystem/Filesystem.php
index 0b5297ecf0..96b2e96009 100644
--- a/vendor/symfony/filesystem/Filesystem.php
+++ b/vendor/symfony/filesystem/Filesystem.php
@@ -47,7 +47,7 @@ public function copy($originFile, $targetFile, $overwriteNewerFiles = false)
         $this->mkdir(\dirname($targetFile));
 
         $doCopy = true;
-        if (!$overwriteNewerFiles && null === parse_url($originFile, PHP_URL_HOST) && is_file($targetFile)) {
+        if (!$overwriteNewerFiles && null === parse_url($originFile, \PHP_URL_HOST) && is_file($targetFile)) {
             $doCopy = filemtime($originFile) > filemtime($targetFile);
         }
 
@@ -118,7 +118,7 @@ public function mkdir($dirs, $mode = 0777)
      */
     public function exists($files)
     {
-        $maxPathLength = PHP_MAXPATHLEN - 2;
+        $maxPathLength = \PHP_MAXPATHLEN - 2;
 
         foreach ($this->toIterable($files) as $file) {
             if (\strlen($file) > $maxPathLength) {
@@ -179,7 +179,7 @@ public function remove($files)
                 if (!self::box('rmdir', $file) && file_exists($file)) {
                     throw new IOException(sprintf('Failed to remove directory "%s": ', $file).self::$lastError);
                 }
-            } elseif (!self::box('unlink', $file) && file_exists($file)) {
+            } elseif (!self::box('unlink', $file) && (false !== strpos(self::$lastError, 'Permission denied') || file_exists($file))) {
                 throw new IOException(sprintf('Failed to remove file "%s": ', $file).self::$lastError);
             }
         }
@@ -198,7 +198,7 @@ public function remove($files)
     public function chmod($files, $mode, $umask = 0000, $recursive = false)
     {
         foreach ($this->toIterable($files) as $file) {
-            if (true !== @chmod($file, $mode & ~$umask)) {
+            if ((\PHP_VERSION_ID < 80000 || \is_int($mode)) && true !== @chmod($file, $mode & ~$umask)) {
                 throw new IOException(sprintf('Failed to chmod file "%s".', $file), 0, null, $file);
             }
             if ($recursive && is_dir($file) && !is_link($file)) {
@@ -301,7 +301,7 @@ public function rename($origin, $target, $overwrite = false)
      */
     private function isReadable($filename)
     {
-        $maxPathLength = PHP_MAXPATHLEN - 2;
+        $maxPathLength = \PHP_MAXPATHLEN - 2;
 
         if (\strlen($filename) > $maxPathLength) {
             throw new IOException(sprintf('Could not check if file is readable because path length exceeds %d characters.', $maxPathLength), 0, null, $filename);
@@ -446,7 +446,7 @@ public function readlink($path, $canonicalize = false)
     public function makePathRelative($endPath, $startPath)
     {
         if (!$this->isAbsolutePath($endPath) || !$this->isAbsolutePath($startPath)) {
-            @trigger_error(sprintf('Support for passing relative paths to %s() is deprecated since Symfony 3.4 and will be removed in 4.0.', __METHOD__), E_USER_DEPRECATED);
+            @trigger_error(sprintf('Support for passing relative paths to %s() is deprecated since Symfony 3.4 and will be removed in 4.0.', __METHOD__), \E_USER_DEPRECATED);
         }
 
         // Normalize separators on Windows
@@ -599,13 +599,13 @@ public function mirror($originDir, $targetDir, \Traversable $iterator = null, $o
      */
     public function isAbsolutePath($file)
     {
-        return strspn($file, '/\\', 0, 1)
+        return '' !== (string) $file && (strspn($file, '/\\', 0, 1)
             || (\strlen($file) > 3 && ctype_alpha($file[0])
                 && ':' === $file[1]
                 && strspn($file, '/\\', 2, 1)
             )
-            || null !== parse_url($file, PHP_URL_SCHEME)
-        ;
+            || null !== parse_url($file, \PHP_URL_SCHEME)
+        );
     }
 
     /**
@@ -713,7 +713,7 @@ public function appendToFile($filename, $content)
             throw new IOException(sprintf('Unable to write to the "%s" directory.', $dir), 0, null, $dir);
         }
 
-        if (false === @file_put_contents($filename, $content, FILE_APPEND)) {
+        if (false === @file_put_contents($filename, $content, \FILE_APPEND)) {
             throw new IOException(sprintf('Failed to write file "%s".', $filename), 0, null, $filename);
         }
     }
diff --git a/vendor/symfony/filesystem/LockHandler.php b/vendor/symfony/filesystem/LockHandler.php
index 8e0eb74121..2aacfa719b 100644
--- a/vendor/symfony/filesystem/LockHandler.php
+++ b/vendor/symfony/filesystem/LockHandler.php
@@ -15,7 +15,7 @@
 use Symfony\Component\Lock\Store\FlockStore;
 use Symfony\Component\Lock\Store\SemaphoreStore;
 
-@trigger_error(sprintf('The %s class is deprecated since Symfony 3.4 and will be removed in 4.0. Use %s or %s instead.', LockHandler::class, SemaphoreStore::class, FlockStore::class), E_USER_DEPRECATED);
+@trigger_error(sprintf('The %s class is deprecated since Symfony 3.4 and will be removed in 4.0. Use %s or %s instead.', LockHandler::class, SemaphoreStore::class, FlockStore::class), \E_USER_DEPRECATED);
 
 /**
  * LockHandler class provides a simple abstraction to lock anything by means of
@@ -97,7 +97,7 @@ public function lock($blocking = false)
 
         // On Windows, even if PHP doc says the contrary, LOCK_NB works, see
         // https://bugs.php.net/54129
-        if (!flock($this->handle, LOCK_EX | ($blocking ? 0 : LOCK_NB))) {
+        if (!flock($this->handle, \LOCK_EX | ($blocking ? 0 : \LOCK_NB))) {
             fclose($this->handle);
             $this->handle = null;
 
@@ -113,7 +113,7 @@ public function lock($blocking = false)
     public function release()
     {
         if ($this->handle) {
-            flock($this->handle, LOCK_UN | LOCK_NB);
+            flock($this->handle, \LOCK_UN | \LOCK_NB);
             fclose($this->handle);
             $this->handle = null;
         }
diff --git a/vendor/symfony/filesystem/Tests/FilesystemTest.php b/vendor/symfony/filesystem/Tests/FilesystemTest.php
index 8ac80437fe..b157cc4ed3 100644
--- a/vendor/symfony/filesystem/Tests/FilesystemTest.php
+++ b/vendor/symfony/filesystem/Tests/FilesystemTest.php
@@ -11,6 +11,8 @@
 
 namespace Symfony\Component\Filesystem\Tests;
 
+use Symfony\Component\Filesystem\Exception\IOException;
+
 /**
  * Test class for Filesystem.
  */
@@ -282,7 +284,7 @@ public function testRemoveCleansFilesAndDirectoriesIteratively()
 
         $this->filesystem->remove($basePath);
 
-        $this->assertFileNotExists($basePath);
+        $this->assertFileDoesNotExist($basePath);
     }
 
     public function testRemoveCleansArrayOfFilesAndDirectories()
@@ -298,8 +300,8 @@ public function testRemoveCleansArrayOfFilesAndDirectories()
 
         $this->filesystem->remove($files);
 
-        $this->assertFileNotExists($basePath.'dir');
-        $this->assertFileNotExists($basePath.'file');
+        $this->assertFileDoesNotExist($basePath.'dir');
+        $this->assertFileDoesNotExist($basePath.'file');
     }
 
     public function testRemoveCleansTraversableObjectOfFilesAndDirectories()
@@ -315,8 +317,8 @@ public function testRemoveCleansTraversableObjectOfFilesAndDirectories()
 
         $this->filesystem->remove($files);
 
-        $this->assertFileNotExists($basePath.'dir');
-        $this->assertFileNotExists($basePath.'file');
+        $this->assertFileDoesNotExist($basePath.'dir');
+        $this->assertFileDoesNotExist($basePath.'file');
     }
 
     public function testRemoveIgnoresNonExistingFiles()
@@ -331,7 +333,29 @@ public function testRemoveIgnoresNonExistingFiles()
 
         $this->filesystem->remove($files);
 
-        $this->assertFileNotExists($basePath.'dir');
+        $this->assertFileDoesNotExist($basePath.'dir');
+    }
+
+    public function testRemoveThrowsExceptionOnPermissionDenied()
+    {
+        $this->markAsSkippedIfChmodIsMissing();
+
+        $basePath = $this->workspace.\DIRECTORY_SEPARATOR.'dir_permissions';
+        mkdir($basePath);
+        $file = $basePath.\DIRECTORY_SEPARATOR.'file';
+        touch($file);
+        chmod($basePath, 0400);
+
+        try {
+            $this->filesystem->remove($file);
+            $this->fail('Filesystem::remove() should throw an exception');
+        } catch (IOException $e) {
+            $this->assertStringContainsString('Failed to remove file "'.$file.'"', $e->getMessage());
+            $this->assertStringContainsString('Permission denied', $e->getMessage());
+        } finally {
+            // Make sure we can clean up this file
+            chmod($basePath, 0777);
+        }
     }
 
     public function testRemoveCleansInvalidLinks()
@@ -355,7 +379,7 @@ public function testRemoveCleansInvalidLinks()
 
         $this->filesystem->remove($basePath);
 
-        $this->assertFileNotExists($basePath);
+        $this->assertFileDoesNotExist($basePath);
     }
 
     public function testFilesExists()
@@ -377,7 +401,7 @@ public function testFilesExistsFails()
             $this->markTestSkipped('Long file names are an issue on Windows');
         }
         $basePath = $this->workspace.'\\directory\\';
-        $maxPathLength = PHP_MAXPATHLEN - 2;
+        $maxPathLength = \PHP_MAXPATHLEN - 2;
 
         $oldPath = getcwd();
         mkdir($basePath);
@@ -753,7 +777,7 @@ public function testRename()
 
         $this->filesystem->rename($file, $newPath);
 
-        $this->assertFileNotExists($file);
+        $this->assertFileDoesNotExist($file);
         $this->assertFileExists($newPath);
     }
 
@@ -779,7 +803,7 @@ public function testRenameOverwritesTheTargetIfItAlreadyExists()
 
         $this->filesystem->rename($file, $newPath, true);
 
-        $this->assertFileNotExists($file);
+        $this->assertFileDoesNotExist($file);
         $this->assertFileExists($newPath);
     }
 
@@ -825,7 +849,7 @@ public function testRemoveSymlink()
 
         $this->assertFalse(is_link($link));
         $this->assertFalse(is_file($link));
-        $this->assertDirectoryNotExists($link);
+        $this->assertDirectoryDoesNotExist($link);
     }
 
     public function testSymlinkIsOverwrittenIfPointsToDifferentTarget()
@@ -1321,7 +1345,7 @@ public function testMirrorContentsWithSameNameAsSourceOrTargetWithDeleteOption()
 
         $this->assertDirectoryExists($targetPath);
         $this->assertFileExists($targetPath.'source');
-        $this->assertFileNotExists($targetPath.'target');
+        $this->assertFileDoesNotExist($targetPath.'target');
     }
 
     public function testMirrorFromSubdirectoryInToParentDirectory()
@@ -1416,7 +1440,7 @@ public function testTempnamWithPHPTempSchemeFails()
         $this->assertStringStartsWith($scheme, $filename);
 
         // The php://temp stream deletes the file after close
-        $this->assertFileNotExists($filename);
+        $this->assertFileDoesNotExist($filename);
     }
 
     public function testTempnamWithPharSchemeFails()
diff --git a/vendor/symfony/filesystem/Tests/FilesystemTestCase.php b/vendor/symfony/filesystem/Tests/FilesystemTestCase.php
index 6fb9eba733..b7038550d8 100644
--- a/vendor/symfony/filesystem/Tests/FilesystemTestCase.php
+++ b/vendor/symfony/filesystem/Tests/FilesystemTestCase.php
@@ -144,7 +144,7 @@ protected function markAsSkippedIfSymlinkIsMissing($relative = false)
         }
 
         // https://bugs.php.net/69473
-        if ($relative && '\\' === \DIRECTORY_SEPARATOR && 1 === PHP_ZTS) {
+        if ($relative && '\\' === \DIRECTORY_SEPARATOR && 1 === \PHP_ZTS) {
             $this->markTestSkipped('symlink does not support relative paths on thread safe Windows PHP versions');
         }
     }
diff --git a/vendor/symfony/filesystem/composer.json b/vendor/symfony/filesystem/composer.json
index 0fc8043cc0..ee48b0b238 100644
--- a/vendor/symfony/filesystem/composer.json
+++ b/vendor/symfony/filesystem/composer.json
@@ -25,10 +25,5 @@
             "/Tests/"
         ]
     },
-    "minimum-stability": "dev",
-    "extra": {
-        "branch-alias": {
-            "dev-master": "3.4-dev"
-        }
-    }
+    "minimum-stability": "dev"
 }
diff --git a/vendor/symfony/finder/Finder.php b/vendor/symfony/finder/Finder.php
index 133c4b8c50..3e8a9483ea 100644
--- a/vendor/symfony/finder/Finder.php
+++ b/vendor/symfony/finder/Finder.php
@@ -528,7 +528,7 @@ public function ignoreUnreadableDirs($ignore = true)
     /**
      * Searches files and directories which match defined rules.
      *
-     * @param string|array $dirs A directory path or an array of directories
+     * @param string|string[] $dirs A directory path or an array of directories
      *
      * @return $this
      *
@@ -541,7 +541,8 @@ public function in($dirs)
         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)) {
+            } elseif ($glob = glob($dir, (\defined('GLOB_BRACE') ? \GLOB_BRACE : 0) | \GLOB_ONLYDIR | \GLOB_NOSORT)) {
+                sort($glob);
                 $resolvedDirs = array_merge($resolvedDirs, array_map([$this, 'normalizeDir'], $glob));
             } else {
                 throw new \InvalidArgumentException(sprintf('The "%s" directory does not exist.', $dir));
@@ -657,7 +658,7 @@ private function searchInDirectory($dir)
         }
 
         $minDepth = 0;
-        $maxDepth = PHP_INT_MAX;
+        $maxDepth = \PHP_INT_MAX;
 
         foreach ($this->depths as $comparator) {
             switch ($comparator->getOperator()) {
@@ -692,7 +693,7 @@ private function searchInDirectory($dir)
 
         $iterator = new \RecursiveIteratorIterator($iterator, \RecursiveIteratorIterator::SELF_FIRST);
 
-        if ($minDepth > 0 || $maxDepth < PHP_INT_MAX) {
+        if ($minDepth > 0 || $maxDepth < \PHP_INT_MAX) {
             $iterator = new Iterator\DepthRangeFilterIterator($iterator, $minDepth, $maxDepth);
         }
 
@@ -735,7 +736,7 @@ private function searchInDirectory($dir)
     /**
      * Normalizes given directory names by removing trailing slashes.
      *
-     * Excluding: (s)ftp:// wrapper
+     * Excluding: (s)ftp:// or ssh2.(s)ftp:// wrapper
      *
      * @param string $dir
      *
@@ -743,9 +744,13 @@ private function searchInDirectory($dir)
      */
     private function normalizeDir($dir)
     {
+        if ('/' === $dir) {
+            return $dir;
+        }
+
         $dir = rtrim($dir, '/'.\DIRECTORY_SEPARATOR);
 
-        if (preg_match('#^s?ftp://#', $dir)) {
+        if (preg_match('#^(ssh2\.)?s?ftp://#', $dir)) {
             $dir .= '/';
         }
 
diff --git a/vendor/symfony/finder/Iterator/DepthRangeFilterIterator.php b/vendor/symfony/finder/Iterator/DepthRangeFilterIterator.php
index ce9d3aa73a..d9bbeb48f1 100644
--- a/vendor/symfony/finder/Iterator/DepthRangeFilterIterator.php
+++ b/vendor/symfony/finder/Iterator/DepthRangeFilterIterator.php
@@ -25,10 +25,10 @@ class DepthRangeFilterIterator extends FilterIterator
      * @param int                        $minDepth The min depth
      * @param int                        $maxDepth The max depth
      */
-    public function __construct(\RecursiveIteratorIterator $iterator, $minDepth = 0, $maxDepth = PHP_INT_MAX)
+    public function __construct(\RecursiveIteratorIterator $iterator, $minDepth = 0, $maxDepth = \PHP_INT_MAX)
     {
         $this->minDepth = $minDepth;
-        $iterator->setMaxDepth(PHP_INT_MAX === $maxDepth ? -1 : $maxDepth);
+        $iterator->setMaxDepth(\PHP_INT_MAX === $maxDepth ? -1 : $maxDepth);
 
         parent::__construct($iterator);
     }
diff --git a/vendor/symfony/finder/Iterator/ExcludeDirectoryFilterIterator.php b/vendor/symfony/finder/Iterator/ExcludeDirectoryFilterIterator.php
index bc0e6fc1e1..60bc4e814c 100644
--- a/vendor/symfony/finder/Iterator/ExcludeDirectoryFilterIterator.php
+++ b/vendor/symfony/finder/Iterator/ExcludeDirectoryFilterIterator.php
@@ -25,7 +25,7 @@ class ExcludeDirectoryFilterIterator extends FilterIterator implements \Recursiv
 
     /**
      * @param \Iterator $iterator    The Iterator to filter
-     * @param array     $directories An array of directories to exclude
+     * @param string[]  $directories An array of directories to exclude
      */
     public function __construct(\Iterator $iterator, array $directories)
     {
diff --git a/vendor/symfony/finder/Iterator/RecursiveDirectoryIterator.php b/vendor/symfony/finder/Iterator/RecursiveDirectoryIterator.php
index ab48a2b8a1..63764d407d 100644
--- a/vendor/symfony/finder/Iterator/RecursiveDirectoryIterator.php
+++ b/vendor/symfony/finder/Iterator/RecursiveDirectoryIterator.php
@@ -74,7 +74,11 @@ public function current()
         }
         $subPathname .= $this->getFilename();
 
-        return new SplFileInfo($this->rootPath.$this->directorySeparator.$subPathname, $this->subPath, $subPathname);
+        if ('/' !== $basePath = $this->rootPath) {
+            $basePath .= $this->directorySeparator;
+        }
+
+        return new SplFileInfo($basePath.$subPathname, $this->subPath, $subPathname);
     }
 
     /**
diff --git a/vendor/symfony/finder/Iterator/SortableIterator.php b/vendor/symfony/finder/Iterator/SortableIterator.php
index 3c7157adb9..e67997d117 100644
--- a/vendor/symfony/finder/Iterator/SortableIterator.php
+++ b/vendor/symfony/finder/Iterator/SortableIterator.php
@@ -38,11 +38,11 @@ public function __construct(\Traversable $iterator, $sort)
         $this->iterator = $iterator;
 
         if (self::SORT_BY_NAME === $sort) {
-            $this->sort = function ($a, $b) {
+            $this->sort = static function ($a, $b) {
                 return strcmp($a->getRealPath() ?: $a->getPathname(), $b->getRealPath() ?: $b->getPathname());
             };
         } elseif (self::SORT_BY_TYPE === $sort) {
-            $this->sort = function ($a, $b) {
+            $this->sort = static function ($a, $b) {
                 if ($a->isDir() && $b->isFile()) {
                     return -1;
                 } elseif ($a->isFile() && $b->isDir()) {
@@ -52,15 +52,15 @@ public function __construct(\Traversable $iterator, $sort)
                 return strcmp($a->getRealPath() ?: $a->getPathname(), $b->getRealPath() ?: $b->getPathname());
             };
         } elseif (self::SORT_BY_ACCESSED_TIME === $sort) {
-            $this->sort = function ($a, $b) {
+            $this->sort = static function ($a, $b) {
                 return $a->getATime() - $b->getATime();
             };
         } elseif (self::SORT_BY_CHANGED_TIME === $sort) {
-            $this->sort = function ($a, $b) {
+            $this->sort = static function ($a, $b) {
                 return $a->getCTime() - $b->getCTime();
             };
         } elseif (self::SORT_BY_MODIFIED_TIME === $sort) {
-            $this->sort = function ($a, $b) {
+            $this->sort = static function ($a, $b) {
                 return $a->getMTime() - $b->getMTime();
             };
         } elseif (\is_callable($sort)) {
diff --git a/vendor/symfony/finder/LICENSE b/vendor/symfony/finder/LICENSE
index a677f43763..9e936ec044 100644
--- a/vendor/symfony/finder/LICENSE
+++ b/vendor/symfony/finder/LICENSE
@@ -1,4 +1,4 @@
-Copyright (c) 2004-2019 Fabien Potencier
+Copyright (c) 2004-2020 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/FinderTest.php b/vendor/symfony/finder/Tests/FinderTest.php
index c0eac6da12..442186d2be 100644
--- a/vendor/symfony/finder/Tests/FinderTest.php
+++ b/vendor/symfony/finder/Tests/FinderTest.php
@@ -311,11 +311,9 @@ public function testIn()
         $this->assertIterator($expected, $iterator);
     }
 
-    /**
-     * @expectedException \InvalidArgumentException
-     */
     public function testInWithNonExistentDirectory()
     {
+        $this->expectException('InvalidArgumentException');
         $finder = new Finder();
         $finder->in('foobar');
     }
@@ -328,11 +326,9 @@ public function testInWithGlob()
         $this->assertIterator($this->toAbsoluteFixtures(['A/B/C/abc.dat', 'copy/A/B/C/abc.dat.copy']), $finder);
     }
 
-    /**
-     * @expectedException \InvalidArgumentException
-     */
     public function testInWithNonDirectoryGlob()
     {
+        $this->expectException('InvalidArgumentException');
         $finder = new Finder();
         $finder->in(__DIR__.'/Fixtures/A/a*');
     }
@@ -349,11 +345,9 @@ public function testInWithGlobBrace()
         $this->assertIterator($this->toAbsoluteFixtures(['A/B/C/abc.dat', 'copy/A/B/C/abc.dat.copy']), $finder);
     }
 
-    /**
-     * @expectedException \LogicException
-     */
     public function testGetIteratorWithoutIn()
     {
+        $this->expectException('LogicException');
         $finder = Finder::create();
         $finder->getIterator();
     }
@@ -481,11 +475,9 @@ public function testCountFiles()
         $this->assertCount($i, $files);
     }
 
-    /**
-     * @expectedException \LogicException
-     */
     public function testCountWithoutIn()
     {
+        $this->expectException('LogicException');
         $finder = Finder::create()->files();
         \count($finder);
     }
@@ -710,12 +702,8 @@ public function testAccessDeniedException()
                 $this->fail('Finder should throw an exception when opening a non-readable directory.');
             } catch (\Exception $e) {
                 $expectedExceptionClass = 'Symfony\\Component\\Finder\\Exception\\AccessDeniedException';
-                if ($e instanceof \PHPUnit_Framework_ExpectationFailedException) {
-                    $this->fail(sprintf("Expected exception:\n%s\nGot:\n%s\nWith comparison failure:\n%s", $expectedExceptionClass, 'PHPUnit_Framework_ExpectationFailedException', $e->getComparisonFailure()->getExpectedAsString()));
-                }
-
                 if ($e instanceof \PHPUnit\Framework\ExpectationFailedException) {
-                    $this->fail(sprintf("Expected exception:\n%s\nGot:\n%s\nWith comparison failure:\n%s", $expectedExceptionClass, '\PHPUnit\Framework\ExpectationFailedException', $e->getComparisonFailure()->getExpectedAsString()));
+                    $this->fail(sprintf("Expected exception:\n%s\nGot:\n%s\nWith comparison failure:\n%s", $expectedExceptionClass, 'PHPUnit\Framework\ExpectationFailedException', $e->getComparisonFailure()->getExpectedAsString()));
                 }
 
                 $this->assertInstanceOf($expectedExceptionClass, $e);
diff --git a/vendor/symfony/finder/Tests/Iterator/CustomFilterIteratorTest.php b/vendor/symfony/finder/Tests/Iterator/CustomFilterIteratorTest.php
index ad0187e032..56d958cb60 100644
--- a/vendor/symfony/finder/Tests/Iterator/CustomFilterIteratorTest.php
+++ b/vendor/symfony/finder/Tests/Iterator/CustomFilterIteratorTest.php
@@ -15,11 +15,9 @@
 
 class CustomFilterIteratorTest extends IteratorTestCase
 {
-    /**
-     * @expectedException \InvalidArgumentException
-     */
     public function testWithInvalidFilter()
     {
+        $this->expectException('InvalidArgumentException');
         new CustomFilterIterator(new Iterator(), ['foo']);
     }
 
diff --git a/vendor/symfony/finder/Tests/Iterator/DepthRangeFilterIteratorTest.php b/vendor/symfony/finder/Tests/Iterator/DepthRangeFilterIteratorTest.php
index dab9723d7e..5ef2ed41b3 100644
--- a/vendor/symfony/finder/Tests/Iterator/DepthRangeFilterIteratorTest.php
+++ b/vendor/symfony/finder/Tests/Iterator/DepthRangeFilterIteratorTest.php
@@ -75,8 +75,8 @@ public function getAcceptData()
         return [
             [0, 0, $this->toAbsolute($lessThan1)],
             [0, 1, $this->toAbsolute($lessThanOrEqualTo1)],
-            [2, PHP_INT_MAX, []],
-            [1, PHP_INT_MAX, $this->toAbsolute($graterThanOrEqualTo1)],
+            [2, \PHP_INT_MAX, []],
+            [1, \PHP_INT_MAX, $this->toAbsolute($graterThanOrEqualTo1)],
             [1, 1, $this->toAbsolute($equalTo1)],
         ];
     }
diff --git a/vendor/symfony/finder/Tests/Iterator/FilterIteratorTest.php b/vendor/symfony/finder/Tests/Iterator/FilterIteratorTest.php
index b26f7ba6bd..181b1464fc 100644
--- a/vendor/symfony/finder/Tests/Iterator/FilterIteratorTest.php
+++ b/vendor/symfony/finder/Tests/Iterator/FilterIteratorTest.php
@@ -26,9 +26,9 @@ public function testFilterFilesystemIterators()
         $i = $this->getMockForAbstractClass('Symfony\Component\Finder\Iterator\FilterIterator', [$i]);
         $i->expects($this->any())
             ->method('accept')
-            ->will($this->returnCallback(function () use ($i) {
+            ->willReturnCallback(function () use ($i) {
                 return (bool) preg_match('/\.php/', (string) $i->current());
-            })
+            }
         );
 
         $c = 0;
diff --git a/vendor/symfony/finder/Tests/Iterator/IteratorTestCase.php b/vendor/symfony/finder/Tests/Iterator/IteratorTestCase.php
index 796dc6ac36..c7dfd79e30 100644
--- a/vendor/symfony/finder/Tests/Iterator/IteratorTestCase.php
+++ b/vendor/symfony/finder/Tests/Iterator/IteratorTestCase.php
@@ -44,9 +44,8 @@ protected function assertOrderedIterator($expected, \Traversable $iterator)
      *      $a and $b such that $a goes before $b in $expected, the method
      *      asserts that any element of $a goes before any element of $b
      *      in the sequence generated by $iterator
-     *  @param \Traversable $iterator
      */
-    protected function assertOrderedIteratorForGroups($expected, \Traversable $iterator)
+    protected function assertOrderedIteratorForGroups(array $expected, \Traversable $iterator)
     {
         $values = array_values(array_map(function (\SplFileInfo $fileinfo) { return $fileinfo->getPathname(); }, iterator_to_array($iterator)));
 
@@ -63,11 +62,8 @@ protected function assertOrderedIteratorForGroups($expected, \Traversable $itera
 
     /**
      * Same as IteratorTestCase::assertIterator with foreach usage.
-     *
-     * @param array        $expected
-     * @param \Traversable $iterator
      */
-    protected function assertIteratorInForeach($expected, \Traversable $iterator)
+    protected function assertIteratorInForeach(array $expected, \Traversable $iterator)
     {
         $values = [];
         foreach ($iterator as $file) {
@@ -83,11 +79,8 @@ protected function assertIteratorInForeach($expected, \Traversable $iterator)
 
     /**
      * Same as IteratorTestCase::assertOrderedIterator with foreach usage.
-     *
-     * @param array        $expected
-     * @param \Traversable $iterator
      */
-    protected function assertOrderedIteratorInForeach($expected, \Traversable $iterator)
+    protected function assertOrderedIteratorInForeach(array $expected, \Traversable $iterator)
     {
         $values = [];
         foreach ($iterator as $file) {
diff --git a/vendor/symfony/finder/Tests/Iterator/SortableIteratorTest.php b/vendor/symfony/finder/Tests/Iterator/SortableIteratorTest.php
index 57f1e096a5..118c4769f2 100644
--- a/vendor/symfony/finder/Tests/Iterator/SortableIteratorTest.php
+++ b/vendor/symfony/finder/Tests/Iterator/SortableIteratorTest.php
@@ -33,11 +33,7 @@ public function testAccept($mode, $expected)
         if (!\is_callable($mode)) {
             switch ($mode) {
                 case SortableIterator::SORT_BY_ACCESSED_TIME:
-                    if ('\\' === \DIRECTORY_SEPARATOR) {
-                        touch(self::toAbsolute('.git'));
-                    } else {
-                        file_get_contents(self::toAbsolute('.git'));
-                    }
+                    touch(self::toAbsolute('.git'));
                     sleep(1);
                     file_get_contents(self::toAbsolute('.bar'));
                     break;
diff --git a/vendor/symfony/finder/composer.json b/vendor/symfony/finder/composer.json
index de19826f73..b0895524be 100644
--- a/vendor/symfony/finder/composer.json
+++ b/vendor/symfony/finder/composer.json
@@ -24,10 +24,5 @@
             "/Tests/"
         ]
     },
-    "minimum-stability": "dev",
-    "extra": {
-        "branch-alias": {
-            "dev-master": "3.4-dev"
-        }
-    }
+    "minimum-stability": "dev"
 }
diff --git a/vendor/symfony/var-dumper/Caster/AmqpCaster.php b/vendor/symfony/var-dumper/Caster/AmqpCaster.php
index 19bdc29525..dc7a6414fc 100644
--- a/vendor/symfony/var-dumper/Caster/AmqpCaster.php
+++ b/vendor/symfony/var-dumper/Caster/AmqpCaster.php
@@ -21,27 +21,27 @@
 class AmqpCaster
 {
     private static $flags = [
-        AMQP_DURABLE => 'AMQP_DURABLE',
-        AMQP_PASSIVE => 'AMQP_PASSIVE',
-        AMQP_EXCLUSIVE => 'AMQP_EXCLUSIVE',
-        AMQP_AUTODELETE => 'AMQP_AUTODELETE',
-        AMQP_INTERNAL => 'AMQP_INTERNAL',
-        AMQP_NOLOCAL => 'AMQP_NOLOCAL',
-        AMQP_AUTOACK => 'AMQP_AUTOACK',
-        AMQP_IFEMPTY => 'AMQP_IFEMPTY',
-        AMQP_IFUNUSED => 'AMQP_IFUNUSED',
-        AMQP_MANDATORY => 'AMQP_MANDATORY',
-        AMQP_IMMEDIATE => 'AMQP_IMMEDIATE',
-        AMQP_MULTIPLE => 'AMQP_MULTIPLE',
-        AMQP_NOWAIT => 'AMQP_NOWAIT',
-        AMQP_REQUEUE => 'AMQP_REQUEUE',
+        \AMQP_DURABLE => 'AMQP_DURABLE',
+        \AMQP_PASSIVE => 'AMQP_PASSIVE',
+        \AMQP_EXCLUSIVE => 'AMQP_EXCLUSIVE',
+        \AMQP_AUTODELETE => 'AMQP_AUTODELETE',
+        \AMQP_INTERNAL => 'AMQP_INTERNAL',
+        \AMQP_NOLOCAL => 'AMQP_NOLOCAL',
+        \AMQP_AUTOACK => 'AMQP_AUTOACK',
+        \AMQP_IFEMPTY => 'AMQP_IFEMPTY',
+        \AMQP_IFUNUSED => 'AMQP_IFUNUSED',
+        \AMQP_MANDATORY => 'AMQP_MANDATORY',
+        \AMQP_IMMEDIATE => 'AMQP_IMMEDIATE',
+        \AMQP_MULTIPLE => 'AMQP_MULTIPLE',
+        \AMQP_NOWAIT => 'AMQP_NOWAIT',
+        \AMQP_REQUEUE => 'AMQP_REQUEUE',
     ];
 
     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',
+        \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)
diff --git a/vendor/symfony/var-dumper/Caster/Caster.php b/vendor/symfony/var-dumper/Caster/Caster.php
index 93d0ce2b41..a6ebc25bdd 100644
--- a/vendor/symfony/var-dumper/Caster/Caster.php
+++ b/vendor/symfony/var-dumper/Caster/Caster.php
@@ -46,41 +46,57 @@ class Caster
      *
      * @return array The array-cast of the object, with prefixed dynamic properties
      */
-    public static function castObject($obj, $class, $hasDebugInfo = false)
+    public static function castObject($obj, $class, $hasDebugInfo = false, $debugClass = null)
     {
         if ($class instanceof \ReflectionClass) {
-            @trigger_error(sprintf('Passing a ReflectionClass to "%s()" is deprecated since Symfony 3.3 and will be unsupported in 4.0. Pass the class name as string instead.', __METHOD__), E_USER_DEPRECATED);
+            @trigger_error(sprintf('Passing a ReflectionClass to "%s()" is deprecated since Symfony 3.3 and will be unsupported in 4.0. Pass the class name as string instead.', __METHOD__), \E_USER_DEPRECATED);
             $hasDebugInfo = $class->hasMethod('__debugInfo');
             $class = $class->name;
         }
+
         if ($hasDebugInfo) {
-            $a = $obj->__debugInfo();
-        } elseif ($obj instanceof \Closure) {
-            $a = [];
-        } else {
-            $a = (array) $obj;
+            try {
+                $debugInfo = $obj->__debugInfo();
+            } catch (\Exception $e) {
+                // ignore failing __debugInfo()
+                $hasDebugInfo = false;
+            }
         }
+
+        $a = $obj instanceof \Closure ? [] : (array) $obj;
+
         if ($obj instanceof \__PHP_Incomplete_Class) {
             return $a;
         }
 
         if ($a) {
             static $publicProperties = [];
+            if (null === $debugClass) {
+                if (\PHP_VERSION_ID >= 80000) {
+                    $debugClass = get_debug_type($obj);
+                } else {
+                    $debugClass = $class;
+
+                    if (isset($debugClass[15]) && "\0" === $debugClass[15]) {
+                        $debugClass = (get_parent_class($debugClass) ?: key(class_implements($debugClass)) ?: 'class').'@anonymous';
+                    }
+                }
+            }
 
             $i = 0;
             $prefixedKeys = [];
             foreach ($a as $k => $v) {
                 if (isset($k[0]) ? "\0" !== $k[0] : \PHP_VERSION_ID >= 70200) {
                     if (!isset($publicProperties[$class])) {
-                        foreach (get_class_vars($class) as $prop => $v) {
-                            $publicProperties[$class][$prop] = true;
+                        foreach ((new \ReflectionClass($class))->getProperties(\ReflectionProperty::IS_PUBLIC) as $prop) {
+                            $publicProperties[$class][$prop->name] = true;
                         }
                     }
                     if (!isset($publicProperties[$class][$k])) {
                         $prefixedKeys[$i] = self::PREFIX_DYNAMIC.$k;
                     }
-                } elseif (isset($k[16]) && "\0" === $k[16] && 0 === strpos($k, "\0class@anonymous\0")) {
-                    $prefixedKeys[$i] = "\0".get_parent_class($class).'@anonymous'.strrchr($k, "\0");
+                } elseif ($debugClass !== $class && 1 === strpos($k, $class)) {
+                    $prefixedKeys[$i] = "\0".$debugClass.strrchr($k, "\0");
                 }
                 ++$i;
             }
@@ -93,6 +109,20 @@ public static function castObject($obj, $class, $hasDebugInfo = false)
             }
         }
 
+        if ($hasDebugInfo && \is_array($debugInfo)) {
+            foreach ($debugInfo as $k => $v) {
+                if (!isset($k[0]) || "\0" !== $k[0]) {
+                    if (\array_key_exists(self::PREFIX_DYNAMIC.$k, $a)) {
+                        continue;
+                    }
+                    $k = self::PREFIX_VIRTUAL.$k;
+                }
+
+                unset($a[$k]);
+                $a[$k] = $v;
+            }
+        }
+
         return $a;
     }
 
diff --git a/vendor/symfony/var-dumper/Caster/DOMCaster.php b/vendor/symfony/var-dumper/Caster/DOMCaster.php
index 65151b4f4f..fef3d432a7 100644
--- a/vendor/symfony/var-dumper/Caster/DOMCaster.php
+++ b/vendor/symfony/var-dumper/Caster/DOMCaster.php
@@ -21,44 +21,44 @@
 class DOMCaster
 {
     private static $errorCodes = [
-        DOM_PHP_ERR => 'DOM_PHP_ERR',
-        DOM_INDEX_SIZE_ERR => 'DOM_INDEX_SIZE_ERR',
-        DOMSTRING_SIZE_ERR => 'DOMSTRING_SIZE_ERR',
-        DOM_HIERARCHY_REQUEST_ERR => 'DOM_HIERARCHY_REQUEST_ERR',
-        DOM_WRONG_DOCUMENT_ERR => 'DOM_WRONG_DOCUMENT_ERR',
-        DOM_INVALID_CHARACTER_ERR => 'DOM_INVALID_CHARACTER_ERR',
-        DOM_NO_DATA_ALLOWED_ERR => 'DOM_NO_DATA_ALLOWED_ERR',
-        DOM_NO_MODIFICATION_ALLOWED_ERR => 'DOM_NO_MODIFICATION_ALLOWED_ERR',
-        DOM_NOT_FOUND_ERR => 'DOM_NOT_FOUND_ERR',
-        DOM_NOT_SUPPORTED_ERR => 'DOM_NOT_SUPPORTED_ERR',
-        DOM_INUSE_ATTRIBUTE_ERR => 'DOM_INUSE_ATTRIBUTE_ERR',
-        DOM_INVALID_STATE_ERR => 'DOM_INVALID_STATE_ERR',
-        DOM_SYNTAX_ERR => 'DOM_SYNTAX_ERR',
-        DOM_INVALID_MODIFICATION_ERR => 'DOM_INVALID_MODIFICATION_ERR',
-        DOM_NAMESPACE_ERR => 'DOM_NAMESPACE_ERR',
-        DOM_INVALID_ACCESS_ERR => 'DOM_INVALID_ACCESS_ERR',
-        DOM_VALIDATION_ERR => 'DOM_VALIDATION_ERR',
+        \DOM_PHP_ERR => 'DOM_PHP_ERR',
+        \DOM_INDEX_SIZE_ERR => 'DOM_INDEX_SIZE_ERR',
+        \DOMSTRING_SIZE_ERR => 'DOMSTRING_SIZE_ERR',
+        \DOM_HIERARCHY_REQUEST_ERR => 'DOM_HIERARCHY_REQUEST_ERR',
+        \DOM_WRONG_DOCUMENT_ERR => 'DOM_WRONG_DOCUMENT_ERR',
+        \DOM_INVALID_CHARACTER_ERR => 'DOM_INVALID_CHARACTER_ERR',
+        \DOM_NO_DATA_ALLOWED_ERR => 'DOM_NO_DATA_ALLOWED_ERR',
+        \DOM_NO_MODIFICATION_ALLOWED_ERR => 'DOM_NO_MODIFICATION_ALLOWED_ERR',
+        \DOM_NOT_FOUND_ERR => 'DOM_NOT_FOUND_ERR',
+        \DOM_NOT_SUPPORTED_ERR => 'DOM_NOT_SUPPORTED_ERR',
+        \DOM_INUSE_ATTRIBUTE_ERR => 'DOM_INUSE_ATTRIBUTE_ERR',
+        \DOM_INVALID_STATE_ERR => 'DOM_INVALID_STATE_ERR',
+        \DOM_SYNTAX_ERR => 'DOM_SYNTAX_ERR',
+        \DOM_INVALID_MODIFICATION_ERR => 'DOM_INVALID_MODIFICATION_ERR',
+        \DOM_NAMESPACE_ERR => 'DOM_NAMESPACE_ERR',
+        \DOM_INVALID_ACCESS_ERR => 'DOM_INVALID_ACCESS_ERR',
+        \DOM_VALIDATION_ERR => 'DOM_VALIDATION_ERR',
     ];
 
     private static $nodeTypes = [
-        XML_ELEMENT_NODE => 'XML_ELEMENT_NODE',
-        XML_ATTRIBUTE_NODE => 'XML_ATTRIBUTE_NODE',
-        XML_TEXT_NODE => 'XML_TEXT_NODE',
-        XML_CDATA_SECTION_NODE => 'XML_CDATA_SECTION_NODE',
-        XML_ENTITY_REF_NODE => 'XML_ENTITY_REF_NODE',
-        XML_ENTITY_NODE => 'XML_ENTITY_NODE',
-        XML_PI_NODE => 'XML_PI_NODE',
-        XML_COMMENT_NODE => 'XML_COMMENT_NODE',
-        XML_DOCUMENT_NODE => 'XML_DOCUMENT_NODE',
-        XML_DOCUMENT_TYPE_NODE => 'XML_DOCUMENT_TYPE_NODE',
-        XML_DOCUMENT_FRAG_NODE => 'XML_DOCUMENT_FRAG_NODE',
-        XML_NOTATION_NODE => 'XML_NOTATION_NODE',
-        XML_HTML_DOCUMENT_NODE => 'XML_HTML_DOCUMENT_NODE',
-        XML_DTD_NODE => 'XML_DTD_NODE',
-        XML_ELEMENT_DECL_NODE => 'XML_ELEMENT_DECL_NODE',
-        XML_ATTRIBUTE_DECL_NODE => 'XML_ATTRIBUTE_DECL_NODE',
-        XML_ENTITY_DECL_NODE => 'XML_ENTITY_DECL_NODE',
-        XML_NAMESPACE_DECL_NODE => 'XML_NAMESPACE_DECL_NODE',
+        \XML_ELEMENT_NODE => 'XML_ELEMENT_NODE',
+        \XML_ATTRIBUTE_NODE => 'XML_ATTRIBUTE_NODE',
+        \XML_TEXT_NODE => 'XML_TEXT_NODE',
+        \XML_CDATA_SECTION_NODE => 'XML_CDATA_SECTION_NODE',
+        \XML_ENTITY_REF_NODE => 'XML_ENTITY_REF_NODE',
+        \XML_ENTITY_NODE => 'XML_ENTITY_NODE',
+        \XML_PI_NODE => 'XML_PI_NODE',
+        \XML_COMMENT_NODE => 'XML_COMMENT_NODE',
+        \XML_DOCUMENT_NODE => 'XML_DOCUMENT_NODE',
+        \XML_DOCUMENT_TYPE_NODE => 'XML_DOCUMENT_TYPE_NODE',
+        \XML_DOCUMENT_FRAG_NODE => 'XML_DOCUMENT_FRAG_NODE',
+        \XML_NOTATION_NODE => 'XML_NOTATION_NODE',
+        \XML_HTML_DOCUMENT_NODE => 'XML_HTML_DOCUMENT_NODE',
+        \XML_DTD_NODE => 'XML_DTD_NODE',
+        \XML_ELEMENT_DECL_NODE => 'XML_ELEMENT_DECL_NODE',
+        \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)
diff --git a/vendor/symfony/var-dumper/Caster/DateCaster.php b/vendor/symfony/var-dumper/Caster/DateCaster.php
index 3b030b734a..70f229a0d8 100644
--- a/vendor/symfony/var-dumper/Caster/DateCaster.php
+++ b/vendor/symfony/var-dumper/Caster/DateCaster.php
@@ -31,7 +31,11 @@ public static function castDateTime(\DateTimeInterface $d, array $a, Stub $stub,
             .($location ? ($d->format('I') ? "\nDST On" : "\nDST Off") : '')
         ;
 
-        $a = [];
+        unset(
+            $a[Caster::PREFIX_DYNAMIC.'date'],
+            $a[Caster::PREFIX_DYNAMIC.'timezone'],
+            $a[Caster::PREFIX_DYNAMIC.'timezone_type']
+        );
         $a[$prefix.'date'] = new ConstStub(self::formatDateTime($d, $location ? ' e (P)' : ' P'), $title);
 
         $stub->class .= $d->format(' @U');
@@ -85,17 +89,17 @@ public static function castTimeZone(\DateTimeZone $timeZone, array $a, Stub $stu
 
     public static function castPeriod(\DatePeriod $p, array $a, Stub $stub, $isNested, $filter)
     {
-        if (\defined('HHVM_VERSION_ID') || \PHP_VERSION_ID < 50620 || (\PHP_VERSION_ID >= 70000 && \PHP_VERSION_ID < 70005)) { // see https://bugs.php.net/bug.php?id=71635
+        if (\defined('HHVM_VERSION_ID') || \PHP_VERSION_ID < 50620 || (\PHP_VERSION_ID >= 70000 && \PHP_VERSION_ID < 70005)) { // see https://bugs.php.net/71635
             return $a;
         }
 
         $dates = [];
-        if (\PHP_VERSION_ID >= 70107) { // see https://bugs.php.net/bug.php?id=74639
+        if (\PHP_VERSION_ID >= 70107) { // see https://bugs.php.net/74639
             foreach (clone $p as $i => $d) {
                 if (3 === $i) {
                     $now = new \DateTimeImmutable();
                     $dates[] = sprintf('%s more', ($end = $p->getEndDate())
-                        ? ceil(($end->format('U.u') - $d->format('U.u')) / ($now->add($p->getDateInterval())->format('U.u') - $now->format('U.u')))
+                        ? ceil(($end->format('U.u') - $d->format('U.u')) / ((int) $now->add($p->getDateInterval())->format('U.u') - (int) $now->format('U.u')))
                         : $p->recurrences - $i
                     );
                     break;
diff --git a/vendor/symfony/var-dumper/Caster/ExceptionCaster.php b/vendor/symfony/var-dumper/Caster/ExceptionCaster.php
index e0acbe39df..62b57402f8 100644
--- a/vendor/symfony/var-dumper/Caster/ExceptionCaster.php
+++ b/vendor/symfony/var-dumper/Caster/ExceptionCaster.php
@@ -25,21 +25,21 @@ class ExceptionCaster
     public static $srcContext = 1;
     public static $traceArgs = true;
     public static $errorTypes = [
-        E_DEPRECATED => 'E_DEPRECATED',
-        E_USER_DEPRECATED => 'E_USER_DEPRECATED',
-        E_RECOVERABLE_ERROR => 'E_RECOVERABLE_ERROR',
-        E_ERROR => 'E_ERROR',
-        E_WARNING => 'E_WARNING',
-        E_PARSE => 'E_PARSE',
-        E_NOTICE => 'E_NOTICE',
-        E_CORE_ERROR => 'E_CORE_ERROR',
-        E_CORE_WARNING => 'E_CORE_WARNING',
-        E_COMPILE_ERROR => 'E_COMPILE_ERROR',
-        E_COMPILE_WARNING => 'E_COMPILE_WARNING',
-        E_USER_ERROR => 'E_USER_ERROR',
-        E_USER_WARNING => 'E_USER_WARNING',
-        E_USER_NOTICE => 'E_USER_NOTICE',
-        E_STRICT => 'E_STRICT',
+        \E_DEPRECATED => 'E_DEPRECATED',
+        \E_USER_DEPRECATED => 'E_USER_DEPRECATED',
+        \E_RECOVERABLE_ERROR => 'E_RECOVERABLE_ERROR',
+        \E_ERROR => 'E_ERROR',
+        \E_WARNING => 'E_WARNING',
+        \E_PARSE => 'E_PARSE',
+        \E_NOTICE => 'E_NOTICE',
+        \E_CORE_ERROR => 'E_CORE_ERROR',
+        \E_CORE_WARNING => 'E_CORE_WARNING',
+        \E_COMPILE_ERROR => 'E_COMPILE_ERROR',
+        \E_COMPILE_WARNING => 'E_COMPILE_WARNING',
+        \E_USER_ERROR => 'E_USER_ERROR',
+        \E_USER_WARNING => 'E_USER_WARNING',
+        \E_USER_NOTICE => 'E_USER_NOTICE',
+        \E_STRICT => 'E_STRICT',
     ];
 
     private static $framesCache = [];
diff --git a/vendor/symfony/var-dumper/Caster/MongoCaster.php b/vendor/symfony/var-dumper/Caster/MongoCaster.php
index 3b8fb338e5..98f1b8e25d 100644
--- a/vendor/symfony/var-dumper/Caster/MongoCaster.php
+++ b/vendor/symfony/var-dumper/Caster/MongoCaster.php
@@ -13,7 +13,7 @@
 
 use Symfony\Component\VarDumper\Cloner\Stub;
 
-@trigger_error('The '.__NAMESPACE__.'\MongoCaster class is deprecated since Symfony 3.4 and will be removed in 4.0.', E_USER_DEPRECATED);
+@trigger_error('The '.__NAMESPACE__.'\MongoCaster class is deprecated since Symfony 3.4 and will be removed in 4.0.', \E_USER_DEPRECATED);
 
 /**
  * Casts classes from the MongoDb extension to array representation.
diff --git a/vendor/symfony/var-dumper/Caster/PgSqlCaster.php b/vendor/symfony/var-dumper/Caster/PgSqlCaster.php
index cd6bf5b5fe..fe1f0cc8d9 100644
--- a/vendor/symfony/var-dumper/Caster/PgSqlCaster.php
+++ b/vendor/symfony/var-dumper/Caster/PgSqlCaster.php
@@ -34,37 +34,37 @@ class PgSqlCaster
     ];
 
     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',
+        \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 = [
-        PGSQL_EMPTY_QUERY => 'PGSQL_EMPTY_QUERY',
-        PGSQL_COMMAND_OK => 'PGSQL_COMMAND_OK',
-        PGSQL_TUPLES_OK => 'PGSQL_TUPLES_OK',
-        PGSQL_COPY_OUT => 'PGSQL_COPY_OUT',
-        PGSQL_COPY_IN => 'PGSQL_COPY_IN',
-        PGSQL_BAD_RESPONSE => 'PGSQL_BAD_RESPONSE',
-        PGSQL_NONFATAL_ERROR => 'PGSQL_NONFATAL_ERROR',
-        PGSQL_FATAL_ERROR => 'PGSQL_FATAL_ERROR',
+        \PGSQL_EMPTY_QUERY => 'PGSQL_EMPTY_QUERY',
+        \PGSQL_COMMAND_OK => 'PGSQL_COMMAND_OK',
+        \PGSQL_TUPLES_OK => 'PGSQL_TUPLES_OK',
+        \PGSQL_COPY_OUT => 'PGSQL_COPY_OUT',
+        \PGSQL_COPY_IN => 'PGSQL_COPY_IN',
+        \PGSQL_BAD_RESPONSE => 'PGSQL_BAD_RESPONSE',
+        \PGSQL_NONFATAL_ERROR => 'PGSQL_NONFATAL_ERROR',
+        \PGSQL_FATAL_ERROR => 'PGSQL_FATAL_ERROR',
     ];
 
     private static $diagCodes = [
-        'severity' => PGSQL_DIAG_SEVERITY,
-        'sqlstate' => PGSQL_DIAG_SQLSTATE,
-        'message' => PGSQL_DIAG_MESSAGE_PRIMARY,
-        'detail' => PGSQL_DIAG_MESSAGE_DETAIL,
-        'hint' => PGSQL_DIAG_MESSAGE_HINT,
-        'statement position' => PGSQL_DIAG_STATEMENT_POSITION,
-        'internal position' => PGSQL_DIAG_INTERNAL_POSITION,
-        'internal query' => PGSQL_DIAG_INTERNAL_QUERY,
-        'context' => PGSQL_DIAG_CONTEXT,
-        'file' => PGSQL_DIAG_SOURCE_FILE,
-        'line' => PGSQL_DIAG_SOURCE_LINE,
-        'function' => PGSQL_DIAG_SOURCE_FUNCTION,
+        'severity' => \PGSQL_DIAG_SEVERITY,
+        'sqlstate' => \PGSQL_DIAG_SQLSTATE,
+        'message' => \PGSQL_DIAG_MESSAGE_PRIMARY,
+        'detail' => \PGSQL_DIAG_MESSAGE_DETAIL,
+        'hint' => \PGSQL_DIAG_MESSAGE_HINT,
+        'statement position' => \PGSQL_DIAG_STATEMENT_POSITION,
+        'internal position' => \PGSQL_DIAG_INTERNAL_POSITION,
+        'internal query' => \PGSQL_DIAG_INTERNAL_QUERY,
+        'context' => \PGSQL_DIAG_CONTEXT,
+        '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)
@@ -77,7 +77,7 @@ public static function castLargeObject($lo, array $a, Stub $stub, $isNested)
     public static function castLink($link, array $a, Stub $stub, $isNested)
     {
         $a['status'] = pg_connection_status($link);
-        $a['status'] = new ConstStub(PGSQL_CONNECTION_OK === $a['status'] ? 'PGSQL_CONNECTION_OK' : 'PGSQL_CONNECTION_BAD', $a['status']);
+        $a['status'] = new ConstStub(\PGSQL_CONNECTION_OK === $a['status'] ? 'PGSQL_CONNECTION_OK' : 'PGSQL_CONNECTION_BAD', $a['status']);
         $a['busy'] = pg_connection_busy($link);
 
         $a['transaction'] = pg_transaction_status($link);
@@ -113,7 +113,7 @@ public static function castResult($result, array $a, Stub $stub, $isNested)
         if (isset(self::$resultStatus[$a['status']])) {
             $a['status'] = new ConstStub(self::$resultStatus[$a['status']], $a['status']);
         }
-        $a['command-completion tag'] = pg_result_status($result, PGSQL_STATUS_STRING);
+        $a['command-completion tag'] = pg_result_status($result, \PGSQL_STATUS_STRING);
 
         if (-1 === $a['num rows']) {
             foreach (self::$diagCodes as $k => $v) {
diff --git a/vendor/symfony/var-dumper/Caster/ReflectionCaster.php b/vendor/symfony/var-dumper/Caster/ReflectionCaster.php
index 1543bbfdfa..f19886172a 100644
--- a/vendor/symfony/var-dumper/Caster/ReflectionCaster.php
+++ b/vendor/symfony/var-dumper/Caster/ReflectionCaster.php
@@ -91,7 +91,7 @@ public static function castType(\ReflectionType $c, array $a, Stub $stub, $isNes
         $prefix = Caster::PREFIX_VIRTUAL;
 
         $a += [
-            $prefix.'name' => $c instanceof \ReflectionNamedType ? $c->getName() : $c->__toString(),
+            $prefix.'name' => $c instanceof \ReflectionNamedType ? $c->getName() : (string) $c,
             $prefix.'allowsNull' => $c->allowsNull(),
             $prefix.'isBuiltin' => $c->isBuiltin(),
         ];
@@ -114,7 +114,7 @@ public static function castReflectionGenerator(\ReflectionGenerator $c, array $a
             'file' => $c->getExecutingFile(),
             'line' => $c->getExecutingLine(),
         ];
-        if ($trace = $c->getTrace(DEBUG_BACKTRACE_IGNORE_ARGS)) {
+        if ($trace = $c->getTrace(\DEBUG_BACKTRACE_IGNORE_ARGS)) {
             $function = new \ReflectionGenerator($c->getExecutingGenerator());
             array_unshift($trace, [
                 'function' => 'yield',
@@ -178,7 +178,7 @@ public static function castFunctionAbstract(\ReflectionFunctionAbstract $c, arra
 
         if (isset($a[$prefix.'returnType'])) {
             $v = $a[$prefix.'returnType'];
-            $v = $v instanceof \ReflectionNamedType ? $v->getName() : $v->__toString();
+            $v = $v instanceof \ReflectionNamedType ? $v->getName() : (string) $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'])) {
@@ -247,7 +247,7 @@ public static function castParameter(\ReflectionParameter $c, array $a, Stub $st
 
         if (method_exists($c, 'getType')) {
             if ($v = $c->getType()) {
-                $a[$prefix.'typeHint'] = $v instanceof \ReflectionNamedType ? $v->getName() : $v->__toString();
+                $a[$prefix.'typeHint'] = $v instanceof \ReflectionNamedType ? $v->getName() : (string) $v;
             }
         } elseif (preg_match('/^(?:[^ ]++ ){4}([a-zA-Z_\x7F-\xFF][^ ]++)/', $c, $v)) {
             $a[$prefix.'typeHint'] = $v[1];
@@ -333,6 +333,10 @@ private static function addExtra(&$a, \Reflector $c)
     private static function addMap(&$a, \Reflector $c, $map, $prefix = Caster::PREFIX_VIRTUAL)
     {
         foreach ($map as $k => $m) {
+            if (\PHP_VERSION_ID >= 80000 && 'isDisabled' === $k) {
+                continue;
+            }
+
             if (method_exists($c, $m) && false !== ($m = $c->$m()) && null !== $m) {
                 $a[$prefix.$k] = $m instanceof \Reflector ? $m->name : $m;
             }
diff --git a/vendor/symfony/var-dumper/Caster/ResourceCaster.php b/vendor/symfony/var-dumper/Caster/ResourceCaster.php
index 3cdb27c308..eb11aee1f0 100644
--- a/vendor/symfony/var-dumper/Caster/ResourceCaster.php
+++ b/vendor/symfony/var-dumper/Caster/ResourceCaster.php
@@ -20,6 +20,11 @@
  */
 class ResourceCaster
 {
+    /**
+     * @param \CurlHandle|resource $h
+     *
+     * @return array
+     */
     public static function castCurl($h, array $a, Stub $stub, $isNested)
     {
         return curl_getinfo($h);
diff --git a/vendor/symfony/var-dumper/Caster/SplCaster.php b/vendor/symfony/var-dumper/Caster/SplCaster.php
index a223adb7f2..360a1a416e 100644
--- a/vendor/symfony/var-dumper/Caster/SplCaster.php
+++ b/vendor/symfony/var-dumper/Caster/SplCaster.php
@@ -89,6 +89,36 @@ public static function castFileInfo(\SplFileInfo $c, array $a, Stub $stub, $isNe
         ];
 
         $prefix = Caster::PREFIX_VIRTUAL;
+        unset($a["\0SplFileInfo\0fileName"]);
+        unset($a["\0SplFileInfo\0pathName"]);
+
+        if (\PHP_VERSION_ID < 80000) {
+            if (false === $c->getPathname()) {
+                $a[$prefix.'⚠'] = 'The parent constructor was not called: the object is in an invalid state';
+
+                return $a;
+            }
+        } else {
+            try {
+                $c->isReadable();
+            } catch (\RuntimeException $e) {
+                if ('Object not initialized' !== $e->getMessage()) {
+                    throw $e;
+                }
+
+                $a[$prefix.'⚠'] = 'The parent constructor was not called: the object is in an invalid state';
+
+                return $a;
+            } catch (\Error $e) {
+                if ('Object not initialized' !== $e->getMessage()) {
+                    throw $e;
+                }
+
+                $a[$prefix.'⚠'] = 'The parent constructor was not called: the object is in an invalid state';
+
+                return $a;
+            }
+        }
 
         foreach ($map as $key => $accessor) {
             try {
@@ -152,19 +182,11 @@ public static function castFileObject(\SplFileObject $c, array $a, Stub $stub, $
         return $a;
     }
 
-    public static function castFixedArray(\SplFixedArray $c, array $a, Stub $stub, $isNested)
-    {
-        $a += [
-            Caster::PREFIX_VIRTUAL.'storage' => $c->toArray(),
-        ];
-
-        return $a;
-    }
-
     public static function castObjectStorage(\SplObjectStorage $c, array $a, Stub $stub, $isNested)
     {
         $storage = [];
         unset($a[Caster::PREFIX_DYNAMIC."\0gcdata"]); // Don't hit https://bugs.php.net/65967
+        unset($a["\0SplObjectStorage\0storage"]);
 
         $clone = clone $c;
         foreach ($clone as $obj) {
@@ -191,14 +213,16 @@ public static function castOuterIterator(\OuterIterator $c, array $a, Stub $stub
     private static function castSplArray($c, array $a, Stub $stub, $isNested)
     {
         $prefix = Caster::PREFIX_VIRTUAL;
-        $class = $stub->class;
         $flags = $c->getFlags();
 
         if (!($flags & \ArrayObject::STD_PROP_LIST)) {
             $c->setFlags(\ArrayObject::STD_PROP_LIST);
-            $a = Caster::castObject($c, $class);
+            $a = Caster::castObject($c, \get_class($c), method_exists($c, '__debugInfo'), $stub->class);
             $c->setFlags($flags);
         }
+        if (\PHP_VERSION_ID < 70400) {
+            $a[$prefix.'storage'] = $c->getArrayCopy();
+        }
         $a += [
             $prefix.'flag::STD_PROP_LIST' => (bool) ($flags & \ArrayObject::STD_PROP_LIST),
             $prefix.'flag::ARRAY_AS_PROPS' => (bool) ($flags & \ArrayObject::ARRAY_AS_PROPS),
@@ -206,7 +230,6 @@ private static function castSplArray($c, array $a, Stub $stub, $isNested)
         if ($c instanceof \ArrayObject) {
             $a[$prefix.'iteratorClass'] = new ClassStub($c->getIteratorClass());
         }
-        $a[$prefix.'storage'] = $c->getArrayCopy();
 
         return $a;
     }
diff --git a/vendor/symfony/var-dumper/Caster/XmlResourceCaster.php b/vendor/symfony/var-dumper/Caster/XmlResourceCaster.php
index 117138c784..99c1486483 100644
--- a/vendor/symfony/var-dumper/Caster/XmlResourceCaster.php
+++ b/vendor/symfony/var-dumper/Caster/XmlResourceCaster.php
@@ -21,28 +21,28 @@
 class XmlResourceCaster
 {
     private static $xmlErrors = [
-        XML_ERROR_NONE => 'XML_ERROR_NONE',
-        XML_ERROR_NO_MEMORY => 'XML_ERROR_NO_MEMORY',
-        XML_ERROR_SYNTAX => 'XML_ERROR_SYNTAX',
-        XML_ERROR_NO_ELEMENTS => 'XML_ERROR_NO_ELEMENTS',
-        XML_ERROR_INVALID_TOKEN => 'XML_ERROR_INVALID_TOKEN',
-        XML_ERROR_UNCLOSED_TOKEN => 'XML_ERROR_UNCLOSED_TOKEN',
-        XML_ERROR_PARTIAL_CHAR => 'XML_ERROR_PARTIAL_CHAR',
-        XML_ERROR_TAG_MISMATCH => 'XML_ERROR_TAG_MISMATCH',
-        XML_ERROR_DUPLICATE_ATTRIBUTE => 'XML_ERROR_DUPLICATE_ATTRIBUTE',
-        XML_ERROR_JUNK_AFTER_DOC_ELEMENT => 'XML_ERROR_JUNK_AFTER_DOC_ELEMENT',
-        XML_ERROR_PARAM_ENTITY_REF => 'XML_ERROR_PARAM_ENTITY_REF',
-        XML_ERROR_UNDEFINED_ENTITY => 'XML_ERROR_UNDEFINED_ENTITY',
-        XML_ERROR_RECURSIVE_ENTITY_REF => 'XML_ERROR_RECURSIVE_ENTITY_REF',
-        XML_ERROR_ASYNC_ENTITY => 'XML_ERROR_ASYNC_ENTITY',
-        XML_ERROR_BAD_CHAR_REF => 'XML_ERROR_BAD_CHAR_REF',
-        XML_ERROR_BINARY_ENTITY_REF => 'XML_ERROR_BINARY_ENTITY_REF',
-        XML_ERROR_ATTRIBUTE_EXTERNAL_ENTITY_REF => 'XML_ERROR_ATTRIBUTE_EXTERNAL_ENTITY_REF',
-        XML_ERROR_MISPLACED_XML_PI => 'XML_ERROR_MISPLACED_XML_PI',
-        XML_ERROR_UNKNOWN_ENCODING => 'XML_ERROR_UNKNOWN_ENCODING',
-        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',
+        \XML_ERROR_NONE => 'XML_ERROR_NONE',
+        \XML_ERROR_NO_MEMORY => 'XML_ERROR_NO_MEMORY',
+        \XML_ERROR_SYNTAX => 'XML_ERROR_SYNTAX',
+        \XML_ERROR_NO_ELEMENTS => 'XML_ERROR_NO_ELEMENTS',
+        \XML_ERROR_INVALID_TOKEN => 'XML_ERROR_INVALID_TOKEN',
+        \XML_ERROR_UNCLOSED_TOKEN => 'XML_ERROR_UNCLOSED_TOKEN',
+        \XML_ERROR_PARTIAL_CHAR => 'XML_ERROR_PARTIAL_CHAR',
+        \XML_ERROR_TAG_MISMATCH => 'XML_ERROR_TAG_MISMATCH',
+        \XML_ERROR_DUPLICATE_ATTRIBUTE => 'XML_ERROR_DUPLICATE_ATTRIBUTE',
+        \XML_ERROR_JUNK_AFTER_DOC_ELEMENT => 'XML_ERROR_JUNK_AFTER_DOC_ELEMENT',
+        \XML_ERROR_PARAM_ENTITY_REF => 'XML_ERROR_PARAM_ENTITY_REF',
+        \XML_ERROR_UNDEFINED_ENTITY => 'XML_ERROR_UNDEFINED_ENTITY',
+        \XML_ERROR_RECURSIVE_ENTITY_REF => 'XML_ERROR_RECURSIVE_ENTITY_REF',
+        \XML_ERROR_ASYNC_ENTITY => 'XML_ERROR_ASYNC_ENTITY',
+        \XML_ERROR_BAD_CHAR_REF => 'XML_ERROR_BAD_CHAR_REF',
+        \XML_ERROR_BINARY_ENTITY_REF => 'XML_ERROR_BINARY_ENTITY_REF',
+        \XML_ERROR_ATTRIBUTE_EXTERNAL_ENTITY_REF => 'XML_ERROR_ATTRIBUTE_EXTERNAL_ENTITY_REF',
+        \XML_ERROR_MISPLACED_XML_PI => 'XML_ERROR_MISPLACED_XML_PI',
+        \XML_ERROR_UNKNOWN_ENCODING => 'XML_ERROR_UNKNOWN_ENCODING',
+        \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 de09f1803d..76b55b478b 100644
--- a/vendor/symfony/var-dumper/Cloner/AbstractCloner.php
+++ b/vendor/symfony/var-dumper/Cloner/AbstractCloner.php
@@ -45,6 +45,7 @@ abstract class AbstractCloner implements ClonerInterface
         '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'],
+        'Doctrine\Persistence\ObjectManager' => ['Symfony\Component\VarDumper\Caster\StubCaster', 'cutInternals'],
 
         'DOMException' => ['Symfony\Component\VarDumper\Caster\DOMCaster', 'castException'],
         'DOMStringList' => ['Symfony\Component\VarDumper\Caster\DOMCaster', 'castLength'],
@@ -82,6 +83,8 @@ abstract class AbstractCloner implements ClonerInterface
         'Symfony\Component\Debug\Exception\SilencedErrorContext' => ['Symfony\Component\VarDumper\Caster\ExceptionCaster', 'castSilencedErrorContext'],
 
         'PHPUnit_Framework_MockObject_MockObject' => ['Symfony\Component\VarDumper\Caster\StubCaster', 'cutInternals'],
+        'PHPUnit\Framework\MockObject\MockObject' => ['Symfony\Component\VarDumper\Caster\StubCaster', 'cutInternals'],
+        'PHPUnit\Framework\MockObject\Stub' => ['Symfony\Component\VarDumper\Caster\StubCaster', 'cutInternals'],
         'Prophecy\Prophecy\ProphecySubjectInterface' => ['Symfony\Component\VarDumper\Caster\StubCaster', 'cutInternals'],
         'Mockery\MockInterface' => ['Symfony\Component\VarDumper\Caster\StubCaster', 'cutInternals'],
 
@@ -99,7 +102,6 @@ abstract class AbstractCloner implements ClonerInterface
         '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'],
@@ -115,7 +117,9 @@ abstract class AbstractCloner implements ClonerInterface
         'DateTimeZone' => ['Symfony\Component\VarDumper\Caster\DateCaster', 'castTimeZone'],
         'DatePeriod' => ['Symfony\Component\VarDumper\Caster\DateCaster', 'castPeriod'],
 
+        'CurlHandle' => ['Symfony\Component\VarDumper\Caster\ResourceCaster', 'castCurl'],
         ':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'],
@@ -214,7 +218,7 @@ public function setMinDepth($minDepth)
     public function cloneVar($var, $filter = 0)
     {
         $this->prevErrorHandler = set_error_handler(function ($type, $msg, $file, $line, $context = []) {
-            if (E_RECOVERABLE_ERROR === $type || E_USER_ERROR === $type) {
+            if (\E_RECOVERABLE_ERROR === $type || \E_USER_ERROR === $type) {
                 // Cloner never dies
                 throw new \ErrorException($msg, 0, $type, $file, $line);
             }
@@ -263,8 +267,8 @@ protected function castObject(Stub $stub, $isNested)
         $obj = $stub->value;
         $class = $stub->class;
 
-        if (isset($class[15]) && "\0" === $class[15] && 0 === strpos($class, "class@anonymous\x00")) {
-            $stub->class = get_parent_class($class).'@anonymous';
+        if ((\PHP_VERSION_ID >= 80000 || (isset($class[15]) && "\0" === $class[15])) && false !== strpos($class, "@anonymous\0")) {
+            $stub->class = \PHP_VERSION_ID < 80000 ? (get_parent_class($class) ?: key(class_implements($class)) ?: 'class').'@anonymous' : get_debug_type($obj);
         }
         if (isset($this->classInfo[$class])) {
             list($i, $parents, $hasDebugInfo) = $this->classInfo[$class];
@@ -286,7 +290,7 @@ protected function castObject(Stub $stub, $isNested)
             $this->classInfo[$class] = [$i, $parents, $hasDebugInfo];
         }
 
-        $a = Caster::castObject($obj, $class, $hasDebugInfo);
+        $a = Caster::castObject($obj, $class, $hasDebugInfo, $stub->class);
 
         try {
             while ($i--) {
diff --git a/vendor/symfony/var-dumper/Cloner/Data.php b/vendor/symfony/var-dumper/Cloner/Data.php
index bb5ee94d8b..3973720794 100644
--- a/vendor/symfony/var-dumper/Cloner/Data.php
+++ b/vendor/symfony/var-dumper/Cloner/Data.php
@@ -34,7 +34,7 @@ public function __construct(array $data)
     }
 
     /**
-     * @return string The type of the value
+     * @return string|null The type of the value
      */
     public function getType()
     {
@@ -58,10 +58,12 @@ public function getType()
         if (Stub::TYPE_RESOURCE === $item->type) {
             return $item->class.' resource';
         }
+
+        return null;
     }
 
     /**
-     * @param bool $recursive Whether values should be resolved recursively or not
+     * @param array|bool $recursive Whether values should be resolved recursively or not
      *
      * @return string|int|float|bool|array|Data[]|null A native representation of the original value
      */
@@ -112,7 +114,7 @@ public function count()
     public function getIterator()
     {
         if (!\is_array($value = $this->getValue())) {
-            throw new \LogicException(sprintf('%s object holds non-iterable type "%s".', self::class, \gettype($value)));
+            throw new \LogicException(sprintf('"%s" object holds non-iterable type "%s".', self::class, \gettype($value)));
         }
 
         foreach ($value as $k => $v) {
@@ -127,6 +129,8 @@ public function __get($key)
 
             return $item instanceof Stub || [] === $item ? $data : $item;
         }
+
+        return null;
     }
 
     public function __isset($key)
@@ -182,7 +186,7 @@ public function getRawData()
      *
      * @param int $maxDepth The max dumped depth level
      *
-     * @return self A clone of $this
+     * @return static
      */
     public function withMaxDepth($maxDepth)
     {
@@ -197,7 +201,7 @@ public function withMaxDepth($maxDepth)
      *
      * @param int $maxItemsPerDepth The max number of items dumped per depth level
      *
-     * @return self A clone of $this
+     * @return static
      */
     public function withMaxItemsPerDepth($maxItemsPerDepth)
     {
@@ -212,7 +216,7 @@ public function withMaxItemsPerDepth($maxItemsPerDepth)
      *
      * @param bool $useRefHandles False to hide global ref. handles
      *
-     * @return self A clone of $this
+     * @return static
      */
     public function withRefHandles($useRefHandles)
     {
@@ -227,7 +231,7 @@ public function withRefHandles($useRefHandles)
      *
      * @param string|int $key The key to seek to
      *
-     * @return self|null A clone of $this or null if the key is not set
+     * @return static|null Null if the key is not set
      */
     public function seek($key)
     {
@@ -237,7 +241,7 @@ public function seek($key)
             $item = $item->value;
         }
         if (!($item = $this->getStub($item)) instanceof Stub || !$item->position) {
-            return;
+            return null;
         }
         $keys = [$key];
 
@@ -252,7 +256,7 @@ public function seek($key)
             case Stub::TYPE_RESOURCE:
                 break;
             default:
-                return;
+                return null;
         }
 
         $data = null;
@@ -302,7 +306,7 @@ private function dumpItem($dumper, $cursor, &$refs, $item)
             }
         } elseif (Stub::TYPE_REF === $item->type) {
             if ($item->handle) {
-                if (!isset($refs[$r = $item->handle - (PHP_INT_MAX >> 1)])) {
+                if (!isset($refs[$r = $item->handle - (\PHP_INT_MAX >> 1)])) {
                     $cursor->refIndex = $refs[$r] = $cursor->refIndex ?: ++$refs[0];
                 } else {
                     $firstSeen = false;
@@ -370,7 +374,7 @@ private function dumpItem($dumper, $cursor, &$refs, $item)
                     break;
 
                 default:
-                    throw new \RuntimeException(sprintf('Unexpected Stub type: %s', $item->type));
+                    throw new \RuntimeException(sprintf('Unexpected Stub type: "%s".', $item->type));
             }
         } elseif ('array' === $type) {
             $dumper->enterHash($cursor, Cursor::HASH_INDEXED, 0, false);
diff --git a/vendor/symfony/var-dumper/Cloner/DumperInterface.php b/vendor/symfony/var-dumper/Cloner/DumperInterface.php
index cb498ff706..912bb52139 100644
--- a/vendor/symfony/var-dumper/Cloner/DumperInterface.php
+++ b/vendor/symfony/var-dumper/Cloner/DumperInterface.php
@@ -40,21 +40,21 @@ public function dumpString(Cursor $cursor, $str, $bin, $cut);
     /**
      * Dumps while entering an hash.
      *
-     * @param Cursor $cursor   The Cursor position in the dump
-     * @param int    $type     A Cursor::HASH_* const for the type of hash
-     * @param string $class    The object class, resource type or array count
-     * @param bool   $hasChild When the dump of the hash has child item
+     * @param Cursor     $cursor   The Cursor position in the dump
+     * @param int        $type     A Cursor::HASH_* const for the type of hash
+     * @param string|int $class    The object class, resource type or array count
+     * @param bool       $hasChild When the dump of the hash has child item
      */
     public function enterHash(Cursor $cursor, $type, $class, $hasChild);
 
     /**
      * Dumps while leaving an hash.
      *
-     * @param Cursor $cursor   The Cursor position in the dump
-     * @param int    $type     A Cursor::HASH_* const for the type of hash
-     * @param string $class    The object class, resource type or array count
-     * @param bool   $hasChild When the dump of the hash has child item
-     * @param int    $cut      The number of items the hash has been cut by
+     * @param Cursor     $cursor   The Cursor position in the dump
+     * @param int        $type     A Cursor::HASH_* const for the type of hash
+     * @param string|int $class    The object class, resource type or array count
+     * @param bool       $hasChild When the dump of the hash has child item
+     * @param int        $cut      The number of items the hash has been cut by
      */
     public function leaveHash(Cursor $cursor, $type, $class, $hasChild, $cut);
 }
diff --git a/vendor/symfony/var-dumper/Cloner/Stub.php b/vendor/symfony/var-dumper/Cloner/Stub.php
index 27dd3ef32c..a56120ce36 100644
--- a/vendor/symfony/var-dumper/Cloner/Stub.php
+++ b/vendor/symfony/var-dumper/Cloner/Stub.php
@@ -48,7 +48,7 @@ public function __sleep()
     {
         $properties = [];
 
-        if (!isset(self::$defaultProperties[$c = \get_class($this)])) {
+        if (!isset(self::$defaultProperties[$c = static::class])) {
             self::$defaultProperties[$c] = get_class_vars($c);
 
             foreach ((new \ReflectionClass($c))->getStaticProperties() as $k => $v) {
diff --git a/vendor/symfony/var-dumper/Cloner/VarCloner.php b/vendor/symfony/var-dumper/Cloner/VarCloner.php
index f418aa0894..8c4221220e 100644
--- a/vendor/symfony/var-dumper/Cloner/VarCloner.php
+++ b/vendor/symfony/var-dumper/Cloner/VarCloner.php
@@ -42,14 +42,14 @@ protected function doClone($var)
         $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) [];     // 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
 
         if (!self::$hashMask) {
-            self::$gid = uniqid(mt_rand(), true); // Unique string used to detect the special $GLOBALS variable
             self::initHashMask();
+            self::$gid = md5(dechex(self::$hashMask)); // Unique string used to detect the special $GLOBALS variable
         }
         $gid = self::$gid;
         $hashMask = self::$hashMask;
@@ -79,18 +79,25 @@ protected function doClone($var)
                     }
                     if ($gk !== $k) {
                         $fromObjCast = true;
-                        $refs = $vals = \array_values($queue[$i]);
+                        $refs = $vals = array_values($queue[$i]);
                         break;
                     }
                 }
             }
             foreach ($vals as $k => $v) {
                 // $v is the original value or a stub object in case of hard references
-                $refs[$k] = $cookie;
-                if ($zvalIsRef = $vals[$k] === $cookie) {
+
+                if (\PHP_VERSION_ID >= 70400) {
+                    $zvalIsRef = null !== \ReflectionReference::fromArrayElement($vals, $k);
+                } else {
+                    $refs[$k] = $cookie;
+                    $zvalIsRef = $vals[$k] === $cookie;
+                }
+
+                if ($zvalIsRef) {
                     $vals[$k] = &$stub;         // Break hard references to make $queue completely
                     unset($stub);               // independent from the original structure
-                    if ($v instanceof Stub && isset($hardRefs[\spl_object_hash($v)])) {
+                    if ($v instanceof Stub && isset($hardRefs[spl_object_hash($v)])) {
                         $vals[$k] = $refs[$k] = $v;
                         if ($v->value instanceof Stub && (Stub::TYPE_OBJECT === $v->value->type || Stub::TYPE_RESOURCE === $v->value->type)) {
                             ++$v->value->refCount;
@@ -100,7 +107,7 @@ protected function doClone($var)
                     }
                     $refs[$k] = $vals[$k] = new Stub();
                     $refs[$k]->value = $v;
-                    $h = \spl_object_hash($refs[$k]);
+                    $h = spl_object_hash($refs[$k]);
                     $hardRefs[$h] = &$refs[$k];
                     $values[$h] = $v;
                     $vals[$k]->handle = ++$refsCounter;
@@ -113,27 +120,26 @@ protected function doClone($var)
                     case \is_int($v):
                     case \is_float($v):
                         continue 2;
-
                     case \is_string($v):
                         if ('' === $v) {
                             continue 2;
                         }
-                        if (!\preg_match('//u', $v)) {
+                        if (!preg_match('//u', $v)) {
                             $stub = new Stub();
                             $stub->type = Stub::TYPE_STRING;
                             $stub->class = Stub::STRING_BINARY;
                             if (0 <= $maxString && 0 < $cut = \strlen($v) - $maxString) {
                                 $stub->cut = $cut;
-                                $stub->value = \substr($v, 0, -$cut);
+                                $stub->value = substr($v, 0, -$cut);
                             } else {
                                 $stub->value = $v;
                             }
-                        } elseif (0 <= $maxString && isset($v[1 + ($maxString >> 2)]) && 0 < $cut = \mb_strlen($v, 'UTF-8') - $maxString) {
+                        } elseif (0 <= $maxString && isset($v[1 + ($maxString >> 2)]) && 0 < $cut = mb_strlen($v, 'UTF-8') - $maxString) {
                             $stub = new Stub();
                             $stub->type = Stub::TYPE_STRING;
                             $stub->class = Stub::STRING_UTF8;
                             $stub->cut = $cut;
-                            $stub->value = \mb_substr($v, 0, $maxString, 'UTF-8');
+                            $stub->value = mb_substr($v, 0, $maxString, 'UTF-8');
                         } else {
                             continue 2;
                         }
@@ -179,7 +185,7 @@ protected function doClone($var)
 
                     case \is_object($v):
                     case $v instanceof \__PHP_Incomplete_Class:
-                        if (empty($objRefs[$h = $hashMask ^ \hexdec(\substr(\spl_object_hash($v), $hashOffset, \PHP_INT_SIZE))])) {
+                        if (empty($objRefs[$h = $hashMask ^ hexdec(substr(spl_object_hash($v), $hashOffset, \PHP_INT_SIZE))])) {
                             $stub = new Stub();
                             $stub->type = Stub::TYPE_OBJECT;
                             $stub->class = \get_class($v);
@@ -190,7 +196,7 @@ protected function doClone($var)
                                 if (Stub::TYPE_OBJECT !== $stub->type || null === $stub->value) {
                                     break;
                                 }
-                                $h = $hashMask ^ \hexdec(\substr(\spl_object_hash($stub->value), $hashOffset, \PHP_INT_SIZE));
+                                $h = $hashMask ^ hexdec(substr(spl_object_hash($stub->value), $hashOffset, \PHP_INT_SIZE));
                                 $stub->handle = $h;
                             }
                             $stub->value = null;
@@ -213,7 +219,7 @@ protected function doClone($var)
                         if (empty($resRefs[$h = (int) $v])) {
                             $stub = new Stub();
                             $stub->type = Stub::TYPE_RESOURCE;
-                            if ('Unknown' === $stub->class = @\get_resource_type($v)) {
+                            if ('Unknown' === $stub->class = @get_resource_type($v)) {
                                 $stub->class = 'Closed';
                             }
                             $stub->value = $v;
@@ -241,7 +247,7 @@ protected function doClone($var)
                         $stub->position = $len++;
                     } elseif ($pos < $maxItems) {
                         if ($maxItems < $pos += \count($a)) {
-                            $a = \array_slice($a, 0, $maxItems - $pos);
+                            $a = \array_slice($a, 0, $maxItems - $pos, true);
                             if ($stub->cut >= 0) {
                                 $stub->cut += $pos - $maxItems;
                             }
@@ -303,7 +309,7 @@ protected function doClone($var)
     private static function initHashMask()
     {
         $obj = (object) [];
-        self::$hashOffset = 16 - PHP_INT_SIZE;
+        self::$hashOffset = 16 - \PHP_INT_SIZE;
         self::$hashMask = -1;
 
         if (\defined('HHVM_VERSION')) {
@@ -311,7 +317,7 @@ private static function initHashMask()
         } else {
             // check if we are nested in an output buffering handler to prevent a fatal error with ob_start() below
             $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) {
+            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;
                     break;
@@ -324,6 +330,6 @@ private static function initHashMask()
             }
         }
 
-        self::$hashMask ^= hexdec(substr(spl_object_hash($obj), self::$hashOffset, PHP_INT_SIZE));
+        self::$hashMask ^= hexdec(substr(spl_object_hash($obj), self::$hashOffset, \PHP_INT_SIZE));
     }
 }
diff --git a/vendor/symfony/var-dumper/Dumper/AbstractDumper.php b/vendor/symfony/var-dumper/Dumper/AbstractDumper.php
index 30cd1a1b19..5ea6294f3d 100644
--- a/vendor/symfony/var-dumper/Dumper/AbstractDumper.php
+++ b/vendor/symfony/var-dumper/Dumper/AbstractDumper.php
@@ -35,7 +35,7 @@ abstract class AbstractDumper implements DataDumperInterface, DumperInterface
     protected $indentPad = '  ';
     protected $flags;
 
-    private $charset;
+    private $charset = '';
 
     /**
      * @param callable|resource|string|null $output  A line dumper callable, an opened stream or an output path, defaults to static::$defaultOutput
@@ -126,8 +126,8 @@ public function dump(Data $data, $output = null)
         $this->decimalPoint = localeconv();
         $this->decimalPoint = $this->decimalPoint['decimal_point'];
 
-        if ($locale = $this->flags & (self::DUMP_COMMA_SEPARATOR | self::DUMP_TRAILING_COMMA) ? setlocale(LC_NUMERIC, 0) : null) {
-            setlocale(LC_NUMERIC, 'C');
+        if ($locale = $this->flags & (self::DUMP_COMMA_SEPARATOR | self::DUMP_TRAILING_COMMA) ? setlocale(\LC_NUMERIC, 0) : null) {
+            setlocale(\LC_NUMERIC, 'C');
         }
 
         if ($returnDump = true === $output) {
@@ -151,9 +151,11 @@ public function dump(Data $data, $output = null)
                 $this->setOutput($prevOutput);
             }
             if ($locale) {
-                setlocale(LC_NUMERIC, $locale);
+                setlocale(\LC_NUMERIC, $locale);
             }
         }
+
+        return null;
     }
 
     /**
@@ -185,13 +187,13 @@ protected function echoLine($line, $depth, $indentPad)
     /**
      * Converts a non-UTF-8 string to UTF-8.
      *
-     * @param string $s The non-UTF-8 string to convert
+     * @param string|null $s The non-UTF-8 string to convert
      *
-     * @return string The string converted to UTF-8
+     * @return string|null The string converted to UTF-8
      */
     protected function utf8Encode($s)
     {
-        if (preg_match('//u', $s)) {
+        if (null === $s || preg_match('//u', $s)) {
             return $s;
         }
 
diff --git a/vendor/symfony/var-dumper/Dumper/CliDumper.php b/vendor/symfony/var-dumper/Dumper/CliDumper.php
index 2bd347d96a..4c48ab7cc8 100644
--- a/vendor/symfony/var-dumper/Dumper/CliDumper.php
+++ b/vendor/symfony/var-dumper/Dumper/CliDumper.php
@@ -28,7 +28,7 @@ class CliDumper extends AbstractDumper
     protected $maxStringWidth = 0;
     protected $styles = [
         // See http://en.wikipedia.org/wiki/ANSI_escape_code#graphics
-        'default' => '38;5;208',
+        'default' => '0;38;5;208',
         'num' => '1;38;5;38',
         'const' => '1;38;5;208',
         'str' => '1;38;5;113',
@@ -131,8 +131,8 @@ public function dumpScalar(Cursor $cursor, $type, $value)
                 $style = 'num';
 
                 switch (true) {
-                    case INF === $value:  $value = 'INF'; break;
-                    case -INF === $value: $value = '-INF'; break;
+                    case \INF === $value:  $value = 'INF'; break;
+                    case -\INF === $value: $value = '-INF'; break;
                     case is_nan($value):  $value = 'NAN'; break;
                     default:
                         $value = (string) $value;
@@ -255,6 +255,10 @@ public function dumpString(Cursor $cursor, $str, $bin, $cut)
      */
     public function enterHash(Cursor $cursor, $type, $class, $hasChild)
     {
+        if (null === $this->colors) {
+            $this->colors = $this->supportsColors();
+        }
+
         $this->dumpKey($cursor);
 
         if ($this->collapseNextHash) {
diff --git a/vendor/symfony/var-dumper/Dumper/HtmlDumper.php b/vendor/symfony/var-dumper/Dumper/HtmlDumper.php
index 37d50a884d..ccbdc96f23 100644
--- a/vendor/symfony/var-dumper/Dumper/HtmlDumper.php
+++ b/vendor/symfony/var-dumper/Dumper/HtmlDumper.php
@@ -128,7 +128,7 @@ protected function getDumpHeader()
             return $this->dumpHeader;
         }
 
-        $line = str_replace('{$options}', json_encode($this->displayOptions, JSON_FORCE_OBJECT), <<<'EOHTML'
+        $line = str_replace('{$options}', json_encode($this->displayOptions, \JSON_FORCE_OBJECT), <<<'EOHTML'
 <script>
 Sfdump = window.Sfdump || (function (doc) {
 
@@ -438,7 +438,7 @@ function xpathHasClass(className) {
                     return this.current();
                 }
                 this.idx = this.idx < (this.nodes.length - 1) ? this.idx + 1 : 0;
-        
+
                 return this.current();
             },
             previous: function () {
@@ -446,7 +446,7 @@ function xpathHasClass(className) {
                     return this.current();
                 }
                 this.idx = this.idx > 0 ? this.idx - 1 : (this.nodes.length - 1);
-        
+
                 return this.current();
             },
             isEmpty: function () {
@@ -522,11 +522,11 @@ function showCurrent(state)
                     "sf-dump-protected",
                     "sf-dump-private",
                 ].map(xpathHasClass).join(' or ');
-                
+
                 var xpathResult = doc.evaluate('.//span[' + classMatches + '][contains(translate(child::text(), ' + xpathString(searchQuery.toUpperCase()) + ', ' + xpathString(searchQuery.toLowerCase()) + '), ' + xpathString(searchQuery.toLowerCase()) + ')]', root, null, XPathResult.ORDERED_NODE_ITERATOR_TYPE, null);
 
                 while (node = xpathResult.iterateNext()) state.nodes.push(node);
-                
+
                 showCurrent(state);
             }, 400);
         });
@@ -871,7 +871,7 @@ protected function dumpLine($depth, $endOfValue = false)
         if (-1 === $depth) {
             $args = ['"'.$this->dumpId.'"'];
             if ($this->extraDisplayOptions) {
-                $args[] = json_encode($this->extraDisplayOptions, JSON_FORCE_OBJECT);
+                $args[] = json_encode($this->extraDisplayOptions, \JSON_FORCE_OBJECT);
             }
             // Replace is for BC
             $this->line .= sprintf(str_replace('"%s"', '%s', $this->dumpSuffix), implode(', ', $args));
@@ -900,5 +900,5 @@ private function getSourceLink($file, $line)
 
 function esc($str)
 {
-    return htmlspecialchars($str, ENT_QUOTES, 'UTF-8');
+    return htmlspecialchars($str, \ENT_QUOTES, 'UTF-8');
 }
diff --git a/vendor/symfony/var-dumper/LICENSE b/vendor/symfony/var-dumper/LICENSE
index cf8b3ebe87..684fbf94df 100644
--- a/vendor/symfony/var-dumper/LICENSE
+++ b/vendor/symfony/var-dumper/LICENSE
@@ -1,4 +1,4 @@
-Copyright (c) 2014-2019 Fabien Potencier
+Copyright (c) 2014-2020 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/Test/VarDumperTestTrait.php b/vendor/symfony/var-dumper/Test/VarDumperTestTrait.php
index aae113b6c5..b8f12c5e45 100644
--- a/vendor/symfony/var-dumper/Test/VarDumperTestTrait.php
+++ b/vendor/symfony/var-dumper/Test/VarDumperTestTrait.php
@@ -22,7 +22,7 @@ trait VarDumperTestTrait
     public function assertDumpEquals($dump, $data, $filter = 0, $message = '')
     {
         if (\is_string($filter)) {
-            @trigger_error(sprintf('The $message argument of the "%s()" method at the 3rd position is deprecated since Symfony 3.4 and will be moved at the 4th position in 4.0.', __METHOD__), E_USER_DEPRECATED);
+            @trigger_error(sprintf('The $message argument of the "%s()" method at the 3rd position is deprecated since Symfony 3.4 and will be moved at the 4th position in 4.0.', __METHOD__), \E_USER_DEPRECATED);
             $message = $filter;
             $filter = 0;
         }
@@ -33,7 +33,7 @@ public function assertDumpEquals($dump, $data, $filter = 0, $message = '')
     public function assertDumpMatchesFormat($dump, $data, $filter = 0, $message = '')
     {
         if (\is_string($filter)) {
-            @trigger_error(sprintf('The $message argument of the "%s()" method at the 3rd position is deprecated since Symfony 3.4 and will be moved at the 4th position in 4.0.', __METHOD__), E_USER_DEPRECATED);
+            @trigger_error(sprintf('The $message argument of the "%s()" method at the 3rd position is deprecated since Symfony 3.4 and will be moved at the 4th position in 4.0.', __METHOD__), \E_USER_DEPRECATED);
             $message = $filter;
             $filter = 0;
         }
@@ -41,6 +41,9 @@ public function assertDumpMatchesFormat($dump, $data, $filter = 0, $message = ''
         $this->assertStringMatchesFormat(rtrim($dump), $this->getDump($data, null, $filter), $message);
     }
 
+    /**
+     * @return string|null
+     */
     protected function getDump($data, $key = null, $filter = 0)
     {
         $flags = getenv('DUMP_LIGHT_ARRAY') ? CliDumper::DUMP_LIGHT_ARRAY : 0;
@@ -52,7 +55,7 @@ protected function getDump($data, $key = null, $filter = 0)
         $dumper->setColors(false);
         $data = $cloner->cloneVar($data, $filter)->withRefHandles(false);
         if (null !== $key && null === $data = $data->seek($key)) {
-            return;
+            return null;
         }
 
         return rtrim($dumper->dump($data, true));
diff --git a/vendor/symfony/var-dumper/Tests/Caster/CasterTest.php b/vendor/symfony/var-dumper/Tests/Caster/CasterTest.php
index 728697b413..73800e5f9d 100644
--- a/vendor/symfony/var-dumper/Tests/Caster/CasterTest.php
+++ b/vendor/symfony/var-dumper/Tests/Caster/CasterTest.php
@@ -171,7 +171,7 @@ public function testAnonymousClass()
 
         $this->assertDumpMatchesFormat(
             <<<'EOTXT'
-@anonymous {
+class@anonymous {
   -foo: "foo"
 }
 EOTXT
diff --git a/vendor/symfony/var-dumper/Tests/Caster/DateCasterTest.php b/vendor/symfony/var-dumper/Tests/Caster/DateCasterTest.php
index da8b4d0fa5..8c685f6b7b 100644
--- a/vendor/symfony/var-dumper/Tests/Caster/DateCasterTest.php
+++ b/vendor/symfony/var-dumper/Tests/Caster/DateCasterTest.php
@@ -16,6 +16,7 @@
 use Symfony\Component\VarDumper\Caster\DateCaster;
 use Symfony\Component\VarDumper\Cloner\Stub;
 use Symfony\Component\VarDumper\Test\VarDumperTestTrait;
+use Symfony\Component\VarDumper\Tests\Fixtures\DateTimeChild;
 
 /**
  * @author Dany Maillard <danymaillard93b@gmail.com>
@@ -55,7 +56,7 @@ public function testCastDateTime($time, $timezone, $xDate, $xTimestamp, $xInfos)
 
         $stub = new Stub();
         $date = new \DateTime($time, new \DateTimeZone($timezone));
-        $cast = DateCaster::castDateTime($date, ['foo' => 'bar'], $stub, false, 0);
+        $cast = DateCaster::castDateTime($date, Caster::castObject($date, \DateTime::class), $stub, false, 0);
 
         $xDump = <<<EODUMP
 array:1 [
@@ -97,12 +98,46 @@ public function provideDateTimes()
         ];
     }
 
+    public function testCastDateTimeWithAdditionalChildProperty()
+    {
+        $stub = new Stub();
+        $date = new DateTimeChild('2020-02-13 00:00:00.123456', new \DateTimeZone('Europe/Paris'));
+        $objectCast = Caster::castObject($date, DateTimeChild::class);
+        $dateCast = DateCaster::castDateTime($date, $objectCast, $stub, false, 0);
+
+        $xDate = '2020-02-13 00:00:00.123456 Europe/Paris (+01:00)';
+        $xInfo = 'Thursday, February 13, 2020%Afrom now';
+        $xDump = <<<EODUMP
+array:2 [
+  "\\x00Symfony\Component\VarDumper\Tests\Fixtures\DateTimeChild\\x00addedProperty" => "foo"
+  "\\x00~\\x00date" => $xDate
+]
+EODUMP;
+
+        $this->assertDumpEquals($xDump, $dateCast);
+
+        $xDump = <<<EODUMP
+Symfony\Component\VarDumper\Caster\ConstStub {
+  +type: 1
+  +class: "$xDate"
+  +value: "%A$xInfo%A"
+  +cut: 0
+  +handle: 0
+  +refCount: 0
+  +position: 0
+  +attr: []
+}
+EODUMP;
+
+        $this->assertDumpMatchesFormat($xDump, $dateCast["\0~\0date"]);
+    }
+
     /**
      * @dataProvider provideIntervals
      */
     public function testDumpInterval($intervalSpec, $ms, $invert, $expected)
     {
-        if ($ms && \PHP_VERSION_ID >= 70200 && version_compare(PHP_VERSION, '7.2.0rc3', '<=')) {
+        if ($ms && \PHP_VERSION_ID >= 70200 && version_compare(\PHP_VERSION, '7.2.0rc3', '<=')) {
             $this->markTestSkipped('Skipped on 7.2 before rc4 because of php bug #75354.');
         }
 
@@ -122,7 +157,7 @@ public function testDumpInterval($intervalSpec, $ms, $invert, $expected)
      */
     public function testDumpIntervalExcludingVerbosity($intervalSpec, $ms, $invert, $expected)
     {
-        if ($ms && \PHP_VERSION_ID >= 70200 && version_compare(PHP_VERSION, '7.2.0rc3', '<=')) {
+        if ($ms && \PHP_VERSION_ID >= 70200 && version_compare(\PHP_VERSION, '7.2.0rc3', '<=')) {
             $this->markTestSkipped('Skipped on 7.2 before rc4 because of php bug #75354.');
         }
 
@@ -142,7 +177,7 @@ public function testDumpIntervalExcludingVerbosity($intervalSpec, $ms, $invert,
      */
     public function testCastInterval($intervalSpec, $ms, $invert, $xInterval, $xSeconds)
     {
-        if ($ms && \PHP_VERSION_ID >= 70200 && version_compare(PHP_VERSION, '7.2.0rc3', '<=')) {
+        if ($ms && \PHP_VERSION_ID >= 70200 && version_compare(\PHP_VERSION, '7.2.0rc3', '<=')) {
             $this->markTestSkipped('Skipped on 7.2 before rc4 because of php bug #75354.');
         }
 
diff --git a/vendor/symfony/var-dumper/Tests/Caster/ExceptionCasterTest.php b/vendor/symfony/var-dumper/Tests/Caster/ExceptionCasterTest.php
index ea83e77163..738180f5b2 100644
--- a/vendor/symfony/var-dumper/Tests/Caster/ExceptionCasterTest.php
+++ b/vendor/symfony/var-dumper/Tests/Caster/ExceptionCasterTest.php
@@ -52,7 +52,6 @@ public function testDefaultSettings()
       › }
     }
     %s%eTests%eCaster%eExceptionCasterTest.php:40 { …}
-    Symfony\Component\VarDumper\Tests\Caster\ExceptionCasterTest->testDefaultSettings() {}
 %A
 EODUMP;
 
@@ -71,8 +70,7 @@ public function testSeek()
     ›     return new \Exception(''.$msg);
     › }
   }
-  %s%eTests%eCaster%eExceptionCasterTest.php:65 { …}
-  Symfony\Component\VarDumper\Tests\Caster\ExceptionCasterTest->testSeek() {}
+  %s%eTests%eCaster%eExceptionCasterTest.php:64 { …}
 %A
 EODUMP;
 
@@ -96,8 +94,7 @@ public function testNoArgs()
       ›     return new \Exception(''.$msg);
       › }
     }
-    %s%eTests%eCaster%eExceptionCasterTest.php:84 { …}
-    Symfony\Component\VarDumper\Tests\Caster\ExceptionCasterTest->testNoArgs() {}
+    %s%eTests%eCaster%eExceptionCasterTest.php:82 { …}
 %A
 EODUMP;
 
diff --git a/vendor/symfony/var-dumper/Tests/Caster/PdoCasterTest.php b/vendor/symfony/var-dumper/Tests/Caster/PdoCasterTest.php
index 19bbe0f80c..fca242cfc6 100644
--- a/vendor/symfony/var-dumper/Tests/Caster/PdoCasterTest.php
+++ b/vendor/symfony/var-dumper/Tests/Caster/PdoCasterTest.php
@@ -30,6 +30,7 @@ public function testCastPdo()
     {
         $pdo = new \PDO('sqlite::memory:');
         $pdo->setAttribute(\PDO::ATTR_STATEMENT_CLASS, ['PDOStatement', [$pdo]]);
+        $pdo->setAttribute(\PDO::ATTR_ERRMODE, \PDO::ERRMODE_EXCEPTION);
 
         $cast = PdoCaster::castPdo($pdo, [], new Stub(), false);
 
@@ -45,7 +46,7 @@ public function testCastPdo()
   "\x00~\x00inTransaction" => false
   "\x00~\x00attributes" => array:9 [
     "CASE" => NATURAL
-    "ERRMODE" => SILENT
+    "ERRMODE" => EXCEPTION
     "PERSISTENT" => false
     "DRIVER_NAME" => "sqlite"
     "ORACLE_NULLS" => NATURAL
diff --git a/vendor/symfony/var-dumper/Tests/Caster/ReflectionCasterTest.php b/vendor/symfony/var-dumper/Tests/Caster/ReflectionCasterTest.php
index 37e14966f4..17ad5434be 100644
--- a/vendor/symfony/var-dumper/Tests/Caster/ReflectionCasterTest.php
+++ b/vendor/symfony/var-dumper/Tests/Caster/ReflectionCasterTest.php
@@ -49,8 +49,8 @@ public function testReflectionCaster()
 %A]
   methods: array:%d [
 %A
-    "export" => ReflectionMethod {
-      +name: "export"
+    "__construct" => ReflectionMethod {
+      +name: "__construct"
       +class: "ReflectionClass"
 %A    parameters: {
         $%s: ReflectionParameter {
@@ -129,7 +129,7 @@ class: "Symfony\Component\VarDumper\Tests\Caster\ReflectionCasterTest"
 
     public function testReflectionParameter()
     {
-        $var = new \ReflectionParameter(__NAMESPACE__.'\reflectionParameterFixture', 0);
+        $var = new \ReflectionParameter(reflectionParameterFixture::class, 0);
 
         $this->assertDumpMatchesFormat(
             <<<'EOTXT'
diff --git a/vendor/symfony/var-dumper/Tests/Caster/SplCasterTest.php b/vendor/symfony/var-dumper/Tests/Caster/SplCasterTest.php
index 984b340c6d..a8c37faf3f 100644
--- a/vendor/symfony/var-dumper/Tests/Caster/SplCasterTest.php
+++ b/vendor/symfony/var-dumper/Tests/Caster/SplCasterTest.php
@@ -50,12 +50,12 @@ public function getCastFileInfoTests()
 %A}
 EOTXT
             ],
-            ['https://google.com/about', <<<'EOTXT'
+            ['https://example.com/about', <<<'EOTXT'
 SplFileInfo {
-%Apath: "https://google.com"
+%Apath: "https://example.com"
   filename: "about"
   basename: "about"
-  pathname: "https://google.com/about"
+  pathname: "https://example.com/about"
   extension: ""
   realPath: false
 %A}
@@ -175,14 +175,17 @@ public function testCastArrayObject()
         $expected = <<<EOTXT
 ArrayObject {
   +"foo": 234
+  -storage: array:1 [
+    0 => 123
+  ]
   flag::STD_PROP_LIST: false
   flag::ARRAY_AS_PROPS: false
   iteratorClass: "ArrayIterator"
-  storage: array:1 [
-    0 => 123
-  ]
 }
 EOTXT;
+        if (\PHP_VERSION_ID < 70400) {
+            $expected = str_replace('-storage:', 'storage:', $expected);
+        }
         $this->assertDumpEquals($expected, $var);
     }
 
@@ -196,11 +199,26 @@ public function testArrayIterator()
         $expected = <<<EOTXT
 Symfony\Component\VarDumper\Tests\Caster\MyArrayIterator {
   -foo: 123
-  flag::STD_PROP_LIST: false
-  flag::ARRAY_AS_PROPS: false
-  storage: array:1 [
+  -storage: array:1 [
     0 => 234
   ]
+  flag::STD_PROP_LIST: false
+  flag::ARRAY_AS_PROPS: false
+}
+EOTXT;
+        if (\PHP_VERSION_ID < 70400) {
+            $expected = str_replace('-storage:', 'storage:', $expected);
+        }
+        $this->assertDumpEquals($expected, $var);
+    }
+
+    public function testBadSplFileInfo()
+    {
+        $var = new BadSplFileInfo();
+
+        $expected = <<<EOTXT
+Symfony\Component\VarDumper\Tests\Caster\BadSplFileInfo {
+  ⚠: "The parent constructor was not called: the object is in an invalid state"
 }
 EOTXT;
         $this->assertDumpEquals($expected, $var);
@@ -211,3 +229,10 @@ class MyArrayIterator extends \ArrayIterator
 {
     private $foo = 123;
 }
+
+class BadSplFileInfo extends \SplFileInfo
+{
+    public function __construct()
+    {
+    }
+}
diff --git a/vendor/symfony/var-dumper/Tests/Cloner/DataTest.php b/vendor/symfony/var-dumper/Tests/Cloner/DataTest.php
index 7d20bced35..d4b6c24c11 100644
--- a/vendor/symfony/var-dumper/Tests/Cloner/DataTest.php
+++ b/vendor/symfony/var-dumper/Tests/Cloner/DataTest.php
@@ -69,7 +69,7 @@ public function testArray()
 
         $children = $data->getValue();
 
-        $this->assertInternalType('array', $children);
+        $this->assertIsArray($children);
 
         $this->assertInstanceOf(Data::class, $children[0]);
         $this->assertInstanceOf(Data::class, $children[1]);
diff --git a/vendor/symfony/var-dumper/Tests/Cloner/VarClonerTest.php b/vendor/symfony/var-dumper/Tests/Cloner/VarClonerTest.php
index 3b180af498..e37482fca9 100644
--- a/vendor/symfony/var-dumper/Tests/Cloner/VarClonerTest.php
+++ b/vendor/symfony/var-dumper/Tests/Cloner/VarClonerTest.php
@@ -13,6 +13,7 @@
 
 use PHPUnit\Framework\TestCase;
 use Symfony\Component\VarDumper\Cloner\VarCloner;
+use Symfony\Component\VarDumper\Tests\Fixtures\Php74;
 
 /**
  * @author Nicolas Grekas <p@tchwork.com>
@@ -21,7 +22,7 @@ class VarClonerTest extends TestCase
 {
     public function testMaxIntBoundary()
     {
-        $data = [PHP_INT_MAX => 123];
+        $data = [\PHP_INT_MAX => 123];
 
         $cloner = new VarCloner();
         $clone = $cloner->cloneVar($data);
@@ -55,7 +56,7 @@ public function testMaxIntBoundary()
 )
 
 EOTXT;
-        $this->assertSame(sprintf($expected, PHP_INT_MAX), print_r($clone, true));
+        $this->assertSame(sprintf($expected, \PHP_INT_MAX), print_r($clone, true));
     }
 
     public function testClone()
@@ -161,7 +162,7 @@ public function testLimits()
                     'Level 3 Item 3',
                 ],
                 [
-                    'Level 3 Item 4',
+                    999 => 'Level 3 Item 4',
                     'Level 3 Item 5',
                     'Level 3 Item 6',
                 ],
@@ -241,7 +242,7 @@ public function testLimits()
                     [1] => Array
                         (
                             [0] => 2
-                            [2] => 7
+                            [1] => 7
                         )
 
                     [2] => Array
@@ -298,7 +299,7 @@ public function testLimits()
 
             [7] => Array
                 (
-                    [0] => Level 3 Item 4
+                    [999] => Level 3 Item 4
                 )
 
         )
@@ -431,6 +432,73 @@ public function testCaster()
     [useRefHandles:Symfony\Component\VarDumper\Cloner\Data:private] => -1
 )
 
+EOTXT;
+        $this->assertStringMatchesFormat($expected, print_r($clone, true));
+    }
+
+    /**
+     * @requires PHP 7.4
+     */
+    public function testPhp74()
+    {
+        $data = new Php74();
+
+        $cloner = new VarCloner();
+        $clone = $cloner->cloneVar($data);
+
+        $expected = <<<'EOTXT'
+Symfony\Component\VarDumper\Cloner\Data Object
+(
+    [data:Symfony\Component\VarDumper\Cloner\Data:private] => Array
+        (
+            [0] => Array
+                (
+                    [0] => Symfony\Component\VarDumper\Cloner\Stub Object
+                        (
+                            [type] => 4
+                            [class] => Symfony\Component\VarDumper\Tests\Fixtures\Php74
+                            [value] => 
+                            [cut] => 0
+                            [handle] => %i
+                            [refCount] => 0
+                            [position] => 1
+                            [attr] => Array
+                                (
+                                )
+
+                        )
+
+                )
+
+            [1] => Array
+                (
+                    [p1] => 123
+                    [p2] => Symfony\Component\VarDumper\Cloner\Stub Object
+                        (
+                            [type] => 4
+                            [class] => stdClass
+                            [value] => 
+                            [cut] => 0
+                            [handle] => %i
+                            [refCount] => 0
+                            [position] => 0
+                            [attr] => Array
+                                (
+                                )
+
+                        )
+
+                )
+
+        )
+
+    [position:Symfony\Component\VarDumper\Cloner\Data:private] => 0
+    [key:Symfony\Component\VarDumper\Cloner\Data:private] => 0
+    [maxDepth:Symfony\Component\VarDumper\Cloner\Data:private] => 20
+    [maxItemsPerDepth:Symfony\Component\VarDumper\Cloner\Data:private] => -1
+    [useRefHandles:Symfony\Component\VarDumper\Cloner\Data:private] => -1
+)
+
 EOTXT;
         $this->assertStringMatchesFormat($expected, print_r($clone, true));
     }
diff --git a/vendor/symfony/var-dumper/Tests/Dumper/CliDumperTest.php b/vendor/symfony/var-dumper/Tests/Dumper/CliDumperTest.php
index 9520b4fe10..6fae0843a9 100644
--- a/vendor/symfony/var-dumper/Tests/Dumper/CliDumperTest.php
+++ b/vendor/symfony/var-dumper/Tests/Dumper/CliDumperTest.php
@@ -13,6 +13,7 @@
 
 use PHPUnit\Framework\TestCase;
 use Symfony\Component\VarDumper\Cloner\VarCloner;
+use Symfony\Component\VarDumper\Dumper\AbstractDumper;
 use Symfony\Component\VarDumper\Dumper\CliDumper;
 use Symfony\Component\VarDumper\Test\VarDumperTestTrait;
 use Twig\Environment;
@@ -45,7 +46,7 @@ public function testGet()
         $dumper->dump($data);
         $out = ob_get_clean();
         $out = preg_replace('/[ \t]+$/m', '', $out);
-        $intMax = PHP_INT_MAX;
+        $intMax = \PHP_INT_MAX;
         $res = (int) $var['res'];
 
         $r = \defined('HHVM_VERSION') ? '' : '#%d';
@@ -203,6 +204,7 @@ public function provideDumpWithCommaFlagTests()
 
     /**
      * @requires extension xml
+     * @requires PHP < 8.0
      */
     public function testXmlResource()
     {
@@ -571,6 +573,57 @@ public function testIncompleteClass()
         );
     }
 
+    public function provideDumpArrayWithColor()
+    {
+        yield [
+            ['foo' => 'bar'],
+            0,
+            <<<EOTXT
+\e[0;38;5;208m\e[38;5;38marray:1\e[0;38;5;208m [\e[m
+  \e[0;38;5;208m"\e[38;5;113mfoo\e[0;38;5;208m" => "\e[1;38;5;113mbar\e[0;38;5;208m"\e[m
+\e[0;38;5;208m]\e[m
+
+EOTXT
+        ];
+
+        yield [[], AbstractDumper::DUMP_LIGHT_ARRAY, "\e[0;38;5;208m[]\e[m\n"];
+
+        yield [
+            ['foo' => 'bar'],
+            AbstractDumper::DUMP_LIGHT_ARRAY,
+            <<<EOTXT
+\e[0;38;5;208m[\e[m
+  \e[0;38;5;208m"\e[38;5;113mfoo\e[0;38;5;208m" => "\e[1;38;5;113mbar\e[0;38;5;208m"\e[m
+\e[0;38;5;208m]\e[m
+
+EOTXT
+        ];
+
+        yield [[], 0, "\e[0;38;5;208m[]\e[m\n"];
+    }
+
+    /**
+     * @dataProvider provideDumpArrayWithColor
+     */
+    public function testDumpArrayWithColor($value, $flags, $expectedOut)
+    {
+        if ('\\' === \DIRECTORY_SEPARATOR) {
+            $this->markTestSkipped('Windows console does not support coloration');
+        }
+
+        $out = '';
+        $dumper = new CliDumper(function ($line, $depth) use (&$out) {
+            if ($depth >= 0) {
+                $out .= str_repeat('  ', $depth).$line."\n";
+            }
+        }, null, $flags);
+        $dumper->setColors(true);
+        $cloner = new VarCloner();
+        $dumper->dump($cloner->cloneVar($value));
+
+        $this->assertSame($expectedOut, $out);
+    }
+
     private function getSpecialVars()
     {
         foreach (array_keys($GLOBALS) as $var) {
diff --git a/vendor/symfony/var-dumper/Tests/Dumper/FunctionsTest.php b/vendor/symfony/var-dumper/Tests/Dumper/FunctionsTest.php
index 0bd596c2ad..7444d4bf58 100644
--- a/vendor/symfony/var-dumper/Tests/Dumper/FunctionsTest.php
+++ b/vendor/symfony/var-dumper/Tests/Dumper/FunctionsTest.php
@@ -26,7 +26,7 @@ public function testDumpReturnsFirstArg()
 
         ob_start();
         $return = dump($var1);
-        $out = ob_get_clean();
+        ob_end_clean();
 
         $this->assertEquals($var1, $return);
     }
@@ -41,7 +41,7 @@ public function testDumpReturnsAllArgsInArray()
 
         ob_start();
         $return = dump($var1, $var2, $var3);
-        $out = ob_get_clean();
+        ob_end_clean();
 
         $this->assertEquals([$var1, $var2, $var3], $return);
     }
diff --git a/vendor/symfony/var-dumper/Tests/Dumper/HtmlDumperTest.php b/vendor/symfony/var-dumper/Tests/Dumper/HtmlDumperTest.php
index 8a7e68ebf0..d91fda265b 100644
--- a/vendor/symfony/var-dumper/Tests/Dumper/HtmlDumperTest.php
+++ b/vendor/symfony/var-dumper/Tests/Dumper/HtmlDumperTest.php
@@ -45,8 +45,8 @@ public function testGet()
         $dumper->dump($data);
         $out = ob_get_clean();
         $out = preg_replace('/[ \t]+$/m', '', $out);
-        $var['file'] = htmlspecialchars($var['file'], ENT_QUOTES, 'UTF-8');
-        $intMax = PHP_INT_MAX;
+        $var['file'] = htmlspecialchars($var['file'], \ENT_QUOTES, 'UTF-8');
+        $intMax = \PHP_INT_MAX;
         preg_match('/sf-dump-\d+/', $out, $dumpId);
         $dumpId = $dumpId[0];
         $res = (int) $var['res'];
diff --git a/vendor/symfony/var-dumper/Tests/Fixtures/DateTimeChild.php b/vendor/symfony/var-dumper/Tests/Fixtures/DateTimeChild.php
new file mode 100644
index 0000000000..2ea2df6514
--- /dev/null
+++ b/vendor/symfony/var-dumper/Tests/Fixtures/DateTimeChild.php
@@ -0,0 +1,8 @@
+<?php
+
+namespace Symfony\Component\VarDumper\Tests\Fixtures;
+
+class DateTimeChild extends \DateTime
+{
+    private $addedProperty = 'foo';
+}
diff --git a/vendor/symfony/var-dumper/Tests/Fixtures/Php74.php b/vendor/symfony/var-dumper/Tests/Fixtures/Php74.php
new file mode 100644
index 0000000000..724fbeb7bd
--- /dev/null
+++ b/vendor/symfony/var-dumper/Tests/Fixtures/Php74.php
@@ -0,0 +1,14 @@
+<?php
+
+namespace Symfony\Component\VarDumper\Tests\Fixtures;
+
+class Php74
+{
+    public $p1 = 123;
+    public \stdClass $p2;
+
+    public function __construct()
+    {
+        $this->p2 = new \stdClass();
+    }
+}
diff --git a/vendor/symfony/var-dumper/composer.json b/vendor/symfony/var-dumper/composer.json
index d31e0b495a..9f2352ee25 100644
--- a/vendor/symfony/var-dumper/composer.json
+++ b/vendor/symfony/var-dumper/composer.json
@@ -38,10 +38,5 @@
             "/Tests/"
         ]
     },
-    "minimum-stability": "dev",
-    "extra": {
-        "branch-alias": {
-            "dev-master": "3.4-dev"
-        }
-    }
+    "minimum-stability": "dev"
 }
diff --git a/vendor/webflo/drupal-finder/.travis.yml b/vendor/webflo/drupal-finder/.travis.yml
index fa99cec6c4..e54f94b5d5 100644
--- a/vendor/webflo/drupal-finder/.travis.yml
+++ b/vendor/webflo/drupal-finder/.travis.yml
@@ -1,6 +1,5 @@
 language: php
 php:
-  - 5.5
   - 5.6
   - 7.0
 
diff --git a/vendor/webflo/drupal-finder/LICENSE.txt b/vendor/webflo/drupal-finder/LICENSE.txt
new file mode 100644
index 0000000000..94fb84639c
--- /dev/null
+++ b/vendor/webflo/drupal-finder/LICENSE.txt
@@ -0,0 +1,339 @@
+        GNU GENERAL PUBLIC LICENSE
+           Version 2, June 1991
+
+ Copyright (C) 1989, 1991 Free Software Foundation, Inc.,
+ 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+          Preamble
+
+  The licenses for most software are designed to take away your
+freedom to share and change it.  By contrast, the GNU General Public
+License is intended to guarantee your freedom to share and change free
+software--to make sure the software is free for all its users.  This
+General Public License applies to most of the Free Software
+Foundation's software and to any other program whose authors commit to
+using it.  (Some other Free Software Foundation software is covered by
+the GNU Lesser General Public License instead.)  You can apply it to
+your programs, too.
+
+  When we speak of free software, we are referring to freedom, not
+price.  Our General Public Licenses are designed to make sure that you
+have the freedom to distribute copies of free software (and charge for
+this service if you wish), that you receive source code or can get it
+if you want it, that you can change the software or use pieces of it
+in new free programs; and that you know you can do these things.
+
+  To protect your rights, we need to make restrictions that forbid
+anyone to deny you these rights or to ask you to surrender the rights.
+These restrictions translate to certain responsibilities for you if you
+distribute copies of the software, or if you modify it.
+
+  For example, if you distribute copies of such a program, whether
+gratis or for a fee, you must give the recipients all the rights that
+you have.  You must make sure that they, too, receive or can get the
+source code.  And you must show them these terms so they know their
+rights.
+
+  We protect your rights with two steps: (1) copyright the software, and
+(2) offer you this license which gives you legal permission to copy,
+distribute and/or modify the software.
+
+  Also, for each author's protection and ours, we want to make certain
+that everyone understands that there is no warranty for this free
+software.  If the software is modified by someone else and passed on, we
+want its recipients to know that what they have is not the original, so
+that any problems introduced by others will not reflect on the original
+authors' reputations.
+
+  Finally, any free program is threatened constantly by software
+patents.  We wish to avoid the danger that redistributors of a free
+program will individually obtain patent licenses, in effect making the
+program proprietary.  To prevent this, we have made it clear that any
+patent must be licensed for everyone's free use or not licensed at all.
+
+  The precise terms and conditions for copying, distribution and
+modification follow.
+
+        GNU GENERAL PUBLIC LICENSE
+   TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
+
+  0. This License applies to any program or other work which contains
+a notice placed by the copyright holder saying it may be distributed
+under the terms of this General Public License.  The "Program", below,
+refers to any such program or work, and a "work based on the Program"
+means either the Program or any derivative work under copyright law:
+that is to say, a work containing the Program or a portion of it,
+either verbatim or with modifications and/or translated into another
+language.  (Hereinafter, translation is included without limitation in
+the term "modification".)  Each licensee is addressed as "you".
+
+Activities other than copying, distribution and modification are not
+covered by this License; they are outside its scope.  The act of
+running the Program is not restricted, and the output from the Program
+is covered only if its contents constitute a work based on the
+Program (independent of having been made by running the Program).
+Whether that is true depends on what the Program does.
+
+  1. You may copy and distribute verbatim copies of the Program's
+source code as you receive it, in any medium, provided that you
+conspicuously and appropriately publish on each copy an appropriate
+copyright notice and disclaimer of warranty; keep intact all the
+notices that refer to this License and to the absence of any warranty;
+and give any other recipients of the Program a copy of this License
+along with the Program.
+
+You may charge a fee for the physical act of transferring a copy, and
+you may at your option offer warranty protection in exchange for a fee.
+
+  2. You may modify your copy or copies of the Program or any portion
+of it, thus forming a work based on the Program, and copy and
+distribute such modifications or work under the terms of Section 1
+above, provided that you also meet all of these conditions:
+
+    a) You must cause the modified files to carry prominent notices
+    stating that you changed the files and the date of any change.
+
+    b) You must cause any work that you distribute or publish, that in
+    whole or in part contains or is derived from the Program or any
+    part thereof, to be licensed as a whole at no charge to all third
+    parties under the terms of this License.
+
+    c) If the modified program normally reads commands interactively
+    when run, you must cause it, when started running for such
+    interactive use in the most ordinary way, to print or display an
+    announcement including an appropriate copyright notice and a
+    notice that there is no warranty (or else, saying that you provide
+    a warranty) and that users may redistribute the program under
+    these conditions, and telling the user how to view a copy of this
+    License.  (Exception: if the Program itself is interactive but
+    does not normally print such an announcement, your work based on
+    the Program is not required to print an announcement.)
+
+These requirements apply to the modified work as a whole.  If
+identifiable sections of that work are not derived from the Program,
+and can be reasonably considered independent and separate works in
+themselves, then this License, and its terms, do not apply to those
+sections when you distribute them as separate works.  But when you
+distribute the same sections as part of a whole which is a work based
+on the Program, the distribution of the whole must be on the terms of
+this License, whose permissions for other licensees extend to the
+entire whole, and thus to each and every part regardless of who wrote it.
+
+Thus, it is not the intent of this section to claim rights or contest
+your rights to work written entirely by you; rather, the intent is to
+exercise the right to control the distribution of derivative or
+collective works based on the Program.
+
+In addition, mere aggregation of another work not based on the Program
+with the Program (or with a work based on the Program) on a volume of
+a storage or distribution medium does not bring the other work under
+the scope of this License.
+
+  3. You may copy and distribute the Program (or a work based on it,
+under Section 2) in object code or executable form under the terms of
+Sections 1 and 2 above provided that you also do one of the following:
+
+    a) Accompany it with the complete corresponding machine-readable
+    source code, which must be distributed under the terms of Sections
+    1 and 2 above on a medium customarily used for software interchange; or,
+
+    b) Accompany it with a written offer, valid for at least three
+    years, to give any third party, for a charge no more than your
+    cost of physically performing source distribution, a complete
+    machine-readable copy of the corresponding source code, to be
+    distributed under the terms of Sections 1 and 2 above on a medium
+    customarily used for software interchange; or,
+
+    c) Accompany it with the information you received as to the offer
+    to distribute corresponding source code.  (This alternative is
+    allowed only for noncommercial distribution and only if you
+    received the program in object code or executable form with such
+    an offer, in accord with Subsection b above.)
+
+The source code for a work means the preferred form of the work for
+making modifications to it.  For an executable work, complete source
+code means all the source code for all modules it contains, plus any
+associated interface definition files, plus the scripts used to
+control compilation and installation of the executable.  However, as a
+special exception, the source code distributed need not include
+anything that is normally distributed (in either source or binary
+form) with the major components (compiler, kernel, and so on) of the
+operating system on which the executable runs, unless that component
+itself accompanies the executable.
+
+If distribution of executable or object code is made by offering
+access to copy from a designated place, then offering equivalent
+access to copy the source code from the same place counts as
+distribution of the source code, even though third parties are not
+compelled to copy the source along with the object code.
+
+  4. You may not copy, modify, sublicense, or distribute the Program
+except as expressly provided under this License.  Any attempt
+otherwise to copy, modify, sublicense or distribute the Program is
+void, and will automatically terminate your rights under this License.
+However, parties who have received copies, or rights, from you under
+this License will not have their licenses terminated so long as such
+parties remain in full compliance.
+
+  5. You are not required to accept this License, since you have not
+signed it.  However, nothing else grants you permission to modify or
+distribute the Program or its derivative works.  These actions are
+prohibited by law if you do not accept this License.  Therefore, by
+modifying or distributing the Program (or any work based on the
+Program), you indicate your acceptance of this License to do so, and
+all its terms and conditions for copying, distributing or modifying
+the Program or works based on it.
+
+  6. Each time you redistribute the Program (or any work based on the
+Program), the recipient automatically receives a license from the
+original licensor to copy, distribute or modify the Program subject to
+these terms and conditions.  You may not impose any further
+restrictions on the recipients' exercise of the rights granted herein.
+You are not responsible for enforcing compliance by third parties to
+this License.
+
+  7. If, as a consequence of a court judgment or allegation of patent
+infringement or for any other reason (not limited to patent issues),
+conditions are imposed on you (whether by court order, agreement or
+otherwise) that contradict the conditions of this License, they do not
+excuse you from the conditions of this License.  If you cannot
+distribute so as to satisfy simultaneously your obligations under this
+License and any other pertinent obligations, then as a consequence you
+may not distribute the Program at all.  For example, if a patent
+license would not permit royalty-free redistribution of the Program by
+all those who receive copies directly or indirectly through you, then
+the only way you could satisfy both it and this License would be to
+refrain entirely from distribution of the Program.
+
+If any portion of this section is held invalid or unenforceable under
+any particular circumstance, the balance of the section is intended to
+apply and the section as a whole is intended to apply in other
+circumstances.
+
+It is not the purpose of this section to induce you to infringe any
+patents or other property right claims or to contest validity of any
+such claims; this section has the sole purpose of protecting the
+integrity of the free software distribution system, which is
+implemented by public license practices.  Many people have made
+generous contributions to the wide range of software distributed
+through that system in reliance on consistent application of that
+system; it is up to the author/donor to decide if he or she is willing
+to distribute software through any other system and a licensee cannot
+impose that choice.
+
+This section is intended to make thoroughly clear what is believed to
+be a consequence of the rest of this License.
+
+  8. If the distribution and/or use of the Program is restricted in
+certain countries either by patents or by copyrighted interfaces, the
+original copyright holder who places the Program under this License
+may add an explicit geographical distribution limitation excluding
+those countries, so that distribution is permitted only in or among
+countries not thus excluded.  In such case, this License incorporates
+the limitation as if written in the body of this License.
+
+  9. The Free Software Foundation may publish revised and/or new versions
+of the General Public License from time to time.  Such new versions will
+be similar in spirit to the present version, but may differ in detail to
+address new problems or concerns.
+
+Each version is given a distinguishing version number.  If the Program
+specifies a version number of this License which applies to it and "any
+later version", you have the option of following the terms and conditions
+either of that version or of any later version published by the Free
+Software Foundation.  If the Program does not specify a version number of
+this License, you may choose any version ever published by the Free Software
+Foundation.
+
+  10. If you wish to incorporate parts of the Program into other free
+programs whose distribution conditions are different, write to the author
+to ask for permission.  For software which is copyrighted by the Free
+Software Foundation, write to the Free Software Foundation; we sometimes
+make exceptions for this.  Our decision will be guided by the two goals
+of preserving the free status of all derivatives of our free software and
+of promoting the sharing and reuse of software generally.
+
+          NO WARRANTY
+
+  11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
+FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW.  EXCEPT WHEN
+OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
+PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
+OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.  THE ENTIRE RISK AS
+TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU.  SHOULD THE
+PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
+REPAIR OR CORRECTION.
+
+  12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
+WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
+REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
+INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
+OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
+TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
+YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
+PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
+POSSIBILITY OF SUCH DAMAGES.
+
+         END OF TERMS AND CONDITIONS
+
+      How to Apply These Terms to Your New Programs
+
+  If you develop a new program, and you want it to be of the greatest
+possible use to the public, the best way to achieve this is to make it
+free software which everyone can redistribute and change under these terms.
+
+  To do so, attach the following notices to the program.  It is safest
+to attach them to the start of each source file to most effectively
+convey the exclusion of warranty; and each file should have at least
+the "copyright" line and a pointer to where the full notice is found.
+
+    <one line to give the program's name and a brief idea of what it does.>
+    Copyright (C) <year>  <name of author>
+
+    This program is free software; you can redistribute it and/or modify
+    it under the terms of the GNU General Public License as published by
+    the Free Software Foundation; either version 2 of the License, or
+    (at your option) any later version.
+
+    This program is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+    GNU General Public License for more details.
+
+    You should have received a copy of the GNU General Public License along
+    with this program; if not, write to the Free Software Foundation, Inc.,
+    51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+
+Also add information on how to contact you by electronic and paper mail.
+
+If the program is interactive, make it output a short notice like this
+when it starts in an interactive mode:
+
+    Gnomovision version 69, Copyright (C) year name of author
+    Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
+    This is free software, and you are welcome to redistribute it
+    under certain conditions; type `show c' for details.
+
+The hypothetical commands `show w' and `show c' should show the appropriate
+parts of the General Public License.  Of course, the commands you use may
+be called something other than `show w' and `show c'; they could even be
+mouse-clicks or menu items--whatever suits your program.
+
+You should also get your employer (if you work as a programmer) or your
+school, if any, to sign a "copyright disclaimer" for the program, if
+necessary.  Here is a sample; alter the names:
+
+  Yoyodyne, Inc., hereby disclaims all copyright interest in the program
+  `Gnomovision' (which makes passes at compilers) written by James Hacker.
+
+  <signature of Ty Coon>, 1 April 1989
+  Ty Coon, President of Vice
+
+This General Public License does not permit incorporating your program into
+proprietary programs.  If your program is a subroutine library, you may
+consider it more useful to permit linking proprietary applications with the
+library.  If this is what you want to do, use the GNU Lesser General
+Public License instead of this License.
diff --git a/vendor/webflo/drupal-finder/composer.json b/vendor/webflo/drupal-finder/composer.json
index fe0558892d..d07d9de710 100644
--- a/vendor/webflo/drupal-finder/composer.json
+++ b/vendor/webflo/drupal-finder/composer.json
@@ -1,7 +1,7 @@
 {
     "name": "webflo/drupal-finder",
     "description": "Helper class to locate a Drupal installation from a given path.",
-    "license": "GPL-2.0+",
+    "license": "GPL-2.0-or-later",
     "type": "library",
     "authors": [
         {
@@ -9,7 +9,9 @@
             "email": "florian@webflo.org"
         }
     ],
-    "require": {},
+    "require": {
+        "ext-json": "*"
+    },
     "autoload": {
         "classmap": [
             "src/DrupalFinder.php"
@@ -22,6 +24,6 @@
     },
     "require-dev": {
         "phpunit/phpunit": "^4.8",
-        "mikey179/vfsStream": "^1.6"
+        "mikey179/vfsstream": "^1.6"
     }
 }
diff --git a/vendor/webflo/drupal-finder/src/DrupalFinder.php b/vendor/webflo/drupal-finder/src/DrupalFinder.php
index 642ea8f78c..fe62ec45d4 100644
--- a/vendor/webflo/drupal-finder/src/DrupalFinder.php
+++ b/vendor/webflo/drupal-finder/src/DrupalFinder.php
@@ -102,6 +102,11 @@ protected function isValidRoot($path)
                 file_get_contents($path . '/' . $this->getComposerFileName()),
                 true
             );
+
+            if (is_null($json)) {
+                throw new \Exception('Unable to decode ' . $path . '/' . $this->getComposerFileName());
+            }
+
             if (is_array($json)) {
                 if (isset($json['extra']['installer-paths']) && is_array($json['extra']['installer-paths'])) {
                     foreach ($json['extra']['installer-paths'] as $install_path => $items) {
@@ -110,8 +115,8 @@ protected function isValidRoot($path)
                             in_array('drupal/drupal', $items)) {
                             $this->composerRoot = $path;
                             // @todo: Remove this magic and detect the major version instead.
-                            if ($install_path == 'core') {
-                                $install_path = null;
+                            if (($install_path == 'core') || ((isset($json['name'])) && ($json['name'] == 'drupal/drupal'))) {
+                                $install_path = '';
                             } elseif (substr($install_path, -5) == '/core') {
                                 $install_path = substr($install_path, 0, -5);
                             }
diff --git a/vendor/webflo/drupal-finder/tests/Drupal8FinderTest.php b/vendor/webflo/drupal-finder/tests/Drupal8FinderTest.php
index ad8495489e..87a0cca323 100644
--- a/vendor/webflo/drupal-finder/tests/Drupal8FinderTest.php
+++ b/vendor/webflo/drupal-finder/tests/Drupal8FinderTest.php
@@ -30,6 +30,34 @@ class Drupal8FinderTest extends DrupalFinderTestBase
         'vendor' => [],
     ];
 
+    protected static $fileStructureDrupal_8_8_x = [
+        'autoload.php' => '',
+        'composer.json' => [
+            'name' => 'drupal/drupal',
+            'require' => [
+                'drupal/core' => 'self.version',
+            ],
+            'extra' => [
+                'installer-paths' => [
+                    'vendor/drupal/core' => [
+                        'type:drupal-core',
+                    ],
+                ],
+            ],
+        ],
+        'core' => [
+            'includes' => [
+                'common.inc' => '',
+            ],
+            'misc' => [
+                'drupal.js' => '',
+            ],
+            'core.services.yml' => '',
+        ],
+        'modules' => [],
+        'vendor' => [],
+    ];
+
     /**
      * @return array
      */
@@ -91,6 +119,34 @@ public function testDrupalDefaultStructure()
         $this->assertFalse($this->finder->getVendorDir());
     }
 
+    public function testDrupalDefaultStructure_8_8_x()
+    {
+        $root = vfsStream::setup('root', null, $this->prepareFileStructure(static::$fileStructureDrupal_8_8_x));
+
+        $this->assertTrue($this->finder->locateRoot($root->url()));
+        $this->assertSame('vfs://root', $this->finder->getDrupalRoot());
+        $this->assertSame('vfs://root', $this->finder->getComposerRoot());
+        $this->assertSame('vfs://root/vendor', $this->finder->getVendorDir());
+
+        $this->assertTrue($this->finder->locateRoot($root->url() . '/misc'));
+        $this->assertSame('vfs://root', $this->finder->getDrupalRoot());
+        $this->assertSame('vfs://root', $this->finder->getComposerRoot());
+        $this->assertSame('vfs://root/vendor', $this->finder->getVendorDir());
+
+        $root = vfsStream::setup(
+          'root',
+          null,
+          ['project' => $this->prepareFileStructure(static::$fileStructure)]
+        );
+        $this->assertFalse(
+          $this->finder->locateRoot($root->url()),
+          'Not in the scope of the project'
+        );
+        $this->assertFalse($this->finder->getDrupalRoot());
+        $this->assertFalse($this->finder->getComposerRoot());
+        $this->assertFalse($this->finder->getVendorDir());
+    }
+
     public function testDrupalComposerStructure()
     {
         $fileStructure = $this->getDrupalComposerStructure();
-- 
GitLab