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: 	(cancel ()
  	  (values nil nil)))
        (values (the simulator (owner-of in))
  	      (the list (lock-port sim in obj)))))
  
  
  (defmethod output ((sim simulator) (out out-port) (obj object))
    "Contract: simulator out-port object -> events
  
     Purpose: to create a new event that will call handle-input on the
              destination of out and the given object.
  
     Description: specialize this method and wrap call-next-method with
  
negative.code:     (when in
        (multiple-value-bind (dest in-events)
  	  (access-port sim in obj)
  	(cons (make-instance 'event
  			     :owner dest
  			     :time (clock-of sim)
  			     :fn #'input-evs
  			     :args (list in obj))
  	      (nconc out-events
  		     in-events
  		     (post-output-evs (remove-child sim obj)
  				      out obj)))))))
  
  (defmethod post-output-evs ((sim simulator) (out out-port) (obj object))
    "Contract: simulator out-port object -> events
  
     Purpose: post output-evs hook."
    (error "Specialize me!"))
  
  
  