anchor.diff:  
   (defmethod add-user ((realm realm) (name string) (password string))
     (let ((user (make-instance 'user :name name :password-salt (random-string 8))))
  -    (bt:with-lock-held (*password-lock*)
  +    (bt:with-recursive-lock-held (*password-lock*)
         (setf (gethash name (realm-users realm)) user)
         (set-password realm user password))
       user))
   
   (defmethod delete-user ((realm realm) (name string))
  -  (bt:with-lock-held (*password-lock*)
  +  (bt:with-recursive-lock-held (*password-lock*)
       (remhash name (realm-users realm))
       (store-realm-users realm)))
   
  
positive.code: (defmethod read-realm-groups ((realm realm))
    (let ((path (realm-group-storage-path realm)))
      (when (probe-file path)
        (bt:with-lock-held (*password-file-lock*)
          (setf (realm-groups realm)
                (cl-store:restore path))))))
  
  (defmethod store-realm-groups ((realm realm))
    (let ((path (realm-group-storage-path realm)))
      (ensure-directories-exist path)
      (bt:with-lock-held (*password-file-lock*)
        (cl-store:store (realm-groups realm) path))))
  
  (defmethod add-group ((realm realm) (name string))
  
negative.code: (defmethod read-realm-users ((realm realm))
    (let ((path (realm-user-storage-path realm)))
      (when (probe-file path)
        (bt:with-recursive-lock-held (*password-file-lock*)
          (setf (realm-users realm)
                (cl-store:restore path))))))
  
  (defmethod store-realm-users ((realm realm))
    (let ((path (realm-user-storage-path realm)))
      (ensure-directories-exist path)
      (bt:with-recursive-lock-held (*password-file-lock*)
        (cl-store:store (realm-users realm) path))))
  
  (defmethod set-password ((realm realm) (user user) password)
    (bt:with-recursive-lock-held (*password-lock*)
      (setf (user-password user)
            (md5:md5sum-sequence
             (concatenate 'simple-string (user-password-salt user) password)))
  