[ ShowobjSub c f l a n x; if (noun==0) noun=location; objectloop (c ofclass Class) if (noun ofclass c) { f++; l=c; } if (f == 1) print (name) l, " ~"; else print "Object ~"; print (name) noun, "~ (", noun, ")"; if (parent(noun)~=0) print " in ~", (name) parent(noun), "~"; new_line; if (f > 1) { print " class "; objectloop (c ofclass Class) if (noun ofclass c) print (name) c, " "; new_line; } for (a=0,f=0:a<48:a++) if (noun has a) f=1; if (f) { print " has "; for (a=0:a<48:a++) if (noun has a) print (DebugAttribute) a, " "; new_line; } if (noun ofclass Class) return; f=0; l = #identifiers_table-->0; for (a=1:a<=l:a++) { if ((a~=2 or 3) && noun.&a) { if (f==0) { print " with "; f=1; } print (property) a; n = noun.#a; for (c=0:2*cc; if (a==name) print "'", (address) x, "'"; else { if (a==number or capacity or time_left) print x; else { switch(x) { NULL: print "NULL"; 0: print "0"; 1: print "1"; default: switch(metaclass(x)) { Class, Object: print (name) x; String: print "~", (string) x, "~"; Routine: print "[...]"; } print " (", x, ")"; } } } } print ",^ "; } } ! if (f==1) new_line; ];