diff --git a/composer.json b/composer.json
index dd3a77b94a2c31673a92e8e9f43903a39d8c1fd7..dfe31c11aba27c0eb351111ad07abe651d6f7b29 100644
--- a/composer.json
+++ b/composer.json
@@ -7,13 +7,11 @@
     "require-dev": {
         "adlawson/vfs": "~0.12.1",
         "camspiers/json-pretty": "~1.0.2",
-        "codeception/codeception": "4.0.2",
         "monolog/monolog": "~1.21.0",
         "php-http/curl-client": "~1.7.0",
-        "phpunit/phpunit": "6.5.14",
         "woohoolabs/yang": "~0.9.0",
-        "codeception/module-phpbrowser": "^1.0",
-        "codeception/module-asserts": "^1.1"
+        "codeception/codeception": "~4.1.21",
+        "codeception/module-asserts": "^1.3"
     },
     "require": {
         "php": "^7.2",
diff --git a/composer.lock b/composer.lock
index 374bc9ebbb46e79da30008354f6fa2ab54c5a5ac..0532937da51c366b8db4fd5e52a8cd7c28f8a3b1 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": "3c1047ac90716fe9b24d216d4e5c2c40",
+    "content-hash": "dc13abed7b7557def19c639c0b91cb4f",
     "packages": [
         {
             "name": "algo26-matthias/idna-convert",
@@ -2235,25 +2235,26 @@
         },
         {
             "name": "behat/gherkin",
-            "version": "v4.6.2",
+            "version": "v4.8.0",
             "source": {
                 "type": "git",
                 "url": "https://github.com/Behat/Gherkin.git",
-                "reference": "51ac4500c4dc30cbaaabcd2f25694299df666a31"
+                "reference": "2391482cd003dfdc36b679b27e9f5326bd656acd"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/Behat/Gherkin/zipball/51ac4500c4dc30cbaaabcd2f25694299df666a31",
-                "reference": "51ac4500c4dc30cbaaabcd2f25694299df666a31",
+                "url": "https://api.github.com/repos/Behat/Gherkin/zipball/2391482cd003dfdc36b679b27e9f5326bd656acd",
+                "reference": "2391482cd003dfdc36b679b27e9f5326bd656acd",
                 "shasum": ""
             },
             "require": {
-                "php": ">=5.3.1"
+                "php": "~7.2|~8.0"
             },
             "require-dev": {
-                "phpunit/phpunit": "~4.5|~5",
-                "symfony/phpunit-bridge": "~2.7|~3|~4",
-                "symfony/yaml": "~2.3|~3|~4"
+                "cucumber/cucumber": "dev-gherkin-16.0.0",
+                "phpunit/phpunit": "~8|~9",
+                "symfony/phpunit-bridge": "~3|~4|~5",
+                "symfony/yaml": "~3|~4|~5"
             },
             "suggest": {
                 "symfony/yaml": "If you want to parse features, represented in YAML files"
@@ -2280,7 +2281,7 @@
                     "homepage": "http://everzet.com"
                 }
             ],
-            "description": "Gherkin DSL parser for PHP 5.3",
+            "description": "Gherkin DSL parser for PHP",
             "homepage": "http://behat.org/",
             "keywords": [
                 "BDD",
@@ -2292,9 +2293,9 @@
             ],
             "support": {
                 "issues": "https://github.com/Behat/Gherkin/issues",
-                "source": "https://github.com/Behat/Gherkin/tree/master"
+                "source": "https://github.com/Behat/Gherkin/tree/v4.8.0"
             },
-            "time": "2020-03-17T14:03:26+00:00"
+            "time": "2021-02-04T12:44:21+00:00"
         },
         {
             "name": "camspiers/json-pretty",
@@ -2404,28 +2405,28 @@
         },
         {
             "name": "codeception/codeception",
-            "version": "4.0.2",
+            "version": "4.1.21",
             "source": {
                 "type": "git",
                 "url": "https://github.com/Codeception/Codeception.git",
-                "reference": "e610c15ebb73b56722c67e1c799bf0565f062899"
+                "reference": "c25f20d842a7e3fa0a8e6abf0828f102c914d419"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/Codeception/Codeception/zipball/e610c15ebb73b56722c67e1c799bf0565f062899",
-                "reference": "e610c15ebb73b56722c67e1c799bf0565f062899",
+                "url": "https://api.github.com/repos/Codeception/Codeception/zipball/c25f20d842a7e3fa0a8e6abf0828f102c914d419",
+                "reference": "c25f20d842a7e3fa0a8e6abf0828f102c914d419",
                 "shasum": ""
             },
             "require": {
                 "behat/gherkin": "^4.4.0",
                 "codeception/lib-asserts": "^1.0",
-                "codeception/phpunit-wrapper": ">6.0.15 <6.1.0 | ^6.6.1 | ^7.7.1 | ^8.1.1",
+                "codeception/phpunit-wrapper": ">6.0.15 <6.1.0 | ^6.6.1 | ^7.7.1 | ^8.1.1 | ^9.0",
                 "codeception/stub": "^2.0 | ^3.0",
                 "ext-curl": "*",
                 "ext-json": "*",
                 "ext-mbstring": "*",
                 "guzzlehttp/psr7": "~1.4",
-                "php": ">=5.6.0 <8.0",
+                "php": ">=5.6.0 <9.0",
                 "symfony/console": ">=2.7 <6.0",
                 "symfony/css-selector": ">=2.7 <6.0",
                 "symfony/event-dispatcher": ">=2.7 <6.0",
@@ -2433,17 +2434,17 @@
                 "symfony/yaml": ">=2.7 <6.0"
             },
             "require-dev": {
-                "codeception/module-asserts": "*@dev",
-                "codeception/module-cli": "*@dev",
-                "codeception/module-db": "*@dev",
-                "codeception/module-filesystem": "*@dev",
-                "codeception/module-phpbrowser": "*@dev",
+                "codeception/module-asserts": "1.*@dev",
+                "codeception/module-cli": "1.*@dev",
+                "codeception/module-db": "1.*@dev",
+                "codeception/module-filesystem": "1.*@dev",
+                "codeception/module-phpbrowser": "1.*@dev",
                 "codeception/specify": "~0.3",
                 "codeception/util-universalframework": "*@dev",
                 "monolog/monolog": "~1.8",
                 "squizlabs/php_codesniffer": "~2.0",
                 "symfony/process": ">=2.7 <6.0",
-                "vlucas/phpdotenv": "^2.0 | ^3.0 | ^4.0"
+                "vlucas/phpdotenv": "^2.0 | ^3.0 | ^4.0 | ^5.0"
             },
             "suggest": {
                 "codeception/specify": "BDD-style code blocks",
@@ -2487,28 +2488,34 @@
             ],
             "support": {
                 "issues": "https://github.com/Codeception/Codeception/issues",
-                "source": "https://github.com/Codeception/Codeception/tree/4.0"
+                "source": "https://github.com/Codeception/Codeception/tree/4.1.21"
             },
-            "time": "2020-01-14T14:44:10+00:00"
+            "funding": [
+                {
+                    "url": "https://opencollective.com/codeception",
+                    "type": "open_collective"
+                }
+            ],
+            "time": "2021-05-28T17:43:39+00:00"
         },
         {
             "name": "codeception/lib-asserts",
-            "version": "1.13.1",
+            "version": "1.13.2",
             "source": {
                 "type": "git",
                 "url": "https://github.com/Codeception/lib-asserts.git",
-                "reference": "263ef0b7eff80643e82f4cf55351eca553a09a10"
+                "reference": "184231d5eab66bc69afd6b9429344d80c67a33b6"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/Codeception/lib-asserts/zipball/263ef0b7eff80643e82f4cf55351eca553a09a10",
-                "reference": "263ef0b7eff80643e82f4cf55351eca553a09a10",
+                "url": "https://api.github.com/repos/Codeception/lib-asserts/zipball/184231d5eab66bc69afd6b9429344d80c67a33b6",
+                "reference": "184231d5eab66bc69afd6b9429344d80c67a33b6",
                 "shasum": ""
             },
             "require": {
                 "codeception/phpunit-wrapper": ">6.0.15 <6.1.0 | ^6.6.1 | ^7.7.1 | ^8.0.3 | ^9.0",
                 "ext-dom": "*",
-                "php": ">=5.6.0 <8.0"
+                "php": ">=5.6.0 <9.0"
             },
             "type": "library",
             "autoload": {
@@ -2541,95 +2548,32 @@
             ],
             "support": {
                 "issues": "https://github.com/Codeception/lib-asserts/issues",
-                "source": "https://github.com/Codeception/lib-asserts/tree/1.13.1"
-            },
-            "time": "2020-08-28T07:49:36+00:00"
-        },
-        {
-            "name": "codeception/lib-innerbrowser",
-            "version": "1.3.2",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/Codeception/lib-innerbrowser.git",
-                "reference": "7bdcee4cf654cfeeedd00405edd4f06f85255659"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/Codeception/lib-innerbrowser/zipball/7bdcee4cf654cfeeedd00405edd4f06f85255659",
-                "reference": "7bdcee4cf654cfeeedd00405edd4f06f85255659",
-                "shasum": ""
-            },
-            "require": {
-                "codeception/codeception": "*@dev",
-                "ext-dom": "*",
-                "ext-json": "*",
-                "ext-mbstring": "*",
-                "php": ">=5.6.0 <8.0",
-                "symfony/browser-kit": ">=2.7 <6.0",
-                "symfony/dom-crawler": ">=2.7 <6.0"
-            },
-            "conflict": {
-                "codeception/codeception": "<4.0"
-            },
-            "require-dev": {
-                "codeception/util-universalframework": "dev-master"
-            },
-            "type": "library",
-            "autoload": {
-                "classmap": [
-                    "src/"
-                ]
-            },
-            "notification-url": "https://packagist.org/downloads/",
-            "license": [
-                "MIT"
-            ],
-            "authors": [
-                {
-                    "name": "Michael Bodnarchuk",
-                    "email": "davert@mail.ua",
-                    "homepage": "http://codegyre.com"
-                },
-                {
-                    "name": "Gintautas Miselis"
-                }
-            ],
-            "description": "Parent library for all Codeception framework modules and PhpBrowser",
-            "homepage": "http://codeception.com/",
-            "keywords": [
-                "codeception"
-            ],
-            "support": {
-                "issues": "https://github.com/Codeception/lib-innerbrowser/issues",
-                "source": "https://github.com/Codeception/lib-innerbrowser/tree/master"
+                "source": "https://github.com/Codeception/lib-asserts/tree/1.13.2"
             },
-            "time": "2020-07-05T14:21:45+00:00"
+            "time": "2020-10-21T16:26:20+00:00"
         },
         {
             "name": "codeception/module-asserts",
-            "version": "1.3.0",
+            "version": "1.3.1",
             "source": {
                 "type": "git",
                 "url": "https://github.com/Codeception/module-asserts.git",
-                "reference": "32e5be519faaeb60ed3692383dcd1b3390ec2667"
+                "reference": "59374f2fef0cabb9e8ddb53277e85cdca74328de"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/Codeception/module-asserts/zipball/32e5be519faaeb60ed3692383dcd1b3390ec2667",
-                "reference": "32e5be519faaeb60ed3692383dcd1b3390ec2667",
+                "url": "https://api.github.com/repos/Codeception/module-asserts/zipball/59374f2fef0cabb9e8ddb53277e85cdca74328de",
+                "reference": "59374f2fef0cabb9e8ddb53277e85cdca74328de",
                 "shasum": ""
             },
             "require": {
                 "codeception/codeception": "*@dev",
                 "codeception/lib-asserts": "^1.13.1",
-                "php": ">=5.6.0 <8.0"
+                "php": ">=5.6.0 <9.0"
             },
             "conflict": {
                 "codeception/codeception": "<4.0"
             },
-            "require-dev": {
-                "codeception/util-robohelpers": "dev-master"
-            },
             "type": "library",
             "autoload": {
                 "classmap": [
@@ -2661,93 +2605,30 @@
             ],
             "support": {
                 "issues": "https://github.com/Codeception/module-asserts/issues",
-                "source": "https://github.com/Codeception/module-asserts/tree/master"
-            },
-            "time": "2020-08-28T08:06:29+00:00"
-        },
-        {
-            "name": "codeception/module-phpbrowser",
-            "version": "1.0.1",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/Codeception/module-phpbrowser.git",
-                "reference": "c1962657504a2a476b8dbd1f1ee05e0c912e5645"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/Codeception/module-phpbrowser/zipball/c1962657504a2a476b8dbd1f1ee05e0c912e5645",
-                "reference": "c1962657504a2a476b8dbd1f1ee05e0c912e5645",
-                "shasum": ""
-            },
-            "require": {
-                "codeception/codeception": "*@dev",
-                "codeception/lib-innerbrowser": "^1.3.2",
-                "guzzlehttp/guzzle": "^6.3.0|^7.0.0",
-                "php": ">=5.6.0 <8.0"
-            },
-            "conflict": {
-                "codeception/codeception": "<4.0"
-            },
-            "require-dev": {
-                "codeception/module-rest": "dev-master | ^1.0",
-                "codeception/util-robohelpers": "dev-master"
-            },
-            "suggest": {
-                "codeception/phpbuiltinserver": "Start and stop PHP built-in web server for your tests"
-            },
-            "type": "library",
-            "autoload": {
-                "classmap": [
-                    "src/"
-                ]
-            },
-            "notification-url": "https://packagist.org/downloads/",
-            "license": [
-                "MIT"
-            ],
-            "authors": [
-                {
-                    "name": "Michael Bodnarchuk"
-                },
-                {
-                    "name": "Gintautas Miselis"
-                }
-            ],
-            "description": "Codeception module for testing web application over HTTP",
-            "homepage": "http://codeception.com/",
-            "keywords": [
-                "codeception",
-                "functional-testing",
-                "http"
-            ],
-            "support": {
-                "issues": "https://github.com/Codeception/module-phpbrowser/issues",
-                "source": "https://github.com/Codeception/module-phpbrowser/tree/master"
+                "source": "https://github.com/Codeception/module-asserts/tree/1.3.1"
             },
-            "time": "2020-07-05T15:29:32+00:00"
+            "time": "2020-10-21T16:48:15+00:00"
         },
         {
             "name": "codeception/phpunit-wrapper",
-            "version": "6.8.1",
+            "version": "8.1.4",
             "source": {
                 "type": "git",
                 "url": "https://github.com/Codeception/phpunit-wrapper.git",
-                "reference": "ca6e94c6dadc19db05698d4e0d84214e570ce045"
+                "reference": "f41335f0b4dd17cf7bbc63e87943b3ae72a8bbc3"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/Codeception/phpunit-wrapper/zipball/ca6e94c6dadc19db05698d4e0d84214e570ce045",
-                "reference": "ca6e94c6dadc19db05698d4e0d84214e570ce045",
+                "url": "https://api.github.com/repos/Codeception/phpunit-wrapper/zipball/f41335f0b4dd17cf7bbc63e87943b3ae72a8bbc3",
+                "reference": "f41335f0b4dd17cf7bbc63e87943b3ae72a8bbc3",
                 "shasum": ""
             },
             "require": {
-                "phpunit/php-code-coverage": ">=4.0.4 <6.0",
-                "phpunit/phpunit": ">=6.5.13 <7.0",
-                "sebastian/comparator": ">=1.2.4 <3.0",
-                "sebastian/diff": ">=1.4 <4.0"
-            },
-            "replace": {
-                "codeception/phpunit-wrapper": "*"
+                "php": ">=7.2",
+                "phpunit/php-code-coverage": "^7.0",
+                "phpunit/phpunit": "^8.0",
+                "sebastian/comparator": "^3.0",
+                "sebastian/diff": "^3.0"
             },
             "require-dev": {
                 "codeception/specify": "*",
@@ -2772,27 +2653,26 @@
             "description": "PHPUnit classes used by Codeception",
             "support": {
                 "issues": "https://github.com/Codeception/phpunit-wrapper/issues",
-                "source": "https://github.com/Codeception/phpunit-wrapper/tree/6.8.1"
+                "source": "https://github.com/Codeception/phpunit-wrapper/tree/8.1.4"
             },
-            "time": "2020-03-20T08:05:05+00:00"
+            "time": "2020-12-28T14:00:08+00:00"
         },
         {
             "name": "codeception/stub",
-            "version": "3.0.0",
+            "version": "3.7.0",
             "source": {
                 "type": "git",
                 "url": "https://github.com/Codeception/Stub.git",
-                "reference": "eea518711d736eab838c1274593c4568ec06b23d"
+                "reference": "468dd5fe659f131fc997f5196aad87512f9b1304"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/Codeception/Stub/zipball/eea518711d736eab838c1274593c4568ec06b23d",
-                "reference": "eea518711d736eab838c1274593c4568ec06b23d",
+                "url": "https://api.github.com/repos/Codeception/Stub/zipball/468dd5fe659f131fc997f5196aad87512f9b1304",
+                "reference": "468dd5fe659f131fc997f5196aad87512f9b1304",
                 "shasum": ""
             },
             "require": {
-                "codeception/phpunit-wrapper": "^6.6.1 | ^7.7.1 | ^8.0.3",
-                "phpunit/phpunit": ">=6.5 <9.0"
+                "phpunit/phpunit": "^8.4 | ^9.0"
             },
             "type": "library",
             "autoload": {
@@ -2807,40 +2687,37 @@
             "description": "Flexible Stub wrapper for PHPUnit's Mock Builder",
             "support": {
                 "issues": "https://github.com/Codeception/Stub/issues",
-                "source": "https://github.com/Codeception/Stub/tree/master"
+                "source": "https://github.com/Codeception/Stub/tree/3.7.0"
             },
-            "time": "2019-08-10T16:20:53+00:00"
+            "time": "2020-07-03T15:54:43+00:00"
         },
         {
             "name": "doctrine/instantiator",
-            "version": "1.0.5",
+            "version": "1.4.0",
             "source": {
                 "type": "git",
                 "url": "https://github.com/doctrine/instantiator.git",
-                "reference": "8e884e78f9f0eb1329e445619e04456e64d8051d"
+                "reference": "d56bf6102915de5702778fe20f2de3b2fe570b5b"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/doctrine/instantiator/zipball/8e884e78f9f0eb1329e445619e04456e64d8051d",
-                "reference": "8e884e78f9f0eb1329e445619e04456e64d8051d",
+                "url": "https://api.github.com/repos/doctrine/instantiator/zipball/d56bf6102915de5702778fe20f2de3b2fe570b5b",
+                "reference": "d56bf6102915de5702778fe20f2de3b2fe570b5b",
                 "shasum": ""
             },
             "require": {
-                "php": ">=5.3,<8.0-DEV"
+                "php": "^7.1 || ^8.0"
             },
             "require-dev": {
-                "athletic/athletic": "~0.1.8",
+                "doctrine/coding-standard": "^8.0",
                 "ext-pdo": "*",
                 "ext-phar": "*",
-                "phpunit/phpunit": "~4.0",
-                "squizlabs/php_codesniffer": "~2.0"
+                "phpbench/phpbench": "^0.13 || 1.0.0-alpha2",
+                "phpstan/phpstan": "^0.12",
+                "phpstan/phpstan-phpunit": "^0.12",
+                "phpunit/phpunit": "^7.0 || ^8.0 || ^9.0"
             },
             "type": "library",
-            "extra": {
-                "branch-alias": {
-                    "dev-master": "1.0.x-dev"
-                }
-            },
             "autoload": {
                 "psr-4": {
                     "Doctrine\\Instantiator\\": "src/Doctrine/Instantiator/"
@@ -2854,144 +2731,34 @@
                 {
                     "name": "Marco Pivetta",
                     "email": "ocramius@gmail.com",
-                    "homepage": "http://ocramius.github.com/"
+                    "homepage": "https://ocramius.github.io/"
                 }
             ],
             "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"
             ],
             "support": {
                 "issues": "https://github.com/doctrine/instantiator/issues",
-                "source": "https://github.com/doctrine/instantiator/tree/master"
-            },
-            "time": "2015-06-14T21:17:01+00:00"
-        },
-        {
-            "name": "guzzlehttp/guzzle",
-            "version": "6.3.3",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/guzzle/guzzle.git",
-                "reference": "407b0cb880ace85c9b63c5f9551db498cb2d50ba"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/guzzle/guzzle/zipball/407b0cb880ace85c9b63c5f9551db498cb2d50ba",
-                "reference": "407b0cb880ace85c9b63c5f9551db498cb2d50ba",
-                "shasum": ""
-            },
-            "require": {
-                "guzzlehttp/promises": "^1.0",
-                "guzzlehttp/psr7": "^1.4",
-                "php": ">=5.5"
-            },
-            "require-dev": {
-                "ext-curl": "*",
-                "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.4 || ^7.0",
-                "psr/log": "^1.0"
-            },
-            "suggest": {
-                "psr/log": "Required for using the Log middleware"
-            },
-            "type": "library",
-            "extra": {
-                "branch-alias": {
-                    "dev-master": "6.3-dev"
-                }
-            },
-            "autoload": {
-                "files": [
-                    "src/functions_include.php"
-                ],
-                "psr-4": {
-                    "GuzzleHttp\\": "src/"
-                }
+                "source": "https://github.com/doctrine/instantiator/tree/1.4.0"
             },
-            "notification-url": "https://packagist.org/downloads/",
-            "license": [
-                "MIT"
-            ],
-            "authors": [
+            "funding": [
                 {
-                    "name": "Michael Dowling",
-                    "email": "mtdowling@gmail.com",
-                    "homepage": "https://github.com/mtdowling"
-                }
-            ],
-            "description": "Guzzle is a PHP HTTP client library",
-            "homepage": "http://guzzlephp.org/",
-            "keywords": [
-                "client",
-                "curl",
-                "framework",
-                "http",
-                "http client",
-                "rest",
-                "web service"
-            ],
-            "support": {
-                "issues": "https://github.com/guzzle/guzzle/issues",
-                "source": "https://github.com/guzzle/guzzle/tree/master"
-            },
-            "time": "2018-04-22T15:46:56+00:00"
-        },
-        {
-            "name": "guzzlehttp/promises",
-            "version": "v1.3.1",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/guzzle/promises.git",
-                "reference": "a59da6cf61d80060647ff4d3eb2c03a2bc694646"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/guzzle/promises/zipball/a59da6cf61d80060647ff4d3eb2c03a2bc694646",
-                "reference": "a59da6cf61d80060647ff4d3eb2c03a2bc694646",
-                "shasum": ""
-            },
-            "require": {
-                "php": ">=5.5.0"
-            },
-            "require-dev": {
-                "phpunit/phpunit": "^4.0"
-            },
-            "type": "library",
-            "extra": {
-                "branch-alias": {
-                    "dev-master": "1.4-dev"
-                }
-            },
-            "autoload": {
-                "psr-4": {
-                    "GuzzleHttp\\Promise\\": "src/"
+                    "url": "https://www.doctrine-project.org/sponsorship.html",
+                    "type": "custom"
                 },
-                "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"
+                    "url": "https://www.patreon.com/phpdoctrine",
+                    "type": "patreon"
+                },
+                {
+                    "url": "https://tidelift.com/funding/github/packagist/doctrine%2Finstantiator",
+                    "type": "tidelift"
                 }
             ],
-            "description": "Guzzle promises library",
-            "keywords": [
-                "promise"
-            ],
-            "support": {
-                "issues": "https://github.com/guzzle/promises/issues",
-                "source": "https://github.com/guzzle/promises/tree/master"
-            },
-            "time": "2016-12-20T10:07:11+00:00"
+            "time": "2020-11-10T18:47:58+00:00"
         },
         {
             "name": "monolog/monolog",
@@ -3077,25 +2844,28 @@
         },
         {
             "name": "myclabs/deep-copy",
-            "version": "1.7.0",
+            "version": "1.10.2",
             "source": {
                 "type": "git",
                 "url": "https://github.com/myclabs/DeepCopy.git",
-                "reference": "3b8a3a99ba1f6a3952ac2747d989303cbd6b7a3e"
+                "reference": "776f831124e9c62e1a2c601ecc52e776d8bb7220"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/3b8a3a99ba1f6a3952ac2747d989303cbd6b7a3e",
-                "reference": "3b8a3a99ba1f6a3952ac2747d989303cbd6b7a3e",
+                "url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/776f831124e9c62e1a2c601ecc52e776d8bb7220",
+                "reference": "776f831124e9c62e1a2c601ecc52e776d8bb7220",
                 "shasum": ""
             },
             "require": {
-                "php": "^5.6 || ^7.0"
+                "php": "^7.1 || ^8.0"
+            },
+            "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": {
@@ -3120,34 +2890,41 @@
             ],
             "support": {
                 "issues": "https://github.com/myclabs/DeepCopy/issues",
-                "source": "https://github.com/myclabs/DeepCopy/tree/1.x"
+                "source": "https://github.com/myclabs/DeepCopy/tree/1.10.2"
             },
-            "time": "2017-10-19T19:58:43+00:00"
+            "funding": [
+                {
+                    "url": "https://tidelift.com/funding/github/packagist/myclabs/deep-copy",
+                    "type": "tidelift"
+                }
+            ],
+            "time": "2020-11-13T09:40:50+00:00"
         },
         {
             "name": "phar-io/manifest",
-            "version": "1.0.1",
+            "version": "2.0.1",
             "source": {
                 "type": "git",
                 "url": "https://github.com/phar-io/manifest.git",
-                "reference": "2df402786ab5368a0169091f61a7c1e0eb6852d0"
+                "reference": "85265efd3af7ba3ca4b2a2c34dbfc5788dd29133"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/phar-io/manifest/zipball/2df402786ab5368a0169091f61a7c1e0eb6852d0",
-                "reference": "2df402786ab5368a0169091f61a7c1e0eb6852d0",
+                "url": "https://api.github.com/repos/phar-io/manifest/zipball/85265efd3af7ba3ca4b2a2c34dbfc5788dd29133",
+                "reference": "85265efd3af7ba3ca4b2a2c34dbfc5788dd29133",
                 "shasum": ""
             },
             "require": {
                 "ext-dom": "*",
                 "ext-phar": "*",
-                "phar-io/version": "^1.0.1",
-                "php": "^5.6 || ^7.0"
+                "ext-xmlwriter": "*",
+                "phar-io/version": "^3.0.1",
+                "php": "^7.2 || ^8.0"
             },
             "type": "library",
             "extra": {
                 "branch-alias": {
-                    "dev-master": "1.0.x-dev"
+                    "dev-master": "2.0.x-dev"
                 }
             },
             "autoload": {
@@ -3181,24 +2958,24 @@
                 "issues": "https://github.com/phar-io/manifest/issues",
                 "source": "https://github.com/phar-io/manifest/tree/master"
             },
-            "time": "2017-03-05T18:14:27+00:00"
+            "time": "2020-06-27T14:33:11+00:00"
         },
         {
             "name": "phar-io/version",
-            "version": "1.0.1",
+            "version": "3.1.0",
             "source": {
                 "type": "git",
                 "url": "https://github.com/phar-io/version.git",
-                "reference": "a70c0ced4be299a63d32fa96d9281d03e94041df"
+                "reference": "bae7c545bef187884426f042434e561ab1ddb182"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/phar-io/version/zipball/a70c0ced4be299a63d32fa96d9281d03e94041df",
-                "reference": "a70c0ced4be299a63d32fa96d9281d03e94041df",
+                "url": "https://api.github.com/repos/phar-io/version/zipball/bae7c545bef187884426f042434e561ab1ddb182",
+                "reference": "bae7c545bef187884426f042434e561ab1ddb182",
                 "shasum": ""
             },
             "require": {
-                "php": "^5.6 || ^7.0"
+                "php": "^7.2 || ^8.0"
             },
             "type": "library",
             "autoload": {
@@ -3230,9 +3007,9 @@
             "description": "Library for handling version information and constraints",
             "support": {
                 "issues": "https://github.com/phar-io/version/issues",
-                "source": "https://github.com/phar-io/version/tree/master"
+                "source": "https://github.com/phar-io/version/tree/3.1.0"
             },
-            "time": "2017-03-05T17:38:23+00:00"
+            "time": "2021-02-23T14:00:09+00:00"
         },
         {
             "name": "php-http/curl-client",
@@ -3608,35 +3385,30 @@
         },
         {
             "name": "phpdocumentor/reflection-common",
-            "version": "1.0.1",
+            "version": "2.2.0",
             "source": {
                 "type": "git",
                 "url": "https://github.com/phpDocumentor/ReflectionCommon.git",
-                "reference": "21bdeb5f65d7ebf9f43b1b25d404f87deab5bfb6"
+                "reference": "1d01c49d4ed62f25aa84a747ad35d5a16924662b"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/phpDocumentor/ReflectionCommon/zipball/21bdeb5f65d7ebf9f43b1b25d404f87deab5bfb6",
-                "reference": "21bdeb5f65d7ebf9f43b1b25d404f87deab5bfb6",
+                "url": "https://api.github.com/repos/phpDocumentor/ReflectionCommon/zipball/1d01c49d4ed62f25aa84a747ad35d5a16924662b",
+                "reference": "1d01c49d4ed62f25aa84a747ad35d5a16924662b",
                 "shasum": ""
             },
             "require": {
-                "php": ">=5.5"
-            },
-            "require-dev": {
-                "phpunit/phpunit": "^4.6"
+                "php": "^7.2 || ^8.0"
             },
             "type": "library",
             "extra": {
                 "branch-alias": {
-                    "dev-master": "1.0.x-dev"
+                    "dev-2.x": "2.x-dev"
                 }
             },
             "autoload": {
                 "psr-4": {
-                    "phpDocumentor\\Reflection\\": [
-                        "src"
-                    ]
+                    "phpDocumentor\\Reflection\\": "src/"
                 }
             },
             "notification-url": "https://packagist.org/downloads/",
@@ -3660,47 +3432,43 @@
             ],
             "support": {
                 "issues": "https://github.com/phpDocumentor/ReflectionCommon/issues",
-                "source": "https://github.com/phpDocumentor/ReflectionCommon/tree/master"
+                "source": "https://github.com/phpDocumentor/ReflectionCommon/tree/2.x"
             },
-            "time": "2017-09-11T18:02:19+00:00"
+            "time": "2020-06-27T09:03:43+00:00"
         },
         {
             "name": "phpdocumentor/reflection-docblock",
-            "version": "4.3.4",
+            "version": "5.2.2",
             "source": {
                 "type": "git",
                 "url": "https://github.com/phpDocumentor/ReflectionDocBlock.git",
-                "reference": "da3fd972d6bafd628114f7e7e036f45944b62e9c"
+                "reference": "069a785b2141f5bcf49f3e353548dc1cce6df556"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/phpDocumentor/ReflectionDocBlock/zipball/da3fd972d6bafd628114f7e7e036f45944b62e9c",
-                "reference": "da3fd972d6bafd628114f7e7e036f45944b62e9c",
+                "url": "https://api.github.com/repos/phpDocumentor/ReflectionDocBlock/zipball/069a785b2141f5bcf49f3e353548dc1cce6df556",
+                "reference": "069a785b2141f5bcf49f3e353548dc1cce6df556",
                 "shasum": ""
             },
             "require": {
-                "php": "^7.0",
-                "phpdocumentor/reflection-common": "^1.0.0 || ^2.0.0",
-                "phpdocumentor/type-resolver": "~0.4 || ^1.0.0",
-                "webmozart/assert": "^1.0"
+                "ext-filter": "*",
+                "php": "^7.2 || ^8.0",
+                "phpdocumentor/reflection-common": "^2.2",
+                "phpdocumentor/type-resolver": "^1.3",
+                "webmozart/assert": "^1.9.1"
             },
             "require-dev": {
-                "doctrine/instantiator": "^1.0.5",
-                "mockery/mockery": "^1.0",
-                "phpdocumentor/type-resolver": "0.4.*",
-                "phpunit/phpunit": "^6.4"
+                "mockery/mockery": "~1.3.2"
             },
             "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/",
@@ -3711,41 +3479,44 @@
                 {
                     "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.",
             "support": {
                 "issues": "https://github.com/phpDocumentor/ReflectionDocBlock/issues",
-                "source": "https://github.com/phpDocumentor/ReflectionDocBlock/tree/release/4.x"
+                "source": "https://github.com/phpDocumentor/ReflectionDocBlock/tree/master"
             },
-            "time": "2019-12-28T18:55:12+00:00"
+            "time": "2020-09-03T19:13:55+00:00"
         },
         {
             "name": "phpdocumentor/type-resolver",
-            "version": "0.5.1",
+            "version": "1.4.0",
             "source": {
                 "type": "git",
                 "url": "https://github.com/phpDocumentor/TypeResolver.git",
-                "reference": "cf842904952e64e703800d094cdf34e715a8a3ae"
+                "reference": "6a467b8989322d92aa1c8bf2bebcc6e5c2ba55c0"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/phpDocumentor/TypeResolver/zipball/cf842904952e64e703800d094cdf34e715a8a3ae",
-                "reference": "cf842904952e64e703800d094cdf34e715a8a3ae",
+                "url": "https://api.github.com/repos/phpDocumentor/TypeResolver/zipball/6a467b8989322d92aa1c8bf2bebcc6e5c2ba55c0",
+                "reference": "6a467b8989322d92aa1c8bf2bebcc6e5c2ba55c0",
                 "shasum": ""
             },
             "require": {
-                "php": "^7.0",
-                "phpdocumentor/reflection-common": "^1.0"
+                "php": "^7.2 || ^8.0",
+                "phpdocumentor/reflection-common": "^2.0"
             },
             "require-dev": {
-                "mockery/mockery": "^1.0",
-                "phpunit/phpunit": "^6.4"
+                "ext-tokenizer": "*"
             },
             "type": "library",
             "extra": {
                 "branch-alias": {
-                    "dev-master": "1.0.x-dev"
+                    "dev-1.x": "1.x-dev"
                 }
             },
             "autoload": {
@@ -3763,41 +3534,42 @@
                     "email": "me@mikevanriel.com"
                 }
             ],
+            "description": "A PSR-5 based resolver of Class names, Types and Structural Element Names",
             "support": {
                 "issues": "https://github.com/phpDocumentor/TypeResolver/issues",
-                "source": "https://github.com/phpDocumentor/TypeResolver/tree/master"
+                "source": "https://github.com/phpDocumentor/TypeResolver/tree/1.4.0"
             },
-            "time": "2017-12-30T13:23:38+00:00"
+            "time": "2020-09-17T18:55:26+00:00"
         },
         {
             "name": "phpspec/prophecy",
-            "version": "v1.10.3",
+            "version": "1.13.0",
             "source": {
                 "type": "git",
                 "url": "https://github.com/phpspec/prophecy.git",
-                "reference": "451c3cd1418cf640de218914901e51b064abb093"
+                "reference": "be1996ed8adc35c3fd795488a653f4b518be70ea"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/phpspec/prophecy/zipball/451c3cd1418cf640de218914901e51b064abb093",
-                "reference": "451c3cd1418cf640de218914901e51b064abb093",
+                "url": "https://api.github.com/repos/phpspec/prophecy/zipball/be1996ed8adc35c3fd795488a653f4b518be70ea",
+                "reference": "be1996ed8adc35c3fd795488a653f4b518be70ea",
                 "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"
+                "doctrine/instantiator": "^1.2",
+                "php": "^7.2 || ~8.0, <8.1",
+                "phpdocumentor/reflection-docblock": "^5.2",
+                "sebastian/comparator": "^3.0 || ^4.0",
+                "sebastian/recursion-context": "^3.0 || ^4.0"
             },
             "require-dev": {
-                "phpspec/phpspec": "^2.5 || ^3.2",
-                "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.5 || ^7.1"
+                "phpspec/phpspec": "^6.0",
+                "phpunit/phpunit": "^8.0 || ^9.0"
             },
             "type": "library",
             "extra": {
                 "branch-alias": {
-                    "dev-master": "1.10.x-dev"
+                    "dev-master": "1.11.x-dev"
                 }
             },
             "autoload": {
@@ -3832,46 +3604,46 @@
             ],
             "support": {
                 "issues": "https://github.com/phpspec/prophecy/issues",
-                "source": "https://github.com/phpspec/prophecy/tree/v1.10.3"
+                "source": "https://github.com/phpspec/prophecy/tree/1.13.0"
             },
-            "time": "2020-03-05T15:02:03+00:00"
+            "time": "2021-03-17T13:42:18+00:00"
         },
         {
             "name": "phpunit/php-code-coverage",
-            "version": "5.3.2",
+            "version": "7.0.14",
             "source": {
                 "type": "git",
                 "url": "https://github.com/sebastianbergmann/php-code-coverage.git",
-                "reference": "c89677919c5dd6d3b3852f230a663118762218ac"
+                "reference": "bb7c9a210c72e4709cdde67f8b7362f672f2225c"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/c89677919c5dd6d3b3852f230a663118762218ac",
-                "reference": "c89677919c5dd6d3b3852f230a663118762218ac",
+                "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/bb7c9a210c72e4709cdde67f8b7362f672f2225c",
+                "reference": "bb7c9a210c72e4709cdde67f8b7362f672f2225c",
                 "shasum": ""
             },
             "require": {
                 "ext-dom": "*",
                 "ext-xmlwriter": "*",
-                "php": "^7.0",
-                "phpunit/php-file-iterator": "^1.4.2",
+                "php": ">=7.2",
+                "phpunit/php-file-iterator": "^2.0.2",
                 "phpunit/php-text-template": "^1.2.1",
-                "phpunit/php-token-stream": "^2.0.1",
+                "phpunit/php-token-stream": "^3.1.1 || ^4.0",
                 "sebastian/code-unit-reverse-lookup": "^1.0.1",
-                "sebastian/environment": "^3.0",
+                "sebastian/environment": "^4.2.2",
                 "sebastian/version": "^2.0.1",
-                "theseer/tokenizer": "^1.1"
+                "theseer/tokenizer": "^1.1.3"
             },
             "require-dev": {
-                "phpunit/phpunit": "^6.0"
+                "phpunit/phpunit": "^8.2.2"
             },
             "suggest": {
-                "ext-xdebug": "^2.5.5"
+                "ext-xdebug": "^2.7.2"
             },
             "type": "library",
             "extra": {
                 "branch-alias": {
-                    "dev-master": "5.3.x-dev"
+                    "dev-master": "7.0-dev"
                 }
             },
             "autoload": {
@@ -3899,31 +3671,40 @@
             ],
             "support": {
                 "issues": "https://github.com/sebastianbergmann/php-code-coverage/issues",
-                "source": "https://github.com/sebastianbergmann/php-code-coverage/tree/5.3"
+                "source": "https://github.com/sebastianbergmann/php-code-coverage/tree/7.0.14"
             },
-            "time": "2018-04-06T15:36:58+00:00"
+            "funding": [
+                {
+                    "url": "https://github.com/sebastianbergmann",
+                    "type": "github"
+                }
+            ],
+            "time": "2020-12-02T13:39:03+00:00"
         },
         {
             "name": "phpunit/php-file-iterator",
-            "version": "1.4.5",
+            "version": "2.0.3",
             "source": {
                 "type": "git",
                 "url": "https://github.com/sebastianbergmann/php-file-iterator.git",
-                "reference": "730b01bc3e867237eaac355e06a36b85dd93a8b4"
+                "reference": "4b49fb70f067272b659ef0174ff9ca40fdaa6357"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/sebastianbergmann/php-file-iterator/zipball/730b01bc3e867237eaac355e06a36b85dd93a8b4",
-                "reference": "730b01bc3e867237eaac355e06a36b85dd93a8b4",
+                "url": "https://api.github.com/repos/sebastianbergmann/php-file-iterator/zipball/4b49fb70f067272b659ef0174ff9ca40fdaa6357",
+                "reference": "4b49fb70f067272b659ef0174ff9ca40fdaa6357",
                 "shasum": ""
             },
             "require": {
-                "php": ">=5.3.3"
+                "php": ">=7.1"
+            },
+            "require-dev": {
+                "phpunit/phpunit": "^8.5"
             },
             "type": "library",
             "extra": {
                 "branch-alias": {
-                    "dev-master": "1.4.x-dev"
+                    "dev-master": "2.0.x-dev"
                 }
             },
             "autoload": {
@@ -3938,7 +3719,7 @@
             "authors": [
                 {
                     "name": "Sebastian Bergmann",
-                    "email": "sb@sebastian-bergmann.de",
+                    "email": "sebastian@phpunit.de",
                     "role": "lead"
                 }
             ],
@@ -3949,11 +3730,16 @@
                 "iterator"
             ],
             "support": {
-                "irc": "irc://irc.freenode.net/phpunit",
                 "issues": "https://github.com/sebastianbergmann/php-file-iterator/issues",
-                "source": "https://github.com/sebastianbergmann/php-file-iterator/tree/1.4.5"
+                "source": "https://github.com/sebastianbergmann/php-file-iterator/tree/2.0.3"
             },
-            "time": "2017-11-27T13:52:08+00:00"
+            "funding": [
+                {
+                    "url": "https://github.com/sebastianbergmann",
+                    "type": "github"
+                }
+            ],
+            "time": "2020-11-30T08:25:21+00:00"
         },
         {
             "name": "phpunit/php-text-template",
@@ -4002,28 +3788,28 @@
         },
         {
             "name": "phpunit/php-timer",
-            "version": "1.0.9",
+            "version": "2.1.3",
             "source": {
                 "type": "git",
                 "url": "https://github.com/sebastianbergmann/php-timer.git",
-                "reference": "3dcf38ca72b158baf0bc245e9184d3fdffa9c46f"
+                "reference": "2454ae1765516d20c4ffe103d85a58a9a3bd5662"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/sebastianbergmann/php-timer/zipball/3dcf38ca72b158baf0bc245e9184d3fdffa9c46f",
-                "reference": "3dcf38ca72b158baf0bc245e9184d3fdffa9c46f",
+                "url": "https://api.github.com/repos/sebastianbergmann/php-timer/zipball/2454ae1765516d20c4ffe103d85a58a9a3bd5662",
+                "reference": "2454ae1765516d20c4ffe103d85a58a9a3bd5662",
                 "shasum": ""
             },
             "require": {
-                "php": "^5.3.3 || ^7.0"
+                "php": ">=7.1"
             },
             "require-dev": {
-                "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.0"
+                "phpunit/phpunit": "^8.5"
             },
             "type": "library",
             "extra": {
                 "branch-alias": {
-                    "dev-master": "1.0-dev"
+                    "dev-master": "2.1-dev"
                 }
             },
             "autoload": {
@@ -4038,7 +3824,7 @@
             "authors": [
                 {
                     "name": "Sebastian Bergmann",
-                    "email": "sb@sebastian-bergmann.de",
+                    "email": "sebastian@phpunit.de",
                     "role": "lead"
                 }
             ],
@@ -4049,35 +3835,41 @@
             ],
             "support": {
                 "issues": "https://github.com/sebastianbergmann/php-timer/issues",
-                "source": "https://github.com/sebastianbergmann/php-timer/tree/master"
+                "source": "https://github.com/sebastianbergmann/php-timer/tree/2.1.3"
             },
-            "time": "2017-02-26T11:10:40+00:00"
+            "funding": [
+                {
+                    "url": "https://github.com/sebastianbergmann",
+                    "type": "github"
+                }
+            ],
+            "time": "2020-11-30T08:20:02+00:00"
         },
         {
             "name": "phpunit/php-token-stream",
-            "version": "2.0.2",
+            "version": "3.1.2",
             "source": {
                 "type": "git",
                 "url": "https://github.com/sebastianbergmann/php-token-stream.git",
-                "reference": "791198a2c6254db10131eecfe8c06670700904db"
+                "reference": "472b687829041c24b25f475e14c2f38a09edf1c2"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/sebastianbergmann/php-token-stream/zipball/791198a2c6254db10131eecfe8c06670700904db",
-                "reference": "791198a2c6254db10131eecfe8c06670700904db",
+                "url": "https://api.github.com/repos/sebastianbergmann/php-token-stream/zipball/472b687829041c24b25f475e14c2f38a09edf1c2",
+                "reference": "472b687829041c24b25f475e14c2f38a09edf1c2",
                 "shasum": ""
             },
             "require": {
                 "ext-tokenizer": "*",
-                "php": "^7.0"
+                "php": ">=7.1"
             },
             "require-dev": {
-                "phpunit/phpunit": "^6.2.4"
+                "phpunit/phpunit": "^7.0"
             },
             "type": "library",
             "extra": {
                 "branch-alias": {
-                    "dev-master": "2.0-dev"
+                    "dev-master": "3.1-dev"
                 }
             },
             "autoload": {
@@ -4102,60 +3894,65 @@
             ],
             "support": {
                 "issues": "https://github.com/sebastianbergmann/php-token-stream/issues",
-                "source": "https://github.com/sebastianbergmann/php-token-stream/tree/master"
+                "source": "https://github.com/sebastianbergmann/php-token-stream/tree/3.1.2"
             },
+            "funding": [
+                {
+                    "url": "https://github.com/sebastianbergmann",
+                    "type": "github"
+                }
+            ],
             "abandoned": true,
-            "time": "2017-11-27T05:48:46+00:00"
+            "time": "2020-11-30T08:38:46+00:00"
         },
         {
             "name": "phpunit/phpunit",
-            "version": "6.5.14",
+            "version": "8.5.17",
             "source": {
                 "type": "git",
                 "url": "https://github.com/sebastianbergmann/phpunit.git",
-                "reference": "bac23fe7ff13dbdb461481f706f0e9fe746334b7"
+                "reference": "79067856d85421c56d413bd238d4e2cd6b0e54da"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/bac23fe7ff13dbdb461481f706f0e9fe746334b7",
-                "reference": "bac23fe7ff13dbdb461481f706f0e9fe746334b7",
+                "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/79067856d85421c56d413bd238d4e2cd6b0e54da",
+                "reference": "79067856d85421c56d413bd238d4e2cd6b0e54da",
                 "shasum": ""
             },
             "require": {
+                "doctrine/instantiator": "^1.3.1",
                 "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",
+                "ext-xmlwriter": "*",
+                "myclabs/deep-copy": "^1.10.0",
+                "phar-io/manifest": "^2.0.1",
+                "phar-io/version": "^3.0.2",
+                "php": ">=7.2",
+                "phpspec/prophecy": "^1.10.3",
+                "phpunit/php-code-coverage": "^7.0.12",
+                "phpunit/php-file-iterator": "^2.0.2",
                 "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",
+                "phpunit/php-timer": "^2.1.2",
+                "sebastian/comparator": "^3.0.2",
+                "sebastian/diff": "^3.0.2",
+                "sebastian/environment": "^4.2.3",
+                "sebastian/exporter": "^3.1.2",
+                "sebastian/global-state": "^3.0.0",
                 "sebastian/object-enumerator": "^3.0.3",
-                "sebastian/resource-operations": "^1.0",
+                "sebastian/resource-operations": "^2.0.1",
+                "sebastian/type": "^1.1.3",
                 "sebastian/version": "^2.0.1"
             },
-            "conflict": {
-                "phpdocumentor/reflection-docblock": "3.0.2",
-                "phpunit/dbunit": "<3.0"
-            },
             "require-dev": {
                 "ext-pdo": "*"
             },
             "suggest": {
+                "ext-soap": "*",
                 "ext-xdebug": "*",
-                "phpunit/php-invoker": "^1.1"
+                "phpunit/php-invoker": "^2.0.0"
             },
             "bin": [
                 "phpunit"
@@ -4163,7 +3960,7 @@
             "type": "library",
             "extra": {
                 "branch-alias": {
-                    "dev-master": "6.5.x-dev"
+                    "dev-master": "8.5-dev"
                 }
             },
             "autoload": {
@@ -4191,93 +3988,89 @@
             ],
             "support": {
                 "issues": "https://github.com/sebastianbergmann/phpunit/issues",
-                "source": "https://github.com/sebastianbergmann/phpunit/tree/6.5.14"
+                "source": "https://github.com/sebastianbergmann/phpunit/tree/8.5.17"
             },
-            "time": "2019-02-01T05:22:47+00:00"
+            "funding": [
+                {
+                    "url": "https://phpunit.de/donate.html",
+                    "type": "custom"
+                },
+                {
+                    "url": "https://github.com/sebastianbergmann",
+                    "type": "github"
+                }
+            ],
+            "time": "2021-06-23T05:12:43+00:00"
         },
         {
-            "name": "phpunit/phpunit-mock-objects",
-            "version": "5.0.10",
+            "name": "psr/event-dispatcher",
+            "version": "1.0.0",
             "source": {
                 "type": "git",
-                "url": "https://github.com/sebastianbergmann/phpunit-mock-objects.git",
-                "reference": "cd1cf05c553ecfec36b170070573e540b67d3f1f"
+                "url": "https://github.com/php-fig/event-dispatcher.git",
+                "reference": "dbefd12671e8a14ec7f180cab83036ed26714bb0"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/sebastianbergmann/phpunit-mock-objects/zipball/cd1cf05c553ecfec36b170070573e540b67d3f1f",
-                "reference": "cd1cf05c553ecfec36b170070573e540b67d3f1f",
+                "url": "https://api.github.com/repos/php-fig/event-dispatcher/zipball/dbefd12671e8a14ec7f180cab83036ed26714bb0",
+                "reference": "dbefd12671e8a14ec7f180cab83036ed26714bb0",
                 "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": "*"
+                "php": ">=7.2.0"
             },
             "type": "library",
             "extra": {
                 "branch-alias": {
-                    "dev-master": "5.0.x-dev"
+                    "dev-master": "1.0.x-dev"
                 }
             },
             "autoload": {
-                "classmap": [
-                    "src/"
-                ]
+                "psr-4": {
+                    "Psr\\EventDispatcher\\": "src/"
+                }
             },
             "notification-url": "https://packagist.org/downloads/",
             "license": [
-                "BSD-3-Clause"
+                "MIT"
             ],
             "authors": [
                 {
-                    "name": "Sebastian Bergmann",
-                    "email": "sebastian@phpunit.de",
-                    "role": "lead"
+                    "name": "PHP-FIG",
+                    "homepage": "http://www.php-fig.org/"
                 }
             ],
-            "description": "Mock Object library for PHPUnit",
-            "homepage": "https://github.com/sebastianbergmann/phpunit-mock-objects/",
+            "description": "Standard interfaces for event handling.",
             "keywords": [
-                "mock",
-                "xunit"
+                "events",
+                "psr",
+                "psr-14"
             ],
             "support": {
-                "issues": "https://github.com/sebastianbergmann/phpunit-mock-objects/issues",
-                "source": "https://github.com/sebastianbergmann/phpunit-mock-objects/tree/5.0.10"
+                "issues": "https://github.com/php-fig/event-dispatcher/issues",
+                "source": "https://github.com/php-fig/event-dispatcher/tree/1.0.0"
             },
-            "abandoned": true,
-            "time": "2018-08-09T05:50:03+00:00"
+            "time": "2019-01-08T18:20:26+00:00"
         },
         {
             "name": "sebastian/code-unit-reverse-lookup",
-            "version": "1.0.1",
+            "version": "1.0.2",
             "source": {
                 "type": "git",
                 "url": "https://github.com/sebastianbergmann/code-unit-reverse-lookup.git",
-                "reference": "4419fcdb5eabb9caa61a27c7a1db532a6b55dd18"
+                "reference": "1de8cd5c010cb153fcd68b8d0f64606f523f7619"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/sebastianbergmann/code-unit-reverse-lookup/zipball/4419fcdb5eabb9caa61a27c7a1db532a6b55dd18",
-                "reference": "4419fcdb5eabb9caa61a27c7a1db532a6b55dd18",
+                "url": "https://api.github.com/repos/sebastianbergmann/code-unit-reverse-lookup/zipball/1de8cd5c010cb153fcd68b8d0f64606f523f7619",
+                "reference": "1de8cd5c010cb153fcd68b8d0f64606f523f7619",
                 "shasum": ""
             },
             "require": {
-                "php": "^5.6 || ^7.0"
+                "php": ">=5.6"
             },
             "require-dev": {
-                "phpunit/phpunit": "^5.7 || ^6.0"
+                "phpunit/phpunit": "^8.5"
             },
             "type": "library",
             "extra": {
@@ -4304,36 +4097,42 @@
             "homepage": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/",
             "support": {
                 "issues": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/issues",
-                "source": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/tree/master"
+                "source": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/tree/1.0.2"
             },
-            "time": "2017-03-04T06:30:41+00:00"
+            "funding": [
+                {
+                    "url": "https://github.com/sebastianbergmann",
+                    "type": "github"
+                }
+            ],
+            "time": "2020-11-30T08:15:22+00:00"
         },
         {
             "name": "sebastian/comparator",
-            "version": "2.1.3",
+            "version": "3.0.3",
             "source": {
                 "type": "git",
                 "url": "https://github.com/sebastianbergmann/comparator.git",
-                "reference": "34369daee48eafb2651bea869b4b15d75ccc35f9"
+                "reference": "1071dfcef776a57013124ff35e1fc41ccd294758"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/34369daee48eafb2651bea869b4b15d75ccc35f9",
-                "reference": "34369daee48eafb2651bea869b4b15d75ccc35f9",
+                "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/1071dfcef776a57013124ff35e1fc41ccd294758",
+                "reference": "1071dfcef776a57013124ff35e1fc41ccd294758",
                 "shasum": ""
             },
             "require": {
-                "php": "^7.0",
-                "sebastian/diff": "^2.0 || ^3.0",
+                "php": ">=7.1",
+                "sebastian/diff": "^3.0",
                 "sebastian/exporter": "^3.1"
             },
             "require-dev": {
-                "phpunit/phpunit": "^6.4"
+                "phpunit/phpunit": "^8.5"
             },
             "type": "library",
             "extra": {
                 "branch-alias": {
-                    "dev-master": "2.1.x-dev"
+                    "dev-master": "3.0-dev"
                 }
             },
             "autoload": {
@@ -4346,6 +4145,10 @@
                 "BSD-3-Clause"
             ],
             "authors": [
+                {
+                    "name": "Sebastian Bergmann",
+                    "email": "sebastian@phpunit.de"
+                },
                 {
                     "name": "Jeff Welch",
                     "email": "whatthejeff@gmail.com"
@@ -4357,10 +4160,6 @@
                 {
                     "name": "Bernhard Schussek",
                     "email": "bschussek@2bepublished.at"
-                },
-                {
-                    "name": "Sebastian Bergmann",
-                    "email": "sebastian@phpunit.de"
                 }
             ],
             "description": "Provides the functionality to compare PHP values for equality",
@@ -4372,34 +4171,41 @@
             ],
             "support": {
                 "issues": "https://github.com/sebastianbergmann/comparator/issues",
-                "source": "https://github.com/sebastianbergmann/comparator/tree/master"
+                "source": "https://github.com/sebastianbergmann/comparator/tree/3.0.3"
             },
-            "time": "2018-02-01T13:46:46+00:00"
+            "funding": [
+                {
+                    "url": "https://github.com/sebastianbergmann",
+                    "type": "github"
+                }
+            ],
+            "time": "2020-11-30T08:04:30+00:00"
         },
         {
             "name": "sebastian/diff",
-            "version": "2.0.1",
+            "version": "3.0.3",
             "source": {
                 "type": "git",
                 "url": "https://github.com/sebastianbergmann/diff.git",
-                "reference": "347c1d8b49c5c3ee30c7040ea6fc446790e6bddd"
+                "reference": "14f72dd46eaf2f2293cbe79c93cc0bc43161a211"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/347c1d8b49c5c3ee30c7040ea6fc446790e6bddd",
-                "reference": "347c1d8b49c5c3ee30c7040ea6fc446790e6bddd",
+                "url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/14f72dd46eaf2f2293cbe79c93cc0bc43161a211",
+                "reference": "14f72dd46eaf2f2293cbe79c93cc0bc43161a211",
                 "shasum": ""
             },
             "require": {
-                "php": "^7.0"
+                "php": ">=7.1"
             },
             "require-dev": {
-                "phpunit/phpunit": "^6.2"
+                "phpunit/phpunit": "^7.5 || ^8.0",
+                "symfony/process": "^2 || ^3.3 || ^4"
             },
             "type": "library",
             "extra": {
                 "branch-alias": {
-                    "dev-master": "2.0-dev"
+                    "dev-master": "3.0-dev"
                 }
             },
             "autoload": {
@@ -4412,50 +4218,62 @@
                 "BSD-3-Clause"
             ],
             "authors": [
-                {
-                    "name": "Kore Nordmann",
-                    "email": "mail@kore-nordmann.de"
-                },
                 {
                     "name": "Sebastian Bergmann",
                     "email": "sebastian@phpunit.de"
+                },
+                {
+                    "name": "Kore Nordmann",
+                    "email": "mail@kore-nordmann.de"
                 }
             ],
             "description": "Diff implementation",
             "homepage": "https://github.com/sebastianbergmann/diff",
             "keywords": [
-                "diff"
+                "diff",
+                "udiff",
+                "unidiff",
+                "unified diff"
             ],
             "support": {
                 "issues": "https://github.com/sebastianbergmann/diff/issues",
-                "source": "https://github.com/sebastianbergmann/diff/tree/master"
+                "source": "https://github.com/sebastianbergmann/diff/tree/3.0.3"
             },
-            "time": "2017-08-03T08:09:46+00:00"
+            "funding": [
+                {
+                    "url": "https://github.com/sebastianbergmann",
+                    "type": "github"
+                }
+            ],
+            "time": "2020-11-30T07:59:04+00:00"
         },
         {
             "name": "sebastian/environment",
-            "version": "3.1.0",
+            "version": "4.2.4",
             "source": {
                 "type": "git",
                 "url": "https://github.com/sebastianbergmann/environment.git",
-                "reference": "cd0871b3975fb7fc44d11314fd1ee20925fce4f5"
+                "reference": "d47bbbad83711771f167c72d4e3f25f7fcc1f8b0"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/cd0871b3975fb7fc44d11314fd1ee20925fce4f5",
-                "reference": "cd0871b3975fb7fc44d11314fd1ee20925fce4f5",
+                "url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/d47bbbad83711771f167c72d4e3f25f7fcc1f8b0",
+                "reference": "d47bbbad83711771f167c72d4e3f25f7fcc1f8b0",
                 "shasum": ""
             },
             "require": {
-                "php": "^7.0"
+                "php": ">=7.1"
             },
             "require-dev": {
-                "phpunit/phpunit": "^6.1"
+                "phpunit/phpunit": "^7.5"
+            },
+            "suggest": {
+                "ext-posix": "*"
             },
             "type": "library",
             "extra": {
                 "branch-alias": {
-                    "dev-master": "3.1.x-dev"
+                    "dev-master": "4.2-dev"
                 }
             },
             "autoload": {
@@ -4482,26 +4300,32 @@
             ],
             "support": {
                 "issues": "https://github.com/sebastianbergmann/environment/issues",
-                "source": "https://github.com/sebastianbergmann/environment/tree/master"
+                "source": "https://github.com/sebastianbergmann/environment/tree/4.2.4"
             },
-            "time": "2017-07-01T08:51:00+00:00"
+            "funding": [
+                {
+                    "url": "https://github.com/sebastianbergmann",
+                    "type": "github"
+                }
+            ],
+            "time": "2020-11-30T07:53:42+00:00"
         },
         {
             "name": "sebastian/exporter",
-            "version": "3.1.2",
+            "version": "3.1.3",
             "source": {
                 "type": "git",
                 "url": "https://github.com/sebastianbergmann/exporter.git",
-                "reference": "68609e1261d215ea5b21b7987539cbfbe156ec3e"
+                "reference": "6b853149eab67d4da22291d36f5b0631c0fd856e"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/68609e1261d215ea5b21b7987539cbfbe156ec3e",
-                "reference": "68609e1261d215ea5b21b7987539cbfbe156ec3e",
+                "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/6b853149eab67d4da22291d36f5b0631c0fd856e",
+                "reference": "6b853149eab67d4da22291d36f5b0631c0fd856e",
                 "shasum": ""
             },
             "require": {
-                "php": "^7.0",
+                "php": ">=7.0",
                 "sebastian/recursion-context": "^3.0"
             },
             "require-dev": {
@@ -4553,29 +4377,38 @@
             ],
             "support": {
                 "issues": "https://github.com/sebastianbergmann/exporter/issues",
-                "source": "https://github.com/sebastianbergmann/exporter/tree/master"
+                "source": "https://github.com/sebastianbergmann/exporter/tree/3.1.3"
             },
-            "time": "2019-09-14T09:02:43+00:00"
+            "funding": [
+                {
+                    "url": "https://github.com/sebastianbergmann",
+                    "type": "github"
+                }
+            ],
+            "time": "2020-11-30T07:47:53+00:00"
         },
         {
             "name": "sebastian/global-state",
-            "version": "2.0.0",
+            "version": "3.0.1",
             "source": {
                 "type": "git",
                 "url": "https://github.com/sebastianbergmann/global-state.git",
-                "reference": "e8ba02eed7bbbb9e59e43dedd3dddeff4a56b0c4"
+                "reference": "474fb9edb7ab891665d3bfc6317f42a0a150454b"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/sebastianbergmann/global-state/zipball/e8ba02eed7bbbb9e59e43dedd3dddeff4a56b0c4",
-                "reference": "e8ba02eed7bbbb9e59e43dedd3dddeff4a56b0c4",
+                "url": "https://api.github.com/repos/sebastianbergmann/global-state/zipball/474fb9edb7ab891665d3bfc6317f42a0a150454b",
+                "reference": "474fb9edb7ab891665d3bfc6317f42a0a150454b",
                 "shasum": ""
             },
             "require": {
-                "php": "^7.0"
+                "php": ">=7.2",
+                "sebastian/object-reflector": "^1.1.1",
+                "sebastian/recursion-context": "^3.0"
             },
             "require-dev": {
-                "phpunit/phpunit": "^6.0"
+                "ext-dom": "*",
+                "phpunit/phpunit": "^8.0"
             },
             "suggest": {
                 "ext-uopz": "*"
@@ -4583,7 +4416,7 @@
             "type": "library",
             "extra": {
                 "branch-alias": {
-                    "dev-master": "2.0-dev"
+                    "dev-master": "3.0-dev"
                 }
             },
             "autoload": {
@@ -4608,26 +4441,32 @@
             ],
             "support": {
                 "issues": "https://github.com/sebastianbergmann/global-state/issues",
-                "source": "https://github.com/sebastianbergmann/global-state/tree/2.0.0"
+                "source": "https://github.com/sebastianbergmann/global-state/tree/3.0.1"
             },
-            "time": "2017-04-27T15:39:26+00:00"
+            "funding": [
+                {
+                    "url": "https://github.com/sebastianbergmann",
+                    "type": "github"
+                }
+            ],
+            "time": "2020-11-30T07:43:24+00:00"
         },
         {
             "name": "sebastian/object-enumerator",
-            "version": "3.0.3",
+            "version": "3.0.4",
             "source": {
                 "type": "git",
                 "url": "https://github.com/sebastianbergmann/object-enumerator.git",
-                "reference": "7cfd9e65d11ffb5af41198476395774d4c8a84c5"
+                "reference": "e67f6d32ebd0c749cf9d1dbd9f226c727043cdf2"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/sebastianbergmann/object-enumerator/zipball/7cfd9e65d11ffb5af41198476395774d4c8a84c5",
-                "reference": "7cfd9e65d11ffb5af41198476395774d4c8a84c5",
+                "url": "https://api.github.com/repos/sebastianbergmann/object-enumerator/zipball/e67f6d32ebd0c749cf9d1dbd9f226c727043cdf2",
+                "reference": "e67f6d32ebd0c749cf9d1dbd9f226c727043cdf2",
                 "shasum": ""
             },
             "require": {
-                "php": "^7.0",
+                "php": ">=7.0",
                 "sebastian/object-reflector": "^1.1.1",
                 "sebastian/recursion-context": "^3.0"
             },
@@ -4659,26 +4498,32 @@
             "homepage": "https://github.com/sebastianbergmann/object-enumerator/",
             "support": {
                 "issues": "https://github.com/sebastianbergmann/object-enumerator/issues",
-                "source": "https://github.com/sebastianbergmann/object-enumerator/tree/master"
+                "source": "https://github.com/sebastianbergmann/object-enumerator/tree/3.0.4"
             },
-            "time": "2017-08-03T12:35:26+00:00"
+            "funding": [
+                {
+                    "url": "https://github.com/sebastianbergmann",
+                    "type": "github"
+                }
+            ],
+            "time": "2020-11-30T07:40:27+00:00"
         },
         {
             "name": "sebastian/object-reflector",
-            "version": "1.1.1",
+            "version": "1.1.2",
             "source": {
                 "type": "git",
                 "url": "https://github.com/sebastianbergmann/object-reflector.git",
-                "reference": "773f97c67f28de00d397be301821b06708fca0be"
+                "reference": "9b8772b9cbd456ab45d4a598d2dd1a1bced6363d"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/sebastianbergmann/object-reflector/zipball/773f97c67f28de00d397be301821b06708fca0be",
-                "reference": "773f97c67f28de00d397be301821b06708fca0be",
+                "url": "https://api.github.com/repos/sebastianbergmann/object-reflector/zipball/9b8772b9cbd456ab45d4a598d2dd1a1bced6363d",
+                "reference": "9b8772b9cbd456ab45d4a598d2dd1a1bced6363d",
                 "shasum": ""
             },
             "require": {
-                "php": "^7.0"
+                "php": ">=7.0"
             },
             "require-dev": {
                 "phpunit/phpunit": "^6.0"
@@ -4708,26 +4553,32 @@
             "homepage": "https://github.com/sebastianbergmann/object-reflector/",
             "support": {
                 "issues": "https://github.com/sebastianbergmann/object-reflector/issues",
-                "source": "https://github.com/sebastianbergmann/object-reflector/tree/master"
+                "source": "https://github.com/sebastianbergmann/object-reflector/tree/1.1.2"
             },
-            "time": "2017-03-29T09:07:27+00:00"
+            "funding": [
+                {
+                    "url": "https://github.com/sebastianbergmann",
+                    "type": "github"
+                }
+            ],
+            "time": "2020-11-30T07:37:18+00:00"
         },
         {
             "name": "sebastian/recursion-context",
-            "version": "3.0.0",
+            "version": "3.0.1",
             "source": {
                 "type": "git",
                 "url": "https://github.com/sebastianbergmann/recursion-context.git",
-                "reference": "5b0cd723502bac3b006cbf3dbf7a1e3fcefe4fa8"
+                "reference": "367dcba38d6e1977be014dc4b22f47a484dac7fb"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/sebastianbergmann/recursion-context/zipball/5b0cd723502bac3b006cbf3dbf7a1e3fcefe4fa8",
-                "reference": "5b0cd723502bac3b006cbf3dbf7a1e3fcefe4fa8",
+                "url": "https://api.github.com/repos/sebastianbergmann/recursion-context/zipball/367dcba38d6e1977be014dc4b22f47a484dac7fb",
+                "reference": "367dcba38d6e1977be014dc4b22f47a484dac7fb",
                 "shasum": ""
             },
             "require": {
-                "php": "^7.0"
+                "php": ">=7.0"
             },
             "require-dev": {
                 "phpunit/phpunit": "^6.0"
@@ -4748,14 +4599,14 @@
                 "BSD-3-Clause"
             ],
             "authors": [
-                {
-                    "name": "Jeff Welch",
-                    "email": "whatthejeff@gmail.com"
-                },
                 {
                     "name": "Sebastian Bergmann",
                     "email": "sebastian@phpunit.de"
                 },
+                {
+                    "name": "Jeff Welch",
+                    "email": "whatthejeff@gmail.com"
+                },
                 {
                     "name": "Adam Harvey",
                     "email": "aharvey@php.net"
@@ -4765,31 +4616,37 @@
             "homepage": "http://www.github.com/sebastianbergmann/recursion-context",
             "support": {
                 "issues": "https://github.com/sebastianbergmann/recursion-context/issues",
-                "source": "https://github.com/sebastianbergmann/recursion-context/tree/master"
+                "source": "https://github.com/sebastianbergmann/recursion-context/tree/3.0.1"
             },
-            "time": "2017-03-03T06:23:57+00:00"
+            "funding": [
+                {
+                    "url": "https://github.com/sebastianbergmann",
+                    "type": "github"
+                }
+            ],
+            "time": "2020-11-30T07:34:24+00:00"
         },
         {
             "name": "sebastian/resource-operations",
-            "version": "1.0.0",
+            "version": "2.0.2",
             "source": {
                 "type": "git",
                 "url": "https://github.com/sebastianbergmann/resource-operations.git",
-                "reference": "ce990bb21759f94aeafd30209e8cfcdfa8bc3f52"
+                "reference": "31d35ca87926450c44eae7e2611d45a7a65ea8b3"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/sebastianbergmann/resource-operations/zipball/ce990bb21759f94aeafd30209e8cfcdfa8bc3f52",
-                "reference": "ce990bb21759f94aeafd30209e8cfcdfa8bc3f52",
+                "url": "https://api.github.com/repos/sebastianbergmann/resource-operations/zipball/31d35ca87926450c44eae7e2611d45a7a65ea8b3",
+                "reference": "31d35ca87926450c44eae7e2611d45a7a65ea8b3",
                 "shasum": ""
             },
             "require": {
-                "php": ">=5.6.0"
+                "php": ">=7.1"
             },
             "type": "library",
             "extra": {
                 "branch-alias": {
-                    "dev-master": "1.0.x-dev"
+                    "dev-master": "2.0-dev"
                 }
             },
             "autoload": {
@@ -4811,31 +4668,40 @@
             "homepage": "https://www.github.com/sebastianbergmann/resource-operations",
             "support": {
                 "issues": "https://github.com/sebastianbergmann/resource-operations/issues",
-                "source": "https://github.com/sebastianbergmann/resource-operations/tree/master"
+                "source": "https://github.com/sebastianbergmann/resource-operations/tree/2.0.2"
             },
-            "time": "2015-07-28T20:34:47+00:00"
+            "funding": [
+                {
+                    "url": "https://github.com/sebastianbergmann",
+                    "type": "github"
+                }
+            ],
+            "time": "2020-11-30T07:30:19+00:00"
         },
         {
-            "name": "sebastian/version",
-            "version": "2.0.1",
+            "name": "sebastian/type",
+            "version": "1.1.4",
             "source": {
                 "type": "git",
-                "url": "https://github.com/sebastianbergmann/version.git",
-                "reference": "99732be0ddb3361e16ad77b68ba41efc8e979019"
+                "url": "https://github.com/sebastianbergmann/type.git",
+                "reference": "0150cfbc4495ed2df3872fb31b26781e4e077eb4"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/sebastianbergmann/version/zipball/99732be0ddb3361e16ad77b68ba41efc8e979019",
-                "reference": "99732be0ddb3361e16ad77b68ba41efc8e979019",
+                "url": "https://api.github.com/repos/sebastianbergmann/type/zipball/0150cfbc4495ed2df3872fb31b26781e4e077eb4",
+                "reference": "0150cfbc4495ed2df3872fb31b26781e4e077eb4",
                 "shasum": ""
             },
             "require": {
-                "php": ">=5.6"
+                "php": ">=7.2"
+            },
+            "require-dev": {
+                "phpunit/phpunit": "^8.2"
             },
             "type": "library",
             "extra": {
                 "branch-alias": {
-                    "dev-master": "2.0.x-dev"
+                    "dev-master": "1.1-dev"
                 }
             },
             "autoload": {
@@ -4854,121 +4720,108 @@
                     "role": "lead"
                 }
             ],
-            "description": "Library that helps with managing the version number of Git-hosted PHP projects",
-            "homepage": "https://github.com/sebastianbergmann/version",
+            "description": "Collection of value objects that represent the types of the PHP type system",
+            "homepage": "https://github.com/sebastianbergmann/type",
             "support": {
-                "issues": "https://github.com/sebastianbergmann/version/issues",
-                "source": "https://github.com/sebastianbergmann/version/tree/master"
+                "issues": "https://github.com/sebastianbergmann/type/issues",
+                "source": "https://github.com/sebastianbergmann/type/tree/1.1.4"
             },
-            "time": "2016-10-03T07:35:21+00:00"
+            "funding": [
+                {
+                    "url": "https://github.com/sebastianbergmann",
+                    "type": "github"
+                }
+            ],
+            "time": "2020-11-30T07:25:11+00:00"
         },
         {
-            "name": "symfony/browser-kit",
-            "version": "v3.4.45",
+            "name": "sebastian/version",
+            "version": "2.0.1",
             "source": {
                 "type": "git",
-                "url": "https://github.com/symfony/browser-kit.git",
-                "reference": "2084c70ace7605fb0984991fd0f575814bfcc8fe"
+                "url": "https://github.com/sebastianbergmann/version.git",
+                "reference": "99732be0ddb3361e16ad77b68ba41efc8e979019"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/symfony/browser-kit/zipball/2084c70ace7605fb0984991fd0f575814bfcc8fe",
-                "reference": "2084c70ace7605fb0984991fd0f575814bfcc8fe",
+                "url": "https://api.github.com/repos/sebastianbergmann/version/zipball/99732be0ddb3361e16ad77b68ba41efc8e979019",
+                "reference": "99732be0ddb3361e16ad77b68ba41efc8e979019",
                 "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": ""
+                "php": ">=5.6"
             },
             "type": "library",
             "extra": {
                 "branch-alias": {
-                    "dev-master": "3.4-dev"
+                    "dev-master": "2.0.x-dev"
                 }
             },
             "autoload": {
-                "psr-4": {
-                    "Symfony\\Component\\BrowserKit\\": ""
-                },
-                "exclude-from-classmap": [
-                    "/Tests/"
+                "classmap": [
+                    "src/"
                 ]
             },
             "notification-url": "https://packagist.org/downloads/",
             "license": [
-                "MIT"
+                "BSD-3-Clause"
             ],
             "authors": [
                 {
-                    "name": "Fabien Potencier",
-                    "email": "fabien@symfony.com"
-                },
-                {
-                    "name": "Symfony Community",
-                    "homepage": "https://symfony.com/contributors"
+                    "name": "Sebastian Bergmann",
+                    "email": "sebastian@phpunit.de",
+                    "role": "lead"
                 }
             ],
-            "description": "Symfony BrowserKit Component",
-            "homepage": "https://symfony.com",
+            "description": "Library that helps with managing the version number of Git-hosted PHP projects",
+            "homepage": "https://github.com/sebastianbergmann/version",
             "support": {
-                "source": "https://github.com/symfony/browser-kit/tree/v3.4.45"
+                "issues": "https://github.com/sebastianbergmann/version/issues",
+                "source": "https://github.com/sebastianbergmann/version/tree/master"
             },
-            "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"
+            "time": "2016-10-03T07:35:21+00:00"
         },
         {
             "name": "symfony/console",
-            "version": "v3.4.45",
+            "version": "v5.3.2",
             "source": {
                 "type": "git",
                 "url": "https://github.com/symfony/console.git",
-                "reference": "b28996bc0a3b08914b2a8609163ec35b36b30685"
+                "reference": "649730483885ff2ca99ca0560ef0e5f6b03f2ac1"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/symfony/console/zipball/b28996bc0a3b08914b2a8609163ec35b36b30685",
-                "reference": "b28996bc0a3b08914b2a8609163ec35b36b30685",
+                "url": "https://api.github.com/repos/symfony/console/zipball/649730483885ff2ca99ca0560ef0e5f6b03f2ac1",
+                "reference": "649730483885ff2ca99ca0560ef0e5f6b03f2ac1",
                 "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/deprecation-contracts": "^2.1",
+                "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": "<3.4",
-                "symfony/process": "<3.3"
+                "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/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",
@@ -4977,11 +4830,6 @@
                 "symfony/process": ""
             },
             "type": "library",
-            "extra": {
-                "branch-alias": {
-                    "dev-master": "3.4-dev"
-                }
-            },
             "autoload": {
                 "psr-4": {
                     "Symfony\\Component\\Console\\": ""
@@ -5004,10 +4852,16 @@
                     "homepage": "https://symfony.com/contributors"
                 }
             ],
-            "description": "Symfony Console Component",
+            "description": "Eases the creation of beautiful and testable command line interfaces",
             "homepage": "https://symfony.com",
+            "keywords": [
+                "cli",
+                "command line",
+                "console",
+                "terminal"
+            ],
             "support": {
-                "source": "https://github.com/symfony/console/tree/v3.4.45"
+                "source": "https://github.com/symfony/console/tree/v5.3.2"
             },
             "funding": [
                 {
@@ -5023,31 +4877,26 @@
                     "type": "tidelift"
                 }
             ],
-            "time": "2020-09-09T05:09:37+00:00"
+            "time": "2021-06-12T09:42:48+00:00"
         },
         {
             "name": "symfony/css-selector",
-            "version": "v3.4.45",
+            "version": "v5.3.0",
             "source": {
                 "type": "git",
                 "url": "https://github.com/symfony/css-selector.git",
-                "reference": "9ccf6e78077a3fc1596e6c7b5958008965a11518"
+                "reference": "fcd0b29a7a0b1bb5bfbedc6231583d77fea04814"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/symfony/css-selector/zipball/9ccf6e78077a3fc1596e6c7b5958008965a11518",
-                "reference": "9ccf6e78077a3fc1596e6c7b5958008965a11518",
+                "url": "https://api.github.com/repos/symfony/css-selector/zipball/fcd0b29a7a0b1bb5bfbedc6231583d77fea04814",
+                "reference": "fcd0b29a7a0b1bb5bfbedc6231583d77fea04814",
                 "shasum": ""
             },
             "require": {
-                "php": "^5.5.9|>=7.0.8"
+                "php": ">=7.2.5"
             },
             "type": "library",
-            "extra": {
-                "branch-alias": {
-                    "dev-master": "3.4-dev"
-                }
-            },
             "autoload": {
                 "psr-4": {
                     "Symfony\\Component\\CssSelector\\": ""
@@ -5074,10 +4923,10 @@
                     "homepage": "https://symfony.com/contributors"
                 }
             ],
-            "description": "Symfony CssSelector Component",
+            "description": "Converts CSS selectors to XPath expressions",
             "homepage": "https://symfony.com",
             "support": {
-                "source": "https://github.com/symfony/css-selector/tree/v3.4.45"
+                "source": "https://github.com/symfony/css-selector/tree/v5.3.0"
             },
             "funding": [
                 {
@@ -5093,44 +4942,38 @@
                     "type": "tidelift"
                 }
             ],
-            "time": "2020-03-16T08:31:04+00:00"
+            "time": "2021-05-26T17:40:38+00:00"
         },
         {
-            "name": "symfony/debug",
-            "version": "v3.4.45",
+            "name": "symfony/deprecation-contracts",
+            "version": "v2.4.0",
             "source": {
                 "type": "git",
-                "url": "https://github.com/symfony/debug.git",
-                "reference": "9109e4414e684d0b75276ae203883467476d25d0"
+                "url": "https://github.com/symfony/deprecation-contracts.git",
+                "reference": "5f38c8804a9e97d23e0c8d63341088cd8a22d627"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/symfony/debug/zipball/9109e4414e684d0b75276ae203883467476d25d0",
-                "reference": "9109e4414e684d0b75276ae203883467476d25d0",
+                "url": "https://api.github.com/repos/symfony/deprecation-contracts/zipball/5f38c8804a9e97d23e0c8d63341088cd8a22d627",
+                "reference": "5f38c8804a9e97d23e0c8d63341088cd8a22d627",
                 "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.1"
             },
             "type": "library",
             "extra": {
                 "branch-alias": {
-                    "dev-master": "3.4-dev"
+                    "dev-main": "2.4-dev"
+                },
+                "thanks": {
+                    "name": "symfony/contracts",
+                    "url": "https://github.com/symfony/contracts"
                 }
             },
             "autoload": {
-                "psr-4": {
-                    "Symfony\\Component\\Debug\\": ""
-                },
-                "exclude-from-classmap": [
-                    "/Tests/"
+                "files": [
+                    "function.php"
                 ]
             },
             "notification-url": "https://packagist.org/downloads/",
@@ -5139,18 +4982,18 @@
             ],
             "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 Debug Component",
+            "description": "A generic function and convention to trigger deprecation notices",
             "homepage": "https://symfony.com",
             "support": {
-                "source": "https://github.com/symfony/debug/tree/3.4"
+                "source": "https://github.com/symfony/deprecation-contracts/tree/v2.4.0"
             },
             "funding": [
                 {
@@ -5166,42 +5009,53 @@
                     "type": "tidelift"
                 }
             ],
-            "time": "2020-09-08T22:19:14+00:00"
+            "time": "2021-03-23T23:28:01+00:00"
         },
         {
-            "name": "symfony/dom-crawler",
-            "version": "v3.4.45",
+            "name": "symfony/event-dispatcher",
+            "version": "v5.3.0",
             "source": {
                 "type": "git",
-                "url": "https://github.com/symfony/dom-crawler.git",
-                "reference": "82fe363780d2d2089066e34495a7f8bd56f2bf84"
+                "url": "https://github.com/symfony/event-dispatcher.git",
+                "reference": "67a5f354afa8e2f231081b3fa11a5912f933c3ce"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/symfony/dom-crawler/zipball/82fe363780d2d2089066e34495a7f8bd56f2bf84",
-                "reference": "82fe363780d2d2089066e34495a7f8bd56f2bf84",
+                "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/67a5f354afa8e2f231081b3fa11a5912f933c3ce",
+                "reference": "67a5f354afa8e2f231081b3fa11a5912f933c3ce",
                 "shasum": ""
             },
             "require": {
-                "php": "^5.5.9|>=7.0.8",
-                "symfony/polyfill-ctype": "~1.8",
-                "symfony/polyfill-mbstring": "~1.0"
+                "php": ">=7.2.5",
+                "symfony/deprecation-contracts": "^2.1",
+                "symfony/event-dispatcher-contracts": "^2",
+                "symfony/polyfill-php80": "^1.15"
+            },
+            "conflict": {
+                "symfony/dependency-injection": "<4.4"
+            },
+            "provide": {
+                "psr/event-dispatcher-implementation": "1.0",
+                "symfony/event-dispatcher-implementation": "2.0"
             },
             "require-dev": {
-                "symfony/css-selector": "~2.8|~3.0|~4.0"
+                "psr/log": "~1.0",
+                "symfony/config": "^4.4|^5.0",
+                "symfony/dependency-injection": "^4.4|^5.0",
+                "symfony/error-handler": "^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/css-selector": ""
+                "symfony/dependency-injection": "",
+                "symfony/http-kernel": ""
             },
             "type": "library",
-            "extra": {
-                "branch-alias": {
-                    "dev-master": "3.4-dev"
-                }
-            },
             "autoload": {
                 "psr-4": {
-                    "Symfony\\Component\\DomCrawler\\": ""
+                    "Symfony\\Component\\EventDispatcher\\": ""
                 },
                 "exclude-from-classmap": [
                     "/Tests/"
@@ -5221,10 +5075,10 @@
                     "homepage": "https://symfony.com/contributors"
                 }
             ],
-            "description": "Symfony DomCrawler Component",
+            "description": "Provides tools that allow your application components to communicate with each other by dispatching events and listening to them",
             "homepage": "https://symfony.com",
             "support": {
-                "source": "https://github.com/symfony/dom-crawler/tree/3.4"
+                "source": "https://github.com/symfony/event-dispatcher/tree/v5.3.0"
             },
             "funding": [
                 {
@@ -5240,49 +5094,108 @@
                     "type": "tidelift"
                 }
             ],
-            "time": "2020-09-02T16:06:40+00:00"
+            "time": "2021-05-26T17:43:10+00:00"
         },
         {
-            "name": "symfony/event-dispatcher",
-            "version": "v3.4.45",
+            "name": "symfony/event-dispatcher-contracts",
+            "version": "v2.4.0",
             "source": {
                 "type": "git",
-                "url": "https://github.com/symfony/event-dispatcher.git",
-                "reference": "0bb9ea263b39fce3a12ac9f78ef576bdd80dacb8"
+                "url": "https://github.com/symfony/event-dispatcher-contracts.git",
+                "reference": "69fee1ad2332a7cbab3aca13591953da9cdb7a11"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/0bb9ea263b39fce3a12ac9f78ef576bdd80dacb8",
-                "reference": "0bb9ea263b39fce3a12ac9f78ef576bdd80dacb8",
+                "url": "https://api.github.com/repos/symfony/event-dispatcher-contracts/zipball/69fee1ad2332a7cbab3aca13591953da9cdb7a11",
+                "reference": "69fee1ad2332a7cbab3aca13591953da9cdb7a11",
                 "shasum": ""
             },
             "require": {
-                "php": "^5.5.9|>=7.0.8"
+                "php": ">=7.2.5",
+                "psr/event-dispatcher": "^1"
             },
-            "conflict": {
-                "symfony/dependency-injection": "<3.3"
-            },
-            "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"
-            },
-            "suggest": {
-                "symfony/dependency-injection": "",
-                "symfony/http-kernel": ""
+            "suggest": {
+                "symfony/event-dispatcher-implementation": ""
             },
             "type": "library",
             "extra": {
                 "branch-alias": {
-                    "dev-master": "3.4-dev"
+                    "dev-main": "2.4-dev"
+                },
+                "thanks": {
+                    "name": "symfony/contracts",
+                    "url": "https://github.com/symfony/contracts"
                 }
             },
             "autoload": {
                 "psr-4": {
-                    "Symfony\\Component\\EventDispatcher\\": ""
+                    "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"
+            ],
+            "support": {
+                "source": "https://github.com/symfony/event-dispatcher-contracts/tree/v2.4.0"
+            },
+            "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": "2021-03-23T23:28:01+00:00"
+        },
+        {
+            "name": "symfony/finder",
+            "version": "v5.3.0",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/symfony/finder.git",
+                "reference": "0ae3f047bed4edff6fd35b26a9a6bfdc92c953c6"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/symfony/finder/zipball/0ae3f047bed4edff6fd35b26a9a6bfdc92c953c6",
+                "reference": "0ae3f047bed4edff6fd35b26a9a6bfdc92c953c6",
+                "shasum": ""
+            },
+            "require": {
+                "php": ">=7.2.5"
+            },
+            "type": "library",
+            "autoload": {
+                "psr-4": {
+                    "Symfony\\Component\\Finder\\": ""
                 },
                 "exclude-from-classmap": [
                     "/Tests/"
@@ -5302,10 +5215,10 @@
                     "homepage": "https://symfony.com/contributors"
                 }
             ],
-            "description": "Symfony EventDispatcher Component",
+            "description": "Finds files and directories via an intuitive fluent interface",
             "homepage": "https://symfony.com",
             "support": {
-                "source": "https://github.com/symfony/event-dispatcher/tree/v3.4.45"
+                "source": "https://github.com/symfony/finder/tree/v5.3.0"
             },
             "funding": [
                 {
@@ -5321,35 +5234,450 @@
                     "type": "tidelift"
                 }
             ],
-            "time": "2020-09-18T12:06:50+00:00"
+            "time": "2021-05-26T12:52:38+00:00"
         },
         {
-            "name": "symfony/finder",
-            "version": "v3.4.45",
+            "name": "symfony/polyfill-intl-grapheme",
+            "version": "v1.23.0",
             "source": {
                 "type": "git",
-                "url": "https://github.com/symfony/finder.git",
-                "reference": "52140652ed31cee3dabd0c481b5577201fa769b4"
+                "url": "https://github.com/symfony/polyfill-intl-grapheme.git",
+                "reference": "24b72c6baa32c746a4d0840147c9715e42bb68ab"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/symfony/finder/zipball/52140652ed31cee3dabd0c481b5577201fa769b4",
-                "reference": "52140652ed31cee3dabd0c481b5577201fa769b4",
+                "url": "https://api.github.com/repos/symfony/polyfill-intl-grapheme/zipball/24b72c6baa32c746a4d0840147c9715e42bb68ab",
+                "reference": "24b72c6baa32c746a4d0840147c9715e42bb68ab",
                 "shasum": ""
             },
             "require": {
-                "php": "^5.5.9|>=7.0.8"
+                "php": ">=7.1"
+            },
+            "suggest": {
+                "ext-intl": "For best performance"
             },
             "type": "library",
             "extra": {
                 "branch-alias": {
-                    "dev-master": "3.4-dev"
+                    "dev-main": "1.23-dev"
+                },
+                "thanks": {
+                    "name": "symfony/polyfill",
+                    "url": "https://github.com/symfony/polyfill"
                 }
             },
             "autoload": {
                 "psr-4": {
-                    "Symfony\\Component\\Finder\\": ""
+                    "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"
+            ],
+            "support": {
+                "source": "https://github.com/symfony/polyfill-intl-grapheme/tree/v1.23.0"
+            },
+            "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": "2021-05-27T09:17:38+00:00"
+        },
+        {
+            "name": "symfony/polyfill-intl-normalizer",
+            "version": "v1.23.0",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/symfony/polyfill-intl-normalizer.git",
+                "reference": "8590a5f561694770bdcd3f9b5c69dde6945028e8"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/symfony/polyfill-intl-normalizer/zipball/8590a5f561694770bdcd3f9b5c69dde6945028e8",
+                "reference": "8590a5f561694770bdcd3f9b5c69dde6945028e8",
+                "shasum": ""
+            },
+            "require": {
+                "php": ">=7.1"
+            },
+            "suggest": {
+                "ext-intl": "For best performance"
+            },
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-main": "1.23-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"
+            ],
+            "support": {
+                "source": "https://github.com/symfony/polyfill-intl-normalizer/tree/v1.23.0"
+            },
+            "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": "2021-02-19T12:13:01+00:00"
+        },
+        {
+            "name": "symfony/polyfill-php73",
+            "version": "v1.23.0",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/symfony/polyfill-php73.git",
+                "reference": "fba8933c384d6476ab14fb7b8526e5287ca7e010"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/symfony/polyfill-php73/zipball/fba8933c384d6476ab14fb7b8526e5287ca7e010",
+                "reference": "fba8933c384d6476ab14fb7b8526e5287ca7e010",
+                "shasum": ""
+            },
+            "require": {
+                "php": ">=7.1"
+            },
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-main": "1.23-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"
+            ],
+            "support": {
+                "source": "https://github.com/symfony/polyfill-php73/tree/v1.23.0"
+            },
+            "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": "2021-02-19T12:13:01+00:00"
+        },
+        {
+            "name": "symfony/polyfill-php80",
+            "version": "v1.23.0",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/symfony/polyfill-php80.git",
+                "reference": "eca0bf41ed421bed1b57c4958bab16aa86b757d0"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/symfony/polyfill-php80/zipball/eca0bf41ed421bed1b57c4958bab16aa86b757d0",
+                "reference": "eca0bf41ed421bed1b57c4958bab16aa86b757d0",
+                "shasum": ""
+            },
+            "require": {
+                "php": ">=7.1"
+            },
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-main": "1.23-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"
+            ],
+            "support": {
+                "source": "https://github.com/symfony/polyfill-php80/tree/v1.23.0"
+            },
+            "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": "2021-02-19T12:13:01+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"
+            ],
+            "support": {
+                "source": "https://github.com/symfony/service-contracts/tree/master"
+            },
+            "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/string",
+            "version": "v5.3.2",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/symfony/string.git",
+                "reference": "0732e97e41c0a590f77e231afc16a327375d50b0"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/symfony/string/zipball/0732e97e41c0a590f77e231afc16a327375d50b0",
+                "reference": "0732e97e41c0a590f77e231afc16a327375d50b0",
+                "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",
+            "autoload": {
+                "psr-4": {
+                    "Symfony\\Component\\String\\": ""
+                },
+                "files": [
+                    "Resources/functions.php"
+                ],
                 "exclude-from-classmap": [
                     "/Tests/"
                 ]
@@ -5360,18 +5688,26 @@
             ],
             "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 Finder Component",
+            "description": "Provides an object-oriented API to strings and deals with bytes, UTF-8 code points and grapheme clusters in a unified way",
             "homepage": "https://symfony.com",
+            "keywords": [
+                "grapheme",
+                "i18n",
+                "string",
+                "unicode",
+                "utf-8",
+                "utf8"
+            ],
             "support": {
-                "source": "https://github.com/symfony/finder/tree/v3.4.45"
+                "source": "https://github.com/symfony/string/tree/v5.3.2"
             },
             "funding": [
                 {
@@ -5387,27 +5723,27 @@
                     "type": "tidelift"
                 }
             ],
-            "time": "2020-09-02T16:06:40+00:00"
+            "time": "2021-06-06T09:51:56+00:00"
         },
         {
             "name": "theseer/tokenizer",
-            "version": "1.1.3",
+            "version": "1.2.0",
             "source": {
                 "type": "git",
                 "url": "https://github.com/theseer/tokenizer.git",
-                "reference": "11336f6f84e16a720dae9d8e6ed5019efa85a0f9"
+                "reference": "75a63c33a8577608444246075ea0af0d052e452a"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/theseer/tokenizer/zipball/11336f6f84e16a720dae9d8e6ed5019efa85a0f9",
-                "reference": "11336f6f84e16a720dae9d8e6ed5019efa85a0f9",
+                "url": "https://api.github.com/repos/theseer/tokenizer/zipball/75a63c33a8577608444246075ea0af0d052e452a",
+                "reference": "75a63c33a8577608444246075ea0af0d052e452a",
                 "shasum": ""
             },
             "require": {
                 "ext-dom": "*",
                 "ext-tokenizer": "*",
                 "ext-xmlwriter": "*",
-                "php": "^7.0"
+                "php": "^7.2 || ^8.0"
             },
             "type": "library",
             "autoload": {
@@ -5431,34 +5767,45 @@
                 "issues": "https://github.com/theseer/tokenizer/issues",
                 "source": "https://github.com/theseer/tokenizer/tree/master"
             },
-            "time": "2019-06-13T22:48:21+00:00"
+            "funding": [
+                {
+                    "url": "https://github.com/theseer",
+                    "type": "github"
+                }
+            ],
+            "time": "2020-07-12T23:59:07+00:00"
         },
         {
             "name": "webmozart/assert",
-            "version": "1.9.1",
+            "version": "1.10.0",
             "source": {
                 "type": "git",
                 "url": "https://github.com/webmozarts/assert.git",
-                "reference": "bafc69caeb4d49c39fd0779086c03a3738cbb389"
+                "reference": "6964c76c7804814a842473e0c8fd15bab0f18e25"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/webmozarts/assert/zipball/bafc69caeb4d49c39fd0779086c03a3738cbb389",
-                "reference": "bafc69caeb4d49c39fd0779086c03a3738cbb389",
+                "url": "https://api.github.com/repos/webmozarts/assert/zipball/6964c76c7804814a842473e0c8fd15bab0f18e25",
+                "reference": "6964c76c7804814a842473e0c8fd15bab0f18e25",
                 "shasum": ""
             },
             "require": {
-                "php": "^5.3.3 || ^7.0 || ^8.0",
+                "php": "^7.2 || ^8.0",
                 "symfony/polyfill-ctype": "^1.8"
             },
             "conflict": {
                 "phpstan/phpstan": "<0.12.20",
-                "vimeo/psalm": "<3.9.1"
+                "vimeo/psalm": "<4.6.1 || 4.6.2"
             },
             "require-dev": {
-                "phpunit/phpunit": "^4.8.36 || ^7.5.13"
+                "phpunit/phpunit": "^8.5.13"
             },
             "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "1.10-dev"
+                }
+            },
             "autoload": {
                 "psr-4": {
                     "Webmozart\\Assert\\": "src/"
@@ -5482,9 +5829,9 @@
             ],
             "support": {
                 "issues": "https://github.com/webmozarts/assert/issues",
-                "source": "https://github.com/webmozarts/assert/tree/1.9.1"
+                "source": "https://github.com/webmozarts/assert/tree/1.10.0"
             },
-            "time": "2020-07-08T17:02:28+00:00"
+            "time": "2021-03-09T10:59:23+00:00"
         },
         {
             "name": "woohoolabs/yang",
@@ -5563,5 +5910,5 @@
         "ext-mbstring": "*"
     },
     "platform-dev": [],
