public override int Read(byte[]/*!*/ buffer, int offset, int count) {
int c = Math.Min(_bufferCount, count);
if (c > 0) {
Buffer.BlockCopy(_buffer, _bufferStart, buffer, offset, c);
ConsumeBuffered(c);
}
return c + _stream.Read(buffer, offset + c, count - c);
}