anchor.diff:    nil)
   
   
  -(defmethod out-port-ready ((sim simulator) (out out-port))
  +(defmethod out-ready-evs ((sim simulator) (out out-port))
     "Contract: simulator port -> events
   
      Description: specialize this method to generate events when out
  
positive.code:     (when in
        (multiple-value-bind (dest in-events)
  	  (access-port sim in obj)
  	(leaving (remove-child sim obj)
  		 out obj)
  	(cons (make-instance 'event
  			     :owner dest
  			     :time (clock-of sim)
  			     :fn #'handle-input
  			     :args (list in obj))
  	      (nconc out-events
  		     in-events
  		     (post-output sim out obj)))))))
  
  
  (defmethod post-output ((sim simulator) (out out-port) (obj object))
    "Contract: simulator out-port object -> events
  
     Purpose: post output hook."
    (error "Specialize me!"))
  
  
  
negative.code: ;; GENERICS
  
  (defgeneric obj= (object object))
  (defgeneric input-evs (simulator in-port object))
  (defgeneric connect-port (out-port in-port))
  (defgeneric disconnect-port (port))
  (defgeneric lock-evs (simulator port object))
  (defgeneric unlock-evs (simulator port))
  (defgeneric in-ready-evs (simulator out-port))
  (defgeneric out-ready-evs (simulator out-port))
  (defgeneric access-port (simulator out-port object))
  (defgeneric access-port (simulator in-port object))
  (defgeneric output-evs (simulator out-port object))
  (defgeneric post-output-evs (simulator out-port object))
  (defgeneric add-child (simulator object))
  (defgeneric remove-child (simulator object))
  (defgeneric add-children (simulator children))
  (defgeneric remove-children (simulator children))
  (defgeneric schedule (scenario events))
  