anchor.diff:                           (start 0) end null-terminate errorp)
     (declare (ignore null-terminate))
     (check-type string string)
  -  (with-checked-simple-vector ((string string) (start start) (end end))
  -    (declare (type simple-string string))
  +  (with-checked-simple-vector ((string (coerce string 'unicode-string))
  +                               (start start) (end end))
  +    (declare (type simple-unicode-string string))
       (let* ((*suppress-character-coding-errors* (not errorp))
              (mapping (lookup-mapping *string-vector-mappings* encoding))
              (vector (make-array (funcall (octet-counter mapping)
  
positive.code: (defmacro string-set (code string index)
    `(setf (schar ,string ,index) (code-char ,code)))
  
  (defparameter *string-vector-mappings*
    (instantiate-concrete-mappings
     :optimize ((speed 3) (debug 0) (compilation-speed 0) (safety 0))
     :octet-seq-setter ub-set
     :octet-seq-getter ub-get
     :octet-seq-type (simple-array (unsigned-byte 8) (*))
     :code-point-seq-setter string-set
     :code-point-seq-getter string-get
     :code-point-seq-type simple-string))
  
  ;;; Do we want a more a specific error condition here?
  (defun check-vector-bounds (vector start end)
  
negative.code: (defun string-size-in-octets (string &key (start 0) end (max -1 maxp) errorp
                                (encoding *default-character-encoding*))
    (check-type string string)
    (with-checked-simple-vector ((string (coerce string 'unicode-string))
                                 (start start) (end end))
      (declare (type simple-unicode-string string))
      (let ((mapping (lookup-mapping *string-vector-mappings* encoding))
            (*suppress-character-coding-errors* (not errorp)))
        (when maxp (assert (plusp max)))
  