public virtual object VisitKeyValuePairNode(KeyValuePairNode keyValuePairNode, TData data)
        {
            string key   = keyValuePairNode.Key;
            string value = $"{VisitNodeList((NodeList<Node>)(keyValuePairNode.Value), data)}";

            return(new KeyValuePair <string, string>(key, value));
        }
        public override object Visit(Node node, TData data)
        {
            KeyValuePairNode keyValuePairNode = node as KeyValuePairNode;

            if (keyValuePairNode != null)
            {
                return(VisitKeyValuePairNode(keyValuePairNode, data));
            }

            NodeList <KeyValuePairNode> keyValuePairNodes = node as NodeList <KeyValuePairNode>;

            if (keyValuePairNodes != null)
            {
                return(VisitObjectDecoration(keyValuePairNodes, data));
            }

            return(base.Visit(node, data));
        }