{"action":"created","comment":{"url":"https://api.github.com/repos/INRIA/spoon/pulls/comments/74547877","id":74547877,"diff_hunk":"@@ -0,0 +1,333 @@\n+/**\n+ * Copyright (C) 2006-2016 INRIA and contributors\n+ * Spoon - http://spoon.gforge.inria.fr/\n+ *\n+ * This software is governed by the CeCILL-C License under French law and\n+ * abiding by the rules of distribution of free software. You can use, modify\n+ * and/or redistribute the software under the terms of the CeCILL-C license as\n+ * circulated by CEA, CNRS and INRIA at http://www.cecill.info.\n+ *\n+ * This program is distributed in the hope that it will be useful, but WITHOUT\n+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or\n+ * FITNESS FOR A PARTICULAR PURPOSE. See the CeCILL-C License for more details.\n+ *\n+ * The fact that you are presently reading this means that you have had\n+ * knowledge of the CeCILL-C license and that you accept its terms.\n+ */\n+package spoon.support.compiler.jdt;\n+\n+import org.eclipse.jdt.core.compiler.CharOperation;\n+import org.eclipse.jdt.internal.compiler.ast.Annotation;\n+import org.eclipse.jdt.internal.compiler.ast.Assignment;\n+import org.eclipse.jdt.internal.compiler.ast.CompilationUnitDeclaration;\n+import org.eclipse.jdt.internal.compiler.ast.Expression;\n+import org.eclipse.jdt.internal.compiler.ast.ImportReference;\n+import org.eclipse.jdt.internal.compiler.ast.OperatorIds;\n+import org.eclipse.jdt.internal.compiler.ast.QualifiedNameReference;\n+import org.eclipse.jdt.internal.compiler.ast.TypeDeclaration;\n+import org.eclipse.jdt.internal.compiler.classfmt.ClassFileConstants;\n+import org.eclipse.jdt.internal.compiler.lookup.AnnotationBinding;\n+import org.eclipse.jdt.internal.compiler.lookup.FieldBinding;\n+import org.eclipse.jdt.internal.compiler.lookup.ProblemFieldBinding;\n+import org.eclipse.jdt.internal.compiler.lookup.ReferenceBinding;\n+import org.eclipse.jdt.internal.compiler.lookup.TypeBinding;\n+import spoon.reflect.code.BinaryOperatorKind;\n+import spoon.reflect.code.UnaryOperatorKind;\n+import spoon.reflect.declaration.CtAnnotatedElementType;\n+import spoon.reflect.declaration.ModifierKind;\n+\n+import java.util.EnumSet;\n+import java.util.Set;\n+\n+class JDTTreeBuilderQuery {\n+\t/**\n+\t * Searches a type from an entry-point according to a simple name.\n+\t *\n+\t * @param type\n+\t * \t\tEntry-point to search.\n+\t * @param simpleName\n+\t * \t\tExpected type name.\n+\t * @return type binding.\n+\t */\n+\tstatic TypeBinding searchTypeBinding(ReferenceBinding type, String simpleName) {\n+\t\tif (simpleName == null || type == null) {\n+\t\t\treturn null;\n+\t\t}\n+\n+\t\tif (type.memberTypes() != null) {\n+\t\t\tfor (ReferenceBinding memberType : type.memberTypes()) {\n+\t\t\t\tif (simpleName.equals(CharOperation.charToString(memberType.sourceName()))) {\n+\t\t\t\t\treturn memberType;\n+\t\t\t\t}\n+\t\t\t}\n+\t\t}\n+\n+\t\treturn searchTypeBinding(type.superclass(), simpleName);\n+\t}\n+\n+\t/**\n+\t * Searches a type used in units declared in a compilation unit.\n+\t *\n+\t * @param qualifiedName\n+\t * \t\tQualified name of the expected type.\n+\t * @param unitsToProcess\n+\t * \t\tSearch the type expected in units.\n+\t * @return type binding.\n+\t */\n+\tstatic TypeBinding searchTypeBinding(String qualifiedName, CompilationUnitDeclaration[] unitsToProcess) {\n+\t\tif (qualifiedName == null) {\n+\t\t\treturn null;\n+\t\t}\n+\t\tfor (CompilationUnitDeclaration unitToProcess : unitsToProcess) {\n+\t\t\tfor (TypeDeclaration type : unitToProcess.types) {\n+\t\t\t\tif (qualifiedName.equals(CharOperation.toString(type.binding.compoundName))) {\n+\t\t\t\t\treturn type.binding;\n+\t\t\t\t}\n+\t\t\t\tif (type.memberTypes != null) {\n+\t\t\t\t\tfor (TypeDeclaration memberType : type.memberTypes) {\n+\t\t\t\t\t\tif (qualifiedName.equals(CharOperation.toString(memberType.binding.compoundName))) {\n+\t\t\t\t\t\t\treturn type.binding;\n+\t\t\t\t\t\t}\n+\t\t\t\t\t}\n+\t\t\t\t}\n+\t\t\t}\n+\t\t}\n+\t\treturn null;\n+\t}\n+\n+\t/**\n+\t * Searches a type declared in imports.\n+\t *\n+\t * @param typeName\n+\t * \t\tExpected type name.\n+\t * @param imports\n+\t * \t\tSearch the type in imports.\n+\t * @return qualified name of the expected type.\n+\t */\n+\tstatic String searchType(String typeName, ImportReference[] imports) {\n+\t\tif (typeName == null) {\n+\t\t\treturn null;\n+\t\t} else if (imports == null) {\n+\t\t\treturn null;\n+\t\t}\n+\t\tfor (ImportReference anImport : imports) {\n+\t\t\tfinal String importType = CharOperation.charToString(anImport.getImportName()[anImport.getImportName().length - 1]);\n+\t\t\tif (importType != null && importType.equals(typeName)) {\n+\t\t\t\treturn CharOperation.toString(anImport.getImportName());\n+\t\t\t}\n+\t\t}\n+\t\treturn null;\n+\t}\n+\n+\t/**\n+\t * Searches a package used in units declared in a compilation unit.\n+\t *\n+\t * @param packageName\n+\t * \t\tPackage name.\n+\t * @param unitsToProcess\n+\t * \t\tSearch the package expected in units.\n+\t * @return import reference which correspond to the package expected.\n+\t */\n+\tstatic ImportReference searchPackage(char[][] packageName, CompilationUnitDeclaration[] unitsToProcess) {\n+\t\tfor (CompilationUnitDeclaration unit : unitsToProcess) {\n+\t\t\tfinal ImportReference currentPackage = unit.currentPackage;\n+\t\t\tfinal char[][] tokens = currentPackage.tokens;\n+\t\t\tif (packageName.length > tokens.length) {\n+\t\t\t\tcontinue;\n+\t\t\t}\n+\t\t\tboolean isFound = true;\n+\t\t\tfor (int i = 0; i < packageName.length; i++) {\n+\t\t\t\tchar[] chars = packageName[i];\n+\t\t\t\tif (!CharOperation.equals(chars, tokens[i])) {\n+\t\t\t\t\tisFound = false;\n+\t\t\t\t\tbreak;\n+\t\t\t\t}\n+\t\t\t}\n+\t\t\tif (isFound) {\n+\t\t\t\treturn currentPackage;\n+\t\t\t}\n+\t\t}\n+\t\treturn null;\n+\t}\n+\n+\t/**\n+\t * Checks in an annotation if a given type is present.\n+\t *\n+\t * @param a\n+\t * \t\tAn annotation.\n+\t * @param elementType\n+\t * \t\tExpected element type of the annotation.\n+\t * @return true if the annotation is compatible with the given element type.\n+\t */\n+\tstatic boolean hasAnnotationWithType(Annotation a, CtAnnotatedElementType elementType) {\n+\t\tif (a.resolvedType == null) {\n+\t\t\treturn false;\n+\t\t}\n+\t\tfor (AnnotationBinding annotation : a.resolvedType.getAnnotations()) {\n+\t\t\tif (!\"Target\".equals(CharOperation.charToString(annotation.getAnnotationType().sourceName()))) {\n+\t\t\t\tcontinue;\n+\t\t\t}\n+\t\t\tObject value = annotation.getElementValuePairs()[0].value;\n+\t\t\tif (value == null || !value.getClass().isArray()) {\n+\t\t\t\tcontinue;\n+\t\t\t}\n+\t\t\tObject[] fields = (Object[]) value;\n+\t\t\tfor (Object field : fields) {\n+\t\t\t\tif (field instanceof FieldBinding && elementType.name().equals(CharOperation.charToString(((FieldBinding) field).name))) {\n+\t\t\t\t\treturn true;\n+\t\t\t\t}\n+\t\t\t}\n+\t\t}\n+\t\treturn false;\n+\t}\n+\n+\t/**\n+\t * Checks if the qualified name reference is a problem field binding and have a valid field.\n+\t *\n+\t * @param qualifiedNameReference\n+\t * \t\tReference which should contains a problem field binding.\n+\t * @return true if the qualified name reference is a valid problem field binding.\n+\t */\n+\tstatic boolean isValidProblemBindingField(QualifiedNameReference qualifiedNameReference) {\n+\t\treturn qualifiedNameReference.binding instanceof ProblemFieldBinding && !((FieldBinding) qualifiedNameReference.binding).declaringClass.isAnonymousType()\n+\t\t\t\t&& qualifiedNameReference.tokens.length - 1 == ((FieldBinding) qualifiedNameReference.binding).declaringClass.compoundName.length && CharOperation\n+\t\t\t\t.equals(CharOperation.subarray(qualifiedNameReference.tokens, 0, qualifiedNameReference.tokens.length - 1),\n+\t\t\t\t\t\t((FieldBinding) qualifiedNameReference.binding).declaringClass.compoundName);\n+\t}\n+\n+\t/**\n+\t * Checks if the last node in the stack in the context is an assignment and have a lhs equals to the given expression.\n+\t *\n+\t * @param context\n+\t * \t\tContext of the {@link JDTTreeBuilder}.\n+\t * @param lhs\n+\t * \t\tPotential lhs of the assignment.","path":"src/main/java/spoon/support/compiler/jdt/JDTTreeBuilderQuery.java","position":204,"original_position":204,"commit_id":"ed53e00d005152eaa10a1be171f96d2423487f1c","original_commit_id":"ed53e00d005152eaa10a1be171f96d2423487f1c","user":{"login":"tdurieux","id":5577568,"avatar_url":"https://avatars.githubusercontent.com/u/5577568?v=3","gravatar_id":"","url":"https://api.github.com/users/tdurieux","html_url":"https://github.com/tdurieux","followers_url":"https://api.github.com/users/tdurieux/followers","following_url":"https://api.github.com/users/tdurieux/following{/other_user}","gists_url":"https://api.github.com/users/tdurieux/gists{/gist_id}","starred_url":"https://api.github.com/users/tdurieux/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/tdurieux/subscriptions","organizations_url":"https://api.github.com/users/tdurieux/orgs","repos_url":"https://api.github.com/users/tdurieux/repos","events_url":"https://api.github.com/users/tdurieux/events{/privacy}","received_events_url":"https://api.github.com/users/tdurieux/received_events","type":"User","site_admin":false},"body":"What does `lhs` mean?","created_at":"2016-08-12T06:51:00Z","updated_at":"2016-08-12T06:51:00Z","html_url":"https://github.com/INRIA/spoon/pull/784#discussion_r74547877","pull_request_url":"https://api.github.com/repos/INRIA/spoon/pulls/784","_links":{"self":{"href":"https://api.github.com/repos/INRIA/spoon/pulls/comments/74547877"},"html":{"href":"https://github.com/INRIA/spoon/pull/784#discussion_r74547877"},"pull_request":{"href":"https://api.github.com/repos/INRIA/spoon/pulls/784"}}},"pull_request":{"url":"https://api.github.com/repos/INRIA/spoon/pulls/784","id":81001332,"html_url":"https://github.com/INRIA/spoon/pull/784","diff_url":"https://github.com/INRIA/spoon/pull/784.diff","patch_url":"https://github.com/INRIA/spoon/pull/784.patch","issue_url":"https://api.github.com/repos/INRIA/spoon/issues/784","number":784,"state":"open","locked":false,"title":"Refactors DefaultJavaPrettyPrinter and JDTTreeBuilder 🎉","user":{"login":"GerardPaligot","id":1913901,"avatar_url":"https://avatars.githubusercontent.com/u/1913901?v=3","gravatar_id":"","url":"https://api.github.com/users/GerardPaligot","html_url":"https://github.com/GerardPaligot","followers_url":"https://api.github.com/users/GerardPaligot/followers","following_url":"https://api.github.com/users/GerardPaligot/following{/other_user}","gists_url":"https://api.github.com/users/GerardPaligot/gists{/gist_id}","starred_url":"https://api.github.com/users/GerardPaligot/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/GerardPaligot/subscriptions","organizations_url":"https://api.github.com/users/GerardPaligot/orgs","repos_url":"https://api.github.com/users/GerardPaligot/repos","events_url":"https://api.github.com/users/GerardPaligot/events{/privacy}","received_events_url":"https://api.github.com/users/GerardPaligot/received_events","type":"User","site_admin":false},"body":"","created_at":"2016-08-11T17:55:24Z","updated_at":"2016-08-12T06:51:00Z","closed_at":null,"merged_at":null,"merge_commit_sha":"c8746dc35739ecc7e3f2bfd8c8d834565dcb5a7b","assignee":null,"assignees":[],"milestone":null,"commits_url":"https://api.github.com/repos/INRIA/spoon/pulls/784/commits","review_comments_url":"https://api.github.com/repos/INRIA/spoon/pulls/784/comments","review_comment_url":"https://api.github.com/repos/INRIA/spoon/pulls/comments{/number}","comments_url":"https://api.github.com/repos/INRIA/spoon/issues/784/comments","statuses_url":"https://api.github.com/repos/INRIA/spoon/statuses/ed53e00d005152eaa10a1be171f96d2423487f1c","head":{"label":"GerardPaligot:refactor_printer_jdt","ref":"refactor_printer_jdt","sha":"ed53e00d005152eaa10a1be171f96d2423487f1c","user":{"login":"GerardPaligot","id":1913901,"avatar_url":"https://avatars.githubusercontent.com/u/1913901?v=3","gravatar_id":"","url":"https://api.github.com/users/GerardPaligot","html_url":"https://github.com/GerardPaligot","followers_url":"https://api.github.com/users/GerardPaligot/followers","following_url":"https://api.github.com/users/GerardPaligot/following{/other_user}","gists_url":"https://api.github.com/users/GerardPaligot/gists{/gist_id}","starred_url":"https://api.github.com/users/GerardPaligot/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/GerardPaligot/subscriptions","organizations_url":"https://api.github.com/users/GerardPaligot/orgs","repos_url":"https://api.github.com/users/GerardPaligot/repos","events_url":"https://api.github.com/users/GerardPaligot/events{/privacy}","received_events_url":"https://api.github.com/users/GerardPaligot/received_events","type":"User","site_admin":false},"repo":{"id":22967197,"name":"spoon","full_name":"GerardPaligot/spoon","owner":{"login":"GerardPaligot","id":1913901,"avatar_url":"https://avatars.githubusercontent.com/u/1913901?v=3","gravatar_id":"","url":"https://api.github.com/users/GerardPaligot","html_url":"https://github.com/GerardPaligot","followers_url":"https://api.github.com/users/GerardPaligot/followers","following_url":"https://api.github.com/users/GerardPaligot/following{/other_user}","gists_url":"https://api.github.com/users/GerardPaligot/gists{/gist_id}","starred_url":"https://api.github.com/users/GerardPaligot/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/GerardPaligot/subscriptions","organizations_url":"https://api.github.com/users/GerardPaligot/orgs","repos_url":"https://api.github.com/users/GerardPaligot/repos","events_url":"https://api.github.com/users/GerardPaligot/events{/privacy}","received_events_url":"https://api.github.com/users/GerardPaligot/received_events","type":"User","site_admin":false},"private":false,"html_url":"https://github.com/GerardPaligot/spoon","description":"Spoon is a library for analyzing and transforming Java source code.","fork":true,"url":"https://api.github.com/repos/GerardPaligot/spoon","forks_url":"https://api.github.com/repos/GerardPaligot/spoon/forks","keys_url":"https://api.github.com/repos/GerardPaligot/spoon/keys{/key_id}","collaborators_url":"https://api.github.com/repos/GerardPaligot/spoon/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/GerardPaligot/spoon/teams","hooks_url":"https://api.github.com/repos/GerardPaligot/spoon/hooks","issue_events_url":"https://api.github.com/repos/GerardPaligot/spoon/issues/events{/number}","events_url":"https://api.github.com/repos/GerardPaligot/spoon/events","assignees_url":"https://api.github.com/repos/GerardPaligot/spoon/assignees{/user}","branches_url":"https://api.github.com/repos/GerardPaligot/spoon/branches{/branch}","tags_url":"https://api.github.com/repos/GerardPaligot/spoon/tags","blobs_url":"https://api.github.com/repos/GerardPaligot/spoon/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/GerardPaligot/spoon/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/GerardPaligot/spoon/git/refs{/sha}","trees_url":"https://api.github.com/repos/GerardPaligot/spoon/git/trees{/sha}","statuses_url":"https://api.github.com/repos/GerardPaligot/spoon/statuses/{sha}","languages_url":"https://api.github.com/repos/GerardPaligot/spoon/languages","stargazers_url":"https://api.github.com/repos/GerardPaligot/spoon/stargazers","contributors_url":"https://api.github.com/repos/GerardPaligot/spoon/contributors","subscribers_url":"https://api.github.com/repos/GerardPaligot/spoon/subscribers","subscription_url":"https://api.github.com/repos/GerardPaligot/spoon/subscription","commits_url":"https://api.github.com/repos/GerardPaligot/spoon/commits{/sha}","git_commits_url":"https://api.github.com/repos/GerardPaligot/spoon/git/commits{/sha}","comments_url":"https://api.github.com/repos/GerardPaligot/spoon/comments{/number}","issue_comment_url":"https://api.github.com/repos/GerardPaligot/spoon/issues/comments{/number}","contents_url":"https://api.github.com/repos/GerardPaligot/spoon/contents/{+path}","compare_url":"https://api.github.com/repos/GerardPaligot/spoon/compare/{base}...{head}","merges_url":"https://api.github.com/repos/GerardPaligot/spoon/merges","archive_url":"https://api.github.com/repos/GerardPaligot/spoon/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/GerardPaligot/spoon/downloads","issues_url":"https://api.github.com/repos/GerardPaligot/spoon/issues{/number}","pulls_url":"https://api.github.com/repos/GerardPaligot/spoon/pulls{/number}","milestones_url":"https://api.github.com/repos/GerardPaligot/spoon/milestones{/number}","notifications_url":"https://api.github.com/repos/GerardPaligot/spoon/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/GerardPaligot/spoon/labels{/name}","releases_url":"https://api.github.com/repos/GerardPaligot/spoon/releases{/id}","deployments_url":"https://api.github.com/repos/GerardPaligot/spoon/deployments","created_at":"2014-08-14T20:12:45Z","updated_at":"2016-01-14T15:22:44Z","pushed_at":"2016-08-11T17:43:36Z","git_url":"git://github.com/GerardPaligot/spoon.git","ssh_url":"git@github.com:GerardPaligot/spoon.git","clone_url":"https://github.com/GerardPaligot/spoon.git","svn_url":"https://github.com/GerardPaligot/spoon","homepage":"http://spoon.gforge.inria.fr/","size":8431,"stargazers_count":0,"watchers_count":0,"language":"Java","has_issues":false,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":1,"mirror_url":null,"open_issues_count":0,"forks":1,"open_issues":0,"watchers":0,"default_branch":"master"}},"base":{"label":"INRIA:master","ref":"master","sha":"cebc443af4f411f948d2ea76778a72972fd45f9b","user":{"login":"INRIA","id":2951919,"avatar_url":"https://avatars.githubusercontent.com/u/2951919?v=3","gravatar_id":"","url":"https://api.github.com/users/INRIA","html_url":"https://github.com/INRIA","followers_url":"https://api.github.com/users/INRIA/followers","following_url":"https://api.github.com/users/INRIA/following{/other_user}","gists_url":"https://api.github.com/users/INRIA/gists{/gist_id}","starred_url":"https://api.github.com/users/INRIA/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/INRIA/subscriptions","organizations_url":"https://api.github.com/users/INRIA/orgs","repos_url":"https://api.github.com/users/INRIA/repos","events_url":"https://api.github.com/users/INRIA/events{/privacy}","received_events_url":"https://api.github.com/users/INRIA/received_events","type":"Organization","site_admin":false},"repo":{"id":14176513,"name":"spoon","full_name":"INRIA/spoon","owner":{"login":"INRIA","id":2951919,"avatar_url":"https://avatars.githubusercontent.com/u/2951919?v=3","gravatar_id":"","url":"https://api.github.com/users/INRIA","html_url":"https://github.com/INRIA","followers_url":"https://api.github.com/users/INRIA/followers","following_url":"https://api.github.com/users/INRIA/following{/other_user}","gists_url":"https://api.github.com/users/INRIA/gists{/gist_id}","starred_url":"https://api.github.com/users/INRIA/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/INRIA/subscriptions","organizations_url":"https://api.github.com/users/INRIA/orgs","repos_url":"https://api.github.com/users/INRIA/repos","events_url":"https://api.github.com/users/INRIA/events{/privacy}","received_events_url":"https://api.github.com/users/INRIA/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/INRIA/spoon","description":"Spoon is a library for analyzing, rewriting, transforming Java source code. It parses source files to build a well-designed AST with powerful analysis and transformation API. It fully supports Java 8.  :beers: :sparkles:","fork":false,"url":"https://api.github.com/repos/INRIA/spoon","forks_url":"https://api.github.com/repos/INRIA/spoon/forks","keys_url":"https://api.github.com/repos/INRIA/spoon/keys{/key_id}","collaborators_url":"https://api.github.com/repos/INRIA/spoon/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/INRIA/spoon/teams","hooks_url":"https://api.github.com/repos/INRIA/spoon/hooks","issue_events_url":"https://api.github.com/repos/INRIA/spoon/issues/events{/number}","events_url":"https://api.github.com/repos/INRIA/spoon/events","assignees_url":"https://api.github.com/repos/INRIA/spoon/assignees{/user}","branches_url":"https://api.github.com/repos/INRIA/spoon/branches{/branch}","tags_url":"https://api.github.com/repos/INRIA/spoon/tags","blobs_url":"https://api.github.com/repos/INRIA/spoon/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/INRIA/spoon/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/INRIA/spoon/git/refs{/sha}","trees_url":"https://api.github.com/repos/INRIA/spoon/git/trees{/sha}","statuses_url":"https://api.github.com/repos/INRIA/spoon/statuses/{sha}","languages_url":"https://api.github.com/repos/INRIA/spoon/languages","stargazers_url":"https://api.github.com/repos/INRIA/spoon/stargazers","contributors_url":"https://api.github.com/repos/INRIA/spoon/contributors","subscribers_url":"https://api.github.com/repos/INRIA/spoon/subscribers","subscription_url":"https://api.github.com/repos/INRIA/spoon/subscription","commits_url":"https://api.github.com/repos/INRIA/spoon/commits{/sha}","git_commits_url":"https://api.github.com/repos/INRIA/spoon/git/commits{/sha}","comments_url":"https://api.github.com/repos/INRIA/spoon/comments{/number}","issue_comment_url":"https://api.github.com/repos/INRIA/spoon/issues/comments{/number}","contents_url":"https://api.github.com/repos/INRIA/spoon/contents/{+path}","compare_url":"https://api.github.com/repos/INRIA/spoon/compare/{base}...{head}","merges_url":"https://api.github.com/repos/INRIA/spoon/merges","archive_url":"https://api.github.com/repos/INRIA/spoon/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/INRIA/spoon/downloads","issues_url":"https://api.github.com/repos/INRIA/spoon/issues{/number}","pulls_url":"https://api.github.com/repos/INRIA/spoon/pulls{/number}","milestones_url":"https://api.github.com/repos/INRIA/spoon/milestones{/number}","notifications_url":"https://api.github.com/repos/INRIA/spoon/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/INRIA/spoon/labels{/name}","releases_url":"https://api.github.com/repos/INRIA/spoon/releases{/id}","deployments_url":"https://api.github.com/repos/INRIA/spoon/deployments","created_at":"2013-11-06T15:29:59Z","updated_at":"2016-08-01T11:07:00Z","pushed_at":"2016-08-11T17:55:24Z","git_url":"git://github.com/INRIA/spoon.git","ssh_url":"git@github.com:INRIA/spoon.git","clone_url":"https://github.com/INRIA/spoon.git","svn_url":"https://github.com/INRIA/spoon","homepage":"http://spoon.gforge.inria.fr/","size":16681,"stargazers_count":241,"watchers_count":241,"language":"Java","has_issues":true,"has_downloads":true,"has_wiki":false,"has_pages":false,"forks_count":50,"mirror_url":null,"open_issues_count":23,"forks":50,"open_issues":23,"watchers":241,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/INRIA/spoon/pulls/784"},"html":{"href":"https://github.com/INRIA/spoon/pull/784"},"issue":{"href":"https://api.github.com/repos/INRIA/spoon/issues/784"},"comments":{"href":"https://api.github.com/repos/INRIA/spoon/issues/784/comments"},"review_comments":{"href":"https://api.github.com/repos/INRIA/spoon/pulls/784/comments"},"review_comment":{"href":"https://api.github.com/repos/INRIA/spoon/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/INRIA/spoon/pulls/784/commits"},"statuses":{"href":"https://api.github.com/repos/INRIA/spoon/statuses/ed53e00d005152eaa10a1be171f96d2423487f1c"}}}}
{"actor":{"display_login":"tdurieux"}}