### Question:
OngoingMissionRun { public ReturnHelper<Result> returnResult() { return new ReturnHelper<Result>(new ReturnResult()); } OngoingMissionRun(Mole mole, Mono<MissionHandle> handle); OngoingMissionRun and(); void forget(); Mono<Result> awaitFinished(Duration timeout); Mono<Result> awaitFinished(); Mono<MissionHandle> asyncHandle(); MissionHandle awaitHandle(); void instruct(StrandCommand command); void await(Predicate<RunState> runStateValidator); void await(Predicate<RunState> runStateValidator, Duration timeout); ReturnHelper<Result> returnResult(); ReturnHelper<MissionState> returnState();  }### Answer:
@Test public void returnResult() { OngoingMissionRun.ReturnHelper<Result> resultReturnHelper = run.returnResult(); assertNotNull(resultReturnHelper.whenFinished()); assertThat(resultReturnHelper.whenFinished(), instanceOf(Result.class)); assertEquals(Result.SUCCESS, resultReturnHelper.whenFinished()); assertNotNull(resultReturnHelper.whenFinished(Duration.ofMillis(100))); assertThat(resultReturnHelper.whenFinished(Duration.ofMillis(100)), instanceOf(Result.class)); assertEquals(Result.SUCCESS, resultReturnHelper.whenFinished(Duration.ofMillis(100))); assertNotNull(resultReturnHelper.when(runStateEquals(RunState.PAUSED).or(runStateEquals(RunState.FINISHED)))); assertThat(resultReturnHelper.when(runStateEquals(RunState.PAUSED).or(runStateEquals(RunState.FINISHED))), instanceOf(Result.class)); assertEquals(Result.SUCCESS, resultReturnHelper.when(runStateEquals(RunState.PAUSED) .or(runStateEquals(RunState.FINISHED)))); assertNotNull(resultReturnHelper.when(runStateEquals(RunState.PAUSED).or(runStateEquals(RunState.FINISHED)), Duration.ofMillis(100))); assertThat(resultReturnHelper.when(runStateEquals(RunState.PAUSED).or(runStateEquals(RunState.FINISHED)), Duration.ofMillis(100)), instanceOf(Result.class)); assertEquals(Result.SUCCESS, resultReturnHelper.when(runStateEquals(RunState.PAUSED) .or(runStateEquals(RunState.FINISHED)), Duration.ofMillis(100))); }