internal async Task PerformSubroutineTypeBehavior()

in Forge.TreeWalker/src/TreeWalkerSession.cs [581:606]


        internal async Task PerformSubroutineTypeBehavior(TreeNode treeNode, string treeNodeKey)
        {
            // Perform pre-checks.
            if (treeNode.Actions == null)
            {
                throw new ArgumentException("Subroutine TreeNodeType does not contain any Actions. TreeNodeKey: " + treeNodeKey);
            }

            bool preCheck_ContainsAtLeastOneSubroutineAction = false;

            foreach (TreeAction treeAction in treeNode.Actions.Values)
            {
                if (treeAction.Action == nameof(SubroutineAction))
                {
                    preCheck_ContainsAtLeastOneSubroutineAction = true;
                    break;
                }
            }

            if (!preCheck_ContainsAtLeastOneSubroutineAction)
            {
                throw new ArgumentException("Subroutine TreeNodeTypes must contain at least one SubroutineAction. TreeNodeKey: " + treeNodeKey);
            }

            await this.PerformActionTypeBehavior(treeNode, treeNodeKey).ConfigureAwait(false);
        }