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