public override int ReadByte()
{
if (CurrentPosition < TotalSize)
{
var block = Blocks[CurrentPosition >> BlockShift];
return block[CurrentPosition++ & BlockAnd];
}
return -1;
}