public function testDeepCloneObjects()
{
$foo = new \stdClass();
$bar = new \stdClass();
$foo->name = 'foo';
$foo->bar = $bar;
$foo->date = new \DateTime();
$bar->name = 'bar';
$bar->foo = $foo;
$bar->date = new \DateTimeImmutable();
$fooClone = deep_clone($foo);
$this->assertEqualsButNotSame($foo, $fooClone);
$this->assertEqualsButNotSame($bar, $fooClone->bar);
$barClone = deep_clone($bar);
$this->assertEqualsButNotSame($bar, $barClone);
$this->assertEqualsButNotSame($foo, $barClone->foo);
}