public function testDecodeCircularObjectsFromJson()
 {
     $json = '{"root":"@000000005750c50c000000000ea0522a","objects":{"@000000005750c513000000000ea0522a":{"firstname":"Manfred","parent":"@000000005750c50c000000000ea0522a","children":null},"@000000005750c50c000000000ea0522a":{"firstname":"Max","parent":null,"children":["@000000005750c513000000000ea0522a"]}}}';
     $personA = JSONReference::decode(json_decode($json));
     $this->assertEquals('Max', $personA->firstname);
     $this->assertEquals('Manfred', $personA->children[0]->firstname);
     $this->assertEquals('Max', $personA->children[0]->parent->firstname);
     $personA->firstname = 'Not Max';
     $this->assertEquals('Not Max', $personA->firstname);
     $this->assertEquals('Manfred', $personA->children[0]->firstname);
     $this->assertEquals('Not Max', $personA->children[0]->parent->firstname);
 }
?>
        </pre>
        <h1>JavaScript</h1>
        <pre>
            dad.firstname = <span id="firstname1"></span>
            dad.children[0].parent.firstname = <span id="firstname2"></span>

            dad.firstname = 'Not Max';

            dad.firstname = <span id="firstname3"></span>
            dad.children[0].parent.firstname = <span id="firstname4"></span>
        </pre>
        <script src="../JSONReference.js"></script>
        <script>
            var data = <?php 
echo json_encode(JSONReference::encode($dad));
?>
;

            dad = JSONReference.decode(data);

            document.getElementById('firstname1').innerHTML = dad.firstname;
            document.getElementById('firstname2').innerHTML = dad.children[0].parent.firstname;
            
            dad.firstname = 'Not Max';
            
            document.getElementById('firstname3').innerHTML = dad.firstname;
            document.getElementById('firstname4').innerHTML = dad.children[0].parent.firstname;
        </script>
    </body>
</html>