docs: @Override
    public void executeActivity(PvmActivity activity) {
      if (!activity.getIncomingTransitions().isEmpty()) {
        throw new ProcessEngineException("Activity is contained in normal flow and cannot be executed using executeActivity().");
      }
  
      ActivityStartBehavior activityStartBehavior = activity.getActivityStartBehavior();
      if (!isScope() && ActivityStartBehavior.DEFAULT != activityStartBehavior) {
        throw new ProcessEngineException("Activity '" + activity + "' with start behavior '" + activityStartBehavior + "'"
          + "cannot be executed by non-scope execution.");
      }
  
      PvmActivity activityImpl = activity;
      switch (activityStartBehavior) {
        case CONCURRENT_IN_FLOW_SCOPE:
          this.nextActivity = activityImpl;
          performOperation(PvmAtomicOperation.ACTIVITY_START_CONCURRENT);
          break;
  
        case CANCEL_EVENT_SCOPE:
          this.nextActivity = activityImpl;
          performOperation(PvmAtomicOperation.ACTIVITY_START_CANCEL_SCOPE);
          break;
  
        case INTERRUPT_EVENT_SCOPE:
          this.nextActivity = activityImpl;
          performOperation(PvmAtomicOperation.ACTIVITY_START_INTERRUPT_SCOPE);
          break;
  
        default:
          setActivity(activityImpl);
          setActivityInstanceId(null);
          performOperation(PvmAtomicOperation.ACTIVITY_START_CREATE_SCOPE);
          break;
      }
    }