anchor.diff:  				 phrases))))
   
   
  +(defmethod output ((p person) (voice-out voice-out-port) (vo voice))
  +  (let ((timeout-event (make-instance 'event
  +				      :owner p
  +				      :time (+ 100
  +					       (clock-of p))
  +				      :fn #'reply-timeout)))
  +    (setf (reply-timeout-of p)
  +	  timeout-event)
  +    (handler-bind ((port-not-connected #'abort)
  +		   (out-port-busy #'wait)
  +		   (in-port-busy #'abort))
  +      (cons timeout-event (call-next-method)))))
  +
  +
  +(defmethod reply-timeout ((p person))
  +  (error "NO REPLY! AAAAAAARGH!"))
  +
  +
   (defmethod start-talking ((p person))
  -  (make-instance 'event
  -		 :owner p
  -		 :time (clock-of p)
  -		 :fn #'output
  -		 :args (list (voice-out-of p)
  -			     (random-phrase))))
  -
  -
  -(defmethod port-ready ((p person) (voice-out voice-out-port))
  +  "When a person starts talking, expects a reply in a given time.
  +   If he/she gets no reply in that time, bad things will happen!"
     (list (make-instance 'event
   		       :owner p
   		       :time (clock-of p)
  -		       :fn #'start-talking)))
  +		       :fn #'output
  +		       :args (list (voice-out-of p)
  +				   (random-phrase)))))
   
   
   (defmethod handle-input ((p person) (in voice-in-port)
   			 (vo voice))
     (call-next-method)
     (remove-child p vo)
  +  (when (slot-boundp p 'reply-timeout)
  +    (de-sim::cancel-event (reply-timeout-of p)))
     nil)
   
   
  
positive.code:     :type voice-in-port)
     (voice-out
      :accessor voice-out-of
      :type voice-out-port)))
  
  
  (defclass can (simulator)
  
negative.code: 
  (defmethod lock-port ((p person) (voice-out voice-out-port)
  		      (vo voice))
    (list (make-instance 'event
  		       :owner p
  		       :time (+ (clock-of p)
  