anchor.diff:  \g Dump object memory 
   \ : dump  o@ sizeof @ dump ;
   
  -\g Print attribute
  -: .attr ( "attr" -- )
  -   odepth 1- spaces @r+ dup xt>name .name ." member at " 
  -   execute dup 16 based . ." : " @ . cr ;
  +: .mbr ( nfa -- )
  +   ." member at " slotaddr dup 16 based . ." : " @ . cr ;
  +
  +: .ins ( nfa -- )
  +   slotaddr
  +   ." instance at " dup . cr
  +   >o (extend) late print extended ;
  +
  +: .slot ( nfa -- )
  +   odepth 1- spaces  dup .name dup mbr? if .mbr else .ins then ;
   
   \g Print object
   : print
  -   odepth 2 - spaces ." object at " o@ 16 based . ." :" cr .attr sizeof ;
  +   odepth 2 - spaces ." object at " o@ 16 based . ." sized " sizeof @ . cr
  +   ['] .slot forslots ;
   
   extended
   
  
positive.code: here constant otop             \ End of object arena
  o0 value ohere                 \ Object arena pointer
  : osize ( -- u )  ohere o0 - ; \ Current size of object arena
  0 value sdict0                 \ Saved dict0
  0 value sdicttop               \ Saved dicttop
  0 value shere                  \ Saved here
  : >oarena                      \ Switch compilation area to object arena
     dict0 to sdict0  dicttop to sdicttop  here to shere
     o0 to dict0  otop to dicttop  ohere to here  ;
  : oarena>                      \ Restore normal compilation area
     here to ohere  sdict0 to dict0  sdicttop to dicttop  shere to here ;
  
  
  \ WORLD
  
  
negative.code: \g Print object stack
  : o.s
     ." O: " odepth 0 <# [char] > hold #s [char] < hold #> type space
     odepth 0 ?do odepth 1- i - opick . loop cr ;
  
  \g Print context information
  : .ctx
  