public override void WriteByte(byte value)
{
var off = CurrentPosition & BlockAnd;
var pos = CurrentPosition >> BlockShift;
Blocks[pos][off] = value;
CurrentPosition += 1;
if (BlockSize == off + 1 && Blocks.Count == pos + 1)
Blocks.Add(new byte[BlockSize]);
if (CurrentPosition > TotalSize)
TotalSize = CurrentPosition;
}