anchor.diff:        ;; Try to acquire again, release may have been running.
         (when (sys.int::%cas-struct-slot mutex 5 nil self)
           ;; We got it.
  -        (with-thread-lock (self)
  -          (setf (mutex-stack-next mutex) (thread-mutex-stack self)
  -                (thread-mutex-stack self) mutex))
  +        (setf (mutex-stack-next mutex) (thread-mutex-stack self)
  +              (thread-mutex-stack self) mutex)
           (sys.int::%sti)
           (unlock-wait-queue mutex)
           (return-from acquire-block-mutex t))
  
positive.code: (defun release-block-mutex (mutex)
    (with-wait-queue-lock (mutex)
      (let ((self (current-thread)))
        (with-thread-lock (self)
          (when (not (eql mutex (thread-mutex-stack self)))
            (panic "Thread " self " releasing mutex " mutex " out of order."))
          (setf (thread-mutex-stack self) (mutex-stack-next mutex))))
      ;; Look for a thread to wake.
      (let ((thread (pop-wait-queue mutex)))
        (cond (thread
               ;; Found one, wake it & transfer the lock.
               (setf (mutex-owner mutex) thread)
               (with-thread-lock (thread)
                 (setf (mutex-stack-next mutex) (thread-mutex-stack thread)
                       (thread-mutex-stack thread) mutex))
               (wake-thread thread))
              (t
               ;; No threads sleeping, just drop the lock.
  
negative.code:     ;; Fast path - try to lock.
      (when (sys.int::%cas-struct-slot mutex 5 nil self)
        ;; We got it.
        (setf (mutex-stack-next mutex) (thread-mutex-stack self)
              (thread-mutex-stack self) mutex)
        (return-from acquire-block-mutex t))
      ;; Idiot check.
      (unless (not (mutex-held-p mutex))
  