anchor.diff:     ?dodefine nip @r+ = ;
   
   : doersee ( xt -- )
  -   dup type? dolist if ." : " then
  +   dup type? dolist if 
  +      ." :" dup xt>name if space then
  +   then
      dup type? dovar if ." variable " then
      dup type? doconst if ." constant " then
      dup type? douser if ." user " then
  
positive.code: \g Examine code for xt
  : (xtsee) ( xt -- )
     dup doersee 
     dup xt>name .name
     dup primxt? if dup else dup ?dodefine nip then xt>name .name
     dup /xt 
     over primxt? if codesee exit then 
     swap ?dodefine drop 
     begin  2dup >  while  cellsee  repeat 2drop ;
  
  : xtsee ( xt -- )
     dup (xtsee) xt>name dup 
     fimmed 0 > if ." immediate "  then   
     /fcompo unless ." compile-only" then
     cr ;
  
  \g @see anstools
  : see  ( "<spaces>name" -- )
     ' xtsee ;
  
  export see xtsee dump
  end-module
  
negative.code:    dup primxt? if ." primitive " then
     drop ;
  
  : safext>name ( xt -- name|0 )
     dup xt? if 
        xt>name dup 0= if drop s" noname" pad place pad then
     else 
        s" [ " pad place 
        0 (d.) pad append
        s"  , ] " pad append
        pad 
     then ;
  
  : cellsee ( /xt a-addr1 -- /xt' a-addr2 )
     2dup cell+ = over @ ['] exit = and if 
        ." ;" 
     else
        dup @ safext>name .name 
     then cell+ ;
  
  defer codesee  
  :noname ( xt /xt -- )  over - dump ; is codesee
  