requires: {}. provides: {#Inspector}. "This inspector library is completely designed to work independently of any other Slate library." prototypes addSlot: #Inspector valued: Cloneable derive. "This is a very basic object navigator, for playing around and ease of use at the command line." Inspector addSlot: #it valued: lobby. "The last object inspected into; the current context." Inspector addSlot: #last valued: lobby. "The previous object inspected into; the last context." i@(Inspector traits) newOn: obj [| newI | newI: i clone. newI last: newI it. newI it: obj. newI ]. _@lobby inspect: obj [ lobby addDelegate: #inspector valued: (Inspector newOn: obj) ]. i@(Inspector traits) here "Here is where #it's at." [i it]. i@(Inspector traits) slots [i it slotNames]. i@(Inspector traits) parents [i it delegateNames]. i@(Inspector traits) methodNamesAt: index [i it methodNamesAt: index]. i@(Inspector traits) methodsNamed: name [i it methodsNamed: name]. i@(Inspector traits) methodsNamed: name at: index [i it methodsNamed: name at: index]. i@(Inspector traits) go: slotName [ i last: i it. i it: (i it atSlotNamed: slotName). i it ]. i@(Inspector traits) back "Swaps it with last." [| tmp | tmp: i last. i last: i it. i it: tmp ]. i@(Inspector traits) close "Sever all the connections that make the Inspector work, for memory safety, and return the Inspector." [ i it: Nil. i last: Nil. lobby removeSlotNamed: #inspector. i ]. 'You are in a twisty little maze of objects, all alike.'