{"action":"created","comment":{"url":"https://api.github.com/repos/JetBrains/resharper-unity/pulls/comments/232526167","pull_request_review_id":173739605,"id":232526167,"node_id":"MDI0OlB1bGxSZXF1ZXN0UmV2aWV3Q29tbWVudDIzMjUyNjE2Nw==","diff_hunk":"@@ -0,0 +1,263 @@\n+using System;\n+using System.Linq;\n+using JetBrains.Annotations;\n+using JetBrains.Application.Threading;\n+using JetBrains.ReSharper.Plugins.Unity.CSharp.Psi.Resolve;\n+using JetBrains.ReSharper.Plugins.Unity.Utils;\n+using JetBrains.ReSharper.Psi;\n+using JetBrains.ReSharper.Psi.CSharp;\n+using JetBrains.ReSharper.Psi.CSharp.Tree;\n+using JetBrains.ReSharper.Psi.CSharp.Util;\n+using JetBrains.ReSharper.Psi.ExtensionsAPI.Resolve.Managed;\n+using JetBrains.ReSharper.Psi.Naming.Settings;\n+using JetBrains.ReSharper.Psi.Tree;\n+using JetBrains.ReSharper.Resources.Shell;\n+using JetBrains.Util;\n+\n+namespace JetBrains.ReSharper.Plugins.Unity.CSharp.Feature.Services.QuickFixes.MoveQuickFixes\n+{\n+    internal static class MonoBehaviourMoveUtil\n+    {\n+        [CanBeNull]\n+        public static IMethodDeclaration GetMonoBehaviourMethod([NotNull] IClassDeclaration classDeclaration, [NotNull] string name)\n+        {\n+            classDeclaration.GetPsiServices().Locks.AssertReadAccessAllowed();\n+            \n+            return classDeclaration.MethodDeclarations.FirstOrDefault(t => t.NameIdentifier.Name.Equals(name));\n+        }\n+        \n+        [NotNull]\n+        public static IMethodDeclaration GetOrCreateMethod([NotNull] IClassDeclaration classDeclaration, [NotNull] string methodName)\n+        {\n+            classDeclaration.GetPsiServices().Locks.AssertReadAccessAllowed();\n+            \n+            var result = GetMonoBehaviourMethod(classDeclaration, methodName);\n+            if (result == null)\n+            {\n+                var factory = CSharpElementFactory.GetInstance(classDeclaration);\n+                var declaration = (IMethodDeclaration)factory.CreateTypeMemberDeclaration(\"void $0(){}\", methodName);\n+\n+                result = classDeclaration.AddClassMemberDeclarationAfter(declaration, classDeclaration.FieldDeclarations.FirstOrDefault());\n+               \n+            }\n+            return result;\n+        }\n+\n+        public static bool IsExpressionAccessibleInScript([NotNull]ICSharpExpression expression)\n+        {\n+            expression.GetPsiServices().Locks.AssertReadAccessAllowed();\n+            \n+            Shell.Instance.GetComponent<IShellLocks>().AssertMainThread();\n+            \n+            if (!expression.IsValid())\n+                return false;\n+            \n+            var methodDeclaration = expression.GetContainingNode<IMethodDeclaration>();\n+            if (methodDeclaration == null)\n+                return false;\n+            \n+            var statement = expression.GetContainingStatementLike();\n+            if (statement == null)\n+                return false;\n+\n+            var classDeclaration = expression.GetContainingNode<IClassDeclaration>();\n+            if (classDeclaration == null)\n+                return false;\n+\n+            return IsAvailableToMoveFromMethodToMethod(expression);\n+        }\n+\n+        /// <summary>\n+        /// Is node available to move outside the loop\n+        /// </summary>\n+        public static bool IsAvailableToMoveFromLoop([NotNull] ITreeNode toMove, [NotNull] ILoopStatement loop)\n+        {\n+            toMove.GetPsiServices().Locks.AssertReadAccessAllowed();\n+\n+            var sourceFile = toMove.GetSourceFile();\n+            if (sourceFile == null)\n+                return false;\n+            \n+            var loopStartOffset = loop.GetTreeStartOffset().Offset;\n+            return IsAvailableToMoveInner(toMove, declaredElement => \n+                    declaredElement.GetDeclarationsIn(sourceFile)\n+                    .FirstOrDefault(declaration => declaration.GetSourceFile() == sourceFile)?.GetTreeStartOffset().Offset < loopStartOffset\n+            );\n+        }\n+\n+        /// <summary>\n+        /// Is node available to move from one method to another in MonoBehaviour class \n+        /// </summary>\n+        public static bool IsAvailableToMoveFromMethodToMethod([NotNull] ITreeNode toMove)\n+        {\n+            toMove.GetPsiServices().Locks.AssertReadAccessAllowed();\n+            \n+            return IsAvailableToMoveInner(toMove);\n+        }\n+        \n+        private static bool IsAvailableToMoveInner([NotNull] ITreeNode toMove, [CanBeNull] Func<IDeclaredElement, bool> isElementIgnored = null)\n+        {\n+            var nodeEnumerator = toMove.ThisAndDescendants();\n+            while (nodeEnumerator.MoveNext())\n+            {\n+                var current = nodeEnumerator.Current;\n+                IDeclaredElement declaredElement;\n+                switch (current)\n+                {\n+                    case IDeclaration declaration:\n+                        declaredElement = declaration.DeclaredElement;\n+                        break;\n+                    case IReferenceExpression referenceExpression:\n+                        declaredElement = referenceExpression.Reference.Resolve().DeclaredElement;\n+                        break;\n+                    default:\n+                        declaredElement = null;\n+                        break;\n+                }\n+                \n+                if (declaredElement == null || isElementIgnored != null && isElementIgnored(declaredElement))\n+                    continue;\n+\n+                // if declared element is local, we can't move our expression outside the method\n+                switch (declaredElement)\n+                {\n+                    case ILocalVariableDeclaration _:\n+                    case IParameterDeclaration _:\n+                    case ILocalFunctionDeclaration _:\n+                    case IDelegateDeclaration _:\n+                    case ILambdaExpression _:\n+                    case IAnonymousFunctionExpression _:\n+                    case IQueryParameterPlatform _:\n+                        return false;\n+                }\n+            }\n+            return true;\n+        }\n+\n+        public static void MoveToMethodWithFieldIntroduction([NotNull]IClassDeclaration classDeclaration, [NotNull]ICSharpExpression expression, [NotNull] string methodName, string fieldName = null)\n+        {\n+            classDeclaration.GetPsiServices().Locks.AssertReadAccessAllowed();\n+            classDeclaration.GetPsiServices().Locks.AssertMainThread();\n+            \n+            var methodDeclaration = GetOrCreateMethod(classDeclaration, methodName);\n+            MoveToMethodWithFieldIntroduction(classDeclaration, methodDeclaration, expression, fieldName);\n+        }\n+        \n+        public static void MoveToMethodWithFieldIntroduction([NotNull]IClassDeclaration classDeclaration,[NotNull] IMethodDeclaration methodDeclaration,\n+            [NotNull]ICSharpExpression expression, string fieldName = null)\n+        {\n+            classDeclaration.GetPsiServices().Locks.AssertReadAccessAllowed();\n+            classDeclaration.GetPsiServices().Locks.AssertMainThread();\n+            \n+            var result = GetDeclaredElementFromParentDeclaration(expression);\n+            \n+            var factory = CSharpElementFactory.GetInstance(classDeclaration);\n+\n+            var type = expression.Type(new ResolveContext(classDeclaration.GetPsiModule()));\n+            if (type.IsUnknown)\n+                type = TypeFactory.CreateTypeByCLRName(\"System.Object\", classDeclaration.GetPsiModule());\n+\n+            var baseName = fieldName ?? CreateBaseName(expression, result);\n+            var name = NamingUtil.GetUniqueName(expression, baseName, NamedElementKinds.PrivateInstanceFields, de => !de.Equals(result));\n+\n+            var isVoid = type.IsVoid();\n+\n+            if (!isVoid)\n+            {\n+                var field = factory.CreateFieldDeclaration(type, name);\n+                field.SetAccessRights(AccessRights.PRIVATE);\n+\n+                classDeclaration.AddClassMemberDeclaration(field);\n+            }\n+\n+            var initialization = isVoid ? factory.CreateStatement(\"$1;\", name, expression.Copy()) : \n+                factory.CreateStatement(\"$0 = $1;\", name, expression.Copy());\n+            \n+            var body = methodDeclaration.EnsureStatementMemberBody();","path":"resharper/resharper-unity/src/CSharp/Feature/Services/QuickFixes/MoveQuickFixes/MonoBehaviourMoveUtil.cs","position":176,"original_position":176,"commit_id":"b74fdfc3026f635b23157af33101fd736fe1fe91","original_commit_id":"b74fdfc3026f635b23157af33101fd736fe1fe91","user":{"login":"TessenR","id":5566206,"node_id":"MDQ6VXNlcjU1NjYyMDY=","avatar_url":"https://avatars1.githubusercontent.com/u/5566206?v=4","gravatar_id":"","url":"https://api.github.com/users/TessenR","html_url":"https://github.com/TessenR","followers_url":"https://api.github.com/users/TessenR/followers","following_url":"https://api.github.com/users/TessenR/following{/other_user}","gists_url":"https://api.github.com/users/TessenR/gists{/gist_id}","starred_url":"https://api.github.com/users/TessenR/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/TessenR/subscriptions","organizations_url":"https://api.github.com/users/TessenR/orgs","repos_url":"https://api.github.com/users/TessenR/repos","events_url":"https://api.github.com/users/TessenR/events{/privacy}","received_events_url":"https://api.github.com/users/TessenR/received_events","type":"User","site_admin":false},"body":"I wonder how this would/should work with code like this:\r\n\r\n```cs\r\nclass MonoBehaviour\r\n{\r\n  public virtual extern void Start();\r\n}\r\n\r\nabstract class C : MonoBehaviour\r\n{\r\n  public abstract override void Start(); // move something to this method\r\n}\r\n```","created_at":"2018-11-12T03:20:47Z","updated_at":"2018-11-12T03:35:29Z","html_url":"https://github.com/JetBrains/resharper-unity/pull/878#discussion_r232526167","pull_request_url":"https://api.github.com/repos/JetBrains/resharper-unity/pulls/878","author_association":"NONE","_links":{"self":{"href":"https://api.github.com/repos/JetBrains/resharper-unity/pulls/comments/232526167"},"html":{"href":"https://github.com/JetBrains/resharper-unity/pull/878#discussion_r232526167"},"pull_request":{"href":"https://api.github.com/repos/JetBrains/resharper-unity/pulls/878"}}},"pull_request":{"url":"https://api.github.com/repos/JetBrains/resharper-unity/pulls/878","id":228023427,"node_id":"MDExOlB1bGxSZXF1ZXN0MjI4MDIzNDI3","html_url":"https://github.com/JetBrains/resharper-unity/pull/878","diff_url":"https://github.com/JetBrains/resharper-unity/pull/878.diff","patch_url":"https://github.com/JetBrains/resharper-unity/pull/878.patch","issue_url":"https://api.github.com/repos/JetBrains/resharper-unity/issues/878","number":878,"state":"closed","locked":false,"title":"Updates in performance highlightings.","user":{"login":"krasnotsvetov","id":15616242,"node_id":"MDQ6VXNlcjE1NjE2MjQy","avatar_url":"https://avatars1.githubusercontent.com/u/15616242?v=4","gravatar_id":"","url":"https://api.github.com/users/krasnotsvetov","html_url":"https://github.com/krasnotsvetov","followers_url":"https://api.github.com/users/krasnotsvetov/followers","following_url":"https://api.github.com/users/krasnotsvetov/following{/other_user}","gists_url":"https://api.github.com/users/krasnotsvetov/gists{/gist_id}","starred_url":"https://api.github.com/users/krasnotsvetov/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/krasnotsvetov/subscriptions","organizations_url":"https://api.github.com/users/krasnotsvetov/orgs","repos_url":"https://api.github.com/users/krasnotsvetov/repos","events_url":"https://api.github.com/users/krasnotsvetov/events{/privacy}","received_events_url":"https://api.github.com/users/krasnotsvetov/received_events","type":"User","site_admin":false},"body":"1.  Add context \"Move to start\", \"Move to awake\" and \"Move outside the loop\" if current operation in loop. (All context actions is available only in per frame methods and methods that are reachable from them)\r\n a. Currently not solution-wide (only for opened file)\r\n b. This operations can break semantics, so they are just only context actions, not quickfixes\r\n2. Add highlighting on gutter for each performance method\r\n3. Add possibility to disable highlightings\r\n","created_at":"2018-11-02T18:29:33Z","updated_at":"2018-11-12T03:35:29Z","closed_at":"2018-11-08T17:10:17Z","merged_at":"2018-11-08T17:10:17Z","merge_commit_sha":"a68bba92443f884cbac94aebb4ad99c4a9970232","assignee":null,"assignees":[],"requested_reviewers":[{"login":"citizenmatt","id":222659,"node_id":"MDQ6VXNlcjIyMjY1OQ==","avatar_url":"https://avatars1.githubusercontent.com/u/222659?v=4","gravatar_id":"","url":"https://api.github.com/users/citizenmatt","html_url":"https://github.com/citizenmatt","followers_url":"https://api.github.com/users/citizenmatt/followers","following_url":"https://api.github.com/users/citizenmatt/following{/other_user}","gists_url":"https://api.github.com/users/citizenmatt/gists{/gist_id}","starred_url":"https://api.github.com/users/citizenmatt/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/citizenmatt/subscriptions","organizations_url":"https://api.github.com/users/citizenmatt/orgs","repos_url":"https://api.github.com/users/citizenmatt/repos","events_url":"https://api.github.com/users/citizenmatt/events{/privacy}","received_events_url":"https://api.github.com/users/citizenmatt/received_events","type":"User","site_admin":false}],"requested_teams":[],"labels":[],"milestone":null,"commits_url":"https://api.github.com/repos/JetBrains/resharper-unity/pulls/878/commits","review_comments_url":"https://api.github.com/repos/JetBrains/resharper-unity/pulls/878/comments","review_comment_url":"https://api.github.com/repos/JetBrains/resharper-unity/pulls/comments{/number}","comments_url":"https://api.github.com/repos/JetBrains/resharper-unity/issues/878/comments","statuses_url":"https://api.github.com/repos/JetBrains/resharper-unity/statuses/b74fdfc3026f635b23157af33101fd736fe1fe91","head":{"label":"JetBrains:183-vk-performance-stage","ref":"183-vk-performance-stage","sha":"b74fdfc3026f635b23157af33101fd736fe1fe91","user":{"login":"JetBrains","id":878437,"node_id":"MDEyOk9yZ2FuaXphdGlvbjg3ODQzNw==","avatar_url":"https://avatars2.githubusercontent.com/u/878437?v=4","gravatar_id":"","url":"https://api.github.com/users/JetBrains","html_url":"https://github.com/JetBrains","followers_url":"https://api.github.com/users/JetBrains/followers","following_url":"https://api.github.com/users/JetBrains/following{/other_user}","gists_url":"https://api.github.com/users/JetBrains/gists{/gist_id}","starred_url":"https://api.github.com/users/JetBrains/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/JetBrains/subscriptions","organizations_url":"https://api.github.com/users/JetBrains/orgs","repos_url":"https://api.github.com/users/JetBrains/repos","events_url":"https://api.github.com/users/JetBrains/events{/privacy}","received_events_url":"https://api.github.com/users/JetBrains/received_events","type":"Organization","site_admin":false},"repo":{"id":42181594,"node_id":"MDEwOlJlcG9zaXRvcnk0MjE4MTU5NA==","name":"resharper-unity","full_name":"JetBrains/resharper-unity","private":false,"owner":{"login":"JetBrains","id":878437,"node_id":"MDEyOk9yZ2FuaXphdGlvbjg3ODQzNw==","avatar_url":"https://avatars2.githubusercontent.com/u/878437?v=4","gravatar_id":"","url":"https://api.github.com/users/JetBrains","html_url":"https://github.com/JetBrains","followers_url":"https://api.github.com/users/JetBrains/followers","following_url":"https://api.github.com/users/JetBrains/following{/other_user}","gists_url":"https://api.github.com/users/JetBrains/gists{/gist_id}","starred_url":"https://api.github.com/users/JetBrains/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/JetBrains/subscriptions","organizations_url":"https://api.github.com/users/JetBrains/orgs","repos_url":"https://api.github.com/users/JetBrains/repos","events_url":"https://api.github.com/users/JetBrains/events{/privacy}","received_events_url":"https://api.github.com/users/JetBrains/received_events","type":"Organization","site_admin":false},"html_url":"https://github.com/JetBrains/resharper-unity","description":"Unity support for both ReSharper and Rider","fork":false,"url":"https://api.github.com/repos/JetBrains/resharper-unity","forks_url":"https://api.github.com/repos/JetBrains/resharper-unity/forks","keys_url":"https://api.github.com/repos/JetBrains/resharper-unity/keys{/key_id}","collaborators_url":"https://api.github.com/repos/JetBrains/resharper-unity/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/JetBrains/resharper-unity/teams","hooks_url":"https://api.github.com/repos/JetBrains/resharper-unity/hooks","issue_events_url":"https://api.github.com/repos/JetBrains/resharper-unity/issues/events{/number}","events_url":"https://api.github.com/repos/JetBrains/resharper-unity/events","assignees_url":"https://api.github.com/repos/JetBrains/resharper-unity/assignees{/user}","branches_url":"https://api.github.com/repos/JetBrains/resharper-unity/branches{/branch}","tags_url":"https://api.github.com/repos/JetBrains/resharper-unity/tags","blobs_url":"https://api.github.com/repos/JetBrains/resharper-unity/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/JetBrains/resharper-unity/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/JetBrains/resharper-unity/git/refs{/sha}","trees_url":"https://api.github.com/repos/JetBrains/resharper-unity/git/trees{/sha}","statuses_url":"https://api.github.com/repos/JetBrains/resharper-unity/statuses/{sha}","languages_url":"https://api.github.com/repos/JetBrains/resharper-unity/languages","stargazers_url":"https://api.github.com/repos/JetBrains/resharper-unity/stargazers","contributors_url":"https://api.github.com/repos/JetBrains/resharper-unity/contributors","subscribers_url":"https://api.github.com/repos/JetBrains/resharper-unity/subscribers","subscription_url":"https://api.github.com/repos/JetBrains/resharper-unity/subscription","commits_url":"https://api.github.com/repos/JetBrains/resharper-unity/commits{/sha}","git_commits_url":"https://api.github.com/repos/JetBrains/resharper-unity/git/commits{/sha}","comments_url":"https://api.github.com/repos/JetBrains/resharper-unity/comments{/number}","issue_comment_url":"https://api.github.com/repos/JetBrains/resharper-unity/issues/comments{/number}","contents_url":"https://api.github.com/repos/JetBrains/resharper-unity/contents/{+path}","compare_url":"https://api.github.com/repos/JetBrains/resharper-unity/compare/{base}...{head}","merges_url":"https://api.github.com/repos/JetBrains/resharper-unity/merges","archive_url":"https://api.github.com/repos/JetBrains/resharper-unity/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/JetBrains/resharper-unity/downloads","issues_url":"https://api.github.com/repos/JetBrains/resharper-unity/issues{/number}","pulls_url":"https://api.github.com/repos/JetBrains/resharper-unity/pulls{/number}","milestones_url":"https://api.github.com/repos/JetBrains/resharper-unity/milestones{/number}","notifications_url":"https://api.github.com/repos/JetBrains/resharper-unity/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/JetBrains/resharper-unity/labels{/name}","releases_url":"https://api.github.com/repos/JetBrains/resharper-unity/releases{/id}","deployments_url":"https://api.github.com/repos/JetBrains/resharper-unity/deployments","created_at":"2015-09-09T13:56:12Z","updated_at":"2018-11-11T17:19:26Z","pushed_at":"2018-11-11T17:19:27Z","git_url":"git://github.com/JetBrains/resharper-unity.git","ssh_url":"git@github.com:JetBrains/resharper-unity.git","clone_url":"https://github.com/JetBrains/resharper-unity.git","svn_url":"https://github.com/JetBrains/resharper-unity","homepage":"","size":12051,"stargazers_count":617,"watchers_count":617,"language":"C#","has_issues":true,"has_projects":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":84,"mirror_url":null,"archived":false,"open_issues_count":135,"license":{"key":"apache-2.0","name":"Apache License 2.0","spdx_id":"Apache-2.0","url":"https://api.github.com/licenses/apache-2.0","node_id":"MDc6TGljZW5zZTI="},"forks":84,"open_issues":135,"watchers":617,"default_branch":"183"}},"base":{"label":"JetBrains:183","ref":"183","sha":"a49a31512e22a1f16085d4656bcf1ec9bc46c0bb","user":{"login":"JetBrains","id":878437,"node_id":"MDEyOk9yZ2FuaXphdGlvbjg3ODQzNw==","avatar_url":"https://avatars2.githubusercontent.com/u/878437?v=4","gravatar_id":"","url":"https://api.github.com/users/JetBrains","html_url":"https://github.com/JetBrains","followers_url":"https://api.github.com/users/JetBrains/followers","following_url":"https://api.github.com/users/JetBrains/following{/other_user}","gists_url":"https://api.github.com/users/JetBrains/gists{/gist_id}","starred_url":"https://api.github.com/users/JetBrains/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/JetBrains/subscriptions","organizations_url":"https://api.github.com/users/JetBrains/orgs","repos_url":"https://api.github.com/users/JetBrains/repos","events_url":"https://api.github.com/users/JetBrains/events{/privacy}","received_events_url":"https://api.github.com/users/JetBrains/received_events","type":"Organization","site_admin":false},"repo":{"id":42181594,"node_id":"MDEwOlJlcG9zaXRvcnk0MjE4MTU5NA==","name":"resharper-unity","full_name":"JetBrains/resharper-unity","private":false,"owner":{"login":"JetBrains","id":878437,"node_id":"MDEyOk9yZ2FuaXphdGlvbjg3ODQzNw==","avatar_url":"https://avatars2.githubusercontent.com/u/878437?v=4","gravatar_id":"","url":"https://api.github.com/users/JetBrains","html_url":"https://github.com/JetBrains","followers_url":"https://api.github.com/users/JetBrains/followers","following_url":"https://api.github.com/users/JetBrains/following{/other_user}","gists_url":"https://api.github.com/users/JetBrains/gists{/gist_id}","starred_url":"https://api.github.com/users/JetBrains/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/JetBrains/subscriptions","organizations_url":"https://api.github.com/users/JetBrains/orgs","repos_url":"https://api.github.com/users/JetBrains/repos","events_url":"https://api.github.com/users/JetBrains/events{/privacy}","received_events_url":"https://api.github.com/users/JetBrains/received_events","type":"Organization","site_admin":false},"html_url":"https://github.com/JetBrains/resharper-unity","description":"Unity support for both ReSharper and Rider","fork":false,"url":"https://api.github.com/repos/JetBrains/resharper-unity","forks_url":"https://api.github.com/repos/JetBrains/resharper-unity/forks","keys_url":"https://api.github.com/repos/JetBrains/resharper-unity/keys{/key_id}","collaborators_url":"https://api.github.com/repos/JetBrains/resharper-unity/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/JetBrains/resharper-unity/teams","hooks_url":"https://api.github.com/repos/JetBrains/resharper-unity/hooks","issue_events_url":"https://api.github.com/repos/JetBrains/resharper-unity/issues/events{/number}","events_url":"https://api.github.com/repos/JetBrains/resharper-unity/events","assignees_url":"https://api.github.com/repos/JetBrains/resharper-unity/assignees{/user}","branches_url":"https://api.github.com/repos/JetBrains/resharper-unity/branches{/branch}","tags_url":"https://api.github.com/repos/JetBrains/resharper-unity/tags","blobs_url":"https://api.github.com/repos/JetBrains/resharper-unity/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/JetBrains/resharper-unity/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/JetBrains/resharper-unity/git/refs{/sha}","trees_url":"https://api.github.com/repos/JetBrains/resharper-unity/git/trees{/sha}","statuses_url":"https://api.github.com/repos/JetBrains/resharper-unity/statuses/{sha}","languages_url":"https://api.github.com/repos/JetBrains/resharper-unity/languages","stargazers_url":"https://api.github.com/repos/JetBrains/resharper-unity/stargazers","contributors_url":"https://api.github.com/repos/JetBrains/resharper-unity/contributors","subscribers_url":"https://api.github.com/repos/JetBrains/resharper-unity/subscribers","subscription_url":"https://api.github.com/repos/JetBrains/resharper-unity/subscription","commits_url":"https://api.github.com/repos/JetBrains/resharper-unity/commits{/sha}","git_commits_url":"https://api.github.com/repos/JetBrains/resharper-unity/git/commits{/sha}","comments_url":"https://api.github.com/repos/JetBrains/resharper-unity/comments{/number}","issue_comment_url":"https://api.github.com/repos/JetBrains/resharper-unity/issues/comments{/number}","contents_url":"https://api.github.com/repos/JetBrains/resharper-unity/contents/{+path}","compare_url":"https://api.github.com/repos/JetBrains/resharper-unity/compare/{base}...{head}","merges_url":"https://api.github.com/repos/JetBrains/resharper-unity/merges","archive_url":"https://api.github.com/repos/JetBrains/resharper-unity/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/JetBrains/resharper-unity/downloads","issues_url":"https://api.github.com/repos/JetBrains/resharper-unity/issues{/number}","pulls_url":"https://api.github.com/repos/JetBrains/resharper-unity/pulls{/number}","milestones_url":"https://api.github.com/repos/JetBrains/resharper-unity/milestones{/number}","notifications_url":"https://api.github.com/repos/JetBrains/resharper-unity/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/JetBrains/resharper-unity/labels{/name}","releases_url":"https://api.github.com/repos/JetBrains/resharper-unity/releases{/id}","deployments_url":"https://api.github.com/repos/JetBrains/resharper-unity/deployments","created_at":"2015-09-09T13:56:12Z","updated_at":"2018-11-11T17:19:26Z","pushed_at":"2018-11-11T17:19:27Z","git_url":"git://github.com/JetBrains/resharper-unity.git","ssh_url":"git@github.com:JetBrains/resharper-unity.git","clone_url":"https://github.com/JetBrains/resharper-unity.git","svn_url":"https://github.com/JetBrains/resharper-unity","homepage":"","size":12051,"stargazers_count":617,"watchers_count":617,"language":"C#","has_issues":true,"has_projects":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":84,"mirror_url":null,"archived":false,"open_issues_count":135,"license":{"key":"apache-2.0","name":"Apache License 2.0","spdx_id":"Apache-2.0","url":"https://api.github.com/licenses/apache-2.0","node_id":"MDc6TGljZW5zZTI="},"forks":84,"open_issues":135,"watchers":617,"default_branch":"183"}},"_links":{"self":{"href":"https://api.github.com/repos/JetBrains/resharper-unity/pulls/878"},"html":{"href":"https://github.com/JetBrains/resharper-unity/pull/878"},"issue":{"href":"https://api.github.com/repos/JetBrains/resharper-unity/issues/878"},"comments":{"href":"https://api.github.com/repos/JetBrains/resharper-unity/issues/878/comments"},"review_comments":{"href":"https://api.github.com/repos/JetBrains/resharper-unity/pulls/878/comments"},"review_comment":{"href":"https://api.github.com/repos/JetBrains/resharper-unity/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/JetBrains/resharper-unity/pulls/878/commits"},"statuses":{"href":"https://api.github.com/repos/JetBrains/resharper-unity/statuses/b74fdfc3026f635b23157af33101fd736fe1fe91"}},"author_association":"CONTRIBUTOR"}}
{"actor":{"display_login":"TessenR"}}