anchor.diff:      (block-flags         (:octets 4) :endianness :little)
       (block-crc           (:octets 4) :endianness :little))
   
  -(defun read-wv-block (reader)
  +(defun read-wv-block (reader &optional residual-buffers)
     (declare (optimize (speed 3)))
     (let ((wv-block (read-wv-block% reader)))
       (if (/= (block-id wv-block) +wv-id+)
  
positive.code:       (block-error ()
          (reader-position reader (1+ position))
          (restore-sync reader)))))
  
negative.code:                            (error 'block-error :message "Read more sub-block bytes than needed")))))
  
      (setf (block-residual wv-block)
            (loop for i below (if (bit-set-p (block-flags wv-block) +flags-mono-output+) 1 2) collect
                 (let ((residual-buffer (nth i residual-buffers)))
                   (if (and residual-buffer
                            (= (length (the (sa-sb 32) residual-buffer))
                               (block-block-samples wv-block)))
                       (map-into residual-buffer #'(lambda (x) (declare (ignore x)) 0) residual-buffer)
                       (make-array (block-block-samples wv-block)
                                   :element-type '(sb 32)
                                   :initial-element 0)))))
      (decode-residual wv-block)
  
      wv-block))
  