anchor.diff:    (check-type rehash-size (or (integer 1 *) (float (1.0) *)))
     (check-type rehash-threshold (real 0 1))
     (%make-hash-table :test test
  -		    :rehash-size rehash-size
  -		    :rehash-threshold rehash-threshold
  -		    :storage (make-array (* size 2) :initial-element *hash-table-unbound-value*)))
  +                    :hash-function (hash-table-test-hash-function test)
  +                    :rehash-size rehash-size
  +                    :rehash-threshold rehash-threshold
  +                    :storage (make-array (* size 2) :initial-element *hash-table-unbound-value*)))
   
   (defun gethash (key hash-table &optional default)
     (check-type hash-table hash-table)
  
positive.code: 
  (defun find-hash-table-slot-1 (key hash-table)
    (do* ((free-slot nil)
          (hash (compute-hash key (hash-table-test hash-table)))
          (size (hash-table-size hash-table))
          (test (hash-table-test hash-table))
          (storage (hash-table-storage hash-table))
  
negative.code: ;; done automatically by defstruct?
  (deftype hash-table ()
    `(satisfies hash-table-p))
  
  (defun hash-table-test-hash-function (test)
    (ecase test
      ((eq) 'eq-hash)
      ((eql) 'eql-hash)
      ((equal) 'sxhash)
      ((equalp) 'equalp-hash)))
  
  (defun make-hash-table (&key (test 'eql) (size 101) (rehash-size 2.5) (rehash-threshold 0.5))
    ;; Canonicalize and check the test function
  