anchor.diff:             (type iobuf-index start end))
     (when (iobuf-empty-p iobuf)
       (iobuf-reset iobuf))
  -  (let* ((iobuf-start (iobuf-start iobuf))
  -         (iobuf-end (iobuf-end iobuf))
  -         (nbytes
  -          (nth-value 1 (replace-ub8 (iobuf-data iobuf) vector
  -                                    iobuf-start iobuf-end
  -                                    start end))))
  -    (setf (iobuf-end iobuf) (+ iobuf-end nbytes))
  -    (values nbytes)))
  +  (multiple-value-bind (iobuf-data data-start data-end)
  +      (iobuf-next-empty-zone iobuf)
  +    (let ((nbytes
  +           (replace-ub8 iobuf-data vector data-start data-end start end)))
  +      (setf (iobuf-end iobuf) (+ data-end nbytes))
  +      (values nbytes))))
  
positive.code:     (replace destination source
               :start1 start1 :end1 end1
               :start2 start2 :end2 end2)
      (values destination nbytes)))
  
  (defun iobuf->vector (iobuf vector start end)
    (declare (type iobuf iobuf)
  
negative.code:         (iobuf-end iobuf)   0))
  
  (defun iobuf-next-data-zone (iobuf)
    (declare (type iobuf iobuf))
    (values (iobuf-data iobuf)
            (iobuf-start iobuf)
            (iobuf-end iobuf)))
  
  (defun iobuf-next-empty-zone (iobuf)
    (declare (type iobuf iobuf))
    (values (iobuf-data iobuf)
            (iobuf-end iobuf)
            (iobuf-size iobuf)))
  