protected void AddExampleElementNode(Node[] nodes)
        {
            var exampleElementNode = new ExampleElementNode(DocCommentExterior);

            foreach (var node in nodes)
            {
                exampleElementNode.AddNode(node);
            }
            var tagName = "summary";

            exampleElementNode.StartTag = new StartTag(tagName);
            exampleElementNode.EndTag   = new EndTag(tagName);
            AddNode(exampleElementNode);
        }
        internal ParameterDocumentationComment(XmlElementSyntax parameterElement, SyntaxNode nodeToDocument, string docCommentExterior)
            : base(nodeToDocument, docCommentExterior)
        {
            var paramAttr = parameterElement.StartTag.Attributes
                            .Where(attr => attr.Name.ToString().Equals("name"))
                            .FirstOrDefault();
            var paramAttrValue = paramAttr.ChildNodes().Where(n => n.IsKind(SyntaxKind.IdentifierName))
                                 .First();

            ParamName = paramAttrValue.ToString();
            var textNodes          = parameterElement.ChildNodes();
            ExampleElementNode elt = CreateExampleElementNodeFromCommentTextNodes(textNodes);

            AddNode(elt);
        }
        internal SummaryDocumentationComment(SyntaxNode nodeToDocument, string docCommentExterior)
            : base(nodeToDocument, docCommentExterior)
        {
            var summaryElement = GetSummaryElement();

            if (summaryElement != null)
            {
                var newNodes           = SyntaxFactory.List <SyntaxNode>();
                var textNodes          = summaryElement.ChildNodes();
                ExampleElementNode elt = CreateExampleElementNodeFromCommentTextNodes(textNodes);
                AddNode(elt);
            }
            else
            {
                CreateNewComment();
            }
        }
        internal override void CreateNewComment()
        {
            var literalText   = CreateParameterTextString();
            var textToken     = new LiteralTextToken(literalText);
            var paramTextNode = new TextNode("");

            paramTextNode.AddToken(textToken);
            var startTag      = new StartTag("param");
            var nameAttribute = new Attribute("name", ParamName);

            startTag.Attribute = nameAttribute;
            var endTag = new EndTag("param");

            var exampleElementNode = new ExampleElementNode(DocCommentExterior);

            exampleElementNode.AddNode(paramTextNode);
            exampleElementNode.StartTag = startTag;
            exampleElementNode.EndTag   = endTag;
            AddNode(exampleElementNode);
        }