{"action":"created","comment":{"url":"https://api.github.com/repos/dotnet/corefx/pulls/comments/91844483","pull_request_review_id":12356793,"id":91844483,"diff_hunk":"@@ -19,8 +19,28 @@ public static IEnumerable<TSource> Intersect<TSource>(this IEnumerable<TSource>\n             {\n                 throw Error.ArgumentNull(nameof(second));\n             }\n+           \n+            IEnumerable<TSource> big = null;\n+            IEnumerable<TSource> small = null;\n \n-            return IntersectIterator(first, second, null);\n+            if (first.Count() > second.Count())\n+            {\n+                big = first.Distinct();\n+                small = second.Distinct();\n+            }\n+            else\n+            {\n+                big = second.Distinct();\n+                small = first.Distinct();\n+            }\n+\n+            foreach (TSource element in big)\n+            {\n+                if (small.Contains(element))","path":"src/System.Linq/src/System/Linq/Intersect.cs","position":22,"original_position":22,"commit_id":"3258fbc3cdba948ec38de01f0c17e232e39721a8","original_commit_id":"3258fbc3cdba948ec38de01f0c17e232e39721a8","user":{"login":"JonHanna","id":1253369,"avatar_url":"https://avatars.githubusercontent.com/u/1253369?v=3","gravatar_id":"","url":"https://api.github.com/users/JonHanna","html_url":"https://github.com/JonHanna","followers_url":"https://api.github.com/users/JonHanna/followers","following_url":"https://api.github.com/users/JonHanna/following{/other_user}","gists_url":"https://api.github.com/users/JonHanna/gists{/gist_id}","starred_url":"https://api.github.com/users/JonHanna/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/JonHanna/subscriptions","organizations_url":"https://api.github.com/users/JonHanna/orgs","repos_url":"https://api.github.com/users/JonHanna/repos","events_url":"https://api.github.com/users/JonHanna/events{/privacy}","received_events_url":"https://api.github.com/users/JonHanna/received_events","type":"User","site_admin":false},"body":"I mean that `first` and/or `second` could be yielding from the results of a database or web service, and this change means instead of doing so once, it may do so multiple times. ","created_at":"2016-12-10T23:30:57Z","updated_at":"2016-12-10T23:30:57Z","html_url":"https://github.com/dotnet/corefx/pull/14418#discussion_r91844483","pull_request_url":"https://api.github.com/repos/dotnet/corefx/pulls/14418","_links":{"self":{"href":"https://api.github.com/repos/dotnet/corefx/pulls/comments/91844483"},"html":{"href":"https://github.com/dotnet/corefx/pull/14418#discussion_r91844483"},"pull_request":{"href":"https://api.github.com/repos/dotnet/corefx/pulls/14418"}}},"pull_request":{"url":"https://api.github.com/repos/dotnet/corefx/pulls/14418","id":97440048,"html_url":"https://github.com/dotnet/corefx/pull/14418","diff_url":"https://github.com/dotnet/corefx/pull/14418.diff","patch_url":"https://github.com/dotnet/corefx/pull/14418.patch","issue_url":"https://api.github.com/repos/dotnet/corefx/issues/14418","number":14418,"state":"open","locked":false,"title":"Improving System.Linq.Intersect with no comparer.","user":{"login":"varocarbas","id":4943723,"avatar_url":"https://avatars.githubusercontent.com/u/4943723?v=3","gravatar_id":"","url":"https://api.github.com/users/varocarbas","html_url":"https://github.com/varocarbas","followers_url":"https://api.github.com/users/varocarbas/followers","following_url":"https://api.github.com/users/varocarbas/following{/other_user}","gists_url":"https://api.github.com/users/varocarbas/gists{/gist_id}","starred_url":"https://api.github.com/users/varocarbas/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/varocarbas/subscriptions","organizations_url":"https://api.github.com/users/varocarbas/orgs","repos_url":"https://api.github.com/users/varocarbas/repos","events_url":"https://api.github.com/users/varocarbas/events{/privacy}","received_events_url":"https://api.github.com/users/varocarbas/received_events","type":"User","site_admin":false},"body":"The `Intersect` overload not taking a `IEqualityComparer<TSource> comparer` argument is unnecessarily slow because of calling `IntersectIterator`, whose algorithm is mostly meant to deal with a non-null `comparer`. \r\n\r\nThe proposed modification relies on `Contains` and shows a noticeable performance improvement. Below these lines I am including a simplistic testing code where, under my specific conditions, `Intersect2` (i.e., the proposed modification) is systematically 40% quicker.\r\n\r\n```C#\r\nusing System;\r\nusing System.Collections.Generic;\r\nusing System.Diagnostics;\r\nusing System.Linq;\r\n\r\nnamespace TestIntersect\r\n{\r\n    static class Program\r\n    {\r\n        static void Main(string[] args)\r\n        {\r\n            int count = 0;\r\n            int maxCount = 5000000;\r\n\r\n            List<string> first = new List<string>()\r\n            {\r\n                \"abcd\", \"afasdrfaseaf eafafseasfeafasf\", \"123456789\", \"iiiiiiiii\"\r\n            };\r\n            List<string> second = new List<string>()\r\n            {\r\n                \"abcd\", \"123456789\"\r\n            };\r\n\r\n            Stopwatch sw = new Stopwatch();\r\n            sw.Start();\r\n\r\n            while (count < maxCount)\r\n            {\r\n                count++;\r\n                Intersect(first, second);\r\n                //Intersect2(first, second); \r\n            }\r\n            sw.Stop();\r\n\r\n            Console.WriteLine(sw.ElapsedMilliseconds.ToString());\r\n            Console.ReadLine();\r\n        }\r\n\r\n        public static IEnumerable<TSource> Intersect<TSource>(this IEnumerable<TSource> first, IEnumerable<TSource> second)\r\n        {\r\n            if (first == null)\r\n            {\r\n                throw new Exception();\r\n            }\r\n\r\n            if (second == null)\r\n            {\r\n                throw new Exception();\r\n            }\r\n\r\n            return IntersectIterator(first, second, null);\r\n        }\r\n\r\n        public static IEnumerable<TSource> Intersect2<TSource>(this IEnumerable<TSource> first, IEnumerable<TSource> second)\r\n        {\r\n            if (first == null)\r\n            {\r\n                throw new Exception();\r\n            }\r\n\r\n            if (second == null)\r\n            {\r\n                throw new Exception();\r\n            }\r\n\r\n            IEnumerable<TSource> big = null;\r\n            IEnumerable<TSource> small = null;\r\n\r\n            if (first.Count() > second.Count())\r\n            {\r\n                big = first.Distinct();\r\n                small = second.Distinct();\r\n            }\r\n            else\r\n            {\r\n                big = second.Distinct();\r\n                small = first.Distinct();\r\n            }\r\n\r\n            foreach (TSource element in big)\r\n            {\r\n                if (small.Contains(element))\r\n                {\r\n                    yield return element;\r\n                }\r\n            }\r\n        }\r\n\r\n        private static IEnumerable<TSource> IntersectIterator<TSource>(IEnumerable<TSource> first, IEnumerable<TSource> second, IEqualityComparer<TSource> comparer)\r\n        {\r\n            Set<TSource> set = new Set<TSource>(comparer);\r\n            foreach (TSource element in second)\r\n            {\r\n                set.Add(element);\r\n            }\r\n\r\n            foreach (TSource element in first)\r\n            {\r\n                if (set.Remove(element))\r\n                {\r\n                    yield return element;\r\n                }\r\n            }\r\n        }\r\n    }\r\n\r\n    internal sealed class Set<TElement>\r\n    {\r\n        private readonly IEqualityComparer<TElement> _comparer;\r\n        private int[] _buckets;\r\n        private Slot[] _slots;\r\n        private int _count;\r\n\r\n        public Set(IEqualityComparer<TElement> comparer)\r\n        {\r\n            _comparer = comparer ?? EqualityComparer<TElement>.Default;\r\n            _buckets = new int[7];\r\n            _slots = new Slot[7];\r\n        }\r\n\r\n        // If value is not in set, add it and return true; otherwise return false\r\n        public bool Add(TElement value)\r\n        {\r\n            int hashCode = InternalGetHashCode(value);\r\n            for (int i = _buckets[hashCode % _buckets.Length] - 1; i >= 0; i = _slots[i]._next)\r\n            {\r\n                if (_slots[i]._hashCode == hashCode && _comparer.Equals(_slots[i]._value, value))\r\n                {\r\n                    return false;\r\n                }\r\n            }\r\n\r\n            if (_count == _slots.Length)\r\n            {\r\n                Resize();\r\n            }\r\n\r\n            int index = _count;\r\n            _count++;\r\n            int bucket = hashCode % _buckets.Length;\r\n            _slots[index]._hashCode = hashCode;\r\n            _slots[index]._value = value;\r\n            _slots[index]._next = _buckets[bucket] - 1;\r\n            _buckets[bucket] = index + 1;\r\n            return true;\r\n        }\r\n\r\n        // If value is in set, remove it and return true; otherwise return false\r\n        public bool Remove(TElement value)\r\n        {\r\n            int hashCode = InternalGetHashCode(value);\r\n            int bucket = hashCode % _buckets.Length;\r\n            int last = -1;\r\n            for (int i = _buckets[bucket] - 1; i >= 0; last = i, i = _slots[i]._next)\r\n            {\r\n                if (_slots[i]._hashCode == hashCode && _comparer.Equals(_slots[i]._value, value))\r\n                {\r\n                    if (last < 0)\r\n                    {\r\n                        _buckets[bucket] = _slots[i]._next + 1;\r\n                    }\r\n                    else\r\n                    {\r\n                        _slots[last]._next = _slots[i]._next;\r\n                    }\r\n\r\n                    _slots[i]._hashCode = -1;\r\n                    _slots[i]._value = default(TElement);\r\n                    _slots[i]._next = -1;\r\n                    return true;\r\n                }\r\n            }\r\n\r\n            return false;\r\n        }\r\n\r\n        private void Resize()\r\n        {\r\n            int newSize = checked((_count * 2) + 1);\r\n            int[] newBuckets = new int[newSize];\r\n            Slot[] newSlots = new Slot[newSize];\r\n            Array.Copy(_slots, 0, newSlots, 0, _count);\r\n            for (int i = 0; i < _count; i++)\r\n            {\r\n                int bucket = newSlots[i]._hashCode % newSize;\r\n                newSlots[i]._next = newBuckets[bucket] - 1;\r\n                newBuckets[bucket] = i + 1;\r\n            }\r\n\r\n            _buckets = newBuckets;\r\n            _slots = newSlots;\r\n        }\r\n\r\n        internal TElement[] ToArray()\r\n        {\r\n            TElement[] array = new TElement[_count];\r\n            for (int i = 0; i != array.Length; ++i)\r\n            {\r\n                array[i] = _slots[i]._value;\r\n            }\r\n\r\n            return array;\r\n        }\r\n\r\n        internal List<TElement> ToList()\r\n        {\r\n            int count = _count;\r\n            List<TElement> list = new List<TElement>(count);\r\n            for (int i = 0; i != count; ++i)\r\n            {\r\n                list.Add(_slots[i]._value);\r\n            }\r\n\r\n            return list;\r\n        }\r\n\r\n        internal int Count\r\n        {\r\n            get { return _count; }\r\n        }\r\n\r\n        internal int InternalGetHashCode(TElement value)\r\n        {\r\n            // Handle comparer implementations that throw when passed null\r\n            return (value == null) ? 0 : _comparer.GetHashCode(value) & 0x7FFFFFFF;\r\n        }\r\n\r\n        internal struct Slot\r\n        {\r\n            internal int _hashCode;\r\n            internal int _next;\r\n            internal TElement _value;\r\n        }\r\n    }\r\n}\r\n```\r\n","created_at":"2016-12-10T22:17:13Z","updated_at":"2016-12-10T23:30:57Z","closed_at":null,"merged_at":null,"merge_commit_sha":"7838546f19fb8173ec77f29e0af64f5a10eea853","assignee":null,"assignees":[],"milestone":null,"commits_url":"https://api.github.com/repos/dotnet/corefx/pulls/14418/commits","review_comments_url":"https://api.github.com/repos/dotnet/corefx/pulls/14418/comments","review_comment_url":"https://api.github.com/repos/dotnet/corefx/pulls/comments{/number}","comments_url":"https://api.github.com/repos/dotnet/corefx/issues/14418/comments","statuses_url":"https://api.github.com/repos/dotnet/corefx/statuses/3258fbc3cdba948ec38de01f0c17e232e39721a8","head":{"label":"varocarbas:patch-1","ref":"patch-1","sha":"3258fbc3cdba948ec38de01f0c17e232e39721a8","user":{"login":"varocarbas","id":4943723,"avatar_url":"https://avatars.githubusercontent.com/u/4943723?v=3","gravatar_id":"","url":"https://api.github.com/users/varocarbas","html_url":"https://github.com/varocarbas","followers_url":"https://api.github.com/users/varocarbas/followers","following_url":"https://api.github.com/users/varocarbas/following{/other_user}","gists_url":"https://api.github.com/users/varocarbas/gists{/gist_id}","starred_url":"https://api.github.com/users/varocarbas/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/varocarbas/subscriptions","organizations_url":"https://api.github.com/users/varocarbas/orgs","repos_url":"https://api.github.com/users/varocarbas/repos","events_url":"https://api.github.com/users/varocarbas/events{/privacy}","received_events_url":"https://api.github.com/users/varocarbas/received_events","type":"User","site_admin":false},"repo":{"id":52083015,"name":"corefx","full_name":"varocarbas/corefx","owner":{"login":"varocarbas","id":4943723,"avatar_url":"https://avatars.githubusercontent.com/u/4943723?v=3","gravatar_id":"","url":"https://api.github.com/users/varocarbas","html_url":"https://github.com/varocarbas","followers_url":"https://api.github.com/users/varocarbas/followers","following_url":"https://api.github.com/users/varocarbas/following{/other_user}","gists_url":"https://api.github.com/users/varocarbas/gists{/gist_id}","starred_url":"https://api.github.com/users/varocarbas/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/varocarbas/subscriptions","organizations_url":"https://api.github.com/users/varocarbas/orgs","repos_url":"https://api.github.com/users/varocarbas/repos","events_url":"https://api.github.com/users/varocarbas/events{/privacy}","received_events_url":"https://api.github.com/users/varocarbas/received_events","type":"User","site_admin":false},"private":false,"html_url":"https://github.com/varocarbas/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.","fork":true,"url":"https://api.github.com/repos/varocarbas/corefx","forks_url":"https://api.github.com/repos/varocarbas/corefx/forks","keys_url":"https://api.github.com/repos/varocarbas/corefx/keys{/key_id}","collaborators_url":"https://api.github.com/repos/varocarbas/corefx/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/varocarbas/corefx/teams","hooks_url":"https://api.github.com/repos/varocarbas/corefx/hooks","issue_events_url":"https://api.github.com/repos/varocarbas/corefx/issues/events{/number}","events_url":"https://api.github.com/repos/varocarbas/corefx/events","assignees_url":"https://api.github.com/repos/varocarbas/corefx/assignees{/user}","branches_url":"https://api.github.com/repos/varocarbas/corefx/branches{/branch}","tags_url":"https://api.github.com/repos/varocarbas/corefx/tags","blobs_url":"https://api.github.com/repos/varocarbas/corefx/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/varocarbas/corefx/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/varocarbas/corefx/git/refs{/sha}","trees_url":"https://api.github.com/repos/varocarbas/corefx/git/trees{/sha}","statuses_url":"https://api.github.com/repos/varocarbas/corefx/statuses/{sha}","languages_url":"https://api.github.com/repos/varocarbas/corefx/languages","stargazers_url":"https://api.github.com/repos/varocarbas/corefx/stargazers","contributors_url":"https://api.github.com/repos/varocarbas/corefx/contributors","subscribers_url":"https://api.github.com/repos/varocarbas/corefx/subscribers","subscription_url":"https://api.github.com/repos/varocarbas/corefx/subscription","commits_url":"https://api.github.com/repos/varocarbas/corefx/commits{/sha}","git_commits_url":"https://api.github.com/repos/varocarbas/corefx/git/commits{/sha}","comments_url":"https://api.github.com/repos/varocarbas/corefx/comments{/number}","issue_comment_url":"https://api.github.com/repos/varocarbas/corefx/issues/comments{/number}","contents_url":"https://api.github.com/repos/varocarbas/corefx/contents/{+path}","compare_url":"https://api.github.com/repos/varocarbas/corefx/compare/{base}...{head}","merges_url":"https://api.github.com/repos/varocarbas/corefx/merges","archive_url":"https://api.github.com/repos/varocarbas/corefx/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/varocarbas/corefx/downloads","issues_url":"https://api.github.com/repos/varocarbas/corefx/issues{/number}","pulls_url":"https://api.github.com/repos/varocarbas/corefx/pulls{/number}","milestones_url":"https://api.github.com/repos/varocarbas/corefx/milestones{/number}","notifications_url":"https://api.github.com/repos/varocarbas/corefx/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/varocarbas/corefx/labels{/name}","releases_url":"https://api.github.com/repos/varocarbas/corefx/releases{/id}","deployments_url":"https://api.github.com/repos/varocarbas/corefx/deployments","created_at":"2016-02-19T11:20:03Z","updated_at":"2016-02-19T11:20:28Z","pushed_at":"2016-12-10T23:14:26Z","git_url":"git://github.com/varocarbas/corefx.git","ssh_url":"git@github.com:varocarbas/corefx.git","clone_url":"https://github.com/varocarbas/corefx.git","svn_url":"https://github.com/varocarbas/corefx","homepage":"http://dotnet.github.io/","size":118496,"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":"3a37c1d174495ba3adf02c3e1d0f5a7ede46a789","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":26295345,"name":"corefx","full_name":"dotnet/corefx","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/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.","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":"2016-12-09T18:58:42Z","pushed_at":"2016-12-10T23:14:26Z","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://docs.microsoft.com/dotnet/","size":170724,"stargazers_count":10928,"watchers_count":10928,"language":"C#","has_issues":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":2793,"mirror_url":null,"open_issues_count":1294,"forks":2793,"open_issues":1294,"watchers":10928,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/dotnet/corefx/pulls/14418"},"html":{"href":"https://github.com/dotnet/corefx/pull/14418"},"issue":{"href":"https://api.github.com/repos/dotnet/corefx/issues/14418"},"comments":{"href":"https://api.github.com/repos/dotnet/corefx/issues/14418/comments"},"review_comments":{"href":"https://api.github.com/repos/dotnet/corefx/pulls/14418/comments"},"review_comment":{"href":"https://api.github.com/repos/dotnet/corefx/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/dotnet/corefx/pulls/14418/commits"},"statuses":{"href":"https://api.github.com/repos/dotnet/corefx/statuses/3258fbc3cdba948ec38de01f0c17e232e39721a8"}}}}
{"actor":{"display_login":"JonHanna"}}