code: public List<Message> processForPipelines(Message message,
                                               Set<String> pipelineIds,
                                               InterpreterListener interpreterListener,
                                               State state) {
          final Map<String, Pipeline> currentPipelines = state.getCurrentPipelines();
          final ImmutableSet<Pipeline> pipelinesToRun = pipelineIds.stream()
                  .map(currentPipelines::get)
                  .filter(Objects::nonNull)
                  .collect(ImmutableSet.toImmutableSet());
  
          return processForResolvedPipelines(message, message.getId(), pipelinesToRun, interpreterListener, state);
      }
docs: Given a set of pipeline ids, process the given message according to the passed state.
  
  This method returns the list of messages produced by the configuration in state, it does not
  look at the database or any other external resource besides what is being passed as
  parameters.
  
  This can be used to simulate pipelines without having to store them in the database.
  
  @param message             the message to process
  @param pipelineIds         the ids of the pipelines to resolve and run the message through
  @param interpreterListener the listener tracing the execution
  @param state               the pipeline/stage/rule state to interpret
  @return the list of messages created during the interpreter run