public function validateDetectsFailuresInRecursiveTargetsI()
{
$classNameA = 'A' . md5(uniqid(mt_rand(), true));
eval('class ' . $classNameA . '{ public $b; }');
$classNameB = 'B' . md5(uniqid(mt_rand(), true));
eval('class ' . $classNameB . '{ public $a; public $uuid = 0xF; }');
$A = new $classNameA();
$B = new $classNameB();
$A->b = $B;
$B->a = $A;
$aValidator = $this->getValidator();
$bValidator = $this->getValidator();
$aValidator->addPropertyValidator('b', $bValidator);
$bValidator->addPropertyValidator('a', $aValidator);
$error = new Error\Error('error1', 123);
$result = new Error\Result();
$result->addError($error);
$mockUuidValidator = $this->createMock(ValidatorInterface::class);
$mockUuidValidator->expects($this->any())->method('validate')->with(0xf)->will($this->returnValue($result));
$bValidator->addPropertyValidator('uuid', $mockUuidValidator);
$this->assertSame(['b.uuid' => [$error]], $aValidator->validate($A)->getFlattenedErrors());
}