It's really not that screwy. The parent class contains a method, insert() which instantiates child classes and stores them in an array which is one of its properties. When a child class calls the inherited insert() method, the created object is still stored in the parent's array, no matter how deeply they are nested, the objects can still be easily accessed through the parent's property by index, since they are indexed by name.
Why do this? I'm building a set of classes to render HTML. About a year (or 2?) ago, there was an article on this site about class.layout, a class for creating complex HTML layouts. Each tag is represented by an object, and objects (tags) are inserted inside one another. When the HTML is rendered, it goes to the parent, prints its start tag, then goes through the children, prints each of its children recursively then prints its end tag.
Well I liked the idea of class.layout, even though it seemed more complex than nessesary. I'm doing a project where so much in the HTML had to be scripted, it made it almost impossible to just use simple templates. One example is a DHML popup menu. This requires 3 things, HTML, JavaScript and Stylesheets. Well, if I want to be able to add the menu dynamically, I had to have logic in three places to put in the code to make it work (or create functions for each section). By making the entire HTML page non-linear, I can create the logic to add the menu all in one place and insert the code where needed, and I never have to write HTML.
Its not as crazy as it sounds, because it allows you to do some great things, such as creating default attributes for tags and render the HTML according to the type of browser used for consistancy. This allows you to create user customizable sites very easily.
The basic problem is: why, if the parent has a property which is a reference to itself (its instance) can't it pass that reference to its children in the way I have described.