From 1e2461950a42c331673d65da375af8f006a7836d Mon Sep 17 00:00:00 2001
From: Konstantinos Samaras-Tsakiris <ksamtsak@gmail.com>
Date: Fri, 12 Feb 2021 01:04:39 +0100
Subject: [PATCH] composer update

---
 composer.lock                                 |   41 +-
 vendor/composer/installed.json                |   49 +-
 .../modules/discopower/.travis.yml            |    9 +-
 .../modules/discopower/composer.json          |    2 +-
 .../modules/discopower/default-enable         |    3 -
 .../dictionaries/tabs.translation.json        |   15 +-
 vendor/webmozart/assert/CHANGELOG.md          |   82 +-
 vendor/webmozart/assert/README.md             |   42 +-
 vendor/webmozart/assert/composer.json         |   12 +-
 vendor/webmozart/assert/psalm.xml             |    5 +-
 vendor/webmozart/assert/src/Assert.php        |  806 ++-----
 vendor/webmozart/assert/src/Mixin.php         | 1971 -----------------
 12 files changed, 299 insertions(+), 2738 deletions(-)
 delete mode 100644 vendor/simplesamlphp/simplesamlphp/modules/discopower/default-enable
 delete mode 100644 vendor/webmozart/assert/src/Mixin.php

