class AttemptAndTimeBoundedExponentialBackOff extends AttemptBoundedExponentialBackOff {

  @Override
  public boolean atMaxAttempts() {
    return super.atMaxAttempts() || getTimeMillis() >= endTimeMillis;
  }

  public  AttemptAndTimeBoundedExponentialBackOff(
      int maximumNumberOfAttempts, long initialIntervalMillis, long maximumTotalWaitTimeMillis);
  public  AttemptAndTimeBoundedExponentialBackOff(
      int maximumNumberOfAttempts,
      long initialIntervalMillis,
      long maximumTotalWaitTimeMillis,
      ResetPolicy resetPolicy);
  public  AttemptAndTimeBoundedExponentialBackOff(
      int maximumNumberOfAttempts,
      long initialIntervalMillis,
      long maximumTotalWaitTimeMillis,
      ResetPolicy resetPolicy,
      NanoClock nanoClock);

}