{"action":"created","comment":{"url":"https://api.github.com/repos/dotnet/corefx/pulls/comments/177852402","pull_request_review_id":107803506,"id":177852402,"diff_hunk":"@@ -0,0 +1,225 @@\n+// Licensed to the .NET Foundation under one or more agreements.\n+// The .NET Foundation licenses this file to you under the MIT license.\n+// See the LICENSE file in the project root for more information.\n+\n+using System.Collections;\n+using System.Drawing;\n+using System.Drawing.Imaging;\n+using System.Globalization;\n+using Xunit;\n+\n+namespace System.ComponentModel.TypeConverterTests\n+{\n+    public class ImageFormatConverterTest\n+    {\n+        private readonly ImageFormat _imageFmt;\n+        private readonly ImageFormatConverter _imgFmtConv;\n+        private readonly ImageFormatConverter _imgFmtConvFrmTD;\n+        private readonly string _imageFmtStr;\n+\n+        public ImageFormatConverterTest()\n+        {\n+            _imageFmt = ImageFormat.Bmp;\n+            _imageFmtStr = _imageFmt.ToString();\n+\n+            _imgFmtConv = new ImageFormatConverter();\n+            _imgFmtConvFrmTD = (ImageFormatConverter)TypeDescriptor.GetConverter(_imageFmt);\n+        }\n+\n+        [ConditionalFact(Helpers.GdiplusIsAvailable)]\n+        public void TestCanConvertFrom()\n+        {\n+            Assert.True(_imgFmtConv.CanConvertFrom(typeof(string)), \"string (no context)\");\n+            Assert.True(_imgFmtConv.CanConvertFrom(null, typeof(string)), \"string\");\n+            Assert.False(_imgFmtConv.CanConvertFrom(null, typeof(ImageFormat)), \"ImageFormat\");\n+            Assert.False(_imgFmtConv.CanConvertFrom(null, typeof(Guid)), \"Guid\");\n+            Assert.False(_imgFmtConv.CanConvertFrom(null, typeof(object)), \"object\");\n+            Assert.False(_imgFmtConv.CanConvertFrom(null, typeof(int)), \"int\");\n+\n+            Assert.True(_imgFmtConvFrmTD.CanConvertFrom(typeof(string)), \"TD string (no context)\");\n+            Assert.True(_imgFmtConvFrmTD.CanConvertFrom(null, typeof(string)), \"TD string\");\n+            Assert.False(_imgFmtConvFrmTD.CanConvertFrom(null, typeof(ImageFormat)), \"TD ImageFormat\");\n+            Assert.False(_imgFmtConvFrmTD.CanConvertFrom(null, typeof(Guid)), \"TD Guid\");\n+            Assert.False(_imgFmtConvFrmTD.CanConvertFrom(null, typeof(object)), \"TD object\");\n+            Assert.False(_imgFmtConvFrmTD.CanConvertFrom(null, typeof(int)), \"TD int\");\n+        }\n+\n+        [ConditionalFact(Helpers.GdiplusIsAvailable)]\n+        public void TestCanConvertTo()\n+        {\n+            Assert.True(_imgFmtConv.CanConvertTo(typeof(string)), \"string (no context)\");\n+            Assert.True(_imgFmtConv.CanConvertTo(null, typeof(string)), \"string\");\n+            Assert.False(_imgFmtConv.CanConvertTo(null, typeof(ImageFormat)), \"ImageFormat\");\n+            Assert.False(_imgFmtConv.CanConvertTo(null, typeof(Guid)), \"Guid\");\n+            Assert.False(_imgFmtConv.CanConvertTo(null, typeof(object)), \"object\");\n+            Assert.False(_imgFmtConv.CanConvertTo(null, typeof(int)), \"int\");\n+\n+            Assert.True(_imgFmtConvFrmTD.CanConvertTo(typeof(string)), \"TD string (no context)\");\n+            Assert.True(_imgFmtConvFrmTD.CanConvertTo(null, typeof(string)), \"TD string\");\n+            Assert.False(_imgFmtConvFrmTD.CanConvertTo(null, typeof(ImageFormat)), \"TD ImageFormat\");\n+            Assert.False(_imgFmtConvFrmTD.CanConvertTo(null, typeof(Guid)), \"TD Guid\");\n+            Assert.False(_imgFmtConvFrmTD.CanConvertTo(null, typeof(object)), \"TD object\");\n+            Assert.False(_imgFmtConvFrmTD.CanConvertTo(null, typeof(int)), \"TD int\");\n+        }\n+\n+        [ConditionalFact(Helpers.GdiplusIsAvailable)]\n+        public void TestConvertFrom()\n+        {\n+            Assert.Equal(_imageFmt, (ImageFormat)_imgFmtConv.ConvertFrom(null, CultureInfo.InvariantCulture, ImageFormat.Bmp.ToString()));\n+\n+            Assert.Throws<NotSupportedException>(() => _imgFmtConv.ConvertFrom(\"System.Drawing.String\"));\n+            Assert.Throws<NotSupportedException>(() => _imgFmtConv.ConvertFrom(null, CultureInfo.InvariantCulture, \"System.Drawing.String\"));\n+            Assert.Throws<NotSupportedException>(() => _imgFmtConv.ConvertFrom(null, CultureInfo.InvariantCulture, ImageFormat.Bmp));\n+            Assert.Throws<NotSupportedException>(() => _imgFmtConv.ConvertFrom(null, CultureInfo.InvariantCulture, ImageFormat.Bmp.Guid));\n+            Assert.Throws<NotSupportedException>(() => _imgFmtConv.ConvertFrom(null, CultureInfo.InvariantCulture, new object()));\n+            Assert.Throws<NotSupportedException>(() => _imgFmtConv.ConvertFrom(null, CultureInfo.InvariantCulture, 10));\n+\n+            Assert.Equal(_imageFmt, (ImageFormat)_imgFmtConvFrmTD.ConvertFrom(null, CultureInfo.InvariantCulture, ImageFormat.Bmp.ToString()));\n+\n+            Assert.Throws<NotSupportedException>(() => _imgFmtConvFrmTD.ConvertFrom(\"System.Drawing.String\"));\n+            Assert.Throws<NotSupportedException>(() => _imgFmtConvFrmTD.ConvertFrom(null, CultureInfo.InvariantCulture, \"System.Drawing.String\"));\n+            Assert.Throws<NotSupportedException>(() => _imgFmtConvFrmTD.ConvertFrom(null, CultureInfo.InvariantCulture, ImageFormat.Bmp));\n+            Assert.Throws<NotSupportedException>(() => _imgFmtConvFrmTD.ConvertFrom(null, CultureInfo.InvariantCulture, ImageFormat.Bmp.Guid));\n+            Assert.Throws<NotSupportedException>(() => _imgFmtConvFrmTD.ConvertFrom(null, CultureInfo.InvariantCulture, new object()));\n+            Assert.Throws<NotSupportedException>(() => _imgFmtConvFrmTD.ConvertFrom(null, CultureInfo.InvariantCulture, 10));\n+        }\n+\n+        private ImageFormat ShortName(string imgFormatValue)\n+        {\n+            return (ImageFormat)_imgFmtConvFrmTD.ConvertFrom(null, CultureInfo.InvariantCulture, imgFormatValue);\n+        }\n+\n+        [ConditionalFact(Helpers.GdiplusIsAvailable)]\n+        public void ConvertFrom_ShortName()\n+        {\n+            Assert.Equal(ImageFormat.Bmp, ShortName(\"Bmp\"));\n+            Assert.Equal(ImageFormat.Emf, ShortName(\"Emf\"));\n+            Assert.Equal(ImageFormat.Exif, ShortName(\"Exif\"));\n+            Assert.Equal(ImageFormat.Gif, ShortName(\"Gif\"));\n+            Assert.Equal(ImageFormat.Tiff, ShortName(\"Tiff\"));\n+            Assert.Equal(ImageFormat.Png, ShortName(\"Png\"));\n+            Assert.Equal(ImageFormat.MemoryBmp, ShortName(\"MemoryBmp\"));\n+            Assert.Equal(ImageFormat.Icon, ShortName(\"Icon\"));\n+            Assert.Equal(ImageFormat.Jpeg, ShortName(\"Jpeg\"));\n+            Assert.Equal(ImageFormat.Wmf, ShortName(\"Wmf\"));\n+        }\n+\n+        private void LongName(ImageFormat iformat)\n+        {\n+            Assert.Equal(iformat, (ImageFormat)_imgFmtConvFrmTD.ConvertFrom(null, CultureInfo.InvariantCulture, iformat.ToString()));\n+        }\n+\n+        [ConditionalFact(Helpers.GdiplusIsAvailable)]\n+        public void ConvertFrom_LongName()\n+        {\n+            LongName(ImageFormat.Bmp);\n+            LongName(ImageFormat.Emf);\n+            LongName(ImageFormat.Exif);\n+            LongName(ImageFormat.Gif);\n+            LongName(ImageFormat.Tiff);\n+            LongName(ImageFormat.Png);\n+            LongName(ImageFormat.MemoryBmp);\n+            LongName(ImageFormat.Icon);\n+            LongName(ImageFormat.Jpeg);\n+            LongName(ImageFormat.Wmf);\n+        }\n+\n+        [ConditionalFact(Helpers.GdiplusIsAvailable)]\n+        public void TestConvertTo()","path":"src/System.ComponentModel.TypeConverter/tests/Drawing/ImageFormatConverterTests.cs","position":128,"original_position":128,"commit_id":"9dddfcee49f81cf64c76c584ad6b68533248ef52","original_commit_id":"9dddfcee49f81cf64c76c584ad6b68533248ef52","user":{"login":"safern","id":22899328,"avatar_url":"https://avatars1.githubusercontent.com/u/22899328?v=4","gravatar_id":"","url":"https://api.github.com/users/safern","html_url":"https://github.com/safern","followers_url":"https://api.github.com/users/safern/followers","following_url":"https://api.github.com/users/safern/following{/other_user}","gists_url":"https://api.github.com/users/safern/gists{/gist_id}","starred_url":"https://api.github.com/users/safern/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/safern/subscriptions","organizations_url":"https://api.github.com/users/safern/orgs","repos_url":"https://api.github.com/users/safern/repos","events_url":"https://api.github.com/users/safern/events{/privacy}","received_events_url":"https://api.github.com/users/safern/received_events","type":"User","site_admin":false},"body":"More descriptive test name?","created_at":"2018-03-28T18:45:17Z","updated_at":"2018-03-28T18:45:17Z","html_url":"https://github.com/dotnet/corefx/pull/28426#discussion_r177852402","pull_request_url":"https://api.github.com/repos/dotnet/corefx/pulls/28426","author_association":"MEMBER","_links":{"self":{"href":"https://api.github.com/repos/dotnet/corefx/pulls/comments/177852402"},"html":{"href":"https://github.com/dotnet/corefx/pull/28426#discussion_r177852402"},"pull_request":{"href":"https://api.github.com/repos/dotnet/corefx/pulls/28426"}}},"pull_request":{"url":"https://api.github.com/repos/dotnet/corefx/pulls/28426","id":177168234,"html_url":"https://github.com/dotnet/corefx/pull/28426","diff_url":"https://github.com/dotnet/corefx/pull/28426.diff","patch_url":"https://github.com/dotnet/corefx/pull/28426.patch","issue_url":"https://api.github.com/repos/dotnet/corefx/issues/28426","number":28426,"state":"open","locked":false,"title":"TypeConverters for System.Drawing","user":{"login":"satano","id":116335,"avatar_url":"https://avatars2.githubusercontent.com/u/116335?v=4","gravatar_id":"","url":"https://api.github.com/users/satano","html_url":"https://github.com/satano","followers_url":"https://api.github.com/users/satano/followers","following_url":"https://api.github.com/users/satano/following{/other_user}","gists_url":"https://api.github.com/users/satano/gists{/gist_id}","starred_url":"https://api.github.com/users/satano/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/satano/subscriptions","organizations_url":"https://api.github.com/users/satano/orgs","repos_url":"https://api.github.com/users/satano/repos","events_url":"https://api.github.com/users/satano/events{/privacy}","received_events_url":"https://api.github.com/users/satano/received_events","type":"User","site_admin":false},"body":"Closes #21129\r\n\r\nAdded converters `FontConverter`, `IconConverter`, `ImageConverter `and `ImageFormatConverter` and tests.\r\n\r\nWhat I changed against original files from Mono:\r\n\r\n- Changed variable and other names to suit coding style.\r\n- Used resource for `(none)` string and throwing exception using base `GetConvertFromException()`.\r\n- [ImageConverter](https://github.com/mono/mono/blob/master/mcs/class/System.Drawing/System.Drawing/ImageConverter.cs#L80) returned string `(none)` always, even if destination type was not string. Changed it only for string destination type.\r\n- In [Icon](https://github.com/mono/mono/blob/master/mcs/class/System.Drawing/System.Drawing/IconConverter.cs#L83) and [Image](https://github.com/mono/mono/blob/master/mcs/class/System.Drawing/System.Drawing/ImageConverter.cs#L86) converter they called `CanConvertTo` with a comment that destination is a `byte[]`. I changed it to simple type check.\r\n- Tests for exception with `try-catch` replaced with `Assert.Throws()`.\r\n- Tests `Assert.True(!...)` replaced with `Assert.False(...)`.\r\n- Cryptic messages (e.g. `\"CCF#9\"`) in assertions replaced with meaningful ones.\r\n- In the tests, there are `Assert.Equal()` checks. In the original files in Mono they had message (`Assert.AreEqual()`), so specific assertion could be found when test fails. In XUnit, this assertion does not have a message.","created_at":"2018-03-23T19:47:59Z","updated_at":"2018-03-28T18:45:17Z","closed_at":null,"merged_at":null,"merge_commit_sha":"c37d31b0e37ad13d299aa4913f2d7c3fc299d89a","assignee":{"login":"satano","id":116335,"avatar_url":"https://avatars2.githubusercontent.com/u/116335?v=4","gravatar_id":"","url":"https://api.github.com/users/satano","html_url":"https://github.com/satano","followers_url":"https://api.github.com/users/satano/followers","following_url":"https://api.github.com/users/satano/following{/other_user}","gists_url":"https://api.github.com/users/satano/gists{/gist_id}","starred_url":"https://api.github.com/users/satano/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/satano/subscriptions","organizations_url":"https://api.github.com/users/satano/orgs","repos_url":"https://api.github.com/users/satano/repos","events_url":"https://api.github.com/users/satano/events{/privacy}","received_events_url":"https://api.github.com/users/satano/received_events","type":"User","site_admin":false},"assignees":[{"login":"satano","id":116335,"avatar_url":"https://avatars2.githubusercontent.com/u/116335?v=4","gravatar_id":"","url":"https://api.github.com/users/satano","html_url":"https://github.com/satano","followers_url":"https://api.github.com/users/satano/followers","following_url":"https://api.github.com/users/satano/following{/other_user}","gists_url":"https://api.github.com/users/satano/gists{/gist_id}","starred_url":"https://api.github.com/users/satano/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/satano/subscriptions","organizations_url":"https://api.github.com/users/satano/orgs","repos_url":"https://api.github.com/users/satano/repos","events_url":"https://api.github.com/users/satano/events{/privacy}","received_events_url":"https://api.github.com/users/satano/received_events","type":"User","site_admin":false},{"login":"safern","id":22899328,"avatar_url":"https://avatars1.githubusercontent.com/u/22899328?v=4","gravatar_id":"","url":"https://api.github.com/users/safern","html_url":"https://github.com/safern","followers_url":"https://api.github.com/users/safern/followers","following_url":"https://api.github.com/users/safern/following{/other_user}","gists_url":"https://api.github.com/users/safern/gists{/gist_id}","starred_url":"https://api.github.com/users/safern/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/safern/subscriptions","organizations_url":"https://api.github.com/users/safern/orgs","repos_url":"https://api.github.com/users/safern/repos","events_url":"https://api.github.com/users/safern/events{/privacy}","received_events_url":"https://api.github.com/users/safern/received_events","type":"User","site_admin":false}],"requested_reviewers":[],"requested_teams":[],"labels":[{"id":268442183,"url":"https://api.github.com/repos/dotnet/corefx/labels/area-System.Drawing","name":"area-System.Drawing","color":"d4c5f9","default":false}],"milestone":null,"commits_url":"https://api.github.com/repos/dotnet/corefx/pulls/28426/commits","review_comments_url":"https://api.github.com/repos/dotnet/corefx/pulls/28426/comments","review_comment_url":"https://api.github.com/repos/dotnet/corefx/pulls/comments{/number}","comments_url":"https://api.github.com/repos/dotnet/corefx/issues/28426/comments","statuses_url":"https://api.github.com/repos/dotnet/corefx/statuses/9dddfcee49f81cf64c76c584ad6b68533248ef52","head":{"label":"satano:21129-SystemDrawingTypeConverters","ref":"21129-SystemDrawingTypeConverters","sha":"9dddfcee49f81cf64c76c584ad6b68533248ef52","user":{"login":"satano","id":116335,"avatar_url":"https://avatars2.githubusercontent.com/u/116335?v=4","gravatar_id":"","url":"https://api.github.com/users/satano","html_url":"https://github.com/satano","followers_url":"https://api.github.com/users/satano/followers","following_url":"https://api.github.com/users/satano/following{/other_user}","gists_url":"https://api.github.com/users/satano/gists{/gist_id}","starred_url":"https://api.github.com/users/satano/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/satano/subscriptions","organizations_url":"https://api.github.com/users/satano/orgs","repos_url":"https://api.github.com/users/satano/repos","events_url":"https://api.github.com/users/satano/events{/privacy}","received_events_url":"https://api.github.com/users/satano/received_events","type":"User","site_admin":false},"repo":{"id":106923281,"name":"corefx","full_name":"satano/corefx","owner":{"login":"satano","id":116335,"avatar_url":"https://avatars2.githubusercontent.com/u/116335?v=4","gravatar_id":"","url":"https://api.github.com/users/satano","html_url":"https://github.com/satano","followers_url":"https://api.github.com/users/satano/followers","following_url":"https://api.github.com/users/satano/following{/other_user}","gists_url":"https://api.github.com/users/satano/gists{/gist_id}","starred_url":"https://api.github.com/users/satano/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/satano/subscriptions","organizations_url":"https://api.github.com/users/satano/orgs","repos_url":"https://api.github.com/users/satano/repos","events_url":"https://api.github.com/users/satano/events{/privacy}","received_events_url":"https://api.github.com/users/satano/received_events","type":"User","site_admin":false},"private":false,"html_url":"https://github.com/satano/corefx","description":"This repo contains the .NET Core foundational libraries, called CoreFX. It includes classes for collections, file systems, console, XML, async and many others. We welcome contributions.","fork":true,"url":"https://api.github.com/repos/satano/corefx","forks_url":"https://api.github.com/repos/satano/corefx/forks","keys_url":"https://api.github.com/repos/satano/corefx/keys{/key_id}","collaborators_url":"https://api.github.com/repos/satano/corefx/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/satano/corefx/teams","hooks_url":"https://api.github.com/repos/satano/corefx/hooks","issue_events_url":"https://api.github.com/repos/satano/corefx/issues/events{/number}","events_url":"https://api.github.com/repos/satano/corefx/events","assignees_url":"https://api.github.com/repos/satano/corefx/assignees{/user}","branches_url":"https://api.github.com/repos/satano/corefx/branches{/branch}","tags_url":"https://api.github.com/repos/satano/corefx/tags","blobs_url":"https://api.github.com/repos/satano/corefx/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/satano/corefx/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/satano/corefx/git/refs{/sha}","trees_url":"https://api.github.com/repos/satano/corefx/git/trees{/sha}","statuses_url":"https://api.github.com/repos/satano/corefx/statuses/{sha}","languages_url":"https://api.github.com/repos/satano/corefx/languages","stargazers_url":"https://api.github.com/repos/satano/corefx/stargazers","contributors_url":"https://api.github.com/repos/satano/corefx/contributors","subscribers_url":"https://api.github.com/repos/satano/corefx/subscribers","subscription_url":"https://api.github.com/repos/satano/corefx/subscription","commits_url":"https://api.github.com/repos/satano/corefx/commits{/sha}","git_commits_url":"https://api.github.com/repos/satano/corefx/git/commits{/sha}","comments_url":"https://api.github.com/repos/satano/corefx/comments{/number}","issue_comment_url":"https://api.github.com/repos/satano/corefx/issues/comments{/number}","contents_url":"https://api.github.com/repos/satano/corefx/contents/{+path}","compare_url":"https://api.github.com/repos/satano/corefx/compare/{base}...{head}","merges_url":"https://api.github.com/repos/satano/corefx/merges","archive_url":"https://api.github.com/repos/satano/corefx/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/satano/corefx/downloads","issues_url":"https://api.github.com/repos/satano/corefx/issues{/number}","pulls_url":"https://api.github.com/repos/satano/corefx/pulls{/number}","milestones_url":"https://api.github.com/repos/satano/corefx/milestones{/number}","notifications_url":"https://api.github.com/repos/satano/corefx/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/satano/corefx/labels{/name}","releases_url":"https://api.github.com/repos/satano/corefx/releases{/id}","deployments_url":"https://api.github.com/repos/satano/corefx/deployments","created_at":"2017-10-14T11:44:12Z","updated_at":"2018-03-19T19:47:28Z","pushed_at":"2018-03-28T08:00:24Z","git_url":"git://github.com/satano/corefx.git","ssh_url":"git@github.com:satano/corefx.git","clone_url":"https://github.com/satano/corefx.git","svn_url":"https://github.com/satano/corefx","homepage":"https://github.com/dotnet/core","size":174264,"stargazers_count":0,"watchers_count":0,"language":"C#","has_issues":false,"has_projects":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":0,"mirror_url":null,"archived":false,"open_issues_count":0,"license":null,"forks":0,"open_issues":0,"watchers":0,"default_branch":"master"}},"base":{"label":"dotnet:master","ref":"master","sha":"051f53b874ad7eb16c817d72c7ee8aa5a4fa1c79","user":{"login":"dotnet","id":9141961,"avatar_url":"https://avatars0.githubusercontent.com/u/9141961?v=4","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":26295345,"name":"corefx","full_name":"dotnet/corefx","owner":{"login":"dotnet","id":9141961,"avatar_url":"https://avatars0.githubusercontent.com/u/9141961?v=4","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/corefx","description":"This repo contains the .NET Core foundational libraries, called CoreFX. It includes classes for collections, file systems, console, XML, async and many others. We welcome contributions.","fork":false,"url":"https://api.github.com/repos/dotnet/corefx","forks_url":"https://api.github.com/repos/dotnet/corefx/forks","keys_url":"https://api.github.com/repos/dotnet/corefx/keys{/key_id}","collaborators_url":"https://api.github.com/repos/dotnet/corefx/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/dotnet/corefx/teams","hooks_url":"https://api.github.com/repos/dotnet/corefx/hooks","issue_events_url":"https://api.github.com/repos/dotnet/corefx/issues/events{/number}","events_url":"https://api.github.com/repos/dotnet/corefx/events","assignees_url":"https://api.github.com/repos/dotnet/corefx/assignees{/user}","branches_url":"https://api.github.com/repos/dotnet/corefx/branches{/branch}","tags_url":"https://api.github.com/repos/dotnet/corefx/tags","blobs_url":"https://api.github.com/repos/dotnet/corefx/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/dotnet/corefx/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/dotnet/corefx/git/refs{/sha}","trees_url":"https://api.github.com/repos/dotnet/corefx/git/trees{/sha}","statuses_url":"https://api.github.com/repos/dotnet/corefx/statuses/{sha}","languages_url":"https://api.github.com/repos/dotnet/corefx/languages","stargazers_url":"https://api.github.com/repos/dotnet/corefx/stargazers","contributors_url":"https://api.github.com/repos/dotnet/corefx/contributors","subscribers_url":"https://api.github.com/repos/dotnet/corefx/subscribers","subscription_url":"https://api.github.com/repos/dotnet/corefx/subscription","commits_url":"https://api.github.com/repos/dotnet/corefx/commits{/sha}","git_commits_url":"https://api.github.com/repos/dotnet/corefx/git/commits{/sha}","comments_url":"https://api.github.com/repos/dotnet/corefx/comments{/number}","issue_comment_url":"https://api.github.com/repos/dotnet/corefx/issues/comments{/number}","contents_url":"https://api.github.com/repos/dotnet/corefx/contents/{+path}","compare_url":"https://api.github.com/repos/dotnet/corefx/compare/{base}...{head}","merges_url":"https://api.github.com/repos/dotnet/corefx/merges","archive_url":"https://api.github.com/repos/dotnet/corefx/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/dotnet/corefx/downloads","issues_url":"https://api.github.com/repos/dotnet/corefx/issues{/number}","pulls_url":"https://api.github.com/repos/dotnet/corefx/pulls{/number}","milestones_url":"https://api.github.com/repos/dotnet/corefx/milestones{/number}","notifications_url":"https://api.github.com/repos/dotnet/corefx/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/dotnet/corefx/labels{/name}","releases_url":"https://api.github.com/repos/dotnet/corefx/releases{/id}","deployments_url":"https://api.github.com/repos/dotnet/corefx/deployments","created_at":"2014-11-06T23:42:48Z","updated_at":"2018-03-28T18:25:35Z","pushed_at":"2018-03-28T18:25:23Z","git_url":"git://github.com/dotnet/corefx.git","ssh_url":"git@github.com:dotnet/corefx.git","clone_url":"https://github.com/dotnet/corefx.git","svn_url":"https://github.com/dotnet/corefx","homepage":"https://github.com/dotnet/core","size":175648,"stargazers_count":13638,"watchers_count":13638,"language":"C#","has_issues":true,"has_projects":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":3898,"mirror_url":null,"archived":false,"open_issues_count":2190,"license":{"key":"other","name":"Other","spdx_id":null,"url":null},"forks":3898,"open_issues":2190,"watchers":13638,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/dotnet/corefx/pulls/28426"},"html":{"href":"https://github.com/dotnet/corefx/pull/28426"},"issue":{"href":"https://api.github.com/repos/dotnet/corefx/issues/28426"},"comments":{"href":"https://api.github.com/repos/dotnet/corefx/issues/28426/comments"},"review_comments":{"href":"https://api.github.com/repos/dotnet/corefx/pulls/28426/comments"},"review_comment":{"href":"https://api.github.com/repos/dotnet/corefx/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/dotnet/corefx/pulls/28426/commits"},"statuses":{"href":"https://api.github.com/repos/dotnet/corefx/statuses/9dddfcee49f81cf64c76c584ad6b68533248ef52"}},"author_association":"COLLABORATOR"}}
{"actor":{"display_login":"safern"}}