anchor.diff:    ;; HASH-TABLE behavior before we fall through to the generic STRUCTURE-OBJECT
     ;; comparison behavior.
     (typecase key
  -    (simple-string (sxhash key))
  -    (array (array-swxhash key depthoid))
  +    (cons (list-swxhash key depthoid))
  +    (array (typecase key
  +             (simple-string (sxhash key))
  +             (t (array-swxhash key depthoid))))
       (hash-table (hash-table-swxhash key))
       (structure-object (structure-object-swxhash key depthoid))
  -    (cons (list-swxhash key depthoid))
       (number (number-swxhash key))
       (character (char-code key))
       (t (sxhash key))))
  
positive.code:                                   (do ((i 0 (+ i 1))
                                         (v-equal t (slang-term-equals-2 (svref t1 i)  (svref t2 i))))
                                        ((or (= i dim1) (not v-equal)) v-equal))))))))
          (hash-table
           ;; This can happen, for example, when comparing specs, which use maps from
           ;; /Library/Structures/Data/Maps/SimpleAsSTHarray.sw that are implemented
  
negative.code:   #+sbcl(declare (optimize speed))
    (declare (type structure-object key))
    (declare (type (integer 0 #.+max-hash-depthoid+) depthoid))
    #-sbcl (the fixnum 481929)            ; just some number
    #+sbcl
    (let* ((layout (%instance-layout key)) ; i.e. slot #0
           (length (layout-length layout))
  