{"action":"created","comment":{"url":"https://api.github.com/repos/javaslang/javaslang/pulls/comments/85669010","pull_request_review_id":6369422,"id":85669010,"diff_hunk":"@@ -0,0 +1,147 @@\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 java.io.Serializable;\n+\n+abstract class ArrayType<T> implements Serializable {\n+    private static final long serialVersionUID = 1L;\n+\n+    @SuppressWarnings(\"unchecked\")\n+    static <T> ArrayType<T> obj() { return (ArrayType<T>) ObjectArrayType.INSTANCE; }\n+\n+    abstract Class<T> type();\n+    abstract int lengthOf(Object array);\n+    abstract T getAt(Object array, int index);\n+\n+    abstract Object empty();\n+    abstract void setAt(Object array, int index, Object value);\n+    abstract Object copy(Object array, int arraySize, int sourceFrom, int destinationFrom, int size);\n+\n+    @SuppressWarnings(\"unchecked\")\n+    static <T> ArrayType<T> of(Object array) { return of((Class<T>) array.getClass().getComponentType()); }\n+    @SuppressWarnings(\"unchecked\")\n+    private static <T> ArrayType<T> of(Class<T> type) {\n+        if (!type.isPrimitive()) {\n+            return (ArrayType<T>) obj();\n+        } else {\n+            if (boolean.class == type) {\n+                return (ArrayType<T>) BooleanArrayType.INSTANCE;\n+            } else if (byte.class == type) {\n+                return (ArrayType<T>) ByteArrayType.INSTANCE;\n+            } else if (char.class == type) {\n+                return (ArrayType<T>) CharArrayType.INSTANCE;\n+            } else if (double.class == type) {\n+                return (ArrayType<T>) DoubleArrayType.INSTANCE;\n+            } else if (float.class == type) {\n+                return (ArrayType<T>) FloatArrayType.INSTANCE;\n+            } else if (int.class == type) {\n+                return (ArrayType<T>) IntArrayType.INSTANCE;\n+            } else if (long.class == type) {\n+                return (ArrayType<T>) LongArrayType.INSTANCE;\n+            } else if (short.class == type) {\n+                return (ArrayType<T>) ShortArrayType.INSTANCE;\n+            } else {\n+                throw new IllegalArgumentException(\"Unknown type: \" + type);\n+            }\n+        }","path":"javaslang/src/main/java/javaslang/collection/ArrayType.java","position":50,"original_position":50,"commit_id":"9bc8f5c322c7ce0946ea4931e05b7fb5efc628c8","original_commit_id":"6b4dc867af61081adb8cf3f03cc8f964e1840c02","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":"See suggested code in the comment above.","created_at":"2016-10-30T20:50:15Z","updated_at":"2016-10-30T20:53:38Z","html_url":"https://github.com/javaslang/javaslang/pull/1557#discussion_r85669010","pull_request_url":"https://api.github.com/repos/javaslang/javaslang/pulls/1557","_links":{"self":{"href":"https://api.github.com/repos/javaslang/javaslang/pulls/comments/85669010"},"html":{"href":"https://github.com/javaslang/javaslang/pull/1557#discussion_r85669010"},"pull_request":{"href":"https://api.github.com/repos/javaslang/javaslang/pulls/1557"}}},"pull_request":{"url":"https://api.github.com/repos/javaslang/javaslang/pulls/1557","id":83920068,"html_url":"https://github.com/javaslang/javaslang/pull/1557","diff_url":"https://github.com/javaslang/javaslang/pull/1557.diff","patch_url":"https://github.com/javaslang/javaslang/pull/1557.patch","issue_url":"https://api.github.com/repos/javaslang/javaslang/issues/1557","number":1557,"state":"open","locked":false,"title":"Automatic, internal primitive storage support for `Vector`","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 PR modifies the optimized `Vector` to store its data internally in the format it was created from, i.e. \n\n``` java\nVector.ofAll(3, 1, 4, 1, 5); // stored internally as `int[]`\n```\n\nwill create a `Vector` that has an `int[]` internally and\n\n``` java\nVector.ofAll(Arrays.asList(3, 1, 4, 1, 5)); // boxed to `Integer[]` by `asList`\n```\n\nwill have an `Object[]` inside.\n\nThe user doesn't have to know how it's stored internally (e.g. adding a `null` will automatically box everything in amortized constant time).\n\nInternally many operations can work with primitive arrays without boxing (e.g. `slice`, `iterate`, `filter`, `distinct`), but others have to wrap them to make sense (e.g. `flatMap`).\n\nMemory-wise storing primitives can be up to `~12×` more memory efficient (e.g. `53,968 bytes` for Vector<Byte> compared to `653,672 bytes` for `ArrayList<Byte>` (or `3,408,624 bytes` for Functional Java's `Seq<Byte>`)).\nInterestingly many operations are faster also (e.g. `create` and `iterate`), sometimes even faster than the `Java` counterpart - e.g. `filter` or `map`.\n\nThe [benchmarks](https://github.com/paplorinc/javaslang/blob/Primitivization/javaslang-benchmark/src/test/java/javaslang/collection/VectorBenchmark.java) are as follows:\n\n``` java\nOperation Ratio                                                32     1024    32768\nCreate    slang_persistent/java_mutable                     1.51×    0.92×    1.17×\nCreate    slang_persistent/java_mutable_boxed              11.10×    8.64×    6.17×\nCreate    slang_persistent/java_mutable_boxed_stream       16.68×   10.77×    9.57×\nCreate    slang_persistent/fjava_persistent               229.91×  216.16×  192.30×\nCreate    slang_persistent/pcollections_persistent        126.90×  253.86×  375.34×\nCreate    slang_persistent/ecollections_persistent          2.05×    0.95×    1.18×\nCreate    slang_persistent/clojure_persistent               0.95×   15.40×   12.79×\nCreate    slang_persistent/scala_persistent                13.96×    9.32×    6.43×\n\nHead      slang_persistent/java_mutable                     0.71×    0.53×    0.40×\nHead      slang_persistent/fjava_persistent                 0.85×    0.66×    0.51×\nHead      slang_persistent/pcollections_persistent          2.18×    3.75×    4.68×\nHead      slang_persistent/ecollections_persistent          0.77×    0.61×    0.47×\nHead      slang_persistent/clojure_persistent               0.70×    0.83×    0.90×\nHead      slang_persistent/scala_persistent                 0.78×    0.63×    0.49×\n\nTail      slang_persistent/java_mutable                     0.71×    0.56×    0.39×\nTail      slang_persistent/fjava_persistent                52.84×   50.26×   52.36×\nTail      slang_persistent/pcollections_persistent          5.85×    9.15×   12.06×\nTail      slang_persistent/ecollections_persistent         16.88×  156.82× 4301.60×\nTail      slang_persistent/clojure_persistent               0.93×    0.69×    0.60×\nTail      slang_persistent/scala_persistent                 2.98×    4.87×    5.97×\n\nGet       slang_persistent/java_mutable                     0.71×    0.12×    0.36×\nGet       slang_persistent/fjava_persistent                55.92×   28.12×   79.81×\nGet       slang_persistent/pcollections_persistent          8.32×    4.20×   17.46×\nGet       slang_persistent/ecollections_persistent          0.71×    0.10×    0.34×\nGet       slang_persistent/clojure_persistent               0.93×    0.37×    1.45×\nGet       slang_persistent/scala_persistent                 1.13×    0.30×    0.95×\n\nUpdate    slang_persistent/java_mutable                     0.11×    0.05×    0.03×\nUpdate    slang_persistent/fjava_persistent               133.11×  262.66×  222.09×\nUpdate    slang_persistent/pcollections_persistent          2.45×    4.30×    4.97×\nUpdate    slang_persistent/ecollections_persistent         13.88×  162.43× 2589.05×\nUpdate    slang_persistent/clojure_persistent               0.85×    1.23×    1.10×\nUpdate    slang_persistent/scala_persistent                 1.03×    1.07×    1.14×\n\nMap       slang_persistent/java_mutable                     2.19×    2.27×    2.00×\nMap       slang_persistent/java_mutable_loop                0.53×    0.67×    0.54×\nMap       slang_persistent/ecollections_persistent          1.16×    1.15×    1.06×\nMap       slang_persistent/scala_persistent                 1.03×    1.43×    1.73×\n\nFilter    slang_persistent/java_mutable                     1.97×    1.64×    1.15×\nFilter    slang_persistent/ecollections_persistent          1.67×    1.14×    0.92×\nFilter    slang_persistent/scala_persistent                 1.45×    1.44×    1.42×\n\nPrepend   slang_persistent/java_mutable                     0.38×    0.71×   11.80×\nPrepend   slang_persistent/fjava_persistent                 1.43×    1.62×    1.17×\nPrepend   slang_persistent/pcollections_persistent          0.94×    2.47×    2.95×\nPrepend   slang_persistent/ecollections_persistent          2.53×   27.04×  569.17×\nPrepend   slang_persistent/clojure_persistent               5.90×  124.95× 3177.65×\nPrepend   slang_persistent/scala_persistent                 0.22×    0.23×    0.15×\n\nAppend    slang_persistent/java_mutable                     0.25×    0.05×    0.03×\nAppend    slang_persistent/fjava_persistent                 5.18×    1.54×    1.02×\nAppend    slang_persistent/pcollections_persistent          2.71×    1.87×    2.22×\nAppend    slang_persistent/ecollections_persistent          7.93×   24.56×  560.25×\nAppend    slang_persistent/clojure_persistent               0.99×    0.23×    0.18×\nAppend    slang_persistent/scala_persistent                 0.81×    0.22×    0.16×\n\nGroupBy   slang_persistent/java_mutable                     0.43×    0.65×    0.83×\nGroupBy   slang_persistent/scala_persistent                 1.44×    1.05×    1.21×\n\nSlice     slang_persistent/java_mutable                     0.54×    0.49×    0.45×\nSlice     slang_persistent/pcollections_persistent          0.51×    0.42×    0.40×\nSlice     slang_persistent/clojure_persistent               0.54×    0.45×    0.43×\nSlice     slang_persistent/scala_persistent                 2.43×    5.61×    8.61×\n\nIterate   slang_persistent/java_mutable                     0.88×    0.45×    0.39×\nIterate   slang_persistent/fjava_persistent               368.25×  442.89×  289.54×\nIterate   slang_persistent/pcollections_persistent         14.61×   13.76×    9.42×\nIterate   slang_persistent/ecollections_persistent          2.35×    1.72×    1.52×\nIterate   slang_persistent/clojure_persistent               0.79×    1.03×    0.85×\nIterate   slang_persistent/scala_persistent                 1.53×    1.49×    0.90×\n```\n\nNote: Apparently `Java 9`  made some array copying optimizations (that made `append` slower than `prepend` in the first place), making `update`, `append` and `groupBy` slightly faster.\n\nprimitive:\n\n``` java\nOperation Ratio                                                32     1024    32768\nCreate    slang_persistent_int/java_mutable                 3.55×    1.71×    1.35×\nCreate    slang_persistent_int/java_mutable_boxed          26.16×   16.01×    7.09×\nCreate    slang_persistent_int/java_mutable_boxed_stream   39.31×   19.96×   11.01×\nCreate    slang_persistent_int/fjava_persistent           542.00×  400.65×  221.11×\nCreate    slang_persistent_int/pcollections_persistent    299.17×  470.54×  431.57×\nCreate    slang_persistent_int/ecollections_persistent      4.84×    1.76×    1.36×\nCreate    slang_persistent_int/clojure_persistent           2.23×   28.55×   14.71×\nCreate    slang_persistent_int/scala_persistent            32.91×   17.27×    7.39×\n\nTail      slang_persistent_int/java_mutable                 0.71×    0.56×    0.45×\nTail      slang_persistent_int/fjava_persistent            52.55×   50.20×   59.62×\nTail      slang_persistent_int/pcollections_persistent      5.82×    9.14×   13.73×\nTail      slang_persistent_int/ecollections_persistent     16.79×  156.62× 4898.01×\nTail      slang_persistent_int/clojure_persistent           0.92×    0.69×    0.68×\nTail      slang_persistent_int/scala_persistent             2.97×    4.87×    6.80×\n\nUpdate    slang_persistent_int/java_mutable                 0.11×    0.05×    0.03×\nUpdate    slang_persistent_int/fjava_persistent           124.86×  254.21×  215.66×\nUpdate    slang_persistent_int/pcollections_persistent      2.30×    4.16×    4.83×\nUpdate    slang_persistent_int/ecollections_persistent     13.02×  157.21× 2514.05×\nUpdate    slang_persistent_int/clojure_persistent           0.80×    1.19×    1.07×\nUpdate    slang_persistent_int/scala_persistent             0.97×    1.04×    1.11×\n\nMap       slang_persistent_int/java_mutable                 2.01×    1.85×    1.58×\nMap       slang_persistent_int/java_mutable_loop            0.48×    0.54×    0.43×\nMap       slang_persistent_int/ecollections_persistent      1.07×    0.93×    0.84×\nMap       slang_persistent_int/scala_persistent             0.94×    1.16×    1.37×\n\nFilter    slang_persistent_int/java_mutable                 2.35×    1.63×    0.87×\nFilter    slang_persistent_int/ecollections_persistent      2.00×    1.13×    0.70×\nFilter    slang_persistent_int/scala_persistent             1.73×    1.43×    1.07×\n\nPrepend   slang_persistent_int/java_mutable                 0.84×    0.78×   12.69×\nPrepend   slang_persistent_int/fjava_persistent             3.12×    1.78×    1.25×\nPrepend   slang_persistent_int/pcollections_persistent      2.05×    2.72×    3.18×\nPrepend   slang_persistent_int/ecollections_persistent      5.50×   29.76×  612.04×\nPrepend   slang_persistent_int/clojure_persistent          12.83×  137.53× 3416.94×\nPrepend   slang_persistent_int/scala_persistent             0.49×    0.26×    0.17×\n\nAppend    slang_persistent_int/java_mutable                 0.23×    0.11×    0.03×\nAppend    slang_persistent_int/fjava_persistent             4.66×    3.00×    1.15×\nAppend    slang_persistent_int/pcollections_persistent      2.43×    3.64×    2.50×\nAppend    slang_persistent_int/ecollections_persistent      7.13×   47.83×  631.27×\nAppend    slang_persistent_int/clojure_persistent           0.89×    0.46×    0.20×\nAppend    slang_persistent_int/scala_persistent             0.73×    0.42×    0.18×\n\nSlice     slang_persistent_int/java_mutable                 0.56×    0.47×    0.38×\nSlice     slang_persistent_int/pcollections_persistent      0.52×    0.40×    0.34×\nSlice     slang_persistent_int/clojure_persistent           0.55×    0.44×    0.37×\nSlice     slang_persistent_int/scala_persistent             2.50×    5.42×    7.28×\n\nIterate   slang_persistent_int/java_mutable                 1.76×    0.88×    1.38×\nIterate   slang_persistent_int/fjava_persistent           737.64×  858.07× 1036.08×\nIterate   slang_persistent_int/pcollections_persistent     29.26×   26.65×   33.69×\nIterate   slang_persistent_int/ecollections_persistent      4.71×    3.33×    5.44×\nIterate   slang_persistent_int/clojure_persistent           1.58×    2.01×    3.05×\nIterate   slang_persistent_int/scala_persistent             3.06×    2.89×    3.23×\n```\n\n![screenshot from 2016-09-10 14 20 50](https://cloud.githubusercontent.com/assets/1841944/18410161/e09fbfe4-7762-11e6-9524-3eb7e46bd530.png)\n\nand memory usages:\n\n``` java\nfor `32` elements\n  Java mutable @ ArrayList                            →   504 bytes\n  Functional Java persistent @ Seq                    → 3,064 bytes\n  PCollections persistent @ TreePVector               → 1,712 bytes\n  Eclipse Collections persistent @ ImmutableArrayList →   496 bytes\n  Clojure persistent @ PersistentVector               →   704 bytes\n  Scala persistent @ Vector                           →   536 bytes\n  Javaslang persistent @ Vector (Integer[])           →   544 bytes\n  Javaslang persistent @ Vector (int[])               →   208 bytes\n  Javaslang persistent @ Vector (byte[])              →   112 bytes\n\nfor `1024` elements\n  Java mutable @ ArrayList                            →  19,064 bytes\n  Functional Java persistent @ Seq                    → 104,760 bytes\n  PCollections persistent @ TreePVector               →  55,984 bytes\n  Eclipse Collections persistent @ ImmutableArrayList →  19,056 bytes\n  Clojure persistent @ PersistentVector               →  20,504 bytes\n  Scala persistent @ Vector                           →  19,736 bytes\n  Javaslang persistent @ Vector (Integer[])           →  19,744 bytes\n  Javaslang persistent @ Vector (int[])               →   4,816 bytes\n  Javaslang persistent @ Vector (byte[])              →   1,744 bytes\n\nfor `32768` elements\n  Java mutable @ ArrayList                            →   653,672 bytes\n  Functional Java persistent @ Seq                    → 3,408,624 bytes\n  PCollections persistent @ TreePVector               → 1,833,376 bytes\n  Eclipse Collections persistent @ ImmutableArrayList →   653,664 bytes\n  Clojure persistent @ PersistentVector               →   700,168 bytes\n  Scala persistent @ Vector                           →   674,824 bytes\n  Javaslang persistent @ Vector (Integer[])           →   674,832 bytes\n  Javaslang persistent @ Vector (int[])               →   152,272 bytes\n  Javaslang persistent @ Vector (byte[])              →    53,968 bytes\n```\n\ni.e. storing `byte`s in `functional java` would require `~63×` more storage.\n","created_at":"2016-09-04T11:19:27Z","updated_at":"2016-10-30T20:53:38Z","closed_at":null,"merged_at":null,"merge_commit_sha":"9b356388d616c0192ee2bd06c75735b3e7aca736","assignee":null,"assignees":[],"milestone":{"url":"https://api.github.com/repos/javaslang/javaslang/milestones/20","html_url":"https://github.com/javaslang/javaslang/milestones/2.1.0","labels_url":"https://api.github.com/repos/javaslang/javaslang/milestones/20/labels","id":1294243,"number":20,"title":"2.1.0","description":"Boost up collection performance","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":78,"closed_issues":327,"state":"open","created_at":"2015-09-07T18:46:28Z","updated_at":"2016-10-30T16:50:36Z","due_on":null,"closed_at":null},"commits_url":"https://api.github.com/repos/javaslang/javaslang/pulls/1557/commits","review_comments_url":"https://api.github.com/repos/javaslang/javaslang/pulls/1557/comments","review_comment_url":"https://api.github.com/repos/javaslang/javaslang/pulls/comments{/number}","comments_url":"https://api.github.com/repos/javaslang/javaslang/issues/1557/comments","statuses_url":"https://api.github.com/repos/javaslang/javaslang/statuses/9bc8f5c322c7ce0946ea4931e05b7fb5efc628c8","head":{"label":"paplorinc:Primitivization","ref":"Primitivization","sha":"9bc8f5c322c7ce0946ea4931e05b7fb5efc628c8","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},"repo":{"id":55842829,"name":"javaslang","full_name":"paplorinc/javaslang","owner":{"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},"private":false,"html_url":"https://github.com/paplorinc/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/paplorinc/javaslang","forks_url":"https://api.github.com/repos/paplorinc/javaslang/forks","keys_url":"https://api.github.com/repos/paplorinc/javaslang/keys{/key_id}","collaborators_url":"https://api.github.com/repos/paplorinc/javaslang/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/paplorinc/javaslang/teams","hooks_url":"https://api.github.com/repos/paplorinc/javaslang/hooks","issue_events_url":"https://api.github.com/repos/paplorinc/javaslang/issues/events{/number}","events_url":"https://api.github.com/repos/paplorinc/javaslang/events","assignees_url":"https://api.github.com/repos/paplorinc/javaslang/assignees{/user}","branches_url":"https://api.github.com/repos/paplorinc/javaslang/branches{/branch}","tags_url":"https://api.github.com/repos/paplorinc/javaslang/tags","blobs_url":"https://api.github.com/repos/paplorinc/javaslang/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/paplorinc/javaslang/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/paplorinc/javaslang/git/refs{/sha}","trees_url":"https://api.github.com/repos/paplorinc/javaslang/git/trees{/sha}","statuses_url":"https://api.github.com/repos/paplorinc/javaslang/statuses/{sha}","languages_url":"https://api.github.com/repos/paplorinc/javaslang/languages","stargazers_url":"https://api.github.com/repos/paplorinc/javaslang/stargazers","contributors_url":"https://api.github.com/repos/paplorinc/javaslang/contributors","subscribers_url":"https://api.github.com/repos/paplorinc/javaslang/subscribers","subscription_url":"https://api.github.com/repos/paplorinc/javaslang/subscription","commits_url":"https://api.github.com/repos/paplorinc/javaslang/commits{/sha}","git_commits_url":"https://api.github.com/repos/paplorinc/javaslang/git/commits{/sha}","comments_url":"https://api.github.com/repos/paplorinc/javaslang/comments{/number}","issue_comment_url":"https://api.github.com/repos/paplorinc/javaslang/issues/comments{/number}","contents_url":"https://api.github.com/repos/paplorinc/javaslang/contents/{+path}","compare_url":"https://api.github.com/repos/paplorinc/javaslang/compare/{base}...{head}","merges_url":"https://api.github.com/repos/paplorinc/javaslang/merges","archive_url":"https://api.github.com/repos/paplorinc/javaslang/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/paplorinc/javaslang/downloads","issues_url":"https://api.github.com/repos/paplorinc/javaslang/issues{/number}","pulls_url":"https://api.github.com/repos/paplorinc/javaslang/pulls{/number}","milestones_url":"https://api.github.com/repos/paplorinc/javaslang/milestones{/number}","notifications_url":"https://api.github.com/repos/paplorinc/javaslang/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/paplorinc/javaslang/labels{/name}","releases_url":"https://api.github.com/repos/paplorinc/javaslang/releases{/id}","deployments_url":"https://api.github.com/repos/paplorinc/javaslang/deployments","created_at":"2016-04-09T12:20:36Z","updated_at":"2016-04-09T12:20:39Z","pushed_at":"2016-10-30T17:48:10Z","git_url":"git://github.com/paplorinc/javaslang.git","ssh_url":"git@github.com:paplorinc/javaslang.git","clone_url":"https://github.com/paplorinc/javaslang.git","svn_url":"https://github.com/paplorinc/javaslang","homepage":"http://javaslang.io","size":13069,"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":"11e4e7c31fe86a437071aa20293acbc07e198747","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":"Javaslang is an object-functional language extension to Java 8, which aims to reduce the lines of code and increase code quality. It provides persistent collections, functional abstractions for error handling, concurrent programming, pattern matching and much more.  Javaslang fuses the power of object-oriented programming with the elegance and robustness of functional programming. The most interesting part is a feature-rich, persistent collection library that smoothly integrates with Java's standard collections.","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-10-30T18:00:05Z","pushed_at":"2016-10-30T17:48:10Z","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":14762,"stargazers_count":1261,"watchers_count":1261,"language":"Java","has_issues":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":147,"mirror_url":null,"open_issues_count":90,"forks":147,"open_issues":90,"watchers":1261,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/javaslang/javaslang/pulls/1557"},"html":{"href":"https://github.com/javaslang/javaslang/pull/1557"},"issue":{"href":"https://api.github.com/repos/javaslang/javaslang/issues/1557"},"comments":{"href":"https://api.github.com/repos/javaslang/javaslang/issues/1557/comments"},"review_comments":{"href":"https://api.github.com/repos/javaslang/javaslang/pulls/1557/comments"},"review_comment":{"href":"https://api.github.com/repos/javaslang/javaslang/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/javaslang/javaslang/pulls/1557/commits"},"statuses":{"href":"https://api.github.com/repos/javaslang/javaslang/statuses/9bc8f5c322c7ce0946ea4931e05b7fb5efc628c8"}}}}
{"actor":{"display_login":"danieldietrich"}}