anchor.diff:          (null
            (decode-to-fresh-vector string format-start start end))
           (string
  -         (frob (decode-state-string->octets format-state)))
  +         (frob (fd-string->octets (state-descriptor state)))
           ((array (unsigned-byte 8) (*))
  -         (frob (decode-state-octets->octets format-state)))))))
  +         (frob (fd-octets->octets/decode (state-descriptor state)))))))))g
   ||#
   
   (defun decode-octets (destination string format
  
positive.code: (defun encode-to-fresh-vector (octets format start end element-type)
    (multiple-value-bind (input start end)
        (array-data-and-offsets octets start end)
      (let* ((state (find-format-state format))
             (length (funcall (encode-state-encoded-length state) (- end start))))
        (flet ((frob (etype encode-fun)
                 (let ((v (make-array length :element-type etype)))
                   (funcall encode-fun state v octets
  
negative.code:       (declare (inline frob))
        (etypecase destination
          (null
           (encode-to-fresh-vector octets state start end element-type))
          (string
           (frob (fd-octets->string (state-descriptor state))))
          ((array (unsigned-byte 8) (*))
           (frob (fd-octets->octets/encode (state-descriptor state))))))))
  
  (defun decode-to-fresh-vector (string format-start start end)
    (multiple-value-bind (input start end)
        (array-data-and-offsets string start end)
      (let* ((state (find-format-state format case-fold map01))
             (fd (state-descriptor state))
             (length (funcall (fd-decoded-length fd) (- end start))))
        (declare (type decode-state state))
        (declare (type format-descriptor fd))
        (flet ((frob (v decode-fun)
                 (funcall decode-fun state v string 0 length start end)))
          (let ((octets (make-array length :element-type '(unsigned-byte 8))))
            (etypecase string
              (simple-string
               (frob octets (fd-string->octets fd)))
              (simple-octet-vector
               (frob octets (fd-octets->octets/decode fd)))))))))
  
  (defun decode-octets (destination string format &key (start 0) end
                        (output-start 0) output-end case-fold map01 finishp)
    "Decode the characters of STRING between START and END into octets
  according to FORMAT.  DECODED-LENGTH indicates the number of decoded
  octets to expect.  DESTINATION may be NIL."
    (let ((state (find-format format case-fold map01)))
      (declare (type decode-state state))
      (flet ((frob (decode-fun)
               (multiple-value-bind (input input-start input-end)
                   (array-data-and-offsets string start end)
  