anchor.diff:             (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))))
  +          ((eql upgraded-element-type 'character)
              (let* ((total-size (apply #'* dimensions))
                     (backing-array (make-simple-array total-size '(unsigned-byte 8) area))
                     (array (%make-array-header (if (and (not adjustable)
  
positive.code:   ;; n => (n)
    (when (not (listp dimensions))
      (setf dimensions (list dimensions)))
    (let ((rank (length dimensions)))
      (when (>= rank array-rank-limit)
        (error "Array has too many dimensions."))
      (when (and initial-element-p initial-contents-p)
  
negative.code:                 (not fill-pointer)
                  (not displaced-to)
                  ;; character arrays are special.
                  (not (eql upgraded-element-type 'character)))
             ;; Create a simple 1D array.
             (let ((array (if initial-element-p
                              (make-simple-array (first dimensions) element-type area initial-element)
  