### Question:
NameToBeDefined implements Runnable { public NameToBeDefined runOnError(final Runnable runOnError, final EdsdkError error) { return runOnError(runOnError, Collections.singletonList(error)); } protected  NameToBeDefined(Runnable runnableToDecorate); static NameToBeDefined wrap(final Runnable runnableToDecorate); NameToBeDefined retryOnBusy(); NameToBeDefined retryOnBusy(final long delayMillis); NameToBeDefined retryOnBusy(final long... delayMillis); NameToBeDefined retryOnBusy(final long delayMillis, final int retryTimes); NameToBeDefined retryOnError(final long delayMillis, final EdsdkError errors); NameToBeDefined retryOnError(final long delayMillis, final EdsdkError... errors); NameToBeDefined retryOnError(final long delayMillis, final int retryTimes, final EdsdkError errors); NameToBeDefined retryOnError(final long delayMillis, final int retryTimes, final EdsdkError... errors); NameToBeDefined retryOnError(final long delayMillis, final int retryTimes, final List<EdsdkError> errors); NameToBeDefined runOnError(final Runnable runOnError, final EdsdkError error); NameToBeDefined runOnError(final Runnable runOnError, final EdsdkError... errors); NameToBeDefined runOnError(final Runnable runOnError, final List<EdsdkError> errors); @Override void run(); void handle(Consumer<Throwable> consumer); R handle(Function<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); }