diff -pruN 6.4.1-1/.github/workflows/continuous-integration-32-bits.yml 6.5.2-1/.github/workflows/continuous-integration-32-bits.yml
--- 6.4.1-1/.github/workflows/continuous-integration-32-bits.yml	1970-01-01 00:00:00.000000000 +0000
+++ 6.5.2-1/.github/workflows/continuous-integration-32-bits.yml	2025-09-09 09:42:27.000000000 +0000
@@ -0,0 +1,50 @@
+name: "Continuous Integration - 32-bits"
+
+on:
+  push:
+    branches:
+      - master
+  pull_request:
+    branches:
+      - master
+
+env:
+  COMPOSER_FLAGS: "--ansi --no-interaction --no-progress --prefer-dist"
+
+jobs:
+  tests:
+    name: "PHP 8.4 - 32-bits"
+
+    runs-on: ubuntu-latest
+    container: shivammathur/node:latest-i386
+
+    steps:
+      - name: "Checkout"
+        uses: "actions/checkout@v4"
+
+      - name: "Install PHP"
+        uses: "shivammathur/setup-php@v2"
+        with:
+          coverage: "none"
+          extensions: "intl, zip"
+          ini-values: "memory_limit=-1, phar.readonly=0, error_reporting=E_ALL, display_errors=On"
+          php-version: "8.4"
+          tools: composer
+
+      - name: Check PHP_INT_MAX
+        run: |
+          MAX=$(php -r "echo PHP_INT_MAX;")
+          if [ "$MAX" -ne 2147483647 ]; then
+            echo "Error: PHP is not 32-bits (PHP_INT_MAX is $MAX)"
+            exit 1
+          fi
+        env:
+          MAX: ""
+
+      - name: Install dependencies
+        run: |
+          git config --global --add safe.directory $(pwd)
+          composer install
+
+      - name: Run tests
+        run: "composer test"
\ No newline at end of file
diff -pruN 6.4.1-1/.github/workflows/continuous-integration.yml 6.5.2-1/.github/workflows/continuous-integration.yml
--- 6.4.1-1/.github/workflows/continuous-integration.yml	2025-04-04 13:08:07.000000000 +0000
+++ 6.5.2-1/.github/workflows/continuous-integration.yml	2025-09-09 09:42:27.000000000 +0000
@@ -21,22 +21,14 @@ jobs:
     strategy:
       fail-fast: false
       matrix:
-        php-version:
-          - "7.2"
-          - "7.3"
-          - "7.4"
-          - "8.0"
-          - "8.1"
-          - "8.2"
-          - "8.3"
-          - "8.4"
+        php-version: [ '7.2', '7.3', '7.4', '8.0', '8.1', '8.2', '8.3', '8.4']
         dependencies: [highest]
         include:
           - php-version: "7.2"
             dependencies: lowest
-#          - php-version: "8.5"
-#            dependencies: highest
-#            experimental: true
+          - php-version: "8.5"
+            dependencies: ignore
+            experimental: true
 
     steps:
       - name: "Checkout"
diff -pruN 6.4.1-1/CHANGELOG.md 6.5.2-1/CHANGELOG.md
--- 6.4.1-1/CHANGELOG.md	2025-04-04 13:08:07.000000000 +0000
+++ 6.5.2-1/CHANGELOG.md	2025-09-09 09:42:27.000000000 +0000
@@ -7,6 +7,35 @@ and this project adheres to [Semantic Ve
 
 ## [Unreleased]
 
+## [6.5.2] - 2025-09-09
+### Fixed
+- Fix issue when http headers are already present ([#843](https://github.com/jsonrainbow/json-schema/pull/843))
+
+## [6.5.1] - 2025-08-29
+### Changed
+- ci: Add PHP 8.5 to pipeline, ignoring dependencies and as experimental ([#842](https://github.com/jsonrainbow/json-schema/pull/842))
+
+## [6.5.0] - 2025-08-29
+### Changed
+- Update test case to current (PHP) standards ([#831](https://github.com/jsonrainbow/json-schema/pull/831))
+- Upgrade test suite to use generators ([#834](https://github.com/jsonrainbow/json-schema/pull/834))
+- update to latest json schema test suite ([#821](https://github.com/jsonrainbow/json-schema/pull/821))
+### Fixed
+- Fix PHP 8.5 $http_response_header deprecation ([#840](https://github.com/jsonrainbow/json-schema/pull/840))
+
+## [6.4.2] - 2025-06-03
+### Fixed
+- Fix objects are non-unique despite key order ([#819](https://github.com/jsonrainbow/json-schema/pull/819))
+- Id's not being resolved and id property affects sibling ref which it should not do ([#828](https://github.com/jsonrainbow/json-schema/pull/828)) 
+
+### Changed
+- Added extra breaking change to UPDATE-6.0.md regarding BaseConstraint::addError signature change ([#823](https://github.com/jsonrainbow/json-schema/pull/823))
+- Update constraint class to PHP 7.2 language level ([#824](https://github.com/jsonrainbow/json-schema/pull/824))
+- Update base constraint class to PHP 7.2 language level ([#826](https://github.com/jsonrainbow/json-schema/pull/826))
+
+### Added
+- Introduce 32 bits CI workflow on latest php version ([#825](https://github.com/jsonrainbow/json-schema/pull/825))
+
 ## [6.4.1] - 2025-04-04
 ### Fixed
 - Fix support for 32bits PHP ([#817](https://github.com/jsonrainbow/json-schema/pull/817))
diff -pruN 6.4.1-1/UPGRADE-6.0.md 6.5.2-1/UPGRADE-6.0.md
--- 6.4.1-1/UPGRADE-6.0.md	2025-04-04 13:08:07.000000000 +0000
+++ 6.5.2-1/UPGRADE-6.0.md	2025-09-09 09:42:27.000000000 +0000
@@ -24,4 +24,22 @@ Thank you for your support and contribut
     foreach ($validator->getErrors() as $error) {
         echo $error['constraint']['name']; // required
     }
-    ```
\ No newline at end of file
+    ```
+
+## BaseConstraint::addError signature changed
+
+* The signature for the `BaseConstraint::AddError` method has changed.
+
+  The `$message` parameter has been removed and replaced by the `ConstraintError` parameter. 
+  The `ConstraintError` object encapsulates the error message along with additional information about the constraint violation.
+
+    *Before*
+    ```php
+    public function addError(?JsonPointer $path, $message, $constraint = '', ?array $more = null)
+    ```
+
+    *After*
+    ```php
+    public function addError(ConstraintError $constraint, ?JsonPointer $path = null, array $more = []): void
+    ```
+
diff -pruN 6.4.1-1/composer.json 6.5.2-1/composer.json
--- 6.4.1-1/composer.json	2025-04-04 13:08:07.000000000 +0000
+++ 6.5.2-1/composer.json	2025-09-09 09:42:27.000000000 +0000
@@ -33,7 +33,7 @@
     },
     "require-dev": {
         "friendsofphp/php-cs-fixer": "3.3.0",
-        "json-schema/json-schema-test-suite": "1.2.0",
+        "json-schema/json-schema-test-suite": "^23.2",
         "phpunit/phpunit": "^8.5",
         "phpspec/prophecy": "^1.19",
         "phpstan/phpstan": "^1.12",
@@ -59,11 +59,11 @@
             "type": "package",
             "package": {
                 "name": "json-schema/json-schema-test-suite",
-                "version": "1.2.0",
+                "version": "23.2.0",
                 "source": {
                     "type": "git",
                     "url": "https://github.com/json-schema/JSON-Schema-Test-Suite",
-                    "reference": "1.2.0"
+                    "reference": "23.2.0"
                 }
             }
         }
diff -pruN 6.4.1-1/debian/changelog 6.5.2-1/debian/changelog
--- 6.4.1-1/debian/changelog	2025-04-05 08:54:34.000000000 +0000
+++ 6.5.2-1/debian/changelog	2025-09-11 10:29:25.000000000 +0000
@@ -1,3 +1,45 @@
+php-json-schema (6.5.2-1) unstable; urgency=medium
+
+  [ Jordi Boggiano ]
+  * Fix issue when http headers are already present (#843)
+
+  [ Danny van der Sluijs ]
+  * docs: Prepare 6.5.2 release
+
+ -- David Prévot <taffit@debian.org>  Thu, 11 Sep 2025 12:29:25 +0200
+
+php-json-schema (6.5.1-1) unstable; urgency=medium
+
+  * Upload to unstable now that Trixie has been released
+
+  [ Danny van der Sluijs ]
+  * refactor: Update test case to current (PHP) standards (#831)
+  * Upgrade test suite to use generators (#834)
+  * feat: update to latest json schema test suite (#821)
+  * Fix PHP 8.5 $http_response_header deprecation (#841)
+  * docs: Prepare 6.5.1 release
+
+  [ David Prévot ]
+  * debian/control: Document nocheck flag
+  * Remove Rules-Requires-Root
+
+ -- David Prévot <taffit@debian.org>  Wed, 03 Sep 2025 08:21:35 +0200
+
+php-json-schema (6.4.2-1) experimental; urgency=medium
+
+  * Upload to experimental during the freeze
+
+  [ Danny van der Sluijs ]
+  * Fix objects are non unique despite key order (#819)
+  * Update constraint class to PHP 7.2 language level (#824)
+  * refactor: update BaseConstraint.php to PHP 7.2 language level (#826)
+  * docs: prepare 6.4.2 release
+
+  [ Björn Brala ]
+  * Update UPGRADE-6.0.md (#823)
+
+ -- David Prévot <taffit@debian.org>  Thu, 05 Jun 2025 07:58:36 +0200
+
 php-json-schema (6.4.1-1) unstable; urgency=medium
 
   [ Danny van der Sluijs ]
diff -pruN 6.4.1-1/debian/control 6.5.2-1/debian/control
--- 6.4.1-1/debian/control	2025-04-05 08:53:31.000000000 +0000
+++ 6.5.2-1/debian/control	2025-09-11 10:28:34.000000000 +0000
@@ -6,16 +6,15 @@ Uploaders: andrea rota <a@xelera.eu>, Da
 Build-Depends: debhelper-compat (= 13),
                dh-sequence-phpcomposer,
                help2man,
-               php-curl,
+               php-curl <!nocheck>,
                php-enum,
-               php-phpspec-prophecy,
+               php-phpspec-prophecy <!nocheck>,
                phpab,
-               phpunit
+               phpunit <!nocheck>
 Standards-Version: 4.7.2
 Homepage: https://github.com/justinrainbow/json-schema
 Vcs-Git: https://salsa.debian.org/php-team/pear/php-json-schema.git
 Vcs-Browser: https://salsa.debian.org/php-team/pear/php-json-schema
-Rules-Requires-Root: no
 
 Package: php-json-schema
 Architecture: all
diff -pruN 6.4.1-1/debian/docs 6.5.2-1/debian/docs
--- 6.4.1-1/debian/docs	2025-04-05 08:54:34.000000000 +0000
+++ 6.5.2-1/debian/docs	2025-09-03 06:08:30.000000000 +0000
@@ -1,3 +1,3 @@
 README.md
-dist/schema
 UPGRADE-6.0.md
+dist/schema
diff -pruN 6.4.1-1/debian/patches/0003-Modernize-PHPUnit-syntax.patch 6.5.2-1/debian/patches/0003-Modernize-PHPUnit-syntax.patch
--- 6.4.1-1/debian/patches/0003-Modernize-PHPUnit-syntax.patch	2025-04-05 08:52:18.000000000 +0000
+++ 6.5.2-1/debian/patches/0003-Modernize-PHPUnit-syntax.patch	2025-09-11 10:28:37.000000000 +0000
@@ -3,83 +3,73 @@ Date: Sat, 5 Apr 2025 10:48:15 +0200
 Subject: Modernize PHPUnit syntax
 
 ---
- tests/Constraints/BaseTestCase.php                  | 17 +++++------------
+ tests/Constraints/BaseTestCase.php                  |  5 +++++
  tests/Constraints/CoerciveTest.php                  |  5 +++--
  tests/Constraints/DefaultPropertiesTest.php         | 13 ++++---------
  tests/Constraints/FactoryTest.php                   |  9 +++------
  tests/Constraints/FormatTest.php                    | 13 ++++---------
  tests/Constraints/SchemaValidationTest.php          |  9 +++------
  tests/Constraints/TypeTest.php                      |  9 +++------
+ tests/Drafts/Draft3Test.php                         |  2 ++
  tests/Entity/JsonPointerTest.php                    |  5 ++---
+ tests/JsonSchemaTestSuiteTest.php                   |  2 ++
  tests/RefTest.php                                   |  3 ++-
  tests/Rfc3339Test.php                               |  9 +++------
  tests/Tool/DeepComparerTest.php                     |  9 +++------
  .../Validator/RelativeReferenceValidatorTest.php    |  5 +++--
  tests/Tool/Validator/UriValidatorTest.php           |  5 +++--
  tests/Uri/UriRetrieverTest.php                      | 21 ++++++---------------
- 14 files changed, 47 insertions(+), 85 deletions(-)
+ 16 files changed, 51 insertions(+), 73 deletions(-)
 
 diff --git a/tests/Constraints/BaseTestCase.php b/tests/Constraints/BaseTestCase.php
-index ba55b46..009c2d7 100644
+index 63b63a4..7c96c50 100644
 --- a/tests/Constraints/BaseTestCase.php
 +++ b/tests/Constraints/BaseTestCase.php
-@@ -14,6 +14,7 @@ use JsonSchema\Constraints\Factory;
+@@ -10,6 +10,7 @@ use JsonSchema\Constraints\Factory;
  use JsonSchema\SchemaStorage;
  use JsonSchema\Uri\UriResolver;
  use JsonSchema\Validator;
 +use PHPUnit\Framework\Attributes\DataProvider;
  
- /**
-  * @package JsonSchema\Tests\Constraints
-@@ -23,9 +24,7 @@ abstract class BaseTestCase extends VeryBaseTestCase
-     protected $schemaSpec = 'http://json-schema.org/draft-04/schema#';
-     protected $validateSchema = false;
- 
--    /**
--     * @dataProvider getInvalidTests
--     */
+ abstract class BaseTestCase extends VeryBaseTestCase
+ {
+@@ -21,6 +22,7 @@ abstract class BaseTestCase extends VeryBaseTestCase
+      *
+      * @param ?int-mask-of<Constraint::CHECK_MODE_*> $checkMode
+      */
 +    #[DataProvider('getInvalidTests')]
-     public function testInvalidCases($input, $schema, $checkMode = Constraint::CHECK_MODE_NORMAL, $errors = []): void
+     public function testInvalidCases(string $input, string $schema, ?int $checkMode = Constraint::CHECK_MODE_NORMAL, array $errors = []): void
      {
-         $checkMode = $checkMode === null ? Constraint::CHECK_MODE_NORMAL : $checkMode;
-@@ -52,9 +51,7 @@ abstract class BaseTestCase extends VeryBaseTestCase
-         $this->assertFalse($validator->isValid(), print_r($validator->getErrors(), true));
-     }
- 
--    /**
--     * @dataProvider getInvalidForAssocTests
--     */
+         $checkMode = $checkMode ?? Constraint::CHECK_MODE_NORMAL;
+@@ -53,6 +55,7 @@ abstract class BaseTestCase extends VeryBaseTestCase
+      *
+      * @param ?int-mask-of<Constraint::CHECK_MODE_*> $checkMode
+      */
 +    #[DataProvider('getInvalidForAssocTests')]
-     public function testInvalidCasesUsingAssoc($input, $schema, $checkMode = Constraint::CHECK_MODE_TYPE_CAST, $errors = []): void
+     public function testInvalidCasesUsingAssoc(string $input, string $schema, ?int $checkMode = Constraint::CHECK_MODE_TYPE_CAST, array $errors = []): void
      {
-         $checkMode = $checkMode === null ? Constraint::CHECK_MODE_TYPE_CAST : $checkMode;
-@@ -84,9 +81,7 @@ abstract class BaseTestCase extends VeryBaseTestCase
-         $this->assertFalse($validator->isValid(), print_r($validator->getErrors(), true));
-     }
- 
--    /**
--     * @dataProvider getValidTests
--     */
+         $checkMode = $checkMode ?? Constraint::CHECK_MODE_TYPE_CAST;
+@@ -88,6 +91,7 @@ abstract class BaseTestCase extends VeryBaseTestCase
+      *
+      * @param ?int-mask-of<Constraint::CHECK_MODE_*> $checkMode
+      */
 +    #[DataProvider('getValidTests')]
-     public function testValidCases($input, $schema, $checkMode = Constraint::CHECK_MODE_NORMAL): void
+     public function testValidCases(string $input, string $schema, ?int $checkMode = Constraint::CHECK_MODE_NORMAL): void
      {
          if ($this->validateSchema) {
-@@ -106,9 +101,7 @@ abstract class BaseTestCase extends VeryBaseTestCase
-         $this->assertTrue($validator->isValid(), print_r($validator->getErrors(), true));
-     }
- 
--    /**
--     * @dataProvider getValidForAssocTests
--     */
+@@ -114,6 +118,7 @@ abstract class BaseTestCase extends VeryBaseTestCase
+      *
+      * @param ?int-mask-of<Constraint::CHECK_MODE_*> $checkMode
+      */
 +    #[DataProvider('getValidForAssocTests')]
-     public function testValidCasesUsingAssoc($input, $schema, $checkMode = Constraint::CHECK_MODE_TYPE_CAST): void
+     public function testValidCasesUsingAssoc(string $input, string $schema, ?int $checkMode = Constraint::CHECK_MODE_TYPE_CAST): void
      {
          if ($this->validateSchema) {
 diff --git a/tests/Constraints/CoerciveTest.php b/tests/Constraints/CoerciveTest.php
-index 3c028ba..eef2fc1 100644
+index 47dcc07..87251d7 100644
 --- a/tests/Constraints/CoerciveTest.php
 +++ b/tests/Constraints/CoerciveTest.php
-@@ -13,6 +13,7 @@ use JsonSchema\Constraints\Constraint;
+@@ -8,6 +8,7 @@ use JsonSchema\Constraints\Constraint;
  use JsonSchema\Constraints\Factory;
  use JsonSchema\Constraints\TypeCheck\LooseTypeCheck;
  use JsonSchema\Validator;
@@ -87,7 +77,7 @@ index 3c028ba..eef2fc1 100644
  
  class CoerciveTest extends VeryBaseTestCase
  {
-@@ -189,7 +190,7 @@ class CoerciveTest extends VeryBaseTestCase
+@@ -184,7 +185,7 @@ class CoerciveTest extends VeryBaseTestCase
          return $tests;
      }
  
@@ -96,7 +86,7 @@ index 3c028ba..eef2fc1 100644
      public function testCoerceCases($schema, $data, $startType, $endType, $endValue, $valid, $extraFlags = 0, $assoc = false): void
      {
          $validator = new Validator($this->factory);
-@@ -231,7 +232,7 @@ class CoerciveTest extends VeryBaseTestCase
+@@ -226,7 +227,7 @@ class CoerciveTest extends VeryBaseTestCase
          }
      }
  
@@ -106,10 +96,10 @@ index 3c028ba..eef2fc1 100644
      {
          $this->testCoerceCases($schema, $data, $startType, $endType, $endValue, $valid, $early, true);
 diff --git a/tests/Constraints/DefaultPropertiesTest.php b/tests/Constraints/DefaultPropertiesTest.php
-index 2849835..702de51 100644
+index e43b980..084b2fd 100644
 --- a/tests/Constraints/DefaultPropertiesTest.php
 +++ b/tests/Constraints/DefaultPropertiesTest.php
-@@ -13,6 +13,7 @@ use JsonSchema\Constraints\Constraint;
+@@ -8,6 +8,7 @@ use JsonSchema\Constraints\Constraint;
  use JsonSchema\Constraints\Factory;
  use JsonSchema\SchemaStorage;
  use JsonSchema\Validator;
@@ -117,7 +107,7 @@ index 2849835..702de51 100644
  
  class DefaultPropertiesTest extends VeryBaseTestCase
  {
-@@ -167,9 +168,7 @@ class DefaultPropertiesTest extends VeryBaseTestCase
+@@ -162,9 +163,7 @@ class DefaultPropertiesTest extends VeryBaseTestCase
          ];
      }
  
@@ -128,7 +118,7 @@ index 2849835..702de51 100644
      public function testValidCases($input, $schema, $expectOutput = null, $checkMode = 0): void
      {
          if (is_string($input)) {
-@@ -194,9 +193,7 @@ class DefaultPropertiesTest extends VeryBaseTestCase
+@@ -189,9 +188,7 @@ class DefaultPropertiesTest extends VeryBaseTestCase
          }
      }
  
@@ -139,7 +129,7 @@ index 2849835..702de51 100644
      public function testValidCasesUsingAssoc($input, $schema, $expectOutput = null, $checkMode = 0): void
      {
          $input = json_decode($input, true);
-@@ -205,9 +202,7 @@ class DefaultPropertiesTest extends VeryBaseTestCase
+@@ -200,9 +197,7 @@ class DefaultPropertiesTest extends VeryBaseTestCase
          self::testValidCases($input, $schema, $expectOutput, $checkMode);
      }
  
@@ -151,10 +141,10 @@ index 2849835..702de51 100644
      {
          $input = json_decode($input, true);
 diff --git a/tests/Constraints/FactoryTest.php b/tests/Constraints/FactoryTest.php
-index 9136f50..70917a4 100644
+index 0ff6e92..55892e0 100644
 --- a/tests/Constraints/FactoryTest.php
 +++ b/tests/Constraints/FactoryTest.php
-@@ -17,6 +17,7 @@ use JsonSchema\Constraints\ConstraintInterface;
+@@ -10,6 +10,7 @@ use JsonSchema\Constraints\ConstraintInterface;
  use JsonSchema\Constraints\Factory;
  use JsonSchema\Entity\JsonPointer;
  use JsonSchema\Exception\InvalidArgumentException;
@@ -162,7 +152,7 @@ index 9136f50..70917a4 100644
  use PHPUnit\Framework\TestCase;
  
  class MyBadConstraint
-@@ -32,9 +33,7 @@ class MyStringConstraint extends Constraint
+@@ -25,9 +26,7 @@ class MyStringConstraint extends Constraint
  
  class FactoryTest extends TestCase
  {
@@ -173,7 +163,7 @@ index 9136f50..70917a4 100644
      public function testCreateInstanceForConstraintName(string $constraintName, string $expectedClass): void
      {
          $factory = new Factory();
-@@ -59,9 +58,7 @@ class FactoryTest extends TestCase
+@@ -52,9 +51,7 @@ class FactoryTest extends TestCase
          yield 'Schema' => ['schema', Constraints\SchemaConstraint::class];
      }
  
@@ -185,10 +175,10 @@ index 9136f50..70917a4 100644
      {
          $factory = new Factory();
 diff --git a/tests/Constraints/FormatTest.php b/tests/Constraints/FormatTest.php
-index 25eab1c..03a45dd 100644
+index 7247105..67ef74b 100644
 --- a/tests/Constraints/FormatTest.php
 +++ b/tests/Constraints/FormatTest.php
-@@ -12,6 +12,7 @@ namespace JsonSchema\Tests\Constraints;
+@@ -7,6 +7,7 @@ namespace JsonSchema\Tests\Constraints;
  use JsonSchema\Constraints\Constraint;
  use JsonSchema\Constraints\Factory;
  use JsonSchema\Constraints\FormatConstraint;
@@ -196,7 +186,7 @@ index 25eab1c..03a45dd 100644
  
  class FormatTest extends BaseTestCase
  {
-@@ -54,9 +55,7 @@ class FormatTest extends BaseTestCase
+@@ -50,9 +51,7 @@ class FormatTest extends BaseTestCase
          $this->assertEmpty($validator->getErrors());
      }
  
@@ -207,7 +197,7 @@ index 25eab1c..03a45dd 100644
      public function testValidFormat($string, $format): void
      {
          $validator = new FormatConstraint();
-@@ -67,9 +66,7 @@ class FormatTest extends BaseTestCase
+@@ -63,9 +62,7 @@ class FormatTest extends BaseTestCase
          $this->assertEmpty($validator->getErrors());
      }
  
@@ -218,7 +208,7 @@ index 25eab1c..03a45dd 100644
      public function testInvalidFormat($string, $format): void
      {
          $validator = new FormatConstraint();
-@@ -80,9 +77,7 @@ class FormatTest extends BaseTestCase
+@@ -76,9 +73,7 @@ class FormatTest extends BaseTestCase
          $this->assertCount(1, $validator->getErrors(), 'Expected 1 error');
      }
  
@@ -230,10 +220,10 @@ index 25eab1c..03a45dd 100644
      {
          $factory = new Factory();
 diff --git a/tests/Constraints/SchemaValidationTest.php b/tests/Constraints/SchemaValidationTest.php
-index 65268f4..7b20061 100644
+index e7b4196..b4c92ef 100644
 --- a/tests/Constraints/SchemaValidationTest.php
 +++ b/tests/Constraints/SchemaValidationTest.php
-@@ -11,6 +11,7 @@ namespace JsonSchema\Tests\Constraints;
+@@ -6,6 +6,7 @@ namespace JsonSchema\Tests\Constraints;
  
  use JsonSchema\Constraints\Constraint;
  use JsonSchema\Validator;
@@ -241,7 +231,7 @@ index 65268f4..7b20061 100644
  use PHPUnit\Framework\TestCase;
  
  class SchemaValidationTest extends TestCase
-@@ -61,9 +62,7 @@ class SchemaValidationTest extends TestCase
+@@ -56,9 +57,7 @@ class SchemaValidationTest extends TestCase
          ];
      }
  
@@ -252,7 +242,7 @@ index 65268f4..7b20061 100644
      public function testInvalidCases($schema): void
      {
          $input = json_decode('{"propertyOne":"valueOne"}');
-@@ -82,9 +81,7 @@ class SchemaValidationTest extends TestCase
+@@ -77,9 +76,7 @@ class SchemaValidationTest extends TestCase
          }
      }
  
@@ -264,18 +254,18 @@ index 65268f4..7b20061 100644
      {
          $input = json_decode('{"propertyOne":"valueOne"}');
 diff --git a/tests/Constraints/TypeTest.php b/tests/Constraints/TypeTest.php
-index 1b6edc4..8056e65 100644
+index 8292b9b..d9bf404 100644
 --- a/tests/Constraints/TypeTest.php
 +++ b/tests/Constraints/TypeTest.php
-@@ -11,6 +11,7 @@ namespace JsonSchema\Tests\Constraints;
+@@ -6,6 +6,7 @@ namespace JsonSchema\Tests\Constraints;
  
  use JsonSchema\Constraints\TypeCheck\LooseTypeCheck;
  use JsonSchema\Constraints\TypeConstraint;
 +use PHPUnit\Framework\Attributes\DataProvider;
  use PHPUnit\Framework\TestCase;
  
- /**
-@@ -41,9 +42,7 @@ class TypeTest extends TestCase
+ class TypeTest extends TestCase
+@@ -29,9 +30,7 @@ class TypeTest extends TestCase
          ];
      }
  
@@ -286,7 +276,7 @@ index 1b6edc4..8056e65 100644
      public function testIndefiniteArticleForTypeInTypeCheckErrorMessage($type, $wording, $value = null, $label = 'NULL'): void
      {
          $constraint = new TypeConstraint();
-@@ -100,9 +99,7 @@ class TypeTest extends TestCase
+@@ -88,9 +87,7 @@ class TypeTest extends TestCase
          return $wordings;
      }
  
@@ -297,20 +287,37 @@ index 1b6edc4..8056e65 100644
      public function testValidateTypeNameWording($nameWording): void
      {
          $t = new TypeConstraint();
+diff --git a/tests/Drafts/Draft3Test.php b/tests/Drafts/Draft3Test.php
+index 2d1202e..91b593f 100644
+--- a/tests/Drafts/Draft3Test.php
++++ b/tests/Drafts/Draft3Test.php
+@@ -7,6 +7,7 @@ namespace JsonSchema\Tests\Drafts;
+ use JsonSchema\Constraints\Factory;
+ use JsonSchema\SchemaStorage;
+ use JsonSchema\Validator;
++use PHPUnit\Framework\Attributes\DataProvider;
+ 
+ class Draft3Test extends BaseDraftTestCase
+ {
+@@ -23,6 +24,7 @@ class Draft3Test extends BaseDraftTestCase
+      * @param mixed $data
+      * @dataProvider refPreventsASiblingIdFromChangingTheBaseUriProvider
+      */
++    #[DataProvider('refPreventsASiblingIdFromChangingTheBaseUriProvider')]
+     public function testRefPreventsASiblingIdFromChangingTheBaseUriProvider($data, bool $expectedResult): void
+     {
+         $schema = json_decode(<<<'JSON'
 diff --git a/tests/Entity/JsonPointerTest.php b/tests/Entity/JsonPointerTest.php
-index cb27c68..3f7dff6 100644
+index f6be662..2ac0168 100644
 --- a/tests/Entity/JsonPointerTest.php
 +++ b/tests/Entity/JsonPointerTest.php
-@@ -13,6 +13,7 @@ namespace JsonSchema\Tests\Entity;
+@@ -6,13 +6,12 @@ namespace JsonSchema\Tests\Entity;
  
  use JsonSchema\Entity\JsonPointer;
  use JsonSchema\Exception\InvalidArgumentException;
 +use PHPUnit\Framework\Attributes\DataProvider;
  use PHPUnit\Framework\TestCase;
  
- /**
-@@ -22,9 +23,7 @@ use PHPUnit\Framework\TestCase;
-  */
  class JsonPointerTest extends TestCase
  {
 -    /**
@@ -320,11 +327,31 @@ index cb27c68..3f7dff6 100644
      public function testJsonPointer(
          string $testValue,
          string $expectedFileName,
+diff --git a/tests/JsonSchemaTestSuiteTest.php b/tests/JsonSchemaTestSuiteTest.php
+index 0c4931b..30cfb84 100644
+--- a/tests/JsonSchemaTestSuiteTest.php
++++ b/tests/JsonSchemaTestSuiteTest.php
+@@ -9,6 +9,7 @@ use JsonSchema\Constraints\Factory;
+ use JsonSchema\SchemaStorage;
+ use JsonSchema\SchemaStorageInterface;
+ use JsonSchema\Validator;
++use PHPUnit\Framework\Attributes\DataProvider;
+ use PHPUnit\Framework\TestCase;
+ use RecursiveDirectoryIterator;
+ use RecursiveIteratorIterator;
+@@ -20,6 +21,7 @@ class JsonSchemaTestSuiteTest extends TestCase
+      *
+      * @param mixed $data
+      */
++    #[DataProvider('casesDataProvider')]
+     public function testTestCaseValidatesCorrectly(
+         string $testCaseDescription,
+         string $testDescription,
 diff --git a/tests/RefTest.php b/tests/RefTest.php
-index 3b66d58..7ebaf64 100644
+index 574fe9c..5ea6b66 100644
 --- a/tests/RefTest.php
 +++ b/tests/RefTest.php
-@@ -10,6 +10,7 @@
+@@ -5,6 +5,7 @@ declare(strict_types=1);
  namespace JsonSchema\Tests;
  
  use JsonSchema\Validator;
@@ -332,7 +359,7 @@ index 3b66d58..7ebaf64 100644
  use PHPUnit\Framework\TestCase;
  
  class RefTest extends TestCase
-@@ -61,7 +62,7 @@ class RefTest extends TestCase
+@@ -56,7 +57,7 @@ class RefTest extends TestCase
          ];
      }
  
@@ -452,18 +479,18 @@ index 80a45c8..83cc0d9 100644
      {
          self::assertFalse(UriValidator::isValid($uri));
 diff --git a/tests/Uri/UriRetrieverTest.php b/tests/Uri/UriRetrieverTest.php
-index e1addf8..1343dbf 100644
+index 013fb05..11c09c0 100644
 --- a/tests/Uri/UriRetrieverTest.php
 +++ b/tests/Uri/UriRetrieverTest.php
-@@ -15,6 +15,7 @@ use JsonSchema\Exception\ResourceNotFoundException;
+@@ -10,6 +10,7 @@ use JsonSchema\Exception\ResourceNotFoundException;
  use JsonSchema\Exception\UriResolverException;
  use JsonSchema\Uri\UriRetriever;
  use JsonSchema\Validator;
 +use PHPUnit\Framework\Attributes\DataProvider;
  use PHPUnit\Framework\TestCase;
  
- /**
-@@ -47,9 +48,7 @@ class UriRetrieverTest extends TestCase
+ class UriRetrieverTest extends TestCase
+@@ -39,9 +40,7 @@ class UriRetrieverTest extends TestCase
          return $retriever;
      }
  
@@ -474,7 +501,7 @@ index e1addf8..1343dbf 100644
      public function testChildExtendsParentValidTest($childSchema, $parentSchema): void
      {
          $this->mockRetriever($parentSchema);
-@@ -62,9 +61,7 @@ class UriRetrieverTest extends TestCase
+@@ -54,9 +53,7 @@ class UriRetrieverTest extends TestCase
          $this->assertTrue($this->validator->isValid());
      }
  
@@ -485,7 +512,7 @@ index e1addf8..1343dbf 100644
      public function testChildExtendsParentInvalidChildTest($childSchema, $parentSchema): void
      {
          $this->mockRetriever($parentSchema);
-@@ -77,9 +74,7 @@ class UriRetrieverTest extends TestCase
+@@ -69,9 +66,7 @@ class UriRetrieverTest extends TestCase
          $this->assertFalse($this->validator->isValid());
      }
  
@@ -496,7 +523,7 @@ index e1addf8..1343dbf 100644
      public function testChildExtendsParentInvalidParentTest($childSchema, $parentSchema): void
      {
          $this->mockRetriever($parentSchema);
-@@ -92,9 +87,7 @@ class UriRetrieverTest extends TestCase
+@@ -84,9 +79,7 @@ class UriRetrieverTest extends TestCase
          $this->assertFalse($this->validator->isValid());
      }
  
diff -pruN 6.4.1-1/debian/patches/0005-Use-file-actually-available-in-distributed-package.patch 6.5.2-1/debian/patches/0005-Use-file-actually-available-in-distributed-package.patch
--- 6.4.1-1/debian/patches/0005-Use-file-actually-available-in-distributed-package.patch	2025-04-05 08:52:18.000000000 +0000
+++ 6.5.2-1/debian/patches/0005-Use-file-actually-available-in-distributed-package.patch	2025-09-11 10:28:37.000000000 +0000
@@ -7,10 +7,10 @@ Subject: Use file actually available in
  1 file changed, 2 insertions(+), 2 deletions(-)
 
 diff --git a/tests/Uri/UriRetrieverTest.php b/tests/Uri/UriRetrieverTest.php
-index 8141926..e1addf8 100644
+index 9d41b3c..013fb05 100644
 --- a/tests/Uri/UriRetrieverTest.php
 +++ b/tests/Uri/UriRetrieverTest.php
-@@ -324,11 +324,11 @@ EOF;
+@@ -320,11 +320,11 @@ EOF;
          $retriever = new UriRetriever();
  
          // load schema from package
diff -pruN 6.4.1-1/debian/pkg-php-tools-autoloaders 6.5.2-1/debian/pkg-php-tools-autoloaders
--- 6.4.1-1/debian/pkg-php-tools-autoloaders	2025-04-05 08:09:27.000000000 +0000
+++ 6.5.2-1/debian/pkg-php-tools-autoloaders	1970-01-01 00:00:00.000000000 +0000
@@ -1 +0,0 @@
-justinrainbow json-schema JsonSchema/autoload.php
diff -pruN 6.4.1-1/debian/tests/control 6.5.2-1/debian/tests/control
--- 6.4.1-1/debian/tests/control	2025-04-05 08:52:18.000000000 +0000
+++ 6.5.2-1/debian/tests/control	2025-09-11 10:28:34.000000000 +0000
@@ -1,8 +1,3 @@
 Tests: phpunit
 Restrictions: allow-stderr, flaky, rw-build-tree
-Depends: php-curl,
-         php-phpspec-prophecy,
-         phpab,
-         phpunit,
-         pkg-php-tools (>= 1.41~),
-         @
+Depends: php-curl, php-phpspec-prophecy, phpab, phpunit, pkg-php-tools, @
diff -pruN 6.4.1-1/dist/schema/json-schema-draft-06.json 6.5.2-1/dist/schema/json-schema-draft-06.json
--- 6.4.1-1/dist/schema/json-schema-draft-06.json	1970-01-01 00:00:00.000000000 +0000
+++ 6.5.2-1/dist/schema/json-schema-draft-06.json	2025-09-09 09:42:27.000000000 +0000
@@ -0,0 +1,155 @@
+{
+    "$schema": "http://json-schema.org/draft-06/schema#",
+    "$id": "http://json-schema.org/draft-06/schema#",
+    "title": "Core schema meta-schema",
+    "definitions": {
+        "schemaArray": {
+            "type": "array",
+            "minItems": 1,
+            "items": { "$ref": "#" }
+        },
+        "nonNegativeInteger": {
+            "type": "integer",
+            "minimum": 0
+        },
+        "nonNegativeIntegerDefault0": {
+            "allOf": [
+                { "$ref": "#/definitions/nonNegativeInteger" },
+                { "default": 0 }
+            ]
+        },
+        "simpleTypes": {
+            "enum": [
+                "array",
+                "boolean",
+                "integer",
+                "null",
+                "number",
+                "object",
+                "string"
+            ]
+        },
+        "stringArray": {
+            "type": "array",
+            "items": { "type": "string" },
+            "uniqueItems": true,
+            "default": []
+        }
+    },
+    "type": ["object", "boolean"],
+    "properties": {
+        "$id": {
+            "type": "string",
+            "format": "uri-reference"
+        },
+        "$schema": {
+            "type": "string",
+            "format": "uri"
+        },
+        "$ref": {
+            "type": "string",
+            "format": "uri-reference"
+        },
+        "title": {
+            "type": "string"
+        },
+        "description": {
+            "type": "string"
+        },
+        "default": {},
+        "examples": {
+            "type": "array",
+            "items": {}
+        },
+        "multipleOf": {
+            "type": "number",
+            "exclusiveMinimum": 0
+        },
+        "maximum": {
+            "type": "number"
+        },
+        "exclusiveMaximum": {
+            "type": "number"
+        },
+        "minimum": {
+            "type": "number"
+        },
+        "exclusiveMinimum": {
+            "type": "number"
+        },
+        "maxLength": { "$ref": "#/definitions/nonNegativeInteger" },
+        "minLength": { "$ref": "#/definitions/nonNegativeIntegerDefault0" },
+        "pattern": {
+            "type": "string",
+            "format": "regex"
+        },
+        "additionalItems": { "$ref": "#" },
+        "items": {
+            "anyOf": [
+                { "$ref": "#" },
+                { "$ref": "#/definitions/schemaArray" }
+            ],
+            "default": {}
+        },
+        "maxItems": { "$ref": "#/definitions/nonNegativeInteger" },
+        "minItems": { "$ref": "#/definitions/nonNegativeIntegerDefault0" },
+        "uniqueItems": {
+            "type": "boolean",
+            "default": false
+        },
+        "contains": { "$ref": "#" },
+        "maxProperties": { "$ref": "#/definitions/nonNegativeInteger" },
+        "minProperties": { "$ref": "#/definitions/nonNegativeIntegerDefault0" },
+        "required": { "$ref": "#/definitions/stringArray" },
+        "additionalProperties": { "$ref": "#" },
+        "definitions": {
+            "type": "object",
+            "additionalProperties": { "$ref": "#" },
+            "default": {}
+        },
+        "properties": {
+            "type": "object",
+            "additionalProperties": { "$ref": "#" },
+            "default": {}
+        },
+        "patternProperties": {
+            "type": "object",
+            "additionalProperties": { "$ref": "#" },
+            "propertyNames": { "format": "regex" },
+            "default": {}
+        },
+        "dependencies": {
+            "type": "object",
+            "additionalProperties": {
+                "anyOf": [
+                    { "$ref": "#" },
+                    { "$ref": "#/definitions/stringArray" }
+                ]
+            }
+        },
+        "propertyNames": { "$ref": "#" },
+        "const": {},
+        "enum": {
+            "type": "array",
+            "minItems": 1,
+            "uniqueItems": true
+        },
+        "type": {
+            "anyOf": [
+                { "$ref": "#/definitions/simpleTypes" },
+                {
+                    "type": "array",
+                    "items": { "$ref": "#/definitions/simpleTypes" },
+                    "minItems": 1,
+                    "uniqueItems": true
+                }
+            ]
+        },
+        "format": { "type": "string" },
+        "allOf": { "$ref": "#/definitions/schemaArray" },
+        "anyOf": { "$ref": "#/definitions/schemaArray" },
+        "oneOf": { "$ref": "#/definitions/schemaArray" },
+        "not": { "$ref": "#" }
+    },
+    "default": {}
+}
diff -pruN 6.4.1-1/phpstan-baseline.neon 6.5.2-1/phpstan-baseline.neon
--- 6.4.1-1/phpstan-baseline.neon	2025-04-04 13:08:07.000000000 +0000
+++ 6.5.2-1/phpstan-baseline.neon	2025-09-09 09:42:27.000000000 +0000
@@ -41,21 +41,6 @@ parameters:
 			path: src/JsonSchema/Constraints/CollectionConstraint.php
 
 		-
-			message: "#^Method JsonSchema\\\\Constraints\\\\Constraint\\:\\:checkObject\\(\\) has parameter \\$appliedDefaults with no type specified\\.$#"
-			count: 1
-			path: src/JsonSchema/Constraints/Constraint.php
-
-		-
-			message: "#^Method JsonSchema\\\\Constraints\\\\Constraint\\:\\:checkUndefined\\(\\) has parameter \\$fromDefault with no type specified\\.$#"
-			count: 1
-			path: src/JsonSchema/Constraints/Constraint.php
-
-		-
-			message: "#^Property JsonSchema\\\\Constraints\\\\Constraint\\:\\:\\$inlineSchemaProperty has no type specified\\.$#"
-			count: 1
-			path: src/JsonSchema/Constraints/Constraint.php
-
-		-
 			message: "#^Method JsonSchema\\\\Constraints\\\\ConstraintInterface\\:\\:addError\\(\\) has parameter \\$more with no value type specified in iterable type array\\.$#"
 			count: 1
 			path: src/JsonSchema/Constraints/ConstraintInterface.php
@@ -206,11 +191,6 @@ parameters:
 			path: src/JsonSchema/Constraints/ObjectConstraint.php
 
 		-
-			message: "#^Method JsonSchema\\\\Constraints\\\\ObjectConstraint\\:\\:check\\(\\) has parameter \\$appliedDefaults with no type specified\\.$#"
-			count: 1
-			path: src/JsonSchema/Constraints/ObjectConstraint.php
-
-		-
 			message: "#^Method JsonSchema\\\\Constraints\\\\ObjectConstraint\\:\\:check\\(\\) has parameter \\$patternProperties with no type specified\\.$#"
 			count: 1
 			path: src/JsonSchema/Constraints/ObjectConstraint.php
@@ -256,11 +236,6 @@ parameters:
 			path: src/JsonSchema/Constraints/ObjectConstraint.php
 
 		-
-			message: "#^Property JsonSchema\\\\Constraints\\\\ObjectConstraint\\:\\:\\$appliedDefaults type has no value type specified in iterable type array\\.$#"
-			count: 1
-			path: src/JsonSchema/Constraints/ObjectConstraint.php
-
-		-
 			message: "#^Method JsonSchema\\\\Constraints\\\\StringConstraint\\:\\:strlen\\(\\) has no return type specified\\.$#"
 			count: 1
 			path: src/JsonSchema/Constraints/StringConstraint.php
@@ -566,11 +541,6 @@ parameters:
 			path: src/JsonSchema/Constraints/TypeConstraint.php
 
 		-
-			message: "#^Method JsonSchema\\\\Constraints\\\\UndefinedConstraint\\:\\:check\\(\\) has parameter \\$fromDefault with no type specified\\.$#"
-			count: 1
-			path: src/JsonSchema/Constraints/UndefinedConstraint.php
-
-		-
 			message: "#^Method JsonSchema\\\\Constraints\\\\UndefinedConstraint\\:\\:shouldApplyDefaultValue\\(\\) has parameter \\$name with no type specified\\.$#"
 			count: 1
 			path: src/JsonSchema/Constraints/UndefinedConstraint.php
@@ -611,21 +581,11 @@ parameters:
 			path: src/JsonSchema/Constraints/UndefinedConstraint.php
 
 		-
-			message: "#^Property JsonSchema\\\\Constraints\\\\UndefinedConstraint\\:\\:\\$appliedDefaults type has no value type specified in iterable type array\\.$#"
-			count: 1
-			path: src/JsonSchema/Constraints/UndefinedConstraint.php
-
-		-
 			message: "#^Method JsonSchema\\\\Entity\\\\JsonPointer\\:\\:encodePropertyPaths\\(\\) return type has no value type specified in iterable type array\\.$#"
 			count: 1
 			path: src/JsonSchema/Entity/JsonPointer.php
 
 		-
-			message: "#^Method JsonSchema\\\\Entity\\\\JsonPointer\\:\\:setFromDefault\\(\\) has no return type specified\\.$#"
-			count: 1
-			path: src/JsonSchema/Entity/JsonPointer.php
-
-		-
 			message: "#^Method JsonSchema\\\\Entity\\\\JsonPointer\\:\\:withPropertyPaths\\(\\) has parameter \\$propertyPaths with no value type specified in iterable type array\\.$#"
 			count: 1
 			path: src/JsonSchema/Entity/JsonPointer.php
@@ -686,22 +646,17 @@ parameters:
 			path: src/JsonSchema/SchemaStorage.php
 
 		-
-			message: "#^Argument of an invalid type object supplied for foreach, only iterables are supported\\.$#"
-			count: 1
-			path: src/JsonSchema/SchemaStorage.php
-
-		-
-			message: "#^Call to function is_array\\(\\) with object will always evaluate to false\\.$#"
+			message: "#^Argument of an invalid type array\\|stdClass supplied for foreach, only iterables are supported\\.$#"
 			count: 1
 			path: src/JsonSchema/SchemaStorage.php
 
 		-
-			message: "#^Method JsonSchema\\\\SchemaStorage\\:\\:addSchema\\(\\) has no return type specified\\.$#"
+			message: "#^Argument of an invalid type object supplied for foreach, only iterables are supported\\.$#"
 			count: 1
 			path: src/JsonSchema/SchemaStorage.php
 
 		-
-			message: "#^Method JsonSchema\\\\SchemaStorage\\:\\:expandRefs\\(\\) has no return type specified\\.$#"
+			message: "#^Call to function is_array\\(\\) with object will always evaluate to false\\.$#"
 			count: 1
 			path: src/JsonSchema/SchemaStorage.php
 
@@ -736,11 +691,6 @@ parameters:
 			path: src/JsonSchema/SchemaStorage.php
 
 		-
-			message: "#^Method JsonSchema\\\\SchemaStorageInterface\\:\\:addSchema\\(\\) has no return type specified\\.$#"
-			count: 1
-			path: src/JsonSchema/SchemaStorageInterface.php
-
-		-
 			message: "#^Method JsonSchema\\\\Uri\\\\Retrievers\\\\Curl\\:\\:fetchMessageBody\\(\\) has no return type specified\\.$#"
 			count: 1
 			path: src/JsonSchema/Uri/Retrievers/Curl.php
diff -pruN 6.4.1-1/phpunit.xml.dist 6.5.2-1/phpunit.xml.dist
--- 6.4.1-1/phpunit.xml.dist	2025-04-04 13:08:07.000000000 +0000
+++ 6.5.2-1/phpunit.xml.dist	2025-09-09 09:42:27.000000000 +0000
@@ -24,4 +24,8 @@
             <directory>./src/JsonSchema/</directory>
         </whitelist>
     </filter>
+
+    <php>
+        <ini name="memory_limit" value="-1"/>
+    </php>
 </phpunit>
diff -pruN 6.4.1-1/src/JsonSchema/Constraints/BaseConstraint.php 6.5.2-1/src/JsonSchema/Constraints/BaseConstraint.php
--- 6.4.1-1/src/JsonSchema/Constraints/BaseConstraint.php	2025-04-04 13:08:07.000000000 +0000
+++ 6.5.2-1/src/JsonSchema/Constraints/BaseConstraint.php	2025-09-09 09:42:27.000000000 +0000
@@ -2,15 +2,9 @@
 
 declare(strict_types=1);
 
-/*
- * This file is part of the JsonSchema package.
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
 namespace JsonSchema\Constraints;
 
+use const JSON_ERROR_NONE;
 use JsonSchema\ConstraintError;
 use JsonSchema\Entity\JsonPointer;
 use JsonSchema\Exception\InvalidArgumentException;
@@ -50,8 +44,8 @@ class BaseConstraint
         $name = $constraint->getValue();
         $error = [
             'property' => $this->convertJsonPointerIntoPropertyPath($path ?: new JsonPointer('')),
-            'pointer' => ltrim(strval($path ?: new JsonPointer('')), '#'),
-            'message' => ucfirst(vsprintf($message, array_map(function ($val) {
+            'pointer' => ltrim((string) ($path ?: new JsonPointer('')), '#'),
+            'message' => ucfirst(vsprintf($message, array_map(static function ($val) {
                 if (is_scalar($val)) {
                     return is_bool($val) ? var_export($val, true) : $val;
                 }
@@ -78,7 +72,7 @@ class BaseConstraint
         if ($errors) {
             $this->errors = array_merge($this->errors, $errors);
             $errorMask = &$this->errorMask;
-            array_walk($errors, function ($error) use (&$errorMask) {
+            array_walk($errors, static function ($error) use (&$errorMask) {
                 if (isset($error['context'])) {
                     $errorMask |= $error['context'];
                 }
@@ -95,10 +89,8 @@ class BaseConstraint
             return $this->errors;
         }
 
-        return array_filter($this->errors, function ($error) use ($errorContext) {
-            if ($errorContext & $error['context']) {
-                return true;
-            }
+        return array_filter($this->errors, static function ($error) use ($errorContext) {
+            return (bool) ($errorContext & $error['context']);
         });
     }
 
@@ -120,7 +112,7 @@ class BaseConstraint
     }
 
     /**
-     * Clears any reported errors.  Should be used between
+     * Clears any reported errors. Should be used between
      * multiple validation checks.
      */
     public function reset(): void
@@ -145,7 +137,7 @@ class BaseConstraint
     public static function arrayToObjectRecursive(array $array): object
     {
         $json = json_encode($array);
-        if (json_last_error() !== \JSON_ERROR_NONE) {
+        if (json_last_error() !== JSON_ERROR_NONE) {
             $message = 'Unable to encode schema array as JSON';
             if (function_exists('json_last_error_msg')) {
                 $message .= ': ' . json_last_error_msg();
@@ -153,7 +145,7 @@ class BaseConstraint
             throw new InvalidArgumentException($message);
         }
 
-        return (object) json_decode($json);
+        return (object) json_decode($json, false);
     }
 
     /**
@@ -164,13 +156,10 @@ class BaseConstraint
         return '~' . str_replace('~', '\\~', $pattern) . '~u';
     }
 
-    /**
-     * @return string property path
-     */
     protected function convertJsonPointerIntoPropertyPath(JsonPointer $pointer): string
     {
         $result = array_map(
-            function ($path) {
+            static function ($path) {
                 return sprintf(is_numeric($path) ? '[%d]' : '.%s', $path);
             },
             $pointer->getPropertyPaths()
diff -pruN 6.4.1-1/src/JsonSchema/Constraints/CollectionConstraint.php 6.5.2-1/src/JsonSchema/Constraints/CollectionConstraint.php
--- 6.4.1-1/src/JsonSchema/Constraints/CollectionConstraint.php	2025-04-04 13:08:07.000000000 +0000
+++ 6.5.2-1/src/JsonSchema/Constraints/CollectionConstraint.php	2025-09-09 09:42:27.000000000 +0000
@@ -13,6 +13,7 @@ namespace JsonSchema\Constraints;
 
 use JsonSchema\ConstraintError;
 use JsonSchema\Entity\JsonPointer;
+use JsonSchema\Tool\DeepComparer;
 
 /**
  * The CollectionConstraint Constraints, validates an array against a given schema
@@ -39,14 +40,14 @@ class CollectionConstraint extends Const
 
         // Verify uniqueItems
         if (isset($schema->uniqueItems) && $schema->uniqueItems) {
-            $unique = $value;
-            if (is_array($value) && count($value)) {
-                $unique = array_map(function ($e) {
-                    return var_export($e, true);
-                }, $value);
-            }
-            if (count(array_unique($unique)) != count($value)) {
-                $this->addError(ConstraintError::UNIQUE_ITEMS(), $path);
+            $count = count($value);
+            for ($x = 0; $x < $count - 1; $x++) {
+                for ($y = $x + 1; $y < $count; $y++) {
+                    if (DeepComparer::isEqual($value[$x], $value[$y])) {
+                        $this->addError(ConstraintError::UNIQUE_ITEMS(), $path);
+                        break 2;
+                    }
+                }
             }
         }
 
diff -pruN 6.4.1-1/src/JsonSchema/Constraints/Constraint.php 6.5.2-1/src/JsonSchema/Constraints/Constraint.php
--- 6.4.1-1/src/JsonSchema/Constraints/Constraint.php	2025-04-04 13:08:07.000000000 +0000
+++ 6.5.2-1/src/JsonSchema/Constraints/Constraint.php	2025-09-09 09:42:27.000000000 +0000
@@ -2,25 +2,13 @@
 
 declare(strict_types=1);
 
-/*
- * This file is part of the JsonSchema package.
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
 namespace JsonSchema\Constraints;
 
 use JsonSchema\Entity\JsonPointer;
 
-/**
- * The Base Constraints, all Validators should extend this class
- *
- * @author Robert Schönthal <seroscho@googlemail.com>
- * @author Bruno Prieto Reis <bruno.p.reis@gmail.com>
- */
 abstract class Constraint extends BaseConstraint implements ConstraintInterface
 {
+    /** @var string */
     protected $inlineSchemaProperty = '$schema';
 
     public const CHECK_MODE_NONE =             0x00000000;
@@ -48,14 +36,12 @@ abstract class Constraint extends BaseCo
             return $path;
         }
 
-        $path = $path->withPropertyPaths(
+        return $path->withPropertyPaths(
             array_merge(
                 $path->getPropertyPaths(),
                 [$i]
             )
         );
-
-        return $path;
     }
 
     /**
@@ -76,15 +62,22 @@ abstract class Constraint extends BaseCo
     /**
      * Validates an object
      *
-     * @param mixed $value
-     * @param mixed $schema
-     * @param mixed $properties
-     * @param mixed $additionalProperties
-     * @param mixed $patternProperties
+     * @param mixed         $value
+     * @param mixed         $schema
+     * @param mixed         $properties
+     * @param mixed         $additionalProperties
+     * @param mixed         $patternProperties
+     * @param array<string> $appliedDefaults
      */
-    protected function checkObject(&$value, $schema = null, ?JsonPointer $path = null, $properties = null,
-        $additionalProperties = null, $patternProperties = null, $appliedDefaults = []): void
-    {
+    protected function checkObject(
+        &$value,
+        $schema = null,
+        ?JsonPointer $path = null,
+        $properties = null,
+        $additionalProperties = null,
+        $patternProperties = null,
+        array $appliedDefaults = []
+    ): void {
         /** @var ObjectConstraint $validator */
         $validator = $this->factory->createInstanceFor('object');
         $validator->check($value, $schema, $path, $properties, $additionalProperties, $patternProperties, $appliedDefaults);
@@ -93,7 +86,7 @@ abstract class Constraint extends BaseCo
     }
 
     /**
-     * Validates the type of a property
+     * Validates the type of the value
      *
      * @param mixed $value
      * @param mixed $schema
@@ -114,7 +107,7 @@ abstract class Constraint extends BaseCo
      * @param mixed $schema
      * @param mixed $i
      */
-    protected function checkUndefined(&$value, $schema = null, ?JsonPointer $path = null, $i = null, $fromDefault = false): void
+    protected function checkUndefined(&$value, $schema = null, ?JsonPointer $path = null, $i = null, bool $fromDefault = false): void
     {
         /** @var UndefinedConstraint $validator */
         $validator = $this->factory->createInstanceFor('undefined');
diff -pruN 6.4.1-1/src/JsonSchema/Constraints/ObjectConstraint.php 6.5.2-1/src/JsonSchema/Constraints/ObjectConstraint.php
--- 6.4.1-1/src/JsonSchema/Constraints/ObjectConstraint.php	2025-04-04 13:08:07.000000000 +0000
+++ 6.5.2-1/src/JsonSchema/Constraints/ObjectConstraint.php	2025-09-09 09:42:27.000000000 +0000
@@ -2,37 +2,32 @@
 
 declare(strict_types=1);
 
-/*
- * This file is part of the JsonSchema package.
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
 namespace JsonSchema\Constraints;
 
 use JsonSchema\ConstraintError;
 use JsonSchema\Entity\JsonPointer;
 
-/**
- * The ObjectConstraint Constraints, validates an object against a given schema
- *
- * @author Robert Schönthal <seroscho@googlemail.com>
- * @author Bruno Prieto Reis <bruno.p.reis@gmail.com>
- */
 class ObjectConstraint extends Constraint
 {
     /**
-     * @var array List of properties to which a default value has been applied
+     * @var list<string> List of properties to which a default value has been applied
      */
     protected $appliedDefaults = [];
 
     /**
      * {@inheritdoc}
+     *
+     * @param list<string> $appliedDefaults
      */
-    public function check(&$element, $schema = null, ?JsonPointer $path = null, $properties = null,
-        $additionalProp = null, $patternProperties = null, $appliedDefaults = []): void
-    {
+    public function check(
+        &$element,
+        $schema = null,
+        ?JsonPointer $path = null,
+        $properties = null,
+        $additionalProp = null,
+        $patternProperties = null,
+        $appliedDefaults = []
+    ): void {
         if ($element instanceof UndefinedConstraint) {
             return;
         }
diff -pruN 6.4.1-1/src/JsonSchema/Constraints/UndefinedConstraint.php 6.5.2-1/src/JsonSchema/Constraints/UndefinedConstraint.php
--- 6.4.1-1/src/JsonSchema/Constraints/UndefinedConstraint.php	2025-04-04 13:08:07.000000000 +0000
+++ 6.5.2-1/src/JsonSchema/Constraints/UndefinedConstraint.php	2025-09-09 09:42:27.000000000 +0000
@@ -2,13 +2,6 @@
 
 declare(strict_types=1);
 
-/*
- * This file is part of the JsonSchema package.
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
 namespace JsonSchema\Constraints;
 
 use JsonSchema\ConstraintError;
@@ -18,24 +11,18 @@ use JsonSchema\Exception\ValidationExcep
 use JsonSchema\Tool\DeepCopy;
 use JsonSchema\Uri\UriResolver;
 
-/**
- * The UndefinedConstraint Constraints
- *
- * @author Robert Schönthal <seroscho@googlemail.com>
- * @author Bruno Prieto Reis <bruno.p.reis@gmail.com>
- */
 #[\AllowDynamicProperties]
 class UndefinedConstraint extends Constraint
 {
     /**
-     * @var array List of properties to which a default value has been applied
+     * @var list<string> List of properties to which a default value has been applied
      */
     protected $appliedDefaults = [];
 
     /**
      * {@inheritdoc}
-     */
-    public function check(&$value, $schema = null, ?JsonPointer $path = null, $i = null, $fromDefault = false): void
+     * */
+    public function check(&$value, $schema = null, ?JsonPointer $path = null, $i = null, bool $fromDefault = false): void
     {
         if (is_null($schema) || !is_object($schema)) {
             return;
@@ -72,9 +59,10 @@ class UndefinedConstraint extends Constr
         }
 
         // check object
-        if (LooseTypeCheck::isObject($value)) { // object processing should always be run on assoc arrays,
-                                                // so use LooseTypeCheck here even if CHECK_MODE_TYPE_CAST
-                                                // is not set (i.e. don't use $this->getTypeCheck() here).
+        if (LooseTypeCheck::isObject($value)) {
+            // object processing should always be run on assoc arrays,
+            // so use LooseTypeCheck here even if CHECK_MODE_TYPE_CAST
+            // is not set (i.e. don't use $this->getTypeCheck() here).
             $this->checkObject(
                 $value,
                 $schema,
diff -pruN 6.4.1-1/src/JsonSchema/Entity/JsonPointer.php 6.5.2-1/src/JsonSchema/Entity/JsonPointer.php
--- 6.4.1-1/src/JsonSchema/Entity/JsonPointer.php	2025-04-04 13:08:07.000000000 +0000
+++ 6.5.2-1/src/JsonSchema/Entity/JsonPointer.php	2025-09-09 09:42:27.000000000 +0000
@@ -146,7 +146,7 @@ class JsonPointer
     /**
      * Mark the value at this path as being set from a schema default
      */
-    public function setFromDefault()
+    public function setFromDefault(): void
     {
         $this->fromDefault = true;
     }
diff -pruN 6.4.1-1/src/JsonSchema/SchemaStorage.php 6.5.2-1/src/JsonSchema/SchemaStorage.php
--- 6.4.1-1/src/JsonSchema/SchemaStorage.php	2025-04-04 13:08:07.000000000 +0000
+++ 6.5.2-1/src/JsonSchema/SchemaStorage.php	2025-09-09 09:42:27.000000000 +0000
@@ -45,7 +45,7 @@ class SchemaStorage implements SchemaSto
     /**
      * {@inheritdoc}
      */
-    public function addSchema($id, $schema = null)
+    public function addSchema(string $id, $schema = null): void
     {
         if (is_null($schema) && $id !== self::INTERNAL_PROVIDED_SCHEMA_URI) {
             // if the schema was user-provided to Validator and is still null, then assume this is
@@ -62,14 +62,16 @@ class SchemaStorage implements SchemaSto
         // workaround for bug in draft-03 & draft-04 meta-schemas (id & $ref defined with incorrect format)
         // see https://github.com/json-schema-org/JSON-Schema-Test-Suite/issues/177#issuecomment-293051367
         if (is_object($schema) && property_exists($schema, 'id')) {
-            if ($schema->id == 'http://json-schema.org/draft-04/schema#') {
+            if ($schema->id === 'http://json-schema.org/draft-04/schema#') {
                 $schema->properties->id->format = 'uri-reference';
-            } elseif ($schema->id == 'http://json-schema.org/draft-03/schema#') {
+            } elseif ($schema->id === 'http://json-schema.org/draft-03/schema#') {
                 $schema->properties->id->format = 'uri-reference';
                 $schema->properties->{'$ref'}->format = 'uri-reference';
             }
         }
 
+        $this->scanForSubschemas($schema, $id);
+
         // resolve references
         $this->expandRefs($schema, $id);
 
@@ -79,39 +81,44 @@ class SchemaStorage implements SchemaSto
     /**
      * Recursively resolve all references against the provided base
      *
-     * @param mixed  $schema
-     * @param string $base
+     * @param mixed $schema
      */
-    private function expandRefs(&$schema, $base = null)
+    private function expandRefs(&$schema, ?string $parentId = null): void
     {
         if (!is_object($schema)) {
             if (is_array($schema)) {
                 foreach ($schema as &$member) {
-                    $this->expandRefs($member, $base);
+                    $this->expandRefs($member, $parentId);
                 }
             }
 
             return;
         }
 
-        if (property_exists($schema, 'id') && is_string($schema->id) && $base != $schema->id) {
-            $base = $this->uriResolver->resolve($schema->id, $base);
-        }
-
         if (property_exists($schema, '$ref') && is_string($schema->{'$ref'})) {
-            $refPointer = new JsonPointer($this->uriResolver->resolve($schema->{'$ref'}, $base));
+            $refPointer = new JsonPointer($this->uriResolver->resolve($schema->{'$ref'}, $parentId));
             $schema->{'$ref'} = (string) $refPointer;
         }
 
-        foreach ($schema as &$member) {
-            $this->expandRefs($member, $base);
+        foreach ($schema as $propertyName => &$member) {
+            if (in_array($propertyName, ['enum', 'const'])) {
+                // Enum and const don't allow $ref as a keyword, see https://github.com/json-schema-org/JSON-Schema-Test-Suite/pull/445
+                continue;
+            }
+
+            $childId = $parentId;
+            if (property_exists($schema, 'id') && is_string($schema->id) && $childId !== $schema->id) {
+                $childId = $this->uriResolver->resolve($schema->id, $childId);
+            }
+
+            $this->expandRefs($member, $childId);
         }
     }
 
     /**
      * {@inheritdoc}
      */
-    public function getSchema($id)
+    public function getSchema(string $id)
     {
         if (!array_key_exists($id, $this->schemas)) {
             $this->addSchema($id);
@@ -123,7 +130,7 @@ class SchemaStorage implements SchemaSto
     /**
      * {@inheritdoc}
      */
-    public function resolveRef($ref, $resolveStack = [])
+    public function resolveRef(string $ref, $resolveStack = [])
     {
         $jsonPointer = new JsonPointer($ref);
 
@@ -174,4 +181,32 @@ class SchemaStorage implements SchemaSto
 
         return $refSchema;
     }
+
+    /**
+     * @param mixed $schema
+     */
+    private function scanForSubschemas($schema, string $parentId): void
+    {
+        if (!$schema instanceof \stdClass  && !is_array($schema)) {
+            return;
+        }
+
+        foreach ($schema as $propertyName => $potentialSubSchema) {
+            if (!is_object($potentialSubSchema)) {
+                continue;
+            }
+
+            if (property_exists($potentialSubSchema, 'id') && is_string($potentialSubSchema->id) && property_exists($potentialSubSchema, 'type')) {
+                // Enum and const don't allow id as a keyword, see https://github.com/json-schema-org/JSON-Schema-Test-Suite/pull/471
+                if (in_array($propertyName, ['enum', 'const'])) {
+                    continue;
+                }
+
+                // Found sub schema
+                $this->addSchema($this->uriResolver->resolve($potentialSubSchema->id, $parentId), $potentialSubSchema);
+            }
+
+            $this->scanForSubschemas($potentialSubSchema, $parentId);
+        }
+    }
 }
diff -pruN 6.4.1-1/src/JsonSchema/SchemaStorageInterface.php 6.5.2-1/src/JsonSchema/SchemaStorageInterface.php
--- 6.4.1-1/src/JsonSchema/SchemaStorageInterface.php	2025-04-04 13:08:07.000000000 +0000
+++ 6.5.2-1/src/JsonSchema/SchemaStorageInterface.php	2025-09-09 09:42:27.000000000 +0000
@@ -9,28 +9,23 @@ interface SchemaStorageInterface
     /**
      * Adds schema with given identifier
      *
-     * @param string $id
      * @param object $schema
      */
-    public function addSchema($id, $schema = null);
+    public function addSchema(string $id, $schema = null): void;
 
     /**
      * Returns schema for given identifier, or null if it does not exist
      *
-     * @param string $id
-     *
      * @return object
      */
-    public function getSchema($id);
+    public function getSchema(string $id);
 
     /**
      * Returns schema for given reference with all sub-references resolved
      *
-     * @param string $ref
-     *
      * @return object
      */
-    public function resolveRef($ref);
+    public function resolveRef(string $ref);
 
     /**
      * Returns schema referenced by '$ref' property
diff -pruN 6.4.1-1/src/JsonSchema/Uri/Retrievers/Curl.php 6.5.2-1/src/JsonSchema/Uri/Retrievers/Curl.php
--- 6.4.1-1/src/JsonSchema/Uri/Retrievers/Curl.php	2025-04-04 13:08:07.000000000 +0000
+++ 6.5.2-1/src/JsonSchema/Uri/Retrievers/Curl.php	2025-09-09 09:42:27.000000000 +0000
@@ -53,7 +53,9 @@ class Curl extends AbstractRetriever
         $this->fetchMessageBody($response);
         $this->fetchContentType($response);
 
-        curl_close($ch);
+        if (PHP_VERSION_ID < 80000) {
+            curl_close($ch);
+        }
 
         return $this->messageBody;
     }
diff -pruN 6.4.1-1/src/JsonSchema/Uri/Retrievers/FileGetContents.php 6.5.2-1/src/JsonSchema/Uri/Retrievers/FileGetContents.php
--- 6.4.1-1/src/JsonSchema/Uri/Retrievers/FileGetContents.php	2025-04-04 13:08:07.000000000 +0000
+++ 6.5.2-1/src/JsonSchema/Uri/Retrievers/FileGetContents.php	2025-09-09 09:42:27.000000000 +0000
@@ -29,6 +29,10 @@ class FileGetContents extends AbstractRe
      */
     public function retrieve($uri)
     {
+        if (function_exists('http_clear_last_response_headers')) {
+            http_clear_last_response_headers();
+        }
+
         $errorMessage = null;
         set_error_handler(function ($errno, $errstr) use (&$errorMessage) {
             $errorMessage = $errstr;
@@ -51,12 +55,19 @@ class FileGetContents extends AbstractRe
         }
 
         $this->messageBody = $response;
-        if (!empty($http_response_header)) {
-            // $http_response_header cannot be tested, because it's defined in the method's local scope
-            // See http://php.net/manual/en/reserved.variables.httpresponseheader.php for more info.
-            $this->fetchContentType($http_response_header); // @codeCoverageIgnore
-        } else {                                            // @codeCoverageIgnore
-            // Could be a "file://" url or something else - fake up the response
+
+        if (function_exists('http_get_last_response_headers')) {
+            // Use http_get_last_response_headers() for compatibility with PHP 8.5+
+            // where $http_response_header is deprecated.
+            $httpResponseHeaders = http_get_last_response_headers();
+        } else {
+            /** @phpstan-ignore nullCoalesce.variable ($http_response_header can non-existing when no http request was done) */
+            $httpResponseHeaders = $http_response_header ?? [];
+        }
+
+        if (!empty($httpResponseHeaders)) {
+            $this->fetchContentType($httpResponseHeaders);
+        } else {
             $this->contentType = null;
         }
 
@@ -68,7 +79,7 @@ class FileGetContents extends AbstractRe
      *
      * @return bool Whether the Content-Type header was found or not
      */
-    private function fetchContentType(array $headers)
+    private function fetchContentType(array $headers): bool
     {
         foreach (array_reverse($headers) as $header) {
             if ($this->contentType = self::getContentTypeMatchInHeader($header)) {
diff -pruN 6.4.1-1/tests/ConstraintErrorTest.php 6.5.2-1/tests/ConstraintErrorTest.php
--- 6.4.1-1/tests/ConstraintErrorTest.php	2025-04-04 13:08:07.000000000 +0000
+++ 6.5.2-1/tests/ConstraintErrorTest.php	2025-09-09 09:42:27.000000000 +0000
@@ -1,11 +1,6 @@
 <?php
 
-/*
- * This file is part of the JsonSchema package.
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
+declare(strict_types=1);
 
 namespace JsonSchema\Tests;
 
@@ -24,7 +19,7 @@ class ConstraintErrorTest extends TestCa
     {
         $e = ConstraintError::MISSING_ERROR();
 
-        $this->expectException('\JsonSchema\Exception\InvalidArgumentException');
+        $this->expectException(\JsonSchema\Exception\InvalidArgumentException::class);
         $this->expectExceptionMessage('Missing error message for missingError');
 
         $e->getMessage();
diff -pruN 6.4.1-1/tests/Constraints/AdditionalPropertiesTest.php 6.5.2-1/tests/Constraints/AdditionalPropertiesTest.php
--- 6.4.1-1/tests/Constraints/AdditionalPropertiesTest.php	2025-04-04 13:08:07.000000000 +0000
+++ 6.5.2-1/tests/Constraints/AdditionalPropertiesTest.php	2025-09-09 09:42:27.000000000 +0000
@@ -1,11 +1,6 @@
 <?php
 
-/*
- * This file is part of the JsonSchema package.
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
+declare(strict_types=1);
 
 namespace JsonSchema\Tests\Constraints;
 
@@ -15,10 +10,9 @@ class AdditionalPropertiesTest extends B
 {
     protected $validateSchema = true;
 
-    public function getInvalidTests(): array
+    public function getInvalidTests(): \Generator
     {
-        return [
-            [
+        yield [
                 '{
                   "prop":"1",
                   "patternProp":"3",
@@ -49,8 +43,8 @@ class AdditionalPropertiesTest extends B
                         'context' => Validator::ERROR_DOCUMENT_VALIDATION
                     ]
                 ]
-            ],
-            [
+            ];
+        yield [
                 '{
                   "prop":"1",
                   "additionalProp":"2"
@@ -62,8 +56,8 @@ class AdditionalPropertiesTest extends B
                   },
                   "additionalProperties": false
                 }'
-            ],
-            [
+            ];
+        yield [
                 '{
                   "prop":"1",
                   "additionalProp":2
@@ -75,8 +69,8 @@ class AdditionalPropertiesTest extends B
                   },
                   "additionalProperties": {"type":"string"}
                 }'
-            ],
-            [
+            ];
+        yield [
                 '{
                   "prop":"1",
                   "additionalProp":2
@@ -88,8 +82,8 @@ class AdditionalPropertiesTest extends B
                   },
                   "additionalProperties": {"type":"string"}
                 }'
-            ],
-            [
+            ];
+        yield [
                 '{
                   "prop1": "a",
                   "prop2": "b"
@@ -100,8 +94,8 @@ class AdditionalPropertiesTest extends B
                     "type": "boolean"
                   }
                 }'
-            ],
-            [
+            ];
+        yield [
                 '{
                   "prop1": "a",
                   "prop2": "b"
@@ -110,14 +104,12 @@ class AdditionalPropertiesTest extends B
                   "type": "object",
                   "additionalProperties": false
                 }'
-            ],
-        ];
+            ];
     }
 
-    public function getValidTests(): array
+    public function getValidTests(): \Generator
     {
-        return [
-            [
+        yield [
                 '{
                   "prop":"1",
                   "additionalProp":"2"
@@ -128,8 +120,8 @@ class AdditionalPropertiesTest extends B
                     "prop":{"type":"string"}
                   }
                 }'
-            ],
-            [
+            ];
+        yield [
                 '{
                   "prop":"1",
                   "additionalProp":"2"
@@ -140,8 +132,8 @@ class AdditionalPropertiesTest extends B
                     "prop":{"type":"string"}
                   }
                 }'
-            ],
-            [
+        ];
+        yield [
                 '{
                   "prop":"1",
                   "additionalProp":"2"
@@ -153,8 +145,8 @@ class AdditionalPropertiesTest extends B
                   },
                   "additionalProperties": {"type":"string"}
                 }'
-            ],
-            [
+        ];
+        yield [
                 '{
                   "prop":"1",
                   "additionalProp":[]
@@ -166,8 +158,8 @@ class AdditionalPropertiesTest extends B
                   },
                   "additionalProperties": true
                 }'
-            ],
-            [
+        ];
+        yield [
                 '{
                   "prop1": "a",
                   "prop2": "b"
@@ -178,8 +170,8 @@ class AdditionalPropertiesTest extends B
                     "type": "string"
                   }
                 }'
-            ],
-            [
+        ];
+        yield [
                 '{
                   "prop1": "a",
                   "prop2": "b"
@@ -188,8 +180,8 @@ class AdditionalPropertiesTest extends B
                   "type": "object",
                   "additionalProperties": true
                 }'
-            ],
-            'additional property casted into int when actually is numeric string (#784)' => [
+        ];
+        yield 'additional property casted into int when actually is numeric string (#784)' => [
                 '{
                     "prop1": {
                         "123": "a"
@@ -206,7 +198,6 @@ class AdditionalPropertiesTest extends B
                         }
                     }
                 }'
-            ],
-        ];
+            ];
     }
 }
diff -pruN 6.4.1-1/tests/Constraints/ArraysTest.php 6.5.2-1/tests/Constraints/ArraysTest.php
--- 6.4.1-1/tests/Constraints/ArraysTest.php	2025-04-04 13:08:07.000000000 +0000
+++ 6.5.2-1/tests/Constraints/ArraysTest.php	2025-09-09 09:42:27.000000000 +0000
@@ -1,22 +1,17 @@
 <?php
 
-/*
- * This file is part of the JsonSchema package.
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
+declare(strict_types=1);
 
 namespace JsonSchema\Tests\Constraints;
 
 class ArraysTest extends BaseTestCase
 {
+    /** @var bool */
     protected $validateSchema = true;
 
-    public function getInvalidTests(): array
+    public function getInvalidTests(): \Generator
     {
-        return [
-            [
+        yield [
                 '{
                   "array":[1,2,"a"]
                 }',
@@ -29,8 +24,8 @@ class ArraysTest extends BaseTestCase
                     }
                   }
                 }'
-            ],
-            [
+            ];
+        yield [
                 '{
                   "array":[1,2,"a"]
                 }',
@@ -44,8 +39,8 @@ class ArraysTest extends BaseTestCase
                     }
                   }
                 }'
-            ],
-            [
+        ];
+        yield [
                 '{
                   "array":[1,2,null]
                 }',
@@ -58,8 +53,8 @@ class ArraysTest extends BaseTestCase
                     }
                   }
                 }'
-            ],
-            [
+        ];
+        yield [
                 '{"data": [1, 2, 3, "foo"]}',
                 '{
                     "type": "object",
@@ -71,8 +66,8 @@ class ArraysTest extends BaseTestCase
                         }
                     }
                 }'
-            ],
-            [ // Test array items.enum where type string fail validation if value(s) is/are not in items.enum
+        ];
+        yield 'Test array items.enum where type string fail validation if value(s) is/are not in items.enum' => [
                 '{"data": ["a", "b"]}',
                 '{
                     "type": "object",
@@ -86,8 +81,8 @@ class ArraysTest extends BaseTestCase
                         }
                     }
                 }'
-            ],
-            [ // Test array items.enum where type integer fail validation if value(s) is/are not in items.enum
+        ];
+        yield 'Test array items.enum where type integer fail validation if value(s) is/are not in items.enum' => [
                 '{"data": [1, 2]}',
                 '{
                     "type": "object",
@@ -101,8 +96,8 @@ class ArraysTest extends BaseTestCase
                         }
                     }
                 }'
-            ],
-            [ // Test array items.enum where type number fail validation if value(s) is/are not in items.enum
+        ];
+        yield 'Test array items.enum where type number fail validation if value(s) is/are not in items.enum' => [
                 '{"data": [1.25, 2.25]}',
                 '{
                     "type": "object",
@@ -116,8 +111,8 @@ class ArraysTest extends BaseTestCase
                         }
                     }
                 }'
-            ],
-            [
+        ];
+        yield [
                 '{"data": [{"not_a_string_but_object":"string_but_in_object"}]}',
                 '{
                     "type": "object",
@@ -129,14 +124,12 @@ class ArraysTest extends BaseTestCase
                         }
                     }
                 }'
-            ]
-        ];
+            ];
     }
 
-    public function getValidTests(): array
+    public function getValidTests(): \Generator
     {
-        return [
-            [
+        yield [
                 '{
                   "array":[1,2,"a"]
                 }',
@@ -146,8 +139,8 @@ class ArraysTest extends BaseTestCase
                     "array":{"type":"array"}
                   }
                 }'
-            ],
-            [
+        ];
+        yield [
                 '{
                   "array":[1,2,"a"]
                 }',
@@ -161,8 +154,8 @@ class ArraysTest extends BaseTestCase
                     }
                   }
                 }'
-            ],
-            [
+        ];
+        yield [
                 '{"data": [1, 2, 3, 4]}',
                 '{
                     "type": "object",
@@ -174,8 +167,8 @@ class ArraysTest extends BaseTestCase
                         }
                     }
                 }'
-            ],
-            [
+        ];
+        yield [
                 '{"data": [1, "foo", false]}',
                 '{
                     "type": "object",
@@ -186,8 +179,8 @@ class ArraysTest extends BaseTestCase
                         }
                     }
                 }'
-            ],
-            [
+        ];
+        yield [
                 '{"data": [1, "foo", false]}',
                 '{
                     "type": "object",
@@ -198,8 +191,8 @@ class ArraysTest extends BaseTestCase
                         }
                     }
                 }'
-            ],
-            [
+        ];
+        yield [
                 '{"data": [1, 2, 3, 4, 5]}',
                 '{
                     "type": "object",
@@ -210,8 +203,8 @@ class ArraysTest extends BaseTestCase
                         }
                     }
                 }'
-            ],
-            [ // test more schema items than array items
+        ];
+        yield 'test more schema items than array items' => [
                 '{"data": [1, 2]}',
                 '{
                     "type": "object",
@@ -226,8 +219,8 @@ class ArraysTest extends BaseTestCase
                         }
                     }
                 }'
-            ],
-            [ // Test array items.enum where type string passes validation if value(s) is/are in items.enum
+        ];
+        yield 'Test array items.enum where type string passes validation if value(s) is/are in items.enum' => [
                 '{"data": ["c", "c", "b"]}',
                 '{
                     "type": "object",
@@ -241,8 +234,8 @@ class ArraysTest extends BaseTestCase
                         }
                     }
                 }'
-            ],
-            [ // Test array items.enum where type integer passes validation if value(s) is/are in items.enum
+        ];
+        yield 'Test array items.enum where type integer passes validation if value(s) is/are in items.enum' => [
                 '{"data": [1, 1, 2]}',
                 '{
                     "type": "object",
@@ -256,8 +249,8 @@ class ArraysTest extends BaseTestCase
                         }
                     }
                 }'
-            ],
-            [ // Test array items.enum where type number passes validation if value(s) is/are in items.enum
+        ];
+        yield 'Test array items.enum where type number passes validation if value(s) is/are in items.enum' => [
                 '{"data": [1.25, 1.25, 2.25]}',
                 '{
                     "type": "object",
@@ -271,17 +264,6 @@ class ArraysTest extends BaseTestCase
                         }
                     }
                 }'
-            ],
-            'items: true passes validation' => [
-                'input' => <<<JSON
-                    [1, 1.2, "12"]
-JSON
-                ,
-                'schema' => <<<JSON
-                    { "type": "array", "items": true }
-JSON
-                ,
-            ],
         ];
     }
 }
diff -pruN 6.4.1-1/tests/Constraints/BaseTestCase.php 6.5.2-1/tests/Constraints/BaseTestCase.php
--- 6.4.1-1/tests/Constraints/BaseTestCase.php	2025-04-04 13:08:07.000000000 +0000
+++ 6.5.2-1/tests/Constraints/BaseTestCase.php	2025-09-09 09:42:27.000000000 +0000
@@ -1,23 +1,16 @@
 <?php
 
-/*
- * This file is part of the JsonSchema package.
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
+declare(strict_types=1);
 
 namespace JsonSchema\Tests\Constraints;
 
+use Generator;
 use JsonSchema\Constraints\Constraint;
 use JsonSchema\Constraints\Factory;
 use JsonSchema\SchemaStorage;
 use JsonSchema\Uri\UriResolver;
 use JsonSchema\Validator;
 
-/**
- * @package JsonSchema\Tests\Constraints
- */
 abstract class BaseTestCase extends VeryBaseTestCase
 {
     protected $schemaSpec = 'http://json-schema.org/draft-04/schema#';
@@ -25,25 +18,28 @@ abstract class BaseTestCase extends Very
 
     /**
      * @dataProvider getInvalidTests
+     *
+     * @param ?int-mask-of<Constraint::CHECK_MODE_*> $checkMode
      */
-    public function testInvalidCases($input, $schema, $checkMode = Constraint::CHECK_MODE_NORMAL, $errors = []): void
+    public function testInvalidCases(string $input, string $schema, ?int $checkMode = Constraint::CHECK_MODE_NORMAL, array $errors = []): void
     {
-        $checkMode = $checkMode === null ? Constraint::CHECK_MODE_NORMAL : $checkMode;
+        $checkMode = $checkMode ?? Constraint::CHECK_MODE_NORMAL;
         if ($this->validateSchema) {
             $checkMode |= Constraint::CHECK_MODE_VALIDATE_SCHEMA;
         }
 
-        $schemaStorage = new SchemaStorage($this->getUriRetrieverMock(json_decode($schema)));
-        $schema = $schemaStorage->getSchema('http://www.my-domain.com/schema.json');
+        $schema = json_decode($schema, false);
+        $schemaStorage = new SchemaStorage($this->getUriRetrieverMock($schema));
+        $schema = $schemaStorage->getSchema($schema->id ?? 'http://www.my-domain.com/schema.json');
         if (is_object($schema) && !isset($schema->{'$schema'})) {
             $schema->{'$schema'} = $this->schemaSpec;
         }
 
         $validator = new Validator(new Factory($schemaStorage, null, $checkMode));
-        $checkValue = json_decode($input);
+        $checkValue = json_decode($input, false);
         $errorMask = $validator->validate($checkValue, $schema);
 
-        $this->assertTrue((bool) ($errorMask & Validator::ERROR_DOCUMENT_VALIDATION));
+        $this->assertTrue((bool) ($errorMask & Validator::ERROR_DOCUMENT_VALIDATION), 'Document is invalid');
         $this->assertGreaterThan(0, $validator->numErrors());
 
         if ([] !== $errors) {
@@ -54,10 +50,12 @@ abstract class BaseTestCase extends Very
 
     /**
      * @dataProvider getInvalidForAssocTests
+     *
+     * @param ?int-mask-of<Constraint::CHECK_MODE_*> $checkMode
      */
-    public function testInvalidCasesUsingAssoc($input, $schema, $checkMode = Constraint::CHECK_MODE_TYPE_CAST, $errors = []): void
+    public function testInvalidCasesUsingAssoc(string $input, string $schema, ?int $checkMode = Constraint::CHECK_MODE_TYPE_CAST, array $errors = []): void
     {
-        $checkMode = $checkMode === null ? Constraint::CHECK_MODE_TYPE_CAST : $checkMode;
+        $checkMode = $checkMode ?? Constraint::CHECK_MODE_TYPE_CAST;
         if ($this->validateSchema) {
             $checkMode |= Constraint::CHECK_MODE_VALIDATE_SCHEMA;
         }
@@ -65,8 +63,9 @@ abstract class BaseTestCase extends Very
             $this->markTestSkipped('Test indicates that it is not for "CHECK_MODE_TYPE_CAST"');
         }
 
-        $schemaStorage = new SchemaStorage($this->getUriRetrieverMock(json_decode($schema)));
-        $schema = $schemaStorage->getSchema('http://www.my-domain.com/schema.json');
+        $schema = json_decode($schema, false);
+        $schemaStorage = new SchemaStorage($this->getUriRetrieverMock($schema));
+        $schema = $schemaStorage->getSchema($schema->id ?? 'http://www.my-domain.com/schema.json');
         if (is_object($schema) && !isset($schema->{'$schema'})) {
             $schema->{'$schema'} = $this->schemaSpec;
         }
@@ -86,20 +85,24 @@ abstract class BaseTestCase extends Very
 
     /**
      * @dataProvider getValidTests
+     *
+     * @param ?int-mask-of<Constraint::CHECK_MODE_*> $checkMode
      */
-    public function testValidCases($input, $schema, $checkMode = Constraint::CHECK_MODE_NORMAL): void
+    public function testValidCases(string $input, string $schema, ?int $checkMode = Constraint::CHECK_MODE_NORMAL): void
     {
         if ($this->validateSchema) {
             $checkMode |= Constraint::CHECK_MODE_VALIDATE_SCHEMA;
         }
-        $schemaStorage = new SchemaStorage($this->getUriRetrieverMock(json_decode($schema)));
-        $schema = $schemaStorage->getSchema('http://www.my-domain.com/schema.json');
+
+        $schema = json_decode($schema, false);
+        $schemaStorage = new SchemaStorage($this->getUriRetrieverMock($schema));
+        $schema = $schemaStorage->getSchema($schema->id ?? 'http://www.my-domain.com/schema.json');
         if (is_object($schema) && !isset($schema->{'$schema'})) {
             $schema->{'$schema'} = $this->schemaSpec;
         }
 
         $validator = new Validator(new Factory($schemaStorage, null, $checkMode));
-        $checkValue = json_decode($input);
+        $checkValue = json_decode($input, false);
         $errorMask = $validator->validate($checkValue, $schema);
         $this->assertEquals(0, $errorMask);
 
@@ -108,8 +111,10 @@ abstract class BaseTestCase extends Very
 
     /**
      * @dataProvider getValidForAssocTests
+     *
+     * @param ?int-mask-of<Constraint::CHECK_MODE_*> $checkMode
      */
-    public function testValidCasesUsingAssoc($input, $schema, $checkMode = Constraint::CHECK_MODE_TYPE_CAST): void
+    public function testValidCasesUsingAssoc(string $input, string $schema, ?int $checkMode = Constraint::CHECK_MODE_TYPE_CAST): void
     {
         if ($this->validateSchema) {
             $checkMode |= Constraint::CHECK_MODE_VALIDATE_SCHEMA;
@@ -118,9 +123,9 @@ abstract class BaseTestCase extends Very
             $this->markTestSkipped('Test indicates that it is not for "CHECK_MODE_TYPE_CAST"');
         }
 
-        $schema = json_decode($schema);
+        $schema = json_decode($schema, false);
         $schemaStorage = new SchemaStorage($this->getUriRetrieverMock($schema), new UriResolver());
-        $schema = $schemaStorage->getSchema('http://www.my-domain.com/schema.json');
+        $schema = $schemaStorage->getSchema($schema->id ?? 'http://www.my-domain.com/schema.json');
         if (is_object($schema) && !isset($schema->{'$schema'})) {
             $schema->{'$schema'} = $this->schemaSpec;
         }
@@ -129,21 +134,31 @@ abstract class BaseTestCase extends Very
         $validator = new Validator(new Factory($schemaStorage, null, $checkMode));
 
         $errorMask = $validator->validate($value, $schema);
-        $this->assertEquals(0, $errorMask);
+        $this->assertEquals(0, $errorMask, $this->validatorErrorsToString($validator));
         $this->assertTrue($validator->isValid(), print_r($validator->getErrors(), true));
     }
 
-    abstract public function getValidTests(): array;
+    abstract public function getValidTests(): Generator;
 
-    public function getValidForAssocTests(): array
+    public function getValidForAssocTests(): Generator
     {
-        return $this->getValidTests();
+        yield from $this->getValidTests();
     }
 
-    abstract public function getInvalidTests(): array;
+    abstract public function getInvalidTests(): Generator;
+
+    public function getInvalidForAssocTests(): Generator
+    {
+        yield from $this->getInvalidTests();
+    }
 
-    public function getInvalidForAssocTests(): array
+    private function validatorErrorsToString(Validator $validator): string
     {
-        return $this->getInvalidTests();
+        return implode(
+            ', ',
+            array_map(
+                static function (array $error) { return $error['message']; }, $validator->getErrors()
+            )
+        );
     }
 }
diff -pruN 6.4.1-1/tests/Constraints/BasicTypesTest.php 6.5.2-1/tests/Constraints/BasicTypesTest.php
--- 6.4.1-1/tests/Constraints/BasicTypesTest.php	2025-04-04 13:08:07.000000000 +0000
+++ 6.5.2-1/tests/Constraints/BasicTypesTest.php	2025-09-09 09:42:27.000000000 +0000
@@ -1,150 +1,143 @@
 <?php
 
-/*
- * This file is part of the JsonSchema package.
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
+declare(strict_types=1);
 
 namespace JsonSchema\Tests\Constraints;
 
 class BasicTypesTest extends BaseTestCase
 {
+    /** @var string */
     protected $schemaSpec = 'http://json-schema.org/draft-03/schema#';
+    /** @var bool */
     protected $validateSchema = true;
 
-    public function getInvalidTests(): array
+    public function getInvalidTests(): \Generator
     {
-        return [
-            [
-                '{
-                  "string":null
-                }',
-                '{
-                  "type":"object",
-                  "properties": {
-                    "string":{"type":"string"}
-                  },
-                  "additionalProperties":false
-                }'
-            ],
-            [
-                '{
-                  "number":null
-                }',
-                '{
-                  "type":"object",
-                  "properties": {
-                    "number":{"type":"number"}
-                  },
-                  "additionalProperties":false
-                }'
-            ],
-            [
-                '{
-                  "integer":null
-                }',
-                '{
-                  "type":"object",
-                  "properties": {
-                    "integer":{"type":"integer"}
-                  },
-                  "additionalProperties":false
-                }'
-            ],
-            [
-                '{
-                  "boolean":null
-                }',
-                '{
-                  "type":"object",
-                  "properties": {
-                    "boolean":{"type":"boolean"}
-                  },
-                  "additionalProperties":false
-                }'
-            ],
-            [
-                '{
-                  "object":null
-                }',
-                '{
-                  "type":"object",
-                  "properties": {
-                    "object":{"type":"object"}
-                  },
-                  "additionalProperties":false
-                }'
-            ],
-            [
-                '{
-                  "array":null
-                }',
-                '{
-                  "type":"object",
-                  "properties": {
-                    "array":{"type":"array"}
-                  },
-                  "additionalProperties":false
-                }'
-            ],
-            [
-                '{
-                  "null":1
-                }',
-                '{
-                  "type":"object",
-                  "properties": {
-                    "null":{"type":"null"}
-                  },
-                  "additionalProperties":false
-                }'
-            ]
+        yield [
+            '{
+              "string":null
+            }',
+            '{
+              "type":"object",
+              "properties": {
+                "string":{"type":"string"}
+              },
+              "additionalProperties":false
+            }'
         ];
+        yield [
+            '{
+              "number":null
+            }',
+            '{
+              "type":"object",
+              "properties": {
+                "number":{"type":"number"}
+              },
+              "additionalProperties":false
+            }'
+        ];
+        yield [
+            '{
+              "integer":null
+            }',
+            '{
+              "type":"object",
+              "properties": {
+                "integer":{"type":"integer"}
+              },
+              "additionalProperties":false
+            }'
+        ];
+        yield [
+            '{
+              "boolean":null
+            }',
+            '{
+              "type":"object",
+              "properties": {
+                "boolean":{"type":"boolean"}
+              },
+              "additionalProperties":false
+            }'
+        ];
+        yield [
+            '{
+              "object":null
+            }',
+            '{
+              "type":"object",
+              "properties": {
+                "object":{"type":"object"}
+              },
+              "additionalProperties":false
+            }'
+        ];
+        yield [
+            '{
+              "array":null
+            }',
+            '{
+              "type":"object",
+              "properties": {
+                "array":{"type":"array"}
+              },
+              "additionalProperties":false
+            }'
+        ];
+        yield [
+            '{
+              "null":1
+            }',
+            '{
+              "type":"object",
+              "properties": {
+                "null":{"type":"null"}
+              },
+              "additionalProperties":false
+            }'
+            ];
     }
 
-    public function getValidTests(): array
+    public function getValidTests(): \Generator
     {
-        return [
-            [
-                '{
-                  "string":"string test",
-                  "number":1,
-                  "integer":1,
-                  "boolean":true,
-                  "object":{},
-                  "array":[],
-                  "null":null,
-                  "any": "string",
-                  "any1": 2.6,
-                  "any2": 4,
-                  "any3": false,
-                  "any4": {},
-                  "any5": [],
-                  "any6": null
-                }',
-                '{
-                  "type":"object",
-                  "properties":{
-                    "string":{"type":"string"},
-                    "number":{"type":"number"},
-                    "integer":{"type":"integer"},
-                    "boolean":{"type":"boolean"},
-                    "object":{"type":"object"},
-                    "array":{"type":"array"},
-                    "null":{"type":"null"},
-                    "any": {"type":"any"},
-                    "any1": {"type":"any"},
-                    "any2": {"type":"any"},
-                    "any3": {"type":"any"},
-                    "any4": {"type":"any"},
-                    "any5": {"type":"any"},
-                    "any6": {"type":"any"}
-                  },
-                  "additionalProperties":false
-                }'
-            ]
+        yield [
+            '{
+              "string":"string test",
+              "number":1,
+              "integer":1,
+              "boolean":true,
+              "object":{},
+              "array":[],
+              "null":null,
+              "any": "string",
+              "any1": 2.6,
+              "any2": 4,
+              "any3": false,
+              "any4": {},
+              "any5": [],
+              "any6": null
+            }',
+            '{
+              "type":"object",
+              "properties":{
+                "string":{"type":"string"},
+                "number":{"type":"number"},
+                "integer":{"type":"integer"},
+                "boolean":{"type":"boolean"},
+                "object":{"type":"object"},
+                "array":{"type":"array"},
+                "null":{"type":"null"},
+                "any": {"type":"any"},
+                "any1": {"type":"any"},
+                "any2": {"type":"any"},
+                "any3": {"type":"any"},
+                "any4": {"type":"any"},
+                "any5": {"type":"any"},
+                "any6": {"type":"any"}
+              },
+              "additionalProperties":false
+            }'
         ];
     }
 }
diff -pruN 6.4.1-1/tests/Constraints/CoerciveTest.php 6.5.2-1/tests/Constraints/CoerciveTest.php
--- 6.4.1-1/tests/Constraints/CoerciveTest.php	2025-04-04 13:08:07.000000000 +0000
+++ 6.5.2-1/tests/Constraints/CoerciveTest.php	2025-09-09 09:42:27.000000000 +0000
@@ -1,11 +1,6 @@
 <?php
 
-/*
- * This file is part of the JsonSchema package.
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
+declare(strict_types=1);
 
 namespace JsonSchema\Tests\Constraints;
 
diff -pruN 6.4.1-1/tests/Constraints/ConstTest.php 6.5.2-1/tests/Constraints/ConstTest.php
--- 6.4.1-1/tests/Constraints/ConstTest.php	2025-04-04 13:08:07.000000000 +0000
+++ 6.5.2-1/tests/Constraints/ConstTest.php	2025-09-09 09:42:27.000000000 +0000
@@ -1,53 +1,49 @@
 <?php
 
-/*
- * This file is part of the JsonSchema package.
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
+declare(strict_types=1);
 
 namespace JsonSchema\Tests\Constraints;
 
 class ConstTest extends BaseTestCase
 {
+    /** @var string */
     protected $schemaSpec = 'http://json-schema.org/draft-06/schema#';
+    /** @var bool */
     protected $validateSchema = true;
 
-    public function getInvalidTests(): array
+    public function getInvalidTests(): \Generator
     {
-        return [
-            'Object with inner string value' => [
-                '{"value":"foo"}',
-                '{
-                  "type":"object",
-                  "properties":{
-                    "value":{"type":"string","const":"bar"}
-                  },
-                  "additionalProperties":false
-                }'
-            ],
-            'Object with inner integer value' => [
-                '{"value":5}',
-                '{
-                  "type":"object",
-                  "properties":{
-                    "value":{"type":"integer","const":6}
-                  },
-                  "additionalProperties":false
-                }'
-            ],
-            'Object with inner boolean value' => [
-                '{"value":false}',
-                '{
-                  "type":"object",
-                  "properties":{
-                    "value":{"type":"boolean","const":true}
-                  },
-                  "additionalProperties":false
-                }'
-            ],
-            'Object with inner numerical string value' => [
+        yield 'Object with inner string value' => [
+            '{"value":"foo"}',
+            '{
+              "type":"object",
+              "properties":{
+                "value":{"type":"string","const":"bar"}
+              },
+              "additionalProperties":false
+            }'
+        ];
+        yield 'Object with inner integer value' => [
+            '{"value":5}',
+            '{
+              "type":"object",
+              "properties":{
+                "value":{"type":"integer","const":6}
+              },
+              "additionalProperties":false
+            }'
+        ];
+        yield 'Object with inner boolean value' => [
+            '{"value":false}',
+            '{
+              "type":"object",
+              "properties":{
+                "value":{"type":"boolean","const":true}
+              },
+              "additionalProperties":false
+            }'
+        ];
+        yield 'Object with inner numerical string value' => [
                 '{
                     "value": {
                         "foo": "12"
@@ -64,54 +60,52 @@ class ConstTest extends BaseTestCase
                         }
                     }
                 }'
-            ]
-        ];
+            ];
     }
 
-    public function getValidTests(): array
+    public function getValidTests(): \Generator
     {
-        return [
-            'String value' => [
-                '{"value":"bar"}',
-                '{
-                  "type":"object",
-                  "properties":{
-                    "value":{"type":"string","const":"bar"}
-                  },
-                  "additionalProperties":false
-                }'
-            ],
-            'Boolean(false) value' => [
-                '{"value":false}',
-                '{
-                  "type":"object",
-                  "properties":{
-                    "value":{"type":"boolean","const":false}
-                  },
-                  "additionalProperties":false
-                }'
-            ],
-            'Boolean(true) value' => [
-                '{"value":true}',
-                '{
-                  "type":"object",
-                  "properties":{
-                    "value":{"type":"boolean","const":true}
-                  },
-                  "additionalProperties":false
-                }'
-            ],
-            'Integer value' => [
-                '{"value":5}',
-                '{
-                  "type":"object",
-                  "properties":{
-                    "value":{"type":"integer","const":5}
-                  },
-                  "additionalProperties":false
-                }'
-            ],
-            'Object with inner integer value' => [
+        yield 'String value' => [
+            '{"value":"bar"}',
+            '{
+              "type":"object",
+              "properties":{
+                "value":{"type":"string","const":"bar"}
+              },
+              "additionalProperties":false
+            }'
+        ];
+        yield 'Boolean(false) value' => [
+            '{"value":false}',
+            '{
+              "type":"object",
+              "properties":{
+                "value":{"type":"boolean","const":false}
+              },
+              "additionalProperties":false
+            }'
+        ];
+        yield 'Boolean(true) value' => [
+            '{"value":true}',
+            '{
+              "type":"object",
+              "properties":{
+                "value":{"type":"boolean","const":true}
+              },
+              "additionalProperties":false
+            }'
+        ];
+        yield 'Integer value' => [
+            '{"value":5}',
+            '{
+              "type":"object",
+              "properties":{
+                "value":{"type":"integer","const":5}
+              },
+              "additionalProperties":false
+            }'
+        ];
+        yield 'Object with inner integer value' => [
                 '{
                     "value": {
                         "foo": 12
@@ -121,14 +115,13 @@ class ConstTest extends BaseTestCase
                     "type": "object",
                     "properties": {
                         "value": {
-                            "type": "any", 
+                            "type": "object",
                             "const": {
                                     "foo": 12
                             }
                         }
                     }
                 }'
-            ]
-        ];
+            ];
     }
 }
diff -pruN 6.4.1-1/tests/Constraints/DefaultPropertiesTest.php 6.5.2-1/tests/Constraints/DefaultPropertiesTest.php
--- 6.4.1-1/tests/Constraints/DefaultPropertiesTest.php	2025-04-04 13:08:07.000000000 +0000
+++ 6.5.2-1/tests/Constraints/DefaultPropertiesTest.php	2025-09-09 09:42:27.000000000 +0000
@@ -1,11 +1,6 @@
 <?php
 
-/*
- * This file is part of the JsonSchema package.
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
+declare(strict_types=1);
 
 namespace JsonSchema\Tests\Constraints;
 
diff -pruN 6.4.1-1/tests/Constraints/DependenciesTest.php 6.5.2-1/tests/Constraints/DependenciesTest.php
--- 6.4.1-1/tests/Constraints/DependenciesTest.php	2025-04-04 13:08:07.000000000 +0000
+++ 6.5.2-1/tests/Constraints/DependenciesTest.php	2025-09-09 09:42:27.000000000 +0000
@@ -1,151 +1,144 @@
 <?php
 
-/*
- * This file is part of the JsonSchema package.
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
+declare(strict_types=1);
 
 namespace JsonSchema\Tests\Constraints;
 
 class DependenciesTest extends BaseTestCase
 {
+    /** @var string */
     protected $schemaSpec = 'http://json-schema.org/draft-03/schema#';
+    /** @var bool */
     protected $validateSchema = true;
 
-    public function getInvalidTests(): array
+    public function getInvalidTests(): \Generator
     {
-        return [
-            [
-                '{"bar": 1}',
-                '{
-                    "dependencies": {"bar": "foo"}
-                }'
-            ],
-            [
-                '{"bar": 1}',
-                '{
-                    "dependencies": {"bar": ["foo"]}
-                }'
-            ],
-            [
-                '{"bar": 1, "foo": 1}',
-                '{
-                    "dependencies": {"bar": ["foo", "baz"]}
-                }'
-            ],
-            [
-                '{"bar": 1, "foo": 1}',
-                '{
-                    "dependencies": {"bar": {
-                        "properties": {
-                            "foo": {"type": "string"}
-                        }
-                    }}
-                }'
-            ],
-            [
-                '{"bar": 1}',
-                '{
-                    "dependencies": {"bar": {
-                        "properties": {
-                            "foo": {"type": "integer", "required": true}
-                        }
-                    }}
-                }'
-            ],
-            [
-                '{"bar": 1}',
-                '{
-                    "dependencies": {"bar": {
-                        "properties": {
-                            "foo": {"type": "integer"}
-                        },
-                        "required": ["foo"]
-                    }}
-                }'
-            ],
-            [
-                '{"bar": true, "foo": "ick"}',
-                '{
-                    "dependencies": {"bar": {
-                        "properties": {
-                            "bar": {"type": "integer"},
-                            "foo": {"type": "integer"}
-                        }
-                    }}
-                }'
-            ]
+        yield [
+            '{"bar": 1}',
+            '{
+                "dependencies": {"bar": "foo"}
+            }'
+        ];
+        yield [
+            '{"bar": 1}',
+            '{
+                "dependencies": {"bar": ["foo"]}
+            }'
+        ];
+        yield [
+            '{"bar": 1, "foo": 1}',
+            '{
+                "dependencies": {"bar": ["foo", "baz"]}
+            }'
+        ];
+        yield [
+            '{"bar": 1, "foo": 1}',
+            '{
+                "dependencies": {"bar": {
+                    "properties": {
+                        "foo": {"type": "string"}
+                    }
+                }}
+            }'
+        ];
+        yield [
+            '{"bar": 1}',
+            '{
+                "dependencies": {"bar": {
+                    "properties": {
+                        "foo": {"type": "integer", "required": true}
+                    }
+                }}
+            }'
+        ];
+        yield [
+            '{"bar": 1}',
+            '{
+                "dependencies": {"bar": {
+                    "properties": {
+                        "foo": {"type": "integer"}
+                    },
+                    "required": ["foo"]
+                }}
+            }'
+        ];
+        yield [
+            '{"bar": true, "foo": "ick"}',
+            '{
+                "dependencies": {"bar": {
+                    "properties": {
+                        "bar": {"type": "integer"},
+                        "foo": {"type": "integer"}
+                    }
+                }}
+            }'
         ];
     }
 
-    public function getValidTests(): array
+    public function getValidTests(): \Generator
     {
-        return [
-            [
-                '{}',
-                '{
-                    "dependencies": {"bar": "foo"}
-                }'
-            ],
-            [
-                '{"foo": 1}',
-                '{
-                    "dependencies": {"bar": "foo"}
-                }'
-            ],
-            [
-                '"foo"',
-                '{
-                    "dependencies": {"bar": "foo"}
-                }'
-            ],
-            [
-                '{"bar": 1, "foo": 1}',
-                '{
-                    "dependencies": {"bar": "foo"}
-                }'
-            ],
-            [
-                '{"bar": 1, "foo": 1, "baz": 1}',
-                '{
-                    "dependencies": {"bar": ["foo", "baz"]}
-                }'
-            ],
-            [
-                '{}',
-                '{
-                    "dependencies": {"bar": ["foo", "baz"]}
-                }'
-            ],
-            [
-                '{"foo": 1, "baz": 1}',
-                '{
-                    "dependencies": {"bar": ["foo", "baz"]}
-                }'
-            ],
-            [
-                '{"bar": 1}',
-                '{
-                    "dependencies": {"bar": {
-                        "properties": {
-                            "foo": {"type": "integer"}
-                        }
-                    }}
-                }'
-            ],
-            [
-                '{"bar": 1, "foo": 1}',
-                '{
-                    "dependencies": {"bar": {
-                        "properties": {
-                            "bar": {"type": "integer"},
-                            "foo": {"type": "integer"}
-                        }
-                    }}
-                }'
-            ]
+        yield [
+            '{}',
+            '{
+                "dependencies": {"bar": "foo"}
+            }'
+        ];
+        yield [
+            '{"foo": 1}',
+            '{
+                "dependencies": {"bar": "foo"}
+            }'
+        ];
+        yield [
+            '"foo"',
+            '{
+                "dependencies": {"bar": "foo"}
+            }'
+        ];
+        yield [
+            '{"bar": 1, "foo": 1}',
+            '{
+                "dependencies": {"bar": "foo"}
+            }'
+        ];
+        yield [
+            '{"bar": 1, "foo": 1, "baz": 1}',
+            '{
+                "dependencies": {"bar": ["foo", "baz"]}
+            }'
+        ];
+        yield [
+            '{}',
+            '{
+                "dependencies": {"bar": ["foo", "baz"]}
+            }'
+        ];
+        yield [
+            '{"foo": 1, "baz": 1}',
+            '{
+                "dependencies": {"bar": ["foo", "baz"]}
+            }'
+        ];
+        yield [
+            '{"bar": 1}',
+            '{
+                "dependencies": {"bar": {
+                    "properties": {
+                        "foo": {"type": "integer"}
+                    }
+                }}
+            }'
+        ];
+        yield [
+            '{"bar": 1, "foo": 1}',
+            '{
+                "dependencies": {"bar": {
+                    "properties": {
+                        "bar": {"type": "integer"},
+                        "foo": {"type": "integer"}
+                    }
+                }}
+            }'
         ];
     }
 }
diff -pruN 6.4.1-1/tests/Constraints/DisallowTest.php 6.5.2-1/tests/Constraints/DisallowTest.php
--- 6.4.1-1/tests/Constraints/DisallowTest.php	2025-04-04 13:08:07.000000000 +0000
+++ 6.5.2-1/tests/Constraints/DisallowTest.php	2025-09-09 09:42:27.000000000 +0000
@@ -1,170 +1,163 @@
 <?php
 
-/*
- * This file is part of the JsonSchema package.
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
+declare(strict_types=1);
 
 namespace JsonSchema\Tests\Constraints;
 
+/**
+ * Schemas in these tests look like draft-03, but the 'disallow' patterns provided are in
+ * violation of the spec - 'disallow' as defined in draft-03 accepts the same values as the
+ * 'type' option, and cannot take arbitrary patterns. The implementation in this library is
+ * probably deliberate, but noting that it's invalid, schema validation has been disabled
+ * for these tests. The 'disallow' option was removed permanently in draft-04.
+ */
 class DisallowTest extends BaseTestCase
 {
-    // schemas in these tests look like draft-03, but the 'disallow' patterns provided are in
-    // violation of the spec - 'disallow' as defined in draft-03 accepts the same values as the
-    // 'type' option, and cannot take arbitrary patterns. The implementation in this library is
-    // probably deliberate, but noting that it's invalid, schema validation has been disabled
-    // for these tests. The 'disallow' option was removed permanently in draft-04.
+    /** @var string */
     protected $schemaSpec = 'http://json-schema.org/draft-03/schema#';
-    protected $validateSchema = false;
 
-    public function getInvalidTests(): array
+    public function getInvalidTests(): \Generator
     {
-        return [
-            [
-                '{
-                  "value":"The xpto is weird"
-                }',
-                '{
-                  "type":"object",
-                  "properties":{
-                    "value":{
-                      "type":"any",
-                      "disallow":{"type":"string","pattern":"xpto"}
-                    }
-                  }
-                }'
-            ],
-            [
-                '{
-                  "value":null
-                }',
-                '{
-                  "type":"object",
-                  "properties":{
-                    "value":{
-                      "type":"any",
-                      "disallow":{"type":"null"}
-                    }
-                  }
-                }'
-            ],
-            [
-                '{"value": 1}',
-                '{
-                    "type": "object",
-                    "properties": {
-                        "value": {"type": "any", "disallow": "integer"}
-                    }
-                }'
-            ],
-            [
-                '{"value": true}',
-                '{
-                    "type": "object",
-                    "properties": {
-                        "value": {"type": "any", "disallow": ["integer", "boolean"]}
-                    }
-                }'
-            ],
-            [
-                '{"value": "foo"}',
-                '{
-                    "type": "object",
-                    "properties": {
-                        "value": {
-                            "type": "any",
-                            "disallow":
-                                ["string", {
-                                    "type": "object",
-                                    "properties": {
-                                        "foo": {"type": "string"}
-                                    }
-                                }]
-                        }
+        yield [
+            '{
+              "value":"The xpto is weird"
+            }',
+            '{
+              "type":"object",
+              "properties":{
+                "value":{
+                  "type":"any",
+                  "disallow":{"type":"string","pattern":"xpto"}
+                }
+              }
+            }'
+        ];
+        yield [
+            '{
+              "value":null
+            }',
+            '{
+              "type":"object",
+              "properties":{
+                "value":{
+                  "type":"any",
+                  "disallow":{"type":"null"}
+                }
+              }
+            }'
+        ];
+        yield [
+            '{"value": 1}',
+            '{
+                "type": "object",
+                "properties": {
+                    "value": {"type": "any", "disallow": "integer"}
+                }
+            }'
+        ];
+        yield [
+            '{"value": true}',
+            '{
+                "type": "object",
+                "properties": {
+                    "value": {"type": "any", "disallow": ["integer", "boolean"]}
+                }
+            }'
+        ];
+        yield [
+            '{"value": "foo"}',
+            '{
+                "type": "object",
+                "properties": {
+                    "value": {
+                        "type": "any",
+                        "disallow":
+                            ["string", {
+                                "type": "object",
+                                "properties": {
+                                    "foo": {"type": "string"}
+                                }
+                            }]
                     }
-                }'
-            ],
-            [
-                '{"value": {"foo": "bar"}}',
-                '{
-                    "type": "object",
-                    "properties": {
-                        "value": {
-                            "type": "any",
-                            "disallow":
-                                ["string", {
-                                    "type": "object",
-                                    "properties": {
-                                        "foo": {"type": "string"}
-                                    }
-                                }]
-                        }
+                }
+            }'
+        ];
+        yield [
+            '{"value": {"foo": "bar"}}',
+            '{
+                "type": "object",
+                "properties": {
+                    "value": {
+                        "type": "any",
+                        "disallow":
+                            ["string", {
+                                "type": "object",
+                                "properties": {
+                                    "foo": {"type": "string"}
+                                }
+                            }]
                     }
-                }'
-            ]
+                }
+            }'
         ];
     }
 
-    public function getValidTests(): array
+    public function getValidTests(): \Generator
     {
-        return [
-            [
-                '{
-                  "value":"The xpto is weird"
-                }',
-                '{
-                  "type":"object",
-                  "properties":{
-                    "value":{
-                      "type":"any",
-                      "disallow":{"type":"string","pattern":"^xpto"}
-                    }
-                  }
-                }'
-            ],
-            [
-                '{
-                  "value":1
-                }',
-                '{
-                  "type":"object",
-                  "properties":{
-                    "value":{
-                      "type":"any",
-                      "disallow":{"type":"null"}
-                    }
-                  }
-                }'
-            ],
-            [
-                '{"value": {"foo": 1}}',
-                '{
-                    "type": "object",
-                    "properties": {
-                        "value": {
-                            "type": "any",
-                            "disallow":
-                                ["string", {
-                                    "type": "object",
-                                    "properties": {
-                                        "foo": {"type": "string"}
-                                    }
-                                }]
-                        }
-                    }
-                }'
-            ],
-            [
-                '{"value": true}',
-                '{
-                    "type": "object",
-                    "properties": {
-                        "value": {"type": "any", "disallow": "string"}
+        yield [
+            '{
+              "value":"The xpto is weird"
+            }',
+            '{
+              "type":"object",
+              "properties":{
+                "value":{
+                  "type":"any",
+                  "disallow":{"type":"string","pattern":"^xpto"}
+                }
+              }
+            }'
+        ];
+        yield [
+            '{
+              "value":1
+            }',
+            '{
+              "type":"object",
+              "properties":{
+                "value":{
+                  "type":"any",
+                  "disallow":{"type":"null"}
+                }
+              }
+            }'
+        ];
+        yield [
+            '{"value": {"foo": 1}}',
+            '{
+                "type": "object",
+                "properties": {
+                    "value": {
+                        "type": "any",
+                        "disallow":
+                            ["string", {
+                                "type": "object",
+                                "properties": {
+                                    "foo": {"type": "string"}
+                                }
+                            }]
                     }
-                }'
-            ]
+                }
+            }'
+        ];
+        yield [
+            '{"value": true}',
+            '{
+                "type": "object",
+                "properties": {
+                    "value": {"type": "any", "disallow": "string"}
+                }
+            }'
         ];
     }
 }
diff -pruN 6.4.1-1/tests/Constraints/DivisibleByTest.php 6.5.2-1/tests/Constraints/DivisibleByTest.php
--- 6.4.1-1/tests/Constraints/DivisibleByTest.php	2025-04-04 13:08:07.000000000 +0000
+++ 6.5.2-1/tests/Constraints/DivisibleByTest.php	2025-09-09 09:42:27.000000000 +0000
@@ -1,97 +1,89 @@
 <?php
 
-/*
- * This file is part of the JsonSchema package.
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
+declare(strict_types=1);
 
 namespace JsonSchema\Tests\Constraints;
 
 class DivisibleByTest extends BaseTestCase
 {
+    /** @var bool */
     protected $validateSchema = true;
 
-    public function getInvalidTests(): array
+    public function getInvalidTests(): \Generator
     {
-        return [
-            [
-                '{"value": 5.6333}',
-                '{
-                  "type":"object",
-                  "properties":{
-                    "value":{"type":"number","divisibleBy":3}
-                  }
-                }'
-            ],
-            [
-                '{"value": 35}',
-                '{
-                    "type": "object",
-                    "properties": {
-                        "value": {"type": "integer", "divisibleBy": 1.5}
-                    }
-                }'
-            ],
-            [
-                '{"value": 0.00751}',
-                '{
-                    "type": "object",
-                    "properties": {
-                        "value": {"type": "number", "divisibleBy": 0.0001}
-                    }
-                }'
-            ],
-            [
-                '{"value": 7}',
-                '{
-                    "type": "object",
-                    "properties": {
-                        "value": {"type": "integer", "divisibleBy": 2}
-                    }
-                }'
-            ]
+        yield [
+            '{"value": 5.6333}',
+            '{
+              "type":"object",
+              "properties":{
+                "value":{"type":"number","divisibleBy":3}
+              }
+            }'
+        ];
+        yield [
+            '{"value": 35}',
+            '{
+                "type": "object",
+                "properties": {
+                    "value": {"type": "integer", "divisibleBy": 1.5}
+                }
+            }'
+        ];
+        yield [
+            '{"value": 0.00751}',
+            '{
+                "type": "object",
+                "properties": {
+                    "value": {"type": "number", "divisibleBy": 0.0001}
+                }
+            }'
+        ];
+        yield [
+            '{"value": 7}',
+            '{
+                "type": "object",
+                "properties": {
+                    "value": {"type": "integer", "divisibleBy": 2}
+                }
+            }'
         ];
     }
 
-    public function getValidTests(): array
+    public function getValidTests(): \Generator
     {
-        return [
-            [
-                '{"value": 6}',
-                '{
-                  "type":"object",
-                  "properties":{
-                    "value":{"type":"number","divisibleBy":3}
-                  }
-                }'
-            ],
-            [
-                '{"value": 4.5}',
-                '{
-                    "type": "object",
-                    "properties": {
-                        "value": {"type": "number", "divisibleBy": 1.5}
-                    }
-                }'
-            ],
-            [
-                '{"value": 0.0075}',
-                '{
-                    "properties": {
-                        "value": {"type": "number", "divisibleBy": 0.0001}
-                    }
-                }'
-            ],
-            [
-                '{"value": 1}',
-                '{
-                    "properties": {
-                        "value": {"type": "number", "divisibleBy": 0.02}
-                    }
-                }'
-            ]
+        yield [
+            '{"value": 6}',
+            '{
+              "type":"object",
+              "properties":{
+                "value":{"type":"number","divisibleBy":3}
+              }
+            }'
+        ];
+        yield [
+            '{"value": 4.5}',
+            '{
+                "type": "object",
+                "properties": {
+                    "value": {"type": "number", "divisibleBy": 1.5}
+                }
+            }'
+        ];
+        yield [
+            '{"value": 0.0075}',
+            '{
+                "properties": {
+                    "value": {"type": "number", "divisibleBy": 0.0001}
+                }
+            }'
+        ];
+        yield [
+            '{"value": 1}',
+            '{
+                "properties": {
+                    "value": {"type": "number", "divisibleBy": 0.02}
+                }
+            }'
         ];
     }
 }
diff -pruN 6.4.1-1/tests/Constraints/EnumTest.php 6.5.2-1/tests/Constraints/EnumTest.php
--- 6.4.1-1/tests/Constraints/EnumTest.php	2025-04-04 13:08:07.000000000 +0000
+++ 6.5.2-1/tests/Constraints/EnumTest.php	2025-09-09 09:42:27.000000000 +0000
@@ -1,198 +1,191 @@
 <?php
 
-/*
- * This file is part of the JsonSchema package.
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
+declare(strict_types=1);
 
 namespace JsonSchema\Tests\Constraints;
 
 class EnumTest extends BaseTestCase
 {
+    /** @var string */
     protected $schemaSpec = 'http://json-schema.org/draft-03/schema#';
+    /** @var bool */
     protected $validateSchema = true;
 
-    public function getInvalidTests(): array
+    public function getInvalidTests(): \Generator
     {
-        return [
-            [
-                '{
-                  "value":"Morango"
-                }',
-                '{
-                  "type":"object",
-                  "properties":{
-                    "value":{"type":"string","enum":["Abacate","Manga","Pitanga"]}
-                  },
-                  "additionalProperties":false
-                }'
-            ],
-            [
-                '{}',
-                '{
-                  "type":"object",
-                  "properties":{
-                    "value":{
-                      "type":"string",
-                      "enum":["Abacate","Manga","Pitanga"],
-                      "required":true
+        yield [
+            '{
+              "value":"Morango"
+            }',
+            '{
+              "type":"object",
+              "properties":{
+                "value":{"type":"string","enum":["Abacate","Manga","Pitanga"]}
+              },
+              "additionalProperties":false
+            }'
+        ];
+        yield [
+            '{}',
+            '{
+              "type":"object",
+              "properties":{
+                "value":{
+                  "type":"string",
+                  "enum":["Abacate","Manga","Pitanga"],
+                  "required":true
+                }
+              },
+              "additionalProperties":false
+            }'
+        ];
+        yield [
+            '{"value": "4"}',
+            '{
+                "type": "object",
+                "properties": {
+                    "value": {
+                        "type": "integer", "enum": [1, 2, 3]
                     }
-                  },
-                  "additionalProperties":false
-                }'
-            ],
-            [
-                '{"value": "4"}',
-                '{
-                    "type": "object",
-                    "properties": {
-                        "value": {
-                            "type": "integer", "enum": [1, 2, 3]
-                        }
-                    },
-                    "additionalProperties": false
-                }'
-            ],
-            [
-                '{"value": {"foo": false}}',
-                '{
-                    "type": "object",
-                    "properties": {
-                        "value": {
-                            "type": "any", "enum": [6, "foo", [], true, {"foo": 12}]
-                        }
-                    },
-                    "additionalProperties": false
-                }'
-            ],
-            [
-                '{
+                },
+                "additionalProperties": false
+            }'
+        ];
+        yield [
+            '{"value": {"foo": false}}',
+            '{
+                "type": "object",
+                "properties": {
                     "value": {
-                        "foo": "12"
+                        "type": "any", "enum": [6, "foo", [], true, {"foo": 12}]
                     }
-                }',
-                '{
-                    "type": "object",
-                    "properties": {
-                        "value": {
-                            "type": "any", 
-                            "enum": [
-                                6, 
-                                "foo", 
-                                [], 
-                                true, 
-                                {
-                                    "foo": 12
-                                }
-                            ]
-                        }
+                },
+                "additionalProperties": false
+            }'
+        ];
+        yield [
+            '{
+                "value": {
+                    "foo": "12"
+                }
+            }',
+            '{
+                "type": "object",
+                "properties": {
+                    "value": {
+                        "type": "any", 
+                        "enum": [
+                            6, 
+                            "foo", 
+                            [], 
+                            true, 
+                            {
+                                "foo": 12
+                            }
+                        ]
                     }
-                }'
-            ]
+                }
+            }'
         ];
     }
 
-    public function getValidTests(): array
+    public function getValidTests(): \Generator
     {
-        return [
-            [
-                '{
-                  "value":"Abacate"
-                }',
-                '{
-                  "type":"object",
-                  "properties":{
-                    "value":{"type":"string","enum":["Abacate","Manga","Pitanga"]}
-                  },
-                  "additionalProperties":false
-                }'
-            ],
-            [
-                '{}',
-                '{
-                  "type":"object",
-                  "properties":{
-                    "value":{"type":"string","enum":["Abacate","Manga","Pitanga"]}
-                  },
-                  "additionalProperties":false
-                }'
-            ],
-            [
-                '{}',
-                '{
-                  "type":"object",
-                  "properties":{
-                    "value":{
-                      "type":"string",
-                      "enum":["Abacate","Manga","Pitanga"],
-                      "required":false
-                    }
-                  },
-                  "additionalProperties":false
-                }'
-            ],
-            [
-                '{"value": 1}',
-                '{
-                    "type": "object",
-                    "properties": {
-                        "value": {"type": "integer", "enum": [1, 2, 3]}
-                    }
-                }'
-            ],
-            [
-                '{"value": []}',
-                '{
-                    "type": "object",
-                    "properties": {
-                        "value": {"type": "any", "enum": [6, "foo", [], true, {"foo": 12}]}
-                    },
-                    "additionalProperties": false
-                }'
-            ],
-            [
-                '{
+        yield [
+            '{
+              "value":"Abacate"
+            }',
+            '{
+              "type":"object",
+              "properties":{
+                "value":{"type":"string","enum":["Abacate","Manga","Pitanga"]}
+              },
+              "additionalProperties":false
+            }'
+        ];
+        yield [
+            '{}',
+            '{
+              "type":"object",
+              "properties":{
+                "value":{"type":"string","enum":["Abacate","Manga","Pitanga"]}
+              },
+              "additionalProperties":false
+            }'
+        ];
+        yield [
+            '{}',
+            '{
+              "type":"object",
+              "properties":{
+                "value":{
+                  "type":"string",
+                  "enum":["Abacate","Manga","Pitanga"],
+                  "required":false
+                }
+              },
+              "additionalProperties":false
+            }'
+        ];
+        yield [
+            '{"value": 1}',
+            '{
+                "type": "object",
+                "properties": {
+                    "value": {"type": "integer", "enum": [1, 2, 3]}
+                }
+            }'
+        ];
+        yield [
+            '{"value": []}',
+            '{
+                "type": "object",
+                "properties": {
+                    "value": {"type": "any", "enum": [6, "foo", [], true, {"foo": 12}]}
+                },
+                "additionalProperties": false
+            }'
+        ];
+        yield [
+            '{
+                "value": {
+                    "foo": 12
+                }
+            }',
+            '{
+                "type": "object",
+                "properties": {
                     "value": {
-                        "foo": 12
-                    }
-                }',
-                '{
-                    "type": "object",
-                    "properties": {
-                        "value": {
-                            "type": "any",
-                            "enum": [
-                                6,
-                                "foo",
-                                [],
-                                true,
-                                {
-                                    "foo": 12
-                                }
-                            ]
-                        }
+                        "type": "any",
+                        "enum": [
+                            6,
+                            "foo",
+                            [],
+                            true,
+                            {
+                                "foo": 12
+                            }
+                        ]
                     }
-                }'
-            ],
-            'Number values with mathematical equality are considered valid' => [
-                'data' => '12',
-                'schema' => '{
-                    "type": "any",
-                    "enum": [
-                        12.0
-                    ]
-                }'
-            ],
-            'Array with number values with mathematical equality are considered valid' => [
-                'input' => '[ 0.0 ]',
-                'schema' => '{
-                    "enum": [
-                        [ 0 ]
-                    ]
-                }',
-            ]
+                }
+            }'
+        ];
+        yield 'Number values with mathematical equality are considered valid' => [
+            'data' => '12',
+            'schema' => '{
+                "type": "any",
+                "enum": [
+                    12.0
+                ]
+            }'
+        ];
+        yield 'Array with number values with mathematical equality are considered valid' => [
+            'input' => '[ 0.0 ]',
+            'schema' => '{
+                "enum": [
+                    [ 0 ]
+                ]
+            }',
         ];
     }
 }
diff -pruN 6.4.1-1/tests/Constraints/ExtendsTest.php 6.5.2-1/tests/Constraints/ExtendsTest.php
--- 6.4.1-1/tests/Constraints/ExtendsTest.php	2025-04-04 13:08:07.000000000 +0000
+++ 6.5.2-1/tests/Constraints/ExtendsTest.php	2025-09-09 09:42:27.000000000 +0000
@@ -1,154 +1,147 @@
 <?php
 
-/*
- * This file is part of the JsonSchema package.
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
+declare(strict_types=1);
 
 namespace JsonSchema\Tests\Constraints;
 
 class ExtendsTest extends BaseTestCase
 {
+    /** @var string */
     protected $schemaSpec = 'http://json-schema.org/draft-03/schema#';
+    /** @var bool */
     protected $validateSchema = true;
 
-    public function getInvalidTests(): array
+    public function getInvalidTests(): \Generator
     {
-        return [
-            [
-                '{
-                  "name":"bruno",
-                  "age":50
-                }',
-                '{
+        yield [
+            '{
+              "name":"bruno",
+              "age":50
+            }',
+            '{
+                "properties": {
+                    "name": {"type": "string"},
+                    "age": {
+                        "type": "integer",
+                        "maximum": 120
+                    }
+                },
+                "extends": {
                     "properties": {
-                        "name": {"type": "string"},
-                        "age": {
-                            "type": "integer",
-                            "maximum": 120
-                        }
-                    },
-                    "extends": {
-                        "properties": {
-                            "age": {"minimum": 70}
-                        }
+                        "age": {"minimum": 70}
+                    }
+                }
+            }'
+        ];
+        yield [
+            '{
+              "name":"bruno",
+              "age":180
+            }',
+            '{
+                "properties": {
+                    "name": {"type": "string"},
+                    "age": {
+                        "type": "integer",
+                        "maximum": 120
                     }
-                }'
-            ],
-            [
-                '{
-                  "name":"bruno",
-                  "age":180
-                }',
-                '{
+                },
+                "extends": {
                     "properties": {
-                        "name": {"type": "string"},
-                        "age": {
-                            "type": "integer",
-                            "maximum": 120
-                        }
-                    },
-                    "extends": {
-                        "properties": {
-                            "age": {"minimum":70}
-                        }
+                        "age": {"minimum":70}
                     }
-                }'
-            ],
-            [
-                '{"foo": 2, "bar": "baz"}',
-                '{
+                }
+            }'
+        ];
+        yield [
+            '{"foo": 2, "bar": "baz"}',
+            '{
+                "properties": {
+                    "bar": {"type": "integer", "required": true}
+                },
+                "extends": {
                     "properties": {
-                        "bar": {"type": "integer", "required": true}
-                    },
-                    "extends": {
+                        "foo": {"type": "string", "required": true}
+                    }
+                }
+            }'
+        ];
+        yield [
+            '{"bar": 2}',
+            '{
+                "properties": {
+                    "bar": {"type": "integer", "required": true}
+                },
+                "extends" : [
+                    {
                         "properties": {
                             "foo": {"type": "string", "required": true}
                         }
-                    }
-                }'
-            ],
-            [
-                '{"bar": 2}',
-                '{
-                    "properties": {
-                        "bar": {"type": "integer", "required": true}
                     },
-                    "extends" : [
-                        {
-                            "properties": {
-                                "foo": {"type": "string", "required": true}
-                            }
-                        },
-                        {
-                            "properties": {
-                                "baz": {"type": "null", "required": true}
-                            }
+                    {
+                        "properties": {
+                            "baz": {"type": "null", "required": true}
                         }
-                    ]
-                }'
-            ]
+                    }
+                ]
+            }'
         ];
     }
 
-    public function getValidTests(): array
+    public function getValidTests(): \Generator
     {
-        return [
-            [
-                '{
-                  "name":"bruno",
-                  "age":80
-                }',
-                '{
+        yield [
+            '{
+              "name":"bruno",
+              "age":80
+            }',
+            '{
+                "properties": {
+                    "name": {"type": "string"},
+                    "age": {
+                        "type": "integer",
+                        "maximum": 120
+                    }
+                },
+                "extends": {
                     "properties": {
-                        "name": {"type": "string"},
-                        "age": {
-                            "type": "integer",
-                            "maximum": 120
-                        }
-                    },
-                    "extends": {
-                        "properties": {
-                            "age": {"minimum": 70}
-                        }
+                        "age": {"minimum": 70}
                     }
-                }'
-            ],
-            [
-                '{"foo": "baz", "bar": 2}',
-                '{
+                }
+            }'
+        ];
+        yield [
+            '{"foo": "baz", "bar": 2}',
+            '{
+                "properties": {
+                    "bar": {"type": "integer", "required": true}
+                },
+                "extends": {
                     "properties": {
-                        "bar": {"type": "integer", "required": true}
-                    },
-                    "extends": {
+                        "foo": {"type": "string", "required": true}
+                    }
+                }
+            }'
+        ];
+        yield [
+            '{"foo": "ick", "bar": 2, "baz": null}',
+            '{
+                "properties": {
+                    "bar": {"type": "integer", "required": true}
+                },
+                "extends" : [
+                    {
                         "properties": {
                             "foo": {"type": "string", "required": true}
                         }
-                    }
-                }'
-            ],
-            [
-                '{"foo": "ick", "bar": 2, "baz": null}',
-                '{
-                    "properties": {
-                        "bar": {"type": "integer", "required": true}
                     },
-                    "extends" : [
-                        {
-                            "properties": {
-                                "foo": {"type": "string", "required": true}
-                            }
-                        },
-                        {
-                            "properties": {
-                                "baz": {"type": "null", "required": true}
-                            }
+                    {
+                        "properties": {
+                            "baz": {"type": "null", "required": true}
                         }
-                    ]
-                }'
-            ]
+                    }
+                ]
+            }'
         ];
     }
 }
diff -pruN 6.4.1-1/tests/Constraints/FactoryTest.php 6.5.2-1/tests/Constraints/FactoryTest.php
--- 6.4.1-1/tests/Constraints/FactoryTest.php	2025-04-04 13:08:07.000000000 +0000
+++ 6.5.2-1/tests/Constraints/FactoryTest.php	2025-09-09 09:42:27.000000000 +0000
@@ -1,12 +1,5 @@
 <?php
 
-/*
- * This file is part of the JsonSchema package.
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
 declare(strict_types=1);
 
 namespace JsonSchema\Tests\Constraints;
diff -pruN 6.4.1-1/tests/Constraints/FormatTest.php 6.5.2-1/tests/Constraints/FormatTest.php
--- 6.4.1-1/tests/Constraints/FormatTest.php	2025-04-04 13:08:07.000000000 +0000
+++ 6.5.2-1/tests/Constraints/FormatTest.php	2025-09-09 09:42:27.000000000 +0000
@@ -1,11 +1,6 @@
 <?php
 
-/*
- * This file is part of the JsonSchema package.
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
+declare(strict_types=1);
 
 namespace JsonSchema\Tests\Constraints;
 
@@ -15,6 +10,7 @@ use JsonSchema\Constraints\FormatConstra
 
 class FormatTest extends BaseTestCase
 {
+    /** @var bool */
     protected $validateSchema = true;
 
     public function setUp(): void
@@ -95,204 +91,197 @@ class FormatTest extends BaseTestCase
         $this->assertEmpty($validator->getErrors());
     }
 
-    public function getValidFormats(): array
+    public function getValidFormats(): \Generator
     {
-        return [
-            ['2001-01-23', 'date'],
-            ['2000-02-29', 'date'],
-            [42, 'date'],
-            [4.2, 'date'],
-
-            ['12:22:01', 'time'],
-            ['00:00:00', 'time'],
-            ['23:59:59', 'time'],
-            [42, 'time'],
-            [4.2, 'time'],
-
-            ['2000-05-01T12:12:12Z', 'date-time'],
-            ['2000-05-01T12:12:12+0100', 'date-time'],
-            ['2000-05-01T12:12:12+01:00', 'date-time'],
-            ['2000-05-01T12:12:12.123456Z', 'date-time'],
-            ['2000-05-01T12:12:12.123Z', 'date-time'],
-            ['2000-05-01T12:12:12.123000Z', 'date-time'],
-            ['2000-05-01T12:12:12.0Z', 'date-time'],
-            ['2000-05-01T12:12:12.000Z', 'date-time'],
-            ['2000-05-01T12:12:12.000000Z', 'date-time'],
-            [42, 'date-time'],
-            [4.2, 'date-time'],
-
-            ['0', 'utc-millisec'],
-
-            ['aqua', 'color'],
-            ['black', 'color'],
-            ['blue', 'color'],
-            ['fuchsia', 'color'],
-            ['gray', 'color'],
-            ['green', 'color'],
-            ['lime', 'color'],
-            ['maroon', 'color'],
-            ['navy', 'color'],
-            ['olive', 'color'],
-            ['orange', 'color'],
-            ['purple', 'color'],
-            ['red', 'color'],
-            ['silver', 'color'],
-            ['teal', 'color'],
-            ['white', 'color'],
-            ['yellow', 'color'],
-            ['#fff', 'color'],
-            ['#00cc00', 'color'],
-            [42, 'color'],
-            [4.2, 'color'],
-
-            ['background: blue', 'style'],
-            ['color: #000;', 'style'],
-
-            ['555 320 1212', 'phone'],
-
-            ['http://bluebox.org', 'uri'],
-            ['//bluebox.org', 'uri-reference'],
-            ['/absolutePathReference/', 'uri-reference'],
-            ['./relativePathReference/', 'uri-reference'],
-            ['./relative:PathReference/', 'uri-reference'],
-            ['relativePathReference/', 'uri-reference'],
-            ['relative/Path:Reference/', 'uri-reference'],
-            [42, 'uri-reference'],
-            [4.2, 'uri-reference'],
-
-            ['info@something.edu', 'email'],
-            [42, 'email'],
-            [4.2, 'email'],
-
-            ['10.10.10.10', 'ip-address'],
-            ['127.0.0.1', 'ip-address'],
-            [42, 'ip-address'],
-            [4.2, 'ip-address'],
-
-            ['127.0.0.1', 'ipv4'],
-            [42, 'ipv4'],
-            [4.2, 'ipv4'],
-
-            ['::ff', 'ipv6'],
-            [42, 'ipv6'],
-            [4.2, 'ipv6'],
-
-            ['www.example.com', 'host-name'],
-            ['3v4l.org', 'host-name'],
-            ['a-valid-host.com', 'host-name'],
-            ['localhost', 'host-name'],
-            [42, 'host-name'],
-            [4.2, 'host-name'],
-
-            ['www.example.com', 'hostname'],
-            ['3v4l.org', 'hostname'],
-            ['a-valid-host.com', 'hostname'],
-            ['localhost', 'hostname'],
-            [42, 'hostname'],
-            [4.2, 'hostname'],
+        yield ['2001-01-23', 'date'];
+        yield ['2000-02-29', 'date'];
+        yield [42, 'date'];
+        yield [4.2, 'date'];
+
+        yield ['12:22:01', 'time'];
+        yield ['00:00:00', 'time'];
+        yield ['23:59:59', 'time'];
+        yield [42, 'time'];
+        yield [4.2, 'time'];
+
+        yield ['2000-05-01T12:12:12Z', 'date-time'];
+        yield ['2000-05-01T12:12:12+0100', 'date-time'];
+        yield ['2000-05-01T12:12:12+01:00', 'date-time'];
+        yield ['2000-05-01T12:12:12.123456Z', 'date-time'];
+        yield ['2000-05-01T12:12:12.123Z', 'date-time'];
+        yield ['2000-05-01T12:12:12.123000Z', 'date-time'];
+        yield ['2000-05-01T12:12:12.0Z', 'date-time'];
+        yield ['2000-05-01T12:12:12.000Z', 'date-time'];
+        yield ['2000-05-01T12:12:12.000000Z', 'date-time'];
+        yield [42, 'date-time'];
+        yield [4.2, 'date-time'];
+
+        yield ['0', 'utc-millisec'];
+
+        yield ['aqua', 'color'];
+        yield ['black', 'color'];
+        yield ['blue', 'color'];
+        yield ['fuchsia', 'color'];
+        yield ['gray', 'color'];
+        yield ['green', 'color'];
+        yield ['lime', 'color'];
+        yield ['maroon', 'color'];
+        yield ['navy', 'color'];
+        yield ['olive', 'color'];
+        yield ['orange', 'color'];
+        yield ['purple', 'color'];
+        yield ['red', 'color'];
+        yield ['silver', 'color'];
+        yield ['teal', 'color'];
+        yield ['white', 'color'];
+        yield ['yellow', 'color'];
+        yield ['#fff', 'color'];
+        yield ['#00cc00', 'color'];
+        yield [42, 'color'];
+        yield [4.2, 'color'];
+
+        yield ['background: blue', 'style'];
+        yield ['color: #000;', 'style'];
+
+        yield ['555 320 1212', 'phone'];
+
+        yield ['http://bluebox.org', 'uri'];
+        yield ['//bluebox.org', 'uri-reference'];
+        yield ['/absolutePathReference/', 'uri-reference'];
+        yield ['./relativePathReference/', 'uri-reference'];
+        yield ['./relative:PathReference/', 'uri-reference'];
+        yield ['relativePathReference/', 'uri-reference'];
+        yield ['relative/Path:Reference/', 'uri-reference'];
+        yield [42, 'uri-reference'];
+        yield [4.2, 'uri-reference'];
+
+        yield ['info@something.edu', 'email'];
+        yield [42, 'email'];
+        yield [4.2, 'email'];
+
+        yield ['10.10.10.10', 'ip-address'];
+        yield ['127.0.0.1', 'ip-address'];
+        yield [42, 'ip-address'];
+        yield [4.2, 'ip-address'];
+
+        yield ['127.0.0.1', 'ipv4'];
+        yield [42, 'ipv4'];
+        yield [4.2, 'ipv4'];
+
+        yield ['::ff', 'ipv6'];
+        yield [42, 'ipv6'];
+        yield [4.2, 'ipv6'];
+
+        yield ['www.example.com', 'host-name'];
+        yield ['3v4l.org', 'host-name'];
+        yield ['a-valid-host.com', 'host-name'];
+        yield ['localhost', 'host-name'];
+        yield [42, 'host-name'];
+        yield [4.2, 'host-name'];
+
+        yield ['www.example.com', 'hostname'];
+        yield ['3v4l.org', 'hostname'];
+        yield ['a-valid-host.com', 'hostname'];
+        yield ['localhost', 'hostname'];
+        yield [42, 'hostname'];
+        yield [4.2, 'hostname'];
 
-            ['anything', '*'],
-            ['unknown', '*'],
-        ];
+        yield ['anything', '*'];
+        yield ['unknown', '*'];
     }
 
-    public function getInvalidFormats(): array
+    public function getInvalidFormats(): \Generator
     {
-        return [
-            ['January 1st, 1910', 'date'],
-            ['199-01-1', 'date'],
-            ['2012-0-11', 'date'],
-            ['2012-10-1', 'date'],
-
-            ['24:01:00', 'time'],
-            ['00:00:60', 'time'],
-            ['25:00:00', 'time'],
-
-            ['invalid_value_2000-05-01T12:12:12Z', 'date-time'],
-            ['2000-05-01T12:12:12Z_invalid_value', 'date-time'],
-            ['1999-1-11T00:00:00Z', 'date-time'],
-            ['1999-01-11T00:00:00+100', 'date-time'],
-            ['1999-01-11T00:00:00+1:00', 'date-time'],
-            ['1999.000Z-01-11T00:00:00+1:00', 'date-time'],
-
-            [PHP_INT_MAX, 'utc-millisec'],
-
-            ['grey', 'color'],
-            ['#HHH', 'color'],
-            ['#000a', 'color'],
-            ['#aa', 'color'],
-
-            ['background; blue', 'style'],
-
-            ['1 123 4424', 'phone'],
-
-            ['htt:/bluebox.org', 'uri'],
-            ['.relative:path/reference/', 'uri'],
-            ['', 'uri'],
-            ['//bluebox.org', 'uri'],
-            ['/absolutePathReference/', 'uri'],
-            ['./relativePathReference/', 'uri'],
-            ['./relative:PathReference/', 'uri'],
-            ['relativePathReference/', 'uri'],
-            ['relative/Path:Reference/', 'uri'],
+        yield ['January 1st, 1910', 'date'];
+        yield ['199-01-1', 'date'];
+        yield ['2012-0-11', 'date'];
+        yield ['2012-10-1', 'date'];
+
+        yield ['24:01:00', 'time'];
+        yield ['00:00:60', 'time'];
+        yield ['25:00:00', 'time'];
+
+        yield ['invalid_value_2000-05-01T12:12:12Z', 'date-time'];
+        yield ['2000-05-01T12:12:12Z_invalid_value', 'date-time'];
+        yield ['1999-1-11T00:00:00Z', 'date-time'];
+        yield ['1999-01-11T00:00:00+100', 'date-time'];
+        yield ['1999-01-11T00:00:00+1:00', 'date-time'];
+        yield ['1999.000Z-01-11T00:00:00+1:00', 'date-time'];
+
+        yield [PHP_INT_MAX, 'utc-millisec'];
+
+        yield ['grey', 'color'];
+        yield ['#HHH', 'color'];
+        yield ['#000a', 'color'];
+        yield ['#aa', 'color'];
+
+        yield ['background; blue', 'style'];
+
+        yield ['1 123 4424', 'phone'];
+
+        yield ['htt:/bluebox.org', 'uri'];
+        yield ['.relative:path/reference/', 'uri'];
+        yield ['', 'uri'];
+        yield ['//bluebox.org', 'uri'];
+        yield ['/absolutePathReference/', 'uri'];
+        yield ['./relativePathReference/', 'uri'];
+        yield ['./relative:PathReference/', 'uri'];
+        yield ['relativePathReference/', 'uri'];
+        yield ['relative/Path:Reference/', 'uri'];
 
-            ['info@somewhere', 'email'],
+        yield ['info@somewhere', 'email'];
 
-            ['256.2.2.2', 'ip-address'],
+        yield ['256.2.2.2', 'ip-address'];
 
-            [':::ff', 'ipv6'],
+        yield [':::ff', 'ipv6'];
 
-            ['@localhost', 'host-name'],
-            ['..nohost', 'host-name'],
-        ];
+        yield ['@localhost', 'host-name'];
+        yield ['..nohost', 'host-name'];
     }
 
-    public function getValidTests(): array
+    public function getValidTests(): \Generator
     {
-        return [
-            [
-                '{ "counter": "10" }',
-                '{
-                    "type": "object",
-                    "properties": {
-                        "counter": {
-                            "type": "string",
-                            "format": "regex",
-                            "pattern": "[0-9]+"
-                        }
+        yield [
+            '{ "counter": "10" }',
+            '{
+                "type": "object",
+                "properties": {
+                    "counter": {
+                        "type": "string",
+                        "format": "regex",
+                        "pattern": "[0-9]+"
                     }
-                }'],
+                }
+            }'
         ];
     }
 
-    public function getInvalidTests(): array
+    public function getInvalidTests(): \Generator
     {
-        return [
-            [
-                '{ "counter": "blue" }',
-                '{
-                    "type": "object",
-                    "properties": {
-                        "counter": {
-                            "type": "string",
-                            "format": "regex",
-                            "pattern": "[0-9]+"
-                        }
+        yield [
+            '{ "counter": "blue" }',
+            '{
+                "type": "object",
+                "properties": {
+                    "counter": {
+                        "type": "string",
+                        "format": "regex",
+                        "pattern": "[0-9]+"
                     }
-                }'
-            ],
-            [
-                '{ "color": "blueberry" }',
-                '{
-                    "type": "object",
-                    "properties": {
-                        "color": {
-                            "type": "string",
-                            "format": "color"
-                        }
+                }
+            }'
+        ];
+        yield [
+            '{ "color": "blueberry" }',
+            '{
+                "type": "object",
+                "properties": {
+                    "color": {
+                        "type": "string",
+                        "format": "color"
                     }
-                }'
-            ]
+                }
+            }'
         ];
     }
 }
diff -pruN 6.4.1-1/tests/Constraints/LongArraysTest.php 6.5.2-1/tests/Constraints/LongArraysTest.php
--- 6.4.1-1/tests/Constraints/LongArraysTest.php	2025-04-04 13:08:07.000000000 +0000
+++ 6.5.2-1/tests/Constraints/LongArraysTest.php	2025-09-09 09:42:27.000000000 +0000
@@ -1,11 +1,6 @@
 <?php
 
-/*
- * This file is part of the JsonSchema package.
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
+declare(strict_types=1);
 
 namespace JsonSchema\Tests\Constraints;
 
@@ -60,7 +55,7 @@ class LongArraysTest extends VeryBaseTes
 
         $tmp = new \stdClass();
         $tmp->p_array = array_map(function ($i) {
-            return rand(1, 1000) / 1000.0;
+            return random_int(1, 1000) / 1000.0;
         }, range(1, 100000));
         $input = json_encode($tmp);
 
diff -pruN 6.4.1-1/tests/Constraints/MinItemsMaxItemsTest.php 6.5.2-1/tests/Constraints/MinItemsMaxItemsTest.php
--- 6.4.1-1/tests/Constraints/MinItemsMaxItemsTest.php	2025-04-04 13:08:07.000000000 +0000
+++ 6.5.2-1/tests/Constraints/MinItemsMaxItemsTest.php	2025-09-09 09:42:27.000000000 +0000
@@ -1,11 +1,6 @@
 <?php
 
-/*
- * This file is part of the JsonSchema package.
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
+declare(strict_types=1);
 
 namespace JsonSchema\Tests\Constraints;
 
@@ -13,89 +8,86 @@ use JsonSchema\Constraints\Constraint;
 
 class MinItemsMaxItemsTest extends BaseTestCase
 {
+    /** @var bool */
     protected $validateSchema = true;
 
-    public function getInvalidTests(): array
+    public function getInvalidTests(): \Generator
     {
-        return [
-            'Input violating minItems constraint' => [
-                'input' => '{
-                  "value":[2]
-                }',
-                'schema' => '{
-                  "type":"object",
-                  "properties":{
-                    "value":{"type":"array","minItems":2,"maxItems":4}
-                  }
-                }',
-                'checkMode' => Constraint::CHECK_MODE_NORMAL,
-                [[
-                    'property' => 'value',
-                    'pointer' => '/value',
-                    'message' => 'There must be a minimum of 2 items in the array, 1 found',
-                    'constraint' => [
-                        'name' => 'minItems',
-                        'params' => [
-                            'minItems' => 2,
-                            'found' => 1
-                        ]
-                    ],
-                    'context' => 1
-                ]]
-            ],
-            'Input violating maxItems constraint' => [
-                'input' => '{
-                  "value":[2,2,5,8,5]
-                }',
-                'schema' => '{
-                  "type":"object",
-                  "properties":{
-                    "value":{"type":"array","minItems":2,"maxItems":4}
-                  }
-                }',
-                'checkMode' => Constraint::CHECK_MODE_NORMAL,
-                [[
-                    'property' => 'value',
-                    'pointer' => '/value',
-                    'message' => 'There must be a maximum of 4 items in the array, 5 found',
-                    'constraint' => [
-                        'name' => 'maxItems',
-                        'params' => [
-                            'maxItems' => 4,
-                            'found' => 5
-                        ]
-                    ],
-                    'context' => 1
-                ]]
-            ]
+        yield 'Input violating minItems constraint' => [
+            'input' => '{
+              "value":[2]
+            }',
+            'schema' => '{
+              "type":"object",
+              "properties":{
+                "value":{"type":"array","minItems":2,"maxItems":4}
+              }
+            }',
+            'checkMode' => Constraint::CHECK_MODE_NORMAL,
+            [[
+                'property' => 'value',
+                'pointer' => '/value',
+                'message' => 'There must be a minimum of 2 items in the array, 1 found',
+                'constraint' => [
+                    'name' => 'minItems',
+                    'params' => [
+                        'minItems' => 2,
+                        'found' => 1
+                    ]
+                ],
+                'context' => 1
+            ]]
+        ];
+        yield 'Input violating maxItems constraint' => [
+            'input' => '{
+              "value":[2,2,5,8,5]
+            }',
+            'schema' => '{
+              "type":"object",
+              "properties":{
+                "value":{"type":"array","minItems":2,"maxItems":4}
+              }
+            }',
+            'checkMode' => Constraint::CHECK_MODE_NORMAL,
+            [[
+                'property' => 'value',
+                'pointer' => '/value',
+                'message' => 'There must be a maximum of 4 items in the array, 5 found',
+                'constraint' => [
+                    'name' => 'maxItems',
+                    'params' => [
+                        'maxItems' => 4,
+                        'found' => 5
+                    ]
+                ],
+                'context' => 1
+            ]]
         ];
     }
 
-    public function getValidTests(): array
+    public function getValidTests(): \Generator
     {
-        return [
-            [
-                '{
-                  "value":[2,2]
-                }',
-                '{
-                  "type":"object",
-                  "properties":{
-                    "value":{"type":"array","minItems":2,"maxItems":4}
-                  }
-                }'
-            ],
-            [
-                '{
-                  "value":[2,2,5,8]
-                }',
-                '{
-                  "type":"object",
-                  "properties":{
-                    "value":{"type":"array","minItems":2,"maxItems":4}
-                  }
-                }'
-            ]
+        yield [
+            '{
+              "value":[2,2]
+            }',
+            '{
+              "type":"object",
+              "properties":{
+                "value":{"type":"array","minItems":2,"maxItems":4}
+              }
+            }'
+        ];
+        yield [
+            '{
+              "value":[2,2,5,8]
+            }',
+            '{
+              "type":"object",
+              "properties":{
+                "value":{"type":"array","minItems":2,"maxItems":4}
+              }
+            }'
         ];
     }
 }
diff -pruN 6.4.1-1/tests/Constraints/MinLengthMaxLengthMultiByteTest.php 6.5.2-1/tests/Constraints/MinLengthMaxLengthMultiByteTest.php
--- 6.4.1-1/tests/Constraints/MinLengthMaxLengthMultiByteTest.php	2025-04-04 13:08:07.000000000 +0000
+++ 6.5.2-1/tests/Constraints/MinLengthMaxLengthMultiByteTest.php	2025-09-09 09:42:27.000000000 +0000
@@ -1,16 +1,12 @@
 <?php
 
-/*
- * This file is part of the JsonSchema package.
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
+declare(strict_types=1);
 
 namespace JsonSchema\Tests\Constraints;
 
 class MinLengthMaxLengthMultiByteTest extends BaseTestCase
 {
+    /** @var bool */
     protected $validateSchema = true;
 
     protected function setUp(): void
@@ -20,59 +16,55 @@ class MinLengthMaxLengthMultiByteTest ex
         }
     }
 
-    public function getInvalidTests(): array
+    public function getInvalidTests(): \Generator
     {
-        return [
-            [
-                '{
-                  "value":"☀"
-                }',
-                '{
-                  "type":"object",
-                  "properties":{
-                    "value":{"type":"string","minLength":2,"maxLength":4}
-                  }
-                }'
-            ],
-            [
-                '{
-                  "value":"☀☁☂☃☺"
-                }',
-                '{
-                  "type":"object",
-                  "properties":{
-                    "value":{"type":"string","minLength":2,"maxLength":4}
-                  }
-                }'
-            ]
+        yield [
+            '{
+              "value":"☀"
+            }',
+            '{
+              "type":"object",
+              "properties":{
+                "value":{"type":"string","minLength":2,"maxLength":4}
+              }
+            }'
+        ];
+        yield [
+            '{
+              "value":"☀☁☂☃☺"
+            }',
+            '{
+              "type":"object",
+              "properties":{
+                "value":{"type":"string","minLength":2,"maxLength":4}
+              }
+            }'
         ];
     }
 
-    public function getValidTests(): array
+    public function getValidTests(): \Generator
     {
-        return [
-            [
-                '{
-                  "value":"☀☁"
-                }',
-                '{
-                  "type":"object",
-                  "properties":{
-                    "value":{"type":"string","minLength":2,"maxLength":4}
-                  }
-                }'
-            ],
-            [
-                '{
-                  "value":"☀☁☂☃"
-                }',
-                '{
-                  "type":"object",
-                  "properties":{
-                    "value":{"type":"string","minLength":2,"maxLength":4}
-                  }
-                }'
-            ]
+        yield [
+            '{
+              "value":"☀☁"
+            }',
+            '{
+              "type":"object",
+              "properties":{
+                "value":{"type":"string","minLength":2,"maxLength":4}
+              }
+            }'
+        ];
+        yield [
+            '{
+              "value":"☀☁☂☃"
+            }',
+            '{
+              "type":"object",
+              "properties":{
+                "value":{"type":"string","minLength":2,"maxLength":4}
+              }
+            }'
         ];
     }
 }
diff -pruN 6.4.1-1/tests/Constraints/MinLengthMaxLengthTest.php 6.5.2-1/tests/Constraints/MinLengthMaxLengthTest.php
--- 6.4.1-1/tests/Constraints/MinLengthMaxLengthTest.php	2025-04-04 13:08:07.000000000 +0000
+++ 6.5.2-1/tests/Constraints/MinLengthMaxLengthTest.php	2025-09-09 09:42:27.000000000 +0000
@@ -1,71 +1,63 @@
 <?php
 
-/*
- * This file is part of the JsonSchema package.
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
+declare(strict_types=1);
 
 namespace JsonSchema\Tests\Constraints;
 
 class MinLengthMaxLengthTest extends BaseTestCase
 {
+    /** @var bool */
     protected $validateSchema = true;
 
-    public function getInvalidTests(): array
+    public function getInvalidTests(): \Generator
     {
-        return [
-            [
-                '{
-                  "value":"w"
-                }',
-                '{
-                  "type":"object",
-                  "properties":{
-                    "value":{"type":"string","minLength":2,"maxLength":4}
-                  }
-                }'
-            ],
-            [
-                '{
-                  "value":"wo7us"
-                }',
-                '{
-                  "type":"object",
-                  "properties":{
-                    "value":{"type":"string","minLength":2,"maxLength":4}
-                  }
-                }'
-            ]
+        yield [
+            '{
+              "value":"w"
+            }',
+            '{
+              "type":"object",
+              "properties":{
+                "value":{"type":"string","minLength":2,"maxLength":4}
+              }
+            }'
+        ];
+        yield [
+            '{
+              "value":"wo7us"
+            }',
+            '{
+              "type":"object",
+              "properties":{
+                "value":{"type":"string","minLength":2,"maxLength":4}
+              }
+            }'
         ];
     }
 
-    public function getValidTests(): array
+    public function getValidTests(): \Generator
     {
-        return [
-            [
-                '{
-                  "value":"wo"
-                }',
-                '{
-                  "type":"object",
-                  "properties":{
-                    "value":{"type":"string","minLength":2,"maxLength":4}
-                  }
-                }'
-            ],
-            [
-                '{
-                  "value":"wo7u"
-                }',
-                '{
-                  "type":"object",
-                  "properties":{
-                    "value":{"type":"string","minLength":2,"maxLength":4}
-                  }
-                }'
-            ],
+        yield [
+            '{
+              "value":"wo"
+            }',
+            '{
+              "type":"object",
+              "properties":{
+                "value":{"type":"string","minLength":2,"maxLength":4}
+              }
+            }'
+        ];
+        yield [
+            '{
+              "value":"wo7u"
+            }',
+            '{
+              "type":"object",
+              "properties":{
+                "value":{"type":"string","minLength":2,"maxLength":4}
+              }
+            }'
         ];
     }
 }
diff -pruN 6.4.1-1/tests/Constraints/MinMaxPropertiesTest.php 6.5.2-1/tests/Constraints/MinMaxPropertiesTest.php
--- 6.4.1-1/tests/Constraints/MinMaxPropertiesTest.php	2025-04-04 13:08:07.000000000 +0000
+++ 6.5.2-1/tests/Constraints/MinMaxPropertiesTest.php	2025-09-09 09:42:27.000000000 +0000
@@ -1,11 +1,6 @@
 <?php
 
-/*
- * This file is part of the JsonSchema package.
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
+declare(strict_types=1);
 
 namespace JsonSchema\Tests\Constraints;
 
@@ -13,139 +8,130 @@ use JsonSchema\Constraints\Constraint;
 
 class MinMaxPropertiesTest extends BaseTestCase
 {
+    /** @var bool */
     protected $validateSchema = true;
 
-    /**
-     * {@inheritdoc}
-     */
-    public function getValidTests(): array
+    public function getValidTests(): \Generator
     {
-        return [
-            'Empty object with minProperties: 0' => [
-                'input' => '{
-                  "value": {}
-                }',
-                'schema' => '{
-                  "type": "object",
-                  "properties": {
-                    "value": {"type": "object", "minProperties": 0}
-                  }
-                }'
-            ],
-            'Empty object with maxProperties: 1' => [
-                'input' => '{
-                  "value": {}
-                }',
-                'schema' => '{
-                  "type": "object",
-                  "properties": {
-                    "value": {"type": "object", "maxProperties": 1}
-                  }
-                }'
-            ],
-            'Empty object with minProperties: 0 and maxProperties: 1' => [
-                'input' => '{
-                  "value": {}
-                }',
-                'schema' => '{
-                  "type": "object",
-                  "properties": {
-                    "value": {"type": "object", "minProperties": 0,"maxProperties": 1}
-                  }
-                }'
-            ],
-            'Object with two properties with minProperties: 1 and maxProperties: 2' => [
-                'input' => '{
-                  "value": {"foo": 1, "bar": 2}
-                }',
-                'schema' => '{
-                  "type": "object",
-                  "properties": {
-                    "value": {"type": "object", "minProperties": 1,"maxProperties": 2}
-                  }
-                }'
-            ],
-            'Empty array with minProperties: 1 and maxProperties: 2' => [
-                'input' => '{
-                  "value": []
-                }',
-                'schema' => '{
-                  "properties": {
-                    "value": {"minProperties": 1,"maxProperties": 2}
-                  }
-                }',
-                'checkMode' => Constraint::CHECK_MODE_NORMAL,
-            ],
-            'Array with two items with maxProperties: 1' => [
-                'input' => '{
-                  "value": [1, 2]
-                }',
-                'schema' => '{
-                  "properties": {
-                    "value": {"maxProperties": 1}
-                  }
-                }'
-            ],
+        yield 'Empty object with minProperties: 0' => [
+            'input' => '{
+              "value": {}
+            }',
+            'schema' => '{
+              "type": "object",
+              "properties": {
+                "value": {"type": "object", "minProperties": 0}
+              }
+            }'
+        ];
+        yield 'Empty object with maxProperties: 1' => [
+            'input' => '{
+              "value": {}
+            }',
+            'schema' => '{
+              "type": "object",
+              "properties": {
+                "value": {"type": "object", "maxProperties": 1}
+              }
+            }'
+        ];
+        yield 'Empty object with minProperties: 0 and maxProperties: 1' => [
+            'input' => '{
+              "value": {}
+            }',
+            'schema' => '{
+              "type": "object",
+              "properties": {
+                "value": {"type": "object", "minProperties": 0,"maxProperties": 1}
+              }
+            }'
+        ];
+        yield 'Object with two properties with minProperties: 1 and maxProperties: 2' => [
+            'input' => '{
+              "value": {"foo": 1, "bar": 2}
+            }',
+            'schema' => '{
+              "type": "object",
+              "properties": {
+                "value": {"type": "object", "minProperties": 1,"maxProperties": 2}
+              }
+            }'
+        ];
+        yield 'Empty array with minProperties: 1 and maxProperties: 2' => [
+            'input' => '{
+              "value": []
+            }',
+            'schema' => '{
+              "properties": {
+                "value": {"minProperties": 1,"maxProperties": 2}
+              }
+            }',
+            'checkMode' => Constraint::CHECK_MODE_NORMAL,
+        ];
+        yield 'Array with two items with maxProperties: 1' => [
+            'input' => '{
+              "value": [1, 2]
+            }',
+            'schema' => '{
+              "properties": {
+                "value": {"maxProperties": 1}
+              }
+            }'
         ];
     }
 
-    /**
-     * {@inheritdoc}
-     */
-    public function getInvalidTests(): array
+    public function getInvalidTests(): \Generator
     {
-        return [
-            'Empty object with minProperties: 1' => [
-                'input' => '{
-                  "value": {}
-                }',
-                'schema' => '{
-                  "type": "object",
-                  "properties": {
-                    "value": {"type": "object", "minProperties": 1}
-                  }
-                }'
-            ],
-            'Empty object with minProperties' => [
-                'input' => '{}',
-                'schema' => '{
-                  "type": "object",
-                  "properties": {
-                    "propertyOne": {
-                      "type": "string"
-                    },
-                    "propertyTwo": {
-                      "type": "string"
-                    }
-                  },
-                  "minProperties": 1
-                }'
-            ],
-            'Object with two properties with maxProperties: 1' => [
-                'input' => '{
-                  "value": {
-                    "propertyOne": "valueOne",
-                    "propertyTwo": "valueTwo"
-                  }
-                }',
-                'schema' => '{
-                  "type": "object",
-                  "properties": {
-                    "value": {"type": "object", "maxProperties": 1}
-                  }
-                }'
-            ],
-            'Object with two properties with minProperties: 1 and maxProperties: 2' => [
-                'input' => '{
-                  "value": {"foo": 1, "bar": 2, "baz": 3}
-                }',
-                'schema' => '{
-                  "type": "object",
-                  "properties": {
-                    "value": {"type": "object", "minProperties": 1,"maxProperties": 2}
-                  }
-                }'
-            ],
+        yield 'Empty object with minProperties: 1' => [
+            'input' => '{
+              "value": {}
+            }',
+            'schema' => '{
+              "type": "object",
+              "properties": {
+                "value": {"type": "object", "minProperties": 1}
+              }
+            }'
+        ];
+        yield 'Empty object with minProperties' => [
+            'input' => '{}',
+            'schema' => '{
+              "type": "object",
+              "properties": {
+                "propertyOne": {
+                  "type": "string"
+                },
+                "propertyTwo": {
+                  "type": "string"
+                }
+              },
+              "minProperties": 1
+            }'
+        ];
+        yield 'Object with two properties with maxProperties: 1' => [
+            'input' => '{
+              "value": {
+                "propertyOne": "valueOne",
+                "propertyTwo": "valueTwo"
+              }
+            }',
+            'schema' => '{
+              "type": "object",
+              "properties": {
+                "value": {"type": "object", "maxProperties": 1}
+              }
+            }'
+        ];
+        yield 'Object with two properties with minProperties: 1 and maxProperties: 2' => [
+            'input' => '{
+              "value": {"foo": 1, "bar": 2, "baz": 3}
+            }',
+            'schema' => '{
+              "type": "object",
+              "properties": {
+                "value": {"type": "object", "minProperties": 1,"maxProperties": 2}
+              }
+            }'
         ];
     }
 }
diff -pruN 6.4.1-1/tests/Constraints/MinimumMaximumTest.php 6.5.2-1/tests/Constraints/MinimumMaximumTest.php
--- 6.4.1-1/tests/Constraints/MinimumMaximumTest.php	2025-04-04 13:08:07.000000000 +0000
+++ 6.5.2-1/tests/Constraints/MinimumMaximumTest.php	2025-09-09 09:42:27.000000000 +0000
@@ -1,176 +1,168 @@
 <?php
 
-/*
- * This file is part of the JsonSchema package.
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
+declare(strict_types=1);
 
 namespace JsonSchema\Tests\Constraints;
 
 class MinimumMaximumTest extends BaseTestCase
 {
+    /** @var bool */
     protected $validateSchema = true;
 
-    public function getInvalidTests(): array
+    public function getInvalidTests(): \Generator
     {
-        return [
-            [
-                '{
-                  "value":2
-                }',
-                '{
-                  "type":"object",
-                  "properties":{
-                    "value":{"type":"integer","minimum":4}
-                  }
-                }'
-            ],
-            [
-                '{"value": 3}',
-                '{
-                    "type": "object",
-                    "properties": {
-                        "value": {"type": "integer", "minimum": 3, "exclusiveMinimum": true}
-                    }
-                }'
-            ],
-            [
-                '{
-                  "value":16
-                }',
-                '{
-                  "type":"object",
-                  "properties":{
-                    "value":{"type":"integer","maximum":8}
-                  }
-                }'
-            ],
-            [
-                '{"value": 8}',
-                '{
-                    "type": "object",
-                    "properties": {
-                        "value": {"type": "integer", "maximum": 8, "exclusiveMaximum": true}
-                    }
-                }'
-            ],
-            [
-                '{"value": 4}',
-                '{
-                    "type": "object",
-                    "properties": {
-                        "value": {"type": "integer", "exclusiveMinimum": true}
-                    }
-                }'
-            ],
-            [
-                '{"value": 4}',
-                '{
-                    "type": "object",
-                    "properties": {
-                        "value": {"type": "integer", "exclusiveMaximum": true}
-                    }
-                }'
-            ],
-            [
-                '{"value": 4}',
-                '{
-                    "type": "object",
-                    "properties": {
-                        "value": {"type": "integer", "minimum": 5, "exclusiveMinimum": false}
-                    }
-                }'
-            ],
-            [
-                '{"value": 4}',
-                '{
-                    "properties": {
-                        "value": {"type": "integer", "maximum": 3, "exclusiveMaximum": false}
-                    }
-                }'
-            ],
-            [
-                '{"value": 0.00}',
-                '{
-                    "properties": {
-                        "value": {"type": "number", "minimum": 0, "exclusiveMinimum": true}
-                    }
-                }'
-            ],
-            [
-                '{"value": 0.00}',
-                '{
-                    "properties": {
-                        "value": {"type": "number", "maximum": 0, "exclusiveMaximum": true}
-                    }
-                }'
-            ]
+        yield [
+            '{
+              "value":2
+            }',
+            '{
+              "type":"object",
+              "properties":{
+                "value":{"type":"integer","minimum":4}
+              }
+            }'
+        ];
+        yield [
+            '{"value": 3}',
+            '{
+                "type": "object",
+                "properties": {
+                    "value": {"type": "integer", "minimum": 3, "exclusiveMinimum": true}
+                }
+            }'
+        ];
+        yield [
+            '{
+              "value":16
+            }',
+            '{
+              "type":"object",
+              "properties":{
+                "value":{"type":"integer","maximum":8}
+              }
+            }'
+        ];
+        yield [
+            '{"value": 8}',
+            '{
+                "type": "object",
+                "properties": {
+                    "value": {"type": "integer", "maximum": 8, "exclusiveMaximum": true}
+                }
+            }'
+        ];
+        yield [
+            '{"value": 4}',
+            '{
+                "type": "object",
+                "properties": {
+                    "value": {"type": "integer", "exclusiveMinimum": true}
+                }
+            }'
+        ];
+        yield [
+            '{"value": 4}',
+            '{
+                "type": "object",
+                "properties": {
+                    "value": {"type": "integer", "exclusiveMaximum": true}
+                }
+            }'
+        ];
+        yield [
+            '{"value": 4}',
+            '{
+                "type": "object",
+                "properties": {
+                    "value": {"type": "integer", "minimum": 5, "exclusiveMinimum": false}
+                }
+            }'
+        ];
+        yield [
+            '{"value": 4}',
+            '{
+                "properties": {
+                    "value": {"type": "integer", "maximum": 3, "exclusiveMaximum": false}
+                }
+            }'
+        ];
+        yield [
+            '{"value": 0.00}',
+            '{
+                "properties": {
+                    "value": {"type": "number", "minimum": 0, "exclusiveMinimum": true}
+                }
+            }'
+        ];
+        yield [
+            '{"value": 0.00}',
+            '{
+                "properties": {
+                    "value": {"type": "number", "maximum": 0, "exclusiveMaximum": true}
+                }
+            }'
         ];
     }
 
-    public function getValidTests(): array
+    public function getValidTests(): \Generator
     {
-        return [
-            [
-                '{
-                  "value":6
-                }',
-                '{
-                  "type":"object",
-                  "properties":{
-                    "value":{"type":"integer","minimum":4}
-                  }
-                }'
-            ],
-            [
-                '{
-                  "value":6
-                }',
-                '{
-                  "type":"object",
-                  "properties":{
-                    "value":{"type":"integer","maximum":8}
-                  }
-                }'
-            ],
-            [
-                '{"value": 6}',
-                '{
-                    "type": "object",
-                    "properties": {
-                        "value": {"type": "integer", "minimum": 6, "exclusiveMinimum": false}
-                    }
-                }'
-            ],
-            [
-                '{"value": 6}',
-                '{
-                    "type": "object",
-                    "properties": {
-                        "value": {"type": "integer", "maximum": 6, "exclusiveMaximum": false}
-                    }
-                }'
-            ],
-            [
-                '{"value": 6}',
-                '{
-                    "type": "object",
-                    "properties": {
-                        "value": {"type": "integer", "minimum": 6}
-                    }
-                }'
-            ],
-            [
-                '{"value": 6}',
-                '{
-                    "type": "object",
-                    "properties": {
-                        "value": {"type": "integer", "maximum": 6}
-                    }
-                }'
-            ]
+        yield [
+            '{
+              "value":6
+            }',
+            '{
+              "type":"object",
+              "properties":{
+                "value":{"type":"integer","minimum":4}
+              }
+            }'
+        ];
+        yield [
+            '{
+              "value":6
+            }',
+            '{
+              "type":"object",
+              "properties":{
+                "value":{"type":"integer","maximum":8}
+              }
+            }'
+        ];
+        yield [
+            '{"value": 6}',
+            '{
+                "type": "object",
+                "properties": {
+                    "value": {"type": "integer", "minimum": 6, "exclusiveMinimum": false}
+                }
+            }'
+        ];
+        yield [
+            '{"value": 6}',
+            '{
+                "type": "object",
+                "properties": {
+                    "value": {"type": "integer", "maximum": 6, "exclusiveMaximum": false}
+                }
+            }'
+        ];
+        yield [
+            '{"value": 6}',
+            '{
+                "type": "object",
+                "properties": {
+                    "value": {"type": "integer", "minimum": 6}
+                }
+            }'
+        ];
+        yield [
+            '{"value": 6}',
+            '{
+                "type": "object",
+                "properties": {
+                    "value": {"type": "integer", "maximum": 6}
+                }
+            }'
         ];
     }
 }
diff -pruN 6.4.1-1/tests/Constraints/NotTest.php 6.5.2-1/tests/Constraints/NotTest.php
--- 6.4.1-1/tests/Constraints/NotTest.php	2025-04-04 13:08:07.000000000 +0000
+++ 6.5.2-1/tests/Constraints/NotTest.php	2025-09-09 09:42:27.000000000 +0000
@@ -1,102 +1,94 @@
 <?php
 
-/*
- * This file is part of the JsonSchema package.
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
+declare(strict_types=1);
 
 namespace JsonSchema\Tests\Constraints;
 
 class NotTest extends BaseTestCase
 {
+    /** @var bool */
     protected $validateSchema = true;
 
-    public function getInvalidTests(): array
+    public function getInvalidTests(): \Generator
     {
-        return [
-            [
-                '{
-                    "x": [1, 2]
-                }',
-                '{
-                    "properties": {
-                        "x": {
-                            "not": {
-                                "type": "array",
-                                "items": {"type": "integer"},
-                                "minItems": 2
-                            }
+        yield [
+            '{
+                "x": [1, 2]
+            }',
+            '{
+                "properties": {
+                    "x": {
+                        "not": {
+                            "type": "array",
+                            "items": {"type": "integer"},
+                            "minItems": 2
                         }
                     }
-                }'
-            ],
-            [ // check that a missing, required property is correctly validated
-                '{"y": "foo"}',
-                '{
-                    "type": "object",
-                    "required": ["x"],
-                    "properties": {
-                        "x": {
-                            "not": {
-                                "type": "null"
-                            }
+                }
+            }'
+        ];
+        yield 'check that a missing, required property is correctly validated' => [
+            '{"y": "foo"}',
+            '{
+                "type": "object",
+                "required": ["x"],
+                "properties": {
+                    "x": {
+                        "not": {
+                            "type": "null"
                         }
                     }
-                }'
-            ]
+                }
+            }'
         ];
     }
 
-    public function getValidTests(): array
+    public function getValidTests(): \Generator
     {
-        return [
-            [
-                '{
-                    "x": [1]
-                }',
-                '{
-                    "properties": {
-                        "x": {
-                            "not": {
-                                "type": "array",
-                                "items": {"type": "integer"},
-                                "minItems": 2
-                            }
+        yield [
+            '{
+                "x": [1]
+            }',
+            '{
+                "properties": {
+                    "x": {
+                        "not": {
+                            "type": "array",
+                            "items": {"type": "integer"},
+                            "minItems": 2
                         }
                     }
-                }'
-            ],
-            [
-                '{
-                    "x": ["foo", 2]
-                }',
-                '{
-                    "properties": {
-                        "x": {
-                            "not": {
-                                "type": "array",
-                                "items": {"type": "integer"},
-                                "minItems": 2
-                            }
+                }
+            }'
+        ];
+        yield [
+            '{
+                "x": ["foo", 2]
+            }',
+            '{
+                "properties": {
+                    "x": {
+                        "not": {
+                            "type": "array",
+                            "items": {"type": "integer"},
+                            "minItems": 2
                         }
                     }
-                }'
-            ],
-            [ // check that a missing, non-required property isn't validated
-                '{"y": "foo"}',
-                '{
-                    "type": "object",
-                    "properties": {
-                        "x": {
-                            "not": {
-                                "type": "null"
-                            }
+                }
+            }'
+        ];
+        yield "check that a missing, non-required property isn't validated" => [
+            '{"y": "foo"}',
+            '{
+                "type": "object",
+                "properties": {
+                    "x": {
+                        "not": {
+                            "type": "null"
                         }
                     }
-                }'
-            ]
+                }
+            }'
         ];
     }
 }
diff -pruN 6.4.1-1/tests/Constraints/NumberAndIntegerTypesTest.php 6.5.2-1/tests/Constraints/NumberAndIntegerTypesTest.php
--- 6.4.1-1/tests/Constraints/NumberAndIntegerTypesTest.php	2025-04-04 13:08:07.000000000 +0000
+++ 6.5.2-1/tests/Constraints/NumberAndIntegerTypesTest.php	2025-09-09 09:42:27.000000000 +0000
@@ -1,118 +1,104 @@
 <?php
 
-/*
- * This file is part of the JsonSchema package.
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
+declare(strict_types=1);
 
 namespace JsonSchema\Tests\Constraints;
 
 class NumberAndIntegerTypesTest extends BaseTestCase
 {
+    /** @var bool */
     protected $validateSchema = true;
 
-    public function getInvalidTests(): array
+    public function getInvalidTests(): \Generator
     {
-        return [
-            [
-                '{
-                  "integer": 1.4
-                }',
-                '{
-                  "type":"object",
-                  "properties":{
-                    "integer":{"type":"integer"}
-                  }
-                }'
-            ],
-            [
-                '{"integer": 1.001}',
-                '{
-                    "type": "object",
-                    "properties": {
-                        "integer": {"type": "integer"}
-                    }
-                }'
-            ],
-            [
-                '{"integer": true}',
-                '{
-                    "type": "object",
-                    "properties": {
-                        "integer": {"type": "integer"}
-                    }
-                }'
-            ],
-            [
-                '{"number": "x"}',
-                '{
-                    "type": "object",
-                    "properties": {
-                        "number": {"type": "number"}
-                    }
-                }'
-            ]
+        yield [
+            'input' => '{ "integer": 1.4 }',
+            'schema' => '{
+              "type":"object",
+              "properties":{
+                "integer":{"type":"integer"}
+              }
+            }'
+        ];
+        yield [
+            'input' => '{"integer": 1.001}',
+            'schema' => '{
+                "type": "object",
+                "properties": {
+                    "integer": {"type": "integer"}
+                }
+            }'
+        ];
+        yield [
+            'input' => '{"integer": true}',
+            'schema' => '{
+                "type": "object",
+                "properties": {
+                    "integer": {"type": "integer"}
+                }
+            }'
+        ];
+        yield [
+            'input' => '{"number": "x"}',
+            'schema' => '{
+                "type": "object",
+                "properties": {
+                    "number": {"type": "number"}
+                }
+            }'
         ];
     }
 
-    public function getValidTests(): array
+    public function getValidTests(): \Generator
     {
-        return [
-            [
-                '{
-                  "integer": 1
-                }',
-                '{
-                  "type":"object",
-                  "properties":{
-                    "integer":{"type":"integer"}
-                  }
-                }'
-            ],
-            [
-                '{
-                  "number": 1.4
-                }',
-                '{
-                  "type":"object",
-                  "properties":{
-                    "number":{"type":"number"}
-                  }
-                }'
-            ],
-            [
-                '{"number": 1e5}',
-                '{
-                    "type": "object",
-                    "properties": {
-                        "number": {"type": "number"}
-                    }
-                }'
-            ],
-            [
-                '{"number": 1}',
-                '{
-                    "type": "object",
-                    "properties": {
-                        "number": {"type": "number"}
+        yield [
+            'input' => '{ "integer": 1 }',
+            'schema' => '{
+              "type":"object",
+              "properties":{
+                "integer":{"type":"integer"}
+              }
+            }'
+        ];
+        yield [
+            'input' => '{ "number": 1.4 }',
+            'schema' => '{
+              "type":"object",
+              "properties":{
+                "number":{"type":"number"}
+              }
+            }'
+        ];
+        yield [
+            'input' => '{"number": 1e5}',
+            'schema' => '{
+                "type": "object",
+                "properties": {
+                    "number": {"type": "number"}
+                }
+            }'
+        ];
+        yield [
+            'input' => '{"number": 1}',
+            'schema' => '{
+                "type": "object",
+                "properties": {
+                    "number": {"type": "number"}
 
+                }
+            }'
+        ];
+        yield [
+            'input' => '{"number": -49.89}',
+            'schema' => '{
+                "type": "object",
+                "properties": {
+                    "number": {
+                      "type": "number",
+                      "multipleOf": 0.01
                     }
-                }'
-            ],
-            [
-                '{"number": -49.89}',
-                '{
-                    "type": "object",
-                    "properties": {
-                        "number": {
-                          "type": "number",
-                          "multipleOf": 0.01
-                        }
-                    }
-                }'
-            ]
+                }
+            }'
         ];
     }
 }
diff -pruN 6.4.1-1/tests/Constraints/OfPropertiesTest.php 6.5.2-1/tests/Constraints/OfPropertiesTest.php
--- 6.4.1-1/tests/Constraints/OfPropertiesTest.php	2025-04-04 13:08:07.000000000 +0000
+++ 6.5.2-1/tests/Constraints/OfPropertiesTest.php	2025-09-09 09:42:27.000000000 +0000
@@ -1,240 +1,231 @@
 <?php
-/*
- * This file is part of the JsonSchema package.
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
+
+declare(strict_types=1);
 
 namespace JsonSchema\Tests\Constraints;
 
 use JsonSchema\Constraints\Constraint;
 use JsonSchema\Validator;
 
-/**
- * Class OfPropertiesTest
- */
 class OfPropertiesTest extends BaseTestCase
 {
+    /** @var bool */
     protected $validateSchema = true;
 
-    public function getValidTests(): array
+    public function getValidTests(): \Generator
     {
-        return [
-            [
-                '{"prop1": "abc"}',
-                '{
-                  "type": "object",
-                  "properties": {
-                    "prop1": {"type": "string"},
-                    "prop2": {
-                      "oneOf": [
-                        {"type": "number"},
-                        {"type": "string"}
-                      ]
-                    }
-                  },
-                  "required": ["prop1"]
-                }'
-            ],
-            [
-                '{"prop1": "abc", "prop2": 23}',
-                '{
-                  "type": "object",
-                  "properties": {
-                    "prop1": {"type": "string"},
-                    "prop2": {
-                      "oneOf": [
-                        {"type": "number"},
-                        {"type": "string"}
-                      ]
-                    }
-                  },
-                  "required": ["prop1"]
-                }'
-            ],
+        yield [
+            '{"prop1": "abc"}',
+            '{
+              "type": "object",
+              "properties": {
+                "prop1": {"type": "string"},
+                "prop2": {
+                  "oneOf": [
+                    {"type": "number"},
+                    {"type": "string"}
+                  ]
+                }
+              },
+              "required": ["prop1"]
+            }'
+        ];
+        yield [
+            '{"prop1": "abc", "prop2": 23}',
+            '{
+              "type": "object",
+              "properties": {
+                "prop1": {"type": "string"},
+                "prop2": {
+                  "oneOf": [
+                    {"type": "number"},
+                    {"type": "string"}
+                  ]
+                }
+              },
+              "required": ["prop1"]
+            }'
         ];
     }
 
-    public function getInvalidTests(): array
+    public function getInvalidTests(): \Generator
     {
-        return [
+        yield [
+            '{"prop1": "abc", "prop2": []}',
+            '{
+              "type": "object",
+              "properties": {
+                "prop1": {"type": "string"},
+                "prop2": {
+                  "oneOf": [
+                    {"type": "number"},
+                    {"type": "string"}
+                  ]
+                }
+              },
+              "required": ["prop1"]
+            }',
+            null,
             [
-                '{"prop1": "abc", "prop2": []}',
-                '{
-                  "type": "object",
-                  "properties": {
-                    "prop1": {"type": "string"},
-                    "prop2": {
-                      "oneOf": [
-                        {"type": "number"},
-                        {"type": "string"}
-                      ]
-                    }
-                  },
-                  "required": ["prop1"]
-                }',
-                null,
                 [
-                    [
-                        'property'   => 'prop2',
-                        'pointer'    => '/prop2',
-                        'message'    => 'Array value found, but a string is required',
-                        'constraint' => [
-                            'name' => 'type',
-                            'params' => [
-                                'expected'   => 'a string',
-                                'found'      => 'array'
-                            ]
-                        ],
-                        'context'    => Validator::ERROR_DOCUMENT_VALIDATION
+                    'property'   => 'prop2',
+                    'pointer'    => '/prop2',
+                    'message'    => 'Array value found, but a string is required',
+                    'constraint' => [
+                        'name' => 'type',
+                        'params' => [
+                            'expected'   => 'a string',
+                            'found'      => 'array'
+                        ]
                     ],
-                    [
-                        'property'   => 'prop2',
-                        'pointer'    => '/prop2',
-                        'message'    => 'Array value found, but a number is required',
-                        'constraint' => [
-                            'name' => 'type',
-                            'params' => [
-                                'expected'   => 'a number',
-                                'found'      => 'array'
-                            ]
-                        ],
-                        'context'    => Validator::ERROR_DOCUMENT_VALIDATION
+                    'context'    => Validator::ERROR_DOCUMENT_VALIDATION
+                ],
+                [
+                    'property'   => 'prop2',
+                    'pointer'    => '/prop2',
+                    'message'    => 'Array value found, but a number is required',
+                    'constraint' => [
+                        'name' => 'type',
+                        'params' => [
+                            'expected'   => 'a number',
+                            'found'      => 'array'
+                        ]
                     ],
-                    [
-                        'property'   => 'prop2',
-                        'pointer'    => '/prop2',
-                        'message'    => 'Failed to match exactly one schema',
-                        'constraint' => [
-                            'name' => 'oneOf',
-                            'params' => []
-                        ],
-                        'context'    => Validator::ERROR_DOCUMENT_VALIDATION
+                    'context'    => Validator::ERROR_DOCUMENT_VALIDATION
+                ],
+                [
+                    'property'   => 'prop2',
+                    'pointer'    => '/prop2',
+                    'message'    => 'Failed to match exactly one schema',
+                    'constraint' => [
+                        'name' => 'oneOf',
+                        'params' => []
                     ],
+                    'context'    => Validator::ERROR_DOCUMENT_VALIDATION
                 ],
             ],
-            [
-                '{"prop1": [1,2]}',
-                '{
-                  "type": "object",
-                  "properties": {
-                    "prop1": {
-                      "oneOf": [
-                        {
-                          "type": "string",
-                          "pattern": "^[a-z]*$"
-                        },
-                        {
-                          "type": "string",
-                          "pattern": "^[A-Z]*$"
-                        }
-                      ]
+        ];
+        yield [
+            '{"prop1": [1,2]}',
+            '{
+              "type": "object",
+              "properties": {
+                "prop1": {
+                  "oneOf": [
+                    {
+                      "type": "string",
+                      "pattern": "^[a-z]*$"
+                    },
+                    {
+                      "type": "string",
+                      "pattern": "^[A-Z]*$"
                     }
-                  }
-                }'
-            ],
-            [
-                '{"prop1": [1,2]}',
-                '{
-                  "type": "object",
-                  "properties": {
-                    "prop1": {
-                      "anyOf": [
-                        {
-                          "type": "string",
-                          "pattern": "^[A-Z]*$"
-                        }
-                      ]
+                  ]
+                }
+              }
+            }'
+        ];
+        yield [
+            '{"prop1": [1,2]}',
+            '{
+              "type": "object",
+              "properties": {
+                "prop1": {
+                  "anyOf": [
+                    {
+                      "type": "string",
+                      "pattern": "^[A-Z]*$"
                     }
-                  }
-                }'
-            ],
-            [
-                '{"prop1": [1,2]}',
-                '{
-                  "type": "object",
-                  "properties": {
-                    "prop1": {
-                      "anyOf": [
-                        {
-                          "type": "number"
-                        },
-                        {
-                          "type": "string",
-                          "pattern": "^[A-Z]*$"
-                        }
-                      ]
+                  ]
+                }
+              }
+            }'
+        ];
+        yield [
+            '{"prop1": [1,2]}',
+            '{
+              "type": "object",
+              "properties": {
+                "prop1": {
+                  "anyOf": [
+                    {
+                      "type": "number"
+                    },
+                    {
+                      "type": "string",
+                      "pattern": "^[A-Z]*$"
                     }
-                  }
-                }'
-            ],
-            [
-                '{"prop1": [1,2]}',
-                '{
-                  "type": "object",
-                  "properties": {
-                    "prop1": {
-                      "anyOf": [
-                        {
-                          "type": "string"
-                        },
-                        {
-                          "type": "string",
-                          "pattern": "^[A-Z]*$"
-                        }
-                      ]
+                  ]
+                }
+              }
+            }'
+        ];
+        yield [
+            '{"prop1": [1,2]}',
+            '{
+              "type": "object",
+              "properties": {
+                "prop1": {
+                  "anyOf": [
+                    {
+                      "type": "string"
+                    },
+                    {
+                      "type": "string",
+                      "pattern": "^[A-Z]*$"
                     }
-                  }
-                }'
-            ],
-            [
-                '{"prop1": [1,2]}',
-                '{
-                  "type": "object",
-                  "properties": {
-                    "prop1": {
-                      "anyOf": [
-                        {
-                          "type": "string",
-                          "pattern": "^[a-z]*$"
-                        },
-                        {
-                          "type": "string",
-                          "pattern": "^[A-Z]*$"
-                        }
-                      ]
+                  ]
+                }
+              }
+            }'
+        ];
+        yield [
+            '{"prop1": [1,2]}',
+            '{
+              "type": "object",
+              "properties": {
+                "prop1": {
+                  "anyOf": [
+                    {
+                      "type": "string",
+                      "pattern": "^[a-z]*$"
+                    },
+                    {
+                      "type": "string",
+                      "pattern": "^[A-Z]*$"
                     }
-                  }
-                }'
-            ],
-            [
-                '{"prop1": [1,2]}',
-                '{
-                  "type": "object",
-                  "properties": {
-                    "prop1": {
-                      "anyOf": [
-                        {
-                          "type": "number"
-                        },
-                        {
-                          "type": "string"
-                        },
-                        {
-                          "type": "string"
-                        }
-                      ]
+                  ]
+                }
+              }
+            }'
+        ];
+        yield [
+            '{"prop1": [1,2]}',
+            '{
+              "type": "object",
+              "properties": {
+                "prop1": {
+                  "anyOf": [
+                    {
+                      "type": "number"
+                    },
+                    {
+                      "type": "string"
+                    },
+                    {
+                      "type": "string"
                     }
-                  }
-                }'
-            ]
+                  ]
+                }
+              }
+            }'
         ];
     }
 
     public function testNoPrematureAnyOfException(): void
     {
-        $schema = json_decode('{
+        $schema = json_decode(
+            '{
             "type": "object",
             "properties": {
                 "propertyOne": {
@@ -244,8 +235,10 @@ class OfPropertiesTest extends BaseTestC
                     ]
                 }
             }
-        }');
-        $data = json_decode('{"propertyOne":"ABC"}');
+        }',
+            false
+        );
+        $data = json_decode('{"propertyOne":"ABC"}', false);
 
         $v = new Validator();
         $v->validate($data, $schema, Constraint::CHECK_MODE_EXCEPTIONS);
@@ -254,7 +247,8 @@ class OfPropertiesTest extends BaseTestC
 
     public function testNoPrematureOneOfException(): void
     {
-        $schema = json_decode('{
+        $schema = json_decode(
+            '{
             "type": "object",
             "properties": {
                 "propertyOne": {
@@ -264,8 +258,10 @@ class OfPropertiesTest extends BaseTestC
                     ]
                 }
             }
-        }');
-        $data = json_decode('{"propertyOne":"ABC"}');
+        }',
+            false
+        );
+        $data = json_decode('{"propertyOne":"ABC"}', false);
 
         $v = new Validator();
         $v->validate($data, $schema, Constraint::CHECK_MODE_EXCEPTIONS);
diff -pruN 6.4.1-1/tests/Constraints/PatternPropertiesTest.php 6.5.2-1/tests/Constraints/PatternPropertiesTest.php
--- 6.4.1-1/tests/Constraints/PatternPropertiesTest.php	2025-04-04 13:08:07.000000000 +0000
+++ 6.5.2-1/tests/Constraints/PatternPropertiesTest.php	2025-09-09 09:42:27.000000000 +0000
@@ -1,214 +1,200 @@
 <?php
 
-/*
- * This file is part of the JsonSchema package.
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
+declare(strict_types=1);
 
 namespace JsonSchema\Tests\Constraints;
 
 class PatternPropertiesTest extends BaseTestCase
 {
+    /** @var bool */
     protected $validateSchema = true;
 
-    public function getInvalidTests(): array
+    public function getInvalidTests(): \Generator
     {
-        return [
-            // matches pattern but invalid schema for object
-            [
-                json_encode([
-                    'someobject' => [
-                        'foobar' => 'foo',
-                        'barfoo' => 'bar',
+        yield 'matches pattern but invalid schema for object' => [
+            json_encode([
+                'someobject' => [
+                    'foobar' => 'foo',
+                    'barfoo' => 'bar',
+                ]
+            ]),
+            json_encode([
+                'type' => 'object',
+                'patternProperties' => [
+                    '^someobject$' => [
+                        'type' => 'object',
+                        'additionalProperties' => false,
+                        'properties' => [
+                            'barfoo' => [
+                                'type' => 'string',
+                            ],
+                        ]
                     ]
-                ]),
-                json_encode([
-                    'type' => 'object',
-                    'patternProperties' => [
-                        '^someobject$' => [
-                            'type' => 'object',
-                            'additionalProperties' => false,
-                            'properties' => [
-                                'barfoo' => [
-                                    'type' => 'string',
-                                ],
-                            ]
-                        ]
-                    ]
-                ])
-            ],
-            // Does not match pattern
-            [
-                json_encode([
-                        'regex_us' => false,
-                ]),
-                json_encode([
-                        'type' => 'object',
-                        'patternProperties' => [
-                            '^[a-z]+_(jp|de)$' => [
-                                'type' => ['boolean']
-                            ]
-                        ],
-                        'additionalProperties' => false
-                ])
-            ],
-            // Does not match pattern with unicode
-            [
-                json_encode([
-                        '猡猡獛' => false,
-                ]),
-                json_encode([
-                        'type' => 'object',
-                        'patternProperties' => [
-                            '^[\\x{0080}-\\x{006FFF}]+$' => [
-                                'type' => ['boolean']
-                            ]
-                        ],
-                        'additionalProperties' => false
-                ])
-            ],
-            // An invalid regular expression pattern
-            [
-                json_encode([
-                        'regex_us' => false,
-                ]),
-                json_encode([
-                        'type' => 'object',
-                        'patternProperties' => [
-                            '^[a-z+_jp|de)$' => [
-                                'type' => ['boolean']
-                            ]
-                        ],
-                        'additionalProperties' => false
-                ])
-            ],
+                ]
+            ])
+        ];
+        yield 'Does not match pattern' => [
+            json_encode([
+                    'regex_us' => false,
+            ]),
+            json_encode([
+                'type' => 'object',
+                'patternProperties' => [
+                    '^[a-z]+_(jp|de)$' => [
+                        'type' => ['boolean']
+                    ]
+                ],
+                'additionalProperties' => false
+            ])
+        ];
+        yield 'Does not match pattern with unicode' => [
+            json_encode([
+                '猡猡獛' => false,
+            ]),
+            json_encode([
+                'type' => 'object',
+                'patternProperties' => [
+                    '^[\\x{0080}-\\x{006FFF}]+$' => [
+                        'type' => ['boolean']
+                    ]
+                ],
+                'additionalProperties' => false
+            ])
+        ];
+        yield 'An invalid regular expression pattern' => [
+            json_encode([
+                    'regex_us' => false,
+            ]),
+            json_encode([
+                'type' => 'object',
+                'patternProperties' => [
+                    '^[a-z+_jp|de)$' => [
+                        'type' => ['boolean']
+                    ]
+                ],
+                'additionalProperties' => false
+            ])
         ];
     }
 
-    public function getValidTests(): array
+    public function getValidTests(): \Generator
     {
-        return [
-            [
-                // validates pattern schema
-                json_encode([
-                    'someobject' => [
-                        'foobar' => 'foo',
-                        'barfoo' => 'bar',
+        yield 'validates pattern schema' => [
+            json_encode([
+                'someobject' => [
+                    'foobar' => 'foo',
+                    'barfoo' => 'bar',
+                ],
+                'someotherobject' => [
+                    'foobar' => 1234,
+                ],
+                '/products' => [
+                    'get' => []
+                ],
+                '#products' => [
+                    'get' => []
+                ],
+                '+products' => [
+                    'get' => []
+                ],
+                '~products' => [
+                    'get' => []
+                ],
+                '*products' => [
+                    'get' => []
+                ],
+                '%products' => [
+                    'get' => []
+                ]
+            ]),
+            json_encode([
+                'type' => 'object',
+                'additionalProperties' => false,
+                'patternProperties' => [
+                    '^someobject$' => [
+                        'type' => 'object',
+                        'properties' => [
+                            'foobar' => ['type' => 'string'],
+                            'barfoo' => ['type' => 'string'],
+                        ],
                     ],
-                    'someotherobject' => [
-                        'foobar' => 1234,
+                    '^someotherobject$' => [
+                        'type' => 'object',
+                        'properties' => [
+                            'foobar' => ['type' => 'number'],
+                        ],
                     ],
-                    '/products' => [
-                        'get' => []
+                    '^/' => [
+                        'type' => 'object',
+                        'properties' => [
+                            'get' => ['type' => 'array']
+                        ]
                     ],
-                    '#products' => [
-                        'get' => []
+                    '^#' => [
+                        'type' => 'object',
+                        'properties' => [
+                            'get' => ['type' => 'array']
+                        ]
                     ],
-                    '+products' => [
-                        'get' => []
+                    '^\+' => [
+                        'type' => 'object',
+                        'properties' => [
+                            'get' => ['type' => 'array']
+                        ]
                     ],
-                    '~products' => [
-                        'get' => []
+                    '^~' => [
+                        'type' => 'object',
+                        'properties' => [
+                            'get' => ['type' => 'array']
+                        ]
                     ],
-                    '*products' => [
-                        'get' => []
+                    '^\*' => [
+                        'type' => 'object',
+                        'properties' => [
+                            'get' => ['type' => 'array']
+                        ]
                     ],
-                    '%products' => [
-                        'get' => []
-                    ]
-                ]),
-                json_encode([
-                    'type' => 'object',
-                    'additionalProperties' => false,
-                    'patternProperties' => [
-                        '^someobject$' => [
-                            'type' => 'object',
-                            'properties' => [
-                                'foobar' => ['type' => 'string'],
-                                'barfoo' => ['type' => 'string'],
-                            ],
-                        ],
-                        '^someotherobject$' => [
-                            'type' => 'object',
-                            'properties' => [
-                                'foobar' => ['type' => 'number'],
-                            ],
-                        ],
-                        '^/' => [
-                            'type' => 'object',
-                            'properties' => [
-                                'get' => ['type' => 'array']
-                            ]
-                        ],
-                        '^#' => [
-                            'type' => 'object',
-                            'properties' => [
-                                'get' => ['type' => 'array']
-                            ]
-                        ],
-                        '^\+' => [
-                            'type' => 'object',
-                            'properties' => [
-                                'get' => ['type' => 'array']
-                            ]
-                        ],
-                        '^~' => [
-                            'type' => 'object',
-                            'properties' => [
-                                'get' => ['type' => 'array']
-                            ]
-                        ],
-                        '^\*' => [
-                            'type' => 'object',
-                            'properties' => [
-                                'get' => ['type' => 'array']
-                            ]
-                        ],
-                        '^%' => [
-                            'type' => 'object',
-                            'properties' => [
-                                'get' => ['type' => 'array']
-                            ]
-                        ]
-                    ]
-                ])
-            ],
-            [
-                json_encode([
-                        'foobar' => true,
-                        'regex_us' => 'foo',
-                        'regex_de' => 1234
-                ]),
-                json_encode([
+                    '^%' => [
                         'type' => 'object',
                         'properties' => [
-                            'foobar' => ['type' => 'boolean']
-                        ],
-                        'patternProperties' => [
-                            '^[a-z]+_(us|de)$' => [
-                                'type' => ['string', 'integer']
-                            ]
-                        ],
-                        'additionalProperties' => false
-                ])
-            ],
-            // Does match pattern with unicode
-            [
-                json_encode([
-                    'ðæſ' => 'unicode',
-                ]),
-                json_encode([
+                            'get' => ['type' => 'array']
+                        ]
+                    ]
+                ]
+            ])
+        ];
+        yield [
+            json_encode([
+                    'foobar' => true,
+                    'regex_us' => 'foo',
+                    'regex_de' => 1234
+            ]),
+            json_encode([
                     'type' => 'object',
+                    'properties' => [
+                        'foobar' => ['type' => 'boolean']
+                    ],
                     'patternProperties' => [
-                        '^[\\x{0080}-\\x{10FFFF}]+$' => [
-                            'type' => ['string']
+                        '^[a-z]+_(us|de)$' => [
+                            'type' => ['string', 'integer']
                         ]
                     ],
                     'additionalProperties' => false
-                ])
-            ],
+            ])
+        ];
+        yield 'Does match pattern with unicode' => [
+            json_encode([
+                'ðæſ' => 'unicode',
+            ]),
+            json_encode([
+                'type' => 'object',
+                'patternProperties' => [
+                    '^[\\x{0080}-\\x{10FFFF}]+$' => [
+                        'type' => ['string']
+                    ]
+                ],
+                'additionalProperties' => false
+            ])
         ];
     }
 }
diff -pruN 6.4.1-1/tests/Constraints/PatternTest.php 6.5.2-1/tests/Constraints/PatternTest.php
--- 6.4.1-1/tests/Constraints/PatternTest.php	2025-04-04 13:08:07.000000000 +0000
+++ 6.5.2-1/tests/Constraints/PatternTest.php	2025-09-09 09:42:27.000000000 +0000
@@ -1,103 +1,95 @@
 <?php
 
-/*
- * This file is part of the JsonSchema package.
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
+declare(strict_types=1);
 
 namespace JsonSchema\Tests\Constraints;
 
 class PatternTest extends BaseTestCase
 {
+    /** @var bool */
     protected $validateSchema = true;
 
-    public function getInvalidTests(): array
+    public function getInvalidTests(): \Generator
     {
-        return [
-            [
-                '{
-                  "value":"Abacates"
-                }',
-                '{
-                  "type":"object",
-                  "properties":{
-                    "value":{"type":"string","pattern":"^cat"}
-                  },
-                  "additionalProperties":false
-                }'
-            ],
-            [
-                '{"value": "abc"}',
-                '{
-                    "type": "object",
-                    "properties": {
-                        "value": {"type": "string", "pattern": "^a*$"}
-                    },
-                    "additionalProperties": false
-                }'
-            ],
-            [
-                '{"value": "Ã¼"}',
-                '{
-                    "type": "object",
-                    "properties": {
-                        "value": {"type": "string", "pattern": "^ü$"}
-                    },
-                    "additionalProperties": false
-                }'
-            ],
+        yield [
+            '{
+              "value":"Abacates"
+            }',
+            '{
+              "type":"object",
+              "properties":{
+                "value":{"type":"string","pattern":"^cat"}
+              },
+              "additionalProperties":false
+            }'
+        ];
+        yield [
+            '{"value": "abc"}',
+            '{
+                "type": "object",
+                "properties": {
+                    "value": {"type": "string", "pattern": "^a*$"}
+                },
+                "additionalProperties": false
+            }'
+        ];
+        yield [
+            '{"value": "Ã¼"}',
+            '{
+                "type": "object",
+                "properties": {
+                    "value": {"type": "string", "pattern": "^ü$"}
+                },
+                "additionalProperties": false
+            }'
         ];
     }
 
-    public function getValidTests(): array
+    public function getValidTests(): \Generator
     {
-        return [
-            [
-                '{
-                  "value":"Abacates"
-                }',
-                '{
-                  "type":"object",
-                  "properties":{
-                    "value":{"type":"string","pattern":"tes$"}
-                  },
-                  "additionalProperties":false
-                }'
-            ],
-            [
-                '{
-                  "value":"Abacates"
-                }',
-                '{
-                  "type":"object",
-                  "properties":{
-                    "value":{"type":"string","pattern":"cat"}
-                  },
-                  "additionalProperties":false
-                }'
-            ],
-            [
-                '{"value": "aaa"}',
-                '{
-                    "type": "object",
-                    "properties": {
-                        "value": {"type": "string", "pattern": "^a*$"}
-                    },
-                    "additionalProperties": false
-                }'
-            ],
-            [
-                '{"value": "↓æ→"}',
-                '{
-                    "type": "object",
-                    "properties": {
-                        "value": {"type": "string", "pattern": "^↓æ.$"}
-                    },
-                    "additionalProperties": false
-                }'
-            ]
+        yield [
+            '{
+              "value":"Abacates"
+            }',
+            '{
+              "type":"object",
+              "properties":{
+                "value":{"type":"string","pattern":"tes$"}
+              },
+              "additionalProperties":false
+            }'
+        ];
+        yield [
+            '{
+              "value":"Abacates"
+            }',
+            '{
+              "type":"object",
+              "properties":{
+                "value":{"type":"string","pattern":"cat"}
+              },
+              "additionalProperties":false
+            }'
+        ];
+        yield [
+            '{"value": "aaa"}',
+            '{
+                "type": "object",
+                "properties": {
+                    "value": {"type": "string", "pattern": "^a*$"}
+                },
+                "additionalProperties": false
+            }'
+        ];
+        yield [
+            '{"value": "↓æ→"}',
+            '{
+                "type": "object",
+                "properties": {
+                    "value": {"type": "string", "pattern": "^↓æ.$"}
+                },
+                "additionalProperties": false
+            }'
         ];
     }
 }
diff -pruN 6.4.1-1/tests/Constraints/PointerTest.php 6.5.2-1/tests/Constraints/PointerTest.php
--- 6.4.1-1/tests/Constraints/PointerTest.php	2025-04-04 13:08:07.000000000 +0000
+++ 6.5.2-1/tests/Constraints/PointerTest.php	2025-09-09 09:42:27.000000000 +0000
@@ -1,11 +1,6 @@
 <?php
 
-/*
- * This file is part of the JsonSchema package.
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
+declare(strict_types=1);
 
 namespace JsonSchema\Tests\Constraints;
 
diff -pruN 6.4.1-1/tests/Constraints/ReadOnlyTest.php 6.5.2-1/tests/Constraints/ReadOnlyTest.php
--- 6.4.1-1/tests/Constraints/ReadOnlyTest.php	2025-04-04 13:08:07.000000000 +0000
+++ 6.5.2-1/tests/Constraints/ReadOnlyTest.php	2025-09-09 09:42:27.000000000 +0000
@@ -1,48 +1,39 @@
 <?php
 
-/*
- * This file is part of the JsonSchema package.
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
+declare(strict_types=1);
 
 namespace JsonSchema\Tests\Constraints;
 
 class ReadOnlyTest extends BaseTestCase
 {
+    /** @var bool */
     protected $validateSchema = true;
 
-    public function getInvalidTests(): array
+    public function getInvalidTests(): \Generator
     {
-        //is readonly really required?
-        return [
-            [
-                '{ "number": [] }',
-                '{
-                  "type":"object",
-                  "properties":{
-                    "number":{"type":"string","readonly":true}
-                  }
-                }'
-            ]
+        yield 'is readonly really required?' => [
+            '{ "number": [] }',
+            '{
+              "type":"object",
+              "properties":{
+                "number":{"type":"string","readonly":true}
+              }
+            }'
         ];
     }
 
-    public function getValidTests(): array
+    public function getValidTests(): \Generator
     {
-        return [
-            [
-                '{
-                  "number": "1.4"
-                }',
-                '{
-                  "type":"object",
-                  "properties":{
-                    "number":{"type":"string","readonly":true}
-                  }
-                }'
-            ]
+        yield [
+            '{
+              "number": "1.4"
+            }',
+            '{
+              "type":"object",
+              "properties":{
+                "number":{"type":"string","readonly":true}
+              }
+            }'
         ];
     }
 }
diff -pruN 6.4.1-1/tests/Constraints/RequireTest.php 6.5.2-1/tests/Constraints/RequireTest.php
--- 6.4.1-1/tests/Constraints/RequireTest.php	2025-04-04 13:08:07.000000000 +0000
+++ 6.5.2-1/tests/Constraints/RequireTest.php	2025-09-09 09:42:27.000000000 +0000
@@ -1,52 +1,44 @@
 <?php
 
-/*
- * This file is part of the JsonSchema package.
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
+declare(strict_types=1);
 
 namespace JsonSchema\Tests\Constraints;
 
 class RequireTest extends BaseTestCase
 {
+    /** @var bool */
     protected $validateSchema = true;
 
-    public function getInvalidTests(): array
+    public function getInvalidTests(): \Generator
     {
-        return [
-            [
-                '{
-                  "state":"DF"
-                }',
-                '{
-                  "type":"object",
-                  "properties":{
-                    "state":{"type":"string","requires":"city"},
-                    "city":{"type":"string"}
-                  }
-                }'
-            ]
+        yield [
+            '{
+              "state":"DF"
+            }',
+            '{
+              "type":"object",
+              "properties":{
+                "state":{"type":"string","requires":"city"},
+                "city":{"type":"string"}
+              }
+            }'
         ];
     }
 
-    public function getValidTests(): array
+    public function getValidTests(): \Generator
     {
-        return [
-            [
-                '{
-                  "state":"DF",
-                  "city":"Brasília"
-                }',
-                '{
-                  "type":"object",
-                  "properties":{
-                    "state":{"type":"string","requires":"city"},
-                    "city":{"type":"string"}
-                  }
-                }'
-            ]
+        yield [
+            '{
+              "state":"DF",
+              "city":"Brasília"
+            }',
+            '{
+              "type":"object",
+              "properties":{
+                "state":{"type":"string","requires":"city"},
+                "city":{"type":"string"}
+              }
+            }'
         ];
     }
 }
diff -pruN 6.4.1-1/tests/Constraints/RequiredPropertyTest.php 6.5.2-1/tests/Constraints/RequiredPropertyTest.php
--- 6.4.1-1/tests/Constraints/RequiredPropertyTest.php	2025-04-04 13:08:07.000000000 +0000
+++ 6.5.2-1/tests/Constraints/RequiredPropertyTest.php	2025-09-09 09:42:27.000000000 +0000
@@ -1,11 +1,6 @@
 <?php
 
-/*
- * This file is part of the JsonSchema package.
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
+declare(strict_types=1);
 
 namespace JsonSchema\Tests\Constraints;
 
@@ -14,29 +9,29 @@ use JsonSchema\Constraints\UndefinedCons
 
 class RequiredPropertyTest extends BaseTestCase
 {
-    // Most tests are draft-03 compliant, but some tests are draft-04, or mix draft-03 and
-    // draft-04 syntax within the same schema. Unfortunately, draft-03 and draft-04 required
-    // definitions are incompatible, so disabling schema validation for these tests.
+    /**
+     * Most tests are draft-03 compliant, but some tests are draft-04, or mix draft-03 and
+     * draft-04 syntax within the same schema. Unfortunately, draft-03 and draft-04 required
+     * definitions are incompatible, so disabling schema validation for these tests.
+     *
+     * @var string
+     * */
     protected $schemaSpec = 'http://json-schema.org/draft-03/schema#';
-    protected $validateSchema = false;
 
     public function testErrorPropertyIsPopulatedForRequiredIfMissingInInput(): void
     {
         $validator = new UndefinedConstraint();
-        $document = json_decode(
-            '{
-            "bar": 42
-        }'
-        );
+        $document = json_decode('{ "bar": 42 }', false);
         $schema = json_decode(
             '{
-            "type": "object",
-            "properties": {
-                "foo": {"type": "number"},
-                "bar": {"type": "number"}
-            },
-            "required": ["foo"]
-        }'
+                "type": "object",
+                "properties": {
+                    "foo": {"type": "number"},
+                    "bar": {"type": "number"}
+                },
+                "required": ["foo"]
+            }',
+            false
         );
 
         $validator->check($document, $schema);
@@ -47,11 +42,7 @@ class RequiredPropertyTest extends BaseT
     public function testPathErrorPropertyIsPopulatedForRequiredIfMissingInInput(): void
     {
         $validator = new UndefinedConstraint();
-        $document = json_decode(
-            '{
-                "foo": [{"baz": 1.5}]
-            }'
-        );
+        $document = json_decode('{ "foo": [{"baz": 1.5}] }', false);
         $schema = json_decode(
             '{
                 "type": "object",
@@ -69,7 +60,8 @@ class RequiredPropertyTest extends BaseT
                     }
                 },
                 "required": ["foo"]
-            }'
+            }',
+            false
         );
 
         $validator->check($document, $schema);
@@ -80,21 +72,17 @@ class RequiredPropertyTest extends BaseT
     public function testErrorPropertyIsPopulatedForRequiredIfEmptyValueInInput(): void
     {
         $validator = new UndefinedConstraint();
-        $document = json_decode(
-            '{
-            "bar": 42,
-            "foo": null
-        }'
-        );
+        $document = json_decode('{ "bar": 42, "foo": null }', false);
         $schema = json_decode(
             '{
-            "type": "object",
-            "properties": {
-                "foo": {"type": "number"},
-                "bar": {"type": "number"}
-            },
-            "required": ["foo"]
-        }'
+                "type": "object",
+                "properties": {
+                    "foo": {"type": "number"},
+                    "bar": {"type": "number"}
+                },
+                "required": ["foo"]
+            }',
+            false
         );
 
         $validator->check($document, $schema);
@@ -113,329 +101,325 @@ class RequiredPropertyTest extends BaseT
         $this->assertEquals($propertyValue, $error[0]['property']);
     }
 
-    public function getInvalidTests(): array
+    public function getInvalidTests(): \Generator
     {
-        return [
-            [
-                '{}',
-                '{
-                  "type":"object",
-                  "properties":{
-                    "number":{"type":"number","required":true}
-                  }
-                }'
-            ],
-            [
-                '{}',
-                '{
-                    "type": "object",
-                    "properties": {
-                        "number": {"type": "number"}
-                    },
-                    "required": ["number"]
-                }'
-            ],
-            [
-                '{
-                    "foo": {}
-                }',
-                '{
-                    "type": "object",
-                    "properties": {
-                        "foo": {
-                            "type": "object",
-                            "properties": {
-                                "bar": {"type": "number"}
-                            },
-                            "required": ["bar"]
-                        }
-                    }
-                }'
-            ],
-            [
-                '{
-                    "bar": 1.4
-                 }',
-                '{
-                    "type": "object",
-                    "properties": {
-                        "foo": {"type": "string", "required": true},
-                        "bar": {"type": "number"}
-                    },
-                    "required": ["bar"]
-                }'
-            ],
-            [
-                '{}',
-                '{
-                    "required": ["foo"]
-                }'
-            ],
-            [
-                '{
-                }',
-                '{
-                    "type": "object",
-                    "properties": {
-                        "foo": { "required": true }
+        yield [
+            '{}',
+            '{
+              "type":"object",
+              "properties":{
+                "number":{"type":"number","required":true}
+              }
+            }'
+        ];
+        yield [
+            '{}',
+            '{
+                "type": "object",
+                "properties": {
+                    "number": {"type": "number"}
+                },
+                "required": ["number"]
+            }'
+        ];
+        yield [
+            '{
+                "foo": {}
+            }',
+            '{
+                "type": "object",
+                "properties": {
+                    "foo": {
+                        "type": "object",
+                        "properties": {
+                            "bar": {"type": "number"}
+                        },
+                        "required": ["bar"]
                     }
-                }'
-            ],
-            [
-                '{
-                  "string":{}
-                }',
-                '{
-                  "type":"object",
-                  "properties": {
-                    "string":{"type":"string", "required": true}
-                  }
-                }'
-            ],
-            [
-                '{
-                  "number":{}
-                }',
-                '{
-                  "type":"object",
-                  "properties": {
-                    "number":{"type":"number", "required": true}
-                  }
-                }'
-            ],
-            [
-                '{
-                  "integer":{}
-                }',
-                '{
-                  "type":"object",
-                  "properties": {
-                    "integer":{"type":"integer", "required": true}
-                  }
-                }'
-            ],
-            [
-                '{
-                  "boolean":{}
-                }',
-                '{
-                  "type":"object",
-                  "properties": {
-                    "boolean":{"type":"boolean", "required": true}
-                  }
-                }'
-            ],
-            [
-                '{
-                  "array":{}
-                }',
-                '{
-                  "type":"object",
-                  "properties": {
-                    "array":{"type":"array", "required": true}
-                  }
-                }',
-                Constraint::CHECK_MODE_NORMAL
-            ],
-            [
-                '{
-                  "null":{}
-                }',
-                '{
-                  "type":"object",
-                  "properties": {
-                    "null":{"type":"null", "required": true}
-                  }
-                }'
-            ],
-            [
-                '{
-                  "foo": {"baz": 1.5}
-                }',
-                '{
+                }
+            }'
+        ];
+        yield [
+            '{
+                "bar": 1.4
+             }',
+            '{
+                "type": "object",
+                "properties": {
+                    "foo": {"type": "string", "required": true},
+                    "bar": {"type": "number"}
+                },
+                "required": ["bar"]
+            }'
+        ];
+        yield [
+            '{}',
+            '{
+                "required": ["foo"]
+            }'
+        ];
+        yield [
+            '{
+            }',
+            '{
+                "type": "object",
+                "properties": {
+                    "foo": { "required": true }
+                }
+            }'
+        ];
+        yield [
+            '{
+              "string":{}
+            }',
+            '{
+              "type":"object",
+              "properties": {
+                "string":{"type":"string", "required": true}
+              }
+            }'
+        ];
+        yield [
+            '{
+              "number":{}
+            }',
+            '{
+              "type":"object",
+              "properties": {
+                "number":{"type":"number", "required": true}
+              }
+            }'
+        ];
+        yield [
+            '{
+              "integer":{}
+            }',
+            '{
+              "type":"object",
+              "properties": {
+                "integer":{"type":"integer", "required": true}
+              }
+            }'
+        ];
+        yield [
+            '{
+                "boolean":{}
+            }',
+            '{
+              "type":"object",
+              "properties": {
+                "boolean":{"type":"boolean", "required": true}
+              }
+            }'
+        ];
+        yield [
+            '{
+              "array":{}
+            }',
+            '{
+              "type":"object",
+              "properties": {
+                "array":{"type":"array", "required": true}
+              }
+            }',
+            Constraint::CHECK_MODE_NORMAL
+        ];
+        yield [
+            '{
+              "null":{}
+            }',
+            '{
+              "type":"object",
+              "properties": {
+                "null":{"type":"null", "required": true}
+              }
+            }'
+        ];
+        yield [
+            '{
+              "foo": {"baz": 1.5}
+            }',
+            '{
+              "type": "object",
+              "properties": {
+                "foo": {
                   "type": "object",
                   "properties": {
-                    "foo": {
-                      "type": "object",
-                      "properties": {
-                        "bar": {"type": "number"}
-                      },
-                      "required": ["bar"]
-                    }
-                  }
-                }'
-            ],
-            [
-                '{
-                  "foo": {"baz": 1.5}
-                }',
-                '{
+                    "bar": {"type": "number"}
+                  },
+                  "required": ["bar"]
+                }
+              }
+            }'
+        ];
+        yield [
+            '{
+              "foo": {"baz": 1.5}
+            }',
+            '{
+              "type": "object",
+              "properties": {
+                "foo": {
                   "type": "object",
                   "properties": {
-                    "foo": {
-                      "type": "object",
-                      "properties": {
-                        "bar": {"type": "number", "required": true}
-                      }
-                    }
+                    "bar": {"type": "number", "required": true}
                   }
-                }'
-            ],
+                }
+              }
+            }'
         ];
     }
 
-    public function getValidTests(): array
+    public function getValidTests(): \Generator
     {
-        return [
-            [
-                '{
-                  "number": 1.4
-                }',
-                '{
-                  "type":"object",
-                  "properties":{
-                    "number":{"type":"number","required":true}
-                  }
-                }'
-            ],
-            [
-                '{}',
-                '{
-                  "type":"object",
-                  "properties":{
-                    "number":{"type":"number"}
-                  }
-                }'
-            ],
-            [
-                '{}',
-                '{
-                  "type":"object",
-                  "properties":{
-                    "number":{"type":"number","required":false}
-                  }
-                }'
-            ],
-            [
-                '{
-                  "number": 0
-                }',
-                '{
-                  "type":"object",
-                  "properties":{
-                    "number":{"type":"integer","required":true}
-                  }
-                }'
-            ],
-            [
-                '{
-                  "is_active": false
-                }',
-                '{
-                  "type":"object",
-                  "properties":{
-                    "is_active":{"type":"boolean","required":true}
-                  }
-                }'
-            ],
-            [
-                '{
-                  "status": null
-                }',
-                '{
-                  "type":"object",
-                  "properties":{
-                    "status":{"type":"null","required":true}
-                  }
-                }'
-            ],
-            [
-                '{
-                  "users": []
-                }',
-                '{
-                  "type":"object",
-                  "properties":{
-                    "users":{"type":"array","required":true}
-                  }
-                }'
-            ],
-            [
-                '{
-                    "foo": "foo",
-                    "bar": 1.4
-                 }',
-                '{
-                    "type": "object",
-                    "properties": {
-                        "foo": {"type": "string", "required": true},
-                        "bar": {"type": "number"}
-                    },
-                    "required": ["bar"]
-                }'
-            ],
-            [
-                '{
-                    "foo": {"bar": 1.5}
-                }',
-                '{
-                    "type": "object",
-                    "properties": {
-                        "foo": {
-                            "type": "object",
-                            "properties": {
-                                "bar": {"type": "number"}
-                            },
-                            "required": ["bar"]
-                        }
-                    },
-                    "required": ["foo"]
-                }'
-            ],
-            [
-                '{
-                    "foo": {}
-                }',
-                '{
-                    "type": "object",
-                    "properties": {
-                        "foo": { "required": true }
+        yield [
+            '{
+              "number": 1.4
+            }',
+            '{
+              "type":"object",
+              "properties":{
+                "number":{"type":"number","required":true}
+              }
+            }'
+        ];
+        yield [
+            '{}',
+            '{
+              "type":"object",
+              "properties":{
+                "number":{"type":"number"}
+              }
+            }'
+        ];
+        yield [
+            '{}',
+            '{
+              "type":"object",
+              "properties":{
+                "number":{"type":"number","required":false}
+              }
+            }'
+        ];
+        yield [
+            '{
+              "number": 0
+            }',
+            '{
+              "type":"object",
+              "properties":{
+                "number":{"type":"integer","required":true}
+              }
+            }'
+        ];
+        yield [
+            '{
+              "is_active": false
+            }',
+            '{
+              "type":"object",
+              "properties":{
+                "is_active":{"type":"boolean","required":true}
+              }
+            }'
+        ];
+        yield [
+            '{
+              "status": null
+            }',
+            '{
+              "type":"object",
+              "properties":{
+                "status":{"type":"null","required":true}
+              }
+            }'
+        ];
+        yield [
+            '{
+              "users": []
+            }',
+            '{
+              "type":"object",
+              "properties":{
+                "users":{"type":"array","required":true}
+              }
+            }'
+        ];
+        yield [
+            '{
+                "foo": "foo",
+                "bar": 1.4
+             }',
+            '{
+                "type": "object",
+                "properties": {
+                    "foo": {"type": "string", "required": true},
+                    "bar": {"type": "number"}
+                },
+                "required": ["bar"]
+            }'
+        ];
+        yield [
+            '{
+                "foo": {"bar": 1.5}
+            }',
+            '{
+                "type": "object",
+                "properties": {
+                    "foo": {
+                        "type": "object",
+                        "properties": {
+                            "bar": {"type": "number"}
+                        },
+                        "required": ["bar"]
                     }
-                }'
-            ],
-            [
-                '{
-                  "boo": {"bar": 1.5}
-                }',
-                '{
+                },
+                "required": ["foo"]
+            }'
+        ];
+        yield [
+            '{
+                "foo": {}
+            }',
+            '{
+                "type": "object",
+                "properties": {
+                    "foo": { "required": true }
+                }
+            }'
+        ];
+        yield [
+            '{
+              "boo": {"bar": 1.5}
+            }',
+            '{
+              "type": "object",
+              "properties": {
+                "foo": {
                   "type": "object",
                   "properties": {
-                    "foo": {
-                      "type": "object",
-                      "properties": {
-                        "bar": {"type": "number"}
-                      },
-                      "required": ["bar"]
-                    }
-                  }
-                }'
-            ],
-            [
-                '{
-                  "boo": {"bar": 1.5}
-                }',
-                '{
+                    "bar": {"type": "number"}
+                  },
+                  "required": ["bar"]
+                }
+              }
+            }'
+        ];
+        yield [
+            '{
+              "boo": {"bar": 1.5}
+            }',
+            '{
+              "type": "object",
+              "properties": {
+                "foo": {
                   "type": "object",
                   "properties": {
-                    "foo": {
-                      "type": "object",
-                      "properties": {
-                        "bar": {"type": "number", "required": true}
-                      }
-                    }
+                    "bar": {"type": "number", "required": true}
                   }
-                }'
-            ],
+                }
+              }
+            }'
         ];
     }
 }
diff -pruN 6.4.1-1/tests/Constraints/SchemaValidationTest.php 6.5.2-1/tests/Constraints/SchemaValidationTest.php
--- 6.4.1-1/tests/Constraints/SchemaValidationTest.php	2025-04-04 13:08:07.000000000 +0000
+++ 6.5.2-1/tests/Constraints/SchemaValidationTest.php	2025-09-09 09:42:27.000000000 +0000
@@ -1,11 +1,6 @@
 <?php
 
-/*
- * This file is part of the JsonSchema package.
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
+declare(strict_types=1);
 
 namespace JsonSchema\Tests\Constraints;
 
@@ -102,7 +97,7 @@ class SchemaValidationTest extends TestC
 
     public function testNonObjectSchema(): void
     {
-        $this->expectException('\JsonSchema\Exception\RuntimeException');
+        $this->expectException(\JsonSchema\Exception\RuntimeException::class);
         $this->expectExceptionMessage('Cannot validate the schema of a non-object');
 
         $this->testValidCases('"notAnObject"');
@@ -110,7 +105,7 @@ class SchemaValidationTest extends TestC
 
     public function testInvalidSchemaException(): void
     {
-        $this->expectException('\JsonSchema\Exception\InvalidSchemaException');
+        $this->expectException(\JsonSchema\Exception\InvalidSchemaException::class);
         $this->expectExceptionMessage('Schema did not pass validation');
 
         $input = json_decode('{}');
diff -pruN 6.4.1-1/tests/Constraints/SelfDefinedSchemaTest.php 6.5.2-1/tests/Constraints/SelfDefinedSchemaTest.php
--- 6.4.1-1/tests/Constraints/SelfDefinedSchemaTest.php	2025-04-04 13:08:07.000000000 +0000
+++ 6.5.2-1/tests/Constraints/SelfDefinedSchemaTest.php	2025-09-09 09:42:27.000000000 +0000
@@ -1,80 +1,74 @@
 <?php
 
-/*
- * This file is part of the JsonSchema package.
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
+declare(strict_types=1);
 
 namespace JsonSchema\Tests\Constraints;
 
+use JsonSchema\Exception\InvalidArgumentException;
 use JsonSchema\Validator;
+use stdClass;
 
 class SelfDefinedSchemaTest extends BaseTestCase
 {
+    /** @var bool */
     protected $validateSchema = true;
 
-    public function getInvalidTests(): array
+    public function getInvalidTests(): \Generator
     {
-        return [
-            [
-                '{
-                    "$schema": {
-                        "$schema": "http://json-schema.org/draft-04/schema#",
-                        "properties": {
-                            "name": {
-                                "type": "string"
-                            },
-                            "age" : {
-                                "type": "integer",
-                                "maximum": 25
-                            }
+        yield [
+            '{
+                "$schema": {
+                    "$schema": "http://json-schema.org/draft-04/schema#",
+                    "properties": {
+                        "name": {
+                            "type": "string"
+                        },
+                        "age" : {
+                            "type": "integer",
+                            "maximum": 25
                         }
-                    },
-                    "name" : "John Doe",
-                    "age" : 30,
-                    "type" : "object"
-                }',
-                ''
-            ]
+                    }
+                },
+                "name" : "John Doe",
+                "age" : 30,
+                "type" : "object"
+            }',
+            ''
         ];
     }
 
-    public function getValidTests(): array
+    public function getValidTests(): \Generator
     {
-        return [
-            [
-                '{
-                    "$schema": {
-                        "$schema": "http://json-schema.org/draft-04/schema#",
-                        "properties": {
-                            "name": {
-                                "type": "string"
-                            },
-                            "age" : {
-                                "type": "integer",
-                                "maximum": 125
-                            }
+        yield [
+            '{
+                "$schema": {
+                    "$schema": "http://json-schema.org/draft-04/schema#",
+                    "properties": {
+                        "name": {
+                            "type": "string"
+                        },
+                        "age" : {
+                            "type": "integer",
+                            "maximum": 125
                         }
-                    },
-                    "name" : "John Doe",
-                    "age" : 30,
-                    "type" : "object"
-                }',
-                ''
-            ]
+                    }
+                },
+                "name" : "John Doe",
+                "age" : 30,
+                "type" : "object"
+            }',
+            ''
         ];
     }
 
     public function testInvalidArgumentException(): void
     {
-        $value = json_decode('{}');
-        $schema = json_decode('');
+        $value = new stdClass();
+        $schema = null;
 
         $v = new Validator();
 
-        $this->expectException('\JsonSchema\Exception\InvalidArgumentException');
+        $this->expectException(InvalidArgumentException::class);
 
         $v->validate($value, $schema);
     }
diff -pruN 6.4.1-1/tests/Constraints/TupleTypingTest.php 6.5.2-1/tests/Constraints/TupleTypingTest.php
--- 6.4.1-1/tests/Constraints/TupleTypingTest.php	2025-04-04 13:08:07.000000000 +0000
+++ 6.5.2-1/tests/Constraints/TupleTypingTest.php	2025-09-09 09:42:27.000000000 +0000
@@ -1,140 +1,132 @@
 <?php
 
-/*
- * This file is part of the JsonSchema package.
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
+declare(strict_types=1);
 
 namespace JsonSchema\Tests\Constraints;
 
 class TupleTypingTest extends BaseTestCase
 {
+    /** @var bool */
     protected $validateSchema = true;
 
-    public function getInvalidTests(): array
+    public function getInvalidTests(): \Generator
     {
-        return [
-            [
-                '{
-                  "tupleTyping":[2,"a"]
-                }',
-                '{
-                  "type":"object",
-                  "properties":{
-                    "tupleTyping":{
-                      "type":"array",
-                      "items":[
-                        {"type":"string"},
-                        {"type":"number"}
-                      ]
-                    }
-                  }
-                }'
-            ],
-            [
-                '{
-                  "tupleTyping":["2",2,true]
-                }',
-                '{
-                  "type":"object",
-                  "properties":{
-                    "tupleTyping":{
-                      "type":"array",
-                      "items":[
-                        {"type":"string"},
-                        {"type":"number"}
-                      ] ,
-                      "additionalItems":false
-                    }
-                  }
-                }'
-            ],
-            [
-                '{
-                  "tupleTyping":["2",2,3]
-                }',
-                '{
-                  "type":"object",
-                  "properties":{
-                    "tupleTyping":{
-                      "type":"array",
-                      "items":[
-                        {"type":"string"},
-                        {"type":"number"}
-                      ] ,
-                      "additionalItems":{"type":"string"}
-                    }
-                  }
-                }'
-            ],
-            [
-                '{"data": [1, "foo", true, 1.5]}',
-                '{
-                    "type": "object",
-                    "properties": {
-                        "data": {
-                            "type": "array",
-                            "items": [{}, {}, {}],
-                            "additionalItems": false
-                        }
+        yield [
+            '{
+              "tupleTyping":[2,"a"]
+            }',
+            '{
+              "type":"object",
+              "properties":{
+                "tupleTyping":{
+                  "type":"array",
+                  "items":[
+                    {"type":"string"},
+                    {"type":"number"}
+                  ]
+                }
+              }
+            }'
+        ];
+        yield [
+            '{
+              "tupleTyping":["2",2,true]
+            }',
+            '{
+              "type":"object",
+              "properties":{
+                "tupleTyping":{
+                  "type":"array",
+                  "items":[
+                    {"type":"string"},
+                    {"type":"number"}
+                  ] ,
+                  "additionalItems":false
+                }
+              }
+            }'
+        ];
+        yield [
+            '{
+              "tupleTyping":["2",2,3]
+            }',
+            '{
+              "type":"object",
+              "properties":{
+                "tupleTyping":{
+                  "type":"array",
+                  "items":[
+                    {"type":"string"},
+                    {"type":"number"}
+                  ] ,
+                  "additionalItems":{"type":"string"}
+                }
+              }
+            }'
+        ];
+        yield [
+            '{"data": [1, "foo", true, 1.5]}',
+            '{
+                "type": "object",
+                "properties": {
+                    "data": {
+                        "type": "array",
+                        "items": [{}, {}, {}],
+                        "additionalItems": false
                     }
-                }'
-            ]
+                }
+            }'
         ];
     }
 
-    public function getValidTests(): array
+    public function getValidTests(): \Generator
     {
-        return [
-            [
-                '{
-                  "tupleTyping":["2", 1]
-                }',
-                '{
-                  "type":"object",
-                  "properties":{
-                    "tupleTyping":{
-                      "type":"array",
-                      "items":[
-                        {"type":"string"},
-                        {"type":"number"}
-                      ]
-                    }
-                  }
-                }'
-            ],
-            [
-                '{
-                  "tupleTyping":["2",2,3]
-                }',
-                '{
-                  "type":"object",
-                  "properties":{
-                    "tupleTyping":{
-                      "type":"array",
-                      "items":[
-                        {"type":"string"},
-                        {"type":"number"}
-                      ]
-                    }
-                  }
-                }'
-            ],
-            [
-                '{"data": [1, "foo", true]}',
-                '{
-                    "type": "object",
-                    "properties": {
-                        "data": {
-                            "type": "array",
-                            "items": [{}, {}, {}],
-                            "additionalItems": false
-                        }
+        yield [
+            '{
+              "tupleTyping":["2", 1]
+            }',
+            '{
+              "type":"object",
+              "properties":{
+                "tupleTyping":{
+                  "type":"array",
+                  "items":[
+                    {"type":"string"},
+                    {"type":"number"}
+                  ]
+                }
+              }
+            }'
+        ];
+        yield [
+            '{
+              "tupleTyping":["2",2,3]
+            }',
+            '{
+              "type":"object",
+              "properties":{
+                "tupleTyping":{
+                  "type":"array",
+                  "items":[
+                    {"type":"string"},
+                    {"type":"number"}
+                  ]
+                }
+              }
+            }'
+        ];
+        yield [
+            '{"data": [1, "foo", true]}',
+            '{
+                "type": "object",
+                "properties": {
+                    "data": {
+                        "type": "array",
+                        "items": [{}, {}, {}],
+                        "additionalItems": false
                     }
-                }'
-            ]
+                }
+            }'
         ];
     }
 }
diff -pruN 6.4.1-1/tests/Constraints/TypeTest.php 6.5.2-1/tests/Constraints/TypeTest.php
--- 6.4.1-1/tests/Constraints/TypeTest.php	2025-04-04 13:08:07.000000000 +0000
+++ 6.5.2-1/tests/Constraints/TypeTest.php	2025-09-09 09:42:27.000000000 +0000
@@ -1,11 +1,6 @@
 <?php
 
-/*
- * This file is part of the JsonSchema package.
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
+declare(strict_types=1);
 
 namespace JsonSchema\Tests\Constraints;
 
@@ -13,13 +8,6 @@ use JsonSchema\Constraints\TypeCheck\Loo
 use JsonSchema\Constraints\TypeConstraint;
 use PHPUnit\Framework\TestCase;
 
-/**
- * Class TypeTest
- *
- * @package JsonSchema\Tests\Constraints
- *
- * @author hakre <https://github.com/hakre>
- */
 class TypeTest extends TestCase
 {
     /**
@@ -108,7 +96,9 @@ class TypeTest extends TestCase
         $t = new TypeConstraint();
         $r = new \ReflectionObject($t);
         $m = $r->getMethod('validateTypeNameWording');
-        $m->setAccessible(true);
+        if (PHP_VERSION_ID < 80100) {
+            $m->setAccessible(true);
+        }
 
         $m->invoke($t, $nameWording);
         $this->expectNotToPerformAssertions();
@@ -119,7 +109,9 @@ class TypeTest extends TestCase
         $t = new TypeConstraint();
         $r = new \ReflectionObject($t);
         $m = $r->getMethod('validateTypeNameWording');
-        $m->setAccessible(true);
+        if (PHP_VERSION_ID < 80100) {
+            $m->setAccessible(true);
+        }
 
         $this->expectException('\UnexpectedValueException');
         $this->expectExceptionMessage("No wording for 'notAValidTypeName' available, expected wordings are: [an integer, a number, a boolean, an object, an array, a string, a null]");
@@ -133,7 +125,7 @@ class TypeTest extends TestCase
         $data = new \stdClass();
         $schema = json_decode('{"type": "notAValidTypeName"}');
 
-        $this->expectException('JsonSchema\Exception\InvalidArgumentException');
+        $this->expectException(\JsonSchema\Exception\InvalidArgumentException::class);
         $this->expectExceptionMessage('object is an invalid type for notAValidTypeName');
 
         $t->check($data, $schema);
diff -pruN 6.4.1-1/tests/Constraints/UndefinedConstraintTest.php 6.5.2-1/tests/Constraints/UndefinedConstraintTest.php
--- 6.4.1-1/tests/Constraints/UndefinedConstraintTest.php	2025-04-04 13:08:07.000000000 +0000
+++ 6.5.2-1/tests/Constraints/UndefinedConstraintTest.php	2025-09-09 09:42:27.000000000 +0000
@@ -8,162 +8,134 @@ use JsonSchema\Constraints\Constraint;
 
 class UndefinedConstraintTest extends BaseTestCase
 {
-    /**
-     * @return array{}
-     */
-    public function getInvalidTests(): array
+    public function getInvalidTests(): \Generator
     {
-        return [];
+        yield from [];
     }
 
-    /**
-     * @return array<string, array{input: string, schema: string, checkMode?: int}>
-     */
-    public function getValidTests(): array
+    public function getValidTests(): \Generator
     {
-        return [
-            'oneOf with type coercion should not affect value passed to each sub schema (#790)' => [
-                'input' => <<<JSON
+        yield 'oneOf with type coercion should not affect value passed to each sub schema (#790)' => [
+            'input' => '{
+                "id": "LOC1",
+                "related_locations": [
                     {
-                        "id": "LOC1",
-                        "related_locations": [
-                            {
-                                "latitude": "51.047598",
-                                "longitude": "3.729943"
-                            }
-                        ]
+                        "latitude": "51.047598",
+                        "longitude": "3.729943"
                     }
-JSON
-                ,
-                'schema' => <<<JSON
-                    {
-                        "title": "Location",
-                        "type": "object",
-                        "properties": {
-                            "id": {
-                                "type": "string"
+                ]
+            }',
+            'schema' => '{
+                "title": "Location",
+                "type": "object",
+                "properties": {
+                    "id": {
+                        "type": "string"
+                    },
+                    "related_locations": {
+                        "oneOf": [
+                            {
+                                "type": "null"
                             },
-                            "related_locations": {
-                                "oneOf": [
-                                    {
-                                        "type": "null"
-                                    },
-                                    {
-                                        "type": "array",
-                                        "items": {
-                                            "type": "object",
-                                            "properties": {
-                                                "latitude": {
-                                                    "type": "string"
-                                                },
-                                                "longitude": {
-                                                    "type": "string"
-                                                }
-                                            }
+                            {
+                                "type": "array",
+                                "items": {
+                                    "type": "object",
+                                    "properties": {
+                                        "latitude": {
+                                            "type": "string"
+                                        },
+                                        "longitude": {
+                                            "type": "string"
                                         }
                                     }
-                                ]
+                                }
                             }
-                        }
+                        ]
                     }
-JSON
-                ,
-                'checkMode' => Constraint::CHECK_MODE_COERCE_TYPES
-            ],
-            'oneOf with apply defaults should not affect value passed to each sub schema (#510)' => [
-                'input' => <<<JSON
-                    {"foo": {"name": "bar"}}
-JSON
-                ,
-                'schema' => <<<JSON
+                }
+            }',
+            'checkMode' => Constraint::CHECK_MODE_COERCE_TYPES
+        ];
+        yield 'oneOf with apply defaults should not affect value passed to each sub schema (#510)' => [
+            'input' => '{"foo": {"name": "bar"}}',
+            'schema' => '{
+                "oneOf": [
                     {
-                        "oneOf": [
-                            {
+                        "type": "object",
+                        "properties": {
+                            "foo": {
                                 "type": "object",
                                 "properties": {
-                                    "foo": {
-                                        "type": "object",
-                                        "properties": {
-                                            "name": {"enum":["baz"],"default":"baz"},
-                                            "meta": {"enum":["baz"],"default":"baz"}
-                                        }
-                                    }
+                                    "name": {"enum":["baz"],"default":"baz"},
+                                    "meta": {"enum":["baz"],"default":"baz"}
                                 }
-                            },
-                            {
+                            }
+                        }
+                    },
+                    {
+                        "type": "object",
+                        "properties": {
+                            "foo": {
                                 "type": "object",
                                 "properties": {
-                                    "foo": {
-                                        "type": "object",
-                                        "properties": {
-                                            "name": {"enum":["bar"],"default":"bar"},
-                                            "meta": {"enum":["bar"],"default":"bar"}
-                                        }
-                                    }
+                                    "name": {"enum":["bar"],"default":"bar"},
+                                    "meta": {"enum":["bar"],"default":"bar"}
                                 }
-                            },
-                            {
+                            }
+                        }
+                    },
+                    {
+                        "type": "object",
+                        "properties": {
+                            "foo": {
                                 "type": "object",
                                 "properties": {
-                                    "foo": {
-                                        "type": "object",
-                                        "properties": {
-                                            "name": {"enum":["zip"],"default":"zip"},
-                                            "meta": {"enum":["zip"],"default":"zip"}
-                                        }
-                                    }
+                                    "name": {"enum":["zip"],"default":"zip"},
+                                    "meta": {"enum":["zip"],"default":"zip"}
                                 }
                             }
-                        ]
+                        }
                     }
-JSON
-                ,
-                'checkMode' => Constraint::CHECK_MODE_APPLY_DEFAULTS
-            ],
-            'anyOf with apply defaults should not affect value passed to each sub schema (#711)' => [
-                'input' => <<<JSON
-                    {
-                        "b": 2
+                ]
+            }',
+            'checkMode' => Constraint::CHECK_MODE_APPLY_DEFAULTS
+        ];
+        yield 'anyOf with apply defaults should not affect value passed to each sub schema (#711)' => [
+            'input' => '{ "b": 2 }',
+            'schema' => '{
+              "anyOf": [
+                {
+                  "required": [ "a" ],
+                  "pro": {
+                    "a": {
+                      "type": "integer"
+                    },
+                    "aDefault": {
+                      "type": "integer",
+                      "default": 1
                     }
-JSON
-                ,
-                'schema' => <<<JSON
-                    {
-                        "anyOf": [
-                            {
-                                "required": [ "a" ],
-                      "properties": {
-                          "a": {
-                              "type": "integer"
-                          },
-                          "aDefault": {
-                              "type": "integer",
-                              "default": 1
-                          }
-                      },
-                      "type": "object",
-                      "additionalProperties": false
+                  },
+                  "type": "object",
+                  "additionalProperties": false
+                },
+                {
+                  "required": [ "b" ],
+                  "properties": {
+                    "b": {
+                      "type": "integer"
                     },
-                    {
-                      "required": [ "b" ],
-                      "properties": {
-                          "b": {
-                              "type": "integer"
-                          },
-                          "bDefault": {
-                              "type": "integer",
-                              "default": 2
-                          }
-                      },
-                      "type": "object",
-                      "additionalProperties": false
+                    "bDefault": {
+                      "type": "integer",
+                      "default": 2
                     }
-                  ]
+                  },
+                  "type": "object",
+                  "additionalProperties": false
                 }
-JSON
-                ,
-                'checkMode' => Constraint::CHECK_MODE_APPLY_DEFAULTS
-            ]
+              ]
+            }',
+            'checkMode' => Constraint::CHECK_MODE_APPLY_DEFAULTS
         ];
     }
 }
diff -pruN 6.4.1-1/tests/Constraints/UnionTypesTest.php 6.5.2-1/tests/Constraints/UnionTypesTest.php
--- 6.4.1-1/tests/Constraints/UnionTypesTest.php	2025-04-04 13:08:07.000000000 +0000
+++ 6.5.2-1/tests/Constraints/UnionTypesTest.php	2025-09-09 09:42:27.000000000 +0000
@@ -1,53 +1,45 @@
 <?php
 
-/*
- * This file is part of the JsonSchema package.
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
+declare(strict_types=1);
 
 namespace JsonSchema\Tests\Constraints;
 
 class UnionTypesTest extends BaseTestCase
 {
+    /** @var bool */
     protected $validateSchema = true;
 
-    public function getInvalidTests(): array
+    public function getInvalidTests(): \Generator
     {
-        return [
-            [
-                '{
-                  "stringOrNumber":4.8,
-                  "booleanOrNull":5
-                }',
-                '{
-                  "type":"object",
-                  "properties":{
-                    "stringOrNumber":{"type":["string","number"]},
-                    "booleanOrNull":{"type":["boolean","null"]}
-                  }
-                }'
-            ]
+        yield [
+            '{
+              "stringOrNumber":4.8,
+              "booleanOrNull":5
+            }',
+            '{
+              "type":"object",
+              "properties":{
+                "stringOrNumber":{"type":["string","number"]},
+                "booleanOrNull":{"type":["boolean","null"]}
+              }
+            }'
         ];
     }
 
-    public function getValidTests(): array
+    public function getValidTests(): \Generator
     {
-        return [
-            [
-                '{
-                  "stringOrNumber":4.8,
-                  "booleanOrNull":false
-                }',
-                '{
-                  "type":"object",
-                  "properties":{
-                    "stringOrNumber":{"type":["string","number"]},
-                    "booleanOrNull":{"type":["boolean","null"]}
-                  }
-                }'
-            ]
+        yield [
+            '{
+              "stringOrNumber":4.8,
+              "booleanOrNull":false
+            }',
+            '{
+              "type":"object",
+              "properties":{
+                "stringOrNumber":{"type":["string","number"]},
+                "booleanOrNull":{"type":["boolean","null"]}
+              }
+            }'
         ];
     }
 }
diff -pruN 6.4.1-1/tests/Constraints/UnionWithNullValueTest.php 6.5.2-1/tests/Constraints/UnionWithNullValueTest.php
--- 6.4.1-1/tests/Constraints/UnionWithNullValueTest.php	2025-04-04 13:08:07.000000000 +0000
+++ 6.5.2-1/tests/Constraints/UnionWithNullValueTest.php	2025-09-09 09:42:27.000000000 +0000
@@ -1,53 +1,45 @@
 <?php
 
-/*
- * This file is part of the JsonSchema package.
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
+declare(strict_types=1);
 
 namespace JsonSchema\Tests\Constraints;
 
 class UnionWithNullValueTest extends BaseTestCase
 {
+    /** @var bool */
     protected $validateSchema = true;
 
-    public function getInvalidTests(): array
+    public function getInvalidTests(): \Generator
     {
-        return [
-            [
-                '{
-                  "stringOrNumber":null,
-                  "booleanOrNull":null
-                }',
-                '{
-                  "type":"object",
-                  "properties":{
-                    "stringOrNumber":{"type":["string","number"]},
-                    "booleanOrNull":{"type":["boolean","null"]}
-                  }
-                }'
-            ]
+        yield [
+            '{
+              "stringOrNumber":null,
+              "booleanOrNull":null
+            }',
+            '{
+              "type":"object",
+              "properties":{
+                "stringOrNumber":{"type":["string","number"]},
+                "booleanOrNull":{"type":["boolean","null"]}
+              }
+            }'
         ];
     }
 
-    public function getValidTests(): array
+    public function getValidTests(): \Generator
     {
-        return [
-            [
-                '{
-                  "stringOrNumber":12,
-                  "booleanOrNull":null
-                }',
-                '{
-                  "type":"object",
-                  "properties":{
-                    "stringOrNumber":{"type":["string","number"]},
-                    "booleanOrNull":{"type":["boolean","null"]}
-                  }
-                }'
-            ]
+        yield [
+            '{
+              "stringOrNumber":12,
+              "booleanOrNull":null
+            }',
+            '{
+              "type":"object",
+              "properties":{
+                "stringOrNumber":{"type":["string","number"]},
+                "booleanOrNull":{"type":["boolean","null"]}
+              }
+            }'
         ];
     }
 }
diff -pruN 6.4.1-1/tests/Constraints/UniqueItemsTest.php 6.5.2-1/tests/Constraints/UniqueItemsTest.php
--- 6.4.1-1/tests/Constraints/UniqueItemsTest.php	2025-04-04 13:08:07.000000000 +0000
+++ 6.5.2-1/tests/Constraints/UniqueItemsTest.php	2025-09-09 09:42:27.000000000 +0000
@@ -1,161 +1,157 @@
 <?php
 
-/*
- * This file is part of the JsonSchema package.
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
+declare(strict_types=1);
 
 namespace JsonSchema\Tests\Constraints;
 
 class UniqueItemsTest extends BaseTestCase
 {
+    /** @var bool */
     protected $validateSchema = true;
 
-    public function getInvalidTests(): array
+    public function getInvalidTests(): \Generator
     {
-        return [
-            [
-                '[1,2,2]',
-                '{
-                  "type":"array",
-                  "uniqueItems": true
-                }'
-            ],
-            [
-                '[{"a":"b"},{"a":"c"},{"a":"b"}]',
-                '{
-                  "type":"array",
-                  "uniqueItems": true
-                }'
-            ],
-            [
-                '[{"foo": {"bar" : {"baz" : true}}}, {"foo": {"bar" : {"baz" : true}}}]',
-                '{
-                    "type": "array",
-                    "uniqueItems": true
-                }'
-            ],
-            [
-                '[1.0, 1.00, 1]',
-                '{
-                    "type": "array",
-                    "uniqueItems": true
-                }'
-            ],
-            [
-                '[["foo"], ["foo"]]',
-                '{
-                    "type": "array",
-                    "uniqueItems": true
-                }'
-            ],
-            [
-                '[{}, [1], true, null, {}, 1]',
-                '{
-                    "type": "array",
-                    "uniqueItems": true
-                }'
-            ]
+        yield 'Non unique integers' => [
+            'input' => '[1,2,2]',
+            'schema' => '{
+              "type":"array",
+              "uniqueItems": true
+            }'
+        ];
+        yield 'Non unique objects' => [
+            'input' => '[{"a":"b"},{"a":"c"},{"a":"b"}]',
+            'schema' => '{
+              "type":"array",
+              "uniqueItems": true
+            }'
+        ];
+        yield 'Non unique objects - three levels deep' => [
+            'input' => '[{"foo": {"bar" : {"baz" : true}}}, {"foo": {"bar" : {"baz" : true}}}]',
+            'schema' => '{
+                "type": "array",
+                "uniqueItems": true
+            }'
+        ];
+        yield 'Non unique mathematical values for the number one' => [
+            'input' => '[1.0, 1.00, 1]',
+            'schema' => '{
+                "type": "array",
+                "uniqueItems": true
+            }'
+        ];
+        yield 'Non unique arrays' => [
+            'input' => '[["foo"], ["foo"]]',
+            'schema' => '{
+                "type": "array",
+                "uniqueItems": true
+            }'
+        ];
+        yield 'Non unique mix of different types' => [
+            'input' => '[{}, [1], true, null, {}, 1]',
+            'schema' => '{
+                "type": "array",
+                "uniqueItems": true
+            }'
+        ];
+        yield 'objects are non-unique despite key order' => [
+            'input' => '[{"a": 1, "b": 2}, {"b": 2, "a": 1}]',
+            'schema' => '{"uniqueItems": true}',
         ];
     }
 
-    public function getValidTests(): array
+    public function getValidTests(): \Generator
     {
-        return [
-            [
-                '[1,2,3]',
-                '{
-                  "type":"array",
-                  "uniqueItems": true
-                }'
-            ],
-            [
-                '[{"foo": 12}, {"bar": false}]',
-                '{
-                    "type": "array",
-                    "uniqueItems": true
-                }'
-            ],
-            [
-                '[1, true]',
-                '{
-                    "type": "array",
-                    "uniqueItems": true
-                }'
-            ],
-            [
-                '[0, false]',
-                '{
-                    "type": "array",
-                    "uniqueItems": true
-                }'
-            ],
-            [
-                '[{"foo": {"bar" : {"baz" : true}}}, {"foo": {"bar" : {"baz" : false}}}]',
-                '{
-                    "type": "array",
-                    "uniqueItems": true
-                }'
-            ],
-            [
-                '[["foo"], ["bar"]]',
-                '{
-                    "type": "array",
-                    "uniqueItems": true
-                }'
-            ],
-            [
-                '[{}, [1], true, null, 1]',
-                '{
-                    "type": "array",
-                    "uniqueItems": true
-                }'
-            ],
-            // below equals the invalid tests, but with uniqueItems set to false
-            [
-                '[1,2,2]',
-                '{
-                  "type":"array",
-                  "uniqueItems": false
-                }'
-            ],
-            [
-                '[{"a":"b"},{"a":"c"},{"a":"b"}]',
-                '{
-                  "type":"array",
-                  "uniqueItems": false
-                }'
-            ],
-            [
-                '[{"foo": {"bar" : {"baz" : true}}}, {"foo": {"bar" : {"baz" : true}}}]',
-                '{
-                    "type": "array",
-                    "uniqueItems": false
-                }'
-            ],
-            [
-                '[1.0, 1.00, 1]',
-                '{
-                    "type": "array",
-                    "uniqueItems": false
-                }'
-            ],
-            [
-                '[["foo"], ["foo"]]',
-                '{
-                    "type": "array",
-                    "uniqueItems": false
-                }'
-            ],
-            [
-                '[{}, [1], true, null, {}, 1]',
-                '{
-                    "type": "array",
-                    "uniqueItems": false
-                }'
-            ]
+        yield 'unique integers' => [
+            'input' => '[1,2,3]',
+            'schema' => '{
+                "type":"array",
+                "uniqueItems": true
+            }'
+        ];
+        yield 'unique objects' =>[
+            'input' => '[{"foo": 12}, {"bar": false}]',
+            'schema' => '{
+                "type": "array",
+                "uniqueItems": true
+            }'
+        ];
+        yield 'Integer one and boolean true' => [
+            'input' => '[1, true]',
+            'schema' => '{
+                "type": "array",
+                "uniqueItems": true
+            }'
+        ];
+        yield 'Integer zero and boolean false' => [
+            'input' => '[0, false]',
+            'schema' => '{
+                "type": "array",
+                "uniqueItems": true
+            }'
+        ];
+        yield 'Objects with different value three levels deep' => [
+            'input' => '[{"foo": {"bar" : {"baz" : true}}}, {"foo": {"bar" : {"baz" : false}}}]',
+            'schema' => '{
+                "type": "array",
+                "uniqueItems": true
+            }'
+        ];
+        yield 'Array of strings' => [
+            'input' => '[["foo"], ["bar"]]',
+            'schema' => '{
+                "type": "array",
+                "uniqueItems": true
+            }'
+        ];
+        yield 'Object, Array, boolean, null and integer' => [
+            'input' => '[{}, [1], true, null, 1]',
+            'schema' => '{
+                "type": "array",
+                "uniqueItems": true
+            }'
+        ];
+        // below equals the invalid tests, but with uniqueItems set to false
+        yield 'Non unique integers' => [
+            'input' => '[1,2,2]',
+            'schema' =>  '{
+              "type":"array",
+              "uniqueItems": false
+            }'
+        ];
+        yield 'Non unique objects' => [
+            'input' => '[{"a":"b"},{"a":"c"},{"a":"b"}]',
+            'schema' => '{
+              "type":"array",
+              "uniqueItems": false
+            }'
+        ];
+        yield 'Non unique objects - three levels deep' => [
+            'input' => '[{"foo": {"bar" : {"baz" : true}}}, {"foo": {"bar" : {"baz" : true}}}]',
+            'schema' => '{
+                "type": "array",
+                "uniqueItems": false
+            }'
+        ];
+        yield 'Non unique mathematical values for the number one' => [
+            'input' => '[1.0, 1.00, 1]',
+            'schema' => '{
+                "type": "array",
+                "uniqueItems": false
+            }'
+        ];
+        yield 'Non unique arrays' => [
+            'input' => '[["foo"], ["foo"]]',
+            'schema' => '{
+                "type": "array",
+                "uniqueItems": false
+            }'
+        ];
+        yield 'Non unique mix of different types' => [
+            'input' => '[{}, [1], true, null, {}, 1]',
+            'schema' => '{
+                "type": "array",
+                "uniqueItems": false
+            }'
         ];
     }
 }
diff -pruN 6.4.1-1/tests/Constraints/ValidationExceptionTest.php 6.5.2-1/tests/Constraints/ValidationExceptionTest.php
--- 6.4.1-1/tests/Constraints/ValidationExceptionTest.php	2025-04-04 13:08:07.000000000 +0000
+++ 6.5.2-1/tests/Constraints/ValidationExceptionTest.php	2025-09-09 09:42:27.000000000 +0000
@@ -1,11 +1,6 @@
 <?php
 
-/*
- * This file is part of the JsonSchema package.
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
+declare(strict_types=1);
 
 namespace JsonSchema\Tests\Constraints;
 
@@ -19,7 +14,7 @@ class ValidationExceptionTest extends Te
     public function testValidationException(): void
     {
         $exception = new ValidationException();
-        $this->assertInstanceOf('\JsonSchema\Exception\ValidationException', $exception);
+        $this->assertInstanceOf(\JsonSchema\Exception\ValidationException::class, $exception);
 
         $checkValue = json_decode('{"propertyOne": "thisIsNotAnObject"}');
         $schema = json_decode('{
@@ -45,7 +40,7 @@ class ValidationExceptionTest extends Te
             $exception->getMessage()
         );
 
-        $this->expectException('JsonSchema\Exception\ValidationException');
+        $this->expectException(\JsonSchema\Exception\ValidationException::class);
         throw $exception;
     }
 }
diff -pruN 6.4.1-1/tests/Constraints/VeryBaseTestCase.php 6.5.2-1/tests/Constraints/VeryBaseTestCase.php
--- 6.4.1-1/tests/Constraints/VeryBaseTestCase.php	2025-04-04 13:08:07.000000000 +0000
+++ 6.5.2-1/tests/Constraints/VeryBaseTestCase.php	2025-09-09 09:42:27.000000000 +0000
@@ -2,80 +2,78 @@
 
 declare(strict_types=1);
 
-/*
- * This file is part of the JsonSchema package.
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
 namespace JsonSchema\Tests\Constraints;
 
+use JsonSchema\UriRetrieverInterface;
 use PHPUnit\Framework\TestCase;
 use Prophecy\Argument;
+use stdClass;
 
-/**
- * @package JsonSchema\Tests\Constraints
- */
 abstract class VeryBaseTestCase extends TestCase
 {
-    /** @var object */
-    private $jsonSchemaDraft03;
+    private const DRAFT_SCHEMA_DIR = __DIR__ . '/../../dist/schema/';
+    private const TEST_SUITE_REMOTES =  __DIR__ . '/../../vendor/json-schema/json-schema-test-suite/remotes';
 
-    /** @var object */
-    private $jsonSchemaDraft04;
+    /** @var array<string, stdClass> */
+    private $draftSchemas = [];
 
     protected function getUriRetrieverMock(?object $schema): object
     {
-        $relativeTestsRoot = realpath(__DIR__ . '/../../vendor/json-schema/json-schema-test-suite/remotes');
-
-        $jsonSchemaDraft03 = $this->getJsonSchemaDraft03();
-        $jsonSchemaDraft04 = $this->getJsonSchemaDraft04();
-
-        $uriRetriever = $this->prophesize('JsonSchema\UriRetrieverInterface');
-        $uriRetriever->retrieve('http://www.my-domain.com/schema.json')
+        $uriRetriever = $this->prophesize(UriRetrieverInterface::class);
+        $uriRetriever->retrieve($schema->id ?? 'http://www.my-domain.com/schema.json')
             ->willReturn($schema)
             ->shouldBeCalled();
 
+        $that = $this;
         $uriRetriever->retrieve(Argument::any())
-            ->will(function ($args) use ($jsonSchemaDraft03, $jsonSchemaDraft04, $relativeTestsRoot) {
-                if ('http://json-schema.org/draft-03/schema' === $args[0]) {
-                    return $jsonSchemaDraft03;
-                } elseif ('http://json-schema.org/draft-04/schema' === $args[0]) {
-                    return $jsonSchemaDraft04;
-                } elseif (0 === strpos($args[0], 'http://localhost:1234')) {
-                    $urlParts = parse_url($args[0]);
-
-                    return json_decode(file_get_contents($relativeTestsRoot . $urlParts['path']));
-                } elseif (0 === strpos($args[0], 'http://www.my-domain.com')) {
-                    $urlParts = parse_url($args[0]);
+            ->will(function ($args) use ($that): stdClass {
+                if (strpos($args[0], 'http://json-schema.org/draft-03/schema') === 0) {
+                    return $that->getDraftSchema('json-schema-draft-03.json');
+                }
+
+                if (strpos($args[0], 'http://json-schema.org/draft-04/schema') === 0) {
+                    return $that->getDraftSchema('json-schema-draft-04.json');
+                }
+                if (strpos($args[0], 'http://json-schema.org/draft-06/schema') === 0) {
+                    return $that->getDraftSchema('json-schema-draft-06.json');
+                }
 
-                    return json_decode(file_get_contents($relativeTestsRoot . '/folder' . $urlParts['path']));
+                $urlParts = parse_url($args[0]);
+
+                if (0 === strpos($args[0], 'http://localhost:1234')) {
+                    return $that->readAndJsonDecodeFile(self::TEST_SUITE_REMOTES . $urlParts['path']);
+                }
+
+                if (0 === strpos($args[0], 'http://www.my-domain.com')) {
+                    return $that->readAndJsonDecodeFile(self::TEST_SUITE_REMOTES . '/folder' . $urlParts['path']);
                 }
+
+                throw new \InvalidArgumentException(sprintf('No handling for %s has been setup', $args[0]));
             });
 
         return $uriRetriever->reveal();
     }
 
-    private function getJsonSchemaDraft03(): object
+    private function getDraftSchema(string $draft): stdClass
     {
-        if (!$this->jsonSchemaDraft03) {
-            $this->jsonSchemaDraft03 = json_decode(
-                file_get_contents(__DIR__ . '/../../dist/schema/json-schema-draft-03.json')
-            );
+        if (!array_key_exists($draft, $this->draftSchemas)) {
+            $this->draftSchemas[$draft] = $this->readAndJsonDecodeFile(self::DRAFT_SCHEMA_DIR . '/' . $draft);
         }
 
-        return $this->jsonSchemaDraft03;
+        return $this->draftSchemas[$draft];
     }
 
-    private function getJsonSchemaDraft04(): object
+    private function readAndJsonDecodeFile(string $file): stdClass
     {
-        if (!$this->jsonSchemaDraft04) {
-            $this->jsonSchemaDraft04 = json_decode(
-                file_get_contents(__DIR__ . '/../../dist/schema/json-schema-draft-04.json')
-            );
+        if (!file_exists($file)) {
+            throw new \InvalidArgumentException(sprintf('File "%s" does not exist', $file));
         }
 
-        return $this->jsonSchemaDraft04;
+        return json_decode(file_get_contents($file), false);
+    }
+
+    protected function is32Bit(): bool
+    {
+        return PHP_INT_SIZE === 4;
     }
 }
diff -pruN 6.4.1-1/tests/Constraints/WrongMessagesFailingTestCaseTest.php 6.5.2-1/tests/Constraints/WrongMessagesFailingTestCaseTest.php
--- 6.4.1-1/tests/Constraints/WrongMessagesFailingTestCaseTest.php	2025-04-04 13:08:07.000000000 +0000
+++ 6.5.2-1/tests/Constraints/WrongMessagesFailingTestCaseTest.php	2025-09-09 09:42:27.000000000 +0000
@@ -1,53 +1,45 @@
 <?php
 
-/*
- * This file is part of the JsonSchema package.
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
+declare(strict_types=1);
 
 namespace JsonSchema\Tests\Constraints;
 
 class WrongMessagesFailingTestCaseTest extends BaseTestCase
 {
+    /** @var bool */
     protected $validateSchema = true;
 
-    public function getInvalidTests(): array
+    public function getInvalidTests(): \Generator
     {
-        return [
-            [
-                '{
-                  "stringOrNumber":4.8,
-                  "booleanOrNull":["A","B"]
-                }',
-                '{
-                  "type":"object",
-                  "properties":{
-                    "stringOrNumber":{"type":["string","number"]},
-                    "booleanOrNull":{"type":["boolean","null"]}
-                  }
-                }'
-            ]
+        yield [
+            '{
+              "stringOrNumber":4.8,
+              "booleanOrNull":["A","B"]
+            }',
+            '{
+              "type":"object",
+              "properties":{
+                "stringOrNumber":{"type":["string","number"]},
+                "booleanOrNull":{"type":["boolean","null"]}
+              }
+            }'
         ];
     }
 
-    public function getValidTests(): array
+    public function getValidTests(): \Generator
     {
-        return [
-            [
-                '{
-                  "stringOrNumber":4.8,
-                  "booleanOrNull":true
-                }',
-                '{
-                  "type":"object",
-                  "properties":{
-                    "stringOrNumber":{"type":["string","number"]},
-                    "booleanOrNull":{"type":["boolean","null"]}
-                  }
-                }'
-            ]
+        yield [
+            '{
+              "stringOrNumber":4.8,
+              "booleanOrNull":true
+            }',
+            '{
+              "type":"object",
+              "properties":{
+                "stringOrNumber":{"type":["string","number"]},
+                "booleanOrNull":{"type":["boolean","null"]}
+              }
+            }'
         ];
     }
 }
diff -pruN 6.4.1-1/tests/Drafts/BaseDraftTestCase.php 6.5.2-1/tests/Drafts/BaseDraftTestCase.php
--- 6.4.1-1/tests/Drafts/BaseDraftTestCase.php	2025-04-04 13:08:07.000000000 +0000
+++ 6.5.2-1/tests/Drafts/BaseDraftTestCase.php	2025-09-09 09:42:27.000000000 +0000
@@ -6,15 +6,15 @@ namespace JsonSchema\Tests\Drafts;
 
 use JsonSchema\Tests\Constraints\BaseTestCase;
 
-/**
- * @package JsonSchema\Tests\Drafts
- */
 abstract class BaseDraftTestCase extends BaseTestCase
 {
     /** @var string */
-    protected $relativeTestsRoot = '/../../vendor/json-schema/json-schema-test-suite/tests';
+    protected const RELATIVE_TESTS_ROOT = '/../../vendor/json-schema/json-schema-test-suite/tests';
 
-    private function setUpTests($isValid): array
+    /**
+     * @return array<string, array{string, string}>
+     */
+    private function setUpTests(bool $isValid): array
     {
         $filePaths = $this->getFilePaths();
         $skippedTests = $this->getSkippedTests();
@@ -27,7 +27,7 @@ abstract class BaseDraftTestCase extends
                     continue;
                 }
 
-                $suites = json_decode(file_get_contents($file));
+                $suites = json_decode(file_get_contents($file), false);
                 foreach ($suites as $suite) {
                     $suiteDescription = $suite->description;
                     foreach ($suite->tests as $test) {
@@ -45,29 +45,23 @@ abstract class BaseDraftTestCase extends
         return $tests;
     }
 
-    /**
-     * {@inheritdoc}
-     */
-    public function getInvalidTests(): array
+    public function getInvalidTests(): \Generator
     {
-        return $this->setUpTests(false);
+        yield from $this->setUpTests(false);
     }
 
-    /**
-     * {@inheritdoc}
-     */
-    public function getValidTests(): array
+    public function getValidTests(): \Generator
     {
-        return $this->setUpTests(true);
+        yield from $this->setUpTests(true);
     }
 
     /**
-     * @return string[]
+     * @return list<string>
      */
     abstract protected function getFilePaths(): array;
 
     /**
-     * @return string[]
+     * @return list<string>
      */
     abstract protected function getSkippedTests(): array;
 
diff -pruN 6.4.1-1/tests/Drafts/Draft3Test.php 6.5.2-1/tests/Drafts/Draft3Test.php
--- 6.4.1-1/tests/Drafts/Draft3Test.php	2025-04-04 13:08:07.000000000 +0000
+++ 6.5.2-1/tests/Drafts/Draft3Test.php	2025-09-09 09:42:27.000000000 +0000
@@ -1,53 +1,122 @@
 <?php
 
-/*
- * This file is part of the JsonSchema package.
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
+declare(strict_types=1);
 
 namespace JsonSchema\Tests\Drafts;
 
-/**
- * @package JsonSchema\Tests\Drafts
- */
+use JsonSchema\Constraints\Factory;
+use JsonSchema\SchemaStorage;
+use JsonSchema\Validator;
+
 class Draft3Test extends BaseDraftTestCase
 {
+    /** @var string */
     protected $schemaSpec = 'http://json-schema.org/draft-03/schema#';
+    /** @var bool */
     protected $validateSchema = true;
 
     /**
+     * This test is a copy of https://github.com/json-schema-org/JSON-Schema-Test-Suite/blob/main/tests/draft3/ref.json#L203-L225
+     *
+     * @todo cleanup when #821 gets merged
+     *
+     * @param mixed $data
+     * @dataProvider refPreventsASiblingIdFromChangingTheBaseUriProvider
+     */
+    public function testRefPreventsASiblingIdFromChangingTheBaseUriProvider($data, bool $expectedResult): void
+    {
+        $schema = json_decode(<<<'JSON'
+            {
+                "id": "http://localhost:1234/sibling_id/base/",
+                "definitions": {
+                    "foo": {
+                        "id": "http://localhost:1234/sibling_id/foo.json",
+                        "type": "string"
+                    },
+                    "base_foo": {
+                        "$comment": "this canonical uri is http://localhost:1234/sibling_id/base/foo.json",
+                        "id": "foo.json",
+                        "type": "number"
+                    }
+                },
+                "extends": [
+                    {
+                        "$comment": "$ref resolves to http://localhost:1234/sibling_id/base/foo.json, not http://localhost:1234/sibling_id/foo.json",
+                        "id": "http://localhost:1234/sibling_id/",
+                        "$ref": "foo.json"
+                    }
+                ]
+            }
+JSON
+        , false);
+
+        $schemaStorage = new SchemaStorage();
+        $schemaStorage->addSchema(property_exists($schema, 'id') ? $schema->id : 'internal://mySchema', $schema);
+        $validator = new Validator(new Factory($schemaStorage));
+        $validator->validate($data, $schema);
+
+        self::assertEquals($expectedResult, $validator->isValid());
+    }
+
+    public function refPreventsASiblingIdFromChangingTheBaseUriProvider(): \Generator
+    {
+        yield '$ref resolves to /definitions/base_foo, data does not validate' => ['data' => 'a', 'valid' => false];
+        yield '$ref resolves to /definitions/base_foo, data validate' => ['data' => 1, 'valid' => true];
+    }
+
+    /**
      * {@inheritdoc}
      */
     protected function getFilePaths(): array
     {
         return [
-            realpath(__DIR__ . $this->relativeTestsRoot . '/draft3'),
-            realpath(__DIR__ . $this->relativeTestsRoot . '/draft3/optional')
+            realpath(__DIR__ . self::RELATIVE_TESTS_ROOT . '/draft3'),
+            realpath(__DIR__ . self::RELATIVE_TESTS_ROOT . '/draft3/optional')
+        ];
+    }
+
+    public function getInvalidTests(): \Generator
+    {
+        $skip = [
+            'ref.json / $ref prevents a sibling id from changing the base uri / $ref resolves to /definitions/base_foo, data does not validate'
         ];
+
+        foreach (parent::getInvalidTests() as $name => $testcase) {
+            if (in_array($name, $skip, true)) {
+                continue;
+            }
+            yield $name => $testcase;
+        }
     }
 
-    public function getInvalidForAssocTests(): array
+    public function getInvalidForAssocTests(): \Generator
     {
-        $tests = parent::getInvalidForAssocTests();
-        unset(
-            $tests['type.json / object type matches objects / an array is not an object'],
-            $tests['type.json / array type matches arrays / an object is not an array']
-        );
+        $skip = [
+            'type.json / object type matches objects / an array is not an object',
+            'type.json / array type matches arrays / an object is not an array',
+        ];
 
-        return $tests;
+        foreach (parent::getInvalidForAssocTests() as $name => $testcase) {
+            if (in_array($name, $skip, true)) {
+                continue;
+            }
+            yield $name => $testcase;
+        }
     }
 
-    public function getValidForAssocTests(): array
+    public function getValidForAssocTests(): \Generator
     {
-        $tests = parent::getValidForAssocTests();
-        unset(
-            $tests['type.json / object type matches objects / an array is not an object'],
-            $tests['type.json / array type matches arrays / an object is not an array']
-        );
+        $skip = [
+            'type.json / object type matches objects / an array is not an object',
+            'type.json / array type matches arrays / an object is not an array',
+        ];
 
-        return $tests;
+        foreach (parent::getValidForAssocTests() as $name => $testcase) {
+            if (in_array($name, $skip, true)) {
+                continue;
+            }
+            yield $name => $testcase;
+        }
     }
 
     /**
@@ -58,6 +127,7 @@ class Draft3Test extends BaseDraftTestCa
         return [
             // Optional
             'bignum.json',
+            'ecmascript-regex.json',
             'format.json',
             'jsregex.json',
             'zeroTerminatedFloats.json'
diff -pruN 6.4.1-1/tests/Drafts/Draft4Test.php 6.5.2-1/tests/Drafts/Draft4Test.php
--- 6.4.1-1/tests/Drafts/Draft4Test.php	2025-04-04 13:08:07.000000000 +0000
+++ 6.5.2-1/tests/Drafts/Draft4Test.php	2025-09-09 09:42:27.000000000 +0000
@@ -1,20 +1,12 @@
 <?php
 
-/*
- * This file is part of the JsonSchema package.
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
+declare(strict_types=1);
 
 namespace JsonSchema\Tests\Drafts;
 
-/**
- * @package JsonSchema\Tests\Drafts
- */
 class Draft4Test extends BaseDraftTestCase
 {
-    protected $schemaSpec = 'http://json-schema.org/draft-04/schema#';
+    /** @var bool */
     protected $validateSchema = true;
 
     /**
@@ -23,31 +15,93 @@ class Draft4Test extends BaseDraftTestCa
     protected function getFilePaths(): array
     {
         return [
-            realpath(__DIR__ . $this->relativeTestsRoot . '/draft4'),
-            realpath(__DIR__ . $this->relativeTestsRoot . '/draft4/optional')
+            realpath(__DIR__ . self::RELATIVE_TESTS_ROOT . '/draft4'),
+            realpath(__DIR__ . self::RELATIVE_TESTS_ROOT . '/draft4/optional')
         ];
     }
 
-    public function getInvalidForAssocTests(): array
+    public function getInvalidTests(): \Generator
     {
-        $tests = parent::getInvalidForAssocTests();
-        unset(
-            $tests['type.json / object type matches objects / an array is not an object'],
-            $tests['type.json / array type matches arrays / an object is not an array']
-        );
+        $skip = [
+            'id.json / id inside an enum is not a real identifier / no match on enum or $ref to id',
+            'ref.json / $ref prevents a sibling id from changing the base uri / $ref resolves to /definitions/base_foo, data does not validate',
+            'ref.json / Recursive references between schemas / invalid tree',
+            'ref.json / refs with quote / object with strings is invalid',
+            'ref.json / Location-independent identifier / mismatch',
+            'ref.json / Location-independent identifier with base URI change in subschema / mismatch',
+            'ref.json / empty tokens in $ref json-pointer / non-number is invalid',
+            'ref.json / id must be resolved against nearest parent, not just immediate parent / non-number is invalid',
+            'refRemote.json / Location-independent identifier in remote ref / string is invalid',
+            'refRemote.json / base URI change - change folder / string is invalid'
+        ];
+
+        foreach (parent::getInvalidTests() as $name => $testcase) {
+            if (in_array($name, $skip, true)) {
+                continue;
+            }
+            yield $name => $testcase;
+        }
+    }
+
+    public function getInvalidForAssocTests(): \Generator
+    {
+        $skip = [
+            'ref.json / Recursive references between schemas / valid tree',
+            'type.json / object type matches objects / an array is not an object',
+            'type.json / array type matches arrays / an object is not an array',
+        ];
 
-        return $tests;
+        foreach (parent::getInvalidForAssocTests() as $name => $testcase) {
+            if (in_array($name, $skip, true)) {
+                continue;
+            }
+            yield $name => $testcase;
+        }
     }
 
-    public function getValidForAssocTests(): array
+    public function getValidTests(): \Generator
     {
-        $tests = parent::getValidForAssocTests();
-        unset(
-            $tests['type.json / object type matches objects / an array is not an object'],
-            $tests['type.json / array type matches arrays / an object is not an array']
-        );
+        $skip = [
+            'ref.json / $ref prevents a sibling id from changing the base uri / $ref resolves to /definitions/base_foo, data validates',
+            'ref.json / Recursive references between schemas / valid tree',
+            'ref.json / refs with quote / object with numbers is valid',
+            'ref.json / Location-independent identifier / match',
+            'ref.json / Location-independent identifier with base URI change in subschema / match',
+            'ref.json / empty tokens in $ref json-pointer / number is valid',
+            'ref.json / naive replacement of $ref with its destination is not correct / match the enum exactly',
+            'ref.json / id must be resolved against nearest parent, not just immediate parent / number is valid',
+            'refRemote.json / Location-independent identifier in remote ref / integer is valid',
+            'refRemote.json / base URI change - change folder / number is valid',
+        ];
+
+        if ($this->is32Bit()) {
+            $skip[] = 'multipleOf.json / small multiple of large integer / any integer is a multiple of 1e-8'; // Test case contains a number which doesn't fit in 32 bits
+        }
+
+        foreach (parent::getValidTests() as $name => $testcase) {
+            if (in_array($name, $skip, true)) {
+                continue;
+            }
+            yield $name => $testcase;
+        }
+    }
+
+    public function getValidForAssocTests(): \Generator
+    {
+        $skip = [
+            'minProperties.json / minProperties validation / ignores arrays',
+            'required.json / required properties whose names are Javascript object property names / ignores arrays',
+            'required.json / required validation / ignores arrays',
+            'type.json / object type matches objects / an array is not an object',
+            'type.json / array type matches arrays / an object is not an array',
+        ];
 
-        return $tests;
+        foreach (parent::getValidForAssocTests() as $name => $testcase) {
+            if (in_array($name, $skip, true)) {
+                continue;
+            }
+            yield $name => $testcase;
+        }
     }
 
     /**
@@ -58,7 +112,9 @@ class Draft4Test extends BaseDraftTestCa
         return [
             // Optional
             'bignum.json',
+            'ecmascript-regex.json',
             'format.json',
+            'float-overflow.json',
             'zeroTerminatedFloats.json',
             // Required
             'not.json' // only one test case failing
diff -pruN 6.4.1-1/tests/Entity/JsonPointerTest.php 6.5.2-1/tests/Entity/JsonPointerTest.php
--- 6.4.1-1/tests/Entity/JsonPointerTest.php	2025-04-04 13:08:07.000000000 +0000
+++ 6.5.2-1/tests/Entity/JsonPointerTest.php	2025-09-09 09:42:27.000000000 +0000
@@ -2,24 +2,12 @@
 
 declare(strict_types=1);
 
-/*
- * This file is part of the JsonSchema package.
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
 namespace JsonSchema\Tests\Entity;
 
 use JsonSchema\Entity\JsonPointer;
 use JsonSchema\Exception\InvalidArgumentException;
 use PHPUnit\Framework\TestCase;
 
-/**
- * @package JsonSchema\Tests\Entity
- *
- * @author Joost Nijhuis <jnijhuis81@gmail.com>
- */
 class JsonPointerTest extends TestCase
 {
     /**
diff -pruN 6.4.1-1/tests/Exception/InvalidArgumentExceptionTest.php 6.5.2-1/tests/Exception/InvalidArgumentExceptionTest.php
--- 6.4.1-1/tests/Exception/InvalidArgumentExceptionTest.php	2025-04-04 13:08:07.000000000 +0000
+++ 6.5.2-1/tests/Exception/InvalidArgumentExceptionTest.php	2025-09-09 09:42:27.000000000 +0000
@@ -1,5 +1,7 @@
 <?php
 
+declare(strict_types=1);
+
 namespace JsonSchema\Tests\Exception;
 
 use JsonSchema\Exception\InvalidArgumentException;
@@ -11,6 +13,6 @@ class InvalidArgumentExceptionTest exten
     {
         $exception = new InvalidArgumentException();
         self::assertInstanceOf('\InvalidArgumentException', $exception);
-        self::assertInstanceOf('\JsonSchema\Exception\ExceptionInterface', $exception);
+        self::assertInstanceOf(\JsonSchema\Exception\ExceptionInterface::class, $exception);
     }
 }
diff -pruN 6.4.1-1/tests/Exception/InvalidSchemaMediaTypeExceptionTest.php 6.5.2-1/tests/Exception/InvalidSchemaMediaTypeExceptionTest.php
--- 6.4.1-1/tests/Exception/InvalidSchemaMediaTypeExceptionTest.php	2025-04-04 13:08:07.000000000 +0000
+++ 6.5.2-1/tests/Exception/InvalidSchemaMediaTypeExceptionTest.php	2025-09-09 09:42:27.000000000 +0000
@@ -1,5 +1,7 @@
 <?php
 
+declare(strict_types=1);
+
 namespace JsonSchema\Tests\Exception;
 
 use JsonSchema\Exception\InvalidSchemaMediaTypeException;
@@ -11,7 +13,7 @@ class InvalidSchemaMediaTypeExceptionTes
     {
         $exception = new InvalidSchemaMediaTypeException();
         self::assertInstanceOf('\RuntimeException', $exception);
-        self::assertInstanceOf('\JsonSchema\Exception\RuntimeException', $exception);
-        self::assertInstanceOf('\JsonSchema\Exception\ExceptionInterface', $exception);
+        self::assertInstanceOf(\JsonSchema\Exception\RuntimeException::class, $exception);
+        self::assertInstanceOf(\JsonSchema\Exception\ExceptionInterface::class, $exception);
     }
 }
diff -pruN 6.4.1-1/tests/Exception/InvalidSourceUriExceptionTest.php 6.5.2-1/tests/Exception/InvalidSourceUriExceptionTest.php
--- 6.4.1-1/tests/Exception/InvalidSourceUriExceptionTest.php	2025-04-04 13:08:07.000000000 +0000
+++ 6.5.2-1/tests/Exception/InvalidSourceUriExceptionTest.php	2025-09-09 09:42:27.000000000 +0000
@@ -1,5 +1,7 @@
 <?php
 
+declare(strict_types=1);
+
 namespace JsonSchema\Tests\Exception;
 
 use JsonSchema\Exception\InvalidSourceUriException;
@@ -11,7 +13,7 @@ class InvalidSourceUriExceptionTest exte
     {
         $exception = new InvalidSourceUriException();
         self::assertInstanceOf('\InvalidArgumentException', $exception);
-        self::assertInstanceOf('\JsonSchema\Exception\InvalidArgumentException', $exception);
-        self::assertInstanceOf('\JsonSchema\Exception\ExceptionInterface', $exception);
+        self::assertInstanceOf(\JsonSchema\Exception\InvalidArgumentException::class, $exception);
+        self::assertInstanceOf(\JsonSchema\Exception\ExceptionInterface::class, $exception);
     }
 }
diff -pruN 6.4.1-1/tests/Exception/JsonDecodingExceptionTest.php 6.5.2-1/tests/Exception/JsonDecodingExceptionTest.php
--- 6.4.1-1/tests/Exception/JsonDecodingExceptionTest.php	2025-04-04 13:08:07.000000000 +0000
+++ 6.5.2-1/tests/Exception/JsonDecodingExceptionTest.php	2025-09-09 09:42:27.000000000 +0000
@@ -1,5 +1,7 @@
 <?php
 
+declare(strict_types=1);
+
 namespace JsonSchema\Tests\Exception;
 
 use JsonSchema\Exception\JsonDecodingException;
@@ -11,8 +13,8 @@ class JsonDecodingExceptionTest extends
     {
         $exception = new JsonDecodingException();
         self::assertInstanceOf('\RuntimeException', $exception);
-        self::assertInstanceOf('\JsonSchema\Exception\RuntimeException', $exception);
-        self::assertInstanceOf('\JsonSchema\Exception\ExceptionInterface', $exception);
+        self::assertInstanceOf(\JsonSchema\Exception\RuntimeException::class, $exception);
+        self::assertInstanceOf(\JsonSchema\Exception\ExceptionInterface::class, $exception);
     }
 
     public function testDefaultMessage()
diff -pruN 6.4.1-1/tests/Exception/ResourceNotFoundExceptionTest.php 6.5.2-1/tests/Exception/ResourceNotFoundExceptionTest.php
--- 6.4.1-1/tests/Exception/ResourceNotFoundExceptionTest.php	2025-04-04 13:08:07.000000000 +0000
+++ 6.5.2-1/tests/Exception/ResourceNotFoundExceptionTest.php	2025-09-09 09:42:27.000000000 +0000
@@ -1,5 +1,7 @@
 <?php
 
+declare(strict_types=1);
+
 namespace JsonSchema\Tests\Exception;
 
 use JsonSchema\Exception\ResourceNotFoundException;
@@ -11,7 +13,7 @@ class ResourceNotFoundExceptionTest exte
     {
         $exception = new ResourceNotFoundException();
         self::assertInstanceOf('\RuntimeException', $exception);
-        self::assertInstanceOf('\JsonSchema\Exception\RuntimeException', $exception);
-        self::assertInstanceOf('\JsonSchema\Exception\ExceptionInterface', $exception);
+        self::assertInstanceOf(\JsonSchema\Exception\RuntimeException::class, $exception);
+        self::assertInstanceOf(\JsonSchema\Exception\ExceptionInterface::class, $exception);
     }
 }
diff -pruN 6.4.1-1/tests/Exception/RuntimeExceptionTest.php 6.5.2-1/tests/Exception/RuntimeExceptionTest.php
--- 6.4.1-1/tests/Exception/RuntimeExceptionTest.php	2025-04-04 13:08:07.000000000 +0000
+++ 6.5.2-1/tests/Exception/RuntimeExceptionTest.php	2025-09-09 09:42:27.000000000 +0000
@@ -1,5 +1,7 @@
 <?php
 
+declare(strict_types=1);
+
 namespace JsonSchema\Tests\Exception;
 
 use JsonSchema\Exception\RuntimeException;
@@ -11,6 +13,6 @@ class RuntimeExceptionTest extends TestC
     {
         $exception = new RuntimeException();
         self::assertInstanceOf('\RuntimeException', $exception);
-        self::assertInstanceOf('\JsonSchema\Exception\ExceptionInterface', $exception);
+        self::assertInstanceOf(\JsonSchema\Exception\ExceptionInterface::class, $exception);
     }
 }
diff -pruN 6.4.1-1/tests/Exception/UnresolvableJsonPointerExceptionTest.php 6.5.2-1/tests/Exception/UnresolvableJsonPointerExceptionTest.php
--- 6.4.1-1/tests/Exception/UnresolvableJsonPointerExceptionTest.php	2025-04-04 13:08:07.000000000 +0000
+++ 6.5.2-1/tests/Exception/UnresolvableJsonPointerExceptionTest.php	2025-09-09 09:42:27.000000000 +0000
@@ -1,5 +1,7 @@
 <?php
 
+declare(strict_types=1);
+
 namespace JsonSchema\Tests\Exception;
 
 use JsonSchema\Exception\UnresolvableJsonPointerException;
@@ -11,7 +13,7 @@ class UnresolvableJsonPointerExceptionTe
     {
         $exception = new UnresolvableJsonPointerException();
         self::assertInstanceOf('\InvalidArgumentException', $exception);
-        self::assertInstanceOf('\JsonSchema\Exception\InvalidArgumentException', $exception);
-        self::assertInstanceOf('\JsonSchema\Exception\ExceptionInterface', $exception);
+        self::assertInstanceOf(\JsonSchema\Exception\InvalidArgumentException::class, $exception);
+        self::assertInstanceOf(\JsonSchema\Exception\ExceptionInterface::class, $exception);
     }
 }
diff -pruN 6.4.1-1/tests/Exception/UriResolverExceptionTest.php 6.5.2-1/tests/Exception/UriResolverExceptionTest.php
--- 6.4.1-1/tests/Exception/UriResolverExceptionTest.php	2025-04-04 13:08:07.000000000 +0000
+++ 6.5.2-1/tests/Exception/UriResolverExceptionTest.php	2025-09-09 09:42:27.000000000 +0000
@@ -1,5 +1,7 @@
 <?php
 
+declare(strict_types=1);
+
 namespace JsonSchema\Tests\Exception;
 
 use JsonSchema\Exception\UriResolverException;
@@ -11,7 +13,7 @@ class UriResolverExceptionTest extends T
     {
         $exception = new UriResolverException();
         self::assertInstanceOf('\RuntimeException', $exception);
-        self::assertInstanceOf('\JsonSchema\Exception\RuntimeException', $exception);
-        self::assertInstanceOf('\JsonSchema\Exception\ExceptionInterface', $exception);
+        self::assertInstanceOf(\JsonSchema\Exception\RuntimeException::class, $exception);
+        self::assertInstanceOf(\JsonSchema\Exception\ExceptionInterface::class, $exception);
     }
 }
diff -pruN 6.4.1-1/tests/Iterators/ObjectIteratorTest.php 6.5.2-1/tests/Iterators/ObjectIteratorTest.php
--- 6.4.1-1/tests/Iterators/ObjectIteratorTest.php	2025-04-04 13:08:07.000000000 +0000
+++ 6.5.2-1/tests/Iterators/ObjectIteratorTest.php	2025-09-09 09:42:27.000000000 +0000
@@ -1,11 +1,6 @@
 <?php
 
-/*
- * This file is part of the JsonSchema package.
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
+declare(strict_types=1);
 
 namespace JsonSchema\Tests\Iterators;
 
@@ -39,7 +34,7 @@ class ObjectIteratorTest extends TestCas
     {
         $i = new ObjectIterator($this->testObject);
 
-        $this->assertInstanceOf('\JsonSchema\Iterator\ObjectIterator', $i);
+        $this->assertInstanceOf(\JsonSchema\Iterator\ObjectIterator::class, $i);
     }
 
     public function testInitialState(): void
diff -pruN 6.4.1-1/tests/JsonSchemaTestSuiteTest.php 6.5.2-1/tests/JsonSchemaTestSuiteTest.php
--- 6.4.1-1/tests/JsonSchemaTestSuiteTest.php	1970-01-01 00:00:00.000000000 +0000
+++ 6.5.2-1/tests/JsonSchemaTestSuiteTest.php	2025-09-09 09:42:27.000000000 +0000
@@ -0,0 +1,157 @@
+<?php
+
+declare(strict_types=1);
+
+namespace JsonSchema\Tests;
+
+use CallbackFilterIterator;
+use JsonSchema\Constraints\Factory;
+use JsonSchema\SchemaStorage;
+use JsonSchema\SchemaStorageInterface;
+use JsonSchema\Validator;
+use PHPUnit\Framework\TestCase;
+use RecursiveDirectoryIterator;
+use RecursiveIteratorIterator;
+
+class JsonSchemaTestSuiteTest extends TestCase
+{
+    /**
+     * @dataProvider casesDataProvider
+     *
+     * @param mixed $data
+     */
+    public function testTestCaseValidatesCorrectly(
+        string $testCaseDescription,
+        string $testDescription,
+        \stdClass $schema,
+        $data,
+        bool $expectedValidationResult,
+        bool $optional
+    ): void
+    {
+        $schemaStorage = new SchemaStorage();
+        $schemaStorage->addSchema(property_exists($schema, 'id') ? $schema->id : SchemaStorage::INTERNAL_PROVIDED_SCHEMA_URI, $schema);
+        $this->loadRemotesIntoStorage($schemaStorage);
+        $validator = new Validator(new Factory($schemaStorage));
+
+        try {
+            $validator->validate($data, $schema);
+        } catch (\Exception $e) {
+            if ($optional) {
+                $this->markTestSkipped('Optional test case would during validate() invocation');
+            }
+
+            throw $e;
+        }
+
+        if ($optional && $expectedValidationResult !== (count($validator->getErrors()) === 0)) {
+            $this->markTestSkipped('Optional test case would fail');
+        }
+
+        self::assertEquals($expectedValidationResult, count($validator->getErrors()) === 0);
+    }
+
+    public function casesDataProvider(): \Generator
+    {
+        $testDir = __DIR__ . '/../vendor/json-schema/json-schema-test-suite/tests';
+        $drafts = array_filter(glob($testDir . '/*'), static function (string $filename) {
+            return is_dir($filename);
+        });
+        $skippedDrafts = ['draft6', 'draft7', 'draft2019-09', 'draft2020-12', 'draft-next', 'latest'];
+
+        foreach ($drafts as $draft) {
+            if (in_array(basename($draft), $skippedDrafts, true)) {
+                continue;
+            }
+
+            $files = new CallbackFilterIterator(
+                new RecursiveIteratorIterator(
+                    new RecursiveDirectoryIterator($draft)
+                ),
+                function ($file) {
+                    return $file->isFile() && strtolower($file->getExtension()) === 'json';
+                }
+            );
+            /** @var \SplFileInfo $file */
+            foreach ($files as $file) {
+                $contents = json_decode(file_get_contents($file->getPathname()), false);
+                foreach ($contents as $testCase) {
+                    foreach ($testCase->tests as $test) {
+                        $name = sprintf(
+                            '[%s/%s%s]: %s: %s is expected to be %s',
+                            basename($draft),
+                            str_contains($file->getPathname(), '/optional/') ? 'optional/' : '',
+                            $file->getBasename(),
+                            $testCase->description,
+                            $test->description,
+                            $test->valid ? 'valid' : 'invalid'
+                        );
+
+                        if ($this->shouldNotYieldTest($name)) {
+                            continue;
+                        }
+
+                        yield $name => [
+                            'testCaseDescription' => $testCase->description,
+                            'testDescription' => $test->description,
+                            'schema' => $testCase->schema,
+                            'data' => $test->data,
+                            'expectedValidationResult' => $test->valid,
+                            'optional' => str_contains($file->getPathname(), '/optional/')
+                        ];
+                    }
+
+                }
+            }
+        }
+    }
+
+    private function loadRemotesIntoStorage(SchemaStorageInterface $storage): void
+    {
+        $remotesDir = __DIR__ . '/../vendor/json-schema/json-schema-test-suite/remotes';
+
+        $directory = new \RecursiveDirectoryIterator($remotesDir);
+        $iterator = new \RecursiveIteratorIterator($directory);
+
+        foreach ($iterator as $info) {
+            if (!$info->isFile()) {
+                continue;
+            }
+
+            $id = str_replace($remotesDir, 'http://localhost:1234', $info->getPathname());
+            $storage->addSchema($id, json_decode(file_get_contents($info->getPathname()), false));
+        }
+    }
+
+    private function shouldNotYieldTest(string $name): bool
+    {
+        $skip = [
+            '[draft4/ref.json]: refs with quote: object with numbers is valid is expected to be valid', // Test case was added after v1.2.0, skip test for now.
+            '[draft4/ref.json]: refs with quote: object with strings is invalid is expected to be invalid', // Test case was added after v1.2.0, skip test for now.
+            '[draft4/ref.json]: Location-independent identifier: match is expected to be valid', // Test case was added after v1.2.0, skip test for now.
+            '[draft4/ref.json]: Location-independent identifier: mismatch is expected to be invalid', // Test case was added after v1.2.0, skip test for now.
+            '[draft4/ref.json]: Location-independent identifier with base URI change in subschema: match is expected to be valid', // Test case was added after v1.2.0, skip test for now.
+            '[draft4/ref.json]: Location-independent identifier with base URI change in subschema: mismatch is expected to be invalid', // Test case was added after v1.2.0, skip test for now.
+            '[draft4/ref.json]: id must be resolved against nearest parent, not just immediate parent: number is valid is expected to be valid', // Test case was added after v1.2.0, skip test for now.
+            '[draft4/ref.json]: id must be resolved against nearest parent, not just immediate parent: non-number is invalid is expected to be invalid', // Test case was added after v1.2.0, skip test for now.
+            '[draft4/ref.json]: empty tokens in $ref json-pointer: number is valid is expected to be valid', // Test case was added after v1.2.0, skip test for now.
+            '[draft4/ref.json]: empty tokens in $ref json-pointer: non-number is invalid is expected to be invalid', // Test case was added after v1.2.0, skip test for now.
+            '[draft4/refRemote.json]: base URI change - change folder: number is valid is expected to be valid', // Test case was added after v1.2.0, skip test for now.
+            '[draft4/refRemote.json]: base URI change - change folder: string is invalid is expected to be invalid', // Test case was added after v1.2.0, skip test for now.
+            '[draft4/refRemote.json]: Location-independent identifier in remote ref: integer is valid is expected to be valid', // Test case was added after v1.2.0, skip test for now.
+            '[draft4/refRemote.json]: Location-independent identifier in remote ref: string is invalid is expected to be invalid', // Test case was added after v1.2.0, skip test for now.
+        ];
+
+        if ($this->is32Bit()) {
+            $skip[] = '[draft4/multipleOf.json]: small multiple of large integer: any integer is a multiple of 1e-8 is expected to be valid'; // Test case contains a number which doesn't fit in 32 bits
+        }
+
+        return in_array($name, $skip, true);
+    }
+
+    private function is32Bit(): bool
+    {
+        return PHP_INT_SIZE === 4;
+    }
+
+}
diff -pruN 6.4.1-1/tests/RefTest.php 6.5.2-1/tests/RefTest.php
--- 6.4.1-1/tests/RefTest.php	2025-04-04 13:08:07.000000000 +0000
+++ 6.5.2-1/tests/RefTest.php	2025-09-09 09:42:27.000000000 +0000
@@ -1,11 +1,6 @@
 <?php
 
-/*
- * This file is part of the JsonSchema package.
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
+declare(strict_types=1);
 
 namespace JsonSchema\Tests;
 
@@ -56,7 +51,7 @@ class RefTest extends TestCase
                 }',
                 '{"propertyOne": 5}',
                 true,
-                '\JsonSchema\Exception\UnresolvableJsonPointerException'
+                \JsonSchema\Exception\UnresolvableJsonPointerException::class
             ]
         ];
     }
diff -pruN 6.4.1-1/tests/SchemaStorageTest.php 6.5.2-1/tests/SchemaStorageTest.php
--- 6.4.1-1/tests/SchemaStorageTest.php	2025-04-04 13:08:07.000000000 +0000
+++ 6.5.2-1/tests/SchemaStorageTest.php	2025-09-09 09:42:27.000000000 +0000
@@ -1,11 +1,6 @@
 <?php
 
-/*
- * This file is part of the JsonSchema package.
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
+declare(strict_types=1);
 
 namespace JsonSchema\Tests;
 
@@ -21,7 +16,7 @@ class SchemaStorageTest extends TestCase
         $mainSchema = $this->getMainSchema();
         $mainSchemaPath = 'http://www.example.com/schema.json';
 
-        $uriRetriever = $this->prophesize('JsonSchema\UriRetrieverInterface');
+        $uriRetriever = $this->prophesize(\JsonSchema\UriRetrieverInterface::class);
         $uriRetriever->retrieve($mainSchemaPath)->willReturn($mainSchema)->shouldBeCalled();
 
         $schemaStorage = new SchemaStorage($uriRetriever->reveal());
@@ -55,7 +50,7 @@ class SchemaStorageTest extends TestCase
         $schema3Path = 'http://www.my-domain.com/schema3.json';
 
         /** @var UriRetriever $uriRetriever */
-        $uriRetriever = $this->prophesize('JsonSchema\UriRetrieverInterface');
+        $uriRetriever = $this->prophesize(\JsonSchema\UriRetrieverInterface::class);
         $uriRetriever->retrieve($mainSchemaPath)->willReturn($mainSchema)->shouldBeCalled();
         $uriRetriever->retrieve($schema2Path)->willReturn($schema2)->shouldBeCalled();
         $uriRetriever->retrieve($schema3Path)->willReturn($schema3)->shouldBeCalled();
@@ -102,13 +97,13 @@ class SchemaStorageTest extends TestCase
 
     public function testUnresolvableJsonPointExceptionShouldBeThrown(): void
     {
-        $this->expectException('JsonSchema\Exception\UnresolvableJsonPointerException');
+        $this->expectException(\JsonSchema\Exception\UnresolvableJsonPointerException::class);
         $this->expectExceptionMessage('File: http://www.example.com/schema.json is found, but could not resolve fragment: #/definitions/car');
 
         $mainSchema = $this->getInvalidSchema();
         $mainSchemaPath = 'http://www.example.com/schema.json';
 
-        $uriRetriever = $this->prophesize('JsonSchema\UriRetrieverInterface');
+        $uriRetriever = $this->prophesize(\JsonSchema\UriRetrieverInterface::class);
         $uriRetriever->retrieve($mainSchemaPath)
             ->willReturn($mainSchema)
             ->shouldBeCalled();
@@ -119,7 +114,7 @@ class SchemaStorageTest extends TestCase
 
     public function testResolveRefWithNoAssociatedFileName(): void
     {
-        $this->expectException('JsonSchema\Exception\UnresolvableJsonPointerException');
+        $this->expectException(\JsonSchema\Exception\UnresolvableJsonPointerException::class);
         $this->expectExceptionMessage("Could not resolve fragment '#': no file is defined");
 
         $schemaStorage = new SchemaStorage();
@@ -264,14 +259,14 @@ class SchemaStorageTest extends TestCase
     {
         $s = new SchemaStorage();
         $s->addSchema('http://json-schema.org/draft-04/schema#');
-        $this->assertInstanceOf('\JsonSchema\Uri\UriRetriever', $s->getUriRetriever());
+        $this->assertInstanceOf(\JsonSchema\Uri\UriRetriever::class, $s->getUriRetriever());
     }
 
     public function testGetUriResolver(): void
     {
         $s = new SchemaStorage();
         $s->addSchema('http://json-schema.org/draft-04/schema#');
-        $this->assertInstanceOf('\JsonSchema\Uri\UriResolver', $s->getUriResolver());
+        $this->assertInstanceOf(\JsonSchema\Uri\UriResolver::class, $s->getUriResolver());
     }
 
     public function testMetaSchemaFixes(): void
@@ -291,15 +286,17 @@ class SchemaStorageTest extends TestCase
     {
         $schemaOne = json_decode('{"id": "test/schema", "$ref": "../test2/schema2"}');
 
-        $uriRetriever = $this->prophesize('JsonSchema\UriRetrieverInterface');
+        $uriRetriever = $this->prophesize(\JsonSchema\UriRetrieverInterface::class);
         $uriRetriever->retrieve('test/schema')->willReturn($schemaOne)->shouldBeCalled();
 
         $s = new SchemaStorage($uriRetriever->reveal());
-        $schema = $s->addSchema('test/schema');
+        $s->addSchema('test/schema');
 
         $r = new \ReflectionObject($s);
         $p = $r->getProperty('schemas');
-        $p->setAccessible(true);
+        if (PHP_VERSION_ID < 80100) {
+            $p->setAccessible(true);
+        }
         $schemas = $p->getValue($s);
 
         $this->assertEquals(
diff -pruN 6.4.1-1/tests/Uri/Retrievers/CurlTest.php 6.5.2-1/tests/Uri/Retrievers/CurlTest.php
--- 6.4.1-1/tests/Uri/Retrievers/CurlTest.php	2025-04-04 13:08:07.000000000 +0000
+++ 6.5.2-1/tests/Uri/Retrievers/CurlTest.php	2025-09-09 09:42:27.000000000 +0000
@@ -1,5 +1,7 @@
 <?php
 
+declare(strict_types=1);
+
 namespace JsonSchema\Tests\Uri\Retrievers
 {
     use JsonSchema\Uri\Retrievers\Curl;
@@ -19,7 +21,7 @@ namespace JsonSchema\Tests\Uri\Retriever
         {
             $c = new Curl();
 
-            $this->expectException('\JsonSchema\Exception\ResourceNotFoundException');
+            $this->expectException(\JsonSchema\Exception\ResourceNotFoundException::class);
             $this->expectExceptionMessage('JSON schema not found');
 
             $c->retrieve(__DIR__ . '/notARealFile');
diff -pruN 6.4.1-1/tests/Uri/Retrievers/FileGetContentsTest.php 6.5.2-1/tests/Uri/Retrievers/FileGetContentsTest.php
--- 6.4.1-1/tests/Uri/Retrievers/FileGetContentsTest.php	2025-04-04 13:08:07.000000000 +0000
+++ 6.5.2-1/tests/Uri/Retrievers/FileGetContentsTest.php	2025-09-09 09:42:27.000000000 +0000
@@ -1,13 +1,12 @@
 <?php
 
+declare(strict_types=1);
+
 namespace JsonSchema\Tests\Uri\Retrievers;
 
 use JsonSchema\Uri\Retrievers\FileGetContents;
 use PHPUnit\Framework\TestCase;
 
-/**
- * @group FileGetContents
- */
 class FileGetContentsTest extends TestCase
 {
     public function testFetchMissingFile(): void
@@ -32,7 +31,9 @@ class FileGetContentsTest extends TestCa
 
         $reflector = new \ReflectionObject($res);
         $fetchContentType = $reflector->getMethod('fetchContentType');
-        $fetchContentType->setAccessible(true);
+        if (PHP_VERSION_ID < 80100) {
+            $fetchContentType->setAccessible(true);
+        }
 
         $this->assertTrue($fetchContentType->invoke($res, ['Content-Type: application/json']));
         $this->assertFalse($fetchContentType->invoke($res, ['X-Some-Header: whateverValue']));
diff -pruN 6.4.1-1/tests/Uri/Retrievers/PredefinedArrayTest.php 6.5.2-1/tests/Uri/Retrievers/PredefinedArrayTest.php
--- 6.4.1-1/tests/Uri/Retrievers/PredefinedArrayTest.php	2025-04-04 13:08:07.000000000 +0000
+++ 6.5.2-1/tests/Uri/Retrievers/PredefinedArrayTest.php	2025-09-09 09:42:27.000000000 +0000
@@ -1,13 +1,12 @@
 <?php
 
+declare(strict_types=1);
+
 namespace JsonSchema\Tests\Uri\Retrievers;
 
 use JsonSchema\Uri\Retrievers\PredefinedArray;
 use PHPUnit\Framework\TestCase;
 
-/**
- * @group PredefinedArray
- */
 class PredefinedArrayTest extends TestCase
 {
     private $retriever;
diff -pruN 6.4.1-1/tests/Uri/UriResolverTest.php 6.5.2-1/tests/Uri/UriResolverTest.php
--- 6.4.1-1/tests/Uri/UriResolverTest.php	2025-04-04 13:08:07.000000000 +0000
+++ 6.5.2-1/tests/Uri/UriResolverTest.php	2025-09-09 09:42:27.000000000 +0000
@@ -1,5 +1,7 @@
 <?php
 
+declare(strict_types=1);
+
 namespace JsonSchema\Tests\Uri;
 
 use JsonSchema\Uri\UriResolver;
diff -pruN 6.4.1-1/tests/Uri/UriRetrieverTest.php 6.5.2-1/tests/Uri/UriRetrieverTest.php
--- 6.4.1-1/tests/Uri/UriRetrieverTest.php	2025-04-04 13:08:07.000000000 +0000
+++ 6.5.2-1/tests/Uri/UriRetrieverTest.php	2025-09-09 09:42:27.000000000 +0000
@@ -1,11 +1,6 @@
 <?php
 
-/*
- * This file is part of the JsonSchema package.
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
+declare(strict_types=1);
 
 namespace JsonSchema\Tests\Uri;
 
@@ -17,9 +12,6 @@ use JsonSchema\Uri\UriRetriever;
 use JsonSchema\Validator;
 use PHPUnit\Framework\TestCase;
 
-/**
- * @group UriRetriever
- */
 class UriRetrieverTest extends TestCase
 {
     protected $validator;
@@ -37,7 +29,7 @@ class UriRetrieverTest extends TestCase
             throw new JsonDecodingException($error);
         }
 
-        $retriever = $this->createMock('JsonSchema\Uri\UriRetriever');
+        $retriever = $this->createMock(\JsonSchema\Uri\UriRetriever::class);
 
         $retriever->expects($this->at(0))
                   ->method('retrieve')
@@ -235,7 +227,7 @@ EOF;
 
     public function testConfirmMediaTypeAcceptsJsonSchemaType(): void
     {
-        $uriRetriever = $this->createMock('JsonSchema\Uri\Retrievers\UriRetrieverInterface');
+        $uriRetriever = $this->createMock(\JsonSchema\Uri\Retrievers\UriRetrieverInterface::class);
         $retriever = new UriRetriever();
 
         $uriRetriever->expects($this->at(0))
@@ -247,7 +239,7 @@ EOF;
 
     public function testConfirmMediaTypeAcceptsJsonType(): void
     {
-        $uriRetriever = $this->createMock('JsonSchema\Uri\Retrievers\UriRetrieverInterface');
+        $uriRetriever = $this->createMock(\JsonSchema\Uri\Retrievers\UriRetrieverInterface::class);
         $retriever = new UriRetriever();
 
         $uriRetriever->expects($this->at(0))
@@ -259,7 +251,7 @@ EOF;
 
     public function testConfirmMediaTypeThrowsExceptionForUnsupportedTypes(): void
     {
-        $uriRetriever = $this->createMock('JsonSchema\Uri\Retrievers\UriRetrieverInterface');
+        $uriRetriever = $this->createMock(\JsonSchema\Uri\Retrievers\UriRetrieverInterface::class);
         $retriever = new UriRetriever();
         $uriRetriever->expects($this->at(0))
                 ->method('getContentType')
@@ -274,12 +266,16 @@ EOF;
     {
         $retrieverMock = $this->getRetrieverMock($schema);
 
-        $factory = new \ReflectionProperty('JsonSchema\Constraints\BaseConstraint', 'factory');
-        $factory->setAccessible(true);
+        $factory = new \ReflectionProperty(\JsonSchema\Constraints\BaseConstraint::class, 'factory');
+        if (PHP_VERSION_ID < 80100) {
+            $factory->setAccessible(true);
+        }
         $factory = $factory->getValue($this->validator);
 
-        $retriever = new \ReflectionProperty('JsonSchema\Constraints\Factory', 'uriRetriever');
-        $retriever->setAccessible(true);
+        $retriever = new \ReflectionProperty(\JsonSchema\Constraints\Factory::class, 'uriRetriever');
+        if (PHP_VERSION_ID < 80100) {
+            $retriever->setAccessible(true);
+        }
         $retriever->setValue($factory, $retrieverMock);
     }
 
@@ -333,7 +329,7 @@ EOF;
 
     public function testInvalidContentTypeEndpointsDefault(): void
     {
-        $mock = $this->createMock('JsonSchema\Uri\Retrievers\UriRetrieverInterface');
+        $mock = $this->createMock(\JsonSchema\Uri\Retrievers\UriRetrieverInterface::class);
         $mock->method('getContentType')->willReturn('Application/X-Fake-Type');
         $retriever = new UriRetriever();
 
@@ -343,7 +339,7 @@ EOF;
 
     public function testInvalidContentTypeEndpointsUnknown(): void
     {
-        $mock = $this->createMock('JsonSchema\Uri\Retrievers\UriRetrieverInterface');
+        $mock = $this->createMock(\JsonSchema\Uri\Retrievers\UriRetrieverInterface::class);
         $mock->method('getContentType')->willReturn('Application/X-Fake-Type');
         $retriever = new UriRetriever();
 
@@ -353,7 +349,7 @@ EOF;
 
     public function testInvalidContentTypeEndpointsAdded(): void
     {
-        $mock = $this->createMock('JsonSchema\Uri\Retrievers\UriRetrieverInterface');
+        $mock = $this->createMock(\JsonSchema\Uri\Retrievers\UriRetrieverInterface::class);
         $mock->method('getContentType')->willReturn('Application/X-Fake-Type');
         $retriever = new UriRetriever();
         $retriever->addInvalidContentTypeEndpoint('http://example.com');
@@ -370,12 +366,16 @@ EOF;
 
         // inject a schema cache value
         $schemaCache = $reflector->getProperty('schemaCache');
-        $schemaCache->setAccessible(true);
+        if (PHP_VERSION_ID < 80100) {
+            $schemaCache->setAccessible(true);
+        }
         $schemaCache->setValue($retriever, ['local://test/uri' => 'testSchemaValue']);
 
         // retrieve from schema cache
         $loadSchema = $reflector->getMethod('loadSchema');
-        $loadSchema->setAccessible(true);
+        if (PHP_VERSION_ID < 80100) {
+            $loadSchema->setAccessible(true);
+        }
         $this->assertEquals(
             'testSchemaValue',
             $loadSchema->invoke($retriever, 'local://test/uri')
@@ -386,7 +386,7 @@ EOF;
     {
         $retriever = new UriRetriever();
 
-        $this->expectException('JsonSchema\Exception\JsonDecodingException');
+        $this->expectException(\JsonSchema\Exception\JsonDecodingException::class);
         $this->expectExceptionMessage('JSON syntax is malformed');
 
         $retriever->retrieve('package://tests/fixtures/bad-syntax.json');
diff -pruN 6.4.1-1/tests/ValidatorTest.php 6.5.2-1/tests/ValidatorTest.php
--- 6.4.1-1/tests/ValidatorTest.php	2025-04-04 13:08:07.000000000 +0000
+++ 6.5.2-1/tests/ValidatorTest.php	2025-09-09 09:42:27.000000000 +0000
@@ -1,5 +1,7 @@
 <?php
 
+declare(strict_types=1);
+
 namespace JsonSchema\Tests;
 
 use JsonSchema\Exception\InvalidArgumentException;