-    "plugin-api-version": "2.0.0"
+    "plugin-api-version": "2.1.0"
 }
diff --git a/tests/_support/Helper/StudipDb.php b/tests/_support/Helper/StudipDb.php
index 8d7f26304d5f897703447b2209e121b61415f274..90ad24c461fd890a638c99b322081d6b3c9cca47 100644
--- a/tests/_support/Helper/StudipDb.php
+++ b/tests/_support/Helper/StudipDb.php
@@ -5,7 +5,7 @@ namespace Helper;
 use Codeception\Exception\ModuleConfigException;
 use Codeception\Exception\ModuleException;
 
-require_once 'StudipPDO.php';
+require_once('lib/classes/StudipPDO.class.php');
 
 class StudipDb extends \Codeception\Module
 {
diff --git a/tests/_support/_generated/FunctionalTesterActions.php b/tests/_support/_generated/FunctionalTesterActions.php
index 8257a4e417e5021f13a2f2ed2dd49f7f3f72e059..b10769a2af897c01fafd70bd9992d016cda82abd 100644
--- a/tests/_support/_generated/FunctionalTesterActions.php
+++ b/tests/_support/_generated/FunctionalTesterActions.php
@@ -1,4 +1,4 @@
-<?php  //[STAMP] 6e8eab5089e8fcc600b23f9a78b89b9c
+<?php  //[STAMP] 9862bb9e5ebf65fc43909feeee411c2a
 namespace _generated;
 
 // This class was automatically generated by build task
diff --git a/tests/_support/_generated/JsonapiTesterActions.php b/tests/_support/_generated/JsonapiTesterActions.php
index cb4f492c3e28274ffad27a46a163c6f093db5ada..e4f4bde5a6d525277a2fb121afcdbee1cc83967c 100644
--- a/tests/_support/_generated/JsonapiTesterActions.php
+++ b/tests/_support/_generated/JsonapiTesterActions.php
@@ -1,4 +1,4 @@
-<?php  //[STAMP] 686e44487f85339db9d6c30356fecf96
+<?php  //[STAMP] bc9d12565d6304b308d375b50b9e8556
 namespace _generated;
 
 // This class was automatically generated by build task
@@ -39,8 +39,8 @@ trait JsonapiTesterActions
      * ```
      *
      * @deprecated Use expectThrowable() instead
-     * @param $exception string or \Exception
-     * @param $callback
+     * @param \Exception|string $exception
+     * @param callable $callback
      * @see \Codeception\Module\Asserts::expectException()
      */
     public function expectException($exception, $callback) {
@@ -73,8 +73,8 @@ trait JsonapiTesterActions
      * });
      * ```
      *
-     * @param $throwable string or \Throwable
-     * @param $callback
+     * @param \Throwable|string $throwable
+     * @param callable $callback
      * @see \Codeception\Module\Asserts::expectThrowable()
      */
     public function expectThrowable($throwable, $callback) {
@@ -85,547 +85,1563 @@ trait JsonapiTesterActions
     /**
      * [!] Method is generated. Documentation taken from corresponding module.
      *
-     * Checks that two variables are equal.
+     * Asserts that a file does not exist.
      *
-     * @param        $expected
-     * @param        $actual
+     * @param string $filename
+     * @param string $message
+     * @see \Codeception\Module\AbstractAsserts::assertFileNotExists()
+     */
+    public function assertFileNotExists($filename, $message = "") {
+        return $this->getScenario()->runStep(new \Codeception\Step\Action('assertFileNotExists', func_get_args()));
+    }
+
+ 
+    /**
+     * [!] Method is generated. Documentation taken from corresponding module.
+     *
+     * Asserts that a value is greater than or equal to another value.
+     *
+     * @param $expected
+     * @param $actual
+     * @param string $message
+     * @see \Codeception\Module\AbstractAsserts::assertGreaterOrEquals()
+     */
+    public function assertGreaterOrEquals($expected, $actual, $message = "") {
+        return $this->getScenario()->runStep(new \Codeception\Step\Action('assertGreaterOrEquals', func_get_args()));
+    }
+
+ 
+    /**
+     * [!] Method is generated. Documentation taken from corresponding module.
+     *
+     * Asserts that a variable is empty.
+     *
+     * @param $actual
+     * @param string $message
+     * @see \Codeception\Module\AbstractAsserts::assertIsEmpty()
+     */
+    public function assertIsEmpty($actual, $message = "") {
+        return $this->getScenario()->runStep(new \Codeception\Step\Action('assertIsEmpty', func_get_args()));
+    }
+
+ 
+    /**
+     * [!] Method is generated. Documentation taken from corresponding module.
+     *
+     * Asserts that a value is smaller than or equal to another value.
+     *
+     * @param $expected
+     * @param $actual
+     * @param string $message
+     * @see \Codeception\Module\AbstractAsserts::assertLessOrEquals()
+     */
+    public function assertLessOrEquals($expected, $actual, $message = "") {
+        return $this->getScenario()->runStep(new \Codeception\Step\Action('assertLessOrEquals', func_get_args()));
+    }
+
+ 
+    /**
+     * [!] Method is generated. Documentation taken from corresponding module.
+     *
+     * Asserts that a string does not match a given regular expression.
+     *
+     * @param string $pattern
+     * @param string $string
+     * @param string $message
+     * @see \Codeception\Module\AbstractAsserts::assertNotRegExp()
+     */
+    public function assertNotRegExp($pattern, $string, $message = "") {
+        return $this->getScenario()->runStep(new \Codeception\Step\Action('assertNotRegExp', func_get_args()));
+    }
+
+ 
+    /**
+     * [!] Method is generated. Documentation taken from corresponding module.
+     *
+     * Asserts that a string matches a given regular expression.
+     *
+     * @param string $pattern
+     * @param string $string
+     * @param string $message
+     * @see \Codeception\Module\AbstractAsserts::assertRegExp()
+     */
+    public function assertRegExp($pattern, $string, $message = "") {
+        return $this->getScenario()->runStep(new \Codeception\Step\Action('assertRegExp', func_get_args()));
+    }
+
+ 
+    /**
+     * [!] Method is generated. Documentation taken from corresponding module.
+     *
+     * Evaluates a PHPUnit\Framework\Constraint matcher object.
+     *
+     * @param $value
+     * @param Constraint $constraint
+     * @param string $message
+     * @see \Codeception\Module\AbstractAsserts::assertThatItsNot()
+     */
+    public function assertThatItsNot($value, $constraint, $message = "") {
+        return $this->getScenario()->runStep(new \Codeception\Step\Action('assertThatItsNot', func_get_args()));
+    }
+
+ 
+    /**
+     * [!] Method is generated. Documentation taken from corresponding module.
+     *
+     * Asserts that an array has a specified key.
+     *
+     * @param int|string $key
+     * @param array|ArrayAccess $array
+     * @param string $message
+     * @see \Codeception\Module\AbstractAsserts::assertArrayHasKey()
+     */
+    public function assertArrayHasKey($key, $array, $message = "") {
+        return $this->getScenario()->runStep(new \Codeception\Step\Action('assertArrayHasKey', func_get_args()));
+    }
+
+ 
+    /**
+     * [!] Method is generated. Documentation taken from corresponding module.
+     *
+     * Asserts that an array does not have a specified key.
+     *
+     * @param int|string $key
+     * @param array|ArrayAccess $array
+     * @param string $message
+     * @see \Codeception\Module\AbstractAsserts::assertArrayNotHasKey()
+     */
+    public function assertArrayNotHasKey($key, $array, $message = "") {
+        return $this->getScenario()->runStep(new \Codeception\Step\Action('assertArrayNotHasKey', func_get_args()));
+    }
+
+ 
+    /**
+     * [!] Method is generated. Documentation taken from corresponding module.
+     *
+     * Asserts that a class has a specified attribute.
+     *
+     * @param string $attributeName
+     * @param string $className
+     * @param string $message
+     * @see \Codeception\Module\AbstractAsserts::assertClassHasAttribute()
+     */
+    public function assertClassHasAttribute($attributeName, $className, $message = "") {
+        return $this->getScenario()->runStep(new \Codeception\Step\Action('assertClassHasAttribute', func_get_args()));
+    }
+
+ 
+    /**
+     * [!] Method is generated. Documentation taken from corresponding module.
+     *
+     * Asserts that a class has a specified static attribute.
+     *
+     * @param string $attributeName
+     * @param string $className
+     * @param string $message
+     * @see \Codeception\Module\AbstractAsserts::assertClassHasStaticAttribute()
+     */
+    public function assertClassHasStaticAttribute($attributeName, $className, $message = "") {
+        return $this->getScenario()->runStep(new \Codeception\Step\Action('assertClassHasStaticAttribute', func_get_args()));
+    }
+
+ 
+    /**
+     * [!] Method is generated. Documentation taken from corresponding module.
+     *
+     * Asserts that a class does not have a specified attribute.
+     *
+     * @param string $attributeName
+     * @param string $className
+     * @param string $message
+     * @see \Codeception\Module\AbstractAsserts::assertClassNotHasAttribute()
+     */
+    public function assertClassNotHasAttribute($attributeName, $className, $message = "") {
+        return $this->getScenario()->runStep(new \Codeception\Step\Action('assertClassNotHasAttribute', func_get_args()));
+    }
+
+ 
+    /**
+     * [!] Method is generated. Documentation taken from corresponding module.
+     *
+     * Asserts that a class does not have a specified static attribute.
+     *
+     * @param string $attributeName
+     * @param string $className
+     * @param string $message
+     * @see \Codeception\Module\AbstractAsserts::assertClassNotHasStaticAttribute()
+     */
+    public function assertClassNotHasStaticAttribute($attributeName, $className, $message = "") {
+        return $this->getScenario()->runStep(new \Codeception\Step\Action('assertClassNotHasStaticAttribute', func_get_args()));
+    }
+
+ 
+    /**
+     * [!] Method is generated. Documentation taken from corresponding module.
+     *
+     * Asserts that a haystack contains a needle.
+     *
+     * @param $needle
+     * @param $haystack
+     * @param string $message
+     * @see \Codeception\Module\AbstractAsserts::assertContains()
+     */
+    public function assertContains($needle, $haystack, $message = "") {
+        return $this->getScenario()->runStep(new \Codeception\Step\Action('assertContains', func_get_args()));
+    }
+
+ 
+    /**
+     * [!] Method is generated. Documentation taken from corresponding module.
+     *
+     * @param $needle
+     * @param $haystack
+     * @param string $message
+     * @see \Codeception\Module\AbstractAsserts::assertContainsEquals()
+     */
+    public function assertContainsEquals($needle, $haystack, $message = "") {
+        return $this->getScenario()->runStep(new \Codeception\Step\Action('assertContainsEquals', func_get_args()));
+    }
+
+ 
+    /**
+     * [!] Method is generated. Documentation taken from corresponding module.
+     *
+     * Asserts that a haystack contains only values of a given type.
+     *
+     * @param string $type
+     * @param $haystack
+     * @param bool|null $isNativeType
+     * @param string $message
+     * @see \Codeception\Module\AbstractAsserts::assertContainsOnly()
+     */
+    public function assertContainsOnly($type, $haystack, $isNativeType = NULL, $message = "") {
+        return $this->getScenario()->runStep(new \Codeception\Step\Action('assertContainsOnly', func_get_args()));
+    }
+
+ 
+    /**
+     * [!] Method is generated. Documentation taken from corresponding module.
+     *
+     * Asserts that a haystack contains only instances of a given class name.
+     *
+     * @param string $className
+     * @param $haystack
+     * @param string $message
+     * @see \Codeception\Module\AbstractAsserts::assertContainsOnlyInstancesOf()
+     */
+    public function assertContainsOnlyInstancesOf($className, $haystack, $message = "") {
+        return $this->getScenario()->runStep(new \Codeception\Step\Action('assertContainsOnlyInstancesOf', func_get_args()));
+    }
+
+ 
+    /**
+     * [!] Method is generated. Documentation taken from corresponding module.
+     *
+     * Asserts the number of elements of an array, Countable or Traversable.
+     *
+     * @param int $expectedCount
+     * @param Countable|iterable $haystack
+     * @param string $message
+     * @see \Codeception\Module\AbstractAsserts::assertCount()
+     */
+    public function assertCount($expectedCount, $haystack, $message = "") {
+        return $this->getScenario()->runStep(new \Codeception\Step\Action('assertCount', func_get_args()));
+    }
+
+ 
+    /**
+     * [!] Method is generated. Documentation taken from corresponding module.
+     *
+     * Asserts that a directory does not exist.
+     *
+     * @param string $directory
+     * @param string $message
+     * @see \Codeception\Module\AbstractAsserts::assertDirectoryDoesNotExist()
+     */
+    public function assertDirectoryDoesNotExist($directory, $message = "") {
+        return $this->getScenario()->runStep(new \Codeception\Step\Action('assertDirectoryDoesNotExist', func_get_args()));
+    }
+
+ 
+    /**
+     * [!] Method is generated. Documentation taken from corresponding module.
+     *
+     * Asserts that a directory exists.
+     *
+     * @param string $directory
+     * @param string $message
+     * @see \Codeception\Module\AbstractAsserts::assertDirectoryExists()
+     */
+    public function assertDirectoryExists($directory, $message = "") {
+        return $this->getScenario()->runStep(new \Codeception\Step\Action('assertDirectoryExists', func_get_args()));
+    }
+
+ 
+    /**
+     * [!] Method is generated. Documentation taken from corresponding module.
+     *
+     * Asserts that a directory exists and is not readable.
+     *
+     * @param string $directory
+     * @param string $message
+     * @see \Codeception\Module\AbstractAsserts::assertDirectoryIsNotReadable()
+     */
+    public function assertDirectoryIsNotReadable($directory, $message = "") {
+        return $this->getScenario()->runStep(new \Codeception\Step\Action('assertDirectoryIsNotReadable', func_get_args()));
+    }
+
+ 
+    /**
+     * [!] Method is generated. Documentation taken from corresponding module.
+     *
+     * Asserts that a directory exists and is not writable.
+     *
+     * @param string $directory
+     * @param string $message
+     * @see \Codeception\Module\AbstractAsserts::assertDirectoryIsNotWritable()
+     */
+    public function assertDirectoryIsNotWritable($directory, $message = "") {
+        return $this->getScenario()->runStep(new \Codeception\Step\Action('assertDirectoryIsNotWritable', func_get_args()));
+    }
+
+ 
+    /**
+     * [!] Method is generated. Documentation taken from corresponding module.
+     *
+     * Asserts that a directory exists and is readable.
+     *
+     * @param string $directory
+     * @param string $message
+     * @see \Codeception\Module\AbstractAsserts::assertDirectoryIsReadable()
+     */
+    public function assertDirectoryIsReadable($directory, $message = "") {
+        return $this->getScenario()->runStep(new \Codeception\Step\Action('assertDirectoryIsReadable', func_get_args()));
+    }
+
+ 
+    /**
+     * [!] Method is generated. Documentation taken from corresponding module.
+     *
+     * Asserts that a directory exists and is writable.
+     *
+     * @param string $directory
+     * @param string $message
+     * @see \Codeception\Module\AbstractAsserts::assertDirectoryIsWritable()
+     */
+    public function assertDirectoryIsWritable($directory, $message = "") {
+        return $this->getScenario()->runStep(new \Codeception\Step\Action('assertDirectoryIsWritable', func_get_args()));
+    }
+
+ 
+    /**
+     * [!] Method is generated. Documentation taken from corresponding module.
+     *
+     * Asserts that a string does not match a given regular expression.
+     *
+     * @param string $pattern
+     * @param string $string
+     * @param string $message
+     * @see \Codeception\Module\AbstractAsserts::assertDoesNotMatchRegularExpression()
+     */
+    public function assertDoesNotMatchRegularExpression($pattern, $string, $message = "") {
+        return $this->getScenario()->runStep(new \Codeception\Step\Action('assertDoesNotMatchRegularExpression', func_get_args()));
+    }
+
+ 
+    /**
+     * [!] Method is generated. Documentation taken from corresponding module.
+     *
+     * Asserts that a variable is empty.
+     *
+     * @param $actual
+     * @param string $message
+     * @see \Codeception\Module\AbstractAsserts::assertEmpty()
+     */
+    public function assertEmpty($actual, $message = "") {
+        return $this->getScenario()->runStep(new \Codeception\Step\Action('assertEmpty', func_get_args()));
+    }
+
+ 
+    /**
+     * [!] Method is generated. Documentation taken from corresponding module.
+     *
+     * Asserts that two variables are equal.
+     *
+     * @param $expected
+     * @param $actual
+     * @param string $message
+     * @see \Codeception\Module\AbstractAsserts::assertEquals()
+     */
+    public function assertEquals($expected, $actual, $message = "") {
+        return $this->getScenario()->runStep(new \Codeception\Step\Action('assertEquals', func_get_args()));
+    }
+
+ 
+    /**
+     * [!] Method is generated. Documentation taken from corresponding module.
+     *
+     * Asserts that two variables are equal (canonicalizing).
+     *
+     * @param $expected
+     * @param $actual
+     * @param string $message
+     * @see \Codeception\Module\AbstractAsserts::assertEqualsCanonicalizing()
+     */
+    public function assertEqualsCanonicalizing($expected, $actual, $message = "") {
+        return $this->getScenario()->runStep(new \Codeception\Step\Action('assertEqualsCanonicalizing', func_get_args()));
+    }
+
+ 
+    /**
+     * [!] Method is generated. Documentation taken from corresponding module.
+     *
+     * Asserts that two variables are equal (ignoring case).
+     *
+     * @param $expected
+     * @param $actual
+     * @param string $message
+     * @see \Codeception\Module\AbstractAsserts::assertEqualsIgnoringCase()
+     */
+    public function assertEqualsIgnoringCase($expected, $actual, $message = "") {
+        return $this->getScenario()->runStep(new \Codeception\Step\Action('assertEqualsIgnoringCase', func_get_args()));
+    }
+
+ 
+    /**
+     * [!] Method is generated. Documentation taken from corresponding module.
+     *
+     * Asserts that two variables are equal (with delta).
+     *
+     * @param $expected
+     * @param $actual
+     * @param float $delta
+     * @param string $message
+     * @see \Codeception\Module\AbstractAsserts::assertEqualsWithDelta()
+     */
+    public function assertEqualsWithDelta($expected, $actual, $delta, $message = "") {
+        return $this->getScenario()->runStep(new \Codeception\Step\Action('assertEqualsWithDelta', func_get_args()));
+    }
+
+ 
+    /**
+     * [!] Method is generated. Documentation taken from corresponding module.
+     *
+     * Asserts that a condition is false.
+     *
+     * @param $condition
+     * @param string $message
+     * @see \Codeception\Module\AbstractAsserts::assertFalse()
+     */
+    public function assertFalse($condition, $message = "") {
+        return $this->getScenario()->runStep(new \Codeception\Step\Action('assertFalse', func_get_args()));
+    }
+
+ 
+    /**
+     * [!] Method is generated. Documentation taken from corresponding module.
+     *
+     * Asserts that a file does not exist.
+     *
+     * @param string $filename
+     * @param string $message
+     * @see \Codeception\Module\AbstractAsserts::assertFileDoesNotExist()
+     */
+    public function assertFileDoesNotExist($filename, $message = "") {
+        return $this->getScenario()->runStep(new \Codeception\Step\Action('assertFileDoesNotExist', func_get_args()));
+    }
+
+ 
+    /**
+     * [!] Method is generated. Documentation taken from corresponding module.
+     *
+     * Asserts that the contents of one file is equal to the contents of another file.
+     *
+     * @param string $expected
+     * @param string $actual
+     * @param string $message
+     * @see \Codeception\Module\AbstractAsserts::assertFileEquals()
+     */
+    public function assertFileEquals($expected, $actual, $message = "") {
+        return $this->getScenario()->runStep(new \Codeception\Step\Action('assertFileEquals', func_get_args()));
+    }
+
+ 
+    /**
+     * [!] Method is generated. Documentation taken from corresponding module.
+     *
+     * Asserts that the contents of one file is equal to the contents of another file (canonicalizing).
+     *
+     * @param $expected
+     * @param $actual
+     * @param string $message
+     * @see \Codeception\Module\AbstractAsserts::assertFileEqualsCanonicalizing()
+     */
+    public function assertFileEqualsCanonicalizing($expected, $actual, $message = "") {
+        return $this->getScenario()->runStep(new \Codeception\Step\Action('assertFileEqualsCanonicalizing', func_get_args()));
+    }
+
+ 
+    /**
+     * [!] Method is generated. Documentation taken from corresponding module.
+     *
+     * Asserts that the contents of one file is equal to the contents of another file (ignoring case).
+     *
+     * @param $expected
+     * @param $actual
+     * @param string $message
+     * @see \Codeception\Module\AbstractAsserts::assertFileEqualsIgnoringCase()
+     */
+    public function assertFileEqualsIgnoringCase($expected, $actual, $message = "") {
+        return $this->getScenario()->runStep(new \Codeception\Step\Action('assertFileEqualsIgnoringCase', func_get_args()));
+    }
+
+ 
+    /**
+     * [!] Method is generated. Documentation taken from corresponding module.
+     *
+     * Asserts that a file exists.
+     *
+     * @param string $filename
+     * @param string $message
+     * @see \Codeception\Module\AbstractAsserts::assertFileExists()
+     */
+    public function assertFileExists($filename, $message = "") {
+        return $this->getScenario()->runStep(new \Codeception\Step\Action('assertFileExists', func_get_args()));
+    }
+
+ 
+    /**
+     * [!] Method is generated. Documentation taken from corresponding module.
+     *
+     * Asserts that a file exists and is not readable.
+     *
+     * @param string $file
+     * @param string $message
+     * @see \Codeception\Module\AbstractAsserts::assertFileIsNotReadable()
+     */
+    public function assertFileIsNotReadable($file, $message = "") {
+        return $this->getScenario()->runStep(new \Codeception\Step\Action('assertFileIsNotReadable', func_get_args()));
+    }
+
+ 
+    /**
+     * [!] Method is generated. Documentation taken from corresponding module.
+     *
+     * Asserts that a file exists and is not writable.
+     *
+     * @param string $file
+     * @param string $message
+     * @see \Codeception\Module\AbstractAsserts::assertFileIsNotWritable()
+     */
+    public function assertFileIsNotWritable($file, $message = "") {
+        return $this->getScenario()->runStep(new \Codeception\Step\Action('assertFileIsNotWritable', func_get_args()));
+    }
+
+ 
+    /**
+     * [!] Method is generated. Documentation taken from corresponding module.
+     *
+     * Asserts that a file exists and is readable.
+     *
+     * @param string $file
+     * @param string $message
+     * @see \Codeception\Module\AbstractAsserts::assertFileIsReadable()
+     */
+    public function assertFileIsReadable($file, $message = "") {
+        return $this->getScenario()->runStep(new \Codeception\Step\Action('assertFileIsReadable', func_get_args()));
+    }
+
+ 
+    /**
+     * [!] Method is generated. Documentation taken from corresponding module.
+     *
+     * Asserts that a file exists and is writable.
+     *
+     * @param string $file
+     * @param string $message
+     * @see \Codeception\Module\AbstractAsserts::assertFileIsWritable()
+     */
+    public function assertFileIsWritable($file, $message = "") {
+        return $this->getScenario()->runStep(new \Codeception\Step\Action('assertFileIsWritable', func_get_args()));
+    }
+
+ 
+    /**
+     * [!] Method is generated. Documentation taken from corresponding module.
+     *
+     * Asserts that the contents of one file is not equal to the contents of another file.
+     *
+     * @param $expected
+     * @param $actual
+     * @param string $message
+     * @see \Codeception\Module\AbstractAsserts::assertFileNotEquals()
+     */
+    public function assertFileNotEquals($expected, $actual, $message = "") {
+        return $this->getScenario()->runStep(new \Codeception\Step\Action('assertFileNotEquals', func_get_args()));
+    }
+
+ 
+    /**
+     * [!] Method is generated. Documentation taken from corresponding module.
+     *
+     * Asserts that the contents of one file is not equal to the contents of another file (canonicalizing).
+     *
+     * @param $expected
+     * @param $actual
+     * @param string $message
+     * @see \Codeception\Module\AbstractAsserts::assertFileNotEqualsCanonicalizing()
+     */
+    public function assertFileNotEqualsCanonicalizing($expected, $actual, $message = "") {
+        return $this->getScenario()->runStep(new \Codeception\Step\Action('assertFileNotEqualsCanonicalizing', func_get_args()));
+    }
+
+ 
+    /**
+     * [!] Method is generated. Documentation taken from corresponding module.
+     *
+     * Asserts that the contents of one file is not equal to the contents of another file (ignoring case).
+     *
+     * @param $expected
+     * @param $actual
+     * @param string $message
+     * @see \Codeception\Module\AbstractAsserts::assertFileNotEqualsIgnoringCase()
+     */
+    public function assertFileNotEqualsIgnoringCase($expected, $actual, $message = "") {
+        return $this->getScenario()->runStep(new \Codeception\Step\Action('assertFileNotEqualsIgnoringCase', func_get_args()));
+    }
+
+ 
+    /**
+     * [!] Method is generated. Documentation taken from corresponding module.
+     *
+     * Asserts that a variable is finite.
+     *
+     * @param $actual
+     * @param string $message
+     * @see \Codeception\Module\AbstractAsserts::assertFinite()
+     */
+    public function assertFinite($actual, $message = "") {
+        return $this->getScenario()->runStep(new \Codeception\Step\Action('assertFinite', func_get_args()));
+    }
+
+ 
+    /**
+     * [!] Method is generated. Documentation taken from corresponding module.
+     *
+     * Asserts that a value is greater than another value.
+     *
+     * @param $expected
+     * @param $actual
+     * @param string $message
+     * @see \Codeception\Module\AbstractAsserts::assertGreaterThan()
+     */
+    public function assertGreaterThan($expected, $actual, $message = "") {
+        return $this->getScenario()->runStep(new \Codeception\Step\Action('assertGreaterThan', func_get_args()));
+    }
+
+ 
+    /**
+     * [!] Method is generated. Documentation taken from corresponding module.
+     *
+     * Asserts that a value is greater than or equal to another value.
+     *
+     * @param $expected
+     * @param $actual
+     * @param string $message
+     * @see \Codeception\Module\AbstractAsserts::assertGreaterThanOrEqual()
+     */
+    public function assertGreaterThanOrEqual($expected, $actual, $message = "") {
+        return $this->getScenario()->runStep(new \Codeception\Step\Action('assertGreaterThanOrEqual', func_get_args()));
+    }
+
+ 
+    /**
+     * [!] Method is generated. Documentation taken from corresponding module.
+     *
+     * Asserts that a variable is infinite.
+     *
+     * @param $actual
+     * @param string $message
+     * @see \Codeception\Module\AbstractAsserts::assertInfinite()
+     */
+    public function assertInfinite($actual, $message = "") {
+        return $this->getScenario()->runStep(new \Codeception\Step\Action('assertInfinite', func_get_args()));
+    }
+
+ 
+    /**
+     * [!] Method is generated. Documentation taken from corresponding module.
+     *
+     * Asserts that a variable is of a given type.
+     *
+     * @param $expected
+     * @param $actual
+     * @param string $message
+     * @see \Codeception\Module\AbstractAsserts::assertInstanceOf()
+     */
+    public function assertInstanceOf($expected, $actual, $message = "") {
+        return $this->getScenario()->runStep(new \Codeception\Step\Action('assertInstanceOf', func_get_args()));
+    }
+
+ 
+    /**
+     * [!] Method is generated. Documentation taken from corresponding module.
+     *
+     * Asserts that a variable is of type array.
+     *
+     * @param $actual
+     * @param string $message
+     * @see \Codeception\Module\AbstractAsserts::assertIsArray()
+     */
+    public function assertIsArray($actual, $message = "") {
+        return $this->getScenario()->runStep(new \Codeception\Step\Action('assertIsArray', func_get_args()));
+    }
+
+ 
+    /**
+     * [!] Method is generated. Documentation taken from corresponding module.
+     *
+     * Asserts that a variable is of type bool.
+     *
+     * @param $actual
+     * @param string $message
+     * @see \Codeception\Module\AbstractAsserts::assertIsBool()
+     */
+    public function assertIsBool($actual, $message = "") {
+        return $this->getScenario()->runStep(new \Codeception\Step\Action('assertIsBool', func_get_args()));
+    }
+
+ 
+    /**
+     * [!] Method is generated. Documentation taken from corresponding module.
+     *
+     * Asserts that a variable is of type callable.
+     *
+     * @param $actual
+     * @param string $message
+     * @see \Codeception\Module\AbstractAsserts::assertIsCallable()
+     */
+    public function assertIsCallable($actual, $message = "") {
+        return $this->getScenario()->runStep(new \Codeception\Step\Action('assertIsCallable', func_get_args()));
+    }
+
+ 
+    /**
+     * [!] Method is generated. Documentation taken from corresponding module.
+     *
+     * Asserts that a variable is of type resource and is closed.
+     *
+     * @param $actual
+     * @param string $message
+     * @see \Codeception\Module\AbstractAsserts::assertIsClosedResource()
+     */
+    public function assertIsClosedResource($actual, $message = "") {
+        return $this->getScenario()->runStep(new \Codeception\Step\Action('assertIsClosedResource', func_get_args()));
+    }
+
+ 
+    /**
+     * [!] Method is generated. Documentation taken from corresponding module.
+     *
+     * Asserts that a variable is of type float.
+     *
+     * @param $actual
+     * @param string $message
+     * @see \Codeception\Module\AbstractAsserts::assertIsFloat()
+     */
+    public function assertIsFloat($actual, $message = "") {
+        return $this->getScenario()->runStep(new \Codeception\Step\Action('assertIsFloat', func_get_args()));
+    }
+
+ 
+    /**
+     * [!] Method is generated. Documentation taken from corresponding module.
+     *
+     * Asserts that a variable is of type int.
+     *
+     * @param $actual
+     * @param string $message
+     * @see \Codeception\Module\AbstractAsserts::assertIsInt()
+     */
+    public function assertIsInt($actual, $message = "") {
+        return $this->getScenario()->runStep(new \Codeception\Step\Action('assertIsInt', func_get_args()));
+    }
+
+ 
+    /**
+     * [!] Method is generated. Documentation taken from corresponding module.
+     *
+     * Asserts that a variable is of type iterable.
+     *
+     * @param $actual
+     * @param string $message
+     * @see \Codeception\Module\AbstractAsserts::assertIsIterable()
+     */
+    public function assertIsIterable($actual, $message = "") {
+        return $this->getScenario()->runStep(new \Codeception\Step\Action('assertIsIterable', func_get_args()));
+    }
+
+ 
+    /**
+     * [!] Method is generated. Documentation taken from corresponding module.
+     *
+     * Asserts that a variable is not of type array.
+     *
+     * @param $actual
+     * @param string $message
+     * @see \Codeception\Module\AbstractAsserts::assertIsNotArray()
+     */
+    public function assertIsNotArray($actual, $message = "") {
+        return $this->getScenario()->runStep(new \Codeception\Step\Action('assertIsNotArray', func_get_args()));
+    }
+
+ 
+    /**
+     * [!] Method is generated. Documentation taken from corresponding module.
+     *
+     * Asserts that a variable is not of type bool.
+     *
+     * @param $actual
+     * @param string $message
+     * @see \Codeception\Module\AbstractAsserts::assertIsNotBool()
+     */
+    public function assertIsNotBool($actual, $message = "") {
+        return $this->getScenario()->runStep(new \Codeception\Step\Action('assertIsNotBool', func_get_args()));
+    }
+
+ 
+    /**
+     * [!] Method is generated. Documentation taken from corresponding module.
+     *
+     * Asserts that a variable is not of type callable.
+     *
+     * @param $actual
+     * @param string $message
+     * @see \Codeception\Module\AbstractAsserts::assertIsNotCallable()
+     */
+    public function assertIsNotCallable($actual, $message = "") {
+        return $this->getScenario()->runStep(new \Codeception\Step\Action('assertIsNotCallable', func_get_args()));
+    }
+
+ 
+    /**
+     * [!] Method is generated. Documentation taken from corresponding module.
+     *
+     * Asserts that a variable is not of type resource.
+     *
+     * @param $actual
+     * @param string $message
+     * @see \Codeception\Module\AbstractAsserts::assertIsNotClosedResource()
+     */
+    public function assertIsNotClosedResource($actual, $message = "") {
+        return $this->getScenario()->runStep(new \Codeception\Step\Action('assertIsNotClosedResource', func_get_args()));
+    }
+
+ 
+    /**
+     * [!] Method is generated. Documentation taken from corresponding module.
+     *
+     * Asserts that a variable is not of type float.
+     *
+     * @param $actual
+     * @param string $message
+     * @see \Codeception\Module\AbstractAsserts::assertIsNotFloat()
+     */
+    public function assertIsNotFloat($actual, $message = "") {
+        return $this->getScenario()->runStep(new \Codeception\Step\Action('assertIsNotFloat', func_get_args()));
+    }
+
+ 
+    /**
+     * [!] Method is generated. Documentation taken from corresponding module.
+     *
+     * Asserts that a variable is not of type int.
+     *
+     * @param $actual
+     * @param string $message
+     * @see \Codeception\Module\AbstractAsserts::assertIsNotInt()
+     */
+    public function assertIsNotInt($actual, $message = "") {
+        return $this->getScenario()->runStep(new \Codeception\Step\Action('assertIsNotInt', func_get_args()));
+    }
+
+ 
+    /**
+     * [!] Method is generated. Documentation taken from corresponding module.
+     *
+     * Asserts that a variable is not of type iterable.
+     *
+     * @param $actual
+     * @param string $message
+     * @see \Codeception\Module\AbstractAsserts::assertIsNotIterable()
+     */
+    public function assertIsNotIterable($actual, $message = "") {
+        return $this->getScenario()->runStep(new \Codeception\Step\Action('assertIsNotIterable', func_get_args()));
+    }
+
+ 
+    /**
+     * [!] Method is generated. Documentation taken from corresponding module.
+     *
+     * Asserts that a variable is not of type numeric.
+     *
+     * @param $actual
+     * @param string $message
+     * @see \Codeception\Module\AbstractAsserts::assertIsNotNumeric()
+     */
+    public function assertIsNotNumeric($actual, $message = "") {
+        return $this->getScenario()->runStep(new \Codeception\Step\Action('assertIsNotNumeric', func_get_args()));
+    }
+
+ 
+    /**
+     * [!] Method is generated. Documentation taken from corresponding module.
+     *
+     * Asserts that a variable is not of type object.
+     *
+     * @param $actual
      * @param string $message
-     * @param float  $delta
-     * @see \Codeception\Module\Asserts::assertEquals()
+     * @see \Codeception\Module\AbstractAsserts::assertIsNotObject()
      */
-    public function assertEquals($expected, $actual, $message = null, $delta = null) {
-        return $this->getScenario()->runStep(new \Codeception\Step\Action('assertEquals', func_get_args()));
+    public function assertIsNotObject($actual, $message = "") {
+        return $this->getScenario()->runStep(new \Codeception\Step\Action('assertIsNotObject', func_get_args()));
     }
 
  
     /**
      * [!] Method is generated. Documentation taken from corresponding module.
      *
-     * Checks that two variables are not equal
+     * Asserts that a file/dir exists and is not readable.
      *
-     * @param        $expected
-     * @param        $actual
+     * @param string $filename
      * @param string $message
-     * @param float  $delta
-     * @see \Codeception\Module\Asserts::assertNotEquals()
+     * @see \Codeception\Module\AbstractAsserts::assertIsNotReadable()
      */
-    public function assertNotEquals($expected, $actual, $message = null, $delta = null) {
-        return $this->getScenario()->runStep(new \Codeception\Step\Action('assertNotEquals', func_get_args()));
+    public function assertIsNotReadable($filename, $message = "") {
+        return $this->getScenario()->runStep(new \Codeception\Step\Action('assertIsNotReadable', func_get_args()));
     }
 
  
     /**
      * [!] Method is generated. Documentation taken from corresponding module.
      *
-     * Checks that two variables are same
+     * Asserts that a variable is not of type resource.
      *
-     * @param        $expected
-     * @param        $actual
+     * @param $actual
      * @param string $message
-     * @see \Codeception\Module\Asserts::assertSame()
+     * @see \Codeception\Module\AbstractAsserts::assertIsNotResource()
      */
-    public function assertSame($expected, $actual, $message = null) {
-        return $this->getScenario()->runStep(new \Codeception\Step\Action('assertSame', func_get_args()));
+    public function assertIsNotResource($actual, $message = "") {
+        return $this->getScenario()->runStep(new \Codeception\Step\Action('assertIsNotResource', func_get_args()));
     }
 
  
     /**
      * [!] Method is generated. Documentation taken from corresponding module.
      *
-     * Checks that two variables are not same
+     * Asserts that a variable is not of type scalar.
      *
-     * @param        $expected
-     * @param        $actual
+     * @param $actual
      * @param string $message
-     * @see \Codeception\Module\Asserts::assertNotSame()
+     * @see \Codeception\Module\AbstractAsserts::assertIsNotScalar()
      */
-    public function assertNotSame($expected, $actual, $message = null) {
-        return $this->getScenario()->runStep(new \Codeception\Step\Action('assertNotSame', func_get_args()));
+    public function assertIsNotScalar($actual, $message = "") {
+        return $this->getScenario()->runStep(new \Codeception\Step\Action('assertIsNotScalar', func_get_args()));
     }
 
  
     /**
      * [!] Method is generated. Documentation taken from corresponding module.
      *
-     * Checks that actual is greater than expected
+     * Asserts that a variable is not of type string.
      *
-     * @param        $expected
-     * @param        $actual
+     * @param $actual
      * @param string $message
-     * @see \Codeception\Module\Asserts::assertGreaterThan()
+     * @see \Codeception\Module\AbstractAsserts::assertIsNotString()
      */
-    public function assertGreaterThan($expected, $actual, $message = null) {
-        return $this->getScenario()->runStep(new \Codeception\Step\Action('assertGreaterThan', func_get_args()));
+    public function assertIsNotString($actual, $message = "") {
+        return $this->getScenario()->runStep(new \Codeception\Step\Action('assertIsNotString', func_get_args()));
     }
 
  
     /**
      * [!] Method is generated. Documentation taken from corresponding module.
      *
-     * Checks that actual is greater or equal than expected
+     * Asserts that a file/dir exists and is not writable.
      *
-     * @param        $expected
-     * @param        $actual
+     * @param $filename
      * @param string $message
-     * @see \Codeception\Module\Asserts::assertGreaterThanOrEqual()
+     * @see \Codeception\Module\AbstractAsserts::assertIsNotWritable()
      */
-    public function assertGreaterThanOrEqual($expected, $actual, $message = null) {
-        return $this->getScenario()->runStep(new \Codeception\Step\Action('assertGreaterThanOrEqual', func_get_args()));
+    public function assertIsNotWritable($filename, $message = "") {
+        return $this->getScenario()->runStep(new \Codeception\Step\Action('assertIsNotWritable', func_get_args()));
     }
 
  
     /**
      * [!] Method is generated. Documentation taken from corresponding module.
      *
-     * Checks that actual is less than expected
+     * Asserts that a variable is of type numeric.
      *
-     * @param        $expected
-     * @param        $actual
+     * @param $actual
      * @param string $message
-     * @see \Codeception\Module\Asserts::assertLessThan()
+     * @see \Codeception\Module\AbstractAsserts::assertIsNumeric()
      */
-    public function assertLessThan($expected, $actual, $message = null) {
-        return $this->getScenario()->runStep(new \Codeception\Step\Action('assertLessThan', func_get_args()));
+    public function assertIsNumeric($actual, $message = "") {
+        return $this->getScenario()->runStep(new \Codeception\Step\Action('assertIsNumeric', func_get_args()));
     }
 
  
     /**
      * [!] Method is generated. Documentation taken from corresponding module.
      *
-     * Checks that actual is less or equal than expected
+     * Asserts that a variable is of type object.
      *
-     * @param        $expected
-     * @param        $actual
+     * @param $actual
      * @param string $message
-     * @see \Codeception\Module\Asserts::assertLessThanOrEqual()
+     * @see \Codeception\Module\AbstractAsserts::assertIsObject()
      */
-    public function assertLessThanOrEqual($expected, $actual, $message = null) {
-        return $this->getScenario()->runStep(new \Codeception\Step\Action('assertLessThanOrEqual', func_get_args()));
+    public function assertIsObject($actual, $message = "") {
+        return $this->getScenario()->runStep(new \Codeception\Step\Action('assertIsObject', func_get_args()));
     }
 
  
     /**
      * [!] Method is generated. Documentation taken from corresponding module.
      *
-     * Checks that haystack contains needle
+     * Asserts that a file/dir is readable.
      *
-     * @param        $needle
-     * @param        $haystack
+     * @param $filename
      * @param string $message
-     * @see \Codeception\Module\Asserts::assertContains()
+     * @see \Codeception\Module\AbstractAsserts::assertIsReadable()
      */
-    public function assertContains($needle, $haystack, $message = null) {
-        return $this->getScenario()->runStep(new \Codeception\Step\Action('assertContains', func_get_args()));
+    public function assertIsReadable($filename, $message = "") {
+        return $this->getScenario()->runStep(new \Codeception\Step\Action('assertIsReadable', func_get_args()));
     }
 
  
     /**
      * [!] Method is generated. Documentation taken from corresponding module.
      *
-     * Checks that haystack doesn't contain needle.
+     * Asserts that a variable is of type resource.
      *
-     * @param        $needle
-     * @param        $haystack
+     * @param $actual
      * @param string $message
-     * @see \Codeception\Module\Asserts::assertNotContains()
+     * @see \Codeception\Module\AbstractAsserts::assertIsResource()
      */
-    public function assertNotContains($needle, $haystack, $message = null) {
-        return $this->getScenario()->runStep(new \Codeception\Step\Action('assertNotContains', func_get_args()));
+    public function assertIsResource($actual, $message = "") {
+        return $this->getScenario()->runStep(new \Codeception\Step\Action('assertIsResource', func_get_args()));
     }
 
  
     /**
      * [!] Method is generated. Documentation taken from corresponding module.
      *
-     * Checks that string match with pattern
+     * Asserts that a variable is of type scalar.
      *
-     * @param string $pattern
-     * @param string $string
+     * @param $actual
      * @param string $message
-     * @see \Codeception\Module\Asserts::assertRegExp()
+     * @see \Codeception\Module\AbstractAsserts::assertIsScalar()
      */
-    public function assertRegExp($pattern, $string, $message = null) {
-        return $this->getScenario()->runStep(new \Codeception\Step\Action('assertRegExp', func_get_args()));
+    public function assertIsScalar($actual, $message = "") {
+        return $this->getScenario()->runStep(new \Codeception\Step\Action('assertIsScalar', func_get_args()));
     }
 
  
     /**
      * [!] Method is generated. Documentation taken from corresponding module.
      *
-     * Checks that string not match with pattern
+     * Asserts that a variable is of type string.
      *
-     * @param string $pattern
-     * @param string $string
+     * @param $actual
      * @param string $message
-     * @see \Codeception\Module\Asserts::assertNotRegExp()
+     * @see \Codeception\Module\AbstractAsserts::assertIsString()
      */
-    public function assertNotRegExp($pattern, $string, $message = null) {
-        return $this->getScenario()->runStep(new \Codeception\Step\Action('assertNotRegExp', func_get_args()));
+    public function assertIsString($actual, $message = "") {
+        return $this->getScenario()->runStep(new \Codeception\Step\Action('assertIsString', func_get_args()));
     }
 
  
     /**
      * [!] Method is generated. Documentation taken from corresponding module.
      *
-     * Checks that a string starts with the given prefix.
+     * Asserts that a file/dir exists and is writable.
      *
-     * @param string $prefix
-     * @param string $string
+     * @param $filename
      * @param string $message
-     * @see \Codeception\Module\Asserts::assertStringStartsWith()
+     * @see \Codeception\Module\AbstractAsserts::assertIsWritable()
      */
-    public function assertStringStartsWith($prefix, $string, $message = null) {
-        return $this->getScenario()->runStep(new \Codeception\Step\Action('assertStringStartsWith', func_get_args()));
+    public function assertIsWritable($filename, $message = "") {
+        return $this->getScenario()->runStep(new \Codeception\Step\Action('assertIsWritable', func_get_args()));
     }
 
  
     /**
      * [!] Method is generated. Documentation taken from corresponding module.
      *
-     * Checks that a string doesn't start with the given prefix.
+     * Asserts that a string is a valid JSON string.
      *
-     * @param string $prefix
-     * @param string $string
+     * @param string $actualJson
      * @param string $message
-     * @see \Codeception\Module\Asserts::assertStringStartsNotWith()
+     * @see \Codeception\Module\AbstractAsserts::assertJson()
      */
-    public function assertStringStartsNotWith($prefix, $string, $message = null) {
-        return $this->getScenario()->runStep(new \Codeception\Step\Action('assertStringStartsNotWith', func_get_args()));
+    public function assertJson($actualJson, $message = "") {
+        return $this->getScenario()->runStep(new \Codeception\Step\Action('assertJson', func_get_args()));
     }
 
  
     /**
      * [!] Method is generated. Documentation taken from corresponding module.
      *
-     * Checks that variable is empty.
+     * Asserts that two JSON files are equal.
      *
-     * @param        $actual
+     * @param string $expectedFile
+     * @param string $actualFile
      * @param string $message
-     * @see \Codeception\Module\Asserts::assertEmpty()
+     * @see \Codeception\Module\AbstractAsserts::assertJsonFileEqualsJsonFile()
      */
-    public function assertEmpty($actual, $message = null) {
-        return $this->getScenario()->runStep(new \Codeception\Step\Action('assertEmpty', func_get_args()));
+    public function assertJsonFileEqualsJsonFile($expectedFile, $actualFile, $message = "") {
+        return $this->getScenario()->runStep(new \Codeception\Step\Action('assertJsonFileEqualsJsonFile', func_get_args()));
     }
 
  
     /**
      * [!] Method is generated. Documentation taken from corresponding module.
      *
-     * Checks that variable is not empty.
+     * Asserts that two JSON files are not equal.
      *
-     * @param        $actual
+     * @param string $expectedFile
+     * @param string $actualFile
      * @param string $message
-     * @see \Codeception\Module\Asserts::assertNotEmpty()
+     * @see \Codeception\Module\AbstractAsserts::assertJsonFileNotEqualsJsonFile()
      */
-    public function assertNotEmpty($actual, $message = null) {
-        return $this->getScenario()->runStep(new \Codeception\Step\Action('assertNotEmpty', func_get_args()));
+    public function assertJsonFileNotEqualsJsonFile($expectedFile, $actualFile, $message = "") {
+        return $this->getScenario()->runStep(new \Codeception\Step\Action('assertJsonFileNotEqualsJsonFile', func_get_args()));
     }
 
  
     /**
      * [!] Method is generated. Documentation taken from corresponding module.
      *
-     * Checks that variable is NULL
+     * Asserts that the generated JSON encoded object and the content of the given file are equal.
      *
-     * @param        $actual
+     * @param string $expectedFile
+     * @param string $actualJson
      * @param string $message
-     * @see \Codeception\Module\Asserts::assertNull()
+     * @see \Codeception\Module\AbstractAsserts::assertJsonStringEqualsJsonFile()
      */
-    public function assertNull($actual, $message = null) {
-        return $this->getScenario()->runStep(new \Codeception\Step\Action('assertNull', func_get_args()));
+    public function assertJsonStringEqualsJsonFile($expectedFile, $actualJson, $message = "") {
+        return $this->getScenario()->runStep(new \Codeception\Step\Action('assertJsonStringEqualsJsonFile', func_get_args()));
     }
 
  
     /**
      * [!] Method is generated. Documentation taken from corresponding module.
      *
-     * Checks that variable is not NULL
+     * Asserts that two given JSON encoded objects or arrays are equal.
      *
-     * @param        $actual
+     * @param string $expectedJson
+     * @param string $actualJson
      * @param string $message
-     * @see \Codeception\Module\Asserts::assertNotNull()
+     * @see \Codeception\Module\AbstractAsserts::assertJsonStringEqualsJsonString()
      */
-    public function assertNotNull($actual, $message = null) {
-        return $this->getScenario()->runStep(new \Codeception\Step\Action('assertNotNull', func_get_args()));
+    public function assertJsonStringEqualsJsonString($expectedJson, $actualJson, $message = "") {
+        return $this->getScenario()->runStep(new \Codeception\Step\Action('assertJsonStringEqualsJsonString', func_get_args()));
     }
 
  
     /**
      * [!] Method is generated. Documentation taken from corresponding module.
      *
-     * Checks that condition is positive.
+     * Asserts that the generated JSON encoded object and the content of the given file are not equal.
      *
-     * @param        $condition
+     * @param string $expectedFile
+     * @param string $actualJson
      * @param string $message
-     * @see \Codeception\Module\Asserts::assertTrue()
+     * @see \Codeception\Module\AbstractAsserts::assertJsonStringNotEqualsJsonFile()
      */
-    public function assertTrue($condition, $message = null) {
-        return $this->getScenario()->runStep(new \Codeception\Step\Action('assertTrue', func_get_args()));
+    public function assertJsonStringNotEqualsJsonFile($expectedFile, $actualJson, $message = "") {
+        return $this->getScenario()->runStep(new \Codeception\Step\Action('assertJsonStringNotEqualsJsonFile', func_get_args()));
     }
 
  
     /**
      * [!] Method is generated. Documentation taken from corresponding module.
      *
-     * Checks that the condition is NOT true (everything but true)
+     * Asserts that two given JSON encoded objects or arrays are not equal.
      *
-     * @param        $condition
+     * @param string $expectedJson
+     * @param string $actualJson
      * @param string $message
-     * @see \Codeception\Module\Asserts::assertNotTrue()
+     * @see \Codeception\Module\AbstractAsserts::assertJsonStringNotEqualsJsonString()
      */
-    public function assertNotTrue($condition, $message = null) {
-        return $this->getScenario()->runStep(new \Codeception\Step\Action('assertNotTrue', func_get_args()));
+    public function assertJsonStringNotEqualsJsonString($expectedJson, $actualJson, $message = "") {
+        return $this->getScenario()->runStep(new \Codeception\Step\Action('assertJsonStringNotEqualsJsonString', func_get_args()));
     }
 
  
     /**
      * [!] Method is generated. Documentation taken from corresponding module.
      *
-     * Checks that condition is negative.
+     * Asserts that a value is smaller than another value.
      *
-     * @param        $condition
+     * @param $expected
+     * @param $actual
      * @param string $message
-     * @see \Codeception\Module\Asserts::assertFalse()
+     * @see \Codeception\Module\AbstractAsserts::assertLessThan()
      */
-    public function assertFalse($condition, $message = null) {
-        return $this->getScenario()->runStep(new \Codeception\Step\Action('assertFalse', func_get_args()));
+    public function assertLessThan($expected, $actual, $message = "") {
+        return $this->getScenario()->runStep(new \Codeception\Step\Action('assertLessThan', func_get_args()));
     }
 
  
     /**
      * [!] Method is generated. Documentation taken from corresponding module.
      *
-     * Checks that the condition is NOT false (everything but false)
+     * Asserts that a value is smaller than or equal to another value.
      *
-     * @param        $condition
+     * @param $expected
+     * @param $actual
      * @param string $message
-     * @see \Codeception\Module\Asserts::assertNotFalse()
+     * @see \Codeception\Module\AbstractAsserts::assertLessThanOrEqual()
      */
-    public function assertNotFalse($condition, $message = null) {
-        return $this->getScenario()->runStep(new \Codeception\Step\Action('assertNotFalse', func_get_args()));
+    public function assertLessThanOrEqual($expected, $actual, $message = "") {
+        return $this->getScenario()->runStep(new \Codeception\Step\Action('assertLessThanOrEqual', func_get_args()));
     }
 
  
     /**
      * [!] Method is generated. Documentation taken from corresponding module.
      *
-     * Checks if file exists
+     * Asserts that a string matches a given regular expression.
      *
-     * @param string $filename
+     * @param string $pattern
+     * @param string $string
      * @param string $message
-     * @see \Codeception\Module\Asserts::assertFileExists()
+     * @see \Codeception\Module\AbstractAsserts::assertMatchesRegularExpression()
      */
-    public function assertFileExists($filename, $message = null) {
-        return $this->getScenario()->runStep(new \Codeception\Step\Action('assertFileExists', func_get_args()));
+    public function assertMatchesRegularExpression($pattern, $string, $message = "") {
+        return $this->getScenario()->runStep(new \Codeception\Step\Action('assertMatchesRegularExpression', func_get_args()));
     }
 
  
     /**
      * [!] Method is generated. Documentation taken from corresponding module.
      *
-     * Checks if file doesn't exist
+     * Asserts that a variable is nan.
      *
-     * @param string $filename
+     * @param $actual
      * @param string $message
-     * @see \Codeception\Module\Asserts::assertFileNotExists()
+     * @see \Codeception\Module\AbstractAsserts::assertNan()
      */
-    public function assertFileNotExists($filename, $message = null) {
-        return $this->getScenario()->runStep(new \Codeception\Step\Action('assertFileNotExists', func_get_args()));
+    public function assertNan($actual, $message = "") {
+        return $this->getScenario()->runStep(new \Codeception\Step\Action('assertNan', func_get_args()));
     }
 
  
     /**
      * [!] Method is generated. Documentation taken from corresponding module.
      *
-     * @param $expected
+     * Asserts that a haystack does not contain a needle.
+     *
+     * @param $needle
+     * @param $haystack
+     * @param string $message
+     * @see \Codeception\Module\AbstractAsserts::assertNotContains()
+     */
+    public function assertNotContains($needle, $haystack, $message = "") {
+        return $this->getScenario()->runStep(new \Codeception\Step\Action('assertNotContains', func_get_args()));
+    }
+
+ 
+    /**
+     * [!] Method is generated. Documentation taken from corresponding module.
+     *
+     *
+     * @see \Codeception\Module\AbstractAsserts::assertNotContainsEquals()
+     */
+    public function assertNotContainsEquals($needle, $haystack, $message = "") {
+        return $this->getScenario()->runStep(new \Codeception\Step\Action('assertNotContainsEquals', func_get_args()));
+    }
+
+ 
+    /**
+     * [!] Method is generated. Documentation taken from corresponding module.
+     *
+     * Asserts that a haystack does not contain only values of a given type.
+     *
+     * @param string $type
+     * @param $haystack
+     * @param bool|null $isNativeType
+     * @param string $message
+     * @see \Codeception\Module\AbstractAsserts::assertNotContainsOnly()
+     */
+    public function assertNotContainsOnly($type, $haystack, $isNativeType = NULL, $message = "") {
+        return $this->getScenario()->runStep(new \Codeception\Step\Action('assertNotContainsOnly', func_get_args()));
+    }
+
+ 
+    /**
+     * [!] Method is generated. Documentation taken from corresponding module.
+     *
+     * Asserts the number of elements of an array, Countable or Traversable.
+     *
+     * @param int $expectedCount
+     * @param Countable|iterable $haystack
+     * @param string $message
+     * @see \Codeception\Module\AbstractAsserts::assertNotCount()
+     */
+    public function assertNotCount($expectedCount, $haystack, $message = "") {
+        return $this->getScenario()->runStep(new \Codeception\Step\Action('assertNotCount', func_get_args()));
+    }
+
+ 
+    /**
+     * [!] Method is generated. Documentation taken from corresponding module.
+     *
+     * Asserts that a variable is not empty.
+     *
      * @param $actual
-     * @param $description
-     * @see \Codeception\Module\Asserts::assertGreaterOrEquals()
+     * @param string $message
+     * @see \Codeception\Module\AbstractAsserts::assertNotEmpty()
      */
-    public function assertGreaterOrEquals($expected, $actual, $description = null) {
-        return $this->getScenario()->runStep(new \Codeception\Step\Action('assertGreaterOrEquals', func_get_args()));
+    public function assertNotEmpty($actual, $message = "") {
+        return $this->getScenario()->runStep(new \Codeception\Step\Action('assertNotEmpty', func_get_args()));
     }
 
  
     /**
      * [!] Method is generated. Documentation taken from corresponding module.
      *
+     * Asserts that two variables are not equal.
+     *
      * @param $expected
      * @param $actual
-     * @param $description
-     * @see \Codeception\Module\Asserts::assertLessOrEquals()
+     * @param string $message
+     * @see \Codeception\Module\AbstractAsserts::assertNotEquals()
      */
-    public function assertLessOrEquals($expected, $actual, $description = null) {
-        return $this->getScenario()->runStep(new \Codeception\Step\Action('assertLessOrEquals', func_get_args()));
+    public function assertNotEquals($expected, $actual, $message = "") {
+        return $this->getScenario()->runStep(new \Codeception\Step\Action('assertNotEquals', func_get_args()));
     }
 
  
     /**
      * [!] Method is generated. Documentation taken from corresponding module.
      *
+     * Asserts that two variables are not equal (canonicalizing).
+     *
+     * @param $expected
      * @param $actual
-     * @param $description
-     * @see \Codeception\Module\Asserts::assertIsEmpty()
+     * @param string $message
+     * @see \Codeception\Module\AbstractAsserts::assertNotEqualsCanonicalizing()
      */
-    public function assertIsEmpty($actual, $description = null) {
-        return $this->getScenario()->runStep(new \Codeception\Step\Action('assertIsEmpty', func_get_args()));
+    public function assertNotEqualsCanonicalizing($expected, $actual, $message = "") {
+        return $this->getScenario()->runStep(new \Codeception\Step\Action('assertNotEqualsCanonicalizing', func_get_args()));
     }
 
  
     /**
      * [!] Method is generated. Documentation taken from corresponding module.
      *
-     * @param $key
+     * Asserts that two variables are not equal (ignoring case).
+     *
+     * @param $expected
      * @param $actual
-     * @param $description
-     * @see \Codeception\Module\Asserts::assertArrayHasKey()
+     * @param string $message
+     * @see \Codeception\Module\AbstractAsserts::assertNotEqualsIgnoringCase()
      */
-    public function assertArrayHasKey($key, $actual, $description = null) {
-        return $this->getScenario()->runStep(new \Codeception\Step\Action('assertArrayHasKey', func_get_args()));
+    public function assertNotEqualsIgnoringCase($expected, $actual, $message = "") {
+        return $this->getScenario()->runStep(new \Codeception\Step\Action('assertNotEqualsIgnoringCase', func_get_args()));
     }
 
  
     /**
      * [!] Method is generated. Documentation taken from corresponding module.
      *
-     * @param $key
+     * Asserts that two variables are not equal (with delta).
+     *
+     * @param $expected
      * @param $actual
-     * @param $description
-     * @see \Codeception\Module\Asserts::assertArrayNotHasKey()
+     * @param float $delta
+     * @param string $message
+     * @see \Codeception\Module\AbstractAsserts::assertNotEqualsWithDelta()
      */
-    public function assertArrayNotHasKey($key, $actual, $description = null) {
-        return $this->getScenario()->runStep(new \Codeception\Step\Action('assertArrayNotHasKey', func_get_args()));
+    public function assertNotEqualsWithDelta($expected, $actual, $delta, $message = "") {
+        return $this->getScenario()->runStep(new \Codeception\Step\Action('assertNotEqualsWithDelta', func_get_args()));
     }
 
  
     /**
      * [!] Method is generated. Documentation taken from corresponding module.
      *
-     * @param $expectedCount
-     * @param $actual
-     * @param $description
-     * @see \Codeception\Module\Asserts::assertCount()
+     * Asserts that a condition is not false.
+     *
+     * @param $condition
+     * @param string $message
+     * @see \Codeception\Module\AbstractAsserts::assertNotFalse()
      */
-    public function assertCount($expectedCount, $actual, $description = null) {
-        return $this->getScenario()->runStep(new \Codeception\Step\Action('assertCount', func_get_args()));
+    public function assertNotFalse($condition, $message = "") {
+        return $this->getScenario()->runStep(new \Codeception\Step\Action('assertNotFalse', func_get_args()));
     }
 
  
     /**
      * [!] Method is generated. Documentation taken from corresponding module.
      *
-     * @param $class
+     * Asserts that a variable is not of a given type.
+     *
+     * @param $expected
      * @param $actual
-     * @param $description
-     * @see \Codeception\Module\Asserts::assertInstanceOf()
+     * @param string $message
+     * @see \Codeception\Module\AbstractAsserts::assertNotInstanceOf()
      */
-    public function assertInstanceOf($class, $actual, $description = null) {
-        return $this->getScenario()->runStep(new \Codeception\Step\Action('assertInstanceOf', func_get_args()));
+    public function assertNotInstanceOf($expected, $actual, $message = "") {
+        return $this->getScenario()->runStep(new \Codeception\Step\Action('assertNotInstanceOf', func_get_args()));
     }
 
  
     /**
      * [!] Method is generated. Documentation taken from corresponding module.
      *
-     * @param $class
+     * Asserts that a variable is not null.
+     *
      * @param $actual
-     * @param $description
-     * @see \Codeception\Module\Asserts::assertNotInstanceOf()
+     * @param string $message
+     * @see \Codeception\Module\AbstractAsserts::assertNotNull()
      */
-    public function assertNotInstanceOf($class, $actual, $description = null) {
-        return $this->getScenario()->runStep(new \Codeception\Step\Action('assertNotInstanceOf', func_get_args()));
+    public function assertNotNull($actual, $message = "") {
+        return $this->getScenario()->runStep(new \Codeception\Step\Action('assertNotNull', func_get_args()));
     }
 
  
     /**
      * [!] Method is generated. Documentation taken from corresponding module.
      *
-     * @param $type
+     * Asserts that two variables do not have the same type and value.
+     *
+     * @param $expected
      * @param $actual
-     * @param $description
-     * @see \Codeception\Module\Asserts::assertInternalType()
+     * @param string $message
+     * @see \Codeception\Module\AbstractAsserts::assertNotSame()
      */
-    public function assertInternalType($type, $actual, $description = null) {
-        return $this->getScenario()->runStep(new \Codeception\Step\Action('assertInternalType', func_get_args()));
+    public function assertNotSame($expected, $actual, $message = "") {
+        return $this->getScenario()->runStep(new \Codeception\Step\Action('assertNotSame', func_get_args()));
     }
 
  
     /**
      * [!] Method is generated. Documentation taken from corresponding module.
      *
-     * Fails the test with message.
+     * Assert that the size of two arrays (or `Countable` or `Traversable` objects) is not the same.
      *
-     * @param $message
-     * @see \Codeception\Module\Asserts::fail()
+     * @param Countable|iterable $expected
+     * @param Countable|iterable $actual
+     * @param string $message
+     * @see \Codeception\Module\AbstractAsserts::assertNotSameSize()
      */
-    public function fail($message) {
-        return $this->getScenario()->runStep(new \Codeception\Step\Action('fail', func_get_args()));
+    public function assertNotSameSize($expected, $actual, $message = "") {
+        return $this->getScenario()->runStep(new \Codeception\Step\Action('assertNotSameSize', func_get_args()));
     }
 
  
     /**
      * [!] Method is generated. Documentation taken from corresponding module.
      *
+     * Asserts that a condition is not true.
      *
-     * @see \Codeception\Module\Asserts::assertStringContainsString()
+     * @param $condition
+     * @param string $message
+     * @see \Codeception\Module\AbstractAsserts::assertNotTrue()
      */
-    public function assertStringContainsString($needle, $haystack, $message = null) {
-        return $this->getScenario()->runStep(new \Codeception\Step\Action('assertStringContainsString', func_get_args()));
+    public function assertNotTrue($condition, $message = "") {
+        return $this->getScenario()->runStep(new \Codeception\Step\Action('assertNotTrue', func_get_args()));
     }
 
  
     /**
      * [!] Method is generated. Documentation taken from corresponding module.
      *
+     * Asserts that a variable is null.
      *
-     * @see \Codeception\Module\Asserts::assertStringNotContainsString()
+     * @param $actual
+     * @param string $message
+     * @see \Codeception\Module\AbstractAsserts::assertNull()
      */
-    public function assertStringNotContainsString($needle, $haystack, $message = null) {
-        return $this->getScenario()->runStep(new \Codeception\Step\Action('assertStringNotContainsString', func_get_args()));
+    public function assertNull($actual, $message = "") {
+        return $this->getScenario()->runStep(new \Codeception\Step\Action('assertNull', func_get_args()));
     }
 
  
     /**
      * [!] Method is generated. Documentation taken from corresponding module.
      *
+     * Asserts that an object has a specified attribute.
      *
-     * @see \Codeception\Module\Asserts::assertStringContainsStringIgnoringCase()
+     * @param string $attributeName
+     * @param object $object
+     * @param string $message
+     * @see \Codeception\Module\AbstractAsserts::assertObjectHasAttribute()
      */
-    public function assertStringContainsStringIgnoringCase($needle, $haystack, $message = null) {
-        return $this->getScenario()->runStep(new \Codeception\Step\Action('assertStringContainsStringIgnoringCase', func_get_args()));
+    public function assertObjectHasAttribute($attributeName, $object, $message = "") {
+        return $this->getScenario()->runStep(new \Codeception\Step\Action('assertObjectHasAttribute', func_get_args()));
     }
 
  
     /**
      * [!] Method is generated. Documentation taken from corresponding module.
      *
+     * Asserts that an object does not have a specified attribute.
      *
-     * @see \Codeception\Module\Asserts::assertStringNotContainsStringIgnoringCase()
+     * @param string $attributeName
+     * @param object $object
+     * @param string $message
+     * @see \Codeception\Module\AbstractAsserts::assertObjectNotHasAttribute()
      */
-    public function assertStringNotContainsStringIgnoringCase($needle, $haystack, $message = null) {
-        return $this->getScenario()->runStep(new \Codeception\Step\Action('assertStringNotContainsStringIgnoringCase', func_get_args()));
+    public function assertObjectNotHasAttribute($attributeName, $object, $message = "") {
+        return $this->getScenario()->runStep(new \Codeception\Step\Action('assertObjectNotHasAttribute', func_get_args()));
     }
 
  
     /**
      * [!] Method is generated. Documentation taken from corresponding module.
      *
-     * @since 1.1.0 of module-asserts
-     * @see \Codeception\Module\Asserts::assertStringEndsWith()
+     * Asserts that two variables have the same type and value.
+     *
+     * @param $expected
+     * @param $actual
+     * @param string $message
+     * @see \Codeception\Module\AbstractAsserts::assertSame()
      */
-    public function assertStringEndsWith($suffix, $string, $message = null) {
-        return $this->getScenario()->runStep(new \Codeception\Step\Action('assertStringEndsWith', func_get_args()));
+    public function assertSame($expected, $actual, $message = "") {
+        return $this->getScenario()->runStep(new \Codeception\Step\Action('assertSame', func_get_args()));
+    }
+
+ 
+    /**
+     * [!] Method is generated. Documentation taken from corresponding module.
+     *
+     * Assert that the size of two arrays (or `Countable` or `Traversable` objects) is the same.
+     *
+     * @param Countable|iterable $expected
+     * @param Countable|iterable $actual
+     * @param string $message
+     * @see \Codeception\Module\AbstractAsserts::assertSameSize()
+     */
+    public function assertSameSize($expected, $actual, $message = "") {
+        return $this->getScenario()->runStep(new \Codeception\Step\Action('assertSameSize', func_get_args()));
     }
 
  
     /**
      * [!] Method is generated. Documentation taken from corresponding module.
      *
-     * @since 1.1.0 of module-asserts
-     * @see \Codeception\Module\Asserts::assertStringEndsNotWith()
+     * @param string $needle
+     * @param string $haystack
+     * @param string $message
+     * @see \Codeception\Module\AbstractAsserts::assertStringContainsString()
      */
-    public function assertStringEndsNotWith($suffix, $string, $message = null) {
-        return $this->getScenario()->runStep(new \Codeception\Step\Action('assertStringEndsNotWith', func_get_args()));
+    public function assertStringContainsString($needle, $haystack, $message = "") {
+        return $this->getScenario()->runStep(new \Codeception\Step\Action('assertStringContainsString', func_get_args()));
     }
 
  
@@ -633,285 +1649,403 @@ trait JsonapiTesterActions
      * [!] Method is generated. Documentation taken from corresponding module.
      *
      *
-     * @see \Codeception\Module\Asserts::assertIsArray()
+     * @see \Codeception\Module\AbstractAsserts::assertStringContainsStringIgnoringCase()
      */
-    public function assertIsArray($actual, $message = null) {
-        return $this->getScenario()->runStep(new \Codeception\Step\Action('assertIsArray', func_get_args()));
+    public function assertStringContainsStringIgnoringCase($needle, $haystack, $message = "") {
+        return $this->getScenario()->runStep(new \Codeception\Step\Action('assertStringContainsStringIgnoringCase', func_get_args()));
     }
 
  
     /**
      * [!] Method is generated. Documentation taken from corresponding module.
      *
+     * Asserts that a string ends not with a given suffix.
      *
-     * @see \Codeception\Module\Asserts::assertIsBool()
+     * @param string $suffix
+     * @param string $string
+     * @param string $message
+     * @see \Codeception\Module\AbstractAsserts::assertStringEndsNotWith()
      */
-    public function assertIsBool($actual, $message = null) {
-        return $this->getScenario()->runStep(new \Codeception\Step\Action('assertIsBool', func_get_args()));
+    public function assertStringEndsNotWith($suffix, $string, $message = "") {
+        return $this->getScenario()->runStep(new \Codeception\Step\Action('assertStringEndsNotWith', func_get_args()));
     }
 
  
     /**
      * [!] Method is generated. Documentation taken from corresponding module.
      *
+     * Asserts that a string ends with a given suffix.
      *
-     * @see \Codeception\Module\Asserts::assertIsFloat()
+     * @param string $suffix
+     * @param string $string
+     * @param string $message
+     * @see \Codeception\Module\AbstractAsserts::assertStringEndsWith()
      */
-    public function assertIsFloat($actual, $message = null) {
-        return $this->getScenario()->runStep(new \Codeception\Step\Action('assertIsFloat', func_get_args()));
+    public function assertStringEndsWith($suffix, $string, $message = "") {
+        return $this->getScenario()->runStep(new \Codeception\Step\Action('assertStringEndsWith', func_get_args()));
     }
 
  
     /**
      * [!] Method is generated. Documentation taken from corresponding module.
      *
+     * Asserts that the contents of a string is equal to the contents of a file.
      *
-     * @see \Codeception\Module\Asserts::assertIsInt()
+     * @param string $expectedFile
+     * @param string $actualString
+     * @param string $message
+     * @see \Codeception\Module\AbstractAsserts::assertStringEqualsFile()
      */
-    public function assertIsInt($actual, $message = null) {
-        return $this->getScenario()->runStep(new \Codeception\Step\Action('assertIsInt', func_get_args()));
+    public function assertStringEqualsFile($expectedFile, $actualString, $message = "") {
+        return $this->getScenario()->runStep(new \Codeception\Step\Action('assertStringEqualsFile', func_get_args()));
     }
 
  
     /**
      * [!] Method is generated. Documentation taken from corresponding module.
      *
+     * Asserts that the contents of a string is equal to the contents of a file (canonicalizing).
      *
-     * @see \Codeception\Module\Asserts::assertIsNumeric()
+     * @param string $expectedFile
+     * @param string $actualString
+     * @param string $message
+     * @see \Codeception\Module\AbstractAsserts::assertStringEqualsFileCanonicalizing()
      */
-    public function assertIsNumeric($actual, $message = null) {
-        return $this->getScenario()->runStep(new \Codeception\Step\Action('assertIsNumeric', func_get_args()));
+    public function assertStringEqualsFileCanonicalizing($expectedFile, $actualString, $message = "") {
+        return $this->getScenario()->runStep(new \Codeception\Step\Action('assertStringEqualsFileCanonicalizing', func_get_args()));
     }
 
  
     /**
      * [!] Method is generated. Documentation taken from corresponding module.
      *
+     * Asserts that the contents of a string is equal to the contents of a file (ignoring case).
      *
-     * @see \Codeception\Module\Asserts::assertIsObject()
+     * @param string $expectedFile
+     * @param string $actualString
+     * @param string $message
+     * @see \Codeception\Module\AbstractAsserts::assertStringEqualsFileIgnoringCase()
      */
-    public function assertIsObject($actual, $message = null) {
-        return $this->getScenario()->runStep(new \Codeception\Step\Action('assertIsObject', func_get_args()));
+    public function assertStringEqualsFileIgnoringCase($expectedFile, $actualString, $message = "") {
+        return $this->getScenario()->runStep(new \Codeception\Step\Action('assertStringEqualsFileIgnoringCase', func_get_args()));
     }
 
  
     /**
      * [!] Method is generated. Documentation taken from corresponding module.
      *
+     * Asserts that a string matches a given format string.
      *
-     * @see \Codeception\Module\Asserts::assertIsResource()
+     * @param string $format
+     * @param string $string
+     * @param string $message
+     * @see \Codeception\Module\AbstractAsserts::assertStringMatchesFormat()
      */
-    public function assertIsResource($actual, $message = null) {
-        return $this->getScenario()->runStep(new \Codeception\Step\Action('assertIsResource', func_get_args()));
+    public function assertStringMatchesFormat($format, $string, $message = "") {
+        return $this->getScenario()->runStep(new \Codeception\Step\Action('assertStringMatchesFormat', func_get_args()));
     }
 
  
     /**
      * [!] Method is generated. Documentation taken from corresponding module.
      *
+     * Asserts that a string matches a given format file.
      *
-     * @see \Codeception\Module\Asserts::assertIsString()
+     * @param string $formatFile
+     * @param string $string
+     * @param string $message
+     * @see \Codeception\Module\AbstractAsserts::assertStringMatchesFormatFile()
      */
-    public function assertIsString($actual, $message = null) {
-        return $this->getScenario()->runStep(new \Codeception\Step\Action('assertIsString', func_get_args()));
+    public function assertStringMatchesFormatFile($formatFile, $string, $message = "") {
+        return $this->getScenario()->runStep(new \Codeception\Step\Action('assertStringMatchesFormatFile', func_get_args()));
     }
 
  
     /**
      * [!] Method is generated. Documentation taken from corresponding module.
      *
+     * @param string $needle
+     * @param string $haystack
+     * @param string $message
+     * @see \Codeception\Module\AbstractAsserts::assertStringNotContainsString()
+     */
+    public function assertStringNotContainsString($needle, $haystack, $message = "") {
+        return $this->getScenario()->runStep(new \Codeception\Step\Action('assertStringNotContainsString', func_get_args()));
+    }
+
+ 
+    /**
+     * [!] Method is generated. Documentation taken from corresponding module.
      *
-     * @see \Codeception\Module\Asserts::assertIsScalar()
+     * @param string $needle
+     * @param string $haystack
+     * @param string $message
+     * @see \Codeception\Module\AbstractAsserts::assertStringNotContainsStringIgnoringCase()
      */
-    public function assertIsScalar($actual, $message = null) {
-        return $this->getScenario()->runStep(new \Codeception\Step\Action('assertIsScalar', func_get_args()));
+    public function assertStringNotContainsStringIgnoringCase($needle, $haystack, $message = "") {
+        return $this->getScenario()->runStep(new \Codeception\Step\Action('assertStringNotContainsStringIgnoringCase', func_get_args()));
     }
 
  
     /**
      * [!] Method is generated. Documentation taken from corresponding module.
      *
+     * Asserts that the contents of a string is not equal to the contents of a file.
      *
-     * @see \Codeception\Module\Asserts::assertIsCallable()
+     * @param string $expectedFile
+     * @param string $actualString
+     * @param string $message
+     * @see \Codeception\Module\AbstractAsserts::assertStringNotEqualsFile()
      */
-    public function assertIsCallable($actual, $message = null) {
-        return $this->getScenario()->runStep(new \Codeception\Step\Action('assertIsCallable', func_get_args()));
+    public function assertStringNotEqualsFile($expectedFile, $actualString, $message = "") {
+        return $this->getScenario()->runStep(new \Codeception\Step\Action('assertStringNotEqualsFile', func_get_args()));
+    }
+
+ 
+    /**
+     * [!] Method is generated. Documentation taken from corresponding module.
+     *
+     * Asserts that the contents of a string is not equal to the contents of a file (canonicalizing).
+     * @param string $expectedFile
+     * @param string $actualString
+     * @param string $message
+     * @see \Codeception\Module\AbstractAsserts::assertStringNotEqualsFileCanonicalizing()
+     */
+    public function assertStringNotEqualsFileCanonicalizing($expectedFile, $actualString, $message = "") {
+        return $this->getScenario()->runStep(new \Codeception\Step\Action('assertStringNotEqualsFileCanonicalizing', func_get_args()));
     }
 
  
     /**
      * [!] Method is generated. Documentation taken from corresponding module.
      *
+     * Asserts that the contents of a string is not equal to the contents of a file (ignoring case).
      *
-     * @see \Codeception\Module\Asserts::assertIsNotArray()
+     * @param string $expectedFile
+     * @param string $actualString
+     * @param string $message
+     * @see \Codeception\Module\AbstractAsserts::assertStringNotEqualsFileIgnoringCase()
      */
-    public function assertIsNotArray($actual, $message = null) {
-        return $this->getScenario()->runStep(new \Codeception\Step\Action('assertIsNotArray', func_get_args()));
+    public function assertStringNotEqualsFileIgnoringCase($expectedFile, $actualString, $message = "") {
+        return $this->getScenario()->runStep(new \Codeception\Step\Action('assertStringNotEqualsFileIgnoringCase', func_get_args()));
     }
 
  
     /**
      * [!] Method is generated. Documentation taken from corresponding module.
      *
+     * Asserts that a string does not match a given format string.
      *
-     * @see \Codeception\Module\Asserts::assertIsNotBool()
+     * @param string $format
+     * @param string $string
+     * @param string $message
+     * @see \Codeception\Module\AbstractAsserts::assertStringNotMatchesFormat()
      */
-    public function assertIsNotBool($actual, $message = null) {
-        return $this->getScenario()->runStep(new \Codeception\Step\Action('assertIsNotBool', func_get_args()));
+    public function assertStringNotMatchesFormat($format, $string, $message = "") {
+        return $this->getScenario()->runStep(new \Codeception\Step\Action('assertStringNotMatchesFormat', func_get_args()));
     }
 
  
     /**
      * [!] Method is generated. Documentation taken from corresponding module.
      *
+     * Asserts that a string does not match a given format string.
      *
-     * @see \Codeception\Module\Asserts::assertIsNotFloat()
+     * @param string $formatFile
+     * @param string $string
+     * @param string $message
+     * @see \Codeception\Module\AbstractAsserts::assertStringNotMatchesFormatFile()
      */
-    public function assertIsNotFloat($actual, $message = null) {
-        return $this->getScenario()->runStep(new \Codeception\Step\Action('assertIsNotFloat', func_get_args()));
+    public function assertStringNotMatchesFormatFile($formatFile, $string, $message = "") {
+        return $this->getScenario()->runStep(new \Codeception\Step\Action('assertStringNotMatchesFormatFile', func_get_args()));
     }
 
  
     /**
      * [!] Method is generated. Documentation taken from corresponding module.
      *
+     * Asserts that a string starts not with a given prefix.
      *
-     * @see \Codeception\Module\Asserts::assertIsNotInt()
+     * @param string $prefix
+     * @param string $string
+     * @param string $message
+     * @see \Codeception\Module\AbstractAsserts::assertStringStartsNotWith()
      */
-    public function assertIsNotInt($actual, $message = null) {
-        return $this->getScenario()->runStep(new \Codeception\Step\Action('assertIsNotInt', func_get_args()));
+    public function assertStringStartsNotWith($prefix, $string, $message = "") {
+        return $this->getScenario()->runStep(new \Codeception\Step\Action('assertStringStartsNotWith', func_get_args()));
     }
 
  
     /**
      * [!] Method is generated. Documentation taken from corresponding module.
      *
+     * Asserts that a string starts with a given prefix.
      *
-     * @see \Codeception\Module\Asserts::assertIsNotNumeric()
+     * @param string $prefix
+     * @param string $string
+     * @param string $message
+     * @see \Codeception\Module\AbstractAsserts::assertStringStartsWith()
      */
-    public function assertIsNotNumeric($actual, $message = null) {
-        return $this->getScenario()->runStep(new \Codeception\Step\Action('assertIsNotNumeric', func_get_args()));
+    public function assertStringStartsWith($prefix, $string, $message = "") {
+        return $this->getScenario()->runStep(new \Codeception\Step\Action('assertStringStartsWith', func_get_args()));
     }
 
  
     /**
      * [!] Method is generated. Documentation taken from corresponding module.
      *
+     * Evaluates a PHPUnit\Framework\Constraint matcher object.
      *
-     * @see \Codeception\Module\Asserts::assertIsNotObject()
+     * @param $value
+     * @param Constraint $constraint
+     * @param string $message
+     * @see \Codeception\Module\AbstractAsserts::assertThat()
      */
-    public function assertIsNotObject($actual, $message = null) {
-        return $this->getScenario()->runStep(new \Codeception\Step\Action('assertIsNotObject', func_get_args()));
+    public function assertThat($value, $constraint, $message = "") {
+        return $this->getScenario()->runStep(new \Codeception\Step\Action('assertThat', func_get_args()));
     }
 
  
     /**
      * [!] Method is generated. Documentation taken from corresponding module.
      *
+     * Asserts that a condition is true.
      *
-     * @see \Codeception\Module\Asserts::assertIsNotResource()
+     * @param $condition
+     * @param string $message
+     * @see \Codeception\Module\AbstractAsserts::assertTrue()
      */
-    public function assertIsNotResource($actual, $message = null) {
-        return $this->getScenario()->runStep(new \Codeception\Step\Action('assertIsNotResource', func_get_args()));
+    public function assertTrue($condition, $message = "") {
+        return $this->getScenario()->runStep(new \Codeception\Step\Action('assertTrue', func_get_args()));
     }
 
  
     /**
      * [!] Method is generated. Documentation taken from corresponding module.
      *
+     * Asserts that two XML files are equal.
      *
-     * @see \Codeception\Module\Asserts::assertIsNotString()
+     * @param string $expectedFile
+     * @param string $actualFile
+     * @param string $message
+     * @see \Codeception\Module\AbstractAsserts::assertXmlFileEqualsXmlFile()
      */
-    public function assertIsNotString($actual, $message = null) {
-        return $this->getScenario()->runStep(new \Codeception\Step\Action('assertIsNotString', func_get_args()));
+    public function assertXmlFileEqualsXmlFile($expectedFile, $actualFile, $message = "") {
+        return $this->getScenario()->runStep(new \Codeception\Step\Action('assertXmlFileEqualsXmlFile', func_get_args()));
     }
 
  
     /**
      * [!] Method is generated. Documentation taken from corresponding module.
      *
+     * Asserts that two XML files are not equal.
      *
-     * @see \Codeception\Module\Asserts::assertIsNotScalar()
+     * @param string $expectedFile
+     * @param string $actualFile
+     * @param string $message
+     * @see \Codeception\Module\AbstractAsserts::assertXmlFileNotEqualsXmlFile()
      */
-    public function assertIsNotScalar($actual, $message = null) {
-        return $this->getScenario()->runStep(new \Codeception\Step\Action('assertIsNotScalar', func_get_args()));
+    public function assertXmlFileNotEqualsXmlFile($expectedFile, $actualFile, $message = "") {
+        return $this->getScenario()->runStep(new \Codeception\Step\Action('assertXmlFileNotEqualsXmlFile', func_get_args()));
     }
 
  
     /**
      * [!] Method is generated. Documentation taken from corresponding module.
      *
+     * Asserts that two XML documents are equal.
      *
-     * @see \Codeception\Module\Asserts::assertIsNotCallable()
+     * @param string $expectedFile
+     * @param DOMDocument|string $actualXml
+     * @param string $message
+     * @see \Codeception\Module\AbstractAsserts::assertXmlStringEqualsXmlFile()
      */
-    public function assertIsNotCallable($actual, $message = null) {
-        return $this->getScenario()->runStep(new \Codeception\Step\Action('assertIsNotCallable', func_get_args()));
+    public function assertXmlStringEqualsXmlFile($expectedFile, $actualXml, $message = "") {
+        return $this->getScenario()->runStep(new \Codeception\Step\Action('assertXmlStringEqualsXmlFile', func_get_args()));
     }
 
  
     /**
      * [!] Method is generated. Documentation taken from corresponding module.
      *
+     * Asserts that two XML documents are equal.
      *
-     * @see \Codeception\Module\Asserts::assertEqualsCanonicalizing()
+     * @param DOMDocument|string $expectedXml
+     * @param DOMDocument|string $actualXml
+     * @param string $message
+     * @see \Codeception\Module\AbstractAsserts::assertXmlStringEqualsXmlString()
      */
-    public function assertEqualsCanonicalizing($expected, $actual, $message = null) {
-        return $this->getScenario()->runStep(new \Codeception\Step\Action('assertEqualsCanonicalizing', func_get_args()));
+    public function assertXmlStringEqualsXmlString($expectedXml, $actualXml, $message = "") {
+        return $this->getScenario()->runStep(new \Codeception\Step\Action('assertXmlStringEqualsXmlString', func_get_args()));
     }
 
  
     /**
      * [!] Method is generated. Documentation taken from corresponding module.
      *
+     * Asserts that two XML documents are not equal.
      *
-     * @see \Codeception\Module\Asserts::assertNotEqualsCanonicalizing()
+     * @param string $expectedFile
+     * @param DOMDocument|string $actualXml
+     * @param string $message
+     * @see \Codeception\Module\AbstractAsserts::assertXmlStringNotEqualsXmlFile()
      */
-    public function assertNotEqualsCanonicalizing($expected, $actual, $message = null) {
-        return $this->getScenario()->runStep(new \Codeception\Step\Action('assertNotEqualsCanonicalizing', func_get_args()));
+    public function assertXmlStringNotEqualsXmlFile($expectedFile, $actualXml, $message = "") {
+        return $this->getScenario()->runStep(new \Codeception\Step\Action('assertXmlStringNotEqualsXmlFile', func_get_args()));
     }
 
  
     /**
      * [!] Method is generated. Documentation taken from corresponding module.
      *
+     * Asserts that two XML documents are not equal.
      *
-     * @see \Codeception\Module\Asserts::assertEqualsIgnoringCase()
+     * @param DOMDocument|string $expectedXml
+     * @param DOMDocument|string $actualXml
+     * @param string $message
+     * @see \Codeception\Module\AbstractAsserts::assertXmlStringNotEqualsXmlString()
      */
-    public function assertEqualsIgnoringCase($expected, $actual, $message = null) {
-        return $this->getScenario()->runStep(new \Codeception\Step\Action('assertEqualsIgnoringCase', func_get_args()));
+    public function assertXmlStringNotEqualsXmlString($expectedXml, $actualXml, $message = "") {
+        return $this->getScenario()->runStep(new \Codeception\Step\Action('assertXmlStringNotEqualsXmlString', func_get_args()));
     }
 
  
     /**
      * [!] Method is generated. Documentation taken from corresponding module.
      *
+     * Fails a test with the given message.
      *
-     * @see \Codeception\Module\Asserts::assertNotEqualsIgnoringCase()
+     * @param string $message
+     * @see \Codeception\Module\AbstractAsserts::fail()
      */
-    public function assertNotEqualsIgnoringCase($expected, $actual, $message = null) {
-        return $this->getScenario()->runStep(new \Codeception\Step\Action('assertNotEqualsIgnoringCase', func_get_args()));
+    public function fail($message = "") {
+        return $this->getScenario()->runStep(new \Codeception\Step\Action('fail', func_get_args()));
     }
 
  
     /**
      * [!] Method is generated. Documentation taken from corresponding module.
      *
+     * Mark the test as incomplete.
      *
-     * @see \Codeception\Module\Asserts::assertEqualsWithDelta()
+     * @param string $message
+     * @see \Codeception\Module\AbstractAsserts::markTestIncomplete()
      */
-    public function assertEqualsWithDelta($expected, $actual, $delta, $message = null) {
-        return $this->getScenario()->runStep(new \Codeception\Step\Action('assertEqualsWithDelta', func_get_args()));
+    public function markTestIncomplete($message = "") {
+        return $this->getScenario()->runStep(new \Codeception\Step\Action('markTestIncomplete', func_get_args()));
     }
 
  
     /**
      * [!] Method is generated. Documentation taken from corresponding module.
      *
+     * Mark the test as skipped.
      *
-     * @see \Codeception\Module\Asserts::assertNotEqualsWithDelta()
+     * @param string $message
+     * @see \Codeception\Module\AbstractAsserts::markTestSkipped()
      */
-    public function assertNotEqualsWithDelta($expected, $actual, $delta, $message = null) {
-        return $this->getScenario()->runStep(new \Codeception\Step\Action('assertNotEqualsWithDelta', func_get_args()));
+    public function markTestSkipped($message = "") {
+        return $this->getScenario()->runStep(new \Codeception\Step\Action('markTestSkipped', func_get_args()));
     }
 
  
@@ -976,7 +2110,7 @@ trait JsonapiTesterActions
      *
      * @see \Helper\Jsonapi::createApp()
      */
-    public function createApp($credentials, $method, $pattern, $callable, $name = null) {
+    public function createApp($credentials, $method, $pattern, $callable, $name = NULL) {
         return $this->getScenario()->runStep(new \Codeception\Step\Action('createApp', func_get_args()));
     }
 
@@ -987,7 +2121,7 @@ trait JsonapiTesterActions
      *
      * @see \Helper\Jsonapi::createRequestBuilder()
      */
-    public function createRequestBuilder($credentials = null) {
+    public function createRequestBuilder($credentials = NULL) {
         return $this->getScenario()->runStep(new \Codeception\Step\Action('createRequestBuilder', func_get_args()));
     }
 
@@ -998,7 +2132,7 @@ trait JsonapiTesterActions
      *
      * @see \Helper\Jsonapi::sendMockRequest()
      */
-    public function sendMockRequest($app, $request) {
+    public function sendMockRequest($app, \Slim\Http\Request $request) {
         return $this->getScenario()->runStep(new \Codeception\Step\Action('sendMockRequest', func_get_args()));
     }
 
@@ -1009,7 +2143,7 @@ trait JsonapiTesterActions
      *
      * @see \Helper\Jsonapi::storeJsonMD()
      */
-    public function storeJsonMD($filename, $response, $limit = null, $ellipsis = null) {
+    public function storeJsonMD($filename, \Psr\Http\Message\ResponseInterface $response, $limit = NULL, $ellipsis = NULL) {
         return $this->getScenario()->runStep(new \Codeception\Step\Action('storeJsonMD', func_get_args()));
     }
 }
diff --git a/tests/_support/_generated/UnitTesterActions.php b/tests/_support/_generated/UnitTesterActions.php
index a852f52b26aab6f2347020402f864c4b5962b9db..c07f08d772cbe11b43e7b968992b9aebf56f6993 100644
--- a/tests/_support/_generated/UnitTesterActions.php
+++ b/tests/_support/_generated/UnitTesterActions.php
@@ -1,4 +1,4 @@
-<?php  //[STAMP] fa8df0490412d9204c4540517c0a830a
+<?php  //[STAMP] 0c514e6a0684bf12cca1e1c5550cee92
 namespace _generated;
 
 // This class was automatically generated by build task
@@ -39,7 +39,7 @@ trait UnitTesterActions
      * ```
      *
      * @deprecated Use expectThrowable() instead
-     * @param Exception|string $exception
+     * @param \Exception|string $exception
      * @param callable $callback
      * @see \Codeception\Module\Asserts::expectException()
      */
@@ -73,7 +73,7 @@ trait UnitTesterActions
      * });
      * ```
      *
-     * @param Throwable|string $throwable
+     * @param \Throwable|string $throwable
      * @param callable $callback
      * @see \Codeception\Module\Asserts::expectThrowable()
      */
@@ -91,7 +91,7 @@ trait UnitTesterActions
      * @param string $message
      * @see \Codeception\Module\AbstractAsserts::assertFileNotExists()
      */
-    public function assertFileNotExists($filename, $message = null) {
+    public function assertFileNotExists($filename, $message = "") {
         return $this->getScenario()->runStep(new \Codeception\Step\Action('assertFileNotExists', func_get_args()));
     }
 
@@ -106,7 +106,7 @@ trait UnitTesterActions
      * @param string $message
      * @see \Codeception\Module\AbstractAsserts::assertGreaterOrEquals()
      */
-    public function assertGreaterOrEquals($expected, $actual, $message = null) {
+    public function assertGreaterOrEquals($expected, $actual, $message = "") {
         return $this->getScenario()->runStep(new \Codeception\Step\Action('assertGreaterOrEquals', func_get_args()));
     }
 
@@ -120,7 +120,7 @@ trait UnitTesterActions
      * @param string $message
      * @see \Codeception\Module\AbstractAsserts::assertIsEmpty()
      */
-    public function assertIsEmpty($actual, $message = null) {
+    public function assertIsEmpty($actual, $message = "") {
         return $this->getScenario()->runStep(new \Codeception\Step\Action('assertIsEmpty', func_get_args()));
     }
 
@@ -135,7 +135,7 @@ trait UnitTesterActions
      * @param string $message
      * @see \Codeception\Module\AbstractAsserts::assertLessOrEquals()
      */
-    public function assertLessOrEquals($expected, $actual, $message = null) {
+    public function assertLessOrEquals($expected, $actual, $message = "") {
         return $this->getScenario()->runStep(new \Codeception\Step\Action('assertLessOrEquals', func_get_args()));
     }
 
@@ -150,7 +150,7 @@ trait UnitTesterActions
      * @param string $message
      * @see \Codeception\Module\AbstractAsserts::assertNotRegExp()
      */
-    public function assertNotRegExp($pattern, $string, $message = null) {
+    public function assertNotRegExp($pattern, $string, $message = "") {
         return $this->getScenario()->runStep(new \Codeception\Step\Action('assertNotRegExp', func_get_args()));
     }
 
@@ -165,7 +165,7 @@ trait UnitTesterActions
      * @param string $message
      * @see \Codeception\Module\AbstractAsserts::assertRegExp()
      */
-    public function assertRegExp($pattern, $string, $message = null) {
+    public function assertRegExp($pattern, $string, $message = "") {
         return $this->getScenario()->runStep(new \Codeception\Step\Action('assertRegExp', func_get_args()));
     }
 
@@ -180,7 +180,7 @@ trait UnitTesterActions
      * @param string $message
      * @see \Codeception\Module\AbstractAsserts::assertThatItsNot()
      */
-    public function assertThatItsNot($value, $constraint, $message = null) {
+    public function assertThatItsNot($value, $constraint, $message = "") {
         return $this->getScenario()->runStep(new \Codeception\Step\Action('assertThatItsNot', func_get_args()));
     }
 
@@ -195,7 +195,7 @@ trait UnitTesterActions
      * @param string $message
      * @see \Codeception\Module\AbstractAsserts::assertArrayHasKey()
      */
-    public function assertArrayHasKey($key, $array, $message = null) {
+    public function assertArrayHasKey($key, $array, $message = "") {
         return $this->getScenario()->runStep(new \Codeception\Step\Action('assertArrayHasKey', func_get_args()));
     }
 
@@ -210,7 +210,7 @@ trait UnitTesterActions
      * @param string $message
      * @see \Codeception\Module\AbstractAsserts::assertArrayNotHasKey()
      */
-    public function assertArrayNotHasKey($key, $array, $message = null) {
+    public function assertArrayNotHasKey($key, $array, $message = "") {
         return $this->getScenario()->runStep(new \Codeception\Step\Action('assertArrayNotHasKey', func_get_args()));
     }
 
@@ -225,7 +225,7 @@ trait UnitTesterActions
      * @param string $message
      * @see \Codeception\Module\AbstractAsserts::assertClassHasAttribute()
      */
-    public function assertClassHasAttribute($attributeName, $className, $message = null) {
+    public function assertClassHasAttribute($attributeName, $className, $message = "") {
         return $this->getScenario()->runStep(new \Codeception\Step\Action('assertClassHasAttribute', func_get_args()));
     }
 
@@ -240,7 +240,7 @@ trait UnitTesterActions
      * @param string $message
      * @see \Codeception\Module\AbstractAsserts::assertClassHasStaticAttribute()
      */
-    public function assertClassHasStaticAttribute($attributeName, $className, $message = null) {
+    public function assertClassHasStaticAttribute($attributeName, $className, $message = "") {
         return $this->getScenario()->runStep(new \Codeception\Step\Action('assertClassHasStaticAttribute', func_get_args()));
     }
 
@@ -255,7 +255,7 @@ trait UnitTesterActions
      * @param string $message
      * @see \Codeception\Module\AbstractAsserts::assertClassNotHasAttribute()
      */
-    public function assertClassNotHasAttribute($attributeName, $className, $message = null) {
+    public function assertClassNotHasAttribute($attributeName, $className, $message = "") {
         return $this->getScenario()->runStep(new \Codeception\Step\Action('assertClassNotHasAttribute', func_get_args()));
     }
 
@@ -270,7 +270,7 @@ trait UnitTesterActions
      * @param string $message
      * @see \Codeception\Module\AbstractAsserts::assertClassNotHasStaticAttribute()
      */
-    public function assertClassNotHasStaticAttribute($attributeName, $className, $message = null) {
+    public function assertClassNotHasStaticAttribute($attributeName, $className, $message = "") {
         return $this->getScenario()->runStep(new \Codeception\Step\Action('assertClassNotHasStaticAttribute', func_get_args()));
     }
 
@@ -285,7 +285,7 @@ trait UnitTesterActions
      * @param string $message
      * @see \Codeception\Module\AbstractAsserts::assertContains()
      */
-    public function assertContains($needle, $haystack, $message = null) {
+    public function assertContains($needle, $haystack, $message = "") {
         return $this->getScenario()->runStep(new \Codeception\Step\Action('assertContains', func_get_args()));
     }
 
@@ -298,7 +298,7 @@ trait UnitTesterActions
      * @param string $message
      * @see \Codeception\Module\AbstractAsserts::assertContainsEquals()
      */
-    public function assertContainsEquals($needle, $haystack, $message = null) {
+    public function assertContainsEquals($needle, $haystack, $message = "") {
         return $this->getScenario()->runStep(new \Codeception\Step\Action('assertContainsEquals', func_get_args()));
     }
 
@@ -314,7 +314,7 @@ trait UnitTesterActions
      * @param string $message
      * @see \Codeception\Module\AbstractAsserts::assertContainsOnly()
      */
-    public function assertContainsOnly($type, $haystack, $isNativeType = null, $message = null) {
+    public function assertContainsOnly($type, $haystack, $isNativeType = NULL, $message = "") {
         return $this->getScenario()->runStep(new \Codeception\Step\Action('assertContainsOnly', func_get_args()));
     }
 
@@ -329,7 +329,7 @@ trait UnitTesterActions
      * @param string $message
      * @see \Codeception\Module\AbstractAsserts::assertContainsOnlyInstancesOf()
      */
-    public function assertContainsOnlyInstancesOf($className, $haystack, $message = null) {
+    public function assertContainsOnlyInstancesOf($className, $haystack, $message = "") {
         return $this->getScenario()->runStep(new \Codeception\Step\Action('assertContainsOnlyInstancesOf', func_get_args()));
     }
 
@@ -344,7 +344,7 @@ trait UnitTesterActions
      * @param string $message
      * @see \Codeception\Module\AbstractAsserts::assertCount()
      */
-    public function assertCount($expectedCount, $haystack, $message = null) {
+    public function assertCount($expectedCount, $haystack, $message = "") {
         return $this->getScenario()->runStep(new \Codeception\Step\Action('assertCount', func_get_args()));
     }
 
@@ -358,7 +358,7 @@ trait UnitTesterActions
      * @param string $message
      * @see \Codeception\Module\AbstractAsserts::assertDirectoryDoesNotExist()
      */
-    public function assertDirectoryDoesNotExist($directory, $message = null) {
+    public function assertDirectoryDoesNotExist($directory, $message = "") {
         return $this->getScenario()->runStep(new \Codeception\Step\Action('assertDirectoryDoesNotExist', func_get_args()));
     }
 
@@ -372,7 +372,7 @@ trait UnitTesterActions
      * @param string $message
      * @see \Codeception\Module\AbstractAsserts::assertDirectoryExists()
      */
-    public function assertDirectoryExists($directory, $message = null) {
+    public function assertDirectoryExists($directory, $message = "") {
         return $this->getScenario()->runStep(new \Codeception\Step\Action('assertDirectoryExists', func_get_args()));
     }
 
@@ -386,7 +386,7 @@ trait UnitTesterActions
      * @param string $message
      * @see \Codeception\Module\AbstractAsserts::assertDirectoryIsNotReadable()
      */
-    public function assertDirectoryIsNotReadable($directory, $message = null) {
+    public function assertDirectoryIsNotReadable($directory, $message = "") {
         return $this->getScenario()->runStep(new \Codeception\Step\Action('assertDirectoryIsNotReadable', func_get_args()));
     }
 
@@ -400,7 +400,7 @@ trait UnitTesterActions
      * @param string $message
      * @see \Codeception\Module\AbstractAsserts::assertDirectoryIsNotWritable()
      */
-    public function assertDirectoryIsNotWritable($directory, $message = null) {
+    public function assertDirectoryIsNotWritable($directory, $message = "") {
         return $this->getScenario()->runStep(new \Codeception\Step\Action('assertDirectoryIsNotWritable', func_get_args()));
     }
 
@@ -414,7 +414,7 @@ trait UnitTesterActions
      * @param string $message
      * @see \Codeception\Module\AbstractAsserts::assertDirectoryIsReadable()
      */
-    public function assertDirectoryIsReadable($directory, $message = null) {
+    public function assertDirectoryIsReadable($directory, $message = "") {
         return $this->getScenario()->runStep(new \Codeception\Step\Action('assertDirectoryIsReadable', func_get_args()));
     }
 
@@ -428,7 +428,7 @@ trait UnitTesterActions
      * @param string $message
      * @see \Codeception\Module\AbstractAsserts::assertDirectoryIsWritable()
      */
-    public function assertDirectoryIsWritable($directory, $message = null) {
+    public function assertDirectoryIsWritable($directory, $message = "") {
         return $this->getScenario()->runStep(new \Codeception\Step\Action('assertDirectoryIsWritable', func_get_args()));
     }
 
@@ -443,7 +443,7 @@ trait UnitTesterActions
      * @param string $message
      * @see \Codeception\Module\AbstractAsserts::assertDoesNotMatchRegularExpression()
      */
-    public function assertDoesNotMatchRegularExpression($pattern, $string, $message = null) {
+    public function assertDoesNotMatchRegularExpression($pattern, $string, $message = "") {
         return $this->getScenario()->runStep(new \Codeception\Step\Action('assertDoesNotMatchRegularExpression', func_get_args()));
     }
 
@@ -457,7 +457,7 @@ trait UnitTesterActions
      * @param string $message
      * @see \Codeception\Module\AbstractAsserts::assertEmpty()
      */
-    public function assertEmpty($actual, $message = null) {
+    public function assertEmpty($actual, $message = "") {
         return $this->getScenario()->runStep(new \Codeception\Step\Action('assertEmpty', func_get_args()));
     }
 
@@ -472,7 +472,7 @@ trait UnitTesterActions
      * @param string $message
      * @see \Codeception\Module\AbstractAsserts::assertEquals()
      */
-    public function assertEquals($expected, $actual, $message = null) {
+    public function assertEquals($expected, $actual, $message = "") {
         return $this->getScenario()->runStep(new \Codeception\Step\Action('assertEquals', func_get_args()));
     }
 
@@ -487,7 +487,7 @@ trait UnitTesterActions
      * @param string $message
      * @see \Codeception\Module\AbstractAsserts::assertEqualsCanonicalizing()
      */
-    public function assertEqualsCanonicalizing($expected, $actual, $message = null) {
+    public function assertEqualsCanonicalizing($expected, $actual, $message = "") {
         return $this->getScenario()->runStep(new \Codeception\Step\Action('assertEqualsCanonicalizing', func_get_args()));
     }
 
@@ -502,7 +502,7 @@ trait UnitTesterActions
      * @param string $message
      * @see \Codeception\Module\AbstractAsserts::assertEqualsIgnoringCase()
      */
-    public function assertEqualsIgnoringCase($expected, $actual, $message = null) {
+    public function assertEqualsIgnoringCase($expected, $actual, $message = "") {
         return $this->getScenario()->runStep(new \Codeception\Step\Action('assertEqualsIgnoringCase', func_get_args()));
     }
 
@@ -518,7 +518,7 @@ trait UnitTesterActions
      * @param string $message
      * @see \Codeception\Module\AbstractAsserts::assertEqualsWithDelta()
      */
-    public function assertEqualsWithDelta($expected, $actual, $delta, $message = null) {
+    public function assertEqualsWithDelta($expected, $actual, $delta, $message = "") {
         return $this->getScenario()->runStep(new \Codeception\Step\Action('assertEqualsWithDelta', func_get_args()));
     }
 
@@ -532,7 +532,7 @@ trait UnitTesterActions
      * @param string $message
      * @see \Codeception\Module\AbstractAsserts::assertFalse()
      */
-    public function assertFalse($condition, $message = null) {
+    public function assertFalse($condition, $message = "") {
         return $this->getScenario()->runStep(new \Codeception\Step\Action('assertFalse', func_get_args()));
     }
 
@@ -546,7 +546,7 @@ trait UnitTesterActions
      * @param string $message
      * @see \Codeception\Module\AbstractAsserts::assertFileDoesNotExist()
      */
-    public function assertFileDoesNotExist($filename, $message = null) {
+    public function assertFileDoesNotExist($filename, $message = "") {
         return $this->getScenario()->runStep(new \Codeception\Step\Action('assertFileDoesNotExist', func_get_args()));
     }
 
@@ -561,7 +561,7 @@ trait UnitTesterActions
      * @param string $message
      * @see \Codeception\Module\AbstractAsserts::assertFileEquals()
      */
-    public function assertFileEquals($expected, $actual, $message = null) {
+    public function assertFileEquals($expected, $actual, $message = "") {
         return $this->getScenario()->runStep(new \Codeception\Step\Action('assertFileEquals', func_get_args()));
     }
 
@@ -576,7 +576,7 @@ trait UnitTesterActions
      * @param string $message
      * @see \Codeception\Module\AbstractAsserts::assertFileEqualsCanonicalizing()
      */
-    public function assertFileEqualsCanonicalizing($expected, $actual, $message = null) {
+    public function assertFileEqualsCanonicalizing($expected, $actual, $message = "") {
         return $this->getScenario()->runStep(new \Codeception\Step\Action('assertFileEqualsCanonicalizing', func_get_args()));
     }
 
@@ -591,7 +591,7 @@ trait UnitTesterActions
      * @param string $message
      * @see \Codeception\Module\AbstractAsserts::assertFileEqualsIgnoringCase()
      */
-    public function assertFileEqualsIgnoringCase($expected, $actual, $message = null) {
+    public function assertFileEqualsIgnoringCase($expected, $actual, $message = "") {
         return $this->getScenario()->runStep(new \Codeception\Step\Action('assertFileEqualsIgnoringCase', func_get_args()));
     }
 
@@ -605,7 +605,7 @@ trait UnitTesterActions
      * @param string $message
      * @see \Codeception\Module\AbstractAsserts::assertFileExists()
      */
-    public function assertFileExists($filename, $message = null) {
+    public function assertFileExists($filename, $message = "") {
         return $this->getScenario()->runStep(new \Codeception\Step\Action('assertFileExists', func_get_args()));
     }
 
@@ -619,7 +619,7 @@ trait UnitTesterActions
      * @param string $message
      * @see \Codeception\Module\AbstractAsserts::assertFileIsNotReadable()
      */
-    public function assertFileIsNotReadable($file, $message = null) {
+    public function assertFileIsNotReadable($file, $message = "") {
         return $this->getScenario()->runStep(new \Codeception\Step\Action('assertFileIsNotReadable', func_get_args()));
     }
 
@@ -633,7 +633,7 @@ trait UnitTesterActions
      * @param string $message
      * @see \Codeception\Module\AbstractAsserts::assertFileIsNotWritable()
      */
-    public function assertFileIsNotWritable($file, $message = null) {
+    public function assertFileIsNotWritable($file, $message = "") {
         return $this->getScenario()->runStep(new \Codeception\Step\Action('assertFileIsNotWritable', func_get_args()));
     }
 
@@ -647,7 +647,7 @@ trait UnitTesterActions
      * @param string $message
      * @see \Codeception\Module\AbstractAsserts::assertFileIsReadable()
      */
-    public function assertFileIsReadable($file, $message = null) {
+    public function assertFileIsReadable($file, $message = "") {
         return $this->getScenario()->runStep(new \Codeception\Step\Action('assertFileIsReadable', func_get_args()));
     }
 
@@ -661,7 +661,7 @@ trait UnitTesterActions
      * @param string $message
      * @see \Codeception\Module\AbstractAsserts::assertFileIsWritable()
      */
-    public function assertFileIsWritable($file, $message = null) {
+    public function assertFileIsWritable($file, $message = "") {
         return $this->getScenario()->runStep(new \Codeception\Step\Action('assertFileIsWritable', func_get_args()));
     }
 
@@ -676,7 +676,7 @@ trait UnitTesterActions
      * @param string $message
      * @see \Codeception\Module\AbstractAsserts::assertFileNotEquals()
      */
-    public function assertFileNotEquals($expected, $actual, $message = null) {
+    public function assertFileNotEquals($expected, $actual, $message = "") {
         return $this->getScenario()->runStep(new \Codeception\Step\Action('assertFileNotEquals', func_get_args()));
     }
 
@@ -691,7 +691,7 @@ trait UnitTesterActions
      * @param string $message
      * @see \Codeception\Module\AbstractAsserts::assertFileNotEqualsCanonicalizing()
      */
-    public function assertFileNotEqualsCanonicalizing($expected, $actual, $message = null) {
+    public function assertFileNotEqualsCanonicalizing($expected, $actual, $message = "") {
         return $this->getScenario()->runStep(new \Codeception\Step\Action('assertFileNotEqualsCanonicalizing', func_get_args()));
     }
 
@@ -706,7 +706,7 @@ trait UnitTesterActions
      * @param string $message
      * @see \Codeception\Module\AbstractAsserts::assertFileNotEqualsIgnoringCase()
      */
-    public function assertFileNotEqualsIgnoringCase($expected, $actual, $message = null) {
+    public function assertFileNotEqualsIgnoringCase($expected, $actual, $message = "") {
         return $this->getScenario()->runStep(new \Codeception\Step\Action('assertFileNotEqualsIgnoringCase', func_get_args()));
     }
 
@@ -720,7 +720,7 @@ trait UnitTesterActions
      * @param string $message
      * @see \Codeception\Module\AbstractAsserts::assertFinite()
      */
-    public function assertFinite($actual, $message = null) {
+    public function assertFinite($actual, $message = "") {
         return $this->getScenario()->runStep(new \Codeception\Step\Action('assertFinite', func_get_args()));
     }
 
@@ -735,7 +735,7 @@ trait UnitTesterActions
      * @param string $message
      * @see \Codeception\Module\AbstractAsserts::assertGreaterThan()
      */
-    public function assertGreaterThan($expected, $actual, $message = null) {
+    public function assertGreaterThan($expected, $actual, $message = "") {
         return $this->getScenario()->runStep(new \Codeception\Step\Action('assertGreaterThan', func_get_args()));
     }
 
@@ -750,7 +750,7 @@ trait UnitTesterActions
      * @param string $message
      * @see \Codeception\Module\AbstractAsserts::assertGreaterThanOrEqual()
      */
-    public function assertGreaterThanOrEqual($expected, $actual, $message = null) {
+    public function assertGreaterThanOrEqual($expected, $actual, $message = "") {
         return $this->getScenario()->runStep(new \Codeception\Step\Action('assertGreaterThanOrEqual', func_get_args()));
     }
 
@@ -764,7 +764,7 @@ trait UnitTesterActions
      * @param string $message
      * @see \Codeception\Module\AbstractAsserts::assertInfinite()
      */
-    public function assertInfinite($actual, $message = null) {
+    public function assertInfinite($actual, $message = "") {
         return $this->getScenario()->runStep(new \Codeception\Step\Action('assertInfinite', func_get_args()));
     }
 
@@ -779,7 +779,7 @@ trait UnitTesterActions
      * @param string $message
      * @see \Codeception\Module\AbstractAsserts::assertInstanceOf()
      */
-    public function assertInstanceOf($expected, $actual, $message = null) {
+    public function assertInstanceOf($expected, $actual, $message = "") {
         return $this->getScenario()->runStep(new \Codeception\Step\Action('assertInstanceOf', func_get_args()));
     }
 
@@ -793,7 +793,7 @@ trait UnitTesterActions
      * @param string $message
      * @see \Codeception\Module\AbstractAsserts::assertIsArray()
      */
-    public function assertIsArray($actual, $message = null) {
+    public function assertIsArray($actual, $message = "") {
         return $this->getScenario()->runStep(new \Codeception\Step\Action('assertIsArray', func_get_args()));
     }
 
@@ -807,7 +807,7 @@ trait UnitTesterActions
      * @param string $message
      * @see \Codeception\Module\AbstractAsserts::assertIsBool()
      */
-    public function assertIsBool($actual, $message = null) {
+    public function assertIsBool($actual, $message = "") {
         return $this->getScenario()->runStep(new \Codeception\Step\Action('assertIsBool', func_get_args()));
     }
 
@@ -821,7 +821,7 @@ trait UnitTesterActions
      * @param string $message
      * @see \Codeception\Module\AbstractAsserts::assertIsCallable()
      */
-    public function assertIsCallable($actual, $message = null) {
+    public function assertIsCallable($actual, $message = "") {
         return $this->getScenario()->runStep(new \Codeception\Step\Action('assertIsCallable', func_get_args()));
     }
 
@@ -835,7 +835,7 @@ trait UnitTesterActions
      * @param string $message
      * @see \Codeception\Module\AbstractAsserts::assertIsClosedResource()
      */
-    public function assertIsClosedResource($actual, $message = null) {
+    public function assertIsClosedResource($actual, $message = "") {
         return $this->getScenario()->runStep(new \Codeception\Step\Action('assertIsClosedResource', func_get_args()));
     }
 
@@ -849,7 +849,7 @@ trait UnitTesterActions
      * @param string $message
      * @see \Codeception\Module\AbstractAsserts::assertIsFloat()
      */
-    public function assertIsFloat($actual, $message = null) {
+    public function assertIsFloat($actual, $message = "") {
         return $this->getScenario()->runStep(new \Codeception\Step\Action('assertIsFloat', func_get_args()));
     }
 
@@ -863,7 +863,7 @@ trait UnitTesterActions
      * @param string $message
      * @see \Codeception\Module\AbstractAsserts::assertIsInt()
      */
-    public function assertIsInt($actual, $message = null) {
+    public function assertIsInt($actual, $message = "") {
         return $this->getScenario()->runStep(new \Codeception\Step\Action('assertIsInt', func_get_args()));
     }
 
@@ -877,7 +877,7 @@ trait UnitTesterActions
      * @param string $message
      * @see \Codeception\Module\AbstractAsserts::assertIsIterable()
      */
-    public function assertIsIterable($actual, $message = null) {
+    public function assertIsIterable($actual, $message = "") {
         return $this->getScenario()->runStep(new \Codeception\Step\Action('assertIsIterable', func_get_args()));
     }
 
@@ -891,7 +891,7 @@ trait UnitTesterActions
      * @param string $message
      * @see \Codeception\Module\AbstractAsserts::assertIsNotArray()
      */
-    public function assertIsNotArray($actual, $message = null) {
+    public function assertIsNotArray($actual, $message = "") {
         return $this->getScenario()->runStep(new \Codeception\Step\Action('assertIsNotArray', func_get_args()));
     }
 
@@ -905,7 +905,7 @@ trait UnitTesterActions
      * @param string $message
      * @see \Codeception\Module\AbstractAsserts::assertIsNotBool()
      */
-    public function assertIsNotBool($actual, $message = null) {
+    public function assertIsNotBool($actual, $message = "") {
         return $this->getScenario()->runStep(new \Codeception\Step\Action('assertIsNotBool', func_get_args()));
     }
 
@@ -919,7 +919,7 @@ trait UnitTesterActions
      * @param string $message
      * @see \Codeception\Module\AbstractAsserts::assertIsNotCallable()
      */
-    public function assertIsNotCallable($actual, $message = null) {
+    public function assertIsNotCallable($actual, $message = "") {
         return $this->getScenario()->runStep(new \Codeception\Step\Action('assertIsNotCallable', func_get_args()));
     }
 
@@ -933,7 +933,7 @@ trait UnitTesterActions
      * @param string $message
      * @see \Codeception\Module\AbstractAsserts::assertIsNotClosedResource()
      */
-    public function assertIsNotClosedResource($actual, $message = null) {
+    public function assertIsNotClosedResource($actual, $message = "") {
         return $this->getScenario()->runStep(new \Codeception\Step\Action('assertIsNotClosedResource', func_get_args()));
     }
 
@@ -947,7 +947,7 @@ trait UnitTesterActions
      * @param string $message
      * @see \Codeception\Module\AbstractAsserts::assertIsNotFloat()
      */
-    public function assertIsNotFloat($actual, $message = null) {
+    public function assertIsNotFloat($actual, $message = "") {
         return $this->getScenario()->runStep(new \Codeception\Step\Action('assertIsNotFloat', func_get_args()));
     }
 
@@ -961,7 +961,7 @@ trait UnitTesterActions
      * @param string $message
      * @see \Codeception\Module\AbstractAsserts::assertIsNotInt()
      */
-    public function assertIsNotInt($actual, $message = null) {
+    public function assertIsNotInt($actual, $message = "") {
         return $this->getScenario()->runStep(new \Codeception\Step\Action('assertIsNotInt', func_get_args()));
     }
 
@@ -975,7 +975,7 @@ trait UnitTesterActions
      * @param string $message
      * @see \Codeception\Module\AbstractAsserts::assertIsNotIterable()
      */
-    public function assertIsNotIterable($actual, $message = null) {
+    public function assertIsNotIterable($actual, $message = "") {
         return $this->getScenario()->runStep(new \Codeception\Step\Action('assertIsNotIterable', func_get_args()));
     }
 
@@ -989,7 +989,7 @@ trait UnitTesterActions
      * @param string $message
      * @see \Codeception\Module\AbstractAsserts::assertIsNotNumeric()
      */
-    public function assertIsNotNumeric($actual, $message = null) {
+    public function assertIsNotNumeric($actual, $message = "") {
         return $this->getScenario()->runStep(new \Codeception\Step\Action('assertIsNotNumeric', func_get_args()));
     }
 
@@ -1003,7 +1003,7 @@ trait UnitTesterActions
      * @param string $message
      * @see \Codeception\Module\AbstractAsserts::assertIsNotObject()
      */
-    public function assertIsNotObject($actual, $message = null) {
+    public function assertIsNotObject($actual, $message = "") {
         return $this->getScenario()->runStep(new \Codeception\Step\Action('assertIsNotObject', func_get_args()));
     }
 
@@ -1017,7 +1017,7 @@ trait UnitTesterActions
      * @param string $message
      * @see \Codeception\Module\AbstractAsserts::assertIsNotReadable()
      */
-    public function assertIsNotReadable($filename, $message = null) {
+    public function assertIsNotReadable($filename, $message = "") {
         return $this->getScenario()->runStep(new \Codeception\Step\Action('assertIsNotReadable', func_get_args()));
     }
 
@@ -1031,7 +1031,7 @@ trait UnitTesterActions
      * @param string $message
      * @see \Codeception\Module\AbstractAsserts::assertIsNotResource()
      */
-    public function assertIsNotResource($actual, $message = null) {
+    public function assertIsNotResource($actual, $message = "") {
         return $this->getScenario()->runStep(new \Codeception\Step\Action('assertIsNotResource', func_get_args()));
     }
 
@@ -1045,7 +1045,7 @@ trait UnitTesterActions
      * @param string $message
      * @see \Codeception\Module\AbstractAsserts::assertIsNotScalar()
      */
-    public function assertIsNotScalar($actual, $message = null) {
+    public function assertIsNotScalar($actual, $message = "") {
         return $this->getScenario()->runStep(new \Codeception\Step\Action('assertIsNotScalar', func_get_args()));
     }
 
@@ -1059,7 +1059,7 @@ trait UnitTesterActions
      * @param string $message
      * @see \Codeception\Module\AbstractAsserts::assertIsNotString()
      */
-    public function assertIsNotString($actual, $message = null) {
+    public function assertIsNotString($actual, $message = "") {
         return $this->getScenario()->runStep(new \Codeception\Step\Action('assertIsNotString', func_get_args()));
     }
 
@@ -1073,7 +1073,7 @@ trait UnitTesterActions
      * @param string $message
      * @see \Codeception\Module\AbstractAsserts::assertIsNotWritable()
      */
-    public function assertIsNotWritable($filename, $message = null) {
+    public function assertIsNotWritable($filename, $message = "") {
         return $this->getScenario()->runStep(new \Codeception\Step\Action('assertIsNotWritable', func_get_args()));
     }
 
@@ -1087,7 +1087,7 @@ trait UnitTesterActions
      * @param string $message
      * @see \Codeception\Module\AbstractAsserts::assertIsNumeric()
      */
-    public function assertIsNumeric($actual, $message = null) {
+    public function assertIsNumeric($actual, $message = "") {
         return $this->getScenario()->runStep(new \Codeception\Step\Action('assertIsNumeric', func_get_args()));
     }
 
@@ -1101,7 +1101,7 @@ trait UnitTesterActions
      * @param string $message
      * @see \Codeception\Module\AbstractAsserts::assertIsObject()
      */
-    public function assertIsObject($actual, $message = null) {
+    public function assertIsObject($actual, $message = "") {
         return $this->getScenario()->runStep(new \Codeception\Step\Action('assertIsObject', func_get_args()));
     }
 
@@ -1115,7 +1115,7 @@ trait UnitTesterActions
      * @param string $message
      * @see \Codeception\Module\AbstractAsserts::assertIsReadable()
      */
-    public function assertIsReadable($filename, $message = null) {
+    public function assertIsReadable($filename, $message = "") {
         return $this->getScenario()->runStep(new \Codeception\Step\Action('assertIsReadable', func_get_args()));
     }
 
@@ -1129,7 +1129,7 @@ trait UnitTesterActions
      * @param string $message
      * @see \Codeception\Module\AbstractAsserts::assertIsResource()
      */
-    public function assertIsResource($actual, $message = null) {
+    public function assertIsResource($actual, $message = "") {
         return $this->getScenario()->runStep(new \Codeception\Step\Action('assertIsResource', func_get_args()));
     }
 
@@ -1143,7 +1143,7 @@ trait UnitTesterActions
      * @param string $message
      * @see \Codeception\Module\AbstractAsserts::assertIsScalar()
      */
-    public function assertIsScalar($actual, $message = null) {
+    public function assertIsScalar($actual, $message = "") {
         return $this->getScenario()->runStep(new \Codeception\Step\Action('assertIsScalar', func_get_args()));
     }
 
@@ -1157,7 +1157,7 @@ trait UnitTesterActions
      * @param string $message
      * @see \Codeception\Module\AbstractAsserts::assertIsString()
      */
-    public function assertIsString($actual, $message = null) {
+    public function assertIsString($actual, $message = "") {
         return $this->getScenario()->runStep(new \Codeception\Step\Action('assertIsString', func_get_args()));
     }
 
@@ -1171,7 +1171,7 @@ trait UnitTesterActions
      * @param string $message
      * @see \Codeception\Module\AbstractAsserts::assertIsWritable()
      */
-    public function assertIsWritable($filename, $message = null) {
+    public function assertIsWritable($filename, $message = "") {
         return $this->getScenario()->runStep(new \Codeception\Step\Action('assertIsWritable', func_get_args()));
     }
 
@@ -1185,7 +1185,7 @@ trait UnitTesterActions
      * @param string $message
      * @see \Codeception\Module\AbstractAsserts::assertJson()
      */
-    public function assertJson($actualJson, $message = null) {
+    public function assertJson($actualJson, $message = "") {
         return $this->getScenario()->runStep(new \Codeception\Step\Action('assertJson', func_get_args()));
     }
 
@@ -1200,7 +1200,7 @@ trait UnitTesterActions
      * @param string $message
      * @see \Codeception\Module\AbstractAsserts::assertJsonFileEqualsJsonFile()
      */
-    public function assertJsonFileEqualsJsonFile($expectedFile, $actualFile, $message = null) {
+    public function assertJsonFileEqualsJsonFile($expectedFile, $actualFile, $message = "") {
         return $this->getScenario()->runStep(new \Codeception\Step\Action('assertJsonFileEqualsJsonFile', func_get_args()));
     }
 
@@ -1215,7 +1215,7 @@ trait UnitTesterActions
      * @param string $message
      * @see \Codeception\Module\AbstractAsserts::assertJsonFileNotEqualsJsonFile()
      */
-    public function assertJsonFileNotEqualsJsonFile($expectedFile, $actualFile, $message = null) {
+    public function assertJsonFileNotEqualsJsonFile($expectedFile, $actualFile, $message = "") {
         return $this->getScenario()->runStep(new \Codeception\Step\Action('assertJsonFileNotEqualsJsonFile', func_get_args()));
     }
 
@@ -1230,7 +1230,7 @@ trait UnitTesterActions
      * @param string $message
      * @see \Codeception\Module\AbstractAsserts::assertJsonStringEqualsJsonFile()
      */
-    public function assertJsonStringEqualsJsonFile($expectedFile, $actualJson, $message = null) {
+    public function assertJsonStringEqualsJsonFile($expectedFile, $actualJson, $message = "") {
         return $this->getScenario()->runStep(new \Codeception\Step\Action('assertJsonStringEqualsJsonFile', func_get_args()));
     }
 
@@ -1245,7 +1245,7 @@ trait UnitTesterActions
      * @param string $message
      * @see \Codeception\Module\AbstractAsserts::assertJsonStringEqualsJsonString()
      */
-    public function assertJsonStringEqualsJsonString($expectedJson, $actualJson, $message = null) {
+    public function assertJsonStringEqualsJsonString($expectedJson, $actualJson, $message = "") {
         return $this->getScenario()->runStep(new \Codeception\Step\Action('assertJsonStringEqualsJsonString', func_get_args()));
     }
 
@@ -1260,7 +1260,7 @@ trait UnitTesterActions
      * @param string $message
      * @see \Codeception\Module\AbstractAsserts::assertJsonStringNotEqualsJsonFile()
      */
-    public function assertJsonStringNotEqualsJsonFile($expectedFile, $actualJson, $message = null) {
+    public function assertJsonStringNotEqualsJsonFile($expectedFile, $actualJson, $message = "") {
         return $this->getScenario()->runStep(new \Codeception\Step\Action('assertJsonStringNotEqualsJsonFile', func_get_args()));
     }
 
@@ -1275,7 +1275,7 @@ trait UnitTesterActions
      * @param string $message
      * @see \Codeception\Module\AbstractAsserts::assertJsonStringNotEqualsJsonString()
      */
-    public function assertJsonStringNotEqualsJsonString($expectedJson, $actualJson, $message = null) {
+    public function assertJsonStringNotEqualsJsonString($expectedJson, $actualJson, $message = "") {
         return $this->getScenario()->runStep(new \Codeception\Step\Action('assertJsonStringNotEqualsJsonString', func_get_args()));
     }
 
@@ -1290,7 +1290,7 @@ trait UnitTesterActions
      * @param string $message
      * @see \Codeception\Module\AbstractAsserts::assertLessThan()
      */
-    public function assertLessThan($expected, $actual, $message = null) {
+    public function assertLessThan($expected, $actual, $message = "") {
         return $this->getScenario()->runStep(new \Codeception\Step\Action('assertLessThan', func_get_args()));
     }
 
@@ -1305,7 +1305,7 @@ trait UnitTesterActions
      * @param string $message
      * @see \Codeception\Module\AbstractAsserts::assertLessThanOrEqual()
      */
-    public function assertLessThanOrEqual($expected, $actual, $message = null) {
+    public function assertLessThanOrEqual($expected, $actual, $message = "") {
         return $this->getScenario()->runStep(new \Codeception\Step\Action('assertLessThanOrEqual', func_get_args()));
     }
 
@@ -1320,7 +1320,7 @@ trait UnitTesterActions
      * @param string $message
      * @see \Codeception\Module\AbstractAsserts::assertMatchesRegularExpression()
      */
-    public function assertMatchesRegularExpression($pattern, $string, $message = null) {
+    public function assertMatchesRegularExpression($pattern, $string, $message = "") {
         return $this->getScenario()->runStep(new \Codeception\Step\Action('assertMatchesRegularExpression', func_get_args()));
     }
 
@@ -1334,7 +1334,7 @@ trait UnitTesterActions
      * @param string $message
      * @see \Codeception\Module\AbstractAsserts::assertNan()
      */
-    public function assertNan($actual, $message = null) {
+    public function assertNan($actual, $message = "") {
         return $this->getScenario()->runStep(new \Codeception\Step\Action('assertNan', func_get_args()));
     }
 
@@ -1349,7 +1349,7 @@ trait UnitTesterActions
      * @param string $message
      * @see \Codeception\Module\AbstractAsserts::assertNotContains()
      */
-    public function assertNotContains($needle, $haystack, $message = null) {
+    public function assertNotContains($needle, $haystack, $message = "") {
         return $this->getScenario()->runStep(new \Codeception\Step\Action('assertNotContains', func_get_args()));
     }
 
@@ -1360,7 +1360,7 @@ trait UnitTesterActions
      *
      * @see \Codeception\Module\AbstractAsserts::assertNotContainsEquals()
      */
-    public function assertNotContainsEquals($needle, $haystack, $message = null) {
+    public function assertNotContainsEquals($needle, $haystack, $message = "") {
         return $this->getScenario()->runStep(new \Codeception\Step\Action('assertNotContainsEquals', func_get_args()));
     }
 
@@ -1376,7 +1376,7 @@ trait UnitTesterActions
      * @param string $message
      * @see \Codeception\Module\AbstractAsserts::assertNotContainsOnly()
      */
-    public function assertNotContainsOnly($type, $haystack, $isNativeType = null, $message = null) {
+    public function assertNotContainsOnly($type, $haystack, $isNativeType = NULL, $message = "") {
         return $this->getScenario()->runStep(new \Codeception\Step\Action('assertNotContainsOnly', func_get_args()));
     }
 
@@ -1391,7 +1391,7 @@ trait UnitTesterActions
      * @param string $message
      * @see \Codeception\Module\AbstractAsserts::assertNotCount()
      */
-    public function assertNotCount($expectedCount, $haystack, $message = null) {
+    public function assertNotCount($expectedCount, $haystack, $message = "") {
         return $this->getScenario()->runStep(new \Codeception\Step\Action('assertNotCount', func_get_args()));
     }
 
@@ -1405,7 +1405,7 @@ trait UnitTesterActions
      * @param string $message
      * @see \Codeception\Module\AbstractAsserts::assertNotEmpty()
      */
-    public function assertNotEmpty($actual, $message = null) {
+    public function assertNotEmpty($actual, $message = "") {
         return $this->getScenario()->runStep(new \Codeception\Step\Action('assertNotEmpty', func_get_args()));
     }
 
@@ -1420,7 +1420,7 @@ trait UnitTesterActions
      * @param string $message
      * @see \Codeception\Module\AbstractAsserts::assertNotEquals()
      */
-    public function assertNotEquals($expected, $actual, $message = null) {
+    public function assertNotEquals($expected, $actual, $message = "") {
         return $this->getScenario()->runStep(new \Codeception\Step\Action('assertNotEquals', func_get_args()));
     }
 
@@ -1435,7 +1435,7 @@ trait UnitTesterActions
      * @param string $message
      * @see \Codeception\Module\AbstractAsserts::assertNotEqualsCanonicalizing()
      */
-    public function assertNotEqualsCanonicalizing($expected, $actual, $message = null) {
+    public function assertNotEqualsCanonicalizing($expected, $actual, $message = "") {
         return $this->getScenario()->runStep(new \Codeception\Step\Action('assertNotEqualsCanonicalizing', func_get_args()));
     }
 
@@ -1450,7 +1450,7 @@ trait UnitTesterActions
      * @param string $message
      * @see \Codeception\Module\AbstractAsserts::assertNotEqualsIgnoringCase()
      */
-    public function assertNotEqualsIgnoringCase($expected, $actual, $message = null) {
+    public function assertNotEqualsIgnoringCase($expected, $actual, $message = "") {
         return $this->getScenario()->runStep(new \Codeception\Step\Action('assertNotEqualsIgnoringCase', func_get_args()));
     }
 
@@ -1466,7 +1466,7 @@ trait UnitTesterActions
      * @param string $message
      * @see \Codeception\Module\AbstractAsserts::assertNotEqualsWithDelta()
      */
-    public function assertNotEqualsWithDelta($expected, $actual, $delta, $message = null) {
+    public function assertNotEqualsWithDelta($expected, $actual, $delta, $message = "") {
         return $this->getScenario()->runStep(new \Codeception\Step\Action('assertNotEqualsWithDelta', func_get_args()));
     }
 
@@ -1480,7 +1480,7 @@ trait UnitTesterActions
      * @param string $message
      * @see \Codeception\Module\AbstractAsserts::assertNotFalse()
      */
-    public function assertNotFalse($condition, $message = null) {
+    public function assertNotFalse($condition, $message = "") {
         return $this->getScenario()->runStep(new \Codeception\Step\Action('assertNotFalse', func_get_args()));
     }
 
@@ -1495,7 +1495,7 @@ trait UnitTesterActions
      * @param string $message
      * @see \Codeception\Module\AbstractAsserts::assertNotInstanceOf()
      */
-    public function assertNotInstanceOf($expected, $actual, $message = null) {
+    public function assertNotInstanceOf($expected, $actual, $message = "") {
         return $this->getScenario()->runStep(new \Codeception\Step\Action('assertNotInstanceOf', func_get_args()));
     }
 
@@ -1509,7 +1509,7 @@ trait UnitTesterActions
      * @param string $message
      * @see \Codeception\Module\AbstractAsserts::assertNotNull()
      */
-    public function assertNotNull($actual, $message = null) {
+    public function assertNotNull($actual, $message = "") {
         return $this->getScenario()->runStep(new \Codeception\Step\Action('assertNotNull', func_get_args()));
     }
 
@@ -1524,7 +1524,7 @@ trait UnitTesterActions
      * @param string $message
      * @see \Codeception\Module\AbstractAsserts::assertNotSame()
      */
-    public function assertNotSame($expected, $actual, $message = null) {
+    public function assertNotSame($expected, $actual, $message = "") {
         return $this->getScenario()->runStep(new \Codeception\Step\Action('assertNotSame', func_get_args()));
     }
 
@@ -1539,7 +1539,7 @@ trait UnitTesterActions
      * @param string $message
      * @see \Codeception\Module\AbstractAsserts::assertNotSameSize()
      */
-    public function assertNotSameSize($expected, $actual, $message = null) {
+    public function assertNotSameSize($expected, $actual, $message = "") {
         return $this->getScenario()->runStep(new \Codeception\Step\Action('assertNotSameSize', func_get_args()));
     }
 
@@ -1553,7 +1553,7 @@ trait UnitTesterActions
      * @param string $message
      * @see \Codeception\Module\AbstractAsserts::assertNotTrue()
      */
-    public function assertNotTrue($condition, $message = null) {
+    public function assertNotTrue($condition, $message = "") {
         return $this->getScenario()->runStep(new \Codeception\Step\Action('assertNotTrue', func_get_args()));
     }
 
@@ -1567,7 +1567,7 @@ trait UnitTesterActions
      * @param string $message
      * @see \Codeception\Module\AbstractAsserts::assertNull()
      */
-    public function assertNull($actual, $message = null) {
+    public function assertNull($actual, $message = "") {
         return $this->getScenario()->runStep(new \Codeception\Step\Action('assertNull', func_get_args()));
     }
 
@@ -1582,7 +1582,7 @@ trait UnitTesterActions
      * @param string $message
      * @see \Codeception\Module\AbstractAsserts::assertObjectHasAttribute()
      */
-    public function assertObjectHasAttribute($attributeName, $object, $message = null) {
+    public function assertObjectHasAttribute($attributeName, $object, $message = "") {
         return $this->getScenario()->runStep(new \Codeception\Step\Action('assertObjectHasAttribute', func_get_args()));
     }
 
@@ -1597,7 +1597,7 @@ trait UnitTesterActions
      * @param string $message
      * @see \Codeception\Module\AbstractAsserts::assertObjectNotHasAttribute()
      */
-    public function assertObjectNotHasAttribute($attributeName, $object, $message = null) {
+    public function assertObjectNotHasAttribute($attributeName, $object, $message = "") {
         return $this->getScenario()->runStep(new \Codeception\Step\Action('assertObjectNotHasAttribute', func_get_args()));
     }
 
@@ -1612,7 +1612,7 @@ trait UnitTesterActions
      * @param string $message
      * @see \Codeception\Module\AbstractAsserts::assertSame()
      */
-    public function assertSame($expected, $actual, $message = null) {
+    public function assertSame($expected, $actual, $message = "") {
         return $this->getScenario()->runStep(new \Codeception\Step\Action('assertSame', func_get_args()));
     }
 
@@ -1627,7 +1627,7 @@ trait UnitTesterActions
      * @param string $message
      * @see \Codeception\Module\AbstractAsserts::assertSameSize()
      */
-    public function assertSameSize($expected, $actual, $message = null) {
+    public function assertSameSize($expected, $actual, $message = "") {
         return $this->getScenario()->runStep(new \Codeception\Step\Action('assertSameSize', func_get_args()));
     }
 
@@ -1640,7 +1640,7 @@ trait UnitTesterActions
      * @param string $message
      * @see \Codeception\Module\AbstractAsserts::assertStringContainsString()
      */
-    public function assertStringContainsString($needle, $haystack, $message = null) {
+    public function assertStringContainsString($needle, $haystack, $message = "") {
         return $this->getScenario()->runStep(new \Codeception\Step\Action('assertStringContainsString', func_get_args()));
     }
 
@@ -1651,7 +1651,7 @@ trait UnitTesterActions
      *
      * @see \Codeception\Module\AbstractAsserts::assertStringContainsStringIgnoringCase()
      */
-    public function assertStringContainsStringIgnoringCase($needle, $haystack, $message = null) {
+    public function assertStringContainsStringIgnoringCase($needle, $haystack, $message = "") {
         return $this->getScenario()->runStep(new \Codeception\Step\Action('assertStringContainsStringIgnoringCase', func_get_args()));
     }
 
@@ -1666,7 +1666,7 @@ trait UnitTesterActions
      * @param string $message
      * @see \Codeception\Module\AbstractAsserts::assertStringEndsNotWith()
      */
-    public function assertStringEndsNotWith($suffix, $string, $message = null) {
+    public function assertStringEndsNotWith($suffix, $string, $message = "") {
         return $this->getScenario()->runStep(new \Codeception\Step\Action('assertStringEndsNotWith', func_get_args()));
     }
 
@@ -1681,7 +1681,7 @@ trait UnitTesterActions
      * @param string $message
      * @see \Codeception\Module\AbstractAsserts::assertStringEndsWith()
      */
-    public function assertStringEndsWith($suffix, $string, $message = null) {
+    public function assertStringEndsWith($suffix, $string, $message = "") {
         return $this->getScenario()->runStep(new \Codeception\Step\Action('assertStringEndsWith', func_get_args()));
     }
 
@@ -1696,7 +1696,7 @@ trait UnitTesterActions
      * @param string $message
      * @see \Codeception\Module\AbstractAsserts::assertStringEqualsFile()
      */
-    public function assertStringEqualsFile($expectedFile, $actualString, $message = null) {
+    public function assertStringEqualsFile($expectedFile, $actualString, $message = "") {
         return $this->getScenario()->runStep(new \Codeception\Step\Action('assertStringEqualsFile', func_get_args()));
     }
 
@@ -1711,7 +1711,7 @@ trait UnitTesterActions
      * @param string $message
      * @see \Codeception\Module\AbstractAsserts::assertStringEqualsFileCanonicalizing()
      */
-    public function assertStringEqualsFileCanonicalizing($expectedFile, $actualString, $message = null) {
+    public function assertStringEqualsFileCanonicalizing($expectedFile, $actualString, $message = "") {
         return $this->getScenario()->runStep(new \Codeception\Step\Action('assertStringEqualsFileCanonicalizing', func_get_args()));
     }
 
@@ -1726,7 +1726,7 @@ trait UnitTesterActions
      * @param string $message
      * @see \Codeception\Module\AbstractAsserts::assertStringEqualsFileIgnoringCase()
      */
-    public function assertStringEqualsFileIgnoringCase($expectedFile, $actualString, $message = null) {
+    public function assertStringEqualsFileIgnoringCase($expectedFile, $actualString, $message = "") {
         return $this->getScenario()->runStep(new \Codeception\Step\Action('assertStringEqualsFileIgnoringCase', func_get_args()));
     }
 
@@ -1741,7 +1741,7 @@ trait UnitTesterActions
      * @param string $message
      * @see \Codeception\Module\AbstractAsserts::assertStringMatchesFormat()
      */
-    public function assertStringMatchesFormat($format, $string, $message = null) {
+    public function assertStringMatchesFormat($format, $string, $message = "") {
         return $this->getScenario()->runStep(new \Codeception\Step\Action('assertStringMatchesFormat', func_get_args()));
     }
 
@@ -1756,7 +1756,7 @@ trait UnitTesterActions
      * @param string $message
      * @see \Codeception\Module\AbstractAsserts::assertStringMatchesFormatFile()
      */
-    public function assertStringMatchesFormatFile($formatFile, $string, $message = null) {
+    public function assertStringMatchesFormatFile($formatFile, $string, $message = "") {
         return $this->getScenario()->runStep(new \Codeception\Step\Action('assertStringMatchesFormatFile', func_get_args()));
     }
 
@@ -1769,7 +1769,7 @@ trait UnitTesterActions
      * @param string $message
      * @see \Codeception\Module\AbstractAsserts::assertStringNotContainsString()
      */
-    public function assertStringNotContainsString($needle, $haystack, $message = null) {
+    public function assertStringNotContainsString($needle, $haystack, $message = "") {
         return $this->getScenario()->runStep(new \Codeception\Step\Action('assertStringNotContainsString', func_get_args()));
     }
 
@@ -1782,7 +1782,7 @@ trait UnitTesterActions
      * @param string $message
      * @see \Codeception\Module\AbstractAsserts::assertStringNotContainsStringIgnoringCase()
      */
-    public function assertStringNotContainsStringIgnoringCase($needle, $haystack, $message = null) {
+    public function assertStringNotContainsStringIgnoringCase($needle, $haystack, $message = "") {
         return $this->getScenario()->runStep(new \Codeception\Step\Action('assertStringNotContainsStringIgnoringCase', func_get_args()));
     }
 
@@ -1797,7 +1797,7 @@ trait UnitTesterActions
      * @param string $message
      * @see \Codeception\Module\AbstractAsserts::assertStringNotEqualsFile()
      */
-    public function assertStringNotEqualsFile($expectedFile, $actualString, $message = null) {
+    public function assertStringNotEqualsFile($expectedFile, $actualString, $message = "") {
         return $this->getScenario()->runStep(new \Codeception\Step\Action('assertStringNotEqualsFile', func_get_args()));
     }
 
@@ -1811,7 +1811,7 @@ trait UnitTesterActions
      * @param string $message
      * @see \Codeception\Module\AbstractAsserts::assertStringNotEqualsFileCanonicalizing()
      */
-    public function assertStringNotEqualsFileCanonicalizing($expectedFile, $actualString, $message = null) {
+    public function assertStringNotEqualsFileCanonicalizing($expectedFile, $actualString, $message = "") {
         return $this->getScenario()->runStep(new \Codeception\Step\Action('assertStringNotEqualsFileCanonicalizing', func_get_args()));
     }
 
@@ -1826,7 +1826,7 @@ trait UnitTesterActions
      * @param string $message
      * @see \Codeception\Module\AbstractAsserts::assertStringNotEqualsFileIgnoringCase()
      */
-    public function assertStringNotEqualsFileIgnoringCase($expectedFile, $actualString, $message = null) {
+    public function assertStringNotEqualsFileIgnoringCase($expectedFile, $actualString, $message = "") {
         return $this->getScenario()->runStep(new \Codeception\Step\Action('assertStringNotEqualsFileIgnoringCase', func_get_args()));
     }
 
@@ -1841,7 +1841,7 @@ trait UnitTesterActions
      * @param string $message
      * @see \Codeception\Module\AbstractAsserts::assertStringNotMatchesFormat()
      */
-    public function assertStringNotMatchesFormat($format, $string, $message = null) {
+    public function assertStringNotMatchesFormat($format, $string, $message = "") {
         return $this->getScenario()->runStep(new \Codeception\Step\Action('assertStringNotMatchesFormat', func_get_args()));
     }
 
@@ -1856,7 +1856,7 @@ trait UnitTesterActions
      * @param string $message
      * @see \Codeception\Module\AbstractAsserts::assertStringNotMatchesFormatFile()
      */
-    public function assertStringNotMatchesFormatFile($formatFile, $string, $message = null) {
+    public function assertStringNotMatchesFormatFile($formatFile, $string, $message = "") {
         return $this->getScenario()->runStep(new \Codeception\Step\Action('assertStringNotMatchesFormatFile', func_get_args()));
     }
 
@@ -1871,7 +1871,7 @@ trait UnitTesterActions
      * @param string $message
      * @see \Codeception\Module\AbstractAsserts::assertStringStartsNotWith()
      */
-    public function assertStringStartsNotWith($prefix, $string, $message = null) {
+    public function assertStringStartsNotWith($prefix, $string, $message = "") {
         return $this->getScenario()->runStep(new \Codeception\Step\Action('assertStringStartsNotWith', func_get_args()));
     }
 
@@ -1886,7 +1886,7 @@ trait UnitTesterActions
      * @param string $message
      * @see \Codeception\Module\AbstractAsserts::assertStringStartsWith()
      */
-    public function assertStringStartsWith($prefix, $string, $message = null) {
+    public function assertStringStartsWith($prefix, $string, $message = "") {
         return $this->getScenario()->runStep(new \Codeception\Step\Action('assertStringStartsWith', func_get_args()));
     }
 
@@ -1901,7 +1901,7 @@ trait UnitTesterActions
      * @param string $message
      * @see \Codeception\Module\AbstractAsserts::assertThat()
      */
-    public function assertThat($value, $constraint, $message = null) {
+    public function assertThat($value, $constraint, $message = "") {
         return $this->getScenario()->runStep(new \Codeception\Step\Action('assertThat', func_get_args()));
     }
 
@@ -1915,7 +1915,7 @@ trait UnitTesterActions
      * @param string $message
      * @see \Codeception\Module\AbstractAsserts::assertTrue()
      */
-    public function assertTrue($condition, $message = null) {
+    public function assertTrue($condition, $message = "") {
         return $this->getScenario()->runStep(new \Codeception\Step\Action('assertTrue', func_get_args()));
     }
 
@@ -1930,7 +1930,7 @@ trait UnitTesterActions
      * @param string $message
      * @see \Codeception\Module\AbstractAsserts::assertXmlFileEqualsXmlFile()
      */
-    public function assertXmlFileEqualsXmlFile($expectedFile, $actualFile, $message = null) {
+    public function assertXmlFileEqualsXmlFile($expectedFile, $actualFile, $message = "") {
         return $this->getScenario()->runStep(new \Codeception\Step\Action('assertXmlFileEqualsXmlFile', func_get_args()));
     }
 
@@ -1945,7 +1945,7 @@ trait UnitTesterActions
      * @param string $message
      * @see \Codeception\Module\AbstractAsserts::assertXmlFileNotEqualsXmlFile()
      */
-    public function assertXmlFileNotEqualsXmlFile($expectedFile, $actualFile, $message = null) {
+    public function assertXmlFileNotEqualsXmlFile($expectedFile, $actualFile, $message = "") {
         return $this->getScenario()->runStep(new \Codeception\Step\Action('assertXmlFileNotEqualsXmlFile', func_get_args()));
     }
 
@@ -1960,7 +1960,7 @@ trait UnitTesterActions
      * @param string $message
      * @see \Codeception\Module\AbstractAsserts::assertXmlStringEqualsXmlFile()
      */
-    public function assertXmlStringEqualsXmlFile($expectedFile, $actualXml, $message = null) {
+    public function assertXmlStringEqualsXmlFile($expectedFile, $actualXml, $message = "") {
         return $this->getScenario()->runStep(new \Codeception\Step\Action('assertXmlStringEqualsXmlFile', func_get_args()));
     }
 
@@ -1975,7 +1975,7 @@ trait UnitTesterActions
      * @param string $message
      * @see \Codeception\Module\AbstractAsserts::assertXmlStringEqualsXmlString()
      */
-    public function assertXmlStringEqualsXmlString($expectedXml, $actualXml, $message = null) {
+    public function assertXmlStringEqualsXmlString($expectedXml, $actualXml, $message = "") {
         return $this->getScenario()->runStep(new \Codeception\Step\Action('assertXmlStringEqualsXmlString', func_get_args()));
     }
 
@@ -1990,7 +1990,7 @@ trait UnitTesterActions
      * @param string $message
      * @see \Codeception\Module\AbstractAsserts::assertXmlStringNotEqualsXmlFile()
      */
-    public function assertXmlStringNotEqualsXmlFile($expectedFile, $actualXml, $message = null) {
+    public function assertXmlStringNotEqualsXmlFile($expectedFile, $actualXml, $message = "") {
         return $this->getScenario()->runStep(new \Codeception\Step\Action('assertXmlStringNotEqualsXmlFile', func_get_args()));
     }
 
@@ -2005,7 +2005,7 @@ trait UnitTesterActions
      * @param string $message
      * @see \Codeception\Module\AbstractAsserts::assertXmlStringNotEqualsXmlString()
      */
-    public function assertXmlStringNotEqualsXmlString($expectedXml, $actualXml, $message = null) {
+    public function assertXmlStringNotEqualsXmlString($expectedXml, $actualXml, $message = "") {
         return $this->getScenario()->runStep(new \Codeception\Step\Action('assertXmlStringNotEqualsXmlString', func_get_args()));
     }
 
@@ -2018,7 +2018,7 @@ trait UnitTesterActions
      * @param string $message
      * @see \Codeception\Module\AbstractAsserts::fail()
      */
-    public function fail($message = null) {
+    public function fail($message = "") {
         return $this->getScenario()->runStep(new \Codeception\Step\Action('fail', func_get_args()));
     }
 
@@ -2031,7 +2031,7 @@ trait UnitTesterActions
      * @param string $message
      * @see \Codeception\Module\AbstractAsserts::markTestIncomplete()
      */
-    public function markTestIncomplete($message = null) {
+    public function markTestIncomplete($message = "") {
         return $this->getScenario()->runStep(new \Codeception\Step\Action('markTestIncomplete', func_get_args()));
     }
 
@@ -2044,7 +2044,7 @@ trait UnitTesterActions
      * @param string $message
      * @see \Codeception\Module\AbstractAsserts::markTestSkipped()
      */
-    public function markTestSkipped($message = null) {
+    public function markTestSkipped($message = "") {
         return $this->getScenario()->runStep(new \Codeception\Step\Action('markTestSkipped', func_get_args()));
     }
 }
diff --git a/tests/jsonapi/UserEventsIcalTest.php b/tests/jsonapi/UserEventsIcalTest.php
index 359763fbe0b339415227050c07905db9b40ff842..bf3d2ba5104b91d12a14cba3d607a8b2343b5a44 100644
--- a/tests/jsonapi/UserEventsIcalTest.php
+++ b/tests/jsonapi/UserEventsIcalTest.php
@@ -42,7 +42,7 @@ class UserEventsIcalTest extends \Codeception\Test\Unit
         $response = $app($requestBuilder->getRequest(), new \Slim\Http\Response());
 
         $this->tester->assertEquals(200, $response->getStatusCode());
-        $this->tester->assertContains('BEGIN:VEVENT', (string) $response->getBody());
-        $this->tester->assertContains('SUMMARY:blypyp', (string) $response->getBody());
+        $this->tester->assertStringContainsString('BEGIN:VEVENT', (string) $response->getBody());
+        $this->tester->assertStringContainsString('SUMMARY:blypyp', (string) $response->getBody());
     }
 }
diff --git a/tests/jsonapi/WikiCreateTest.php b/tests/jsonapi/WikiCreateTest.php
index 993fe740ad39efc425dd118b522fc64a8f5fff3b..114d450b4de134d99cfe4184f301272c65a3a423 100644
--- a/tests/jsonapi/WikiCreateTest.php
+++ b/tests/jsonapi/WikiCreateTest.php
@@ -55,6 +55,7 @@ class WikiCreateTest extends \Codeception\Test\Unit
             '/courses/{id}/wiki',
             WikiCreate::class
         );
+        $app->get('/wiki-pages/{id}', function () {})->setName('get-wiki-page');
 
         return $this->tester->sendMockRequest(
             $app,
diff --git a/tests/jsonapi/WikiIndexTest.php b/tests/jsonapi/WikiIndexTest.php
index 3fe78a107d80868da680df6c057de394e388eaf8..1113672ef049e734de6933cea05a6740df9a2acd 100644
--- a/tests/jsonapi/WikiIndexTest.php
+++ b/tests/jsonapi/WikiIndexTest.php
@@ -23,7 +23,7 @@ class WikiIndexTest extends \Codeception\Test\Unit
     {
         $credentials = $this->tester->getCredentialsForTestAutor();
         $rangeId = 'a07535cf2f8a72df33c12ddfa4b53dde';
-        $body = studip_utf8decode('Es gibt im Moment in diese Mannschaft, oh, einige Spieler vergessen ihren Profi was sie sind. Ich lese nicht sehr viele Zeitungen, aberich habe gehört viele Situationen. Erstens: Wir haben nicht offensivgespielt.');
+        $body = 'Es gibt im Moment in diese Mannschaft, oh, einige Spieler vergessen ihren Profi was sie sind. Ich lese nicht sehr viele Zeitungen, aberich habe gehört viele Situationen. Erstens: Wir haben nicht offensivgespielt.';
 
         $this->createWikiPage($credentials['id'], $rangeId, 'yxilo', $body);
         $this->createWikiPage($credentials['id'], $rangeId, 'ulyq', $body);
@@ -37,7 +37,7 @@ class WikiIndexTest extends \Codeception\Test\Unit
         $this->tester->assertCount(count($countPages), $wikiPages);
 
         $wikiPage = current($wikiPages);
-        $this->tester->assertEquals($body, studip_utf8decode($wikiPage->attribute('content')));
+        $this->tester->assertEquals($body, $wikiPage->attribute('content'));
 
         $this->tester->storeJsonMd('get_wiki_pages', $response, 2, '[...]');
     }
@@ -46,6 +46,7 @@ class WikiIndexTest extends \Codeception\Test\Unit
     private function getWikiIndex($credentials, $rangeId)
     {
         $app = $this->tester->createApp($credentials, 'get', '/courses/{id}/wiki', WikiIndex::class);
+        $app->get('/wiki-pages/{id}', function () {})->setName('get-wiki-page');
 
         return $this->tester->sendMockRequest(
             $app,
diff --git a/tests/jsonapi/WikiShowTest.php b/tests/jsonapi/WikiShowTest.php
index 310708b7f3cc02e889483cc92a9b11d81f8112c6..51135fc241316e50e67b480afc17c34d40a67357 100644
--- a/tests/jsonapi/WikiShowTest.php
+++ b/tests/jsonapi/WikiShowTest.php
@@ -55,7 +55,7 @@ class WikiShowTest extends \Codeception\Test\Unit
     private function createWikiPage($rangeId, $keyword, $body)
     {
         $wikiPage = new \WikiPage([$rangeId, $keyword, 0]);
-        $wikiPage->body = studip_utf8decode($body);
+        $wikiPage->body = $body;
         $wikiPage->user_id = 'nobody';
         $wikiPage->store();
 
diff --git a/tests/jsonapi/WikiUpdateTest.php b/tests/jsonapi/WikiUpdateTest.php
index 606ae655c7383c7d48e0991036c4ab17765c46c5..380952bb5e6210677e2aebfd759f98545d77b691 100644
--- a/tests/jsonapi/WikiUpdateTest.php
+++ b/tests/jsonapi/WikiUpdateTest.php
@@ -48,6 +48,7 @@ class WikiUpdateTest extends \Codeception\Test\Unit
             ],
         ];
         $app = $this->tester->createApp($credentials, 'patch', '/wiki-pages/{id}', WikiUpdate::class);
+        $app->get('/wiki-pages/{id}', function () {})->setName('get-wiki-page');
 
         return $this->tester->sendMockRequest(
                 $app,
@@ -62,7 +63,7 @@ class WikiUpdateTest extends \Codeception\Test\Unit
     private function createWikiPage($rangeId, $keyword, $body)
     {
         $wikiPage = new \WikiPage([$rangeId, $keyword, 0]);
-        $wikiPage->body = studip_utf8decode($body);
+        $wikiPage->body = $body;
         $wikiPage->user_id = 'nobody';
         $wikiPage->store();
 
diff --git a/tests/unit/_bootstrap.php b/tests/unit/_bootstrap.php
index cfa78f6c70bbc629eac9deeb7a5755e1e46a0f27..31c5c6b8e645e44499d45203b8aba5b22f1aba31 100644
--- a/tests/unit/_bootstrap.php
+++ b/tests/unit/_bootstrap.php
@@ -38,8 +38,13 @@ require_once 'varstream.php';
 define("TEST_FIXTURES_PATH", dirname(__DIR__) . "/_data/");
 
 require __DIR__ . '/../../composer/autoload.php';
+
+global $STUDIP_BASE_PATH;
+$STUDIP_BASE_PATH = realpath(dirname(dirname(__FILE__)) . '/..');
+
 require 'lib/classes/StudipAutoloader.php';
 require 'lib/functions.php';
+require 'lib/visual.inc.php';
 
 StudipAutoloader::setBasePath(realpath(__DIR__ . '/../..'));
 StudipAutoloader::register();
diff --git a/tests/unit/lib/CalendarcolumnClassTest.php b/tests/unit/lib/CalendarcolumnClassTest.php
index 4171a89d9f8719a6ff1a2b444a75281f9d341e4e..063f97edf09d46d78fb0d8f1d4d5ce44a44a4540 100644
--- a/tests/unit/lib/CalendarcolumnClassTest.php
+++ b/tests/unit/lib/CalendarcolumnClassTest.php
@@ -14,11 +14,11 @@ require_once 'lib/calendar/CalendarColumn.class.php';
 class CalendarColumnCase extends \Codeception\Test\Unit {
 
 
-    function setUp() {
+    function setUp(): void {
     }
 
 
-    function tearDown() {
+    function tearDown(): void {
     }
 
 
@@ -62,11 +62,11 @@ class CalendarColumnCase extends \Codeception\Test\Unit {
         $entry = ['start' => "1200", 'end' => "1230", 'title' => "test_title_number_2"];
         $column->addEntry($entry);
         $entries = $column->getEntries();
-        $this->assertInternalType("array", $entries);
+        $this->assertIsArray($entries);
         $this->assertEquals(2, count($entries));
         $this->assertNotEquals($entries[0], $entry);
         $this->assertEquals($entry, $entries[1]);
-        $this->assertInternalType("array", $entries[1]);
+        $this->assertIsArray($entries[1]);
     }
 
     function test_wrong_entry() {
@@ -85,7 +85,7 @@ class CalendarColumnCase extends \Codeception\Test\Unit {
             ['start' => "1200", 'end' => "1400", 'title' => "test_title"]
         ];
         $column = CalendarColumn::create()->addEntries($entries);
-        $this->assertInternalType('array', $column->getEntries());
+        $this->assertIsArray($column->getEntries());
     }
 
     function test_erase_entries() {
@@ -93,7 +93,7 @@ class CalendarColumnCase extends \Codeception\Test\Unit {
         $column = CalendarColumn::create()->addEntry($entry);
         $column->eraseEntries();
         $entries = $column->getEntries();
-        $this->assertInternalType("array", $entries);
+        $this->assertIsArray($entries);
         $this->assertEquals(0, count($entries));
     }
 
diff --git a/tests/unit/lib/CalendarviewClassTest.php b/tests/unit/lib/CalendarviewClassTest.php
index 074f40a8f57310255d0ef60af60ac57b4c6f45b4..962cd06870bebb7d63af4fcd1aa6e9cdf6764d7a 100644
--- a/tests/unit/lib/CalendarviewClassTest.php
+++ b/tests/unit/lib/CalendarviewClassTest.php
@@ -14,11 +14,11 @@ require_once 'lib/calendar/CalendarView.class.php';
 class CalendarViewCase extends \Codeception\Test\Unit {
 
 
-    function setUp() {
+    function setUp(): void {
     }
 
 
-    function tearDown() {
+    function tearDown(): void {
     }
 
 
@@ -56,7 +56,7 @@ class CalendarViewCase extends \Codeception\Test\Unit {
         $id2 = 4;
         $view->addColumn($title2, "", $id2);
         $columns = $view->getColumns();
-        $this->assertInternalType("array", $columns);
+        $this->assertIsArray($columns);
         $this->assertInstanceOf("CalendarColumn", $columns[0]);
         $this->assertEquals($title1, $columns[0]->getTitle());
         $this->assertEquals($id1, $columns[0]->getId());
@@ -87,7 +87,7 @@ class CalendarViewCase extends \Codeception\Test\Unit {
         ];
         $view->addEntry($entry);
         $entries = $view->getEntries();
-        $this->assertInternalType("array", $entries);
+        $this->assertIsArray($entries);
         $this->assertNotNull($entries['day_'.$id]);
     }
 
@@ -101,5 +101,3 @@ class CalendarViewCase extends \Codeception\Test\Unit {
     //Die anderen Methoden muss Till testen.
 
 }
-
-
diff --git a/tests/unit/lib/VisualTest.php b/tests/unit/lib/VisualTest.php
index 3d2f03a77dc713c4e7b91ce680044ab0816f7b4b..f3157b1d1ea8087640fc8b39513807eb02b63227 100644
--- a/tests/unit/lib/VisualTest.php
+++ b/tests/unit/lib/VisualTest.php
@@ -17,7 +17,7 @@ require_once 'lib/classes/SmileyFormat.php';
 
 class VisualFunctionsTest extends \Codeception\Test\Unit
 {
-    public function setUp()
+    public function setUp(): void
     {
         static $config = [
             'LOAD_EXTERNAL_MEDIA' => 'allow',
@@ -30,7 +30,7 @@ class VisualFunctionsTest extends \Codeception\Test\Unit
         $GLOBALS['SYMBOL_SHORT'] = [];
     }
 
-    public function tearDown()
+    public function tearDown(): void
     {
         $GLOBALS['SMILEY_NO_DB'] = false;
     }
diff --git a/tests/unit/lib/classes/AssetsClassTest.php b/tests/unit/lib/classes/AssetsClassTest.php
index 967bde095fb4fe08634074bfceda4aa2b0a77dca..d87499c8e0c93a40aa7a196f965fbf873d12a9a6 100644
--- a/tests/unit/lib/classes/AssetsClassTest.php
+++ b/tests/unit/lib/classes/AssetsClassTest.php
@@ -26,12 +26,12 @@ define('DYNAMIC_ASSETS_URL', 'http://www%d.example.com/public/');
 class AssetsTestCase extends \Codeception\Test\Unit {
 
 
-  function setUp() {
+  function setUp(): void {
     Assets::set_assets_url(STATIC_ASSETS_URL);
   }
 
 
-  function tearDown() {
+  function tearDown(): void {
     Assets::set_assets_url('');
   }
 
@@ -57,12 +57,12 @@ class DynamicAssetsTestCase extends \Codeception\Test\Unit
 {
 
 
-  function setUp() {
+  function setUp(): void {
     Assets::set_assets_url(DYNAMIC_ASSETS_URL);
   }
 
 
-  function tearDown() {
+  function tearDown(): void {
     Assets::set_assets_url('');
   }
 
@@ -90,12 +90,12 @@ class AssetsHelpersTestCase extends \Codeception\Test\Unit
 {
 
 
-  function setUp() {
+  function setUp(): void {
     Assets::set_assets_url(STATIC_ASSETS_URL);
   }
 
 
-  function tearDown() {
+  function tearDown(): void {
     Assets::set_assets_url('');
   }
 
diff --git a/tests/unit/lib/classes/AvatarClassTest.php b/tests/unit/lib/classes/AvatarClassTest.php
index cc7bbbcfcc2db12cdab4c0b8277806555ac20efe..f531b263367ee334a2f24b5414f2d99ce3ce9d6f 100644
--- a/tests/unit/lib/classes/AvatarClassTest.php
+++ b/tests/unit/lib/classes/AvatarClassTest.php
@@ -22,7 +22,7 @@ require_once 'lib/phplib/Seminar_Perm.class.php';
  */
 class AvatarTestCase extends  \Codeception\Test\Unit {
 
-    function setUp()
+    function setUp(): void
     {
         $stub = $this->createMock('Seminar_Perm');
         // Configure the stub.
@@ -37,7 +37,7 @@ class AvatarTestCase extends  \Codeception\Test\Unit {
         $this->avatar = Avatar::getAvatar($this->avatar_id);
     }
 
-  function tearDown() {
+  function tearDown(): void {
     unset($GLOBALS['DYNAMIC_CONTENT_PATH'], $GLOBALS['DYNAMIC_CONTENT_URL']);
   }
 
@@ -70,7 +70,7 @@ class AvatarTestCase extends  \Codeception\Test\Unit {
 class CourseAvatarTestCase extends \Codeception\Test\Unit
 {
 
-  function setUp() {
+  function setUp(): void {
     $this->avatar_id = "123456789";
     $this->avatar = CourseAvatar::getAvatar($this->avatar_id);
 
@@ -96,7 +96,7 @@ class CourseAvatarTestCase extends \Codeception\Test\Unit
     }
   }
 
-  function tearDown() {
+  function tearDown(): void {
     stream_wrapper_unregister("var");
     unset($GLOBALS['DYNAMIC_CONTENT_PATH'], $GLOBALS['DYNAMIC_CONTENT_URL']);
   }
diff --git a/tests/unit/lib/classes/CronjobScheduleTest.php b/tests/unit/lib/classes/CronjobScheduleTest.php
index e218b7ed980f856e107b1c0da687a8eee1677245..18ead9b8e218f575eb8258353a47acc1d018268b 100644
--- a/tests/unit/lib/classes/CronjobScheduleTest.php
+++ b/tests/unit/lib/classes/CronjobScheduleTest.php
@@ -14,14 +14,14 @@ class CronjobTestSchedule extends SimpleORMap
 
 class CronjobScheduleTest extends \Codeception\Test\Unit
 {
-    function setUp()
+    function setUp(): void
     {
         date_default_timezone_set('Europe/Berlin');
 
         StudipTestHelper::set_up_tables(['cronjobs_schedules', 'cronjobs_tasks']);
     }
 
-    function tearDown()
+    function tearDown(): void
     {
         StudipTestHelper::tear_down_tables();
     }
diff --git a/tests/unit/lib/classes/CsrfProtectionTest.php b/tests/unit/lib/classes/CsrfProtectionTest.php
index ce556b8966358630fa3ab31e64f809ecc04544a7..5bdbb30e182bd576b13cacbcd971f6c2d527a91d 100644
--- a/tests/unit/lib/classes/CsrfProtectionTest.php
+++ b/tests/unit/lib/classes/CsrfProtectionTest.php
@@ -12,7 +12,7 @@
 
 class CSRFProtectionTokenTest extends \Codeception\Test\Unit
 {
-    function setUp()
+    function setUp(): void
     {
         if (session_id() === '') {
             session_id("test-session");
@@ -21,7 +21,7 @@ class CSRFProtectionTokenTest extends \Codeception\Test\Unit
         $_SESSION = [];
     }
 
-    function tearDown()
+    function tearDown(): void
     {
         $_SESSION = $this->original_session;
     }
@@ -52,7 +52,7 @@ class CSRFProtectionTokenTest extends \Codeception\Test\Unit
     function testTokenIsAString()
     {
         $token = CSRFProtection::token();
-        $this->assertInternalType("string", $token);
+        $this->assertIsString($token);
     }
 
     function testTokenTag()
@@ -65,7 +65,7 @@ class CSRFProtectionTokenTest extends \Codeception\Test\Unit
 class CSRFRequestTest extends \Codeception\Test\Unit
 {
 
-    function setUp()
+    function setUp(): void
     {
         if (session_id() === '') {
             session_id("test-session");
@@ -77,7 +77,7 @@ class CSRFRequestTest extends \Codeception\Test\Unit
         $_SERVER['HTTP_X_REQUESTED_WITH'] = null;
     }
 
-    function tearDown()
+    function tearDown(): void
     {
         list($_SESSION, $_POST, $_SERVER) = $this->original_state;
     }
diff --git a/tests/unit/lib/classes/IconClassTest.php b/tests/unit/lib/classes/IconClassTest.php
index 67a5b29e2b6c82494beca038a04e7fb5ff329ae5..de9d2b23d225cde8d16193ab4f8aaa07cf3e942f 100644
--- a/tests/unit/lib/classes/IconClassTest.php
+++ b/tests/unit/lib/classes/IconClassTest.php
@@ -10,13 +10,13 @@
 
 class IconClassTest extends \Codeception\Test\Unit
 {
-    function setUp()
+    function setUp(): void
     {
         $this->memo_assets_url = Assets::url();
         Assets::set_assets_url('');
     }
 
-    function tearDown()
+    function tearDown(): void
     {
         Assets::set_assets_url($this->memo_assets_url);
     }
diff --git a/tests/unit/lib/classes/MigrationTest.php b/tests/unit/lib/classes/MigrationTest.php
index 9513c52f2a9d057d7cef9b449af47b1d51b36990..7085c9ee9d7f09456bc9f3192412029e36f116c2 100644
--- a/tests/unit/lib/classes/MigrationTest.php
+++ b/tests/unit/lib/classes/MigrationTest.php
@@ -11,7 +11,7 @@ class MigrationTest extends \Codeception\Test\Unit
     protected $migrator;
     protected $before = null;
 
-    public function setUp()
+    public function setUp(): void
     {
         $this->before = isset($GLOBALS['CACHING_ENABLE'])
                       ? $GLOBALS['CACHING_ENABLE']
@@ -28,7 +28,7 @@ class MigrationTest extends \Codeception\Test\Unit
         require_once 'lib/migrations/SchemaVersion.php';
     }
 
-    public function tearDown()
+    public function tearDown(): void
     {
         if ($this->before !== null) {
             $GLOBALS['CACHING_ENABLE'] = $this->before;
diff --git a/tests/unit/lib/classes/NavigationTest.php b/tests/unit/lib/classes/NavigationTest.php
index fdd5d6884ba886c4456b2b6d4a52e1fadc04fbb4..a90e386702fec84f9c80eb8e2097982e9c3b9a94 100644
--- a/tests/unit/lib/classes/NavigationTest.php
+++ b/tests/unit/lib/classes/NavigationTest.php
@@ -14,7 +14,7 @@ require_once 'lib/navigation/Navigation.php';
 
 class NavigationTest extends \Codeception\Test\Unit
 {
-    public function setUp ()
+    public function setUp(): void
     {
         Navigation::setRootNavigation(new Navigation(''));
     }
diff --git a/tests/unit/lib/classes/NotificationCenterTest.php b/tests/unit/lib/classes/NotificationCenterTest.php
index 83d0cbbe2057894669ab1dccb7a5ca6149523bb4..687183e43096a477b431280e39d60b669f08c548 100644
--- a/tests/unit/lib/classes/NotificationCenterTest.php
+++ b/tests/unit/lib/classes/NotificationCenterTest.php
@@ -33,7 +33,7 @@ class NotificationCenterTestSoundexPredicate
 
 class NotificationCenterTest extends \Codeception\Test\Unit
 {
-    public function setUp()
+    public function setUp(): void
     {
         $this->observer = $this->createMock("Observer");
         $this->subject = new stdClass();
@@ -50,7 +50,7 @@ class NotificationCenterTest extends \Codeception\Test\Unit
         NotificationCenter::addObserver($this->observer, 'update', 'Namespaced\\SormDidUpdate', $this->subject);
     }
 
-    public function tearDown()
+    public function tearDown(): void
     {
         NotificationCenter::removeObserver($this->observer);
     }
diff --git a/tests/unit/lib/classes/ObjectBuilderTest.php b/tests/unit/lib/classes/ObjectBuilderTest.php
index 91c242274390752ea840c08d1ce7c89c6a4dc210..1f840ea0fc7c6d1c446622e3486dabb9ed6100d5 100644
--- a/tests/unit/lib/classes/ObjectBuilderTest.php
+++ b/tests/unit/lib/classes/ObjectBuilderTest.php
@@ -14,7 +14,7 @@ class ObjectBuilderTest extends \Codeception\Test\Unit
     protected $another_object;
     protected $another_changed_object;
 
-    public function setUp ()
+    public function setUp (): void
     {
         require_once 'lib/functions.php';
         require_once 'lib/classes/ObjectBuilder.php';
@@ -82,21 +82,17 @@ class ObjectBuilderTest extends \Codeception\Test\Unit
         );
     }
 
-    /**
-     * @expectedException UnexpectedValueException
-     */
     public function testExceptionOnExpectedType()
     {
+        $this->expectException(\UnexpectedValueException::class);
         $this->assertInstanceOf('ObjectBuilderTestMock', ObjectBuilder::build([
             ObjectBuilder::OBJECT_IDENTIFIER => 'AnotherObjectBuilderTestMock',
         ], 'FooBar'));
     }
 
-    /**
-     * @expectedException InvalidArgumentException
-     */
     public function testExceptionOnNull()
     {
+        $this->expectException(\InvalidArgumentException::class);
         ObjectBuilder::build(null);
     }
 
@@ -151,11 +147,9 @@ class ObjectBuilderTest extends \Codeception\Test\Unit
         ));
     }
 
-    /**
-     * @expectedException InvalidArgumentException
-     */
     public function testInvalidJsonInput()
     {
+        $this->expectException(\InvalidArgumentException::class);
         ObjectBuilder::build(
             json_encode($this->simple_array_definition) . 'brokenJSON'
         );
@@ -238,7 +232,7 @@ class ObjectBuilderTest extends \Codeception\Test\Unit
             $this->another_simple_array_definition,
         ]);
 
-        $this->assertInternalType('array', $restored);
+        $this->assertIsArray($restored);
         $this->assertCount(2, $restored);
 
         $this->assertInstanceOf('ObjectBuilderTestMock', $restored[0]);
@@ -282,4 +276,3 @@ class AnotherObjectBuilderTestMock extends ObjectBuilderTestMock
         $this->woken_up = true;
     }
 }
-
diff --git a/tests/unit/lib/classes/PluginRepositoryTest.php b/tests/unit/lib/classes/PluginRepositoryTest.php
index aa7366fea37901e59d866d1ec559474ff6832239..d1f0f084e30eabcd5a78b9c809d9387425a20d07 100644
--- a/tests/unit/lib/classes/PluginRepositoryTest.php
+++ b/tests/unit/lib/classes/PluginRepositoryTest.php
@@ -14,7 +14,7 @@ require_once 'lib/plugins/engine/PluginRepository.class.php';
 
 class PluginRepositoryTest extends \Codeception\Test\Unit
 {
-    public function setUp ()
+    public function setUp (): void
     {
         $GLOBALS['SOFTWARE_VERSION'] = '1.9.0';
         $GLOBALS['CACHING_ENABLE'] = false;
diff --git a/tests/unit/lib/classes/RequestTest.php b/tests/unit/lib/classes/RequestTest.php
index 5f84508b7447c09f52b1ff325bb30167af9c8f14..eb4e8132909d408eb49407a578f1751bacaae5e2 100644
--- a/tests/unit/lib/classes/RequestTest.php
+++ b/tests/unit/lib/classes/RequestTest.php
@@ -12,7 +12,7 @@
 
 class RequestTest extends \Codeception\Test\Unit
 {
-    public function setUp ()
+    public function setUp (): void
     {
         $_GET['a']    = 'test';
         $_POST['b']   = '\\h1"';
@@ -208,7 +208,7 @@ class RequestTest extends \Codeception\Test\Unit
         $this->assertTrue(Request::submittedSome('null', 's', 'v'));
     }
 
-    public function tearDown()
+    public function tearDown(): void
     {
         Config::set(null);
     }
@@ -216,7 +216,7 @@ class RequestTest extends \Codeception\Test\Unit
 
 class RequestMethodTest extends \Codeception\Test\Unit
 {
-    public function setUp ()
+    public function setUp (): void
     {
         unset($_SERVER['REQUEST_METHOD']);
         unset($_SERVER['HTTP_X_REQUESTED_WITH']);
diff --git a/tests/unit/lib/classes/SimpleCollectionTest.php b/tests/unit/lib/classes/SimpleCollectionTest.php
index 1d236e1679bb66381a12a56c73ae053124f62ed4..e3901572e052c9edda3689ef195e118183ed5f32 100644
--- a/tests/unit/lib/classes/SimpleCollectionTest.php
+++ b/tests/unit/lib/classes/SimpleCollectionTest.php
@@ -251,11 +251,11 @@ class SimpleCollectionTest extends \Codeception\Test\Unit
 
     /**
      * @depends testConstruct
-     * @expectedException        InvalidArgumentException
-     * @expectedExceptionMessage unknown operator: foo
      */
     public function testInvalidCompOperatorException($a)
     {
+        $this->expectException(\InvalidArgumentException::class);
+        $this->expectExceptionMessage('unknown operator: foo');
         SimpleCollection::getCompFunc('foo', null);
     }
 
diff --git a/tests/unit/lib/classes/SimpleOrMapNodbTest.php b/tests/unit/lib/classes/SimpleOrMapNodbTest.php
index 3740357377bdeee25ff7ba4cfb94062aa80ea0e9..f6b4e0b057498783f5465695c9a76aa6d253c071 100644
--- a/tests/unit/lib/classes/SimpleOrMapNodbTest.php
+++ b/tests/unit/lib/classes/SimpleOrMapNodbTest.php
@@ -46,12 +46,12 @@ class auth_user_md5 extends SimpleORMap
 
 class SimpleOrMapNodbTest extends \Codeception\Test\Unit
 {
-    function setUp()
+    function setUp(): void
     {
         StudipTestHelper::set_up_tables(['auth_user_md5']);
     }
 
-    function tearDown()
+    function tearDown(): void
     {
         StudipTestHelper::tear_down_tables();
     }
@@ -229,11 +229,11 @@ class SimpleOrMapNodbTest extends \Codeception\Test\Unit
 
     /**
      * @depends testConstruct
-     * @expectedException        InvalidArgumentException
-     * @expectedExceptionMessage unknown not found.
      */
     public function testInvalidColumnException($a)
     {
+        $this->expectException(\InvalidArgumentException::class);
+        $this->expectExceptionMessage('unknown not found.');
         $a->unknown = 1;
     }
 
diff --git a/tests/unit/lib/classes/StringManipulationTest.php b/tests/unit/lib/classes/StringManipulationTest.php
index e0a3eaa14ba5aaff32fdd2f47f4f2c6b7a17ce22..cce5513f4db6298e9e6c79a4706923d3d37c9d00 100644
--- a/tests/unit/lib/classes/StringManipulationTest.php
+++ b/tests/unit/lib/classes/StringManipulationTest.php
@@ -2,11 +2,11 @@
 
 class StringManipulationTest extends \Codeception\Test\Unit
 {
-    public function setUp()
+    public function setUp(): void
     {
         require_once 'lib/functions.php';
     }
-    
+
     /**
      * @dataProvider camelCaseProvider
      */
diff --git a/tests/unit/lib/classes/StudipCachedArrayTest.php b/tests/unit/lib/classes/StudipCachedArrayTest.php
index f3db15f5bda8e7594621664c7c43033ecec35ab9..24018af1153d651e975fbd4d4cedcedea06cb993 100644
--- a/tests/unit/lib/classes/StudipCachedArrayTest.php
+++ b/tests/unit/lib/classes/StudipCachedArrayTest.php
@@ -13,7 +13,7 @@ class StudipCachedArrayTest extends \Codeception\Test\Unit
 {
     private $cache;
 
-    public function setUp()
+    public function setUp(): void
     {
         $this->cache = new TestCache();
     }
diff --git a/tests/unit/lib/classes/StudipFileloaderTest.php b/tests/unit/lib/classes/StudipFileloaderTest.php
index 380df10a773bd65628673f36b2d0a24792b1f1ae..ec457939a3722bd38cb7bf36ee4ff8e56a9ce8a6 100644
--- a/tests/unit/lib/classes/StudipFileloaderTest.php
+++ b/tests/unit/lib/classes/StudipFileloaderTest.php
@@ -10,7 +10,7 @@
 
 class StudipFileloaderTestCase extends \Codeception\Test\Unit {
 
-    public function setUp() {
+    public function setUp(): void {
         ArrayFileStream::set_filesystem(
             [
                 'pathto' => [
@@ -23,7 +23,7 @@ class StudipFileloaderTestCase extends \Codeception\Test\Unit {
         }
     }
 
-    public function tearDown() {
+    public function tearDown(): void {
         stream_wrapper_unregister("var");
     }
 
diff --git a/tests/unit/lib/classes/StudipFormatTest.php b/tests/unit/lib/classes/StudipFormatTest.php
index bfc5367d6139afb28092bbab3769fb3ae6596e3f..2a7ca4a03f872b334ae27ec02e6fcf95166fea75 100644
--- a/tests/unit/lib/classes/StudipFormatTest.php
+++ b/tests/unit/lib/classes/StudipFormatTest.php
@@ -19,11 +19,11 @@ function markupBold($markup, $matches, $contents)
 
 class StudipFormatTest extends \Codeception\Test\Unit
 {
-    function setUp() {
+    function setUp(): void {
         $this->old_rules = StudipCoreFormat::getStudipMarkups();
     }
 
-    function tearDown()
+    function tearDown(): void
     {
         foreach(StudipCoreFormat::getStudipMarkups() as $key => $value) {
             StudipCoreFormat::removeStudipMarkup($key);
diff --git a/tests/unit/lib/classes/StudipPdoTest.php b/tests/unit/lib/classes/StudipPdoTest.php
index 5c14d5596e0de1a7c90213d43089b1800dad627c..2023ca1c1d3ccb8e7d0dd55a7a53f48c44edb5a3 100644
--- a/tests/unit/lib/classes/StudipPdoTest.php
+++ b/tests/unit/lib/classes/StudipPdoTest.php
@@ -12,22 +12,31 @@
  * @category    Stud.IP
  */
 
-class TestStudipPDO extends StudipPDO
+class StudipPdoTest extends \Codeception\Test\Unit
 {
-    public static function doReplaceStrings($statement)
+    public function setUp(): void
     {
-        return parent::replaceStrings($statement);
+        $this->testPdo = new class ('sqlite::memory:') extends StudipPDO {
+            public static function doReplaceStrings($statement)
+            {
+                return parent::replaceStrings($statement);
+            }
+        };
+
+        $this->testPdo->beginTransaction();
+    }
+
+    public function tearDown(): void
+    {
+        $this->testPdo->rollBack();
     }
-}
 
-class StudipPDOTest extends \Codeception\Test\Unit
-{
     public function testSimpleString()
     {
         $query  = 'SELECT * FROM bar';
         $expect = $query;
 
-        $this->assertEquals($expect, TestStudipPDO::doReplaceStrings($query));
+        $this->assertEquals($expect, $this->testPdo::doReplaceStrings($query));
     }
 
     public function testDoubleQuotedString()
@@ -35,12 +44,12 @@ class StudipPDOTest extends \Codeception\Test\Unit
         $query  = 'SELECT "\'foo""\\"" FROM bar WHERE foo = "\\\\"';
         $expect = 'SELECT ? FROM bar WHERE foo = ?';
 
-        $this->assertEquals($expect, TestStudipPDO::doReplaceStrings($query));
+        $this->assertEquals($expect, $this->testPdo::doReplaceStrings($query));
 
         $query  = str_repeat($query, 100);
         $expect = str_repeat($expect, 100);
 
-        $this->assertEquals($expect, TestStudipPDO::doReplaceStrings($query));
+        $this->assertEquals($expect, $this->testPdo::doReplaceStrings($query));
     }
 
     public function testSingleQuotedString()
@@ -48,12 +57,12 @@ class StudipPDOTest extends \Codeception\Test\Unit
         $query  = 'SELECT \'"foo\'\'\\\'\' FROM bar WHERE foo = \'\\\\\'';
         $expect = 'SELECT ? FROM bar WHERE foo = ?';
 
-        $this->assertEquals($expect, TestStudipPDO::doReplaceStrings($query));
+        $this->assertEquals($expect, $this->testPdo::doReplaceStrings($query));
 
         $query  = str_repeat($query, 100);
         $expect = str_repeat($expect, 100);
 
-        $this->assertEquals($expect, TestStudipPDO::doReplaceStrings($query));
+        $this->assertEquals($expect, $this->testPdo::doReplaceStrings($query));
     }
 
     public function testMixedQuotedString()
@@ -61,12 +70,12 @@ class StudipPDOTest extends \Codeception\Test\Unit
         $query  = 'SELECT """\'", \'"\' FROM bar WHERE foo IN (\'\'\'"\'"")';
         $expect = 'SELECT ?, ? FROM bar WHERE foo IN (??)';
 
-        $this->assertEquals($expect, TestStudipPDO::doReplaceStrings($query));
+        $this->assertEquals($expect, $this->testPdo::doReplaceStrings($query));
 
         $query  = str_repeat($query, 100);
         $expect = str_repeat($expect, 100);
 
-        $this->assertEquals($expect, TestStudipPDO::doReplaceStrings($query));
+        $this->assertEquals($expect, $this->testPdo::doReplaceStrings($query));
     }
 
     public function testUnterminatedSingleQuote()
@@ -74,7 +83,7 @@ class StudipPDOTest extends \Codeception\Test\Unit
         $query  = 'SELECT \'1\' ORDER BY \'au.username asc';
         $expect = 'SELECT ? ORDER BY \'au.username asc';
 
-        $this->assertEquals($expect, TestStudipPDO::doReplaceStrings($query));
+        $this->assertEquals($expect, $this->testPdo::doReplaceStrings($query));
     }
 
     public function testUnterminatedDoubleQuote()
@@ -82,6 +91,6 @@ class StudipPDOTest extends \Codeception\Test\Unit
         $query  = 'SELECT "1" ORDER BY "au.username asc';
         $expect = 'SELECT ? ORDER BY "au.username asc';
 
-        $this->assertEquals($expect, TestStudipPDO::doReplaceStrings($query));
+        $this->assertEquals($expect, $this->testPdo::doReplaceStrings($query));
     }
 }
diff --git a/tests/unit/lib/classes/StudipVersionTest.php b/tests/unit/lib/classes/StudipVersionTest.php
index 22a9fca367883e6495ad399fd2f61cc2be530776..4e824bc44c513ab07ee8a4601dd1205a1a716df4 100644
--- a/tests/unit/lib/classes/StudipVersionTest.php
+++ b/tests/unit/lib/classes/StudipVersionTest.php
@@ -14,11 +14,11 @@
 
 class StudipVersionTest extends \Codeception\Test\Unit
 {
-    function setUp() {
+    function setUp(): void {
         $this->version = $GLOBALS['SOFTWARE_VERSION'];
     }
 
-    function tearDown()
+    function tearDown(): void
     {
         $GLOBALS['SOFTWARE_VERSION'] = $this->version;
     }
diff --git a/tests/unit/lib/classes/TextFormatTest.php b/tests/unit/lib/classes/TextFormatTest.php
index acca74a2c4dd8212f26c9313afcde2034a92b731..7a58bed736d1d6610e4db26c8183e999dc6f6702 100644
--- a/tests/unit/lib/classes/TextFormatTest.php
+++ b/tests/unit/lib/classes/TextFormatTest.php
@@ -191,7 +191,7 @@ function markupSum($markup, $matches)
 
 class TextFormatTest extends \Codeception\Test\Unit
 {
-    public function setUp()
+    public function setUp(): void
     {
         $markup = new TextFormat();
 
diff --git a/tests/unit/lib/classes/UpdateinformationClassTest.php b/tests/unit/lib/classes/UpdateinformationClassTest.php
index ba2c5a19345b12fffb740f9f4260f0dec90d20f2..1745b030f4f8790051bbcf6761ffa44cd41ac5f1 100644
--- a/tests/unit/lib/classes/UpdateinformationClassTest.php
+++ b/tests/unit/lib/classes/UpdateinformationClassTest.php
@@ -13,11 +13,11 @@
 class UpdateInformationCase extends \Codeception\Test\Unit
 {
 
-    function setUp() {
+    function setUp(): void {
     }
 
 
-    function tearDown() {
+    function tearDown(): void {
     }
 
 
@@ -26,9 +26,9 @@ class UpdateInformationCase extends \Codeception\Test\Unit
         UpdateInformation::setInformation("test.myfunc", $old_data);
         UpdateInformation::setInformation("test.myfunc2", "strangedata");
         $new_data = UpdateInformation::getInformation();
-        $this->assertInternalType("array", $new_data);
-        $this->assertInternalType("array", $new_data['test.myfunc']);
-        $this->assertInternalType("string", $new_data['test.myfunc2']);
+        $this->assertIsArray($new_data);
+        $this->assertIsArray($new_data['test.myfunc']);
+        $this->assertIsString($new_data['test.myfunc2']);
         $this->assertEquals("TestValue", $new_data['test.myfunc']['test']);
         $this->assertEquals("strangedata", $new_data['test.myfunc2']);
     }
diff --git a/tests/unit/lib/classes/UrlHelperTest.php b/tests/unit/lib/classes/UrlHelperTest.php
index 8683dd40779f914a6132d3b1fb9ec75cdb9691ba..13661bd99c1259ef12b5aacd814f8023fa8f3b1a 100644
--- a/tests/unit/lib/classes/UrlHelperTest.php
+++ b/tests/unit/lib/classes/UrlHelperTest.php
@@ -12,7 +12,7 @@
 
 class URLHelperTest extends \Codeception\Test\Unit
 {
-    public function tearDown ()
+    public function tearDown(): void
     {
         // remove all link params
         foreach (URLHelper::getLinkParams() as $param => $value) {
diff --git a/tests/unit/lib/classes/UserDomainTest.php b/tests/unit/lib/classes/UserDomainTest.php
index 2c4b86b935eda23b3e5a2a26fd5ccf0d9ac1b7db..7e742641c428e195ee71ee2fcb0e6da42d922857 100644
--- a/tests/unit/lib/classes/UserDomainTest.php
+++ b/tests/unit/lib/classes/UserDomainTest.php
@@ -8,12 +8,12 @@
 
 class UserDomainTest extends \Codeception\Test\Unit
 {
-    public function setUp()
+    public function setUp(): void
     {
         StudipTestHelper::set_up_tables(['userdomains']);
     }
 
-    public function tearDown()
+    public function tearDown(): void
     {
         StudipTestHelper::tear_down_tables();
     }
diff --git a/tests/unit/lib/classes/htmlpurifier/HtmlpurifierInjectorClassifylinksTest.php b/tests/unit/lib/classes/htmlpurifier/HtmlpurifierInjectorClassifylinksTest.php
index cbe7e166bf5e424a6988550b286954ec3cf1f95e..b8b055810411df2d625a8e60843c01247fc22d51 100644
--- a/tests/unit/lib/classes/htmlpurifier/HtmlpurifierInjectorClassifylinksTest.php
+++ b/tests/unit/lib/classes/htmlpurifier/HtmlpurifierInjectorClassifylinksTest.php
@@ -27,7 +27,7 @@ require_once 'lib/classes/htmlpurifier/HTMLPurifier_Injector_ClassifyLinks.php';
  */
 class HTMLPurifier_Injector_ClassifyLinksTest extends \Codeception\Test\Unit
 {
-    public function setUp()
+    public function setUp(): void
     {
         $config = new Config([
             'CONVERT_IDNA_URL' => false,
@@ -106,7 +106,7 @@ class HTMLPurifier_Injector_ClassifyLinksTest extends \Codeception\Test\Unit
         ];
     }
 
-    public function tearDown()
+    public function tearDown(): void
     {
         Config::set(null);
     }