docs: public void executeActivities(List<PvmActivity> activityStack, PvmActivity targetActivity,
                                  PvmTransition targetTransition, Map<String, Object> variables, Map<String, Object> localVariables,
                                  boolean skipCustomListeners, boolean skipIoMappings) {
  
  
      this.skipCustomListeners = skipCustomListeners;
      this.skipIoMapping = skipIoMappings;
      this.activityInstanceId = null;
      this.isEnded = false;
  
      if (!activityStack.isEmpty()) {
        ExecutionStartContext executionStartContext = new ExecutionStartContext(false);
  
        InstantiationStack instantiationStack = new InstantiationStack(activityStack, targetActivity, targetTransition);
        executionStartContext.setInstantiationStack(instantiationStack);
        executionStartContext.setVariables(variables);
        executionStartContext.setVariablesLocal(localVariables);
        setStartContext(executionStartContext);
  
        performOperation(PvmAtomicOperation.ACTIVITY_INIT_STACK);
  
      } else if (targetActivity != null) {
        setVariables(variables);
        setVariablesLocal(localVariables);
        setActivity(targetActivity);
        performOperation(PvmAtomicOperation.ACTIVITY_START_CREATE_SCOPE);
  
      } else if (targetTransition != null) {
        setVariables(variables);
        setVariablesLocal(localVariables);
        setActivity(targetTransition.getSource());
        setTransition(targetTransition);
        performOperation(PvmAtomicOperation.TRANSITION_START_NOTIFY_LISTENER_TAKE);
      }
    }