anchor.diff:    `(mt:with-mutex-lock (,place) ,@body))
   
   (defun make-recursive-lock (&optional name)
  -  (mt:make-mutex :name name :recursive-p t))
  -
  -;;; XXX acquire-recursive-lock and release-recursive-lock are actually
  -;;; complicated because we can't use control stack tricks.  We need to
  -;;; actually count something to check that the acquire/releases are
  -;;; balanced
  +  (mt:make-mutex :name (or name "Anonymous recursive lock")
  +                 :recursive-p t))
   
   (defmacro with-recursive-lock-held ((place) &body body)
     `(mt:with-mutex-lock (,place) ,@body))
  
positive.code: ;;; Resource contention: condition variables
  
  (defun make-condition-variable ()
    (mt::make-exemption))
  
  (defun condition-wait (condition-variable lock)
    (mt:exemption-wait condition-variable lock))
  
negative.code: ;;; Resource contention: locks and recursive locks
  
  (defun make-lock (&optional name)
    (mt:make-mutex :name (or name "Anonymous lock")))
  
  (defun acquire-lock (lock &optional (wait-p t))
    (mt:mutex-lock lock :timeout (if wait-p nil 0)))
  
  (defun release-lock (lock)
    (mt:mutex-unlock lock))
  