/// <summary>
 /// Creates a child to this hierarchy node.
 /// </summary>
 /// <param name="input">The input suspension state of the child.</param>
 /// <param name="behavior">The desired behavior.</param>
 /// <returns>The child hierarchy.</returns>
 public HierarchicalSuspenderNode CreateChild(IPipelineStage <PipelineSuspensionState> input, HierarchicalBehavior behavior)
 {
     return(new HierarchicalSuspenderNode(Output, input, behavior));
 }
 internal HierarchicalSuspenderNode(IPipelineStage <PipelineSuspensionState> parent, IPipelineStage <PipelineSuspensionState> input, HierarchicalBehavior behavior)
 {
     if (behavior == HierarchicalBehavior.WeakenSuspensionState)
     {
         Output = PipelineOperations.Create("Hierarchical fusion (weaken suspension)", GetWeakestState, parent, input);
     }
     else
     {
         Output = PipelineOperations.Create("Hierarchical fusion (propagate suspend)", PropagateSuspensionOnly, parent, input);
     }
 }