public void WriteTo(Stream stream)
{
ThrowIfDisposed();
var chunkIndex = _sliceOffset / _chunkSize;
var chunkOffset = _sliceOffset % _chunkSize;
var remaining = _length;
while (remaining > 0)
{
var chunkRemaining = _chunkSize - chunkOffset;
var bytesToWrite = (remaining < chunkRemaining) ? remaining : chunkRemaining;
stream.Write(_chunks[chunkIndex].Bytes, chunkOffset, bytesToWrite);
chunkIndex += 1;
chunkOffset = 0;
remaining -= bytesToWrite;
}
}