anchor.diff:      :type list)))
   
   
  -
   (defclass object (with-id)
  -  nil)
  +  ((parents-path
  +    :initarg :parents-path
  +    :initform (error ":parents-path missing")
  +    :accessor parents-path-of
  +    :type list
  +    :documentation "A list of id telling where the object is in the object tree.
  +    Example: given the tree
  +      sim-0
  +        sim-1
  +          act-2
  +          obj-3
  +        obj-4
  +        sim-5
  +          obj-6
  +    the path of obj-6 is (0 5)
  +    the paths of act-1 and obj-3 are the same (0 1)")))
   
   
   (defclass actor (object)
  
positive.code: 		       'event
  		       ;; building arguments for make-instance:
  		       ;; if args is nil, leave slot unbound
  		       (append (list :id (fresh-id)
  				     :time (+ delay
  					      (gettime))
  				     :fn fn)
  			       (if (null args)
  				   nil
  				   (list :args args))))))
  	(setf (events-of act)
  	      (sort (cons ev
  			  (events-of act))
  		    #'< :key #'time-of))
  	(values act ev))))
  
  
  (defmethod evolve ((obj object))
    obj)
  
  
  (defmethod evolve ((act actor))
    (let ((ev (imminent-event act)))
      (if ev
  	(apply (fn-of ev)
  	       (append (list act)
  		       (if (slot-boundp ev 'args)
  			   (args-of ev))))
  	(call-next-method))))
  
  
  (defmethod evolve ((sim simulator))
    (evolve (cdr (the (cons event actor)
  		 (first
  		  (sort
  		   (remove-if #'null
  			      (mapcar (lambda (comp)
  					(cons (imminent-event comp)
  					      comp))
  				      (components-list sim)))
  		   #'< :key (lambda (cell)
  			      (time-of (car cell)))))))))
  
negative.code: 
  
  (defmethod components-list ((sim simulator))
    (error "override me!"))
  
  
  (defmethod components-path ((sim simulator))
    (append (parents-path-of sim)
  	  (list (id-of sim))))
  
  
  (defmethod path ((obj object))
    (append (parents-path-of obj)
  	  (list (id-of obj))))
  
  
  (defmethod belongs ((obj object) (ev event))
    (equal (path obj)
  	 (owner-path-of ev)))
  
  
  ;; TODO fixme
  (defmethod schedule ((events list) delay (fn function) (act actor)
  		     &rest args)
    (if (< delay 0)
        (error 'error-invalid)
  