private void EnsureShadowBufferAllocated()
{
Debug.Assert(_buffer != null);
Debug.Assert(_bufferSize > 0);
// Already have a shadow buffer?
// Or is the user-specified buffer size already so large that we don't want to create one?
if (_buffer.Length != _bufferSize || _bufferSize >= MaxShadowBufferSize)
return;
byte[] shadowBuffer = new byte[Math.Min(_bufferSize + _bufferSize, MaxShadowBufferSize)];
Buffer.BlockCopy(_buffer, 0, shadowBuffer, 0, _writePos);
_buffer = shadowBuffer;
}