{"action":"created","comment":{"url":"https://api.github.com/repos/Reactive-Extensions/Rx.NET/pulls/comments/74893090","id":74893090,"diff_hunk":"@@ -17,53 +19,111 @@ public static IAsyncEnumerable<TSource> DefaultIfEmpty<TSource>(this IAsyncEnume\n             if (source == null)\n                 throw new ArgumentNullException(nameof(source));\n \n-            return CreateEnumerable(\n-                () =>\n-                {\n-                    var done = false;\n-                    var hasElements = false;\n-                    var e = source.GetEnumerator();\n-                    var current = default(TSource);\n-\n-                    var cts = new CancellationTokenDisposable();\n-                    var d = Disposable.Create(cts, e);\n-\n-                    var f = default(Func<CancellationToken, Task<bool>>);\n-                    f = async ct =>\n-                        {\n-                            if (done)\n-                                return false;\n-                            if (await e.MoveNext(ct)\n-                                       .ConfigureAwait(false))\n-                            {\n-                                hasElements = true;\n-                                current = e.Current;\n-                                return true;\n-                            }\n-                            done = true;\n-                            if (!hasElements)\n-                            {\n-                                current = defaultValue;\n-                                return true;\n-                            }\n-                            return false;\n-                        };\n-\n-                    return CreateEnumerator(\n-                        f,\n-                        () => current,\n-                        d.Dispose,\n-                        e\n-                    );\n-                });\n+            return new DefaultIfEmptyAsyncIterator<TSource>(source, defaultValue);\n         }\n \n         public static IAsyncEnumerable<TSource> DefaultIfEmpty<TSource>(this IAsyncEnumerable<TSource> source)\n         {\n             if (source == null)\n                 throw new ArgumentNullException(nameof(source));\n \n-            return source.DefaultIfEmpty(default(TSource));\n+            return DefaultIfEmpty(source, default(TSource));\n+        }\n+\n+        private sealed class DefaultIfEmptyAsyncIterator<TSource> : AsyncIterator<TSource>, IIListProvider<TSource>\n+        {\n+            private readonly IAsyncEnumerable<TSource> source;\n+            private readonly TSource defaultValue;\n+            private IAsyncEnumerator<TSource> enumerator;\n+\n+            public DefaultIfEmptyAsyncIterator(IAsyncEnumerable<TSource> source, TSource defaultValue)\n+            {\n+                this.source = source;\n+                this.defaultValue = defaultValue;\n+                Debug.Assert(source != null);\n+            }\n+\n+            public override AsyncIterator<TSource> Clone()\n+            {\n+                return new DefaultIfEmptyAsyncIterator<TSource>(source, defaultValue);\n+            }\n+\n+            public override void Dispose()\n+            {\n+                if (enumerator != null)\n+                {\n+                    enumerator.Dispose();\n+                    enumerator = null;\n+                }\n+\n+                base.Dispose();\n+            }\n+\n+            protected override async Task<bool> MoveNextCore(CancellationToken cancellationToken)\n+            {\n+                switch (state)\n+                {\n+                    case AsyncIteratorState.Allocated:\n+                        enumerator = source.GetEnumerator();\n+                        if (await enumerator.MoveNext(cancellationToken)\n+                                            .ConfigureAwait(false))\n+                        {\n+                            current = enumerator.Current;\n+                            state = AsyncIteratorState.Iterating;\n+                        }\n+                        else\n+                        {\n+                            current = defaultValue;\n+                            state = AsyncIteratorState.Disposed; \n+                        }\n+                        return true;\n+\n+                    case AsyncIteratorState.Iterating:\n+                        if (await enumerator.MoveNext(cancellationToken)\n+                                            .ConfigureAwait(false))\n+                        {\n+                            current = enumerator.Current;\n+                            return true;\n+                        }\n+                        break;\n+                }\n+\n+                Dispose();\n+                return false;\n+            }\n+\n+            public async Task<TSource[]> ToArrayAsync(CancellationToken cancellationToken)\n+            {\n+                var array = await source.ToArray(cancellationToken).ConfigureAwait(false);\n+                return array.Length == 0 ? new[] { defaultValue } : array;\n+            }\n+\n+            public async Task<List<TSource>> ToListAsync(CancellationToken cancellationToken)\n+            {\n+                var list = await source.ToList(cancellationToken).ConfigureAwait(false);\n+                if (list.Count == 0)\n+                {\n+                    list.Add(defaultValue);\n+                }\n+\n+                return list;\n+            }\n+\n+            public async Task<int> GetCountAsync(bool onlyIfCheap, CancellationToken cancellationToken)","path":"Ix.NET/Source/System.Interactive.Async/DefaultIfEmpty.cs","position":144,"original_position":144,"commit_id":"3ece9f46e7747736d39ddab47d56732eb0982745","original_commit_id":"3ece9f46e7747736d39ddab47d56732eb0982745","user":{"login":"bartdesmet","id":7324746,"avatar_url":"https://avatars.githubusercontent.com/u/7324746?v=3","gravatar_id":"","url":"https://api.github.com/users/bartdesmet","html_url":"https://github.com/bartdesmet","followers_url":"https://api.github.com/users/bartdesmet/followers","following_url":"https://api.github.com/users/bartdesmet/following{/other_user}","gists_url":"https://api.github.com/users/bartdesmet/gists{/gist_id}","starred_url":"https://api.github.com/users/bartdesmet/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/bartdesmet/subscriptions","organizations_url":"https://api.github.com/users/bartdesmet/orgs","repos_url":"https://api.github.com/users/bartdesmet/repos","events_url":"https://api.github.com/users/bartdesmet/events{/privacy}","received_events_url":"https://api.github.com/users/bartdesmet/received_events","type":"User","site_admin":false},"body":"Do we have tests for *all* combinations of these optimized paths? We definitely didn't originally because we didn't have such optimizations and relied on the compositionality of operators as the inductive \"proof\" of correctness.","created_at":"2016-08-16T08:17:45Z","updated_at":"2016-08-16T08:17:45Z","html_url":"https://github.com/Reactive-Extensions/Rx.NET/pull/237#discussion_r74893090","pull_request_url":"https://api.github.com/repos/Reactive-Extensions/Rx.NET/pulls/237","_links":{"self":{"href":"https://api.github.com/repos/Reactive-Extensions/Rx.NET/pulls/comments/74893090"},"html":{"href":"https://github.com/Reactive-Extensions/Rx.NET/pull/237#discussion_r74893090"},"pull_request":{"href":"https://api.github.com/repos/Reactive-Extensions/Rx.NET/pulls/237"}}},"pull_request":{"url":"https://api.github.com/repos/Reactive-Extensions/Rx.NET/pulls/237","id":78146906,"html_url":"https://github.com/Reactive-Extensions/Rx.NET/pull/237","diff_url":"https://github.com/Reactive-Extensions/Rx.NET/pull/237.diff","patch_url":"https://github.com/Reactive-Extensions/Rx.NET/pull/237.patch","issue_url":"https://api.github.com/repos/Reactive-Extensions/Rx.NET/issues/237","number":237,"state":"open","locked":false,"title":"Ix optimizations","user":{"login":"onovotny","id":1427284,"avatar_url":"https://avatars.githubusercontent.com/u/1427284?v=3","gravatar_id":"","url":"https://api.github.com/users/onovotny","html_url":"https://github.com/onovotny","followers_url":"https://api.github.com/users/onovotny/followers","following_url":"https://api.github.com/users/onovotny/following{/other_user}","gists_url":"https://api.github.com/users/onovotny/gists{/gist_id}","starred_url":"https://api.github.com/users/onovotny/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/onovotny/subscriptions","organizations_url":"https://api.github.com/users/onovotny/orgs","repos_url":"https://api.github.com/users/onovotny/repos","events_url":"https://api.github.com/users/onovotny/events{/privacy}","received_events_url":"https://api.github.com/users/onovotny/received_events","type":"User","site_admin":false},"body":"This PR is to optimize Ix Async by incorporating the patterns used in https://github.com/dotnet/corefx/tree/master/src/System.Linq/src/System/Linq, taking advantage of the thought leadership and performance reviews of that codebase.","created_at":"2016-07-20T13:30:13Z","updated_at":"2016-08-16T08:17:45Z","closed_at":null,"merged_at":null,"merge_commit_sha":"ebafa18649527b494767cffc0c196888ad03255c","assignee":{"login":"mattpodwysocki","id":49051,"avatar_url":"https://avatars.githubusercontent.com/u/49051?v=3","gravatar_id":"","url":"https://api.github.com/users/mattpodwysocki","html_url":"https://github.com/mattpodwysocki","followers_url":"https://api.github.com/users/mattpodwysocki/followers","following_url":"https://api.github.com/users/mattpodwysocki/following{/other_user}","gists_url":"https://api.github.com/users/mattpodwysocki/gists{/gist_id}","starred_url":"https://api.github.com/users/mattpodwysocki/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/mattpodwysocki/subscriptions","organizations_url":"https://api.github.com/users/mattpodwysocki/orgs","repos_url":"https://api.github.com/users/mattpodwysocki/repos","events_url":"https://api.github.com/users/mattpodwysocki/events{/privacy}","received_events_url":"https://api.github.com/users/mattpodwysocki/received_events","type":"User","site_admin":false},"assignees":[{"login":"mattpodwysocki","id":49051,"avatar_url":"https://avatars.githubusercontent.com/u/49051?v=3","gravatar_id":"","url":"https://api.github.com/users/mattpodwysocki","html_url":"https://github.com/mattpodwysocki","followers_url":"https://api.github.com/users/mattpodwysocki/followers","following_url":"https://api.github.com/users/mattpodwysocki/following{/other_user}","gists_url":"https://api.github.com/users/mattpodwysocki/gists{/gist_id}","starred_url":"https://api.github.com/users/mattpodwysocki/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/mattpodwysocki/subscriptions","organizations_url":"https://api.github.com/users/mattpodwysocki/orgs","repos_url":"https://api.github.com/users/mattpodwysocki/repos","events_url":"https://api.github.com/users/mattpodwysocki/events{/privacy}","received_events_url":"https://api.github.com/users/mattpodwysocki/received_events","type":"User","site_admin":false},{"login":"shiftkey","id":359239,"avatar_url":"https://avatars.githubusercontent.com/u/359239?v=3","gravatar_id":"","url":"https://api.github.com/users/shiftkey","html_url":"https://github.com/shiftkey","followers_url":"https://api.github.com/users/shiftkey/followers","following_url":"https://api.github.com/users/shiftkey/following{/other_user}","gists_url":"https://api.github.com/users/shiftkey/gists{/gist_id}","starred_url":"https://api.github.com/users/shiftkey/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/shiftkey/subscriptions","organizations_url":"https://api.github.com/users/shiftkey/orgs","repos_url":"https://api.github.com/users/shiftkey/repos","events_url":"https://api.github.com/users/shiftkey/events{/privacy}","received_events_url":"https://api.github.com/users/shiftkey/received_events","type":"User","site_admin":true},{"login":"bartdesmet","id":7324746,"avatar_url":"https://avatars.githubusercontent.com/u/7324746?v=3","gravatar_id":"","url":"https://api.github.com/users/bartdesmet","html_url":"https://github.com/bartdesmet","followers_url":"https://api.github.com/users/bartdesmet/followers","following_url":"https://api.github.com/users/bartdesmet/following{/other_user}","gists_url":"https://api.github.com/users/bartdesmet/gists{/gist_id}","starred_url":"https://api.github.com/users/bartdesmet/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/bartdesmet/subscriptions","organizations_url":"https://api.github.com/users/bartdesmet/orgs","repos_url":"https://api.github.com/users/bartdesmet/repos","events_url":"https://api.github.com/users/bartdesmet/events{/privacy}","received_events_url":"https://api.github.com/users/bartdesmet/received_events","type":"User","site_admin":false}],"milestone":{"url":"https://api.github.com/repos/Reactive-Extensions/Rx.NET/milestones/2","html_url":"https://github.com/Reactive-Extensions/Rx.NET/milestones/3.1","labels_url":"https://api.github.com/repos/Reactive-Extensions/Rx.NET/milestones/2/labels","id":1833193,"number":2,"title":"3.1","description":"","creator":{"login":"onovotny","id":1427284,"avatar_url":"https://avatars.githubusercontent.com/u/1427284?v=3","gravatar_id":"","url":"https://api.github.com/users/onovotny","html_url":"https://github.com/onovotny","followers_url":"https://api.github.com/users/onovotny/followers","following_url":"https://api.github.com/users/onovotny/following{/other_user}","gists_url":"https://api.github.com/users/onovotny/gists{/gist_id}","starred_url":"https://api.github.com/users/onovotny/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/onovotny/subscriptions","organizations_url":"https://api.github.com/users/onovotny/orgs","repos_url":"https://api.github.com/users/onovotny/repos","events_url":"https://api.github.com/users/onovotny/events{/privacy}","received_events_url":"https://api.github.com/users/onovotny/received_events","type":"User","site_admin":false},"open_issues":7,"closed_issues":21,"state":"open","created_at":"2016-06-16T20:35:58Z","updated_at":"2016-08-15T14:32:09Z","due_on":null,"closed_at":null},"commits_url":"https://api.github.com/repos/Reactive-Extensions/Rx.NET/pulls/237/commits","review_comments_url":"https://api.github.com/repos/Reactive-Extensions/Rx.NET/pulls/237/comments","review_comment_url":"https://api.github.com/repos/Reactive-Extensions/Rx.NET/pulls/comments{/number}","comments_url":"https://api.github.com/repos/Reactive-Extensions/Rx.NET/issues/237/comments","statuses_url":"https://api.github.com/repos/Reactive-Extensions/Rx.NET/statuses/3ece9f46e7747736d39ddab47d56732eb0982745","head":{"label":"Reactive-Extensions:ix-optimizations","ref":"ix-optimizations","sha":"3ece9f46e7747736d39ddab47d56732eb0982745","user":{"login":"Reactive-Extensions","id":984368,"avatar_url":"https://avatars.githubusercontent.com/u/984368?v=3","gravatar_id":"","url":"https://api.github.com/users/Reactive-Extensions","html_url":"https://github.com/Reactive-Extensions","followers_url":"https://api.github.com/users/Reactive-Extensions/followers","following_url":"https://api.github.com/users/Reactive-Extensions/following{/other_user}","gists_url":"https://api.github.com/users/Reactive-Extensions/gists{/gist_id}","starred_url":"https://api.github.com/users/Reactive-Extensions/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/Reactive-Extensions/subscriptions","organizations_url":"https://api.github.com/users/Reactive-Extensions/orgs","repos_url":"https://api.github.com/users/Reactive-Extensions/repos","events_url":"https://api.github.com/users/Reactive-Extensions/events{/privacy}","received_events_url":"https://api.github.com/users/Reactive-Extensions/received_events","type":"Organization","site_admin":false},"repo":{"id":12576526,"name":"Rx.NET","full_name":"Reactive-Extensions/Rx.NET","owner":{"login":"Reactive-Extensions","id":984368,"avatar_url":"https://avatars.githubusercontent.com/u/984368?v=3","gravatar_id":"","url":"https://api.github.com/users/Reactive-Extensions","html_url":"https://github.com/Reactive-Extensions","followers_url":"https://api.github.com/users/Reactive-Extensions/followers","following_url":"https://api.github.com/users/Reactive-Extensions/following{/other_user}","gists_url":"https://api.github.com/users/Reactive-Extensions/gists{/gist_id}","starred_url":"https://api.github.com/users/Reactive-Extensions/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/Reactive-Extensions/subscriptions","organizations_url":"https://api.github.com/users/Reactive-Extensions/orgs","repos_url":"https://api.github.com/users/Reactive-Extensions/repos","events_url":"https://api.github.com/users/Reactive-Extensions/events{/privacy}","received_events_url":"https://api.github.com/users/Reactive-Extensions/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/Reactive-Extensions/Rx.NET","description":"The Reactive Extensions for .NET","fork":false,"url":"https://api.github.com/repos/Reactive-Extensions/Rx.NET","forks_url":"https://api.github.com/repos/Reactive-Extensions/Rx.NET/forks","keys_url":"https://api.github.com/repos/Reactive-Extensions/Rx.NET/keys{/key_id}","collaborators_url":"https://api.github.com/repos/Reactive-Extensions/Rx.NET/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/Reactive-Extensions/Rx.NET/teams","hooks_url":"https://api.github.com/repos/Reactive-Extensions/Rx.NET/hooks","issue_events_url":"https://api.github.com/repos/Reactive-Extensions/Rx.NET/issues/events{/number}","events_url":"https://api.github.com/repos/Reactive-Extensions/Rx.NET/events","assignees_url":"https://api.github.com/repos/Reactive-Extensions/Rx.NET/assignees{/user}","branches_url":"https://api.github.com/repos/Reactive-Extensions/Rx.NET/branches{/branch}","tags_url":"https://api.github.com/repos/Reactive-Extensions/Rx.NET/tags","blobs_url":"https://api.github.com/repos/Reactive-Extensions/Rx.NET/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/Reactive-Extensions/Rx.NET/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/Reactive-Extensions/Rx.NET/git/refs{/sha}","trees_url":"https://api.github.com/repos/Reactive-Extensions/Rx.NET/git/trees{/sha}","statuses_url":"https://api.github.com/repos/Reactive-Extensions/Rx.NET/statuses/{sha}","languages_url":"https://api.github.com/repos/Reactive-Extensions/Rx.NET/languages","stargazers_url":"https://api.github.com/repos/Reactive-Extensions/Rx.NET/stargazers","contributors_url":"https://api.github.com/repos/Reactive-Extensions/Rx.NET/contributors","subscribers_url":"https://api.github.com/repos/Reactive-Extensions/Rx.NET/subscribers","subscription_url":"https://api.github.com/repos/Reactive-Extensions/Rx.NET/subscription","commits_url":"https://api.github.com/repos/Reactive-Extensions/Rx.NET/commits{/sha}","git_commits_url":"https://api.github.com/repos/Reactive-Extensions/Rx.NET/git/commits{/sha}","comments_url":"https://api.github.com/repos/Reactive-Extensions/Rx.NET/comments{/number}","issue_comment_url":"https://api.github.com/repos/Reactive-Extensions/Rx.NET/issues/comments{/number}","contents_url":"https://api.github.com/repos/Reactive-Extensions/Rx.NET/contents/{+path}","compare_url":"https://api.github.com/repos/Reactive-Extensions/Rx.NET/compare/{base}...{head}","merges_url":"https://api.github.com/repos/Reactive-Extensions/Rx.NET/merges","archive_url":"https://api.github.com/repos/Reactive-Extensions/Rx.NET/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/Reactive-Extensions/Rx.NET/downloads","issues_url":"https://api.github.com/repos/Reactive-Extensions/Rx.NET/issues{/number}","pulls_url":"https://api.github.com/repos/Reactive-Extensions/Rx.NET/pulls{/number}","milestones_url":"https://api.github.com/repos/Reactive-Extensions/Rx.NET/milestones{/number}","notifications_url":"https://api.github.com/repos/Reactive-Extensions/Rx.NET/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/Reactive-Extensions/Rx.NET/labels{/name}","releases_url":"https://api.github.com/repos/Reactive-Extensions/Rx.NET/releases{/id}","deployments_url":"https://api.github.com/repos/Reactive-Extensions/Rx.NET/deployments","created_at":"2013-09-03T22:33:51Z","updated_at":"2016-08-16T05:18:44Z","pushed_at":"2016-08-15T14:42:46Z","git_url":"git://github.com/Reactive-Extensions/Rx.NET.git","ssh_url":"git@github.com:Reactive-Extensions/Rx.NET.git","clone_url":"https://github.com/Reactive-Extensions/Rx.NET.git","svn_url":"https://github.com/Reactive-Extensions/Rx.NET","homepage":"http://reactivex.io","size":31352,"stargazers_count":1200,"watchers_count":1200,"language":"C#","has_issues":true,"has_downloads":true,"has_wiki":true,"has_pages":true,"forks_count":214,"mirror_url":null,"open_issues_count":85,"forks":214,"open_issues":85,"watchers":1200,"default_branch":"master"}},"base":{"label":"Reactive-Extensions:master","ref":"master","sha":"17e4dbc3a7c3f4bc1e5c16faad0e4f12e67bcb7f","user":{"login":"Reactive-Extensions","id":984368,"avatar_url":"https://avatars.githubusercontent.com/u/984368?v=3","gravatar_id":"","url":"https://api.github.com/users/Reactive-Extensions","html_url":"https://github.com/Reactive-Extensions","followers_url":"https://api.github.com/users/Reactive-Extensions/followers","following_url":"https://api.github.com/users/Reactive-Extensions/following{/other_user}","gists_url":"https://api.github.com/users/Reactive-Extensions/gists{/gist_id}","starred_url":"https://api.github.com/users/Reactive-Extensions/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/Reactive-Extensions/subscriptions","organizations_url":"https://api.github.com/users/Reactive-Extensions/orgs","repos_url":"https://api.github.com/users/Reactive-Extensions/repos","events_url":"https://api.github.com/users/Reactive-Extensions/events{/privacy}","received_events_url":"https://api.github.com/users/Reactive-Extensions/received_events","type":"Organization","site_admin":false},"repo":{"id":12576526,"name":"Rx.NET","full_name":"Reactive-Extensions/Rx.NET","owner":{"login":"Reactive-Extensions","id":984368,"avatar_url":"https://avatars.githubusercontent.com/u/984368?v=3","gravatar_id":"","url":"https://api.github.com/users/Reactive-Extensions","html_url":"https://github.com/Reactive-Extensions","followers_url":"https://api.github.com/users/Reactive-Extensions/followers","following_url":"https://api.github.com/users/Reactive-Extensions/following{/other_user}","gists_url":"https://api.github.com/users/Reactive-Extensions/gists{/gist_id}","starred_url":"https://api.github.com/users/Reactive-Extensions/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/Reactive-Extensions/subscriptions","organizations_url":"https://api.github.com/users/Reactive-Extensions/orgs","repos_url":"https://api.github.com/users/Reactive-Extensions/repos","events_url":"https://api.github.com/users/Reactive-Extensions/events{/privacy}","received_events_url":"https://api.github.com/users/Reactive-Extensions/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/Reactive-Extensions/Rx.NET","description":"The Reactive Extensions for .NET","fork":false,"url":"https://api.github.com/repos/Reactive-Extensions/Rx.NET","forks_url":"https://api.github.com/repos/Reactive-Extensions/Rx.NET/forks","keys_url":"https://api.github.com/repos/Reactive-Extensions/Rx.NET/keys{/key_id}","collaborators_url":"https://api.github.com/repos/Reactive-Extensions/Rx.NET/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/Reactive-Extensions/Rx.NET/teams","hooks_url":"https://api.github.com/repos/Reactive-Extensions/Rx.NET/hooks","issue_events_url":"https://api.github.com/repos/Reactive-Extensions/Rx.NET/issues/events{/number}","events_url":"https://api.github.com/repos/Reactive-Extensions/Rx.NET/events","assignees_url":"https://api.github.com/repos/Reactive-Extensions/Rx.NET/assignees{/user}","branches_url":"https://api.github.com/repos/Reactive-Extensions/Rx.NET/branches{/branch}","tags_url":"https://api.github.com/repos/Reactive-Extensions/Rx.NET/tags","blobs_url":"https://api.github.com/repos/Reactive-Extensions/Rx.NET/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/Reactive-Extensions/Rx.NET/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/Reactive-Extensions/Rx.NET/git/refs{/sha}","trees_url":"https://api.github.com/repos/Reactive-Extensions/Rx.NET/git/trees{/sha}","statuses_url":"https://api.github.com/repos/Reactive-Extensions/Rx.NET/statuses/{sha}","languages_url":"https://api.github.com/repos/Reactive-Extensions/Rx.NET/languages","stargazers_url":"https://api.github.com/repos/Reactive-Extensions/Rx.NET/stargazers","contributors_url":"https://api.github.com/repos/Reactive-Extensions/Rx.NET/contributors","subscribers_url":"https://api.github.com/repos/Reactive-Extensions/Rx.NET/subscribers","subscription_url":"https://api.github.com/repos/Reactive-Extensions/Rx.NET/subscription","commits_url":"https://api.github.com/repos/Reactive-Extensions/Rx.NET/commits{/sha}","git_commits_url":"https://api.github.com/repos/Reactive-Extensions/Rx.NET/git/commits{/sha}","comments_url":"https://api.github.com/repos/Reactive-Extensions/Rx.NET/comments{/number}","issue_comment_url":"https://api.github.com/repos/Reactive-Extensions/Rx.NET/issues/comments{/number}","contents_url":"https://api.github.com/repos/Reactive-Extensions/Rx.NET/contents/{+path}","compare_url":"https://api.github.com/repos/Reactive-Extensions/Rx.NET/compare/{base}...{head}","merges_url":"https://api.github.com/repos/Reactive-Extensions/Rx.NET/merges","archive_url":"https://api.github.com/repos/Reactive-Extensions/Rx.NET/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/Reactive-Extensions/Rx.NET/downloads","issues_url":"https://api.github.com/repos/Reactive-Extensions/Rx.NET/issues{/number}","pulls_url":"https://api.github.com/repos/Reactive-Extensions/Rx.NET/pulls{/number}","milestones_url":"https://api.github.com/repos/Reactive-Extensions/Rx.NET/milestones{/number}","notifications_url":"https://api.github.com/repos/Reactive-Extensions/Rx.NET/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/Reactive-Extensions/Rx.NET/labels{/name}","releases_url":"https://api.github.com/repos/Reactive-Extensions/Rx.NET/releases{/id}","deployments_url":"https://api.github.com/repos/Reactive-Extensions/Rx.NET/deployments","created_at":"2013-09-03T22:33:51Z","updated_at":"2016-08-16T05:18:44Z","pushed_at":"2016-08-15T14:42:46Z","git_url":"git://github.com/Reactive-Extensions/Rx.NET.git","ssh_url":"git@github.com:Reactive-Extensions/Rx.NET.git","clone_url":"https://github.com/Reactive-Extensions/Rx.NET.git","svn_url":"https://github.com/Reactive-Extensions/Rx.NET","homepage":"http://reactivex.io","size":31352,"stargazers_count":1200,"watchers_count":1200,"language":"C#","has_issues":true,"has_downloads":true,"has_wiki":true,"has_pages":true,"forks_count":214,"mirror_url":null,"open_issues_count":85,"forks":214,"open_issues":85,"watchers":1200,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/Reactive-Extensions/Rx.NET/pulls/237"},"html":{"href":"https://github.com/Reactive-Extensions/Rx.NET/pull/237"},"issue":{"href":"https://api.github.com/repos/Reactive-Extensions/Rx.NET/issues/237"},"comments":{"href":"https://api.github.com/repos/Reactive-Extensions/Rx.NET/issues/237/comments"},"review_comments":{"href":"https://api.github.com/repos/Reactive-Extensions/Rx.NET/pulls/237/comments"},"review_comment":{"href":"https://api.github.com/repos/Reactive-Extensions/Rx.NET/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/Reactive-Extensions/Rx.NET/pulls/237/commits"},"statuses":{"href":"https://api.github.com/repos/Reactive-Extensions/Rx.NET/statuses/3ece9f46e7747736d39ddab47d56732eb0982745"}}}}
{"actor":{"display_login":"bartdesmet"}}