anchor.diff:                                                        :initial-element *hash-table-unbound-value*)
             (hash-table-count hash-table) 0
             (hash-table-used hash-table) 0
  -          (hash-table-gc-invariant hash-table) t
  +          ;; Make sure to preserve :MANDATORY.
  +          (hash-table-gc-invariant hash-table) (or (hash-table-gc-invariant hash-table) t)
             (hash-table-storage-epoch hash-table) *gc-epoch*)
       (dotimes (i old-size hash-table)
         (let ((key (svref old-storage (* i 2)))
  
positive.code:          (eql (ldb +address-tag+ (lisp-object-address object))
                +address-tag-pinned+)
           (numberp object)))
      ((equal equalp)
       ;; Conses & pathnames aren't included because this is a cheap test
       ;; and does not recurse down to ensure all elements are invariant.
       (or (immediatep object)
  
negative.code:   (with-hash-table-lock (hash-table)
      (when (and (hash-table-gc-invariant hash-table)
                 (not (object-hash-gc-invariant-under-test key (hash-table-test hash-table))))
        (when (eql (hash-table-gc-invariant hash-table) :mandatory)
          (error "Hash-table key ~S is not gc-invariant under hash-table test ~S"
                 key (hash-table-test hash-table)))
        ;; Hash table is no longer invariant.
        (setf (hash-table-gc-invariant hash-table) nil))
      (multiple-value-bind (slot free-slot)
  