anchor.diff:  
      Description: specialize this method and wrap call-next-method with
                   handler-bind."
  -  (multiple-value-bind (in out-unlock-event)
  -      (access-port sim out)
  +  (multiple-value-bind (in out-events)
  +      (access-port sim out obj)
       (when in
  -      (multiple-value-bind (dest in-unlock-event)
  -	  (access-port sim in)
  +      (multiple-value-bind (dest in-events)
  +	  (access-port sim in obj)
   	(remove-child sim obj)
  -	(list out-unlock-event in-unlock-event
  -	      (make-instance 'event
  +	(cons (make-instance 'event
   			     :owner dest
   			     :time (clock-of sim)
   			     :fn #'handle-input
  -			     :args (list in obj)))))))
  +			     :args (list in obj))
  +	      (append out-events in-events))))))
   
   
   (defmethod add-child ((sim simulator) (obj object))
     "Contract: simulator object -> simulator
   
  -   Purpose: to add obj into the children map of sim."
  +   Purpose: to add obj into the children map of sim and to set sim as
  +            parent of obj."
     (setf (gethash (id-of obj) (children-by-id-of sim))
   	obj)
  +  (setf (parent-of obj) sim)
     sim)
   
   
  
positive.code: 
  ;; TODO
  
  
  (in-package :de-sim)
  
  
  
negative.code: 	    (restart-case (error 'port-not-connected)
  	      (cancel ()
  		(values nil nil)))
  	    (values (the in-port in)
  		    (lock-port out obj))))))
  
  
  (defmethod access-port ((sim simulator) (in in-port) (obj object))
    "Contract: simulator in-port object -> (or simulator nil)
                                           events
  
     Purpose: to retrieve the owner of in-port.
  
  