{"action":"created","comment":{"url":"https://api.github.com/repos/dotnet/roslyn/pulls/comments/47133005","id":47133005,"diff_hunk":"@@ -664,6 +666,561 @@ public static SyntaxToken XmlEntity(SyntaxTriviaList leading, string text, strin\n         }\n \n         /// <summary>\n+        /// Creates an xml documentation comment that abstracts xml syntax creation.\n+        /// </summary>\n+        /// <param name=\"content\">\n+        /// A list of xml node syntax that will be the content within the xml documentation comment\n+        /// (e.g. a summary element, a returns element, exception element and so on).\n+        /// </param>\n+        public static DocumentationCommentTriviaSyntax DocumentationComment(params XmlNodeSyntax[] content)\n+        {\n+            return DocumentationCommentTrivia(SyntaxKind.SingleLineDocumentationCommentTrivia, List(content))\n+                .WithLeadingTrivia(DocumentationCommentExterior(\"/// \"))\n+                .WithTrailingTrivia(EndOfLine(Environment.NewLine));\n+        }\n+\n+        /// <summary>\n+        /// Creates a summary element within an xml documentation comment.\n+        /// </summary>\n+        /// <param name=\"content\">A list of xml node syntax that will be the content within the summary element.</param>\n+        public static XmlElementSyntax XmlSummaryElement(params XmlNodeSyntax[] content)\n+        {\n+            return XmlSummaryElement(List(content));\n+        }\n+\n+        /// <summary>\n+        /// Creates a summary element within an xml documentation comment.\n+        /// </summary>\n+        /// <param name=\"content\">A list of xml node syntax that will be the content within the summary element.</param>\n+        public static XmlElementSyntax XmlSummaryElement(SyntaxList<XmlNodeSyntax> content)\n+        {\n+            return XmlMultiLineElement(DocumentationCommentXmlNames.SummaryElementName, content);\n+        }\n+\n+        /// <summary>\n+        /// Creates a see element within an xml documentation comment.\n+        /// </summary>\n+        /// <param name=\"cref\">A cref syntax node that points to the referenced item (e.g. a class, struct).</param>\n+        public static XmlEmptyElementSyntax XmlSeeElement(CrefSyntax cref)\n+        {\n+            return XmlEmptyElement(DocumentationCommentXmlNames.SeeElementName).AddAttributes(XmlCrefAttribute(cref));\n+        }\n+\n+        /// <summary>\n+        /// Creates a seealso element within an xml documentation comment.\n+        /// </summary>\n+        /// <param name=\"cref\">A cref syntax node that points to the referenced item (e.g. a class, struct).</param>\n+        public static XmlEmptyElementSyntax XmlSeeAlsoElement(CrefSyntax cref)\n+        {\n+            return XmlEmptyElement(DocumentationCommentXmlNames.SeeAlsoElementName).AddAttributes(XmlCrefAttribute(cref));\n+        }\n+\n+        /// <summary>\n+        /// Creates a seealso element within an xml documentation comment.\n+        /// </summary>\n+        /// <param name=\"linkAddress\">The uri of the referenced item.</param>\n+        /// <param name=\"linkText\">A list of xml node syntax that will be used as the link text for the referenced item.</param>\n+        public static XmlElementSyntax XmlSeeAlsoElement(Uri linkAddress, SyntaxList<XmlNodeSyntax> linkText)\n+        {\n+            XmlElementSyntax element = XmlElement(DocumentationCommentXmlNames.SeeAlsoElementName, linkText);\n+            return element.WithStartTag(element.StartTag.AddAttributes(XmlTextAttribute(DocumentationCommentXmlNames.CrefAttributeName, linkAddress.ToString())));\n+        }\n+\n+        /// <summary>\n+        /// Creates a threadsafty element within an xml documentation comment.\n+        /// </summary>\n+        public static XmlEmptyElementSyntax XmlThreadSafetyElement()\n+        {\n+            return XmlThreadSafetyElement(true, false);\n+        }\n+\n+        /// <summary>\n+        /// Creates a threadsafty element within an xml documentation comment.\n+        /// </summary>\n+        /// <param name=\"static\">Indicates whether static member of this class are safe for multi-threaded operations.</param>\n+        /// <param name=\"instance\">Indicates whether members of instances of this type are safe for multi-threaded operations.</param>\n+        public static XmlEmptyElementSyntax XmlThreadSafetyElement(bool @static, bool instance)\n+        {\n+            return XmlEmptyElement(DocumentationCommentXmlNames.ThreadSafetyElementName).AddAttributes(\n+                XmlTextAttribute(DocumentationCommentXmlNames.StaticAttributeName, @static.ToString().ToLowerInvariant()),\n+                XmlTextAttribute(DocumentationCommentXmlNames.InstanceAttributeName, instance.ToString().ToLowerInvariant()));\n+        }\n+\n+        /// <summary>\n+        /// Creates a syntax node for a name attribute in a xml element within a xml documentation comment.\n+        /// </summary>\n+        /// <param name=\"parameterName\">The value of the name attribute.</param>\n+        public static XmlNameAttributeSyntax XmlNameAttribute(string parameterName)\n+        {\n+            return XmlNameAttribute(\n+                XmlName(DocumentationCommentXmlNames.NameAttributeName),\n+                Token(SyntaxKind.DoubleQuoteToken),\n+                parameterName,\n+                Token(SyntaxKind.DoubleQuoteToken))\n+                .WithLeadingTrivia(Whitespace(\" \"));\n+        }\n+\n+        /// <summary>\n+        /// Creates a syntax node for a priliminary element within a xml documentation comment.\n+        /// </summary>\n+        public static XmlEmptyElementSyntax XmlPreliminaryElement()\n+        {\n+            return XmlEmptyElement(DocumentationCommentXmlNames.PreliminaryElementName);\n+        }\n+\n+        /// <summary>\n+        /// Creates a syntax node for a cref attribute within a xml documentation comment.\n+        /// </summary>\n+        /// <param name=\"cref\">The <see cref=\"CrefSyntax\"/> used for the xml cref attribute syntax.</param>\n+        public static XmlCrefAttributeSyntax XmlCrefAttribute(CrefSyntax cref)\n+        {\n+            return XmlCrefAttribute(cref, SyntaxKind.DoubleQuoteToken);\n+        }\n+\n+        /// <summary>\n+        /// Creates a syntax node for a cref attribute within a xml documentation comment.\n+        /// </summary>\n+        /// <param name=\"cref\">The <see cref=\"CrefSyntax\"/> used for the xml cref attribute syntax.</param>\n+        /// <param name=\"quoteKind\">The kind of the quote for the referenced item in the cref attribute.</param>\n+        public static XmlCrefAttributeSyntax XmlCrefAttribute(CrefSyntax cref, SyntaxKind quoteKind)\n+        {\n+            cref = cref.ReplaceTokens(cref.DescendantTokens(), XmlReplaceBracketTokens);\n+            return XmlCrefAttribute(\n+                XmlName(DocumentationCommentXmlNames.CrefAttributeName),\n+                Token(quoteKind),\n+                cref,\n+                Token(quoteKind))\n+                .WithLeadingTrivia(Whitespace(\" \"));\n+        }\n+\n+        /// <summary>\n+        /// Creates a remarks element within an xml documentation comment.\n+        /// </summary>\n+        /// <param name=\"content\">A list of xml node syntax that will be the content within the remarks element.</param>\n+        public static XmlElementSyntax XmlRemarksElement(params XmlNodeSyntax[] content)\n+        {\n+            return XmlRemarksElement(List(content));\n+        }\n+\n+        /// <summary>\n+        /// Creates a remarks element within an xml documentation comment.\n+        /// </summary>\n+        /// <param name=\"content\">A list of xml node syntax that will be the content within the remarks element.</param>\n+        public static XmlElementSyntax XmlRemarksElement(SyntaxList<XmlNodeSyntax> content)\n+        {\n+            return XmlMultiLineElement(DocumentationCommentXmlNames.RemarksElementName, content);\n+        }\n+\n+        /// <summary>\n+        /// Creates a returns element within an xml documentation comment.\n+        /// </summary>\n+        /// <param name=\"content\">A list of xml node syntax that will be the content within the returns element.</param>\n+        public static XmlElementSyntax XmlReturnsElement(params XmlNodeSyntax[] content)\n+        {\n+            return XmlReturnsElement(List(content));\n+        }\n+\n+        /// <summary>\n+        /// Creates a returns element within an xml documentation comment.\n+        /// </summary>\n+        /// <param name=\"content\">A list of xml node syntax that will be the content within the returns element.</param>\n+        public static XmlElementSyntax XmlReturnsElement(SyntaxList<XmlNodeSyntax> content)\n+        {\n+            return XmlMultiLineElement(DocumentationCommentXmlNames.ReturnsElementName, content);\n+        }\n+\n+        /// <summary>\n+        /// Creates the the syntax representation of an xml value element (e.g. for xml documentation comments).\n+        /// </summary>\n+        /// <param name=\"content\">A list of xml syntax nodes that represents the content of the value element.</param>\n+        public static XmlElementSyntax XmlValueElement(params XmlNodeSyntax[] content)\n+        {\n+            return XmlValueElement(List(content));\n+        }\n+\n+        /// <summary>\n+        /// Creates the the syntax representation of an xml value element (e.g. for xml documentation comments).\n+        /// </summary>\n+        /// <param name=\"content\">A list of xml syntax nodes that represents the content of the value element.</param>\n+        public static XmlElementSyntax XmlValueElement(SyntaxList<XmlNodeSyntax> content)\n+        {\n+            return XmlMultiLineElement(DocumentationCommentXmlNames.ValueElementName, content);\n+        }\n+\n+        /// <summary>\n+        /// Creates the syntax representation of an exception element within xml documentation comments.\n+        /// </summary>\n+        /// <param name=\"cref\">Syntax representation of the reference to the exception type.</param>\n+        /// <param name=\"content\">A list of syntax nodes that represents the content of the exception element.</param>\n+        public static XmlElementSyntax XmlExceptionElement(CrefSyntax cref, params XmlNodeSyntax[] content)\n+        {\n+            return XmlExceptionElement(cref, List(content));\n+        }\n+\n+        /// <summary>\n+        /// Creates the syntax representation of an exception element within xml documentation comments.\n+        /// </summary>\n+        /// <param name=\"cref\">Syntax representation of the reference to the exception type.</param>\n+        /// <param name=\"content\">A list of syntax nodes that represents the content of the exception element.</param>\n+        public static XmlElementSyntax XmlExceptionElement(CrefSyntax cref, SyntaxList<XmlNodeSyntax> content)\n+        {\n+            XmlElementSyntax element = XmlElement(DocumentationCommentXmlNames.ExceptionElementName, content);\n+            return element.WithStartTag(element.StartTag.AddAttributes(XmlCrefAttribute(cref)));\n+        }\n+\n+        /// <summary>\n+        /// Creates the syntax representation of a permission element within xml documentation comments.\n+        /// </summary>\n+        /// <param name=\"cref\">Syntax representation of the reference to the permission type.</param>\n+        /// <param name=\"content\">A list of syntax nodes that represents the content of the permission element.</param>\n+        public static XmlElementSyntax XmlPermissionElement(CrefSyntax cref, params XmlNodeSyntax[] content)\n+        {\n+            return XmlPermissionElement(cref, List(content));\n+        }\n+\n+        /// <summary>\n+        /// Creates the syntax representation of a permission element within xml documentation comments.\n+        /// </summary>\n+        /// <param name=\"cref\">Syntax representation of the reference to the permission type.</param>\n+        /// <param name=\"content\">A list of syntax nodes that represents the content of the permission element.</param>\n+        public static XmlElementSyntax XmlPermissionElement(CrefSyntax cref, SyntaxList<XmlNodeSyntax> content)\n+        {\n+            XmlElementSyntax element = XmlElement(DocumentationCommentXmlNames.PermissionElementName, content);\n+            return element.WithStartTag(element.StartTag.AddAttributes(XmlCrefAttribute(cref)));\n+        }\n+\n+        /// <summary>\n+        /// Creates the syntax representation of an example element within xml documentation comments.\n+        /// </summary>\n+        /// <param name=\"content\">A list of syntax nodes that represents the content of the example element.</param>\n+        public static XmlElementSyntax XmlExampleElement(params XmlNodeSyntax[] content)\n+        {\n+            return XmlExampleElement(List(content));\n+        }\n+\n+        /// <summary>\n+        /// Creates the syntax representation of an example element within xml documentation comments.\n+        /// </summary>\n+        /// <param name=\"content\">A list of syntax nodes that represents the content of the example element.</param>\n+        public static XmlElementSyntax XmlExampleElement(SyntaxList<XmlNodeSyntax> content)\n+        {\n+            XmlElementSyntax element = XmlElement(DocumentationCommentXmlNames.ExampleElementName, content);\n+            return element.WithStartTag(element.StartTag);\n+        }\n+\n+        /// <summary>\n+        /// Creates the syntax representation of a para element within xml documentation comments.\n+        /// </summary>\n+        /// <param name=\"content\">A list of syntax nodes that represents the content of the para element.</param>\n+        public static XmlElementSyntax XmlParaElement(params XmlNodeSyntax[] content)\n+        {\n+            return XmlParaElement(List(content));\n+        }\n+\n+        /// <summary>\n+        /// Creates the syntax representation of a para element within xml documentation comments.\n+        /// </summary>\n+        /// <param name=\"content\">A list of syntax nodes that represents the content of the para element.</param>\n+        public static XmlElementSyntax XmlParaElement(SyntaxList<XmlNodeSyntax> content)\n+        {\n+            return XmlElement(DocumentationCommentXmlNames.ParaElementName, content);\n+        }\n+\n+        /// <summary>\n+        /// Creates the syntax representation of a param element within xml documentation comments (e.g. for\n+        /// documentation of method parameters).\n+        /// </summary>\n+        /// <param name=\"parameterName\">The name of the parameter.</param>\n+        /// <param name=\"content\">A list of syntax nodes that represents the content of the param element (e.g. \n+        /// the description and meaning of the parameter).</param>\n+        public static XmlElementSyntax XmlParamElement(string parameterName, params XmlNodeSyntax[] content)\n+        {\n+            return XmlParamElement(parameterName, List(content));\n+        }\n+\n+        /// <summary>\n+        /// Creates the syntax representation of a param element within xml documentation comments (e.g. for\n+        /// documentation of method parameters).\n+        /// </summary>\n+        /// <param name=\"parameterName\">The name of the parameter.</param>\n+        /// <param name=\"content\">A list of syntax nodes that represents the content of the param element (e.g. \n+        /// the description and meaning of the parameter).</param>\n+        public static XmlElementSyntax XmlParamElement(string parameterName, SyntaxList<XmlNodeSyntax> content)\n+        {\n+            XmlElementSyntax element = XmlElement(DocumentationCommentXmlNames.ParameterElementName, content);\n+            return element.WithStartTag(element.StartTag.AddAttributes(XmlNameAttribute(parameterName)));\n+        }\n+\n+        /// <summary>\n+        /// Creates the syntax representation of a paramref element within xml documentation comments (e.g. for\n+        /// referencing particular parameters of a method).\n+        /// </summary>\n+        /// <param name=\"parameterName\">The name of the referenced parameter.</param>\n+        public static XmlEmptyElementSyntax XmlParamRefElement(string parameterName)\n+        {\n+            return XmlEmptyElement(DocumentationCommentXmlNames.ParameterReferenceElementName).AddAttributes(XmlNameAttribute(parameterName));\n+        }\n+\n+        /// <summary>\n+        /// Creates the syntax representation of a see element within xml documentation comments,\n+        /// that points to the 'null' language keyword.\n+        /// </summary>\n+        public static XmlEmptyElementSyntax XmlNullKeywordElement()\n+        {\n+            return XmlKeywordElement(\"null\");\n+        }\n+\n+        /// <summary>\n+        /// Creates the syntax representation of a see element within xml documentation comments,\n+        /// that points to a language keyword.\n+        /// </summary>\n+        /// <param name=\"keyword\">The language keyword to which the see element points to.</param>\n+        private static XmlEmptyElementSyntax XmlKeywordElement(string keyword)\n+        {\n+            return XmlEmptyElement(DocumentationCommentXmlNames.SeeElementName).AddAttributes(\n+                XmlTextAttribute(DocumentationCommentXmlNames.KeywordElementName, keyword));\n+        }\n+\n+        /// <summary>\n+        /// Creates the syntax representation of a placeholder element within xml documentation comments.\n+        /// </summary>\n+        /// <param name=\"content\">A list of syntax nodes that represents the content of the placeholder element.</param>\n+        public static XmlElementSyntax XmlPlaceholderElement(params XmlNodeSyntax[] content)\n+        {\n+            return XmlPlaceholderElement(List(content));\n+        }\n+\n+        /// <summary>\n+        /// Creates the syntax representation of a placeholder element within xml documentation comments.\n+        /// </summary>\n+        /// <param name=\"content\">A list of syntax nodes that represents the content of the placeholder element.</param>\n+        public static XmlElementSyntax XmlPlaceholderElement(SyntaxList<XmlNodeSyntax> content)\n+        {\n+            return XmlElement(DocumentationCommentXmlNames.PlaceholderElementName, content);\n+        }\n+\n+        /// <summary>\n+        /// Creates the syntax representation of a named empty xml element within xml documentation comments.\n+        /// </summary>\n+        /// <param name=\"localName\">The name of the empty xml element.</param>\n+        public static XmlEmptyElementSyntax XmlEmptyElement(string localName)\n+        {\n+            return XmlEmptyElement(XmlName(localName));\n+        }\n+\n+        /// <summary>\n+        /// Creates the syntax representation of a named xml element within xml documentation comments.\n+        /// </summary>\n+        /// <param name=\"localName\">The name of the empty xml element.</param>\n+        /// <param name=\"content\">A list of syntax nodes that represents the content of the xml element.</param>\n+        public static XmlElementSyntax XmlElement(string localName, SyntaxList<XmlNodeSyntax> content)\n+        {\n+            return XmlElement(XmlName(localName), content);\n+        }\n+\n+        /// <summary>\n+        /// Creates the syntax representation of a named xml element within xml documentation comments.\n+        /// </summary>\n+        /// <param name=\"name\">The name of the empty xml element.</param>\n+        /// <param name=\"content\">A list of syntax nodes that represents the content of the xml element.</param>\n+        public static XmlElementSyntax XmlElement(XmlNameSyntax name, SyntaxList<XmlNodeSyntax> content)\n+        {\n+            return XmlElement(\n+                XmlElementStartTag(name),\n+                content,\n+                XmlElementEndTag(name));\n+        }\n+\n+        /// <summary>\n+        /// Creates the syntax representation of an xml text attribute.\n+        /// </summary>\n+        /// <param name=\"name\">The name of the xml text attribute.</param>\n+        /// <param name=\"value\">The value of the xml text attribute.</param>\n+        public static XmlTextAttributeSyntax XmlTextAttribute(string name, string value)\n+        {\n+            return XmlTextAttribute(name, XmlTextLiteral(value));\n+        }\n+\n+        /// <summary>\n+        /// Creates the syntax representation of an xml text attribute.\n+        /// </summary>\n+        /// <param name=\"name\">The name of the xml text attribute.</param>\n+        /// <param name=\"textTokens\">A list of tokens used for the value of the xml text attribute.</param>\n+        public static XmlTextAttributeSyntax XmlTextAttribute(string name, params SyntaxToken[] textTokens)\n+        {\n+            return XmlTextAttribute(XmlName(name), SyntaxKind.DoubleQuoteToken, TokenList(textTokens));\n+        }\n+\n+        /// <summary>\n+        /// Creates the syntax representation of an xml text attribute.\n+        /// </summary>\n+        /// <param name=\"name\">The name of the xml text attribute.</param>\n+        /// <param name=\"quoteKind\">The kind of the quote token to be used to quote the value (e.g. \" or ').</param>\n+        /// <param name=\"textTokens\">A list of tokens used for the value of the xml text attribute.</param>\n+        public static XmlTextAttributeSyntax XmlTextAttribute(string name, SyntaxKind quoteKind, SyntaxTokenList textTokens)\n+        {\n+            return XmlTextAttribute(XmlName(name), SyntaxKind.DoubleQuoteToken, textTokens);\n+        }\n+\n+        /// <summary>\n+        /// Creates the syntax representation of an xml text attribute.\n+        /// </summary>\n+        /// <param name=\"name\">The name of the xml text attribute.</param>\n+        /// <param name=\"quoteKind\">The kind of the quote token to be used to quote the value (e.g. \" or ').</param>\n+        /// <param name=\"textTokens\">A list of tokens used for the value of the xml text attribute.</param>\n+        public static XmlTextAttributeSyntax XmlTextAttribute(XmlNameSyntax name, SyntaxKind quoteKind, SyntaxTokenList textTokens)\n+        {\n+            return XmlTextAttribute(\n+                name,\n+                Token(quoteKind),\n+                textTokens,\n+                Token(quoteKind))\n+                .WithLeadingTrivia(Whitespace(\" \"));\n+        }\n+\n+        /// <summary>\n+        /// Creates the syntax representation of an xml element that spans multiple text lines.\n+        /// </summary>\n+        /// <param name=\"localName\">The name of the xml element.</param>\n+        /// <param name=\"content\">A list of syntax nodes that represents the content of the xml multi line element.</param>\n+        public static XmlElementSyntax XmlMultiLineElement(string localName, SyntaxList<XmlNodeSyntax> content)\n+        {\n+            return XmlMultiLineElement(XmlName(localName), content);\n+        }\n+\n+        /// <summary>\n+        /// Creates the syntax representation of an xml element that spans multiple text lines.\n+        /// </summary>\n+        /// <param name=\"name\">The name of the xml element.</param>\n+        /// <param name=\"content\">A list of syntax nodes that represents the content of the xml multi line element.</param>\n+        public static XmlElementSyntax XmlMultiLineElement(XmlNameSyntax name, SyntaxList<XmlNodeSyntax> content)\n+        {\n+            return XmlElement(\n+                XmlElementStartTag(name),\n+                content.Insert(0, XmlNewLine()).Add(XmlNewLine()),\n+                XmlElementEndTag(name));\n+        }\n+\n+        /// <summary>\n+        /// Creates the syntax representation of an xml text that contains a newline token with a documentation comment \n+        /// exterior trivia at the end (continued documentation comment).\n+        /// </summary>\n+        public static XmlTextSyntax XmlNewLine()\n+        {\n+            return XmlText(XmlTextNewLine());\n+        }\n+\n+        /// <summary>\n+        /// Creates the syntax representation of an xml newline token with a documentation comment exterior trivia at \n+        /// the end (continued documentation comment).\n+        /// </summary>\n+        public static SyntaxToken XmlTextNewLine()\n+        {\n+            return XmlTextNewLine(true);\n+        }\n+\n+        /// <summary>\n+        /// Creates the syntax representation of an xml newline token for xml documentation comments.\n+        /// </summary>\n+        /// <param name=\"continueXmlDocumentationComment\">\n+        /// If set to true, a documentation comment exterior token will be added to the trailing trivia\n+        /// of the new token.</param>\n+        public static SyntaxToken XmlTextNewLine(bool continueXmlDocumentationComment)\n+        {\n+            SyntaxToken token = XmlTextNewLine(\n+                TriviaList(),\n+                Environment.NewLine,\n+                Environment.NewLine,\n+                TriviaList());\n+\n+            if (continueXmlDocumentationComment)\n+                token = token.WithTrailingTrivia(DocumentationCommentExterior(\"/// \"));\n+\n+            return token;\n+        }\n+\n+        /// <summary>\n+        /// Creates the syntax representation of an xml newline token for xml documentation comments.\n+        /// </summary>\n+        /// <param name=\"text\">The raw text within the new line.</param>\n+        /// <param name=\"continueXmlDocumentationComment\">\n+        /// If set to true, a documentation comment exterior token will be added to the trailing trivia\n+        /// of the new token.</param>\n+        public static SyntaxToken XmlTextNewLine(string text, bool continueXmlDocumentationComment)\n+        {\n+            var value = Environment.NewLine;\n+            var token = new SyntaxToken(Syntax.InternalSyntax.SyntaxFactory.XmlTextNewLine((InternalSyntax.CSharpSyntaxNode)ElasticMarker.UnderlyingNode, text, value, (InternalSyntax.CSharpSyntaxNode)ElasticMarker.UnderlyingNode));\n+\n+            if (continueXmlDocumentationComment)\n+                token = token.WithTrailingTrivia(DocumentationCommentExterior(\"/// \"));","path":"src/Compilers/CSharp/Portable/Syntax/SyntaxFactory.cs","position":499,"original_position":499,"commit_id":"95ea4dbcc6284f1c21ccedbed9b673ccedf34aa0","original_commit_id":"95ea4dbcc6284f1c21ccedbed9b673ccedf34aa0","user":{"login":"robinsedlaczek","id":2900224,"avatar_url":"https://avatars.githubusercontent.com/u/2900224?v=3","gravatar_id":"","url":"https://api.github.com/users/robinsedlaczek","html_url":"https://github.com/robinsedlaczek","followers_url":"https://api.github.com/users/robinsedlaczek/followers","following_url":"https://api.github.com/users/robinsedlaczek/following{/other_user}","gists_url":"https://api.github.com/users/robinsedlaczek/gists{/gist_id}","starred_url":"https://api.github.com/users/robinsedlaczek/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/robinsedlaczek/subscriptions","organizations_url":"https://api.github.com/users/robinsedlaczek/orgs","repos_url":"https://api.github.com/users/robinsedlaczek/repos","events_url":"https://api.github.com/users/robinsedlaczek/events{/privacy}","received_events_url":"https://api.github.com/users/robinsedlaczek/received_events","type":"User","site_admin":false},"body":"So you suggest sun glasses... ","created_at":"2015-12-09T18:46:28Z","updated_at":"2015-12-09T18:46:28Z","html_url":"https://github.com/dotnet/roslyn/pull/6790#discussion_r47133005","pull_request_url":"https://api.github.com/repos/dotnet/roslyn/pulls/6790","_links":{"self":{"href":"https://api.github.com/repos/dotnet/roslyn/pulls/comments/47133005"},"html":{"href":"https://github.com/dotnet/roslyn/pull/6790#discussion_r47133005"},"pull_request":{"href":"https://api.github.com/repos/dotnet/roslyn/pulls/6790"}}},"pull_request":{"url":"https://api.github.com/repos/dotnet/roslyn/pulls/6790","id":50752655,"html_url":"https://github.com/dotnet/roslyn/pull/6790","diff_url":"https://github.com/dotnet/roslyn/pull/6790.diff","patch_url":"https://github.com/dotnet/roslyn/pull/6790.patch","issue_url":"https://api.github.com/repos/dotnet/roslyn/issues/6790","number":6790,"state":"open","locked":false,"title":"Improved SyntaxFactory for documentation comments (Issue #218)","user":{"login":"robinsedlaczek","id":2900224,"avatar_url":"https://avatars.githubusercontent.com/u/2900224?v=3","gravatar_id":"","url":"https://api.github.com/users/robinsedlaczek","html_url":"https://github.com/robinsedlaczek","followers_url":"https://api.github.com/users/robinsedlaczek/followers","following_url":"https://api.github.com/users/robinsedlaczek/following{/other_user}","gists_url":"https://api.github.com/users/robinsedlaczek/gists{/gist_id}","starred_url":"https://api.github.com/users/robinsedlaczek/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/robinsedlaczek/subscriptions","organizations_url":"https://api.github.com/users/robinsedlaczek/orgs","repos_url":"https://api.github.com/users/robinsedlaczek/repos","events_url":"https://api.github.com/users/robinsedlaczek/events{/privacy}","received_events_url":"https://api.github.com/users/robinsedlaczek/received_events","type":"User","site_admin":false},"body":"I've implemented the SyntaxFactory methods suggested in #218. Additionally, I added factory methods for the example and permission xml elements for documentation comments. And there are some tests for the new factory methods.","created_at":"2015-11-15T18:36:04Z","updated_at":"2015-12-09T18:46:28Z","closed_at":null,"merged_at":null,"merge_commit_sha":"b4a56fb33b4b64ca06270b3c6f704e65c8a1ee3a","assignee":null,"milestone":null,"commits_url":"https://api.github.com/repos/dotnet/roslyn/pulls/6790/commits","review_comments_url":"https://api.github.com/repos/dotnet/roslyn/pulls/6790/comments","review_comment_url":"https://api.github.com/repos/dotnet/roslyn/pulls/comments{/number}","comments_url":"https://api.github.com/repos/dotnet/roslyn/issues/6790/comments","statuses_url":"https://api.github.com/repos/dotnet/roslyn/statuses/95ea4dbcc6284f1c21ccedbed9b673ccedf34aa0","head":{"label":"robinsedlaczek:Issue-218","ref":"Issue-218","sha":"95ea4dbcc6284f1c21ccedbed9b673ccedf34aa0","user":{"login":"robinsedlaczek","id":2900224,"avatar_url":"https://avatars.githubusercontent.com/u/2900224?v=3","gravatar_id":"","url":"https://api.github.com/users/robinsedlaczek","html_url":"https://github.com/robinsedlaczek","followers_url":"https://api.github.com/users/robinsedlaczek/followers","following_url":"https://api.github.com/users/robinsedlaczek/following{/other_user}","gists_url":"https://api.github.com/users/robinsedlaczek/gists{/gist_id}","starred_url":"https://api.github.com/users/robinsedlaczek/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/robinsedlaczek/subscriptions","organizations_url":"https://api.github.com/users/robinsedlaczek/orgs","repos_url":"https://api.github.com/users/robinsedlaczek/repos","events_url":"https://api.github.com/users/robinsedlaczek/events{/privacy}","received_events_url":"https://api.github.com/users/robinsedlaczek/received_events","type":"User","site_admin":false},"repo":{"id":45308707,"name":"roslyn","full_name":"robinsedlaczek/roslyn","owner":{"login":"robinsedlaczek","id":2900224,"avatar_url":"https://avatars.githubusercontent.com/u/2900224?v=3","gravatar_id":"","url":"https://api.github.com/users/robinsedlaczek","html_url":"https://github.com/robinsedlaczek","followers_url":"https://api.github.com/users/robinsedlaczek/followers","following_url":"https://api.github.com/users/robinsedlaczek/following{/other_user}","gists_url":"https://api.github.com/users/robinsedlaczek/gists{/gist_id}","starred_url":"https://api.github.com/users/robinsedlaczek/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/robinsedlaczek/subscriptions","organizations_url":"https://api.github.com/users/robinsedlaczek/orgs","repos_url":"https://api.github.com/users/robinsedlaczek/repos","events_url":"https://api.github.com/users/robinsedlaczek/events{/privacy}","received_events_url":"https://api.github.com/users/robinsedlaczek/received_events","type":"User","site_admin":false},"private":false,"html_url":"https://github.com/robinsedlaczek/roslyn","description":"The .NET Compiler Platform (\"Roslyn\") provides open-source C# and Visual Basic compilers with rich code analysis APIs.","fork":true,"url":"https://api.github.com/repos/robinsedlaczek/roslyn","forks_url":"https://api.github.com/repos/robinsedlaczek/roslyn/forks","keys_url":"https://api.github.com/repos/robinsedlaczek/roslyn/keys{/key_id}","collaborators_url":"https://api.github.com/repos/robinsedlaczek/roslyn/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/robinsedlaczek/roslyn/teams","hooks_url":"https://api.github.com/repos/robinsedlaczek/roslyn/hooks","issue_events_url":"https://api.github.com/repos/robinsedlaczek/roslyn/issues/events{/number}","events_url":"https://api.github.com/repos/robinsedlaczek/roslyn/events","assignees_url":"https://api.github.com/repos/robinsedlaczek/roslyn/assignees{/user}","branches_url":"https://api.github.com/repos/robinsedlaczek/roslyn/branches{/branch}","tags_url":"https://api.github.com/repos/robinsedlaczek/roslyn/tags","blobs_url":"https://api.github.com/repos/robinsedlaczek/roslyn/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/robinsedlaczek/roslyn/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/robinsedlaczek/roslyn/git/refs{/sha}","trees_url":"https://api.github.com/repos/robinsedlaczek/roslyn/git/trees{/sha}","statuses_url":"https://api.github.com/repos/robinsedlaczek/roslyn/statuses/{sha}","languages_url":"https://api.github.com/repos/robinsedlaczek/roslyn/languages","stargazers_url":"https://api.github.com/repos/robinsedlaczek/roslyn/stargazers","contributors_url":"https://api.github.com/repos/robinsedlaczek/roslyn/contributors","subscribers_url":"https://api.github.com/repos/robinsedlaczek/roslyn/subscribers","subscription_url":"https://api.github.com/repos/robinsedlaczek/roslyn/subscription","commits_url":"https://api.github.com/repos/robinsedlaczek/roslyn/commits{/sha}","git_commits_url":"https://api.github.com/repos/robinsedlaczek/roslyn/git/commits{/sha}","comments_url":"https://api.github.com/repos/robinsedlaczek/roslyn/comments{/number}","issue_comment_url":"https://api.github.com/repos/robinsedlaczek/roslyn/issues/comments{/number}","contents_url":"https://api.github.com/repos/robinsedlaczek/roslyn/contents/{+path}","compare_url":"https://api.github.com/repos/robinsedlaczek/roslyn/compare/{base}...{head}","merges_url":"https://api.github.com/repos/robinsedlaczek/roslyn/merges","archive_url":"https://api.github.com/repos/robinsedlaczek/roslyn/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/robinsedlaczek/roslyn/downloads","issues_url":"https://api.github.com/repos/robinsedlaczek/roslyn/issues{/number}","pulls_url":"https://api.github.com/repos/robinsedlaczek/roslyn/pulls{/number}","milestones_url":"https://api.github.com/repos/robinsedlaczek/roslyn/milestones{/number}","notifications_url":"https://api.github.com/repos/robinsedlaczek/roslyn/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/robinsedlaczek/roslyn/labels{/name}","releases_url":"https://api.github.com/repos/robinsedlaczek/roslyn/releases{/id}","created_at":"2015-10-31T16:15:09Z","updated_at":"2015-10-31T16:15:54Z","pushed_at":"2015-12-09T07:24:04Z","git_url":"git://github.com/robinsedlaczek/roslyn.git","ssh_url":"git@github.com:robinsedlaczek/roslyn.git","clone_url":"https://github.com/robinsedlaczek/roslyn.git","svn_url":"https://github.com/robinsedlaczek/roslyn","homepage":"","size":121456,"stargazers_count":0,"watchers_count":0,"language":"C#","has_issues":false,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":0,"mirror_url":null,"open_issues_count":0,"forks":0,"open_issues":0,"watchers":0,"default_branch":"master"}},"base":{"label":"dotnet:master","ref":"master","sha":"9e6cb00a517358d3990981482a74e71785ddfa44","user":{"login":"dotnet","id":9141961,"avatar_url":"https://avatars.githubusercontent.com/u/9141961?v=3","gravatar_id":"","url":"https://api.github.com/users/dotnet","html_url":"https://github.com/dotnet","followers_url":"https://api.github.com/users/dotnet/followers","following_url":"https://api.github.com/users/dotnet/following{/other_user}","gists_url":"https://api.github.com/users/dotnet/gists{/gist_id}","starred_url":"https://api.github.com/users/dotnet/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/dotnet/subscriptions","organizations_url":"https://api.github.com/users/dotnet/orgs","repos_url":"https://api.github.com/users/dotnet/repos","events_url":"https://api.github.com/users/dotnet/events{/privacy}","received_events_url":"https://api.github.com/users/dotnet/received_events","type":"Organization","site_admin":false},"repo":{"id":29078997,"name":"roslyn","full_name":"dotnet/roslyn","owner":{"login":"dotnet","id":9141961,"avatar_url":"https://avatars.githubusercontent.com/u/9141961?v=3","gravatar_id":"","url":"https://api.github.com/users/dotnet","html_url":"https://github.com/dotnet","followers_url":"https://api.github.com/users/dotnet/followers","following_url":"https://api.github.com/users/dotnet/following{/other_user}","gists_url":"https://api.github.com/users/dotnet/gists{/gist_id}","starred_url":"https://api.github.com/users/dotnet/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/dotnet/subscriptions","organizations_url":"https://api.github.com/users/dotnet/orgs","repos_url":"https://api.github.com/users/dotnet/repos","events_url":"https://api.github.com/users/dotnet/events{/privacy}","received_events_url":"https://api.github.com/users/dotnet/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/dotnet/roslyn","description":"The .NET Compiler Platform (\"Roslyn\") provides open-source C# and Visual Basic compilers with rich code analysis APIs.","fork":false,"url":"https://api.github.com/repos/dotnet/roslyn","forks_url":"https://api.github.com/repos/dotnet/roslyn/forks","keys_url":"https://api.github.com/repos/dotnet/roslyn/keys{/key_id}","collaborators_url":"https://api.github.com/repos/dotnet/roslyn/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/dotnet/roslyn/teams","hooks_url":"https://api.github.com/repos/dotnet/roslyn/hooks","issue_events_url":"https://api.github.com/repos/dotnet/roslyn/issues/events{/number}","events_url":"https://api.github.com/repos/dotnet/roslyn/events","assignees_url":"https://api.github.com/repos/dotnet/roslyn/assignees{/user}","branches_url":"https://api.github.com/repos/dotnet/roslyn/branches{/branch}","tags_url":"https://api.github.com/repos/dotnet/roslyn/tags","blobs_url":"https://api.github.com/repos/dotnet/roslyn/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/dotnet/roslyn/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/dotnet/roslyn/git/refs{/sha}","trees_url":"https://api.github.com/repos/dotnet/roslyn/git/trees{/sha}","statuses_url":"https://api.github.com/repos/dotnet/roslyn/statuses/{sha}","languages_url":"https://api.github.com/repos/dotnet/roslyn/languages","stargazers_url":"https://api.github.com/repos/dotnet/roslyn/stargazers","contributors_url":"https://api.github.com/repos/dotnet/roslyn/contributors","subscribers_url":"https://api.github.com/repos/dotnet/roslyn/subscribers","subscription_url":"https://api.github.com/repos/dotnet/roslyn/subscription","commits_url":"https://api.github.com/repos/dotnet/roslyn/commits{/sha}","git_commits_url":"https://api.github.com/repos/dotnet/roslyn/git/commits{/sha}","comments_url":"https://api.github.com/repos/dotnet/roslyn/comments{/number}","issue_comment_url":"https://api.github.com/repos/dotnet/roslyn/issues/comments{/number}","contents_url":"https://api.github.com/repos/dotnet/roslyn/contents/{+path}","compare_url":"https://api.github.com/repos/dotnet/roslyn/compare/{base}...{head}","merges_url":"https://api.github.com/repos/dotnet/roslyn/merges","archive_url":"https://api.github.com/repos/dotnet/roslyn/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/dotnet/roslyn/downloads","issues_url":"https://api.github.com/repos/dotnet/roslyn/issues{/number}","pulls_url":"https://api.github.com/repos/dotnet/roslyn/pulls{/number}","milestones_url":"https://api.github.com/repos/dotnet/roslyn/milestones{/number}","notifications_url":"https://api.github.com/repos/dotnet/roslyn/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/dotnet/roslyn/labels{/name}","releases_url":"https://api.github.com/repos/dotnet/roslyn/releases{/id}","created_at":"2015-01-11T02:39:03Z","updated_at":"2015-12-09T18:34:40Z","pushed_at":"2015-12-09T18:37:48Z","git_url":"git://github.com/dotnet/roslyn.git","ssh_url":"git@github.com:dotnet/roslyn.git","clone_url":"https://github.com/dotnet/roslyn.git","svn_url":"https://github.com/dotnet/roslyn","homepage":"","size":143423,"stargazers_count":3952,"watchers_count":3952,"language":"C#","has_issues":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":969,"mirror_url":null,"open_issues_count":1780,"forks":969,"open_issues":1780,"watchers":3952,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/dotnet/roslyn/pulls/6790"},"html":{"href":"https://github.com/dotnet/roslyn/pull/6790"},"issue":{"href":"https://api.github.com/repos/dotnet/roslyn/issues/6790"},"comments":{"href":"https://api.github.com/repos/dotnet/roslyn/issues/6790/comments"},"review_comments":{"href":"https://api.github.com/repos/dotnet/roslyn/pulls/6790/comments"},"review_comment":{"href":"https://api.github.com/repos/dotnet/roslyn/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/dotnet/roslyn/pulls/6790/commits"},"statuses":{"href":"https://api.github.com/repos/dotnet/roslyn/statuses/95ea4dbcc6284f1c21ccedbed9b673ccedf34aa0"}}}}