public override ContainerOrTerminalNode FinalAdjustAfterParsingComplete(ContainerOrTerminalNode node)
        {
            if (node is Container c)
            {
                switch (c.Type)
                {
                case ElementNames.Id:
                    // side effect: set content here to be able to get it for MetaData as well
                    node.Content = c.Children.FirstOrDefault(_ => _.Type == NodeType.Text)?.Content.Trim();

                    // ID shall be a terminal node
                    return(node.ToTerminalNode());

                case ElementNames.Metadata:
                    node.Name = c.Children.FirstOrDefault(_ => _.Type == ElementNames.Id)?.Content.Trim();
                    break;
                }
            }

            return(base.FinalAdjustAfterParsingComplete(node));
        }
 public virtual ContainerOrTerminalNode FinalAdjustAfterParsingComplete(ContainerOrTerminalNode node)
 {
     return(ShallBeTerminalNode(node)
         ? node.ToTerminalNode()
         : node);
 }