anchor.diff:  
   (deftype time-type ()
     '(or (integer 0)
  -    (member :never)))
  +    (member nil)))
   
   
   (defclass with-id ()
  
positive.code:     :initarg :fn
      :initform (error ":action missing")
      :accessor fn-of
      :type function))
  
  
  (defclass with-behaviour ()
    ((events
      :initform (list)
      :accessor events-of
      :type list)))
  
  
  (defclass object (with-id)
    nil)
  
  
  
  (defmethod imminent-event ((obj object))
    (values :never nil))
  
  
  
  (defmethod imminent-event ((obj with-behaviour))
    (let ((ev (first (events-of obj))))
      (values (time-of ev) (fn-of ev))))
  
  
  (defmethod evolve ((obj object)))
negative.code: ;; TODO
  
  
  ;(in-package :de-sim)
  
  
  (defgeneric next-to-evolve (obj &optional next time)
    (:documentation "Write me"))
  
  
  (defgeneric evolve (obj)
    (:documentation "obj can execute its event and evolve
    accordingly. Returns the new version of obj."))
  
  
  (defgeneric imminent-event (obj)
    (:documentation "Return the function and the time of the next event
    of obj."))
  
  
  (defgeneric i/o-connect (output input)
  