private void AppendRawBytes(MutableString/*!*/ buffer, int count) {
Debug.Assert(count > 0);
int remaining = count;
if (_bufferCount > 0) {
int c = Math.Min(_bufferCount, count);
buffer.Append(_buffer, _bufferStart, c);
ConsumeBuffered(c);
remaining -= c;
}
if (count == Int32.MaxValue) {
const int chunk = 1024;
int done = buffer.GetByteCount();
int bytesRead;
do {
buffer.Append(_stream, chunk);
bytesRead = buffer.GetByteCount() - done;
done += bytesRead;
} while (bytesRead == chunk);
} else {
buffer.Append(_stream, remaining);
}
}