diff --git a/composer.lock b/composer.lock
index eb7f33a25..ec49e4692 100644
--- a/composer.lock
+++ b/composer.lock
@@ -11026,22 +11026,22 @@
         },
         {
             "name": "simplesamlphp/simplesamlphp-module-discopower",
-            "version": "v0.9.1",
+            "version": "v0.9.3",
             "source": {
                 "type": "git",
                 "url": "https://github.com/simplesamlphp/simplesamlphp-module-discopower.git",
-                "reference": "006c0617610f1bae11cf4d17e8ce4c509239a60e"
+                "reference": "c892926e8186d0a2c638f7032dfc30540c1f92fb"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/simplesamlphp/simplesamlphp-module-discopower/zipball/006c0617610f1bae11cf4d17e8ce4c509239a60e",
-                "reference": "006c0617610f1bae11cf4d17e8ce4c509239a60e",
+                "url": "https://api.github.com/repos/simplesamlphp/simplesamlphp-module-discopower/zipball/c892926e8186d0a2c638f7032dfc30540c1f92fb",
+                "reference": "c892926e8186d0a2c638f7032dfc30540c1f92fb",
                 "shasum": ""
             },
             "require": {
                 "php": ">=5.6",
                 "simplesamlphp/composer-module-installer": "~1.1",
-                "webmozart/assert": "~1.4"
+                "webmozart/assert": "~1.4 <1.6"
             },
             "require-dev": {
                 "phpunit/phpunit": "~5.7",
@@ -11069,11 +11069,7 @@
                 "discovery",
                 "simplesamlphp"
             ],
-            "support": {
-                "issues": "https://github.com/tvdijen/simplesamlphp-module-discopower/issues",
-                "source": "https://github.com/tvdijen/simplesamlphp-module-discopower"
-            },
-            "time": "2019-11-27T20:34:37+00:00"
+            "time": "2019-12-13T07:51:43+00:00"
         },
         {
             "name": "simplesamlphp/simplesamlphp-module-exampleattributeserver",
@@ -14346,30 +14342,31 @@
         },
         {
             "name": "webmozart/assert",
-            "version": "1.9.1",
+            "version": "1.5.0",
             "source": {
                 "type": "git",
                 "url": "https://github.com/webmozarts/assert.git",
-                "reference": "bafc69caeb4d49c39fd0779086c03a3738cbb389"
+                "reference": "88e6d84706d09a236046d686bbea96f07b3a34f4"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/webmozarts/assert/zipball/bafc69caeb4d49c39fd0779086c03a3738cbb389",
-                "reference": "bafc69caeb4d49c39fd0779086c03a3738cbb389",
+                "url": "https://api.github.com/repos/webmozarts/assert/zipball/88e6d84706d09a236046d686bbea96f07b3a34f4",
+                "reference": "88e6d84706d09a236046d686bbea96f07b3a34f4",
                 "shasum": ""
             },
             "require": {
-                "php": "^5.3.3 || ^7.0 || ^8.0",
+                "php": "^5.3.3 || ^7.0",
                 "symfony/polyfill-ctype": "^1.8"
             },
-            "conflict": {
-                "phpstan/phpstan": "<0.12.20",
-                "vimeo/psalm": "<3.9.1"
-            },
             "require-dev": {
                 "phpunit/phpunit": "^4.8.36 || ^7.5.13"
             },
             "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "1.3-dev"
+                }
+            },
             "autoload": {
                 "psr-4": {
                     "Webmozart\\Assert\\": "src/"
@@ -14391,11 +14388,7 @@
                 "check",
                 "validate"
             ],
-            "support": {
-                "issues": "https://github.com/webmozarts/assert/issues",
-                "source": "https://github.com/webmozarts/assert/tree/1.9.1"
-            },
-            "time": "2020-07-08T17:02:28+00:00"
+            "time": "2019-08-24T08:43:50+00:00"
         },
         {
             "name": "webmozart/path-util",
diff --git a/vendor/composer/installed.json b/vendor/composer/installed.json
index 4a97b286b..90a6672e2 100644
--- a/vendor/composer/installed.json
+++ b/vendor/composer/installed.json
@@ -11373,29 +11373,29 @@
     },
     {
         "name": "simplesamlphp/simplesamlphp-module-discopower",
-        "version": "v0.9.1",
-        "version_normalized": "0.9.1.0",
+        "version": "v0.9.3",
+        "version_normalized": "0.9.3.0",
         "source": {
             "type": "git",
             "url": "https://github.com/simplesamlphp/simplesamlphp-module-discopower.git",
-            "reference": "006c0617610f1bae11cf4d17e8ce4c509239a60e"
+            "reference": "c892926e8186d0a2c638f7032dfc30540c1f92fb"
         },
         "dist": {
             "type": "zip",
-            "url": "https://api.github.com/repos/simplesamlphp/simplesamlphp-module-discopower/zipball/006c0617610f1bae11cf4d17e8ce4c509239a60e",
-            "reference": "006c0617610f1bae11cf4d17e8ce4c509239a60e",
+            "url": "https://api.github.com/repos/simplesamlphp/simplesamlphp-module-discopower/zipball/c892926e8186d0a2c638f7032dfc30540c1f92fb",
+            "reference": "c892926e8186d0a2c638f7032dfc30540c1f92fb",
             "shasum": ""
         },
         "require": {
             "php": ">=5.6",
             "simplesamlphp/composer-module-installer": "~1.1",
-            "webmozart/assert": "~1.4"
+            "webmozart/assert": "~1.4 <1.6"
         },
         "require-dev": {
             "phpunit/phpunit": "~5.7",
             "simplesamlphp/simplesamlphp": "^1.17"
         },
-        "time": "2019-11-27T20:34:37+00:00",
+        "time": "2019-12-13T07:51:43+00:00",
         "type": "simplesamlphp-module",
         "installation-source": "dist",
         "autoload": {
@@ -11418,11 +11418,7 @@
             "discopower",
             "discovery",
             "simplesamlphp"
-        ],
-        "support": {
-            "issues": "https://github.com/tvdijen/simplesamlphp-module-discopower/issues",
-            "source": "https://github.com/tvdijen/simplesamlphp-module-discopower"
-        }
+        ]
     },
     {
         "name": "simplesamlphp/simplesamlphp-module-exampleattributeserver",
@@ -14795,32 +14791,33 @@
     },
     {
         "name": "webmozart/assert",
-        "version": "1.9.1",
-        "version_normalized": "1.9.1.0",
+        "version": "1.5.0",
+        "version_normalized": "1.5.0.0",
         "source": {
             "type": "git",
             "url": "https://github.com/webmozarts/assert.git",
-            "reference": "bafc69caeb4d49c39fd0779086c03a3738cbb389"
+            "reference": "88e6d84706d09a236046d686bbea96f07b3a34f4"
         },
         "dist": {
             "type": "zip",
-            "url": "https://api.github.com/repos/webmozarts/assert/zipball/bafc69caeb4d49c39fd0779086c03a3738cbb389",
-            "reference": "bafc69caeb4d49c39fd0779086c03a3738cbb389",
+            "url": "https://api.github.com/repos/webmozarts/assert/zipball/88e6d84706d09a236046d686bbea96f07b3a34f4",
+            "reference": "88e6d84706d09a236046d686bbea96f07b3a34f4",
             "shasum": ""
         },
         "require": {
-            "php": "^5.3.3 || ^7.0 || ^8.0",
+            "php": "^5.3.3 || ^7.0",
             "symfony/polyfill-ctype": "^1.8"
         },
-        "conflict": {
-            "phpstan/phpstan": "<0.12.20",
-            "vimeo/psalm": "<3.9.1"
-        },
         "require-dev": {
             "phpunit/phpunit": "^4.8.36 || ^7.5.13"
         },
-        "time": "2020-07-08T17:02:28+00:00",
+        "time": "2019-08-24T08:43:50+00:00",
         "type": "library",
+        "extra": {
+            "branch-alias": {
+                "dev-master": "1.3-dev"
+            }
+        },
         "installation-source": "dist",
         "autoload": {
             "psr-4": {
@@ -14842,11 +14839,7 @@
             "assert",
             "check",
             "validate"
-        ],
-        "support": {
-            "issues": "https://github.com/webmozarts/assert/issues",
-            "source": "https://github.com/webmozarts/assert/tree/1.9.1"
-        }
+        ]
     },
     {
         "name": "webmozart/path-util",
diff --git a/vendor/simplesamlphp/simplesamlphp/modules/discopower/.travis.yml b/vendor/simplesamlphp/simplesamlphp/modules/discopower/.travis.yml
index 3c250287a..0164f2a60 100644
--- a/vendor/simplesamlphp/simplesamlphp/modules/discopower/.travis.yml
+++ b/vendor/simplesamlphp/simplesamlphp/modules/discopower/.travis.yml
@@ -10,7 +10,7 @@ php:
   - 7.3
 
 env:
-  - SIMPLESAMLPHP_VERSION=1.17.*
+  - SIMPLESAMLPHP_VERSION=1.18.*
   
 matrix:
   allow_failures:
@@ -27,9 +27,4 @@ script:
   - if [[ "$TRAVIS_PHP_VERSION" == "7.3" ]]; then vendor/bin/psalm; fi
 
 after_success:
-  # Codecov, need to edit bash uploader for incorrect TRAVIS_PYTHON_VERSION environment variable matching, at least until codecov/codecov-bash#133 is resolved
-  - curl -s https://codecov.io/bash > .codecov
-  - sed -i -e 's/TRAVIS_.*_VERSION/^TRAVIS_.*_VERSION=/' .codecov
-  - chmod +x .codecov
-  - if [[ $TRAVIS_PHP_VERSION == "5.6" ]]; then ./.codecov -X gcov; fi
-# - if [[ "$TRAVIS_PHP_VERSION" == "5.6" ]]; then bash <(curl -s https://codecov.io/bash); fi
+  - if [[ "$TRAVIS_PHP_VERSION" == "5.6" ]]; then bash <(curl -s https://codecov.io/bash); fi
diff --git a/vendor/simplesamlphp/simplesamlphp/modules/discopower/composer.json b/vendor/simplesamlphp/simplesamlphp/modules/discopower/composer.json
index ef307b9e3..f254d0436 100644
--- a/vendor/simplesamlphp/simplesamlphp/modules/discopower/composer.json
+++ b/vendor/simplesamlphp/simplesamlphp/modules/discopower/composer.json
@@ -29,7 +29,7 @@
     "require": {
         "php": ">=5.6",
         "simplesamlphp/composer-module-installer": "~1.1",
-        "webmozart/assert": "~1.4"
+        "webmozart/assert": "~1.4 <1.6"
     },
     "require-dev": {
         "simplesamlphp/simplesamlphp": "^1.17",
diff --git a/vendor/simplesamlphp/simplesamlphp/modules/discopower/default-enable b/vendor/simplesamlphp/simplesamlphp/modules/discopower/default-enable
deleted file mode 100644
index 25615cb47..000000000
--- a/vendor/simplesamlphp/simplesamlphp/modules/discopower/default-enable
+++ /dev/null
@@ -1,3 +0,0 @@
-This file indicates that the default state of this module
-is enabled. To disable, create a file named disable in the
-same directory as this file.
diff --git a/vendor/simplesamlphp/simplesamlphp/modules/discopower/dictionaries/tabs.translation.json b/vendor/simplesamlphp/simplesamlphp/modules/discopower/dictionaries/tabs.translation.json
index cabbb63f4..fb533b427 100644
--- a/vendor/simplesamlphp/simplesamlphp/modules/discopower/dictionaries/tabs.translation.json
+++ b/vendor/simplesamlphp/simplesamlphp/modules/discopower/dictionaries/tabs.translation.json
@@ -96,12 +96,12 @@
 		"xh": "Grisi",
 		"ca": "Grècia"
 	},
-        "netherlands": {
-                "en": "The Netherlands",
-                "nl": "Nederland",
-                "de": "Niederlande",
-                "fr": "Les Pays-Bas"
-        },
+		"netherlands": {
+				"en": "The Netherlands",
+				"nl": "Nederland",
+				"de": "Niederlande",
+				"fr": "Les Pays-Bas"
+		},
 	"southafrica": {
 		"es": "Sud\u00e1frica",
 		"ru": "\u042e\u0436\u043d\u0430\u044f \u0410\u0444\u0440\u0438\u043a\u0430",
@@ -113,6 +113,7 @@
 		"el": "\u039d\u03cc\u03c4\u03b9\u03b1 \u0391\u03c6\u03c1\u03b9\u03ba\u03ae",
 		"xh": "uMzantsi Afrika",
 		"zu": "iNingizimu Afrika",
+		"st": "Afrika Boroa",
 		"ca": "Sud-Àfrica"
 	},
 	"edugain": {
@@ -139,6 +140,7 @@
 		"el": "\u0386\u03bb\u03bb\u03bf\u03b9 \u03c6\u03bf\u03c1\u03b5\u03af\u03c2",
 		"xh": "Ezahlukahlukeneyo",
 		"zu": "Ezihlukahlukene",
+		"st": "Fapakaneng",
 		"ca": "Altres"
 	},
 	"incommon": {
@@ -164,6 +166,7 @@
 		"nl": "Zoeken...",
 		"zu": "Ukucinga okukhulayo...",
 		"xh": "Ukhangelo oluqhubekayo...",
+		"st": "Patlo e Eketsang...",
 		"ca": "Cerca incremental..."
 	}
 }
diff --git a/vendor/webmozart/assert/CHANGELOG.md b/vendor/webmozart/assert/CHANGELOG.md
index 1d379277f..9a7becb24 100644
--- a/vendor/webmozart/assert/CHANGELOG.md
+++ b/vendor/webmozart/assert/CHANGELOG.md
@@ -3,95 +3,23 @@ Changelog
 
 ## UNRELEASED
 
-## 1.9.1
-
-## Fixed
-
-* provisional support for PHP 8.0
-
-## 1.9.0
-
-* added better Psalm support for `all*` & `nullOr*` methods
-  * These methods are now understood by Psalm through a mixin. You may need a newer version of Psalm in order to use this
-* added `@psalm-pure` annotation to `Assert::notFalse()`
-* added more `@psalm-assert` annotations where appropriate
-
-## Changed
-
-* the `all*` & `nullOr*` methods are now declared on an interface, instead of `@method` annotations.
-This interface is linked to the `Assert` class with a `@mixin` annotation. Most IDE's have supported this
-for a long time, and you should not lose any autocompletion capabilities. PHPStan has supported this since
-version `0.12.20`. This package is marked incompatible (with a composer conflict) with phpstan version prior to that.
-If you do not use PHPStan than this does not matter.
-
-## 1.8.0
-
-### Added
-
-* added `Assert::notStartsWith()`
-* added `Assert::notEndsWith()`
-* added `Assert::inArray()`
-* added `@psalm-pure` annotations to pure assertions
-
-### Fixed
-
-* Exception messages of comparisons between `DateTime(Immutable)` objects now display their date & time.
-* Custom Exception messages for `Assert::count()` now use the values to render the exception message.
-
-## 1.7.0 (2020-02-14)
-
-### Added
-
-* added `Assert::notFalse()`
-* added `Assert::isAOf()`
-* added `Assert::isAnyOf()`
-* added `Assert::isNotA()`
-
-## 1.6.0 (2019-11-24)
-
-### Added
-
-* added `Assert::validArrayKey()`
-* added `Assert::isNonEmptyList()`
-* added `Assert::isNonEmptyMap()`
-* added `@throws InvalidArgumentException` annotations to all methods that throw.
-* added `@psalm-assert` for the list type to the `isList` assertion.
-
-### Fixed
-
-* `ResourceBundle` & `SimpleXMLElement` now pass the `isCountable` assertions.
-They are countable, without implementing the `Countable` interface.
-* The doc block of `range` now has the proper variables.
-* An empty array will now pass `isList` and `isMap`. As it is a valid form of both.
-If a non-empty variant is needed, use `isNonEmptyList` or `isNonEmptyMap`.
-
-### Changed
-
-* Removed some `@psalm-assert` annotations, that were 'side effect' assertions See:
-  * [#144](https://github.com/webmozart/assert/pull/144)
-  * [#145](https://github.com/webmozart/assert/issues/145)
-  * [#146](https://github.com/webmozart/assert/pull/146)
-  * [#150](https://github.com/webmozart/assert/pull/150)
-* If you use Psalm, the minimum version needed is `3.6.0`. Which is enforced through a composer conflict.
-If you don't use Psalm, then this has no impact.
-
 ## 1.5.0 (2019-08-24)
 
-### Added
+### Added 
 
 * added `Assert::uniqueValues()`
 * added `Assert::unicodeLetters()`
 * added: `Assert::email()`
 * added support for [Psalm](https://github.com/vimeo/psalm), by adding `@psalm-assert` annotations where appropriate.
 
-### Fixed
+## Fixed
 
-* `Assert::endsWith()` would not give the correct result when dealing with a multibyte suffix.
-* `Assert::length(), minLength, maxLength, lengthBetween` would not give the correct result when dealing with multibyte characters.
+* `Assert::endsWith()` would not give the correct result when dealing with multibyte suffix. 
+* `Assert::length(), minLength, maxLength, lengthBetween` would not give the correct result when dealing with multibyte characters. 
 
 **NOTE**: These 2 changes may break your assertions if you relied on the fact that multibyte characters didn't behave correctly.
 
-### Changed
+## Changed
 
 * The names of some variables have been updated to better reflect what they are.
 * All function calls are now in their FQN form, slightly increasing performance.
diff --git a/vendor/webmozart/assert/README.md b/vendor/webmozart/assert/README.md
index 1407a9a1b..1b6299a42 100644
--- a/vendor/webmozart/assert/README.md
+++ b/vendor/webmozart/assert/README.md
@@ -3,7 +3,6 @@ Webmozart Assert
 
 [![Build Status](https://travis-ci.org/webmozart/assert.svg?branch=master)](https://travis-ci.org/webmozart/assert)
 [![Build status](https://ci.appveyor.com/api/projects/status/lyg83bcsisrr94se/branch/master?svg=true)](https://ci.appveyor.com/project/webmozart/assert/branch/master)
-[![Code Coverage](https://scrutinizer-ci.com/g/webmozart/assert/badges/coverage.png?b=master)](https://scrutinizer-ci.com/g/webmozart/assert/?branch=master)
 [![Latest Stable Version](https://poser.pugx.org/webmozart/assert/v/stable.svg)](https://packagist.org/packages/webmozart/assert)
 [![Total Downloads](https://poser.pugx.org/webmozart/assert/downloads.svg)](https://packagist.org/packages/webmozart/assert)
 
@@ -104,21 +103,17 @@ Method                                                   | Description
 `isIterable($value, $message = '')`                      | Check that a value is an array or a `\Traversable`
 `isCountable($value, $message = '')`                     | Check that a value is an array or a `\Countable`
 `isInstanceOf($value, $class, $message = '')`            | Check that a value is an `instanceof` a class
-`isInstanceOfAny($value, array $classes, $message = '')` | Check that a value is an `instanceof` at least one class on the array of classes
+`isInstanceOfAny($value, array $classes, $message = '')` | Check that a value is an `instanceof` a at least one class on the array of classes
 `notInstanceOf($value, $class, $message = '')`           | Check that a value is not an `instanceof` a class
-`isAOf($value, $class, $message = '')`                   | Check that a value is of the class or has one of its parents
-`isAnyOf($value, array $classes, $message = '')`         | Check that a value is of at least one of the classes or has one of its parents
-`isNotA($value, $class, $message = '')`                  | Check that a value is not of the class or has not one of its parents
 `isArrayAccessible($value, $message = '')`               | Check that a value can be accessed as an array
 `uniqueValues($values, $message = '')`                   | Check that the given array contains unique values
 
 ### Comparison Assertions
 
 Method                                          | Description
------------------------------------------------ | ------------------------------------------------------------------
+----------------------------------------------- | --------------------------------------------------
 `true($value, $message = '')`                   | Check that a value is `true`
 `false($value, $message = '')`                  | Check that a value is `false`
-`notFalse($value, $message = '')`               | Check that a value is not `false`
 `null($value, $message = '')`                   | Check that a value is `null`
 `notNull($value, $message = '')`                | Check that a value is not `null`
 `isEmpty($value, $message = '')`                | Check that a value is `empty()`
@@ -132,8 +127,7 @@ Method                                          | Description
 `lessThan($value, $value2, $message = '')`      | Check that a value is less than another
 `lessThanEq($value, $value2, $message = '')`    | Check that a value is less than or equal to another
 `range($value, $min, $max, $message = '')`      | Check that a value is within a range
-`inArray($value, array $values, $message = '')` | Check that a value is one of a list of values
-`oneOf($value, array $values, $message = '')`   | Check that a value is one of a list of values (alias of `inArray`)
+`oneOf($value, array $values, $message = '')`   | Check that a value is one of a list of values
 
 ### String Assertions
 
@@ -143,12 +137,10 @@ any of the following assertions.
 Method                                              | Description
 --------------------------------------------------- | -----------------------------------------------------------------
 `contains($value, $subString, $message = '')`       | Check that a string contains a substring
-`notContains($value, $subString, $message = '')`    | Check that a string does not contain a substring
+`notContains($value, $subString, $message = '')`    | Check that a string does not contains a substring
 `startsWith($value, $prefix, $message = '')`        | Check that a string has a prefix
-`notStartsWith($value, $prefix, $message = '')`     | Check that a string does not have a prefix
 `startsWithLetter($value, $message = '')`           | Check that a string starts with a letter
 `endsWith($value, $suffix, $message = '')`          | Check that a string has a suffix
-`notEndsWith($value, $suffix, $message = '')`       | Check that a string does not have a suffix
 `regex($value, $pattern, $message = '')`            | Check that a string matches a regular expression
 `notRegex($value, $pattern, $message = '')`         | Check that a string does not match a regular expression
 `unicodeLetters($value, $message = '')`             | Check that a string contains Unicode letters only
@@ -197,15 +189,12 @@ Method                                             | Description
 -------------------------------------------------- | ------------------------------------------------------------------
 `keyExists($array, $key, $message = '')`           | Check that a key exists in an array
 `keyNotExists($array, $key, $message = '')`        | Check that a key does not exist in an array
-`validArrayKey($key, $message = '')`               | Check that a value is a valid array key (int or string)
 `count($array, $number, $message = '')`            | Check that an array contains a specific number of elements
 `minCount($array, $min, $message = '')`            | Check that an array contains at least a certain number of elements
 `maxCount($array, $max, $message = '')`            | Check that an array contains at most a certain number of elements
 `countBetween($array, $min, $max, $message = '')`  | Check that an array has a count in the given range
 `isList($array, $message = '')`                    | Check that an array is a non-associative list
-`isNonEmptyList($array, $message = '')`            | Check that an array is a non-associative list, and not empty
 `isMap($array, $message = '')`                     | Check that an array is associative and has strings as keys
-`isNonEmptyMap($array, $message = '')`             | Check that an array is associative and has strings as keys, and is not empty
 
 ### Function Assertions
 
@@ -231,27 +220,6 @@ assertion only if it the value is not `null`:
 Assert::nullOrString($middleName, 'The middle name must be a string or null. Got: %s');
 ```
 
-### Extending Assert
-
-The `Assert` class comes with a few methods, which can be overridden to change the class behaviour. You can also extend it to
-add your own assertions.
-
-#### Overriding methods
-
-Overriding the following methods in your assertion class allows you to change the behaviour of the assertions:
-
-* `public static function __callStatic($name, $arguments)`
-  * This method is used to 'create' the `nullOr` and `all` versions of the assertions.
-* `protected static function valueToString($value)`
-  * This method is used for error messages, to convert the value to a string value for displaying. You could use this for representing a value object with a `__toString` method for example.
-* `protected static function typeToString($value)`
-  * This method is used for error messages, to convert the a value to a string representing its type.
-* `protected static function strlen($value)`
-  * This method is used to calculate string length for relevant methods, using the `mb_strlen` if available and useful.
-* `protected static function reportInvalidArgument($message)`
-  * This method is called when an assertion fails, with the specified error message. Here you can throw your own exception, or log something.
-
-
 Authors
 -------
 
@@ -274,7 +242,7 @@ All contents of this package are licensed under the [MIT license].
 [beberlei/assert]: https://github.com/beberlei/assert
 [assert package]: https://github.com/beberlei/assert
 [Composer]: https://getcomposer.org
-[Bernhard Schussek]: https://webmozarts.com
+[Bernhard Schussek]: http://webmozarts.com
 [The Community Contributors]: https://github.com/webmozart/assert/graphs/contributors
 [issue tracker]: https://github.com/webmozart/assert/issues
 [Git repository]: https://github.com/webmozart/assert
diff --git a/vendor/webmozart/assert/composer.json b/vendor/webmozart/assert/composer.json
index 2e609b630..1aa9f270c 100644
--- a/vendor/webmozart/assert/composer.json
+++ b/vendor/webmozart/assert/composer.json
@@ -14,15 +14,16 @@
         }
     ],
     "require": {
-        "php": "^5.3.3 || ^7.0 || ^8.0",
+        "php": "^5.3.3 || ^7.0",
         "symfony/polyfill-ctype": "^1.8"
     },
     "require-dev": {
         "phpunit/phpunit": "^4.8.36 || ^7.5.13"
     },
-    "conflict": {
-        "vimeo/psalm": "<3.9.1",
-        "phpstan/phpstan": "<0.12.20"
+    "extra": {
+        "branch-alias": {
+            "dev-master": "1.3-dev"
+        }
     },
     "autoload": {
         "psr-4": {
@@ -31,8 +32,7 @@
     },
     "autoload-dev": {
         "psr-4": {
-            "Webmozart\\Assert\\Tests\\": "tests/",
-            "Webmozart\\Assert\\Bin\\": "bin/src"
+            "Webmozart\\Assert\\Tests\\": "tests/"
         }
     }
 }
diff --git a/vendor/webmozart/assert/psalm.xml b/vendor/webmozart/assert/psalm.xml
index 9a4300819..44d37aabe 100644
--- a/vendor/webmozart/assert/psalm.xml
+++ b/vendor/webmozart/assert/psalm.xml
@@ -4,11 +4,12 @@
     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
     xmlns="https://getpsalm.org/schema/config"
     xsi:schemaLocation="https://getpsalm.org/schema/config ci/vendor/vimeo/psalm/config.xsd"
-    phpVersion="7.3"
 >
     <projectFiles>
-        <directory name="bin" />
         <directory name="tests/static-analysis" />
+        <ignoreFiles>
+            <directory name="vendor" />
+        </ignoreFiles>
     </projectFiles>
 
 </psalm>
diff --git a/vendor/webmozart/assert/src/Assert.php b/vendor/webmozart/assert/src/Assert.php
index b28e17841..79b1036e5 100644
--- a/vendor/webmozart/assert/src/Assert.php
+++ b/vendor/webmozart/assert/src/Assert.php
@@ -15,19 +15,176 @@
 use BadMethodCallException;
 use Closure;
 use Countable;
-use DateTime;
-use DateTimeImmutable;
 use Exception;
 use InvalidArgumentException;
-use ResourceBundle;
-use SimpleXMLElement;
 use Throwable;
 use Traversable;
 
 /**
  * Efficient assertions to validate the input/output of your methods.
  *
- * @mixin Mixin
+ * @method static void nullOrString($value, $message = '')
+ * @method static void nullOrStringNotEmpty($value, $message = '')
+ * @method static void nullOrInteger($value, $message = '')
+ * @method static void nullOrIntegerish($value, $message = '')
+ * @method static void nullOrFloat($value, $message = '')
+ * @method static void nullOrNumeric($value, $message = '')
+ * @method static void nullOrNatural($value, $message = '')
+ * @method static void nullOrBoolean($value, $message = '')
+ * @method static void nullOrScalar($value, $message = '')
+ * @method static void nullOrObject($value, $message = '')
+ * @method static void nullOrResource($value, $type = null, $message = '')
+ * @method static void nullOrIsCallable($value, $message = '')
+ * @method static void nullOrIsArray($value, $message = '')
+ * @method static void nullOrIsTraversable($value, $message = '')
+ * @method static void nullOrIsArrayAccessible($value, $message = '')
+ * @method static void nullOrIsCountable($value, $message = '')
+ * @method static void nullOrIsIterable($value, $message = '')
+ * @method static void nullOrIsInstanceOf($value, $class, $message = '')
+ * @method static void nullOrNotInstanceOf($value, $class, $message = '')
+ * @method static void nullOrIsInstanceOfAny($value, $classes, $message = '')
+ * @method static void nullOrIsEmpty($value, $message = '')
+ * @method static void nullOrNotEmpty($value, $message = '')
+ * @method static void nullOrTrue($value, $message = '')
+ * @method static void nullOrFalse($value, $message = '')
+ * @method static void nullOrIp($value, $message = '')
+ * @method static void nullOrIpv4($value, $message = '')
+ * @method static void nullOrIpv6($value, $message = '')
+ * @method static void nullOrEmail($value, $message = '')
+ * @method static void nullOrUniqueValues($values, $message = '')
+ * @method static void nullOrEq($value, $expect, $message = '')
+ * @method static void nullOrNotEq($value, $expect, $message = '')
+ * @method static void nullOrSame($value, $expect, $message = '')
+ * @method static void nullOrNotSame($value, $expect, $message = '')
+ * @method static void nullOrGreaterThan($value, $limit, $message = '')
+ * @method static void nullOrGreaterThanEq($value, $limit, $message = '')
+ * @method static void nullOrLessThan($value, $limit, $message = '')
+ * @method static void nullOrLessThanEq($value, $limit, $message = '')
+ * @method static void nullOrRange($value, $min, $max, $message = '')
+ * @method static void nullOrOneOf($value, $values, $message = '')
+ * @method static void nullOrContains($value, $subString, $message = '')
+ * @method static void nullOrNotContains($value, $subString, $message = '')
+ * @method static void nullOrNotWhitespaceOnly($value, $message = '')
+ * @method static void nullOrStartsWith($value, $prefix, $message = '')
+ * @method static void nullOrStartsWithLetter($value, $message = '')
+ * @method static void nullOrEndsWith($value, $suffix, $message = '')
+ * @method static void nullOrRegex($value, $pattern, $message = '')
+ * @method static void nullOrNotRegex($value, $pattern, $message = '')
+ * @method static void nullOrUnicodeLetters($value, $message = '')
+ * @method static void nullOrAlpha($value, $message = '')
+ * @method static void nullOrDigits($value, $message = '')
+ * @method static void nullOrAlnum($value, $message = '')
+ * @method static void nullOrLower($value, $message = '')
+ * @method static void nullOrUpper($value, $message = '')
+ * @method static void nullOrLength($value, $length, $message = '')
+ * @method static void nullOrMinLength($value, $min, $message = '')
+ * @method static void nullOrMaxLength($value, $max, $message = '')
+ * @method static void nullOrLengthBetween($value, $min, $max, $message = '')
+ * @method static void nullOrFileExists($value, $message = '')
+ * @method static void nullOrFile($value, $message = '')
+ * @method static void nullOrDirectory($value, $message = '')
+ * @method static void nullOrReadable($value, $message = '')
+ * @method static void nullOrWritable($value, $message = '')
+ * @method static void nullOrClassExists($value, $message = '')
+ * @method static void nullOrSubclassOf($value, $class, $message = '')
+ * @method static void nullOrInterfaceExists($value, $message = '')
+ * @method static void nullOrImplementsInterface($value, $interface, $message = '')
+ * @method static void nullOrPropertyExists($value, $property, $message = '')
+ * @method static void nullOrPropertyNotExists($value, $property, $message = '')
+ * @method static void nullOrMethodExists($value, $method, $message = '')
+ * @method static void nullOrMethodNotExists($value, $method, $message = '')
+ * @method static void nullOrKeyExists($value, $key, $message = '')
+ * @method static void nullOrKeyNotExists($value, $key, $message = '')
+ * @method static void nullOrCount($value, $key, $message = '')
+ * @method static void nullOrMinCount($value, $min, $message = '')
+ * @method static void nullOrMaxCount($value, $max, $message = '')
+ * @method static void nullOrIsList($value, $message = '')
+ * @method static void nullOrIsMap($value, $message = '')
+ * @method static void nullOrCountBetween($value, $min, $max, $message = '')
+ * @method static void nullOrUuid($values, $message = '')
+ * @method static void nullOrThrows($expression, $class = 'Exception', $message = '')
+ * @method static void allString($values, $message = '')
+ * @method static void allStringNotEmpty($values, $message = '')
+ * @method static void allInteger($values, $message = '')
+ * @method static void allIntegerish($values, $message = '')
+ * @method static void allFloat($values, $message = '')
+ * @method static void allNumeric($values, $message = '')
+ * @method static void allNatural($values, $message = '')
+ * @method static void allBoolean($values, $message = '')
+ * @method static void allScalar($values, $message = '')
+ * @method static void allObject($values, $message = '')
+ * @method static void allResource($values, $type = null, $message = '')
+ * @method static void allIsCallable($values, $message = '')
+ * @method static void allIsArray($values, $message = '')
+ * @method static void allIsTraversable($values, $message = '')
+ * @method static void allIsArrayAccessible($values, $message = '')
+ * @method static void allIsCountable($values, $message = '')
+ * @method static void allIsIterable($values, $message = '')
+ * @method static void allIsInstanceOf($values, $class, $message = '')
+ * @method static void allNotInstanceOf($values, $class, $message = '')
+ * @method static void allIsInstanceOfAny($values, $classes, $message = '')
+ * @method static void allNull($values, $message = '')
+ * @method static void allNotNull($values, $message = '')
+ * @method static void allIsEmpty($values, $message = '')
+ * @method static void allNotEmpty($values, $message = '')
+ * @method static void allTrue($values, $message = '')
+ * @method static void allFalse($values, $message = '')
+ * @method static void allIp($values, $message = '')
+ * @method static void allIpv4($values, $message = '')
+ * @method static void allIpv6($values, $message = '')
+ * @method static void allEmail($values, $message = '')
+ * @method static void allUniqueValues($values, $message = '')
+ * @method static void allEq($values, $expect, $message = '')
+ * @method static void allNotEq($values, $expect, $message = '')
+ * @method static void allSame($values, $expect, $message = '')
+ * @method static void allNotSame($values, $expect, $message = '')
+ * @method static void allGreaterThan($values, $limit, $message = '')
+ * @method static void allGreaterThanEq($values, $limit, $message = '')
+ * @method static void allLessThan($values, $limit, $message = '')
+ * @method static void allLessThanEq($values, $limit, $message = '')
+ * @method static void allRange($values, $min, $max, $message = '')
+ * @method static void allOneOf($values, $values, $message = '')
+ * @method static void allContains($values, $subString, $message = '')
+ * @method static void allNotContains($values, $subString, $message = '')
+ * @method static void allNotWhitespaceOnly($values, $message = '')
+ * @method static void allStartsWith($values, $prefix, $message = '')
+ * @method static void allStartsWithLetter($values, $message = '')
+ * @method static void allEndsWith($values, $suffix, $message = '')
+ * @method static void allRegex($values, $pattern, $message = '')
+ * @method static void allNotRegex($values, $pattern, $message = '')
+ * @method static void allUnicodeLetters($values, $message = '')
+ * @method static void allAlpha($values, $message = '')
+ * @method static void allDigits($values, $message = '')
+ * @method static void allAlnum($values, $message = '')
+ * @method static void allLower($values, $message = '')
+ * @method static void allUpper($values, $message = '')
+ * @method static void allLength($values, $length, $message = '')
+ * @method static void allMinLength($values, $min, $message = '')
+ * @method static void allMaxLength($values, $max, $message = '')
+ * @method static void allLengthBetween($values, $min, $max, $message = '')
+ * @method static void allFileExists($values, $message = '')
+ * @method static void allFile($values, $message = '')
+ * @method static void allDirectory($values, $message = '')
+ * @method static void allReadable($values, $message = '')
+ * @method static void allWritable($values, $message = '')
+ * @method static void allClassExists($values, $message = '')
+ * @method static void allSubclassOf($values, $class, $message = '')
+ * @method static void allInterfaceExists($values, $message = '')
+ * @method static void allImplementsInterface($values, $interface, $message = '')
+ * @method static void allPropertyExists($values, $property, $message = '')
+ * @method static void allPropertyNotExists($values, $property, $message = '')
+ * @method static void allMethodExists($values, $method, $message = '')
+ * @method static void allMethodNotExists($values, $method, $message = '')
+ * @method static void allKeyExists($values, $key, $message = '')
+ * @method static void allKeyNotExists($values, $key, $message = '')
+ * @method static void allCount($values, $key, $message = '')
+ * @method static void allMinCount($values, $min, $message = '')
+ * @method static void allMaxCount($values, $max, $message = '')
+ * @method static void allCountBetween($values, $min, $max, $message = '')
+ * @method static void allIsList($values, $message = '')
+ * @method static void allIsMap($values, $message = '')
+ * @method static void allUuid($values, $message = '')
+ * @method static void allThrows($expressions, $class = 'Exception', $message = '')
  *
  * @since  1.0
  *
@@ -36,13 +193,10 @@
 class Assert
 {
     /**
-     * @psalm-pure
      * @psalm-assert string $value
      *
      * @param mixed  $value
      * @param string $message
-     *
-     * @throws InvalidArgumentException
      */
     public static function string($value, $message = '')
     {
@@ -55,13 +209,10 @@ public static function string($value, $message = '')
     }
 
     /**
-     * @psalm-pure
-     * @psalm-assert non-empty-string $value
+     * @psalm-assert string $value
      *
      * @param mixed  $value
      * @param string $message
-     *
-     * @throws InvalidArgumentException
      */
     public static function stringNotEmpty($value, $message = '')
     {
@@ -70,13 +221,10 @@ public static function stringNotEmpty($value, $message = '')
     }
 
     /**
-     * @psalm-pure
      * @psalm-assert int $value
      *
      * @param mixed  $value
      * @param string $message
-     *
-     * @throws InvalidArgumentException
      */
     public static function integer($value, $message = '')
     {
@@ -89,13 +237,10 @@ public static function integer($value, $message = '')
     }
 
     /**
-     * @psalm-pure
      * @psalm-assert numeric $value
      *
      * @param mixed  $value
      * @param string $message
-     *
-     * @throws InvalidArgumentException
      */
     public static function integerish($value, $message = '')
     {
@@ -108,13 +253,10 @@ public static function integerish($value, $message = '')
     }
 
     /**
-     * @psalm-pure
      * @psalm-assert float $value
      *
      * @param mixed  $value
      * @param string $message
-     *
-     * @throws InvalidArgumentException
      */
     public static function float($value, $message = '')
     {
@@ -127,13 +269,10 @@ public static function float($value, $message = '')
     }
 
     /**
-     * @psalm-pure
      * @psalm-assert numeric $value
      *
      * @param mixed  $value
      * @param string $message
-     *
-     * @throws InvalidArgumentException
      */
     public static function numeric($value, $message = '')
     {
@@ -146,32 +285,26 @@ public static function numeric($value, $message = '')
     }
 
     /**
-     * @psalm-pure
      * @psalm-assert int $value
      *
      * @param mixed  $value
      * @param string $message
-     *
-     * @throws InvalidArgumentException
      */
     public static function natural($value, $message = '')
     {
         if (!\is_int($value) || $value < 0) {
             static::reportInvalidArgument(\sprintf(
-                $message ?: 'Expected a non-negative integer. Got: %s',
+                $message ?: 'Expected a non-negative integer. Got %s',
                 static::valueToString($value)
             ));
         }
     }
 
     /**
-     * @psalm-pure
      * @psalm-assert bool $value
      *
      * @param mixed  $value
      * @param string $message
-     *
-     * @throws InvalidArgumentException
      */
     public static function boolean($value, $message = '')
     {
@@ -184,13 +317,10 @@ public static function boolean($value, $message = '')
     }
 
     /**
-     * @psalm-pure
      * @psalm-assert scalar $value
      *
      * @param mixed  $value
      * @param string $message
-     *
-     * @throws InvalidArgumentException
      */
     public static function scalar($value, $message = '')
     {
@@ -203,13 +333,10 @@ public static function scalar($value, $message = '')
     }
 
     /**
-     * @psalm-pure
      * @psalm-assert object $value
      *
      * @param mixed  $value
      * @param string $message
-     *
-     * @throws InvalidArgumentException
      */
     public static function object($value, $message = '')
     {
@@ -222,14 +349,11 @@ public static function object($value, $message = '')
     }
 
     /**
-     * @psalm-pure
      * @psalm-assert resource $value
      *
      * @param mixed       $value
      * @param string|null $type    type of resource this should be. @see https://www.php.net/manual/en/function.get-resource-type.php
      * @param string      $message
-     *
-     * @throws InvalidArgumentException
      */
     public static function resource($value, $type = null, $message = '')
     {
@@ -250,13 +374,10 @@ public static function resource($value, $type = null, $message = '')
     }
 
     /**
-     * @psalm-pure
      * @psalm-assert callable $value
      *
      * @param mixed  $value
      * @param string $message
-     *
-     * @throws InvalidArgumentException
      */
     public static function isCallable($value, $message = '')
     {
@@ -269,13 +390,10 @@ public static function isCallable($value, $message = '')
     }
 
     /**
-     * @psalm-pure
      * @psalm-assert array $value
      *
      * @param mixed  $value
      * @param string $message
-     *
-     * @throws InvalidArgumentException
      */
     public static function isArray($value, $message = '')
     {
@@ -288,15 +406,12 @@ public static function isArray($value, $message = '')
     }
 
     /**
-     * @psalm-pure
      * @psalm-assert iterable $value
      *
      * @deprecated use "isIterable" or "isInstanceOf" instead
      *
      * @param mixed  $value
      * @param string $message
-     *
-     * @throws InvalidArgumentException
      */
     public static function isTraversable($value, $message = '')
     {
@@ -317,13 +432,8 @@ public static function isTraversable($value, $message = '')
     }
 
     /**
-     * @psalm-pure
-     * @psalm-assert array|ArrayAccess $value
-     *
      * @param mixed  $value
      * @param string $message
-     *
-     * @throws InvalidArgumentException
      */
     public static function isArrayAccessible($value, $message = '')
     {
@@ -336,22 +446,14 @@ public static function isArrayAccessible($value, $message = '')
     }
 
     /**
-     * @psalm-pure
      * @psalm-assert countable $value
      *
      * @param mixed  $value
      * @param string $message
-     *
-     * @throws InvalidArgumentException
      */
     public static function isCountable($value, $message = '')
     {
-        if (
-            !\is_array($value)
-            && !($value instanceof Countable)
-            && !($value instanceof ResourceBundle)
-            && !($value instanceof SimpleXMLElement)
-        ) {
+        if (!\is_array($value) && !($value instanceof Countable)) {
             static::reportInvalidArgument(\sprintf(
                 $message ?: 'Expected a countable. Got: %s',
                 static::typeToString($value)
@@ -360,13 +462,10 @@ public static function isCountable($value, $message = '')
     }
 
     /**
-     * @psalm-pure
      * @psalm-assert iterable $value
      *
      * @param mixed  $value
      * @param string $message
-     *
-     * @throws InvalidArgumentException
      */
     public static function isIterable($value, $message = '')
     {
@@ -379,7 +478,6 @@ public static function isIterable($value, $message = '')
     }
 
     /**
-     * @psalm-pure
      * @psalm-template ExpectedType of object
      * @psalm-param class-string<ExpectedType> $class
      * @psalm-assert ExpectedType $value
@@ -387,8 +485,6 @@ public static function isIterable($value, $message = '')
      * @param mixed         $value
      * @param string|object $class
      * @param string        $message
-     *
-     * @throws InvalidArgumentException
      */
     public static function isInstanceOf($value, $class, $message = '')
     {
@@ -402,7 +498,6 @@ public static function isInstanceOf($value, $class, $message = '')
     }
 
     /**
-     * @psalm-pure
      * @psalm-template ExpectedType of object
      * @psalm-param class-string<ExpectedType> $class
      * @psalm-assert !ExpectedType $value
@@ -410,8 +505,6 @@ public static function isInstanceOf($value, $class, $message = '')
      * @param mixed         $value
      * @param string|object $class
      * @param string        $message
-     *
-     * @throws InvalidArgumentException
      */
     public static function notInstanceOf($value, $class, $message = '')
     {
@@ -425,14 +518,9 @@ public static function notInstanceOf($value, $class, $message = '')
     }
 
     /**
-     * @psalm-pure
-     * @psalm-param array<class-string> $classes
-     *
      * @param mixed                $value
      * @param array<object|string> $classes
      * @param string               $message
-     *
-     * @throws InvalidArgumentException
      */
     public static function isInstanceOfAny($value, array $classes, $message = '')
     {
@@ -450,91 +538,10 @@ public static function isInstanceOfAny($value, array $classes, $message = '')
     }
 
     /**
-     * @psalm-pure
-     * @psalm-template ExpectedType of object
-     * @psalm-param class-string<ExpectedType> $class
-     * @psalm-assert ExpectedType|class-string<ExpectedType> $value
-     *
-     * @param object|string $value
-     * @param string        $class
-     * @param string        $message
-     *
-     * @throws InvalidArgumentException
-     */
-    public static function isAOf($value, $class, $message = '')
-    {
-        static::string($class, 'Expected class as a string. Got: %s');
-
-        if (!\is_a($value, $class, \is_string($value))) {
-            static::reportInvalidArgument(sprintf(
-                $message ?: 'Expected an instance of this class or to this class among his parents %2$s. Got: %s',
-                static::typeToString($value),
-                $class
-            ));
-        }
-    }
-
-    /**
-     * @psalm-pure
-     * @psalm-template UnexpectedType of object
-     * @psalm-param class-string<UnexpectedType> $class
-     * @psalm-assert !UnexpectedType $value
-     * @psalm-assert !class-string<UnexpectedType> $value
-     *
-     * @param object|string $value
-     * @param string        $class
-     * @param string        $message
-     *
-     * @throws InvalidArgumentException
-     */
-    public static function isNotA($value, $class, $message = '')
-    {
-        static::string($class, 'Expected class as a string. Got: %s');
-
-        if (\is_a($value, $class, \is_string($value))) {
-            static::reportInvalidArgument(sprintf(
-                $message ?: 'Expected an instance of this class or to this class among his parents other than %2$s. Got: %s',
-                static::typeToString($value),
-                $class
-            ));
-        }
-    }
-
-    /**
-     * @psalm-pure
-     * @psalm-param array<class-string> $classes
-     *
-     * @param object|string $value
-     * @param string[]      $classes
-     * @param string        $message
-     *
-     * @throws InvalidArgumentException
-     */
-    public static function isAnyOf($value, array $classes, $message = '')
-    {
-        foreach ($classes as $class) {
-            static::string($class, 'Expected class as a string. Got: %s');
-
-            if (\is_a($value, $class, \is_string($value))) {
-                return;
-            }
-        }
-
-        static::reportInvalidArgument(sprintf(
-            $message ?: 'Expected an any of instance of this class or to this class among his parents other than %2$s. Got: %s',
-            static::typeToString($value),
-            \implode(', ', \array_map(array('static', 'valueToString'), $classes))
-        ));
-    }
-
-    /**
-     * @psalm-pure
      * @psalm-assert empty $value
      *
      * @param mixed  $value
      * @param string $message
-     *
-     * @throws InvalidArgumentException
      */
     public static function isEmpty($value, $message = '')
     {
@@ -547,13 +554,10 @@ public static function isEmpty($value, $message = '')
     }
 
     /**
-     * @psalm-pure
      * @psalm-assert !empty $value
      *
      * @param mixed  $value
      * @param string $message
-     *
-     * @throws InvalidArgumentException
      */
     public static function notEmpty($value, $message = '')
     {
@@ -566,13 +570,10 @@ public static function notEmpty($value, $message = '')
     }
 
     /**
-     * @psalm-pure
      * @psalm-assert null $value
      *
      * @param mixed  $value
      * @param string $message
-     *
-     * @throws InvalidArgumentException
      */
     public static function null($value, $message = '')
     {
@@ -585,13 +586,10 @@ public static function null($value, $message = '')
     }
 
     /**
-     * @psalm-pure
      * @psalm-assert !null $value
      *
      * @param mixed  $value
      * @param string $message
-     *
-     * @throws InvalidArgumentException
      */
     public static function notNull($value, $message = '')
     {
@@ -603,13 +601,10 @@ public static function notNull($value, $message = '')
     }
 
     /**
-     * @psalm-pure
      * @psalm-assert true $value
      *
      * @param mixed  $value
      * @param string $message
-     *
-     * @throws InvalidArgumentException
      */
     public static function true($value, $message = '')
     {
@@ -622,13 +617,10 @@ public static function true($value, $message = '')
     }
 
     /**
-     * @psalm-pure
      * @psalm-assert false $value
      *
      * @param mixed  $value
      * @param string $message
-     *
-     * @throws InvalidArgumentException
      */
     public static function false($value, $message = '')
     {
@@ -641,28 +633,8 @@ public static function false($value, $message = '')
     }
 
     /**
-     * @psalm-pure
-     * @psalm-assert !false $value
-     *
      * @param mixed  $value
      * @param string $message
-     *
-     * @throws InvalidArgumentException
-     */
-    public static function notFalse($value, $message = '')
-    {
-        if (false === $value) {
-            static::reportInvalidArgument(
-                $message ?: 'Expected a value other than false.'
-            );
-        }
-    }
-
-    /**
-     * @param mixed  $value
-     * @param string $message
-     *
-     * @throws InvalidArgumentException
      */
     public static function ip($value, $message = '')
     {
@@ -677,8 +649,6 @@ public static function ip($value, $message = '')
     /**
      * @param mixed  $value
      * @param string $message
-     *
-     * @throws InvalidArgumentException
      */
     public static function ipv4($value, $message = '')
     {
@@ -693,14 +663,12 @@ public static function ipv4($value, $message = '')
     /**
      * @param mixed  $value
      * @param string $message
-     *
-     * @throws InvalidArgumentException
      */
     public static function ipv6($value, $message = '')
     {
         if (false === \filter_var($value, \FILTER_VALIDATE_IP, \FILTER_FLAG_IPV6)) {
             static::reportInvalidArgument(\sprintf(
-                $message ?: 'Expected a value to be an IPv6. Got: %s',
+                $message ?: 'Expected a value to be an IPv6. Got %s',
                 static::valueToString($value)
             ));
         }
@@ -709,14 +677,12 @@ public static function ipv6($value, $message = '')
     /**
      * @param mixed  $value
      * @param string $message
-     *
-     * @throws InvalidArgumentException
      */
     public static function email($value, $message = '')
     {
         if (false === \filter_var($value, FILTER_VALIDATE_EMAIL)) {
             static::reportInvalidArgument(\sprintf(
-                $message ?: 'Expected a value to be a valid e-mail address. Got: %s',
+                $message ?: 'Expected a value to be a valid e-mail address. Got %s',
                 static::valueToString($value)
             ));
         }
@@ -727,8 +693,6 @@ public static function email($value, $message = '')
      *
      * @param array  $values
      * @param string $message
-     *
-     * @throws InvalidArgumentException
      */
     public static function uniqueValues(array $values, $message = '')
     {
@@ -750,8 +714,6 @@ public static function uniqueValues(array $values, $message = '')
      * @param mixed  $value
      * @param mixed  $expect
      * @param string $message
-     *
-     * @throws InvalidArgumentException
      */
     public static function eq($value, $expect, $message = '')
     {
@@ -768,8 +730,6 @@ public static function eq($value, $expect, $message = '')
      * @param mixed  $value
      * @param mixed  $expect
      * @param string $message
-     *
-     * @throws InvalidArgumentException
      */
     public static function notEq($value, $expect, $message = '')
     {
@@ -782,13 +742,13 @@ public static function notEq($value, $expect, $message = '')
     }
 
     /**
-     * @psalm-pure
+     * @psalm-template ExpectedType
+     * @psalm-param ExpectedType $expect
+     * @psalm-assert =ExpectedType $value
      *
      * @param mixed  $value
      * @param mixed  $expect
      * @param string $message
-     *
-     * @throws InvalidArgumentException
      */
     public static function same($value, $expect, $message = '')
     {
@@ -802,13 +762,9 @@ public static function same($value, $expect, $message = '')
     }
 
     /**
-     * @psalm-pure
-     *
      * @param mixed  $value
      * @param mixed  $expect
      * @param string $message
-     *
-     * @throws InvalidArgumentException
      */
     public static function notSame($value, $expect, $message = '')
     {
@@ -821,13 +777,9 @@ public static function notSame($value, $expect, $message = '')
     }
 
     /**
-     * @psalm-pure
-     *
      * @param mixed  $value
      * @param mixed  $limit
      * @param string $message
-     *
-     * @throws InvalidArgumentException
      */
     public static function greaterThan($value, $limit, $message = '')
     {
@@ -841,13 +793,9 @@ public static function greaterThan($value, $limit, $message = '')
     }
 
     /**
-     * @psalm-pure
-     *
      * @param mixed  $value
      * @param mixed  $limit
      * @param string $message
-     *
-     * @throws InvalidArgumentException
      */
     public static function greaterThanEq($value, $limit, $message = '')
     {
@@ -861,13 +809,9 @@ public static function greaterThanEq($value, $limit, $message = '')
     }
 
     /**
-     * @psalm-pure
-     *
      * @param mixed  $value
      * @param mixed  $limit
      * @param string $message
-     *
-     * @throws InvalidArgumentException
      */
     public static function lessThan($value, $limit, $message = '')
     {
@@ -881,13 +825,9 @@ public static function lessThan($value, $limit, $message = '')
     }
 
     /**
-     * @psalm-pure
-     *
      * @param mixed  $value
      * @param mixed  $limit
      * @param string $message
-     *
-     * @throws InvalidArgumentException
      */
     public static function lessThanEq($value, $limit, $message = '')
     {
@@ -903,14 +843,10 @@ public static function lessThanEq($value, $limit, $message = '')
     /**
      * Inclusive range, so Assert::(3, 3, 5) passes.
      *
-     * @psalm-pure
-     *
-     * @param mixed  $value
-     * @param mixed  $min
-     * @param mixed  $max
+     * @param mixed $value
+     * @param mixed min
+     * @param mixed max
      * @param string $message
-     *
-     * @throws InvalidArgumentException
      */
     public static function range($value, $min, $max, $message = '')
     {
@@ -925,33 +861,17 @@ public static function range($value, $min, $max, $message = '')
     }
 
     /**
-     * A more human-readable alias of Assert::inArray().
+     * Does strict comparison, so Assert::oneOf(3, ['3']) does not pass the assertion.
      *
-     * @psalm-pure
+     * @psalm-template ExpectedType
+     * @psalm-param array<ExpectedType> $values
+     * @psalm-assert ExpectedType $value
      *
      * @param mixed  $value
      * @param array  $values
      * @param string $message
-     *
-     * @throws InvalidArgumentException
      */
     public static function oneOf($value, array $values, $message = '')
-    {
-        static::inArray($value, $values, $message);
-    }
-
-    /**
-     * Does strict comparison, so Assert::inArray(3, ['3']) does not pass the assertion.
-     *
-     * @psalm-pure
-     *
-     * @param mixed  $value
-     * @param array  $values
-     * @param string $message
-     *
-     * @throws InvalidArgumentException
-     */
-    public static function inArray($value, array $values, $message = '')
     {
         if (!\in_array($value, $values, true)) {
             static::reportInvalidArgument(\sprintf(
@@ -963,13 +883,9 @@ public static function inArray($value, array $values, $message = '')
     }
 
     /**
-     * @psalm-pure
-     *
-     * @param string $value
+     * @param mixed  $value
      * @param string $subString
      * @param string $message
-     *
-     * @throws InvalidArgumentException
      */
     public static function contains($value, $subString, $message = '')
     {
@@ -983,13 +899,9 @@ public static function contains($value, $subString, $message = '')
     }
 
     /**
-     * @psalm-pure
-     *
-     * @param string $value
+     * @param mixed  $value
      * @param string $subString
      * @param string $message
-     *
-     * @throws InvalidArgumentException
      */
     public static function notContains($value, $subString, $message = '')
     {
@@ -1003,12 +915,8 @@ public static function notContains($value, $subString, $message = '')
     }
 
     /**
-     * @psalm-pure
-     *
-     * @param string $value
+     * @param mixed  $value
      * @param string $message
-     *
-     * @throws InvalidArgumentException
      */
     public static function notWhitespaceOnly($value, $message = '')
     {
@@ -1021,13 +929,9 @@ public static function notWhitespaceOnly($value, $message = '')
     }
 
     /**
-     * @psalm-pure
-     *
-     * @param string $value
+     * @param mixed  $value
      * @param string $prefix
      * @param string $message
-     *
-     * @throws InvalidArgumentException
      */
     public static function startsWith($value, $prefix, $message = '')
     {
@@ -1041,37 +945,11 @@ public static function startsWith($value, $prefix, $message = '')
     }
 
     /**
-     * @psalm-pure
-     *
-     * @param string $value
-     * @param string $prefix
-     * @param string $message
-     *
-     * @throws InvalidArgumentException
-     */
-    public static function notStartsWith($value, $prefix, $message = '')
-    {
-        if (0 === \strpos($value, $prefix)) {
-            static::reportInvalidArgument(\sprintf(
-                $message ?: 'Expected a value not to start with %2$s. Got: %s',
-                static::valueToString($value),
-                static::valueToString($prefix)
-            ));
-        }
-    }
-
-    /**
-     * @psalm-pure
-     *
      * @param mixed  $value
      * @param string $message
-     *
-     * @throws InvalidArgumentException
      */
     public static function startsWithLetter($value, $message = '')
     {
-        static::string($value);
-
         $valid = isset($value[0]);
 
         if ($valid) {
@@ -1090,13 +968,9 @@ public static function startsWithLetter($value, $message = '')
     }
 
     /**
-     * @psalm-pure
-     *
-     * @param string $value
+     * @param mixed  $value
      * @param string $suffix
      * @param string $message
-     *
-     * @throws InvalidArgumentException
      */
     public static function endsWith($value, $suffix, $message = '')
     {
@@ -1110,33 +984,9 @@ public static function endsWith($value, $suffix, $message = '')
     }
 
     /**
-     * @psalm-pure
-     *
-     * @param string $value
-     * @param string $suffix
+     * @param mixed  $value
+     * @param mixed  $pattern
      * @param string $message
-     *
-     * @throws InvalidArgumentException
-     */
-    public static function notEndsWith($value, $suffix, $message = '')
-    {
-        if ($suffix === \substr($value, -\strlen($suffix))) {
-            static::reportInvalidArgument(\sprintf(
-                $message ?: 'Expected a value not to end with %2$s. Got: %s',
-                static::valueToString($value),
-                static::valueToString($suffix)
-            ));
-        }
-    }
-
-    /**
-     * @psalm-pure
-     *
-     * @param string $value
-     * @param string $pattern
-     * @param string $message
-     *
-     * @throws InvalidArgumentException
      */
     public static function regex($value, $pattern, $message = '')
     {
@@ -1149,13 +999,9 @@ public static function regex($value, $pattern, $message = '')
     }
 
     /**
-     * @psalm-pure
-     *
-     * @param string $value
-     * @param string $pattern
+     * @param mixed  $value
+     * @param mixed  $pattern
      * @param string $message
-     *
-     * @throws InvalidArgumentException
      */
     public static function notRegex($value, $pattern, $message = '')
     {
@@ -1170,12 +1016,10 @@ public static function notRegex($value, $pattern, $message = '')
     }
 
     /**
-     * @psalm-pure
+     * @psalm-assert !numeric $value
      *
      * @param mixed  $value
      * @param string $message
-     *
-     * @throws InvalidArgumentException
      */
     public static function unicodeLetters($value, $message = '')
     {
@@ -1190,17 +1034,11 @@ public static function unicodeLetters($value, $message = '')
     }
 
     /**
-     * @psalm-pure
-     *
      * @param mixed  $value
      * @param string $message
-     *
-     * @throws InvalidArgumentException
      */
     public static function alpha($value, $message = '')
     {
-        static::string($value);
-
         $locale = \setlocale(LC_CTYPE, 0);
         \setlocale(LC_CTYPE, 'C');
         $valid = !\ctype_alpha($value);
@@ -1215,12 +1053,8 @@ public static function alpha($value, $message = '')
     }
 
     /**
-     * @psalm-pure
-     *
-     * @param string $value
+     * @param mixed  $value
      * @param string $message
-     *
-     * @throws InvalidArgumentException
      */
     public static function digits($value, $message = '')
     {
@@ -1238,12 +1072,8 @@ public static function digits($value, $message = '')
     }
 
     /**
-     * @psalm-pure
-     *
-     * @param string $value
+     * @param mixed  $value
      * @param string $message
-     *
-     * @throws InvalidArgumentException
      */
     public static function alnum($value, $message = '')
     {
@@ -1261,13 +1091,8 @@ public static function alnum($value, $message = '')
     }
 
     /**
-     * @psalm-pure
-     * @psalm-assert lowercase-string $value
-     *
-     * @param string $value
+     * @param mixed  $value
      * @param string $message
-     *
-     * @throws InvalidArgumentException
      */
     public static function lower($value, $message = '')
     {
@@ -1285,13 +1110,8 @@ public static function lower($value, $message = '')
     }
 
     /**
-     * @psalm-pure
-     * @psalm-assert !lowercase-string $value
-     *
-     * @param string $value
+     * @param mixed  $value
      * @param string $message
-     *
-     * @throws InvalidArgumentException
      */
     public static function upper($value, $message = '')
     {
@@ -1309,13 +1129,9 @@ public static function upper($value, $message = '')
     }
 
     /**
-     * @psalm-pure
-     *
-     * @param string $value
-     * @param int    $length
+     * @param mixed  $value
+     * @param mixed  $length
      * @param string $message
-     *
-     * @throws InvalidArgumentException
      */
     public static function length($value, $length, $message = '')
     {
@@ -1331,13 +1147,9 @@ public static function length($value, $length, $message = '')
     /**
      * Inclusive min.
      *
-     * @psalm-pure
-     *
-     * @param string    $value
-     * @param int|float $min
-     * @param string    $message
-     *
-     * @throws InvalidArgumentException
+     * @param mixed  $value
+     * @param mixed  $min
+     * @param string $message
      */
     public static function minLength($value, $min, $message = '')
     {
@@ -1353,13 +1165,9 @@ public static function minLength($value, $min, $message = '')
     /**
      * Inclusive max.
      *
-     * @psalm-pure
-     *
-     * @param string    $value
-     * @param int|float $max
-     * @param string    $message
-     *
-     * @throws InvalidArgumentException
+     * @param mixed  $value
+     * @param mixed  $max
+     * @param string $message
      */
     public static function maxLength($value, $max, $message = '')
     {
@@ -1375,14 +1183,10 @@ public static function maxLength($value, $max, $message = '')
     /**
      * Inclusive , so Assert::lengthBetween('asd', 3, 5); passes the assertion.
      *
-     * @psalm-pure
-     *
-     * @param string    $value
-     * @param int|float $min
-     * @param int|float $max
-     * @param string    $message
-     *
-     * @throws InvalidArgumentException
+     * @param mixed  $value
+     * @param mixed  $min
+     * @param mixed  $max
+     * @param string $message
      */
     public static function lengthBetween($value, $min, $max, $message = '')
     {
@@ -1403,8 +1207,6 @@ public static function lengthBetween($value, $min, $max, $message = '')
      *
      * @param mixed  $value
      * @param string $message
-     *
-     * @throws InvalidArgumentException
      */
     public static function fileExists($value, $message = '')
     {
@@ -1421,8 +1223,6 @@ public static function fileExists($value, $message = '')
     /**
      * @param mixed  $value
      * @param string $message
-     *
-     * @throws InvalidArgumentException
      */
     public static function file($value, $message = '')
     {
@@ -1439,8 +1239,6 @@ public static function file($value, $message = '')
     /**
      * @param mixed  $value
      * @param string $message
-     *
-     * @throws InvalidArgumentException
      */
     public static function directory($value, $message = '')
     {
@@ -1455,10 +1253,8 @@ public static function directory($value, $message = '')
     }
 
     /**
-     * @param string $value
+     * @param mixed  $value
      * @param string $message
-     *
-     * @throws InvalidArgumentException
      */
     public static function readable($value, $message = '')
     {
@@ -1471,10 +1267,8 @@ public static function readable($value, $message = '')
     }
 
     /**
-     * @param string $value
+     * @param mixed  $value
      * @param string $message
-     *
-     * @throws InvalidArgumentException
      */
     public static function writable($value, $message = '')
     {
@@ -1491,8 +1285,6 @@ public static function writable($value, $message = '')
      *
      * @param mixed  $value
      * @param string $message
-     *
-     * @throws InvalidArgumentException
      */
     public static function classExists($value, $message = '')
     {
@@ -1505,16 +1297,9 @@ public static function classExists($value, $message = '')
     }
 
     /**
-     * @psalm-pure
-     * @psalm-template ExpectedType of object
-     * @psalm-param class-string<ExpectedType> $class
-     * @psalm-assert class-string<ExpectedType>|ExpectedType $value
-     *
      * @param mixed         $value
      * @param string|object $class
      * @param string        $message
-     *
-     * @throws InvalidArgumentException
      */
     public static function subclassOf($value, $class, $message = '')
     {
@@ -1532,8 +1317,6 @@ public static function subclassOf($value, $class, $message = '')
      *
      * @param mixed  $value
      * @param string $message
-     *
-     * @throws InvalidArgumentException
      */
     public static function interfaceExists($value, $message = '')
     {
@@ -1546,16 +1329,9 @@ public static function interfaceExists($value, $message = '')
     }
 
     /**
-     * @psalm-pure
-     * @psalm-template ExpectedType of object
-     * @psalm-param class-string<ExpectedType> $interface
-     * @psalm-assert class-string<ExpectedType> $value
-     *
      * @param mixed  $value
      * @param mixed  $interface
      * @param string $message
-     *
-     * @throws InvalidArgumentException
      */
     public static function implementsInterface($value, $interface, $message = '')
     {
@@ -1569,14 +1345,9 @@ public static function implementsInterface($value, $interface, $message = '')
     }
 
     /**
-     * @psalm-pure
-     * @psalm-param class-string|object $classOrObject
-     *
      * @param string|object $classOrObject
      * @param mixed         $property
      * @param string        $message
-     *
-     * @throws InvalidArgumentException
      */
     public static function propertyExists($classOrObject, $property, $message = '')
     {
@@ -1589,14 +1360,9 @@ public static function propertyExists($classOrObject, $property, $message = '')
     }
 
     /**
-     * @psalm-pure
-     * @psalm-param class-string|object $classOrObject
-     *
      * @param string|object $classOrObject
      * @param mixed         $property
      * @param string        $message
-     *
-     * @throws InvalidArgumentException
      */
     public static function propertyNotExists($classOrObject, $property, $message = '')
     {
@@ -1609,18 +1375,13 @@ public static function propertyNotExists($classOrObject, $property, $message = '
     }
 
     /**
-     * @psalm-pure
-     * @psalm-param class-string|object $classOrObject
-     *
      * @param string|object $classOrObject
      * @param mixed         $method
      * @param string        $message
-     *
-     * @throws InvalidArgumentException
      */
     public static function methodExists($classOrObject, $method, $message = '')
     {
-        if (!(\is_string($classOrObject) || \is_object($classOrObject)) || !\method_exists($classOrObject, $method)) {
+        if (!\method_exists($classOrObject, $method)) {
             static::reportInvalidArgument(\sprintf(
                 $message ?: 'Expected the method %s to exist.',
                 static::valueToString($method)
@@ -1629,18 +1390,13 @@ public static function methodExists($classOrObject, $method, $message = '')
     }
 
     /**
-     * @psalm-pure
-     * @psalm-param class-string|object $classOrObject
-     *
      * @param string|object $classOrObject
      * @param mixed         $method
      * @param string        $message
-     *
-     * @throws InvalidArgumentException
      */
     public static function methodNotExists($classOrObject, $method, $message = '')
     {
-        if ((\is_string($classOrObject) || \is_object($classOrObject)) && \method_exists($classOrObject, $method)) {
+        if (\method_exists($classOrObject, $method)) {
             static::reportInvalidArgument(\sprintf(
                 $message ?: 'Expected the method %s to not exist.',
                 static::valueToString($method)
@@ -1649,13 +1405,9 @@ public static function methodNotExists($classOrObject, $method, $message = '')
     }
 
     /**
-     * @psalm-pure
-     *
      * @param array      $array
      * @param string|int $key
      * @param string     $message
-     *
-     * @throws InvalidArgumentException
      */
     public static function keyExists($array, $key, $message = '')
     {
@@ -1668,13 +1420,9 @@ public static function keyExists($array, $key, $message = '')
     }
 
     /**
-     * @psalm-pure
-     *
      * @param array      $array
      * @param string|int $key
      * @param string     $message
-     *
-     * @throws InvalidArgumentException
      */
     public static function keyNotExists($array, $key, $message = '')
     {
@@ -1686,57 +1434,28 @@ public static function keyNotExists($array, $key, $message = '')
         }
     }
 
-    /**
-     * Checks if a value is a valid array key (int or string).
-     *
-     * @psalm-pure
-     * @psalm-assert array-key $value
-     *
-     * @param mixed  $value
-     * @param string $message
-     *
-     * @throws InvalidArgumentException
-     */
-    public static function validArrayKey($value, $message = '')
-    {
-        if (!(\is_int($value) || \is_string($value))) {
-            static::reportInvalidArgument(\sprintf(
-                $message ?: 'Expected string or integer. Got: %s',
-                static::typeToString($value)
-            ));
-        }
-    }
-
     /**
      * Does not check if $array is countable, this can generate a warning on php versions after 7.2.
      *
-     * @param Countable|array $array
-     * @param int             $number
-     * @param string          $message
-     *
-     * @throws InvalidArgumentException
+     * @param mixed  $array
+     * @param mixed  $number
+     * @param string $message
      */
     public static function count($array, $number, $message = '')
     {
         static::eq(
             \count($array),
             $number,
-            \sprintf(
-                $message ?: 'Expected an array to contain %d elements. Got: %d.',
-                $number,
-                \count($array)
-            )
+            $message ?: \sprintf('Expected an array to contain %d elements. Got: %d.', $number, \count($array))
         );
     }
 
     /**
      * Does not check if $array is countable, this can generate a warning on php versions after 7.2.
      *
-     * @param Countable|array $array
-     * @param int|float       $min
-     * @param string          $message
-     *
-     * @throws InvalidArgumentException
+     * @param mixed  $array
+     * @param mixed  $min
+     * @param string $message
      */
     public static function minCount($array, $min, $message = '')
     {
@@ -1752,11 +1471,9 @@ public static function minCount($array, $min, $message = '')
     /**
      * Does not check if $array is countable, this can generate a warning on php versions after 7.2.
      *
-     * @param Countable|array $array
-     * @param int|float       $max
-     * @param string          $message
-     *
-     * @throws InvalidArgumentException
+     * @param mixed  $array
+     * @param mixed  $max
+     * @param string $message
      */
     public static function maxCount($array, $max, $message = '')
     {
@@ -1772,12 +1489,10 @@ public static function maxCount($array, $max, $message = '')
     /**
      * Does not check if $array is countable, this can generate a warning on php versions after 7.2.
      *
-     * @param Countable|array $array
-     * @param int|float       $min
-     * @param int|float       $max
-     * @param string          $message
-     *
-     * @throws InvalidArgumentException
+     * @param mixed  $array
+     * @param mixed  $min
+     * @param mixed  $max
+     * @param string $message
      */
     public static function countBetween($array, $min, $max, $message = '')
     {
@@ -1794,17 +1509,12 @@ public static function countBetween($array, $min, $max, $message = '')
     }
 
     /**
-     * @psalm-pure
-     * @psalm-assert list $array
-     *
      * @param mixed  $array
      * @param string $message
-     *
-     * @throws InvalidArgumentException
      */
     public static function isList($array, $message = '')
     {
-        if (!\is_array($array) || $array !== \array_values($array)) {
+        if (!\is_array($array) || !$array || \array_keys($array) !== \range(0, \count($array) - 1)) {
             static::reportInvalidArgument(
                 $message ?: 'Expected list - non-associative array.'
             );
@@ -1812,36 +1522,17 @@ public static function isList($array, $message = '')
     }
 
     /**
-     * @psalm-pure
-     * @psalm-assert non-empty-list $array
-     *
      * @param mixed  $array
      * @param string $message
-     *
-     * @throws InvalidArgumentException
-     */
-    public static function isNonEmptyList($array, $message = '')
-    {
-        static::isList($array, $message);
-        static::notEmpty($array, $message);
-    }
-
-    /**
-     * @psalm-pure
-     * @psalm-template T
-     * @psalm-param mixed|array<T> $array
-     * @psalm-assert array<string, T> $array
-     *
-     * @param mixed  $array
-     * @param string $message
-     *
-     * @throws InvalidArgumentException
      */
     public static function isMap($array, $message = '')
     {
         if (
             !\is_array($array) ||
-            \array_keys($array) !== \array_filter(\array_keys($array), '\is_string')
+            !$array ||
+            \array_keys($array) !== \array_filter(\array_keys($array), function ($key) {
+                return \is_string($key);
+            })
         ) {
             static::reportInvalidArgument(
                 $message ?: 'Expected map - associative array with string keys.'
@@ -1850,30 +1541,8 @@ public static function isMap($array, $message = '')
     }
 
     /**
-     * @psalm-pure
-     * @psalm-template T
-     * @psalm-param mixed|array<T> $array
-     * @psalm-assert array<string, T> $array
-     * @psalm-assert !empty $array
-     *
-     * @param mixed  $array
-     * @param string $message
-     *
-     * @throws InvalidArgumentException
-     */
-    public static function isNonEmptyMap($array, $message = '')
-    {
-        static::isMap($array, $message);
-        static::notEmpty($array, $message);
-    }
-
-    /**
-     * @psalm-pure
-     *
-     * @param string $value
+     * @param mixed  $value
      * @param string $message
-     *
-     * @throws InvalidArgumentException
      */
     public static function uuid($value, $message = '')
     {
@@ -1894,13 +1563,9 @@ public static function uuid($value, $message = '')
     }
 
     /**
-     * @psalm-param class-string<Throwable> $class
-     *
-     * @param Closure $expression
-     * @param string  $class
-     * @param string  $message
-     *
-     * @throws InvalidArgumentException
+     * @param Closure       $expression
+     * @param string|object $class
+     * @param string        $message
      */
     public static function throws(Closure $expression, $class = 'Exception', $message = '')
     {
@@ -1929,9 +1594,6 @@ public static function throws(Closure $expression, $class = 'Exception', $messag
         ));
     }
 
-    /**
-     * @throws BadMethodCallException
-     */
     public static function __callStatic($name, $arguments)
     {
         if ('nullOr' === \substr($name, 0, 6)) {
@@ -1989,10 +1651,6 @@ protected static function valueToString($value)
                 return \get_class($value).': '.self::valueToString($value->__toString());
             }
 
-            if ($value instanceof DateTime || $value instanceof DateTimeImmutable) {
-                return \get_class($value).': '.self::valueToString($value->format('c'));
-            }
-
             return \get_class($value);
         }
 
@@ -2032,10 +1690,6 @@ protected static function strlen($value)
 
     /**
      * @param string $message
-     *
-     * @throws InvalidArgumentException
-     *
-     * @psalm-pure this method is not supposed to perform side-effects
      */
     protected static function reportInvalidArgument($message)
     {
diff --git a/vendor/webmozart/assert/src/Mixin.php b/vendor/webmozart/assert/src/Mixin.php
deleted file mode 100644
index 3ad9b2d04..000000000
--- a/vendor/webmozart/assert/src/Mixin.php
+++ /dev/null
@@ -1,1971 +0,0 @@
-<?php
-
-/**
- * provides type inference and auto-completion for magic static methods of Assert.
- */
-
-namespace Webmozart\Assert;
-
-use ArrayAccess;
-use Closure;
-use Countable;
-use InvalidArgumentException;
-use Throwable;
-
-interface Mixin
-{
-    /**
-     * @psalm-pure
-     * @psalm-assert null|string $value
-     *
-     * @param mixed  $value
-     * @param string $message
-     *
-     * @throws InvalidArgumentException
-     */
-    public static function nullOrString($value, $message = '');
-
-    /**
-     * @psalm-pure
-     * @psalm-assert iterable<string> $value
-     *
-     * @param mixed  $value
-     * @param string $message
-     *
-     * @throws InvalidArgumentException
-     */
-    public static function allString($value, $message = '');
-
-    /**
-     * @psalm-pure
-     * @psalm-assert null|non-empty-string $value
-     *
-     * @param mixed  $value
-     * @param string $message
-     *
-     * @throws InvalidArgumentException
-     */
-    public static function nullOrStringNotEmpty($value, $message = '');
-
-    /**
-     * @psalm-pure
-     * @psalm-assert iterable<non-empty-string> $value
-     *
-     * @param mixed  $value
-     * @param string $message
-     *
-     * @throws InvalidArgumentException
-     */
-    public static function allStringNotEmpty($value, $message = '');
-
-    /**
-     * @psalm-pure
-     * @psalm-assert null|int $value
-     *
-     * @param mixed  $value
-     * @param string $message
-     *
-     * @throws InvalidArgumentException
-     */
-    public static function nullOrInteger($value, $message = '');
-
-    /**
-     * @psalm-pure
-     * @psalm-assert iterable<int> $value
-     *
-     * @param mixed  $value
-     * @param string $message
-     *
-     * @throws InvalidArgumentException
-     */
-    public static function allInteger($value, $message = '');
-
-    /**
-     * @psalm-pure
-     * @psalm-assert null|numeric $value
-     *
-     * @param mixed  $value
-     * @param string $message
-     *
-     * @throws InvalidArgumentException
-     */
-    public static function nullOrIntegerish($value, $message = '');
-
-    /**
-     * @psalm-pure
-     * @psalm-assert iterable<numeric> $value
-     *
-     * @param mixed  $value
-     * @param string $message
-     *
-     * @throws InvalidArgumentException
-     */
-    public static function allIntegerish($value, $message = '');
-
-    /**
-     * @psalm-pure
-     * @psalm-assert null|float $value
-     *
-     * @param mixed  $value
-     * @param string $message
-     *
-     * @throws InvalidArgumentException
-     */
-    public static function nullOrFloat($value, $message = '');
-
-    /**
-     * @psalm-pure
-     * @psalm-assert iterable<float> $value
-     *
-     * @param mixed  $value
-     * @param string $message
-     *
-     * @throws InvalidArgumentException
-     */
-    public static function allFloat($value, $message = '');
-
-    /**
-     * @psalm-pure
-     * @psalm-assert null|numeric $value
-     *
-     * @param mixed  $value
-     * @param string $message
-     *
-     * @throws InvalidArgumentException
-     */
-    public static function nullOrNumeric($value, $message = '');
-
-    /**
-     * @psalm-pure
-     * @psalm-assert iterable<numeric> $value
-     *
-     * @param mixed  $value
-     * @param string $message
-     *
-     * @throws InvalidArgumentException
-     */
-    public static function allNumeric($value, $message = '');
-
-    /**
-     * @psalm-pure
-     * @psalm-assert null|int $value
-     *
-     * @param mixed  $value
-     * @param string $message
-     *
-     * @throws InvalidArgumentException
-     */
-    public static function nullOrNatural($value, $message = '');
-
-    /**
-     * @psalm-pure
-     * @psalm-assert iterable<int> $value
-     *
-     * @param mixed  $value
-     * @param string $message
-     *
-     * @throws InvalidArgumentException
-     */
-    public static function allNatural($value, $message = '');
-
-    /**
-     * @psalm-pure
-     * @psalm-assert null|bool $value
-     *
-     * @param mixed  $value
-     * @param string $message
-     *
-     * @throws InvalidArgumentException
-     */
-    public static function nullOrBoolean($value, $message = '');
-
-    /**
-     * @psalm-pure
-     * @psalm-assert iterable<bool> $value
-     *
-     * @param mixed  $value
-     * @param string $message
-     *
-     * @throws InvalidArgumentException
-     */
-    public static function allBoolean($value, $message = '');
-
-    /**
-     * @psalm-pure
-     * @psalm-assert null|scalar $value
-     *
-     * @param mixed  $value
-     * @param string $message
-     *
-     * @throws InvalidArgumentException
-     */
-    public static function nullOrScalar($value, $message = '');
-
-    /**
-     * @psalm-pure
-     * @psalm-assert iterable<scalar> $value
-     *
-     * @param mixed  $value
-     * @param string $message
-     *
-     * @throws InvalidArgumentException
-     */
-    public static function allScalar($value, $message = '');
-
-    /**
-     * @psalm-pure
-     * @psalm-assert null|object $value
-     *
-     * @param mixed  $value
-     * @param string $message
-     *
-     * @throws InvalidArgumentException
-     */
-    public static function nullOrObject($value, $message = '');
-
-    /**
-     * @psalm-pure
-     * @psalm-assert iterable<object> $value
-     *
-     * @param mixed  $value
-     * @param string $message
-     *
-     * @throws InvalidArgumentException
-     */
-    public static function allObject($value, $message = '');
-
-    /**
-     * @psalm-pure
-     * @psalm-assert null|resource $value
-     *
-     * @param mixed       $value
-     * @param string|null $type    type of resource this should be. @see https://www.php.net/manual/en/function.get-resource-type.php
-     * @param string      $message
-     *
-     * @throws InvalidArgumentException
-     */
-    public static function nullOrResource($value, $type = null, $message = '');
-
-    /**
-     * @psalm-pure
-     * @psalm-assert iterable<resource> $value
-     *
-     * @param mixed       $value
-     * @param string|null $type    type of resource this should be. @see https://www.php.net/manual/en/function.get-resource-type.php
-     * @param string      $message
-     *
-     * @throws InvalidArgumentException
-     */
-    public static function allResource($value, $type = null, $message = '');
-
-    /**
-     * @psalm-pure
-     * @psalm-assert null|callable $value
-     *
-     * @param mixed  $value
-     * @param string $message
-     *
-     * @throws InvalidArgumentException
-     */
-    public static function nullOrIsCallable($value, $message = '');
-
-    /**
-     * @psalm-pure
-     * @psalm-assert iterable<callable> $value
-     *
-     * @param mixed  $value
-     * @param string $message
-     *
-     * @throws InvalidArgumentException
-     */
-    public static function allIsCallable($value, $message = '');
-
-    /**
-     * @psalm-pure
-     * @psalm-assert null|array $value
-     *
-     * @param mixed  $value
-     * @param string $message
-     *
-     * @throws InvalidArgumentException
-     */
-    public static function nullOrIsArray($value, $message = '');
-
-    /**
-     * @psalm-pure
-     * @psalm-assert iterable<array> $value
-     *
-     * @param mixed  $value
-     * @param string $message
-     *
-     * @throws InvalidArgumentException
-     */
-    public static function allIsArray($value, $message = '');
-
-    /**
-     * @psalm-pure
-     * @psalm-assert null|iterable $value
-     *
-     * @deprecated use "isIterable" or "isInstanceOf" instead
-     *
-     * @param mixed  $value
-     * @param string $message
-     *
-     * @throws InvalidArgumentException
-     */
-    public static function nullOrIsTraversable($value, $message = '');
-
-    /**
-     * @psalm-pure
-     * @psalm-assert iterable<iterable> $value
-     *
-     * @deprecated use "isIterable" or "isInstanceOf" instead
-     *
-     * @param mixed  $value
-     * @param string $message
-     *
-     * @throws InvalidArgumentException
-     */
-    public static function allIsTraversable($value, $message = '');
-
-    /**
-     * @psalm-pure
-     * @psalm-assert null|array|ArrayAccess $value
-     *
-     * @param mixed  $value
-     * @param string $message
-     *
-     * @throws InvalidArgumentException
-     */
-    public static function nullOrIsArrayAccessible($value, $message = '');
-
-    /**
-     * @psalm-pure
-     * @psalm-assert iterable<array|ArrayAccess> $value
-     *
-     * @param mixed  $value
-     * @param string $message
-     *
-     * @throws InvalidArgumentException
-     */
-    public static function allIsArrayAccessible($value, $message = '');
-
-    /**
-     * @psalm-pure
-     * @psalm-assert null|countable $value
-     *
-     * @param mixed  $value
-     * @param string $message
-     *
-     * @throws InvalidArgumentException
-     */
-    public static function nullOrIsCountable($value, $message = '');
-
-    /**
-     * @psalm-pure
-     * @psalm-assert iterable<countable> $value
-     *
-     * @param mixed  $value
-     * @param string $message
-     *
-     * @throws InvalidArgumentException
-     */
-    public static function allIsCountable($value, $message = '');
-
-    /**
-     * @psalm-pure
-     * @psalm-assert null|iterable $value
-     *
-     * @param mixed  $value
-     * @param string $message
-     *
-     * @throws InvalidArgumentException
-     */
-    public static function nullOrIsIterable($value, $message = '');
-
-    /**
-     * @psalm-pure
-     * @psalm-assert iterable<iterable> $value
-     *
-     * @param mixed  $value
-     * @param string $message
-     *
-     * @throws InvalidArgumentException
-     */
-    public static function allIsIterable($value, $message = '');
-
-    /**
-     * @psalm-pure
-     * @psalm-template ExpectedType of object
-     * @psalm-param class-string<ExpectedType> $class
-     * @psalm-assert null|ExpectedType $value
-     *
-     * @param mixed         $value
-     * @param string|object $class
-     * @param string        $message
-     *
-     * @throws InvalidArgumentException
-     */
-    public static function nullOrIsInstanceOf($value, $class, $message = '');
-
-    /**
-     * @psalm-pure
-     * @psalm-template ExpectedType of object
-     * @psalm-param class-string<ExpectedType> $class
-     * @psalm-assert iterable<ExpectedType> $value
-     *
-     * @param mixed         $value
-     * @param string|object $class
-     * @param string        $message
-     *
-     * @throws InvalidArgumentException
-     */
-    public static function allIsInstanceOf($value, $class, $message = '');
-
-    /**
-     * @psalm-pure
-     * @psalm-template ExpectedType of object
-     * @psalm-param class-string<ExpectedType> $class
-     *
-     * @param mixed         $value
-     * @param string|object $class
-     * @param string        $message
-     *
-     * @throws InvalidArgumentException
-     */
-    public static function nullOrNotInstanceOf($value, $class, $message = '');
-
-    /**
-     * @psalm-pure
-     * @psalm-template ExpectedType of object
-     * @psalm-param class-string<ExpectedType> $class
-     *
-     * @param mixed         $value
-     * @param string|object $class
-     * @param string        $message
-     *
-     * @throws InvalidArgumentException
-     */
-    public static function allNotInstanceOf($value, $class, $message = '');
-
-    /**
-     * @psalm-pure
-     * @psalm-param array<class-string> $classes
-     *
-     * @param mixed                $value
-     * @param array<object|string> $classes
-     * @param string               $message
-     *
-     * @throws InvalidArgumentException
-     */
-    public static function nullOrIsInstanceOfAny($value, $classes, $message = '');
-
-    /**
-     * @psalm-pure
-     * @psalm-param array<class-string> $classes
-     *
-     * @param mixed                $value
-     * @param array<object|string> $classes
-     * @param string               $message
-     *
-     * @throws InvalidArgumentException
-     */
-    public static function allIsInstanceOfAny($value, $classes, $message = '');
-
-    /**
-     * @psalm-pure
-     * @psalm-template ExpectedType of object
-     * @psalm-param class-string<ExpectedType> $class
-     * @psalm-assert null|ExpectedType|class-string<ExpectedType> $value
-     *
-     * @param null|object|string $value
-     * @param string             $class
-     * @param string             $message
-     *
-     * @throws InvalidArgumentException
-     */
-    public static function nullOrIsAOf($value, $class, $message = '');
-
-    /**
-     * @psalm-pure
-     * @psalm-template ExpectedType of object
-     * @psalm-param class-string<ExpectedType> $class
-     * @psalm-assert iterable<ExpectedType|class-string<ExpectedType>> $value
-     *
-     * @param iterable<object|string> $value
-     * @param string                  $class
-     * @param string                  $message
-     *
-     * @throws InvalidArgumentException
-     */
-    public static function allIsAOf($value, $class, $message = '');
-
-    /**
-     * @psalm-pure
-     * @psalm-template UnexpectedType of object
-     * @psalm-param class-string<UnexpectedType> $class
-     *
-     * @param null|object|string $value
-     * @param string             $class
-     * @param string             $message
-     *
-     * @throws InvalidArgumentException
-     */
-    public static function nullOrIsNotA($value, $class, $message = '');
-
-    /**
-     * @psalm-pure
-     * @psalm-template UnexpectedType of object
-     * @psalm-param class-string<UnexpectedType> $class
-     *
-     * @param iterable<object|string> $value
-     * @param string                  $class
-     * @param string                  $message
-     *
-     * @throws InvalidArgumentException
-     */
-    public static function allIsNotA($value, $class, $message = '');
-
-    /**
-     * @psalm-pure
-     * @psalm-param array<class-string> $classes
-     *
-     * @param null|object|string $value
-     * @param string[]           $classes
-     * @param string             $message
-     *
-     * @throws InvalidArgumentException
-     */
-    public static function nullOrIsAnyOf($value, $classes, $message = '');
-
-    /**
-     * @psalm-pure
-     * @psalm-param array<class-string> $classes
-     *
-     * @param iterable<object|string> $value
-     * @param string[]                $classes
-     * @param string                  $message
-     *
-     * @throws InvalidArgumentException
-     */
-    public static function allIsAnyOf($value, $classes, $message = '');
-
-    /**
-     * @psalm-pure
-     * @psalm-assert empty $value
-     *
-     * @param mixed  $value
-     * @param string $message
-     *
-     * @throws InvalidArgumentException
-     */
-    public static function nullOrIsEmpty($value, $message = '');
-
-    /**
-     * @psalm-pure
-     * @psalm-assert iterable<empty> $value
-     *
-     * @param mixed  $value
-     * @param string $message
-     *
-     * @throws InvalidArgumentException
-     */
-    public static function allIsEmpty($value, $message = '');
-
-    /**
-     * @psalm-pure
-     *
-     * @param mixed  $value
-     * @param string $message
-     *
-     * @throws InvalidArgumentException
-     */
-    public static function nullOrNotEmpty($value, $message = '');
-
-    /**
-     * @psalm-pure
-     *
-     * @param mixed  $value
-     * @param string $message
-     *
-     * @throws InvalidArgumentException
-     */
-    public static function allNotEmpty($value, $message = '');
-
-    /**
-     * @psalm-pure
-     * @psalm-assert iterable<null> $value
-     *
-     * @param mixed  $value
-     * @param string $message
-     *
-     * @throws InvalidArgumentException
-     */
-    public static function allNull($value, $message = '');
-
-    /**
-     * @psalm-pure
-     *
-     * @param mixed  $value
-     * @param string $message
-     *
-     * @throws InvalidArgumentException
-     */
-    public static function allNotNull($value, $message = '');
-
-    /**
-     * @psalm-pure
-     * @psalm-assert null|true $value
-     *
-     * @param mixed  $value
-     * @param string $message
-     *
-     * @throws InvalidArgumentException
-     */
-    public static function nullOrTrue($value, $message = '');
-
-    /**
-     * @psalm-pure
-     * @psalm-assert iterable<true> $value
-     *
-     * @param mixed  $value
-     * @param string $message
-     *
-     * @throws InvalidArgumentException
-     */
-    public static function allTrue($value, $message = '');
-
-    /**
-     * @psalm-pure
-     * @psalm-assert null|false $value
-     *
-     * @param mixed  $value
-     * @param string $message
-     *
-     * @throws InvalidArgumentException
-     */
-    public static function nullOrFalse($value, $message = '');
-
-    /**
-     * @psalm-pure
-     * @psalm-assert iterable<false> $value
-     *
-     * @param mixed  $value
-     * @param string $message
-     *
-     * @throws InvalidArgumentException
-     */
-    public static function allFalse($value, $message = '');
-
-    /**
-     * @psalm-pure
-     *
-     * @param mixed  $value
-     * @param string $message
-     *
-     * @throws InvalidArgumentException
-     */
-    public static function nullOrNotFalse($value, $message = '');
-
-    /**
-     * @psalm-pure
-     *
-     * @param mixed  $value
-     * @param string $message
-     *
-     * @throws InvalidArgumentException
-     */
-    public static function allNotFalse($value, $message = '');
-
-    /**
-     * @param mixed  $value
-     * @param string $message
-     *
-     * @throws InvalidArgumentException
-     */
-    public static function nullOrIp($value, $message = '');
-
-    /**
-     * @param mixed  $value
-     * @param string $message
-     *
-     * @throws InvalidArgumentException
-     */
-    public static function allIp($value, $message = '');
-
-    /**
-     * @param mixed  $value
-     * @param string $message
-     *
-     * @throws InvalidArgumentException
-     */
-    public static function nullOrIpv4($value, $message = '');
-
-    /**
-     * @param mixed  $value
-     * @param string $message
-     *
-     * @throws InvalidArgumentException
-     */
-    public static function allIpv4($value, $message = '');
-
-    /**
-     * @param mixed  $value
-     * @param string $message
-     *
-     * @throws InvalidArgumentException
-     */
-    public static function nullOrIpv6($value, $message = '');
-
-    /**
-     * @param mixed  $value
-     * @param string $message
-     *
-     * @throws InvalidArgumentException
-     */
-    public static function allIpv6($value, $message = '');
-
-    /**
-     * @param mixed  $value
-     * @param string $message
-     *
-     * @throws InvalidArgumentException
-     */
-    public static function nullOrEmail($value, $message = '');
-
-    /**
-     * @param mixed  $value
-     * @param string $message
-     *
-     * @throws InvalidArgumentException
-     */
-    public static function allEmail($value, $message = '');
-
-    /**
-     * @param null|array $values
-     * @param string     $message
-     *
-     * @throws InvalidArgumentException
-     */
-    public static function nullOrUniqueValues($values, $message = '');
-
-    /**
-     * @param iterable<array> $values
-     * @param string          $message
-     *
-     * @throws InvalidArgumentException
-     */
-    public static function allUniqueValues($values, $message = '');
-
-    /**
-     * @param mixed  $value
-     * @param mixed  $expect
-     * @param string $message
-     *
-     * @throws InvalidArgumentException
-     */
-    public static function nullOrEq($value, $expect, $message = '');
-
-    /**
-     * @param mixed  $value
-     * @param mixed  $expect
-     * @param string $message
-     *
-     * @throws InvalidArgumentException
-     */
-    public static function allEq($value, $expect, $message = '');
-
-    /**
-     * @param mixed  $value
-     * @param mixed  $expect
-     * @param string $message
-     *
-     * @throws InvalidArgumentException
-     */
-    public static function nullOrNotEq($value, $expect, $message = '');
-
-    /**
-     * @param mixed  $value
-     * @param mixed  $expect
-     * @param string $message
-     *
-     * @throws InvalidArgumentException
-     */
-    public static function allNotEq($value, $expect, $message = '');
-
-    /**
-     * @psalm-pure
-     *
-     * @param mixed  $value
-     * @param mixed  $expect
-     * @param string $message
-     *
-     * @throws InvalidArgumentException
-     */
-    public static function nullOrSame($value, $expect, $message = '');
-
-    /**
-     * @psalm-pure
-     *
-     * @param mixed  $value
-     * @param mixed  $expect
-     * @param string $message
-     *
-     * @throws InvalidArgumentException
-     */
-    public static function allSame($value, $expect, $message = '');
-
-    /**
-     * @psalm-pure
-     *
-     * @param mixed  $value
-     * @param mixed  $expect
-     * @param string $message
-     *
-     * @throws InvalidArgumentException
-     */
-    public static function nullOrNotSame($value, $expect, $message = '');
-
-    /**
-     * @psalm-pure
-     *
-     * @param mixed  $value
-     * @param mixed  $expect
-     * @param string $message
-     *
-     * @throws InvalidArgumentException
-     */
-    public static function allNotSame($value, $expect, $message = '');
-
-    /**
-     * @psalm-pure
-     *
-     * @param mixed  $value
-     * @param mixed  $limit
-     * @param string $message
-     *
-     * @throws InvalidArgumentException
-     */
-    public static function nullOrGreaterThan($value, $limit, $message = '');
-
-    /**
-     * @psalm-pure
-     *
-     * @param mixed  $value
-     * @param mixed  $limit
-     * @param string $message
-     *
-     * @throws InvalidArgumentException
-     */
-    public static function allGreaterThan($value, $limit, $message = '');
-
-    /**
-     * @psalm-pure
-     *
-     * @param mixed  $value
-     * @param mixed  $limit
-     * @param string $message
-     *
-     * @throws InvalidArgumentException
-     */
-    public static function nullOrGreaterThanEq($value, $limit, $message = '');
-
-    /**
-     * @psalm-pure
-     *
-     * @param mixed  $value
-     * @param mixed  $limit
-     * @param string $message
-     *
-     * @throws InvalidArgumentException
-     */
-    public static function allGreaterThanEq($value, $limit, $message = '');
-
-    /**
-     * @psalm-pure
-     *
-     * @param mixed  $value
-     * @param mixed  $limit
-     * @param string $message
-     *
-     * @throws InvalidArgumentException
-     */
-    public static function nullOrLessThan($value, $limit, $message = '');
-
-    /**
-     * @psalm-pure
-     *
-     * @param mixed  $value
-     * @param mixed  $limit
-     * @param string $message
-     *
-     * @throws InvalidArgumentException
-     */
-    public static function allLessThan($value, $limit, $message = '');
-
-    /**
-     * @psalm-pure
-     *
-     * @param mixed  $value
-     * @param mixed  $limit
-     * @param string $message
-     *
-     * @throws InvalidArgumentException
-     */
-    public static function nullOrLessThanEq($value, $limit, $message = '');
-
-    /**
-     * @psalm-pure
-     *
-     * @param mixed  $value
-     * @param mixed  $limit
-     * @param string $message
-     *
-     * @throws InvalidArgumentException
-     */
-    public static function allLessThanEq($value, $limit, $message = '');
-
-    /**
-     * @psalm-pure
-     *
-     * @param mixed  $value
-     * @param mixed  $min
-     * @param mixed  $max
-     * @param string $message
-     *
-     * @throws InvalidArgumentException
-     */
-    public static function nullOrRange($value, $min, $max, $message = '');
-
-    /**
-     * @psalm-pure
-     *
-     * @param mixed  $value
-     * @param mixed  $min
-     * @param mixed  $max
-     * @param string $message
-     *
-     * @throws InvalidArgumentException
-     */
-    public static function allRange($value, $min, $max, $message = '');
-
-    /**
-     * @psalm-pure
-     *
-     * @param mixed  $value
-     * @param array  $values
-     * @param string $message
-     *
-     * @throws InvalidArgumentException
-     */
-    public static function nullOrOneOf($value, $values, $message = '');
-
-    /**
-     * @psalm-pure
-     *
-     * @param mixed  $value
-     * @param array  $values
-     * @param string $message
-     *
-     * @throws InvalidArgumentException
-     */
-    public static function allOneOf($value, $values, $message = '');
-
-    /**
-     * @psalm-pure
-     *
-     * @param mixed  $value
-     * @param array  $values
-     * @param string $message
-     *
-     * @throws InvalidArgumentException
-     */
-    public static function nullOrInArray($value, $values, $message = '');
-
-    /**
-     * @psalm-pure
-     *
-     * @param mixed  $value
-     * @param array  $values
-     * @param string $message
-     *
-     * @throws InvalidArgumentException
-     */
-    public static function allInArray($value, $values, $message = '');
-
-    /**
-     * @psalm-pure
-     *
-     * @param null|string $value
-     * @param string      $subString
-     * @param string      $message
-     *
-     * @throws InvalidArgumentException
-     */
-    public static function nullOrContains($value, $subString, $message = '');
-
-    /**
-     * @psalm-pure
-     *
-     * @param iterable<string> $value
-     * @param string           $subString
-     * @param string           $message
-     *
-     * @throws InvalidArgumentException
-     */
-    public static function allContains($value, $subString, $message = '');
-
-    /**
-     * @psalm-pure
-     *
-     * @param null|string $value
-     * @param string      $subString
-     * @param string      $message
-     *
-     * @throws InvalidArgumentException
-     */
-    public static function nullOrNotContains($value, $subString, $message = '');
-
-    /**
-     * @psalm-pure
-     *
-     * @param iterable<string> $value
-     * @param string           $subString
-     * @param string           $message
-     *
-     * @throws InvalidArgumentException
-     */
-    public static function allNotContains($value, $subString, $message = '');
-
-    /**
-     * @psalm-pure
-     *
-     * @param null|string $value
-     * @param string      $message
-     *
-     * @throws InvalidArgumentException
-     */
-    public static function nullOrNotWhitespaceOnly($value, $message = '');
-
-    /**
-     * @psalm-pure
-     *
-     * @param iterable<string> $value
-     * @param string           $message
-     *
-     * @throws InvalidArgumentException
-     */
-    public static function allNotWhitespaceOnly($value, $message = '');
-
-    /**
-     * @psalm-pure
-     *
-     * @param null|string $value
-     * @param string      $prefix
-     * @param string      $message
-     *
-     * @throws InvalidArgumentException
-     */
-    public static function nullOrStartsWith($value, $prefix, $message = '');
-
-    /**
-     * @psalm-pure
-     *
-     * @param iterable<string> $value
-     * @param string           $prefix
-     * @param string           $message
-     *
-     * @throws InvalidArgumentException
-     */
-    public static function allStartsWith($value, $prefix, $message = '');
-
-    /**
-     * @psalm-pure
-     *
-     * @param null|string $value
-     * @param string      $prefix
-     * @param string      $message
-     *
-     * @throws InvalidArgumentException
-     */
-    public static function nullOrNotStartsWith($value, $prefix, $message = '');
-
-    /**
-     * @psalm-pure
-     *
-     * @param iterable<string> $value
-     * @param string           $prefix
-     * @param string           $message
-     *
-     * @throws InvalidArgumentException
-     */
-    public static function allNotStartsWith($value, $prefix, $message = '');
-
-    /**
-     * @psalm-pure
-     *
-     * @param mixed  $value
-     * @param string $message
-     *
-     * @throws InvalidArgumentException
-     */
-    public static function nullOrStartsWithLetter($value, $message = '');
-
-    /**
-     * @psalm-pure
-     *
-     * @param mixed  $value
-     * @param string $message
-     *
-     * @throws InvalidArgumentException
-     */
-    public static function allStartsWithLetter($value, $message = '');
-
-    /**
-     * @psalm-pure
-     *
-     * @param null|string $value
-     * @param string      $suffix
-     * @param string      $message
-     *
-     * @throws InvalidArgumentException
-     */
-    public static function nullOrEndsWith($value, $suffix, $message = '');
-
-    /**
-     * @psalm-pure
-     *
-     * @param iterable<string> $value
-     * @param string           $suffix
-     * @param string           $message
-     *
-     * @throws InvalidArgumentException
-     */
-    public static function allEndsWith($value, $suffix, $message = '');
-
-    /**
-     * @psalm-pure
-     *
-     * @param null|string $value
-     * @param string      $suffix
-     * @param string      $message
-     *
-     * @throws InvalidArgumentException
-     */
-    public static function nullOrNotEndsWith($value, $suffix, $message = '');
-
-    /**
-     * @psalm-pure
-     *
-     * @param iterable<string> $value
-     * @param string           $suffix
-     * @param string           $message
-     *
-     * @throws InvalidArgumentException
-     */
-    public static function allNotEndsWith($value, $suffix, $message = '');
-
-    /**
-     * @psalm-pure
-     *
-     * @param null|string $value
-     * @param string      $pattern
-     * @param string      $message
-     *
-     * @throws InvalidArgumentException
-     */
-    public static function nullOrRegex($value, $pattern, $message = '');
-
-    /**
-     * @psalm-pure
-     *
-     * @param iterable<string> $value
-     * @param string           $pattern
-     * @param string           $message
-     *
-     * @throws InvalidArgumentException
-     */
-    public static function allRegex($value, $pattern, $message = '');
-
-    /**
-     * @psalm-pure
-     *
-     * @param null|string $value
-     * @param string      $pattern
-     * @param string      $message
-     *
-     * @throws InvalidArgumentException
-     */
-    public static function nullOrNotRegex($value, $pattern, $message = '');
-
-    /**
-     * @psalm-pure
-     *
-     * @param iterable<string> $value
-     * @param string           $pattern
-     * @param string           $message
-     *
-     * @throws InvalidArgumentException
-     */
-    public static function allNotRegex($value, $pattern, $message = '');
-
-    /**
-     * @psalm-pure
-     *
-     * @param mixed  $value
-     * @param string $message
-     *
-     * @throws InvalidArgumentException
-     */
-    public static function nullOrUnicodeLetters($value, $message = '');
-
-    /**
-     * @psalm-pure
-     *
-     * @param mixed  $value
-     * @param string $message
-     *
-     * @throws InvalidArgumentException
-     */
-    public static function allUnicodeLetters($value, $message = '');
-
-    /**
-     * @psalm-pure
-     *
-     * @param mixed  $value
-     * @param string $message
-     *
-     * @throws InvalidArgumentException
-     */
-    public static function nullOrAlpha($value, $message = '');
-
-    /**
-     * @psalm-pure
-     *
-     * @param mixed  $value
-     * @param string $message
-     *
-     * @throws InvalidArgumentException
-     */
-    public static function allAlpha($value, $message = '');
-
-    /**
-     * @psalm-pure
-     *
-     * @param null|string $value
-     * @param string      $message
-     *
-     * @throws InvalidArgumentException
-     */
-    public static function nullOrDigits($value, $message = '');
-
-    /**
-     * @psalm-pure
-     *
-     * @param iterable<string> $value
-     * @param string           $message
-     *
-     * @throws InvalidArgumentException
-     */
-    public static function allDigits($value, $message = '');
-
-    /**
-     * @psalm-pure
-     *
-     * @param null|string $value
-     * @param string      $message
-     *
-     * @throws InvalidArgumentException
-     */
-    public static function nullOrAlnum($value, $message = '');
-
-    /**
-     * @psalm-pure
-     *
-     * @param iterable<string> $value
-     * @param string           $message
-     *
-     * @throws InvalidArgumentException
-     */
-    public static function allAlnum($value, $message = '');
-
-    /**
-     * @psalm-pure
-     * @psalm-assert null|lowercase-string $value
-     *
-     * @param null|string $value
-     * @param string      $message
-     *
-     * @throws InvalidArgumentException
-     */
-    public static function nullOrLower($value, $message = '');
-
-    /**
-     * @psalm-pure
-     * @psalm-assert iterable<lowercase-string> $value
-     *
-     * @param iterable<string> $value
-     * @param string           $message
-     *
-     * @throws InvalidArgumentException
-     */
-    public static function allLower($value, $message = '');
-
-    /**
-     * @psalm-pure
-     *
-     * @param null|string $value
-     * @param string      $message
-     *
-     * @throws InvalidArgumentException
-     */
-    public static function nullOrUpper($value, $message = '');
-
-    /**
-     * @psalm-pure
-     *
-     * @param iterable<string> $value
-     * @param string           $message
-     *
-     * @throws InvalidArgumentException
-     */
-    public static function allUpper($value, $message = '');
-
-    /**
-     * @psalm-pure
-     *
-     * @param null|string $value
-     * @param int         $length
-     * @param string      $message
-     *
-     * @throws InvalidArgumentException
-     */
-    public static function nullOrLength($value, $length, $message = '');
-
-    /**
-     * @psalm-pure
-     *
-     * @param iterable<string> $value
-     * @param int              $length
-     * @param string           $message
-     *
-     * @throws InvalidArgumentException
-     */
-    public static function allLength($value, $length, $message = '');
-
-    /**
-     * @psalm-pure
-     *
-     * @param null|string $value
-     * @param int|float   $min
-     * @param string      $message
-     *
-     * @throws InvalidArgumentException
-     */
-    public static function nullOrMinLength($value, $min, $message = '');
-
-    /**
-     * @psalm-pure
-     *
-     * @param iterable<string> $value
-     * @param int|float        $min
-     * @param string           $message
-     *
-     * @throws InvalidArgumentException
-     */
-    public static function allMinLength($value, $min, $message = '');
-
-    /**
-     * @psalm-pure
-     *
-     * @param null|string $value
-     * @param int|float   $max
-     * @param string      $message
-     *
-     * @throws InvalidArgumentException
-     */
-    public static function nullOrMaxLength($value, $max, $message = '');
-
-    /**
-     * @psalm-pure
-     *
-     * @param iterable<string> $value
-     * @param int|float        $max
-     * @param string           $message
-     *
-     * @throws InvalidArgumentException
-     */
-    public static function allMaxLength($value, $max, $message = '');
-
-    /**
-     * @psalm-pure
-     *
-     * @param null|string $value
-     * @param int|float   $min
-     * @param int|float   $max
-     * @param string      $message
-     *
-     * @throws InvalidArgumentException
-     */
-    public static function nullOrLengthBetween($value, $min, $max, $message = '');
-
-    /**
-     * @psalm-pure
-     *
-     * @param iterable<string> $value
-     * @param int|float        $min
-     * @param int|float        $max
-     * @param string           $message
-     *
-     * @throws InvalidArgumentException
-     */
-    public static function allLengthBetween($value, $min, $max, $message = '');
-
-    /**
-     * @param mixed  $value
-     * @param string $message
-     *
-     * @throws InvalidArgumentException
-     */
-    public static function nullOrFileExists($value, $message = '');
-
-    /**
-     * @param mixed  $value
-     * @param string $message
-     *
-     * @throws InvalidArgumentException
-     */
-    public static function allFileExists($value, $message = '');
-
-    /**
-     * @param mixed  $value
-     * @param string $message
-     *
-     * @throws InvalidArgumentException
-     */
-    public static function nullOrFile($value, $message = '');
-
-    /**
-     * @param mixed  $value
-     * @param string $message
-     *
-     * @throws InvalidArgumentException
-     */
-    public static function allFile($value, $message = '');
-
-    /**
-     * @param mixed  $value
-     * @param string $message
-     *
-     * @throws InvalidArgumentException
-     */
-    public static function nullOrDirectory($value, $message = '');
-
-    /**
-     * @param mixed  $value
-     * @param string $message
-     *
-     * @throws InvalidArgumentException
-     */
-    public static function allDirectory($value, $message = '');
-
-    /**
-     * @param null|string $value
-     * @param string      $message
-     *
-     * @throws InvalidArgumentException
-     */
-    public static function nullOrReadable($value, $message = '');
-
-    /**
-     * @param iterable<string> $value
-     * @param string           $message
-     *
-     * @throws InvalidArgumentException
-     */
-    public static function allReadable($value, $message = '');
-
-    /**
-     * @param null|string $value
-     * @param string      $message
-     *
-     * @throws InvalidArgumentException
-     */
-    public static function nullOrWritable($value, $message = '');
-
-    /**
-     * @param iterable<string> $value
-     * @param string           $message
-     *
-     * @throws InvalidArgumentException
-     */
-    public static function allWritable($value, $message = '');
-
-    /**
-     * @psalm-assert null|class-string $value
-     *
-     * @param mixed  $value
-     * @param string $message
-     *
-     * @throws InvalidArgumentException
-     */
-    public static function nullOrClassExists($value, $message = '');
-
-    /**
-     * @psalm-assert iterable<class-string> $value
-     *
-     * @param mixed  $value
-     * @param string $message
-     *
-     * @throws InvalidArgumentException
-     */
-    public static function allClassExists($value, $message = '');
-
-    /**
-     * @psalm-pure
-     * @psalm-template ExpectedType of object
-     * @psalm-param class-string<ExpectedType> $class
-     * @psalm-assert null|class-string<ExpectedType>|ExpectedType $value
-     *
-     * @param mixed         $value
-     * @param string|object $class
-     * @param string        $message
-     *
-     * @throws InvalidArgumentException
-     */
-    public static function nullOrSubclassOf($value, $class, $message = '');
-
-    /**
-     * @psalm-pure
-     * @psalm-template ExpectedType of object
-     * @psalm-param class-string<ExpectedType> $class
-     * @psalm-assert iterable<class-string<ExpectedType>|ExpectedType> $value
-     *
-     * @param mixed         $value
-     * @param string|object $class
-     * @param string        $message
-     *
-     * @throws InvalidArgumentException
-     */
-    public static function allSubclassOf($value, $class, $message = '');
-
-    /**
-     * @psalm-assert null|class-string $value
-     *
-     * @param mixed  $value
-     * @param string $message
-     *
-     * @throws InvalidArgumentException
-     */
-    public static function nullOrInterfaceExists($value, $message = '');
-
-    /**
-     * @psalm-assert iterable<class-string> $value
-     *
-     * @param mixed  $value
-     * @param string $message
-     *
-     * @throws InvalidArgumentException
-     */
-    public static function allInterfaceExists($value, $message = '');
-
-    /**
-     * @psalm-pure
-     * @psalm-template ExpectedType of object
-     * @psalm-param class-string<ExpectedType> $interface
-     * @psalm-assert null|class-string<ExpectedType> $value
-     *
-     * @param mixed  $value
-     * @param mixed  $interface
-     * @param string $message
-     *
-     * @throws InvalidArgumentException
-     */
-    public static function nullOrImplementsInterface($value, $interface, $message = '');
-
-    /**
-     * @psalm-pure
-     * @psalm-template ExpectedType of object
-     * @psalm-param class-string<ExpectedType> $interface
-     * @psalm-assert iterable<class-string<ExpectedType>> $value
-     *
-     * @param mixed  $value
-     * @param mixed  $interface
-     * @param string $message
-     *
-     * @throws InvalidArgumentException
-     */
-    public static function allImplementsInterface($value, $interface, $message = '');
-
-    /**
-     * @psalm-pure
-     * @psalm-param null|class-string|object $classOrObject
-     *
-     * @param null|string|object $classOrObject
-     * @param mixed              $property
-     * @param string             $message
-     *
-     * @throws InvalidArgumentException
-     */
-    public static function nullOrPropertyExists($classOrObject, $property, $message = '');
-
-    /**
-     * @psalm-pure
-     * @psalm-param iterable<class-string|object> $classOrObject
-     *
-     * @param iterable<string|object> $classOrObject
-     * @param mixed                   $property
-     * @param string                  $message
-     *
-     * @throws InvalidArgumentException
-     */
-    public static function allPropertyExists($classOrObject, $property, $message = '');
-
-    /**
-     * @psalm-pure
-     * @psalm-param null|class-string|object $classOrObject
-     *
-     * @param null|string|object $classOrObject
-     * @param mixed              $property
-     * @param string             $message
-     *
-     * @throws InvalidArgumentException
-     */
-    public static function nullOrPropertyNotExists($classOrObject, $property, $message = '');
-
-    /**
-     * @psalm-pure
-     * @psalm-param iterable<class-string|object> $classOrObject
-     *
-     * @param iterable<string|object> $classOrObject
-     * @param mixed                   $property
-     * @param string                  $message
-     *
-     * @throws InvalidArgumentException
-     */
-    public static function allPropertyNotExists($classOrObject, $property, $message = '');
-
-    /**
-     * @psalm-pure
-     * @psalm-param null|class-string|object $classOrObject
-     *
-     * @param null|string|object $classOrObject
-     * @param mixed              $method
-     * @param string             $message
-     *
-     * @throws InvalidArgumentException
-     */
-    public static function nullOrMethodExists($classOrObject, $method, $message = '');
-
-    /**
-     * @psalm-pure
-     * @psalm-param iterable<class-string|object> $classOrObject
-     *
-     * @param iterable<string|object> $classOrObject
-     * @param mixed                   $method
-     * @param string                  $message
-     *
-     * @throws InvalidArgumentException
-     */
-    public static function allMethodExists($classOrObject, $method, $message = '');
-
-    /**
-     * @psalm-pure
-     * @psalm-param null|class-string|object $classOrObject
-     *
-     * @param null|string|object $classOrObject
-     * @param mixed              $method
-     * @param string             $message
-     *
-     * @throws InvalidArgumentException
-     */
-    public static function nullOrMethodNotExists($classOrObject, $method, $message = '');
-
-    /**
-     * @psalm-pure
-     * @psalm-param iterable<class-string|object> $classOrObject
-     *
-     * @param iterable<string|object> $classOrObject
-     * @param mixed                   $method
-     * @param string                  $message
-     *
-     * @throws InvalidArgumentException
-     */
-    public static function allMethodNotExists($classOrObject, $method, $message = '');
-
-    /**
-     * @psalm-pure
-     *
-     * @param null|array $array
-     * @param string|int $key
-     * @param string     $message
-     *
-     * @throws InvalidArgumentException
-     */
-    public static function nullOrKeyExists($array, $key, $message = '');
-
-    /**
-     * @psalm-pure
-     *
-     * @param iterable<array> $array
-     * @param string|int      $key
-     * @param string          $message
-     *
-     * @throws InvalidArgumentException
-     */
-    public static function allKeyExists($array, $key, $message = '');
-
-    /**
-     * @psalm-pure
-     *
-     * @param null|array $array
-     * @param string|int $key
-     * @param string     $message
-     *
-     * @throws InvalidArgumentException
-     */
-    public static function nullOrKeyNotExists($array, $key, $message = '');
-
-    /**
-     * @psalm-pure
-     *
-     * @param iterable<array> $array
-     * @param string|int      $key
-     * @param string          $message
-     *
-     * @throws InvalidArgumentException
-     */
-    public static function allKeyNotExists($array, $key, $message = '');
-
-    /**
-     * @psalm-pure
-     * @psalm-assert null|array-key $value
-     *
-     * @param mixed  $value
-     * @param string $message
-     *
-     * @throws InvalidArgumentException
-     */
-    public static function nullOrValidArrayKey($value, $message = '');
-
-    /**
-     * @psalm-pure
-     * @psalm-assert iterable<array-key> $value
-     *
-     * @param mixed  $value
-     * @param string $message
-     *
-     * @throws InvalidArgumentException
-     */
-    public static function allValidArrayKey($value, $message = '');
-
-    /**
-     * @param null|Countable|array $array
-     * @param int                  $number
-     * @param string               $message
-     *
-     * @throws InvalidArgumentException
-     */
-    public static function nullOrCount($array, $number, $message = '');
-
-    /**
-     * @param iterable<Countable|array> $array
-     * @param int                       $number
-     * @param string                    $message
-     *
-     * @throws InvalidArgumentException
-     */
-    public static function allCount($array, $number, $message = '');
-
-    /**
-     * @param null|Countable|array $array
-     * @param int|float            $min
-     * @param string               $message
-     *
-     * @throws InvalidArgumentException
-     */
-    public static function nullOrMinCount($array, $min, $message = '');
-
-    /**
-     * @param iterable<Countable|array> $array
-     * @param int|float                 $min
-     * @param string                    $message
-     *
-     * @throws InvalidArgumentException
-     */
-    public static function allMinCount($array, $min, $message = '');
-
-    /**
-     * @param null|Countable|array $array
-     * @param int|float            $max
-     * @param string               $message
-     *
-     * @throws InvalidArgumentException
-     */
-    public static function nullOrMaxCount($array, $max, $message = '');
-
-    /**
-     * @param iterable<Countable|array> $array
-     * @param int|float                 $max
-     * @param string                    $message
-     *
-     * @throws InvalidArgumentException
-     */
-    public static function allMaxCount($array, $max, $message = '');
-
-    /**
-     * @param null|Countable|array $array
-     * @param int|float            $min
-     * @param int|float            $max
-     * @param string               $message
-     *
-     * @throws InvalidArgumentException
-     */
-    public static function nullOrCountBetween($array, $min, $max, $message = '');
-
-    /**
-     * @param iterable<Countable|array> $array
-     * @param int|float                 $min
-     * @param int|float                 $max
-     * @param string                    $message
-     *
-     * @throws InvalidArgumentException
-     */
-    public static function allCountBetween($array, $min, $max, $message = '');
-
-    /**
-     * @psalm-pure
-     * @psalm-assert null|list $array
-     *
-     * @param mixed  $array
-     * @param string $message
-     *
-     * @throws InvalidArgumentException
-     */
-    public static function nullOrIsList($array, $message = '');
-
-    /**
-     * @psalm-pure
-     * @psalm-assert iterable<list> $array
-     *
-     * @param mixed  $array
-     * @param string $message
-     *
-     * @throws InvalidArgumentException
-     */
-    public static function allIsList($array, $message = '');
-
-    /**
-     * @psalm-pure
-     * @psalm-assert null|non-empty-list $array
-     *
-     * @param mixed  $array
-     * @param string $message
-     *
-     * @throws InvalidArgumentException
-     */
-    public static function nullOrIsNonEmptyList($array, $message = '');
-
-    /**
-     * @psalm-pure
-     * @psalm-assert iterable<non-empty-list> $array
-     *
-     * @param mixed  $array
-     * @param string $message
-     *
-     * @throws InvalidArgumentException
-     */
-    public static function allIsNonEmptyList($array, $message = '');
-
-    /**
-     * @psalm-pure
-     * @psalm-template T
-     * @psalm-param null|mixed|array<T> $array
-     * @psalm-assert null|array<string, T> $array
-     *
-     * @param mixed  $array
-     * @param string $message
-     *
-     * @throws InvalidArgumentException
-     */
-    public static function nullOrIsMap($array, $message = '');
-
-    /**
-     * @psalm-pure
-     * @psalm-template T
-     * @psalm-param iterable<mixed|array<T>> $array
-     * @psalm-assert iterable<array<string, T>> $array
-     *
-     * @param mixed  $array
-     * @param string $message
-     *
-     * @throws InvalidArgumentException
-     */
-    public static function allIsMap($array, $message = '');
-
-    /**
-     * @psalm-pure
-     * @psalm-template T
-     * @psalm-param null|mixed|array<T> $array
-     *
-     * @param mixed  $array
-     * @param string $message
-     *
-     * @throws InvalidArgumentException
-     */
-    public static function nullOrIsNonEmptyMap($array, $message = '');
-
-    /**
-     * @psalm-pure
-     * @psalm-template T
-     * @psalm-param iterable<mixed|array<T>> $array
-     *
-     * @param mixed  $array
-     * @param string $message
-     *
-     * @throws InvalidArgumentException
-     */
-    public static function allIsNonEmptyMap($array, $message = '');
-
-    /**
-     * @psalm-pure
-     *
-     * @param null|string $value
-     * @param string      $message
-     *
-     * @throws InvalidArgumentException
-     */
-    public static function nullOrUuid($value, $message = '');
-
-    /**
-     * @psalm-pure
-     *
-     * @param iterable<string> $value
-     * @param string           $message
-     *
-     * @throws InvalidArgumentException
-     */
-    public static function allUuid($value, $message = '');
-
-    /**
-     * @psalm-param class-string<Throwable> $class
-     *
-     * @param null|Closure $expression
-     * @param string       $class
-     * @param string       $message
-     *
-     * @throws InvalidArgumentException
-     */
-    public static function nullOrThrows($expression, $class = 'Exception', $message = '');
-
-    /**
-     * @psalm-param class-string<Throwable> $class
-     *
-     * @param iterable<Closure> $expression
-     * @param string            $class
-     * @param string            $message
-     *
-     * @throws InvalidArgumentException
-     */
-    public static function allThrows($expression, $class = 'Exception', $message = '');
-}
-- 
GitLab