code: public S handle(Class<? extends Throwable>... failures) {
      Assert.notNull(failures, "failures");
      Assert.isTrue(failures.length > 0, "Failures cannot be empty");
      return handle(Arrays.asList(failures));
    }
docs: Specifies the failures to retryOn. Any failures that are assignable from the {@code failures} will be handled.
  
  @throws NullPointerException if {@code failures} is null
  @throws IllegalArgumentException if failures is empty