anchor.diff:    (let ((compare-fn (q-compare-fn q))
           (items (q-items q))
           (index (funcall (q-get-index-fn q) item)))
  -    (unless index
  +    (declare (fixnum index))
  +    (when (or (null index)
  +              (= index +not-in-queue+))
         (error 'item-not-found-error))
       (if (and (> index 0)
                (funcall compare-fn item (aref items (heap-parent index))))
  
positive.code:   (if (queue-empty-p q)
        (error 'empty-queue-error)
        (let ((min (heap-extract-min (q-items q) (q-compare-fn q) (q-set-index-fn q))))
          (funcall (q-set-index-fn q) min nil)
          min)))
  
  (defun queue-insert (q item)
  
negative.code:   (declare (array heap) (function compare-fn) (function set-index-fn))
    (assert (> (length heap) 0) nil "heap underflow")
    (let ((min (aref heap 0)))
      (funcall set-index-fn min +not-in-queue+)
      (when (> (length heap) 1)
        (setf (aref heap 0) (aref heap (1- (length heap))))
        (funcall set-index-fn (aref heap 0) 0))
  