anchor.diff:  : o> ( -- obj O: obj -- )
      o@ odrop ;
   
  +\g Duplicate topmost object
  +: odup o@ >o ;
  +
   \g Depth of object stack
   : odepth ( -- u )
      obottom otos - 1 cells / ;
  
positive.code: \ Some definitions:
  \ Current object: topmost object in object stack
  \ Active object: object that will receive subsequent messages
  \ Extensible object: object being extended with additional members or methods
  
  \ Create the world, a wordlist and a sizeof field in the object arena
  >oarena wordlist 3 cells , oarena> 
  constant (world)
  
  
  \ Push the world wordlist to the order stack and establish it as 
  \ current wordlist
  (world) >o o@ +order definitions
  
  \g Make the current object active
  : activate ( O: obj -- obj ) o@ +order ;
  
  \g Deactivate active object, the previously active object will become active
  : deactivate odrop previous definitions ;
  
  \g Make current object extensible
  : extend ( O: obj -- obj )
     o@ >o also definitions ;
  
  \g Restore previously extensible object
  : extended  deactivate ;
  
  \g Send late message to current object
  : (late) ( addr len --  O: obj -- ) nfa doword ;
  
  \g Send late message to current object
  : late parse-word postpone sliteral postpone (late) ; immediate
  
  \g Address of current object size field
  : sizeof ( -- addr )  o@ cell+ cell+ ;
  
  \g Create member in extensible object
  : member ( size "name" -- ) 
     >oarena dup allot oarena> 
     create sizeof @ , sizeof +! does> @ o@ + ; immediate
  
negative.code:    sizeof here over @ cell- cell- dup allot move  \ Clone prototype data
     oarena> ;
  
  : single  parse-word (late) ;
  
  \g Runtime for cloned objects
  : doobj @r+ >o @r+ execute odrop ;
  
  \g Clone active object by sending a late CLONED message
  : clone ( "name" --  )
     o@  extended create immediate  >o 
     extend  late cloned ,
     does> @ state @ if postpone doobj dup , then >o single ;
  
  \g Runtime for instance members
  : doinst @r+ o@ + >o @r+ execute odrop ;
  
  \g Instance active object as member of the previously active object
  : instance ( "name" -- )
     o@  sizeof @ extended create immediate sizeof @ , sizeof +!  >o
     extend late cloned drop
     does> @ state @ if postpone doinst dup , then o@ + >o single ;
  
  \g Dump object memory 
  : dump  o@ sizeof @ dump ;
  