code: public boolean execute(Retryable<E> operation) {
          Logger logger = IOUtil.logger();
          int i = this.retries + 1;
          this.attempts = 0;
          this.errors.clear();
          
          E error;
          do {
              error = operation.attempt();
              this.attempts++;
              if (error != null) {
                  this.errors.add(error);
                  --i;
                  logError(logger, error, i);
                  if (i > 0) {
                      logger.log(Level.WARNING, "Recovering...");
                      operation.recover();
                  }
              }
          } while (error != null && i > 0);
          
          return error == null;
      }
docs: Executes a command with <code>retries</code> retries. This can be
  executed multiple times.
  
  @param operation the operation to attempt.
  @return <code>true</code> if the operation succeeded, <code>false</code>
  if not. Consult {@link #getErrors()} for any error codes or exceptions
  that the operation returned.