{"action":"created","comment":{"url":"https://api.github.com/repos/dotnet/roslyn/pulls/comments/70897771","id":70897771,"diff_hunk":"@@ -0,0 +1,272 @@\n+// Copyright (c) Microsoft.  All Rights Reserved.  Licensed under the Apache License, Version 2.0.  See License.txt in the project root for license information.\n+\n+using System.Collections.Generic;\n+using System.IO;\n+using System.Linq;\n+using System.Threading;\n+using System.Threading.Tasks;\n+using Microsoft.CodeAnalysis;\n+using Microsoft.CodeAnalysis.CodeActions;\n+using Microsoft.CodeAnalysis.Editing;\n+using Microsoft.CodeAnalysis.RemoveUnnecessaryImports;\n+using Microsoft.CodeAnalysis.Rename;\n+using Microsoft.CodeAnalysis.Shared.Extensions;\n+using Roslyn.Utilities;\n+\n+namespace Microsoft.CodeAnalysis.CodeRefactorings.MoveType\n+{\n+    internal abstract partial class AbstractMoveTypeService<TService, TTypeDeclarationSyntax, TNamespaceDeclarationSyntax, TMemberDeclarationSyntax, TCompilationUnitSyntax>\n+    {\n+        private class Editor\n+        {\n+            private readonly CancellationToken _cancellationToken;\n+            private readonly MoveTypeOptionsResult _moveTypeOptions;\n+            private readonly State _state;\n+            private readonly TService _service;\n+\n+            private readonly bool _fromDialog;\n+            private readonly bool _makeOuterTypesPartial;\n+            private readonly bool _makeTypePartial;\n+            private readonly bool _renameFile;\n+            private readonly bool _renameType;\n+\n+            public Editor(\n+                TService service,\n+                State state,\n+                bool renameFile,\n+                bool renameType,\n+                bool makeTypePartial,\n+                bool makeOuterTypePartial,\n+                MoveTypeOptionsResult moveTypeOptions,\n+                bool fromDialog,\n+                CancellationToken cancellationToken)\n+            {\n+                _renameFile = renameFile;\n+                _makeTypePartial = makeTypePartial;\n+                _makeOuterTypesPartial = makeOuterTypePartial || makeTypePartial;\n+                _renameType = renameType;\n+                _state = state;\n+                _service = service;\n+                this._moveTypeOptions = moveTypeOptions;\n+                this._fromDialog = fromDialog;\n+                this._cancellationToken = cancellationToken;\n+            }\n+\n+            private SemanticDocument SemanticDocument => _state.SemanticDocument;\n+\n+            internal async Task<IEnumerable<CodeActionOperation>> GetOperationsAsync()\n+            {\n+                var solution = SemanticDocument.Document.Project.Solution;\n+\n+                if (_renameFile)\n+                {\n+                    return RenameFileToMatchTypeName(solution);\n+                }\n+                else if (_renameType)\n+                {\n+                    return await RenameTypeToMatchFileAsync(solution).ConfigureAwait(false);\n+                }\n+\n+                var documentName = _fromDialog\n+                    ? _moveTypeOptions.NewFileName\n+                    : _state.TargetFileNameCandidate + _state.TargetFileExtension;\n+\n+                return await MoveTypeToNewFileAsync(documentName).ConfigureAwait(false);\n+            }\n+\n+            private async Task<IEnumerable<CodeActionOperation>> MoveTypeToNewFileAsync(string documentName)\n+            {\n+                // fork source document, keep required type/namespace hierarchy and add it to a new document\n+                var projectToBeUpdated = SemanticDocument.Document.Project;\n+                var newDocumentId = DocumentId.CreateNewId(projectToBeUpdated.Id, documentName);\n+\n+                var solutionWithNewDocument = await AddNewDocumentWithTypeDeclarationAsync(\n+                    SemanticDocument, documentName, newDocumentId, _state.TypeNode, _cancellationToken).ConfigureAwait(false);\n+\n+                // Get the original source document again, from the latest forked solution.\n+                var sourceDocument = solutionWithNewDocument.GetDocument(SemanticDocument.Document.Id);\n+\n+                // update source document to add partial modifiers to type chain\n+                // and/or remove type declaration from original source document.\n+                var solutionWithBothDocumentsUpdated = await UpdateSourceDocumentAsync(\n+                      sourceDocument, _state.TypeNode, _cancellationToken).ConfigureAwait(false);\n+\n+                return new CodeActionOperation[] { new ApplyChangesOperation(solutionWithBothDocumentsUpdated) };\n+            }\n+\n+            private async Task<IEnumerable<CodeActionOperation>> RenameTypeToMatchFileAsync(Solution solution)\n+            {\n+                var symbol = _state.SemanticDocument.SemanticModel.GetDeclaredSymbol(_state.TypeNode, _cancellationToken) as INamedTypeSymbol;\n+                var newSolution = await Renamer.RenameSymbolAsync(solution, symbol, _state.DocumentName, SemanticDocument.Document.Options, _cancellationToken).ConfigureAwait(false);\n+                return new CodeActionOperation[] { new ApplyChangesOperation(newSolution) };\n+            }\n+\n+            private IEnumerable<CodeActionOperation> RenameFileToMatchTypeName(Solution solution)\n+            {\n+                var text = SemanticDocument.Text;\n+                var oldDocumentId = SemanticDocument.Document.Id;\n+                var newDocumentId = DocumentId.CreateNewId(SemanticDocument.Document.Project.Id, _state.TargetFileNameCandidate);\n+\n+                var newSolution = solution.RemoveDocument(oldDocumentId);\n+                newSolution = newSolution.AddDocument(newDocumentId, _state.TargetFileNameCandidate, text);\n+\n+                return new CodeActionOperation[]\n+                {\n+                    new ApplyChangesOperation(newSolution),\n+                    new OpenDocumentOperation(newDocumentId)\n+                };\n+            }\n+\n+            private async Task<Solution> AddNewDocumentWithTypeDeclarationAsync(\n+                SemanticDocument sourceDocument,\n+                string newDocumentName,\n+                DocumentId newDocumentId,\n+                TTypeDeclarationSyntax typeNode,\n+                CancellationToken cancellationToken)\n+            {\n+                var root = sourceDocument.Root;\n+                var projectToBeUpdated = sourceDocument.Document.Project;\n+                var documentEditor = await DocumentEditor.CreateAsync(sourceDocument.Document, cancellationToken).ConfigureAwait(false);\n+\n+                AddPartialModifiersToTypeChain(documentEditor, typeNode);\n+\n+                var membersToRemove = GetMembersToRemove(root, typeNode, removeDescendentsOfSelf: _makeTypePartial);\n+                foreach (var member in membersToRemove)","path":"src/Features/Core/Portable/CodeRefactorings/MoveType/AbstractMoveTypeService.Editor.cs","position":134,"original_position":134,"commit_id":"22d97b29925a60c18f71864a92f43ea408513cf8","original_commit_id":"22d97b29925a60c18f71864a92f43ea408513cf8","user":{"login":"balajikris","id":4213867,"avatar_url":"https://avatars.githubusercontent.com/u/4213867?v=3","gravatar_id":"","url":"https://api.github.com/users/balajikris","html_url":"https://github.com/balajikris","followers_url":"https://api.github.com/users/balajikris/followers","following_url":"https://api.github.com/users/balajikris/following{/other_user}","gists_url":"https://api.github.com/users/balajikris/gists{/gist_id}","starred_url":"https://api.github.com/users/balajikris/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/balajikris/subscriptions","organizations_url":"https://api.github.com/users/balajikris/orgs","repos_url":"https://api.github.com/users/balajikris/repos","events_url":"https://api.github.com/users/balajikris/events{/privacy}","received_events_url":"https://api.github.com/users/balajikris/received_events","type":"User","site_admin":false},"body":"Think I might have cleared it by answering how we move types in a response to an earlier question, but here is a trivial example (there are more complex ones too) :\r\nMove class2, which means everything else is to be removed in the new document after forking it from here.\r\n\r\n```C#\r\nnamespace N1\r\n{\r\n    class Class1  {   }\r\n   class Class2  {   }\r\n   class Class3  {   }\r\n}\r\nnamespace N2 { }\r\n\r\n```","created_at":"2016-07-14T22:51:10Z","updated_at":"2016-07-14T22:51:10Z","html_url":"https://github.com/dotnet/roslyn/pull/12203#discussion_r70897771","pull_request_url":"https://api.github.com/repos/dotnet/roslyn/pulls/12203","_links":{"self":{"href":"https://api.github.com/repos/dotnet/roslyn/pulls/comments/70897771"},"html":{"href":"https://github.com/dotnet/roslyn/pull/12203#discussion_r70897771"},"pull_request":{"href":"https://api.github.com/repos/dotnet/roslyn/pulls/12203"}}},"pull_request":{"url":"https://api.github.com/repos/dotnet/roslyn/pulls/12203","id":75162657,"html_url":"https://github.com/dotnet/roslyn/pull/12203","diff_url":"https://github.com/dotnet/roslyn/pull/12203.diff","patch_url":"https://github.com/dotnet/roslyn/pull/12203.patch","issue_url":"https://api.github.com/repos/dotnet/roslyn/issues/12203","number":12203,"state":"open","locked":false,"title":"Implement Move Type refactoring.","user":{"login":"balajikris","id":4213867,"avatar_url":"https://avatars.githubusercontent.com/u/4213867?v=3","gravatar_id":"","url":"https://api.github.com/users/balajikris","html_url":"https://github.com/balajikris","followers_url":"https://api.github.com/users/balajikris/followers","following_url":"https://api.github.com/users/balajikris/following{/other_user}","gists_url":"https://api.github.com/users/balajikris/gists{/gist_id}","starred_url":"https://api.github.com/users/balajikris/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/balajikris/subscriptions","organizations_url":"https://api.github.com/users/balajikris/orgs","repos_url":"https://api.github.com/users/balajikris/repos","events_url":"https://api.github.com/users/balajikris/events{/privacy}","received_events_url":"https://api.github.com/users/balajikris/received_events","type":"User","site_admin":false},"body":"**Provides the following code actions:**\r\n\r\n1. Move type to a new file\r\n2. Move nested type to new file\r\n3. Rename type to match filename\r\n4. Rename file to match typename\r\n5. Move type dialog\r\n6. Make type partial\r\n\r\n**Notes for Review:**\r\nCommit 1: Initial implementation of MoveType Refactoring for C# and VB. This contains bulk of the original logic, however the code structure is heavily refactored out later.\r\nCommit 2: Changes to get VB actually working. Account for language specific nuances.\r\nCommit 3-6: Support for writing unit tests and unit tests.\r\nCommit 7-8: Incremental updates to features, bug fixes.\r\nCommit 9+: Refactor and code clean up.\r\n\r\nNote 1: Code in ServicesVisualStudio (UI) is still very much a prototype. It does not take a folder, file path for e.g. and lots of functionalities are NYI. The simple scenario is what's been implemented, as far as the UI is concerned.\r\n\r\nNote 2: I need to add a lot more tests. Will continue to work on it.\r\n\r\n**Task List:**\r\n\r\n- [x] VB adjustments (though most logic is language agnostic, need to account for syntax tree and other differences).\r\n- [x] Tests (checking off as done, but really, need more)\r\n- [ ] Better UI, allow specifying folders.\r\n- [ ] Options?\r\n\r\n**May be later:**\r\n\r\n1. Move to other projects\r\n\r\n**Not planning on doing:**\r\n\r\n1. Move to existing file?\r\n2. Promote type up?\r\n3. Choose specific members to move?\r\n\r\n_All features are experimental and this is how they currently look._ \r\n\r\n**1. Move Type**\r\n![image](https://cloud.githubusercontent.com/assets/4213867/16348421/43499a3c-3a07-11e6-9803-25aabc2f6b42.png)\r\n\r\n**2. Move Type dialog**\r\n![image](https://cloud.githubusercontent.com/assets/4213867/16348428/542a9ea0-3a07-11e6-828b-ee4974ec37a5.png)\r\n\r\n**3. Move Nested type**\r\n![image](https://cloud.githubusercontent.com/assets/4213867/16348446/6a52bc58-3a07-11e6-867b-9ad9c83672bb.png)\r\n\r\n**4. Rename File to match type name**\r\n![image](https://cloud.githubusercontent.com/assets/4213867/16348450/76b4ef8e-3a07-11e6-84fe-3b54c5cc6383.png)\r\n\r\n**5. Rename Type to match file name**\r\n![image](https://cloud.githubusercontent.com/assets/4213867/16348458/810a346c-3a07-11e6-8eac-7a3bcdad8bb9.png)\r\n\r\n**6. Introduce partial declaration for type**\r\n![image](https://cloud.githubusercontent.com/assets/4213867/16348469/91771572-3a07-11e6-9914-7b57cb96b2fe.png)\r\n\r\n","created_at":"2016-06-24T19:34:42Z","updated_at":"2016-07-14T22:51:10Z","closed_at":null,"merged_at":null,"merge_commit_sha":"f27aff6c9b6a2f8cc3a110d3e2032b6f217160ff","assignee":null,"assignees":[],"milestone":null,"commits_url":"https://api.github.com/repos/dotnet/roslyn/pulls/12203/commits","review_comments_url":"https://api.github.com/repos/dotnet/roslyn/pulls/12203/comments","review_comment_url":"https://api.github.com/repos/dotnet/roslyn/pulls/comments{/number}","comments_url":"https://api.github.com/repos/dotnet/roslyn/issues/12203/comments","statuses_url":"https://api.github.com/repos/dotnet/roslyn/statuses/22d97b29925a60c18f71864a92f43ea408513cf8","head":{"label":"balajikris:MoveType","ref":"MoveType","sha":"22d97b29925a60c18f71864a92f43ea408513cf8","user":{"login":"balajikris","id":4213867,"avatar_url":"https://avatars.githubusercontent.com/u/4213867?v=3","gravatar_id":"","url":"https://api.github.com/users/balajikris","html_url":"https://github.com/balajikris","followers_url":"https://api.github.com/users/balajikris/followers","following_url":"https://api.github.com/users/balajikris/following{/other_user}","gists_url":"https://api.github.com/users/balajikris/gists{/gist_id}","starred_url":"https://api.github.com/users/balajikris/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/balajikris/subscriptions","organizations_url":"https://api.github.com/users/balajikris/orgs","repos_url":"https://api.github.com/users/balajikris/repos","events_url":"https://api.github.com/users/balajikris/events{/privacy}","received_events_url":"https://api.github.com/users/balajikris/received_events","type":"User","site_admin":false},"repo":{"id":30552969,"name":"roslyn","full_name":"balajikris/roslyn","owner":{"login":"balajikris","id":4213867,"avatar_url":"https://avatars.githubusercontent.com/u/4213867?v=3","gravatar_id":"","url":"https://api.github.com/users/balajikris","html_url":"https://github.com/balajikris","followers_url":"https://api.github.com/users/balajikris/followers","following_url":"https://api.github.com/users/balajikris/following{/other_user}","gists_url":"https://api.github.com/users/balajikris/gists{/gist_id}","starred_url":"https://api.github.com/users/balajikris/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/balajikris/subscriptions","organizations_url":"https://api.github.com/users/balajikris/orgs","repos_url":"https://api.github.com/users/balajikris/repos","events_url":"https://api.github.com/users/balajikris/events{/privacy}","received_events_url":"https://api.github.com/users/balajikris/received_events","type":"User","site_admin":false},"private":false,"html_url":"https://github.com/balajikris/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/balajikris/roslyn","forks_url":"https://api.github.com/repos/balajikris/roslyn/forks","keys_url":"https://api.github.com/repos/balajikris/roslyn/keys{/key_id}","collaborators_url":"https://api.github.com/repos/balajikris/roslyn/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/balajikris/roslyn/teams","hooks_url":"https://api.github.com/repos/balajikris/roslyn/hooks","issue_events_url":"https://api.github.com/repos/balajikris/roslyn/issues/events{/number}","events_url":"https://api.github.com/repos/balajikris/roslyn/events","assignees_url":"https://api.github.com/repos/balajikris/roslyn/assignees{/user}","branches_url":"https://api.github.com/repos/balajikris/roslyn/branches{/branch}","tags_url":"https://api.github.com/repos/balajikris/roslyn/tags","blobs_url":"https://api.github.com/repos/balajikris/roslyn/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/balajikris/roslyn/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/balajikris/roslyn/git/refs{/sha}","trees_url":"https://api.github.com/repos/balajikris/roslyn/git/trees{/sha}","statuses_url":"https://api.github.com/repos/balajikris/roslyn/statuses/{sha}","languages_url":"https://api.github.com/repos/balajikris/roslyn/languages","stargazers_url":"https://api.github.com/repos/balajikris/roslyn/stargazers","contributors_url":"https://api.github.com/repos/balajikris/roslyn/contributors","subscribers_url":"https://api.github.com/repos/balajikris/roslyn/subscribers","subscription_url":"https://api.github.com/repos/balajikris/roslyn/subscription","commits_url":"https://api.github.com/repos/balajikris/roslyn/commits{/sha}","git_commits_url":"https://api.github.com/repos/balajikris/roslyn/git/commits{/sha}","comments_url":"https://api.github.com/repos/balajikris/roslyn/comments{/number}","issue_comment_url":"https://api.github.com/repos/balajikris/roslyn/issues/comments{/number}","contents_url":"https://api.github.com/repos/balajikris/roslyn/contents/{+path}","compare_url":"https://api.github.com/repos/balajikris/roslyn/compare/{base}...{head}","merges_url":"https://api.github.com/repos/balajikris/roslyn/merges","archive_url":"https://api.github.com/repos/balajikris/roslyn/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/balajikris/roslyn/downloads","issues_url":"https://api.github.com/repos/balajikris/roslyn/issues{/number}","pulls_url":"https://api.github.com/repos/balajikris/roslyn/pulls{/number}","milestones_url":"https://api.github.com/repos/balajikris/roslyn/milestones{/number}","notifications_url":"https://api.github.com/repos/balajikris/roslyn/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/balajikris/roslyn/labels{/name}","releases_url":"https://api.github.com/repos/balajikris/roslyn/releases{/id}","deployments_url":"https://api.github.com/repos/balajikris/roslyn/deployments","created_at":"2015-02-09T19:08:10Z","updated_at":"2016-01-27T05:16:01Z","pushed_at":"2016-07-14T16:20:02Z","git_url":"git://github.com/balajikris/roslyn.git","ssh_url":"git@github.com:balajikris/roslyn.git","clone_url":"https://github.com/balajikris/roslyn.git","svn_url":"https://github.com/balajikris/roslyn","homepage":"","size":168795,"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":"269277818839c1487e21a2474b44e98179cb3921","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}","deployments_url":"https://api.github.com/repos/dotnet/roslyn/deployments","created_at":"2015-01-11T02:39:03Z","updated_at":"2016-07-14T20:22:18Z","pushed_at":"2016-07-14T22:16:12Z","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":315776,"stargazers_count":5831,"watchers_count":5831,"language":"C#","has_issues":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":1391,"mirror_url":null,"open_issues_count":3018,"forks":1391,"open_issues":3018,"watchers":5831,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/dotnet/roslyn/pulls/12203"},"html":{"href":"https://github.com/dotnet/roslyn/pull/12203"},"issue":{"href":"https://api.github.com/repos/dotnet/roslyn/issues/12203"},"comments":{"href":"https://api.github.com/repos/dotnet/roslyn/issues/12203/comments"},"review_comments":{"href":"https://api.github.com/repos/dotnet/roslyn/pulls/12203/comments"},"review_comment":{"href":"https://api.github.com/repos/dotnet/roslyn/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/dotnet/roslyn/pulls/12203/commits"},"statuses":{"href":"https://api.github.com/repos/dotnet/roslyn/statuses/22d97b29925a60c18f71864a92f43ea408513cf8"}}}}
{"actor":{"display_login":"balajikris"}}