anchor.diff:  
   
   (in-package :ds)
  +
  +
  +(defgeneric !transform (dest source)
  +  (:documentation "Fill dest with some, all or none of the values from
  +  source."))
   
   
   (defgeneric clone (object)
  
positive.code: (defpackage :org.altervista.rjack.desim
    (:nicknames :ds)
    (:use :common-lisp)
    (:export :clone :run :next :prev
  	   :identifiable :id-of
  	   :simulated :description-of :effects-of
  	   :event :time-of :causes-of :!action-of
  
negative.code:   (push w (history-of w)))
  
  
  (defmethod !transform ((dest world) (source world))
    (setf (events-of dest) (events-of source))
    (setf (history-of dest) (history-of source))
    dest)
  
  
  (defmethod clone ((w world))
    (!transform (make-instance 'world :id (id-of w) :events nil) w))
  
  
  (defmethod run ((w world) (ev event))
  