-- parent script "TreeItem" -- (minimal implementation with direct property access) property name property children on new (me, itemName) me.name = itemName me.children = [] return me end on addChild (me, child) me.children.add(child) end -- print a tree on printTree (me, treeItem, indent) if voidP(treeItem) then treeItem = me if voidP(indent) then indent = "" put indent&treeItem.name repeat with c in treeItem.children me.printTree(c, indent&" ") end repeat end