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