anchor.diff:  (%define-compound-type 'array 'array-type-p)
   (eval-when (:compile-toplevel :load-toplevel :execute)
   (%define-type-symbol 'array 'arrayp)
  +(defun compile-array-type (object type)
  +  (multiple-value-bind (element-type dimension-spec)
  +      (parse-array-type type)
  +    (when (not (eql dimension-spec '*))
  +      ;; Bail on complicated dimensions.
  +      (return-from compile-array-type nil))
  +    (case element-type
  +      ((*) `(arrayp ,object))
  +      ((bit) `(bit-array-p ,object))
  +      (t nil))))
  +(%define-compound-type-optimizer 'array 'compile-array-type)
   )
   
   (defun upgraded-array-element-type (typespec &optional environment)
  
positive.code: (eval-when (:compile-toplevel :load-toplevel :execute)
  (%define-type-symbol 'vector 'vectorp)
  )
  
  (defun bit-vector-p (object)
    (and (vectorp object)
  
negative.code:            (unless displaced-index-offset
               (setf displaced-index-offset 0))
             (%make-array-header +object-tag-array+ displaced-to fill-pointer displaced-index-offset dimensions area))
            ((or (eql element-type 'character)
                 (and (subtypep element-type 'character)
                      (not (subtypep element-type 'nil))))
             (let* ((total-size (apply #'* dimensions))
                    (backing-array (make-simple-array total-size '(unsigned-byte 8) area))
                    (array (%make-array-header +object-tag-string+ backing-array fill-pointer nil dimensions area)))
  