### Question:
NameToBeDefined2 implements Callable<V> { public NameToBeDefined2<V> runOnError(final Callable<V> runOnError, final EdsdkError error) { return runOnError(runOnError, Collections.singletonList(error)); } protected  NameToBeDefined2(Callable<V> callableToDecorate); static NameToBeDefined2<V> wrap(final Callable<V> callableToDecorate); NameToBeDefined2<V> retryOnBusy(); NameToBeDefined2<V> retryOnBusy(final long delayMillis); NameToBeDefined2<V> retryOnBusy(final long... delayMillis); NameToBeDefined2<V> retryOnBusy(final long delayMillis, final int retryTimes); NameToBeDefined2<V> retryOnError(final long delayMillis, final EdsdkError errors); NameToBeDefined2<V> retryOnError(final long delayMillis, final EdsdkError... errors); NameToBeDefined2<V> retryOnError(final long delayMillis, final int retryTimes, final EdsdkError errors); NameToBeDefined2<V> retryOnError(final long delayMillis, final int retryTimes, final EdsdkError... errors); NameToBeDefined2<V> retryOnError(final long delayMillis, final int retryTimes, final List<EdsdkError> errors); NameToBeDefined2<V> runOnError(final Callable<V> runOnError, final EdsdkError error); NameToBeDefined2<V> runOnError(final Callable<V> runOnError, final EdsdkError... errors); NameToBeDefined2<V> runOnError(final Callable<V> runOnError, final List<EdsdkError> errors); @Override V call(); void handle(Consumer<Throwable> consumer); V handle(Function<Throwable, V> function); R handle(BiFunction<V, Throwable, R> function);  }### Answer:
@Test void runOnErrorThrowsOnBadParams() { Assertions.assertThrows(IllegalArgumentException.class, () -> countOnly.runOnError(null, EdsdkError.EDS_ERR_COMM_USB_BUS_ERR)); Assertions.assertThrows(IllegalArgumentException.class, () -> countOnly.runOnError(runOnError, Lists.newArrayList((EdsdkError) null))); assertCounts(0, 0); }