anchor.diff:      (if (null contents)
           (and errorp
                (error 'empty-queue-error :queue queue))
  -      (let ((result (first contents)))
  -        (setf contents (rest contents))
  +      (prog1
  +          (pop contents)
           (when (null contents)
  -          (setf end nil))
  -        (decf size)
  -        result))))
  +          (setq end nil))
  +        (decf size)))))
   
   
   (defun queue-empty-p (queue)
  
positive.code: ;; $Id: queue.lisp,v 1.2 2006-05-16 22:01:27 alemmens Exp $
  
  ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  ;;; Queues
  
negative.code:   "Returns the first object in the queue that has the given type (and removes
  all objects from the queue before it).  Returns NIL (and clears the entire queue)
  if there is no such object."
    (with-slots (contents size end)
        queue
      (loop while (and contents 
                       (not (typep (first contents) type)))
            do (decf size)
               (pop contents))
      (when (null contents)
        (setq end nil))
      (first contents)))
  
  
  (defun queue-clear (queue)
    "Removes all elements from the queue (and returns the empty queue)."
  