{"action":"created","comment":{"url":"https://api.github.com/repos/javaslang/javaslang/pulls/comments/77314616","id":77314616,"diff_hunk":"@@ -0,0 +1,171 @@\n+/*     / \\____  _    _  ____   ______  / \\ ____  __    _______\n+ *    /  /    \\/ \\  / \\/    \\ /  /\\__\\/  //    \\/  \\  //  /\\__\\   JΛVΛSLΛNG\n+ *  _/  /  /\\  \\  \\/  /  /\\  \\\\__\\\\  \\  //  /\\  \\ /\\\\/ \\ /__\\ \\   Copyright 2014-2016 Javaslang, http://javaslang.io\n+ * /___/\\_/  \\_/\\____/\\_/  \\_/\\__\\/__/\\__\\_/  \\_//  \\__/\\_____/   Licensed under the Apache License, Version 2.0\n+ */\n+package javaslang.collection;\n+\n+import javaslang.Tuple;\n+import javaslang.Tuple2;\n+import javaslang.collection.Multimap.ContainerType;\n+\n+import java.util.ArrayList;\n+import java.util.Collection;\n+import java.util.Objects;\n+import java.util.function.Function;\n+import java.util.function.Supplier;\n+import java.util.stream.Collector;\n+\n+/**\n+ * Implementations of common {@code Map} functions (not intended to be public).\n+ *\n+ * @author Ruslan Sennov, Daniel Dietrich\n+ * @since 2.1.0\n+ */\n+final class Multimaps {\n+\n+    static <K, V, K2, V2, M extends Multimap<K2, V2>> M bimap(\n+            Multimap<K, V> multimap,\n+            OfEntries<K2, V2, M> ofEntries,\n+            Function<? super K, ? extends K2> keyMapper,\n+            Function<? super V, ? extends V2> valueMapper) {\n+        Objects.requireNonNull(keyMapper, \"keyMapper is null\");\n+        Objects.requireNonNull(valueMapper, \"valueMapper is null\");\n+        final Iterator<Tuple2<K2, V2>> entries = multimap.iterator().map(entry -> Tuple.of(keyMapper.apply(entry._1), valueMapper.apply(entry._2)));\n+        return ofEntries.apply(entries);\n+    }\n+\n+    static <K, V> int size(Map<K, Traversable<V>> back) {\n+        return back.foldLeft(0, (s, t) -> s + t._2.size());\n+    }\n+\n+    static <K, V> java.util.Map<K, Collection<V>> toJavaMap(Multimap<K, V> multimap) {\n+        final java.util.Map<K, Collection<V>> javaMap = new java.util.HashMap<>();\n+        final Supplier<Collection<V>> javaContainerSupplier;\n+        final ContainerType containerType = multimap.getContainerType();\n+        if (containerType == ContainerType.SEQ) {\n+            javaContainerSupplier = java.util.ArrayList::new;\n+        } else if (containerType == ContainerType.SET) {\n+            javaContainerSupplier = java.util.HashSet::new;\n+        } else if (containerType == ContainerType.SORTED_SET) {\n+            javaContainerSupplier = java.util.TreeSet::new;\n+        } else {\n+            throw new IllegalStateException(\"Unknown ContainerType: \" + containerType);\n+        }\n+        for (Tuple2<K, V> t : multimap) {\n+            javaMap.computeIfAbsent(t._1, k -> javaContainerSupplier.get()).add(t._2);\n+        }\n+        return javaMap;\n+    }\n+\n+    abstract static class Builder<V> {\n+\n+        private final ContainerType containerType;\n+        private final Traversable<V> emptyContainer;\n+\n+        protected Builder(ContainerType containerType, Traversable<V> emptyContainer) {\n+            this.containerType = containerType;\n+            this.emptyContainer = emptyContainer;\n+        }\n+\n+        public abstract <K, V2 extends V> Multimap<K, V2> empty();\n+\n+        public abstract <K, V2 extends V> Multimap<K, V2> of(Object... pairs);\n+\n+        public abstract <K, V2 extends V> Multimap<K, V2> of(K key, V2 value);\n+\n+        public abstract <K, V2 extends V> Multimap<K, V2> of(Tuple2<? extends K, ? extends V2> entry);\n+\n+        public abstract <K, V2 extends V> Multimap<K, V2> ofEntries(Iterable<? extends Tuple2<? extends K, ? extends V2>> entries);\n+\n+        @SuppressWarnings(\"unchecked\")\n+        public abstract <K, V2 extends V> Multimap<K, V2> ofEntries(Tuple2<? extends K, ? extends V2>... entries);\n+\n+        @SuppressWarnings(\"unchecked\")\n+        public abstract <K, V2 extends V> Multimap<K, V2> ofEntries(java.util.Map.Entry<? extends K, ? extends V2>... entries);\n+\n+        public abstract <K, V2 extends V> Multimap<K, V2> fill(int n, Supplier<Tuple2<? extends K, ? extends V2>> supplier);\n+\n+        public abstract <K, V2 extends V> Multimap<K, V2> tabulate(int n, Function<? super Integer, Tuple2<? extends K, ? extends V2>> f);\n+\n+        public abstract <K, V2 extends V> Collector<Tuple2<K, V2>, ArrayList<Tuple2<K, V2>>, ? extends Multimap<K, V2>> collector();\n+\n+        // Returns the empty Map used as back for Multimap\n+        abstract <K, V2 extends V> Map<K, Traversable<V2>> emptyMap();\n+\n+        // Implementations must override the return type. Typically passed to `build()` using `this::ofMap`.\n+        abstract <K, V2 extends V> Multimap<K, V2> ofMap(Map<K, Traversable<V2>> back);\n+\n+        // Use by factory methods. Automatically casts to Multimap type.\n+        final <T, K, V2 extends V, M extends Multimap<K, V2>> M build(\n+                Iterable<T> entries,\n+                Function<T, K> getKey,\n+                Function<T, V2> getValue,\n+                OfMap<K, V2, M> ofMap) {\n+            Objects.requireNonNull(entries, \"entries is null\");\n+            Map<K, Traversable<V2>> back = emptyMap();\n+            for (T entry : entries) {\n+                final K key = getKey.apply(entry);\n+                final V2 value = getValue.apply(entry);\n+                // TODO(#1543): replace with `back.getOrElse(key, emptyContainer());`\n+                final Traversable<V2> container = back.containsKey(key) ? back.get(key).get() : emptyContainer();\n+                back = back.put(key, containerType.add(container, value));\n+            }\n+            return ofMap.apply(back);\n+        }\n+\n+        ContainerType containerType() {\n+            return containerType;\n+        }\n+\n+        // Notes on type-safety of widening the generic argument of the empty container:\n+        // - This should be ok for empty instances because no breaking up-casts take place.\n+        // - Also a Comparator should be reusable that is covariant in its argument type.\n+        @SuppressWarnings(\"unchecked\")\n+        <V2 extends V> Traversable<V2> emptyContainer() {\n+            return (Traversable<V2>) emptyContainer;\n+        }\n+\n+        static class Entries<K, V> implements Iterator<Object[]> {\n+\n+            int index = 0;\n+            Object[] pairs;\n+\n+            Entries(Object[] pairs) {\n+                Objects.requireNonNull(pairs, \"pairs is null\");\n+                if ((pairs.length & 1) != 0) {","path":"javaslang/src/main/java/javaslang/collection/Multimaps.java","position":160,"original_position":136,"commit_id":"b8845c83a6da951ac51a68a1615019fdd2c99b9a","original_commit_id":"f8cdefedf5944f97d605e1872fad92944c8f8be8","user":{"login":"paplorinc","id":1841944,"avatar_url":"https://avatars.githubusercontent.com/u/1841944?v=3","gravatar_id":"","url":"https://api.github.com/users/paplorinc","html_url":"https://github.com/paplorinc","followers_url":"https://api.github.com/users/paplorinc/followers","following_url":"https://api.github.com/users/paplorinc/following{/other_user}","gists_url":"https://api.github.com/users/paplorinc/gists{/gist_id}","starred_url":"https://api.github.com/users/paplorinc/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/paplorinc/subscriptions","organizations_url":"https://api.github.com/users/paplorinc/orgs","repos_url":"https://api.github.com/users/paplorinc/repos","events_url":"https://api.github.com/users/paplorinc/events{/privacy}","received_events_url":"https://api.github.com/users/paplorinc/received_events","type":"User","site_admin":false},"body":"this should be extracted to an `isEven` method, like\r\n```java\r\nstatic boolean hasEvenSize(Object[] pairs) { return (pairs.length & 1) != 0; }\r\n```","created_at":"2016-09-02T08:57:53Z","updated_at":"2016-09-02T08:57:53Z","html_url":"https://github.com/javaslang/javaslang/pull/1554#discussion_r77314616","pull_request_url":"https://api.github.com/repos/javaslang/javaslang/pulls/1554","_links":{"self":{"href":"https://api.github.com/repos/javaslang/javaslang/pulls/comments/77314616"},"html":{"href":"https://github.com/javaslang/javaslang/pull/1554#discussion_r77314616"},"pull_request":{"href":"https://api.github.com/repos/javaslang/javaslang/pulls/1554"}}},"pull_request":{"url":"https://api.github.com/repos/javaslang/javaslang/pulls/1554","id":83736221,"html_url":"https://github.com/javaslang/javaslang/pull/1554","diff_url":"https://github.com/javaslang/javaslang/pull/1554.diff","patch_url":"https://github.com/javaslang/javaslang/pull/1554.patch","issue_url":"https://api.github.com/repos/javaslang/javaslang/issues/1554","number":1554,"state":"open","locked":false,"title":"Removed abstractmultimap","user":{"login":"danieldietrich","id":743833,"avatar_url":"https://avatars.githubusercontent.com/u/743833?v=3","gravatar_id":"","url":"https://api.github.com/users/danieldietrich","html_url":"https://github.com/danieldietrich","followers_url":"https://api.github.com/users/danieldietrich/followers","following_url":"https://api.github.com/users/danieldietrich/following{/other_user}","gists_url":"https://api.github.com/users/danieldietrich/gists{/gist_id}","starred_url":"https://api.github.com/users/danieldietrich/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/danieldietrich/subscriptions","organizations_url":"https://api.github.com/users/danieldietrich/orgs","repos_url":"https://api.github.com/users/danieldietrich/repos","events_url":"https://api.github.com/users/danieldietrich/events{/privacy}","received_events_url":"https://api.github.com/users/danieldietrich/received_events","type":"User","site_admin":false},"body":"Hi @ruslansennov, @paplorinc,@zsolt-donca,\r\n\r\nthis is an ongoing (currently dirty) draft of the bugfix of #1326. I created an early PR so that you can track the changes.\r\n\r\nThis is one of several PRs. The checklist is updated [here](https://github.com/javaslang/javaslang/issues/1326#issuecomment-240726519).\r\n\r\n**Goal:**\r\n\r\nRemove all package-private super classes because method-references do not work for default implementations (JDK bug!).\r\n\r\n**What I did so far:**\r\n\r\n* Added Multimaps helper class similar to the new Maps class.\r\n* Found another abstraction for a common Multimap Builder\r\n* Started to move methods from AbstractMultimap to Multimaps. The generics and method arguments change.\r\n* Changes LinkedHashMultimap to use Multimaps.\r\n\r\n**TODO:**\r\n\r\n* Move the remaining methods from AbstractMultimap to Multimaps\r\n* Override missing methods and adjust return types in LinkedHashMap\r\n* Do the same for HashMultimap and TreeMultimap\r\n* **Fix the problem with the emptyInstance() when an underlying Comparator is present and the generic type changes. This blows up the Multimap when the original comparator is used on a new type.**\r\n* Delete AbstractMultimap\r\n\r\n","created_at":"2016-09-02T02:19:55Z","updated_at":"2016-09-02T08:57:53Z","closed_at":null,"merged_at":null,"merge_commit_sha":"029d8c3df4f7b61b6c29f55a5d6c11faa5e24d66","assignee":null,"assignees":[],"milestone":{"url":"https://api.github.com/repos/javaslang/javaslang/milestones/22","html_url":"https://github.com/javaslang/javaslang/milestones/2.0.4","labels_url":"https://api.github.com/repos/javaslang/javaslang/milestones/22/labels","id":1787074,"number":22,"title":"2.0.4","description":"Bugfix Release 2.0.4","creator":{"login":"danieldietrich","id":743833,"avatar_url":"https://avatars.githubusercontent.com/u/743833?v=3","gravatar_id":"","url":"https://api.github.com/users/danieldietrich","html_url":"https://github.com/danieldietrich","followers_url":"https://api.github.com/users/danieldietrich/followers","following_url":"https://api.github.com/users/danieldietrich/following{/other_user}","gists_url":"https://api.github.com/users/danieldietrich/gists{/gist_id}","starred_url":"https://api.github.com/users/danieldietrich/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/danieldietrich/subscriptions","organizations_url":"https://api.github.com/users/danieldietrich/orgs","repos_url":"https://api.github.com/users/danieldietrich/repos","events_url":"https://api.github.com/users/danieldietrich/events{/privacy}","received_events_url":"https://api.github.com/users/danieldietrich/received_events","type":"User","site_admin":false},"open_issues":3,"closed_issues":15,"state":"open","created_at":"2016-05-25T10:19:59Z","updated_at":"2016-09-02T02:19:55Z","due_on":null,"closed_at":null},"commits_url":"https://api.github.com/repos/javaslang/javaslang/pulls/1554/commits","review_comments_url":"https://api.github.com/repos/javaslang/javaslang/pulls/1554/comments","review_comment_url":"https://api.github.com/repos/javaslang/javaslang/pulls/comments{/number}","comments_url":"https://api.github.com/repos/javaslang/javaslang/issues/1554/comments","statuses_url":"https://api.github.com/repos/javaslang/javaslang/statuses/b8845c83a6da951ac51a68a1615019fdd2c99b9a","head":{"label":"danieldietrich:removed-abstractmultimap","ref":"removed-abstractmultimap","sha":"b8845c83a6da951ac51a68a1615019fdd2c99b9a","user":{"login":"danieldietrich","id":743833,"avatar_url":"https://avatars.githubusercontent.com/u/743833?v=3","gravatar_id":"","url":"https://api.github.com/users/danieldietrich","html_url":"https://github.com/danieldietrich","followers_url":"https://api.github.com/users/danieldietrich/followers","following_url":"https://api.github.com/users/danieldietrich/following{/other_user}","gists_url":"https://api.github.com/users/danieldietrich/gists{/gist_id}","starred_url":"https://api.github.com/users/danieldietrich/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/danieldietrich/subscriptions","organizations_url":"https://api.github.com/users/danieldietrich/orgs","repos_url":"https://api.github.com/users/danieldietrich/repos","events_url":"https://api.github.com/users/danieldietrich/events{/privacy}","received_events_url":"https://api.github.com/users/danieldietrich/received_events","type":"User","site_admin":false},"repo":{"id":54592360,"name":"javaslang","full_name":"danieldietrich/javaslang","owner":{"login":"danieldietrich","id":743833,"avatar_url":"https://avatars.githubusercontent.com/u/743833?v=3","gravatar_id":"","url":"https://api.github.com/users/danieldietrich","html_url":"https://github.com/danieldietrich","followers_url":"https://api.github.com/users/danieldietrich/followers","following_url":"https://api.github.com/users/danieldietrich/following{/other_user}","gists_url":"https://api.github.com/users/danieldietrich/gists{/gist_id}","starred_url":"https://api.github.com/users/danieldietrich/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/danieldietrich/subscriptions","organizations_url":"https://api.github.com/users/danieldietrich/orgs","repos_url":"https://api.github.com/users/danieldietrich/repos","events_url":"https://api.github.com/users/danieldietrich/events{/privacy}","received_events_url":"https://api.github.com/users/danieldietrich/received_events","type":"User","site_admin":false},"private":false,"html_url":"https://github.com/danieldietrich/javaslang","description":"A functional library for Java 8+ that provides persistent data types and functional control structures.","fork":true,"url":"https://api.github.com/repos/danieldietrich/javaslang","forks_url":"https://api.github.com/repos/danieldietrich/javaslang/forks","keys_url":"https://api.github.com/repos/danieldietrich/javaslang/keys{/key_id}","collaborators_url":"https://api.github.com/repos/danieldietrich/javaslang/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/danieldietrich/javaslang/teams","hooks_url":"https://api.github.com/repos/danieldietrich/javaslang/hooks","issue_events_url":"https://api.github.com/repos/danieldietrich/javaslang/issues/events{/number}","events_url":"https://api.github.com/repos/danieldietrich/javaslang/events","assignees_url":"https://api.github.com/repos/danieldietrich/javaslang/assignees{/user}","branches_url":"https://api.github.com/repos/danieldietrich/javaslang/branches{/branch}","tags_url":"https://api.github.com/repos/danieldietrich/javaslang/tags","blobs_url":"https://api.github.com/repos/danieldietrich/javaslang/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/danieldietrich/javaslang/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/danieldietrich/javaslang/git/refs{/sha}","trees_url":"https://api.github.com/repos/danieldietrich/javaslang/git/trees{/sha}","statuses_url":"https://api.github.com/repos/danieldietrich/javaslang/statuses/{sha}","languages_url":"https://api.github.com/repos/danieldietrich/javaslang/languages","stargazers_url":"https://api.github.com/repos/danieldietrich/javaslang/stargazers","contributors_url":"https://api.github.com/repos/danieldietrich/javaslang/contributors","subscribers_url":"https://api.github.com/repos/danieldietrich/javaslang/subscribers","subscription_url":"https://api.github.com/repos/danieldietrich/javaslang/subscription","commits_url":"https://api.github.com/repos/danieldietrich/javaslang/commits{/sha}","git_commits_url":"https://api.github.com/repos/danieldietrich/javaslang/git/commits{/sha}","comments_url":"https://api.github.com/repos/danieldietrich/javaslang/comments{/number}","issue_comment_url":"https://api.github.com/repos/danieldietrich/javaslang/issues/comments{/number}","contents_url":"https://api.github.com/repos/danieldietrich/javaslang/contents/{+path}","compare_url":"https://api.github.com/repos/danieldietrich/javaslang/compare/{base}...{head}","merges_url":"https://api.github.com/repos/danieldietrich/javaslang/merges","archive_url":"https://api.github.com/repos/danieldietrich/javaslang/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/danieldietrich/javaslang/downloads","issues_url":"https://api.github.com/repos/danieldietrich/javaslang/issues{/number}","pulls_url":"https://api.github.com/repos/danieldietrich/javaslang/pulls{/number}","milestones_url":"https://api.github.com/repos/danieldietrich/javaslang/milestones{/number}","notifications_url":"https://api.github.com/repos/danieldietrich/javaslang/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/danieldietrich/javaslang/labels{/name}","releases_url":"https://api.github.com/repos/danieldietrich/javaslang/releases{/id}","deployments_url":"https://api.github.com/repos/danieldietrich/javaslang/deployments","created_at":"2016-03-23T20:54:28Z","updated_at":"2016-03-23T20:54:30Z","pushed_at":"2016-09-02T01:57:09Z","git_url":"git://github.com/danieldietrich/javaslang.git","ssh_url":"git@github.com:danieldietrich/javaslang.git","clone_url":"https://github.com/danieldietrich/javaslang.git","svn_url":"https://github.com/danieldietrich/javaslang","homepage":"http://javaslang.io","size":12669,"stargazers_count":0,"watchers_count":0,"language":"Java","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":"javaslang:master","ref":"master","sha":"16f29310265658987b7185f8765989ab38bd8334","user":{"login":"javaslang","id":5786132,"avatar_url":"https://avatars.githubusercontent.com/u/5786132?v=3","gravatar_id":"","url":"https://api.github.com/users/javaslang","html_url":"https://github.com/javaslang","followers_url":"https://api.github.com/users/javaslang/followers","following_url":"https://api.github.com/users/javaslang/following{/other_user}","gists_url":"https://api.github.com/users/javaslang/gists{/gist_id}","starred_url":"https://api.github.com/users/javaslang/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/javaslang/subscriptions","organizations_url":"https://api.github.com/users/javaslang/orgs","repos_url":"https://api.github.com/users/javaslang/repos","events_url":"https://api.github.com/users/javaslang/events{/privacy}","received_events_url":"https://api.github.com/users/javaslang/received_events","type":"Organization","site_admin":false},"repo":{"id":16378879,"name":"javaslang","full_name":"javaslang/javaslang","owner":{"login":"javaslang","id":5786132,"avatar_url":"https://avatars.githubusercontent.com/u/5786132?v=3","gravatar_id":"","url":"https://api.github.com/users/javaslang","html_url":"https://github.com/javaslang","followers_url":"https://api.github.com/users/javaslang/followers","following_url":"https://api.github.com/users/javaslang/following{/other_user}","gists_url":"https://api.github.com/users/javaslang/gists{/gist_id}","starred_url":"https://api.github.com/users/javaslang/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/javaslang/subscriptions","organizations_url":"https://api.github.com/users/javaslang/orgs","repos_url":"https://api.github.com/users/javaslang/repos","events_url":"https://api.github.com/users/javaslang/events{/privacy}","received_events_url":"https://api.github.com/users/javaslang/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/javaslang/javaslang","description":"A functional library for Java 8+ that provides persistent data types and functional control structures.","fork":false,"url":"https://api.github.com/repos/javaslang/javaslang","forks_url":"https://api.github.com/repos/javaslang/javaslang/forks","keys_url":"https://api.github.com/repos/javaslang/javaslang/keys{/key_id}","collaborators_url":"https://api.github.com/repos/javaslang/javaslang/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/javaslang/javaslang/teams","hooks_url":"https://api.github.com/repos/javaslang/javaslang/hooks","issue_events_url":"https://api.github.com/repos/javaslang/javaslang/issues/events{/number}","events_url":"https://api.github.com/repos/javaslang/javaslang/events","assignees_url":"https://api.github.com/repos/javaslang/javaslang/assignees{/user}","branches_url":"https://api.github.com/repos/javaslang/javaslang/branches{/branch}","tags_url":"https://api.github.com/repos/javaslang/javaslang/tags","blobs_url":"https://api.github.com/repos/javaslang/javaslang/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/javaslang/javaslang/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/javaslang/javaslang/git/refs{/sha}","trees_url":"https://api.github.com/repos/javaslang/javaslang/git/trees{/sha}","statuses_url":"https://api.github.com/repos/javaslang/javaslang/statuses/{sha}","languages_url":"https://api.github.com/repos/javaslang/javaslang/languages","stargazers_url":"https://api.github.com/repos/javaslang/javaslang/stargazers","contributors_url":"https://api.github.com/repos/javaslang/javaslang/contributors","subscribers_url":"https://api.github.com/repos/javaslang/javaslang/subscribers","subscription_url":"https://api.github.com/repos/javaslang/javaslang/subscription","commits_url":"https://api.github.com/repos/javaslang/javaslang/commits{/sha}","git_commits_url":"https://api.github.com/repos/javaslang/javaslang/git/commits{/sha}","comments_url":"https://api.github.com/repos/javaslang/javaslang/comments{/number}","issue_comment_url":"https://api.github.com/repos/javaslang/javaslang/issues/comments{/number}","contents_url":"https://api.github.com/repos/javaslang/javaslang/contents/{+path}","compare_url":"https://api.github.com/repos/javaslang/javaslang/compare/{base}...{head}","merges_url":"https://api.github.com/repos/javaslang/javaslang/merges","archive_url":"https://api.github.com/repos/javaslang/javaslang/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/javaslang/javaslang/downloads","issues_url":"https://api.github.com/repos/javaslang/javaslang/issues{/number}","pulls_url":"https://api.github.com/repos/javaslang/javaslang/pulls{/number}","milestones_url":"https://api.github.com/repos/javaslang/javaslang/milestones{/number}","notifications_url":"https://api.github.com/repos/javaslang/javaslang/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/javaslang/javaslang/labels{/name}","releases_url":"https://api.github.com/repos/javaslang/javaslang/releases{/id}","deployments_url":"https://api.github.com/repos/javaslang/javaslang/deployments","created_at":"2014-01-30T14:07:25Z","updated_at":"2016-09-01T15:45:09Z","pushed_at":"2016-09-02T02:19:55Z","git_url":"git://github.com/javaslang/javaslang.git","ssh_url":"git@github.com:javaslang/javaslang.git","clone_url":"https://github.com/javaslang/javaslang.git","svn_url":"https://github.com/javaslang/javaslang","homepage":"http://javaslang.io","size":14300,"stargazers_count":1119,"watchers_count":1119,"language":"Java","has_issues":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":132,"mirror_url":null,"open_issues_count":122,"forks":132,"open_issues":122,"watchers":1119,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/javaslang/javaslang/pulls/1554"},"html":{"href":"https://github.com/javaslang/javaslang/pull/1554"},"issue":{"href":"https://api.github.com/repos/javaslang/javaslang/issues/1554"},"comments":{"href":"https://api.github.com/repos/javaslang/javaslang/issues/1554/comments"},"review_comments":{"href":"https://api.github.com/repos/javaslang/javaslang/pulls/1554/comments"},"review_comment":{"href":"https://api.github.com/repos/javaslang/javaslang/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/javaslang/javaslang/pulls/1554/commits"},"statuses":{"href":"https://api.github.com/repos/javaslang/javaslang/statuses/b8845c83a6da951ac51a68a1615019fdd2c99b9a"}}}}
{"actor":{"display_login":"paplorinc"}}