UserProcessController { @SuppressWarnings("unused") public Optional<ServerResponse> takeCurrentResponse(final PausingPoint pausingPoint, final QualifiedKeywordName currentlyFailedKeyword) { final Optional<ResponseWithCallback> currentResponse = takeQueuedResponse(); currentResponse.ifPresent(response -> response.callback.run()); return currentResponse.map(response -> response.response); }  void executionPaused(); void conditionEvaluated(@SuppressWarnings("unused") final ConditionEvaluatedEvent event); @SuppressWarnings("unused") Optional<ServerResponse> takeCurrentResponse(final PausingPoint pausingPoint,
            final QualifiedKeywordName currentlyFailedKeyword); FutureTask<ServerResponse> takeFutureResponse(); void disconnect(final Runnable whenResponseIsSent); void interrupt(final Runnable whenResponseIsSent); void terminate(final Runnable whenResponseIsSent); void pause(final Runnable whenResponseIsSent); void resume(final Runnable whenResponseIsSent);  }
@Test public void thereIsNoResponse_forNewlyCreatedController() { final UserProcessController controller = new UserProcessController(); final Optional<ServerResponse> response = controller.takeCurrentResponse(PausingPoint.START_KEYWORD, null); assertThat(response).isEmpty(); }