SagaMessageStream implements MessageStream { @Override public void add(@Nonnull final Object message) { checkNotNull(message, "Message to handle must not be null."); addMessage(message, EMPTY_HEADERS); } @Inject  SagaMessageStream(
            final HandlerInvoker invoker,
            final SagaEnvironment environment,
            final Executor executor); @Override void add(@Nonnull final Object message); @Override void add(@Nonnull final Object message, @Nullable final Map<String, Object> headers); @Override void addMessage(@Nonnull final Object message, @Nullable final Map<HeaderName<?>, Object> headers); @Override void handle(@Nonnull final Object message); @Override void handle(@Nonnull final Object message, @Nullable final ExecutionContext parentContext); @Override void handle(@Nonnull final Object message, @Nullable final Map<String, Object> headers); @Override void handleMessage(@Nonnull final Object message, @Nullable final Map<HeaderName<?>, Object> headers); @Override void handle(@Nonnull final Object message, @Nullable final Map<String, Object> headers, @Nullable final ExecutionContext parentContext); @Override void handleMessage(
            @Nonnull final Object message,
            @Nullable final Map<HeaderName<?>, Object> headers,
            @Nullable final ExecutionContext parentContext); @Override void close();  }
@Test public void add_always_taskAddedToExecutor() { String message = "theMessage"; sut.add(message); verify(executorService).execute(isA(SagaExecutionTask.class)); }