public virtual ParallelMultiInstanceBehavior CreateParallelMultiInstanceBehavior(Activity activity, AbstractBpmnActivityBehavior innerActivityBehavior)
        {
            ExtensionAttribute assigneeType = activity.AssigneeType;

            switch (assigneeType?.Value?.ToLower())
            {
            case AssigneeType.SINGLE:
            default:
                return(new ParallelMultiInstanceBehavior(activity, innerActivityBehavior));

            case AssigneeType.SINGLE_PASS:
                return(new SinglePassParallelMultiInstanceBehavior(activity, innerActivityBehavior));

            case AssigneeType.ONE:
                return(new OnePassParallelMultiInstanceBehavior(activity, innerActivityBehavior));

            case AssigneeType.HALF_PASSED:
            case AssigneeType.HALF_REJECT:
                return(new HalfPassParallelMultiInstanceBehavior(activity, innerActivityBehavior));

            case AssigneeType.ALL:
                return(new AllPassParallelMultiInstanceBehavior(activity, innerActivityBehavior));
            }
        }
        // Multi Instance

        public virtual SequentialMultiInstanceBehavior CreateSequentialMultiInstanceBehavior(Activity activity, AbstractBpmnActivityBehavior innerActivityBehavior)
        {
            return(new SequentialMultiInstanceBehavior(activity, innerActivityBehavior));
        }