anchor.diff:    (add-child sim obj))
   
   
  -(defmethod connect-port ((sim simulator) (out out-port) (in in-port))
  -  "Contract: simulator out-port in-port -> simulator
  -
  -   Purpose: to map the out-port to the in-port in the i/o-map of sim.
  -
  -   Note: sim must be the parent of the owners of out-port and in-port."
  -  (setf (gethash (id-of out) (out-in-map-of sim))
  -	in)
  -  sim)
  -
  -
  -(defmethod disconnect-port ((sim simulator) (out out-port))
  -  "Contract: simulator out-port -> simulator
  -
  -   Purpose: to remove the out-in mapping from the sim i/o map.
  -
  -   Note: sim must be the parent of the owners of out-port and in-port."
  -  (remhash (id-of out) (out-in-map-of sim))
  -  sim)
  +(defmethod connect-port ((out out-port) (in in-port))
  +  "Contract: simulator out-port in-port -> nil"
  +  (setf (peer-port-of out) in)
  +  (setf (peer-port-of in) out)
  +  nil)
  +
  +
  +(defmethod disconnect-port ((p port))
  +  "Contract: out-port -> nil"
  +  (slot-unbound 'port (owner-of (peer-port-of p)) 'peer-port)
  +  (slot-unbound 'port p 'peer-port)
  +  nil)
   
   
   (defmethod lock-port :before ((sim simulator) (p port) (obj object))
  
positive.code:   (list (make-instance 'event
  		       :owner sim
  		       :time (clock-of sim)
  		       :fn #'port-ready
  		       :args (list out))))
  
  
  (defmethod port-ready ((sim simulator) (p port))
    "Contract: simulator port -> events
  
     Description: specialize this method to generate events when p gets
                  unlocked."
    nil)
  
  
  
negative.code:    (children-by-id
      :initform (make-hash-table)
      :reader children-by-id-of
      :type hash-table)))
  
  
  