anchor.diff:     (extended) odrop ;
   
   \g Send late message to current object
  -: (late) ( addr len --  O: obj -- ) (extend) nfa doword extended ;
  +: (late) ( addr len --  O: obj -- ) nfa doword ;
   
   \g Send late message to current object
   : late ( "message" -- ?  runtime: ? -- ?  O: obj -- )
  
positive.code: 
  \g Clone active object
  : cloned ( -- clone  O: prototype -- prototype )
     >oarena here 
     o@ @ wordlist !  \ Create wordlist and chain it to prototype wordlist
     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 ;
  
  \g Print attribute
  : .attr ( "attr" -- )
  
negative.code: extended
  
  (world) +order
  : world (world) >o single odrop ;
  previous
  
  
  