anchor.diff:  (defmethod device-read ((buffer single-channel-buffer) vector start end
                           &optional timeout)
     (when (= start end) (return-from device-read 0))
  -  (with-synchronized-single-channel-buffer (buffer)
  +  (with-synchronized-buffer (buffer :input)
       ;; If the previous operation was a write, try to flush the output buffer.
       ;; If the buffer couldn't be flushed entirely, signal an error
       (synchronize-input buffer)
  
positive.code: ;;;-----------------------------------------------------------------------------
  
  (defmethod buffer-clear-output ((buffer single-channel-buffer))
    (with-synchronized-single-channel-buffer (buffer)
      (when (eql :write (last-io-op-of buffer))
        (iobuf-reset (output-iobuf-of buffer)))))
  
  (defmethod buffer-clear-output ((buffer dual-channel-buffer))
    (with-synchronized-dual-channel-buffer (buffer :output)
      (iobuf-reset (output-iobuf-of buffer))))
  
  
negative.code: ;;;-----------------------------------------------------------------------------
  
  (defmethod buffer-flush-output ((buffer single-channel-buffer) &optional timeout)
    (with-synchronized-buffer (buffer :input)
      (when (eql :write (last-io-op-of buffer))
        (%buffer-flush-output buffer timeout))))
  
  (defmethod buffer-flush-output ((buffer dual-channel-buffer) &optional timeout)
    (with-synchronized-buffer (buffer :output)
      (%buffer-flush-output buffer timeout)))
  
  (defmethod %buffer-flush-output ((buffer dual-channel-buffer) timeout)
  