@Override
  public ParSeqBasedCompletionStage<Void> runAfterEither(CompletionStage<?> other, Runnable action)
  {
    return produceEitherStage("runAfterEither", cast(other, (v) -> null), (t) -> {
      action.run();
      return null;
    });
  }
@Test
  public void testRunAfterEither_Success_Success() throws Exception
  {
    Runnable runnable = mock(Runnable.class);
    CompletionStage<String> completionStage = createTestStage(TESTVALUE1);
    CompletionStage<String> completionStage2 = createTestStage(TESTVALUE2);
    finish(completionStage.runAfterEither(completionStage2, runnable));
    verify(runnable, times(1)).run();
  }