assertEquals is not like assertEquals - Change how values get compared with Comparators

Code
<?php

use PHPUnit\Framework\TestCase;
use SebastianBergmann\Comparator\Factory;
use SebastianBergmann\Comparator\Comparator;
use SebastianBergmann\Comparator\ComparisonFailure;

class ComparatorTest extends TestCase
{
    public function testStandardComparator() : void
    {
        self::assertEquals(
            new Foo(null),
            new Foo(0)
        );
    }
    
    public function testCustomComparator() : void
    {
        $fooComparator = new class() extends Comparator
        {
            public function accepts($expected, $actual)
            {
                return $expected instanceof Foo &&
                    $actual instanceof Foo;
            }
            
            public function assertEquals($expected, $actual, $delta = 0.0, $canonicalize = false, $ignoreCase = false)
            {
                if ($expected->foo !== $actual->foo) {
                    throw new ComparisonFailure(
                        $expected,
                        $actual,
                        $this->exporter->export($expected),
                        $this->exporter->export($actual),
                        false,
                        'Failed asserting that two Foo objects are equal.'
                );
                }
            }
        };
        
        $comparatorFactory = Factory::getInstance();
        $comparatorFactory->register($fooComparator);

        self::assertEquals(
            new Foo(null),
            new Foo(0)
        );
    }
}

class Foo
{
    public $foo;
    public function __construct(?int $foo)
    {
        $this->foo = $foo;
    }
}
Result
Time: 00:00.005, Memory: 18.00 MB

There was 1 failure:

1) ComparatorTest::testCustomComparator
Failed asserting that two Foo objects are equal.

ComparatorTest.php:46

FAILURES!
Tests: 2, Assertions: 0, Failures: 1.
Used Versions
PHP 8.3, Laminas MVC 3.2, Symfony 5.2, Laravel 8.28, PHPUnit 9.5, Doctrine ORM 2.8