@Override public Array<T> distinct() { return distinctBy(Function.identity()); }
@Override public Array<Array<T>> combinations() { return rangeClosed(0, length()).map(this::combinations).flatMap(Function.identity()); }