code: public BackOffParameters next() {
      int ret = Math.min(nextBackOffTime, maxBackOff);
      nextBackOffTime += backOffTime;
      if (nextBackOffTime <= 0) {
        nextBackOffTime = Integer.MAX_VALUE;
      }
      backOffTime = ret;
  
      int randomizeTime = (int) (backOffTime * (1.0 + (Math.random() * randomizationFactor)));
      int minAllowedTime = (int) Math.round(randomizeTime - backOffTime * randomizationFactor);
  
      return new BackOffParameters(randomizeTime, minAllowedTime);
    }
docs: Gets the next back off time. Until maxBackOff is reached.