code: private boolean continueBlock() throws IOException {
          byte lastByte = buffer[readPtr - 1];
          while(true) {
              if(maybeFlush()) return true;
              if(!hasFullBlock()) {
                  refillBuffer();
                  if(!hasFullBlock()) {
                      state = StateContinuePartialBlock;
                      return continueContinuePartialBlock(lastByte);
                  }
              }
              int weakHash = rc.roll(lastByte, buffer[readPtr + blockSize - 1]);
              int blockNum = signatureTable.findBlock(weakHash, buffer, readPtr, blockSize);
              if(blockNum != -1) {
                  writeBlock(blockNum, blockSize);
                  state = StateNewBlock;
                  return true;
              }
              lastByte = buffer[readPtr];
              readPtr += 1;
          }
      }
docs: precondition: readPtr > 0