code: @Override
      public synchronized byte[] generate() throws GeneratorException {
  
          long now = System.currentTimeMillis();
          if (now == previousTimestamp) {
              sequence++;
          } else {
              sequence = 0;
          }
          if (sequence > Blueprint.MAX_SEQUENCE_COUNTER) {
              try {
                  TimeUnit.MILLISECONDS.sleep(1);
                  return generate();
              } catch (InterruptedException e) {
                  Thread.currentThread().interrupt();
              }
          }
          previousTimestamp = now;
  
          Blueprint blueprint = new Blueprint(
                  now,
                  sequence,
                  generatorIdentityHolder.getGeneratorId(),
                  generatorIdentityHolder.getClusterId(),
                  mode
          );
  
          return IDBuilder.build(blueprint);
      }
docs: {@inheritDoc}