docs: @Override
      public boolean canRetry(Throwable exception) {
          if (exception == null) {
              return false;
          }
  
          Class<? extends Throwable> exceptionClass = exception.getClass();
          if (hasIncludes && !includes.contains(exceptionClass)) {
              return false;
          } else if (hasExcludes && excludes.contains(exceptionClass)) {
              return false;
          } else {
              return this.attemptNumber.incrementAndGet() < (maxAttempts + 1) && ((maxDelay == null) || overallDelay.get() < maxDelay.toMillis());
          }
      }