{"ScriptPreparationCode":"function Group() {\r\n this.nodes = {};\r\n}\r\n\r\nfunction Node(id) {\r\n this.id = id;\r\n this.inGroup = {};\r\n}\r\n\r\nfunction Set() {\r\n this.groups = {foo: new Group(), bar: new Group()};\r\n \r\n var node = new Node(\u0022blah\u0022);\r\n this.groups.foo.nodes.blah = node;\r\n this.groups.bar.nodes.blah = node;\r\n \r\n node.inGroup.foo = node;\r\n node.inGroup.bar = node;\r\n}\r\n\r\nSet.prototype.getGroup = function(name) { return this.groups[name]; };\r\n\r\nGroup.prototype.getNode = function(id) { return this.nodes[id]; };\r\n\r\nNode.prototype.getInOtherGroup = function(name) { return this.inGroup[name]; };\r\n\r\nvar set = new Set();","TestCases":[{"Name":"indexing","Code":"var x = set.groups[\u0022foo\u0022].nodes[\u0022blah\u0022].inGroup[\u0022bar\u0022];","IsDeferred":false},{"Name":"functions","Code":"var x = set.getGroup(\u0022foo\u0022).getNode(\u0022blah\u0022).getInOtherGroup(\u0022bar\u0022);","IsDeferred":false}]}