anchor.diff:              (%event-queue-read queue))))))
   
   (defmethod event-queue-append ((queue concurrent-event-queue) item)
  -  (with-lock-held ((event-queue-lock queue))
  +  (with-recursive-lock-held ((event-queue-lock queue))
       (call-next-method)
       (condition-notify (event-queue-processes queue))))
   
   (defmethod event-queue-prepend ((queue concurrent-event-queue) item)
  -  (with-lock-held ((event-queue-lock queue))
  +  (with-recursive-lock-held ((event-queue-lock queue))
       (call-next-method)
       (condition-notify (event-queue-processes queue))))
   
   (defmethod event-queue-peek ((queue concurrent-event-queue))
     (do-port-force-output queue)
  -  (with-lock-held ((event-queue-lock queue))
  +  (with-recursive-lock-held ((event-queue-lock queue))
       (check-schedule queue)
       (first (event-queue-head queue))))
   
   (defmethod event-queue-peek-if (predicate (queue concurrent-event-queue))
     (do-port-force-output queue)
  -  (with-lock-held ((event-queue-lock queue))
  +  (with-recursive-lock-held ((event-queue-lock queue))
       (find-if predicate (event-queue-head queue))))
   
   (defmethod event-queue-listen ((queue concurrent-event-queue))
  
positive.code: 
  (defclass concurrent-event-queue (simple-event-queue)
    ((lock :initform (make-lock "event queue")
           :reader event-queue-lock)
     (processes
           :initform (make-condition-variable)
  
negative.code:   (check-schedule queue)
    (let ((lock (event-queue-lock queue))
          (cv (event-queue-processes queue)))
      (with-recursive-lock-held (lock)
        (or (not (null (event-queue-head queue)))
            (let* ((schedule-time (event-schedule-time queue))
                   (timeout (cond ((null schedule-time) timeout)
  