code: public DfsTraversalNode getNextNode(BEvent e, ExecutorService exSvc) throws BPjsRuntimeException {
          try {
              return new DfsTraversalNode(bp, BProgramSyncSnapshotCloner.clone(systemState).triggerEvent(e, exSvc, Collections.emptySet()), e);
          } catch ( InterruptedException ie ) {
              throw new BPjsRuntimeException("Thread interrupted during event invocaiton", ie);
          }
      }
docs: Get a Node object for each possible state of the system after triggering
  the given event.
  
  @param e the selected event
  @param exSvc The executor service that will run the threads
  @return State of the BProgram after event {@code e} was selected while
  the program was at {@code this} node's state.
  @throws BPjsRuntimeException  In case there's an error running the JavaScript code.