docs: public long newId() {
          for (; ; ) {
              Block block = this.block;
              long res = block.next();
              if (res != Long.MIN_VALUE) {
                  return res;
              }
  
              synchronized (this) {
                  if (block != this.block) {
                      // new block was assigned in the meantime
                      continue;
                  }
                  this.block = new Block(batchIdSupplier.newIdBatch(batchSize), validity);
              }
          }
      }