anchor.diff:    #+sbcl(declare (optimize speed))
     (or (eq t1 t2)
         (typecase t1
  -        (null      (null    t2))
  -        (string    (string= t1 t2))
  -        (symbol    (eq      t1 t2))
  -        (number    (=       t1 t2))    ; catches complex numbers, etc.
  -        (character (eq      t1 t2))
  -        (cons      (and (consp t2) 
  -                        ;;   Cons cells are equal if their elements are equal too.
  -                        (slang-term-equals-2 (car t1) (car t2))
  -                        (slang-term-equals-2 (cdr t1) (cdr t2))))
  -        (vector    (cond ((and   
  +        (array (typecase t1
  +                 (string    (string= t1 t2))
  +                 (vector    (cond ((and   
                              ;; (quotient? t1) 
                              ;; (quotient? t2)
                              (eq (svref t1 0) quotient-tag)
  
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:   ;; HASH-TABLE behavior before we fall through to the generic STRUCTURE-OBJECT
    ;; comparison behavior.
    (typecase key
      (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))
      (number (number-swxhash key))
      (character (char-code key))
      (t (sxhash key))))
  