### Question:
OngoingMissionRun { public ReturnHelper<MissionState> returnState() { return new ReturnHelper<MissionState>(new ReturnState()); } 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 returnState() { OngoingMissionRun.ReturnHelper<MissionState> stateReturnHelper = run.returnState(); assertNotNull(stateReturnHelper.whenFinished()); assertThat(stateReturnHelper.whenFinished(), instanceOf(MissionState.class)); assertNotNull(stateReturnHelper.whenFinished(Duration.ofMillis(100))); assertThat(stateReturnHelper.whenFinished(Duration.ofMillis(100)), instanceOf(MissionState.class)); assertNotNull(stateReturnHelper.when(runStateEquals(RunState.PAUSED).or(runStateEquals(RunState.FINISHED)))); assertThat(stateReturnHelper.when(runStateEquals(RunState.PAUSED).or(runStateEquals(RunState.FINISHED))), instanceOf(MissionState.class)); assertNotNull(stateReturnHelper.when(runStateEquals(RunState.PAUSED).or(runStateEquals(RunState.FINISHED)), Duration.ofMillis(100))); assertThat(stateReturnHelper.when(runStateEquals(RunState.PAUSED).or(runStateEquals(RunState.FINISHED)), Duration.ofMillis(100)), instanceOf(MissionState.class)); }