### Question:
NameToBeDefined implements Runnable { public NameToBeDefined retryOnBusy() { return retryOnBusy(DEFAULT_DELAY_MILLIS, 0); } 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 retryOnBusy() { countOnly.retryOnBusy() .run(); assertCounts(1, 0); }
@Test void retryOnBusyThrowsOnBadParams() { Assertions.assertThrows(IllegalArgumentException.class, () -> countOnly.retryOnBusy(-1, 4)); Assertions.assertThrows(IllegalArgumentException.class, () -> countOnly.retryOnBusy(1, -1)); assertCounts(0, 0); }