{"action":"created","comment":{"url":"https://api.github.com/repos/gradle/gradle/pulls/comments/92619738","pull_request_review_id":13127339,"id":92619738,"diff_hunk":"@@ -0,0 +1,231 @@\n+/*\n+ * Copyright 2016 the original author or authors.\n+ *\n+ * Licensed under the Apache License, Version 2.0 (the \"License\");\n+ * you may not use this file except in compliance with the License.\n+ * You may obtain a copy of the License at\n+ *\n+ *      http://www.apache.org/licenses/LICENSE-2.0\n+ *\n+ * Unless required by applicable law or agreed to in writing, software\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n+ * See the License for the specific language governing permissions and\n+ * limitations under the License.\n+ */\n+\n+package org.gradle.launcher.bootstrap;\n+\n+import org.gradle.internal.classloader.TransformingClassLoader;\n+import org.gradle.internal.classpath.ClassPath;\n+import org.gradle.util.internal.Java9ClassReader;\n+import org.objectweb.asm.ClassReader;\n+import org.objectweb.asm.ClassVisitor;\n+import org.objectweb.asm.ClassWriter;\n+import org.objectweb.asm.MethodVisitor;\n+import org.objectweb.asm.Opcodes;\n+import org.objectweb.asm.Type;\n+\n+import java.util.HashMap;\n+import java.util.Map;\n+\n+import static org.objectweb.asm.Opcodes.ILOAD;\n+\n+/**\n+ * Mixes in internal methods to core Gradle types.\n+ */\n+public class MixInCoreTypesTransformingClassLoader extends TransformingClassLoader {\n+    private static final Map<String, VisitorFactory> TRANSFORMED_TYPES;\n+\n+    static {\n+        Map<String, VisitorFactory> transformedTypes = new HashMap<String, VisitorFactory>();\n+        transformedTypes.put(\"org.gradle.api.internal.TaskInternal\", new VisitorFactory() {\n+            @Override\n+            public ClassVisitor createVisitor(ClassVisitor parent) {\n+                return new TaskInternalTransformer(parent);\n+            }\n+        });\n+        transformedTypes.put(\"org.gradle.api.internal.AbstractTask\", new VisitorFactory() {\n+            @Override\n+            public ClassVisitor createVisitor(ClassVisitor parent) {\n+                return new AbstractTaskTransformer(parent);\n+            }\n+        });\n+        transformedTypes.put(\"org.gradle.api.internal.TaskInputsInternal\", new VisitorFactory() {\n+            @Override\n+            public ClassVisitor createVisitor(ClassVisitor parent) {\n+                return new TaskInputsInternalTransformer(parent);\n+            }\n+        });\n+        transformedTypes.put(\"org.gradle.api.internal.DefaultTaskInputs\", new VisitorFactory() {\n+            @Override\n+            public ClassVisitor createVisitor(ClassVisitor parent) {\n+                return new DefaultTaskInputsTransformer(parent);\n+            }\n+        });\n+        TRANSFORMED_TYPES = transformedTypes;\n+    }\n+\n+    public MixInCoreTypesTransformingClassLoader(ClassLoader parent, ClassPath classPath) {\n+        super(parent, classPath);\n+    }\n+\n+    @Override\n+    protected boolean shouldTransform(String className) {\n+        return TRANSFORMED_TYPES.containsKey(className);\n+    }\n+\n+    @Override\n+    protected byte[] transform(String className, byte[] bytes) {\n+        ClassReader classReader = new Java9ClassReader(bytes);\n+        ClassWriter classWriter = new ClassWriter(ClassWriter.COMPUTE_FRAMES | ClassWriter.COMPUTE_MAXS);\n+        ClassVisitor visitor = TRANSFORMED_TYPES.get(className).createVisitor(classWriter);\n+        classReader.accept(visitor, 0);\n+        return classWriter.toByteArray();\n+    }\n+\n+    /**\n+     * Adds overrides with internal return types for {@link org.gradle.api.Task#getInputs()} and\n+     * {@link org.gradle.api.Task#getOutputs()} to {@link org.gradle.api.internal.TaskInternal}.\n+     */\n+    private static class TaskInternalTransformer extends ClassVisitor {\n+        public TaskInternalTransformer(ClassVisitor cv) {\n+            super(Opcodes.ASM5, cv);\n+        }\n+\n+        @Override\n+        public void visitEnd() {\n+            addInterfaceMethod(cv,\n+                getType(\"org.gradle.api.internal.TaskInputsInternal\"),\n+                \"getInputs\"\n+            );\n+            addInterfaceMethod(cv,\n+                getType(\"org.gradle.api.internal.TaskOutputsInternal\"),\n+                \"getOutputs\"\n+            );\n+            super.visitEnd();\n+        }\n+    }\n+\n+    /**\n+     * Adds overrides with internal return types for {@link org.gradle.api.Task#getInputs()} and\n+     * {@link org.gradle.api.Task#getOutputs()} to {@link org.gradle.api.internal.AbstractTask}.\n+     */\n+    private static class AbstractTaskTransformer extends ClassVisitor {\n+        public AbstractTaskTransformer(ClassVisitor cv) {\n+            super(Opcodes.ASM5, cv);\n+        }\n+\n+        @Override\n+        public void visitEnd() {\n+            addBridgeMethod(cv,\n+                getType(\"org.gradle.api.internal.TaskInputsInternal\"),\n+                \"getInputs\",\n+                getType(\"org.gradle.api.Task\"),\n+                getType(\"org.gradle.api.tasks.TaskInputs\")\n+            );\n+            addBridgeMethod(cv,\n+                getType(\"org.gradle.api.internal.TaskOutputsInternal\"),\n+                \"getOutputs\",\n+                getType(\"org.gradle.api.Task\"),\n+                getType(\"org.gradle.api.tasks.TaskOutputs\")\n+            );\n+            super.visitEnd();\n+        }\n+    }\n+\n+    /**\n+     * Adds overrides with internal return types for {@link org.gradle.api.tasks.TaskInputs#file()} and\n+     * {@code dir()} and {@code files()} to {@link org.gradle.api.internal.tasks.DefaultTaskInputs}.\n+     */\n+    private static class TaskInputsInternalTransformer extends ClassVisitor {\n+        public TaskInputsInternalTransformer(ClassVisitor cv) {\n+            super(Opcodes.ASM5, cv);\n+        }\n+\n+        @Override\n+        public void visitEnd() {\n+            addInterfaceMethod(cv,\n+                getType(\"org.gradle.api.internal.tasks.TaskInputFilePropertyBuilderInternal\"),\n+                \"file\",\n+                Type.getType(Object.class)\n+            );\n+            addInterfaceMethod(cv,\n+                getType(\"org.gradle.api.internal.tasks.TaskInputFilePropertyBuilderInternal\"),\n+                \"dir\",\n+                Type.getType(Object.class));\n+            addInterfaceMethod(cv,\n+                getType(\"org.gradle.api.internal.tasks.TaskInputFilePropertyBuilderInternal\"),\n+                \"files\",\n+                Type.getType(Object[].class));","path":"subprojects/launcher/src/main/java/org/gradle/launcher/bootstrap/MixInCoreTypesTransformingClassLoader.java","position":160,"original_position":160,"commit_id":"486c511e0646f8acefa2608fc403df85923652e2","original_commit_id":"486c511e0646f8acefa2608fc403df85923652e2","user":{"login":"wolfs","id":423186,"avatar_url":"https://avatars.githubusercontent.com/u/423186?v=3","gravatar_id":"","url":"https://api.github.com/users/wolfs","html_url":"https://github.com/wolfs","followers_url":"https://api.github.com/users/wolfs/followers","following_url":"https://api.github.com/users/wolfs/following{/other_user}","gists_url":"https://api.github.com/users/wolfs/gists{/gist_id}","starred_url":"https://api.github.com/users/wolfs/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/wolfs/subscriptions","organizations_url":"https://api.github.com/users/wolfs/orgs","repos_url":"https://api.github.com/users/wolfs/repos","events_url":"https://api.github.com/users/wolfs/events{/privacy}","received_events_url":"https://api.github.com/users/wolfs/received_events","type":"User","site_admin":false},"body":"Do we need to add the `ACC_VARARGS` modifier here?","created_at":"2016-12-15T14:35:32Z","updated_at":"2016-12-15T14:45:00Z","html_url":"https://github.com/gradle/gradle/pull/1021#discussion_r92619738","pull_request_url":"https://api.github.com/repos/gradle/gradle/pulls/1021","_links":{"self":{"href":"https://api.github.com/repos/gradle/gradle/pulls/comments/92619738"},"html":{"href":"https://github.com/gradle/gradle/pull/1021#discussion_r92619738"},"pull_request":{"href":"https://api.github.com/repos/gradle/gradle/pulls/1021"}}},"pull_request":{"url":"https://api.github.com/repos/gradle/gradle/pulls/1021","id":98134222,"html_url":"https://github.com/gradle/gradle/pull/1021","diff_url":"https://github.com/gradle/gradle/pull/1021.diff","patch_url":"https://github.com/gradle/gradle/pull/1021.patch","issue_url":"https://api.github.com/repos/gradle/gradle/issues/1021","number":1021,"state":"open","locked":false,"title":"Fix TaskInputs internals leak","user":{"login":"lptr","id":495366,"avatar_url":"https://avatars.githubusercontent.com/u/495366?v=3","gravatar_id":"","url":"https://api.github.com/users/lptr","html_url":"https://github.com/lptr","followers_url":"https://api.github.com/users/lptr/followers","following_url":"https://api.github.com/users/lptr/following{/other_user}","gists_url":"https://api.github.com/users/lptr/gists{/gist_id}","starred_url":"https://api.github.com/users/lptr/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/lptr/subscriptions","organizations_url":"https://api.github.com/users/lptr/orgs","repos_url":"https://api.github.com/users/lptr/repos","events_url":"https://api.github.com/users/lptr/events{/privacy}","received_events_url":"https://api.github.com/users/lptr/received_events","type":"User","site_admin":false},"body":"This is a fix for #1004. `AbstractTask` and `TaskInternal` now don't expose `TaskInputsInternal` anymore. `MixInCoreTypesTransformingClassLoader` is introduced that mixes in the missing methods with the internal return types instead.","created_at":"2016-12-15T11:36:51Z","updated_at":"2016-12-15T14:45:00Z","closed_at":null,"merged_at":null,"merge_commit_sha":"f0618c18ba08d4966dac522e679780706d635b24","assignee":{"login":"lptr","id":495366,"avatar_url":"https://avatars.githubusercontent.com/u/495366?v=3","gravatar_id":"","url":"https://api.github.com/users/lptr","html_url":"https://github.com/lptr","followers_url":"https://api.github.com/users/lptr/followers","following_url":"https://api.github.com/users/lptr/following{/other_user}","gists_url":"https://api.github.com/users/lptr/gists{/gist_id}","starred_url":"https://api.github.com/users/lptr/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/lptr/subscriptions","organizations_url":"https://api.github.com/users/lptr/orgs","repos_url":"https://api.github.com/users/lptr/repos","events_url":"https://api.github.com/users/lptr/events{/privacy}","received_events_url":"https://api.github.com/users/lptr/received_events","type":"User","site_admin":false},"assignees":[{"login":"lptr","id":495366,"avatar_url":"https://avatars.githubusercontent.com/u/495366?v=3","gravatar_id":"","url":"https://api.github.com/users/lptr","html_url":"https://github.com/lptr","followers_url":"https://api.github.com/users/lptr/followers","following_url":"https://api.github.com/users/lptr/following{/other_user}","gists_url":"https://api.github.com/users/lptr/gists{/gist_id}","starred_url":"https://api.github.com/users/lptr/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/lptr/subscriptions","organizations_url":"https://api.github.com/users/lptr/orgs","repos_url":"https://api.github.com/users/lptr/repos","events_url":"https://api.github.com/users/lptr/events{/privacy}","received_events_url":"https://api.github.com/users/lptr/received_events","type":"User","site_admin":false}],"milestone":{"url":"https://api.github.com/repos/gradle/gradle/milestones/14","html_url":"https://github.com/gradle/gradle/milestone/14","labels_url":"https://api.github.com/repos/gradle/gradle/milestones/14/labels","id":2069480,"number":14,"title":"3.3 RC1","description":"","creator":{"login":"oehme","id":1191797,"avatar_url":"https://avatars.githubusercontent.com/u/1191797?v=3","gravatar_id":"","url":"https://api.github.com/users/oehme","html_url":"https://github.com/oehme","followers_url":"https://api.github.com/users/oehme/followers","following_url":"https://api.github.com/users/oehme/following{/other_user}","gists_url":"https://api.github.com/users/oehme/gists{/gist_id}","starred_url":"https://api.github.com/users/oehme/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/oehme/subscriptions","organizations_url":"https://api.github.com/users/oehme/orgs","repos_url":"https://api.github.com/users/oehme/repos","events_url":"https://api.github.com/users/oehme/events{/privacy}","received_events_url":"https://api.github.com/users/oehme/received_events","type":"User","site_admin":false},"open_issues":16,"closed_issues":16,"state":"open","created_at":"2016-10-14T07:03:58Z","updated_at":"2016-12-15T11:37:36Z","due_on":"2016-12-19T00:00:00Z","closed_at":null},"commits_url":"https://api.github.com/repos/gradle/gradle/pulls/1021/commits","review_comments_url":"https://api.github.com/repos/gradle/gradle/pulls/1021/comments","review_comment_url":"https://api.github.com/repos/gradle/gradle/pulls/comments{/number}","comments_url":"https://api.github.com/repos/gradle/gradle/issues/1021/comments","statuses_url":"https://api.github.com/repos/gradle/gradle/statuses/486c511e0646f8acefa2608fc403df85923652e2","head":{"label":"gradle:lp-fix-taskinputs-internals-leak","ref":"lp-fix-taskinputs-internals-leak","sha":"486c511e0646f8acefa2608fc403df85923652e2","user":{"login":"gradle","id":124156,"avatar_url":"https://avatars.githubusercontent.com/u/124156?v=3","gravatar_id":"","url":"https://api.github.com/users/gradle","html_url":"https://github.com/gradle","followers_url":"https://api.github.com/users/gradle/followers","following_url":"https://api.github.com/users/gradle/following{/other_user}","gists_url":"https://api.github.com/users/gradle/gists{/gist_id}","starred_url":"https://api.github.com/users/gradle/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/gradle/subscriptions","organizations_url":"https://api.github.com/users/gradle/orgs","repos_url":"https://api.github.com/users/gradle/repos","events_url":"https://api.github.com/users/gradle/events{/privacy}","received_events_url":"https://api.github.com/users/gradle/received_events","type":"Organization","site_admin":false},"repo":{"id":302322,"name":"gradle","full_name":"gradle/gradle","owner":{"login":"gradle","id":124156,"avatar_url":"https://avatars.githubusercontent.com/u/124156?v=3","gravatar_id":"","url":"https://api.github.com/users/gradle","html_url":"https://github.com/gradle","followers_url":"https://api.github.com/users/gradle/followers","following_url":"https://api.github.com/users/gradle/following{/other_user}","gists_url":"https://api.github.com/users/gradle/gists{/gist_id}","starred_url":"https://api.github.com/users/gradle/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/gradle/subscriptions","organizations_url":"https://api.github.com/users/gradle/orgs","repos_url":"https://api.github.com/users/gradle/repos","events_url":"https://api.github.com/users/gradle/events{/privacy}","received_events_url":"https://api.github.com/users/gradle/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/gradle/gradle","description":"A powerful build system for the JVM","fork":false,"url":"https://api.github.com/repos/gradle/gradle","forks_url":"https://api.github.com/repos/gradle/gradle/forks","keys_url":"https://api.github.com/repos/gradle/gradle/keys{/key_id}","collaborators_url":"https://api.github.com/repos/gradle/gradle/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/gradle/gradle/teams","hooks_url":"https://api.github.com/repos/gradle/gradle/hooks","issue_events_url":"https://api.github.com/repos/gradle/gradle/issues/events{/number}","events_url":"https://api.github.com/repos/gradle/gradle/events","assignees_url":"https://api.github.com/repos/gradle/gradle/assignees{/user}","branches_url":"https://api.github.com/repos/gradle/gradle/branches{/branch}","tags_url":"https://api.github.com/repos/gradle/gradle/tags","blobs_url":"https://api.github.com/repos/gradle/gradle/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/gradle/gradle/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/gradle/gradle/git/refs{/sha}","trees_url":"https://api.github.com/repos/gradle/gradle/git/trees{/sha}","statuses_url":"https://api.github.com/repos/gradle/gradle/statuses/{sha}","languages_url":"https://api.github.com/repos/gradle/gradle/languages","stargazers_url":"https://api.github.com/repos/gradle/gradle/stargazers","contributors_url":"https://api.github.com/repos/gradle/gradle/contributors","subscribers_url":"https://api.github.com/repos/gradle/gradle/subscribers","subscription_url":"https://api.github.com/repos/gradle/gradle/subscription","commits_url":"https://api.github.com/repos/gradle/gradle/commits{/sha}","git_commits_url":"https://api.github.com/repos/gradle/gradle/git/commits{/sha}","comments_url":"https://api.github.com/repos/gradle/gradle/comments{/number}","issue_comment_url":"https://api.github.com/repos/gradle/gradle/issues/comments{/number}","contents_url":"https://api.github.com/repos/gradle/gradle/contents/{+path}","compare_url":"https://api.github.com/repos/gradle/gradle/compare/{base}...{head}","merges_url":"https://api.github.com/repos/gradle/gradle/merges","archive_url":"https://api.github.com/repos/gradle/gradle/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/gradle/gradle/downloads","issues_url":"https://api.github.com/repos/gradle/gradle/issues{/number}","pulls_url":"https://api.github.com/repos/gradle/gradle/pulls{/number}","milestones_url":"https://api.github.com/repos/gradle/gradle/milestones{/number}","notifications_url":"https://api.github.com/repos/gradle/gradle/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/gradle/gradle/labels{/name}","releases_url":"https://api.github.com/repos/gradle/gradle/releases{/id}","deployments_url":"https://api.github.com/repos/gradle/gradle/deployments","created_at":"2009-09-09T18:27:19Z","updated_at":"2016-12-15T14:37:24Z","pushed_at":"2016-12-15T14:43:25Z","git_url":"git://github.com/gradle/gradle.git","ssh_url":"git@github.com:gradle/gradle.git","clone_url":"https://github.com/gradle/gradle.git","svn_url":"https://github.com/gradle/gradle","homepage":"gradle.org","size":152170,"stargazers_count":4246,"watchers_count":4246,"language":"Java","has_issues":true,"has_downloads":false,"has_wiki":true,"has_pages":false,"forks_count":1589,"mirror_url":null,"open_issues_count":206,"forks":1589,"open_issues":206,"watchers":4246,"default_branch":"master"}},"base":{"label":"gradle:release","ref":"release","sha":"9b7888c2a3bc4c15d00327ae03d802b693c4c574","user":{"login":"gradle","id":124156,"avatar_url":"https://avatars.githubusercontent.com/u/124156?v=3","gravatar_id":"","url":"https://api.github.com/users/gradle","html_url":"https://github.com/gradle","followers_url":"https://api.github.com/users/gradle/followers","following_url":"https://api.github.com/users/gradle/following{/other_user}","gists_url":"https://api.github.com/users/gradle/gists{/gist_id}","starred_url":"https://api.github.com/users/gradle/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/gradle/subscriptions","organizations_url":"https://api.github.com/users/gradle/orgs","repos_url":"https://api.github.com/users/gradle/repos","events_url":"https://api.github.com/users/gradle/events{/privacy}","received_events_url":"https://api.github.com/users/gradle/received_events","type":"Organization","site_admin":false},"repo":{"id":302322,"name":"gradle","full_name":"gradle/gradle","owner":{"login":"gradle","id":124156,"avatar_url":"https://avatars.githubusercontent.com/u/124156?v=3","gravatar_id":"","url":"https://api.github.com/users/gradle","html_url":"https://github.com/gradle","followers_url":"https://api.github.com/users/gradle/followers","following_url":"https://api.github.com/users/gradle/following{/other_user}","gists_url":"https://api.github.com/users/gradle/gists{/gist_id}","starred_url":"https://api.github.com/users/gradle/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/gradle/subscriptions","organizations_url":"https://api.github.com/users/gradle/orgs","repos_url":"https://api.github.com/users/gradle/repos","events_url":"https://api.github.com/users/gradle/events{/privacy}","received_events_url":"https://api.github.com/users/gradle/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/gradle/gradle","description":"A powerful build system for the JVM","fork":false,"url":"https://api.github.com/repos/gradle/gradle","forks_url":"https://api.github.com/repos/gradle/gradle/forks","keys_url":"https://api.github.com/repos/gradle/gradle/keys{/key_id}","collaborators_url":"https://api.github.com/repos/gradle/gradle/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/gradle/gradle/teams","hooks_url":"https://api.github.com/repos/gradle/gradle/hooks","issue_events_url":"https://api.github.com/repos/gradle/gradle/issues/events{/number}","events_url":"https://api.github.com/repos/gradle/gradle/events","assignees_url":"https://api.github.com/repos/gradle/gradle/assignees{/user}","branches_url":"https://api.github.com/repos/gradle/gradle/branches{/branch}","tags_url":"https://api.github.com/repos/gradle/gradle/tags","blobs_url":"https://api.github.com/repos/gradle/gradle/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/gradle/gradle/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/gradle/gradle/git/refs{/sha}","trees_url":"https://api.github.com/repos/gradle/gradle/git/trees{/sha}","statuses_url":"https://api.github.com/repos/gradle/gradle/statuses/{sha}","languages_url":"https://api.github.com/repos/gradle/gradle/languages","stargazers_url":"https://api.github.com/repos/gradle/gradle/stargazers","contributors_url":"https://api.github.com/repos/gradle/gradle/contributors","subscribers_url":"https://api.github.com/repos/gradle/gradle/subscribers","subscription_url":"https://api.github.com/repos/gradle/gradle/subscription","commits_url":"https://api.github.com/repos/gradle/gradle/commits{/sha}","git_commits_url":"https://api.github.com/repos/gradle/gradle/git/commits{/sha}","comments_url":"https://api.github.com/repos/gradle/gradle/comments{/number}","issue_comment_url":"https://api.github.com/repos/gradle/gradle/issues/comments{/number}","contents_url":"https://api.github.com/repos/gradle/gradle/contents/{+path}","compare_url":"https://api.github.com/repos/gradle/gradle/compare/{base}...{head}","merges_url":"https://api.github.com/repos/gradle/gradle/merges","archive_url":"https://api.github.com/repos/gradle/gradle/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/gradle/gradle/downloads","issues_url":"https://api.github.com/repos/gradle/gradle/issues{/number}","pulls_url":"https://api.github.com/repos/gradle/gradle/pulls{/number}","milestones_url":"https://api.github.com/repos/gradle/gradle/milestones{/number}","notifications_url":"https://api.github.com/repos/gradle/gradle/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/gradle/gradle/labels{/name}","releases_url":"https://api.github.com/repos/gradle/gradle/releases{/id}","deployments_url":"https://api.github.com/repos/gradle/gradle/deployments","created_at":"2009-09-09T18:27:19Z","updated_at":"2016-12-15T14:37:24Z","pushed_at":"2016-12-15T14:43:25Z","git_url":"git://github.com/gradle/gradle.git","ssh_url":"git@github.com:gradle/gradle.git","clone_url":"https://github.com/gradle/gradle.git","svn_url":"https://github.com/gradle/gradle","homepage":"gradle.org","size":152170,"stargazers_count":4246,"watchers_count":4246,"language":"Java","has_issues":true,"has_downloads":false,"has_wiki":true,"has_pages":false,"forks_count":1589,"mirror_url":null,"open_issues_count":206,"forks":1589,"open_issues":206,"watchers":4246,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/gradle/gradle/pulls/1021"},"html":{"href":"https://github.com/gradle/gradle/pull/1021"},"issue":{"href":"https://api.github.com/repos/gradle/gradle/issues/1021"},"comments":{"href":"https://api.github.com/repos/gradle/gradle/issues/1021/comments"},"review_comments":{"href":"https://api.github.com/repos/gradle/gradle/pulls/1021/comments"},"review_comment":{"href":"https://api.github.com/repos/gradle/gradle/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/gradle/gradle/pulls/1021/commits"},"statuses":{"href":"https://api.github.com/repos/gradle/gradle/statuses/486c511e0646f8acefa2608fc403df85923652e2"}}}}
{"actor":{"display_login":"wolfs"}}