public final @NotNull JBIterable<E> unique(@NotNull Function<? super E, ?> identity) {
    return filter(new SCond<E>() {
      Set<Object> visited;

      @Override
      public boolean value(E e) {
        if (visited == null) visited = new java.util.HashSet<>();
        return visited.add(identity.fun(e));
      }
    });
  }
public final @NotNull JBIterable<E> unique(@NotNull Function<? super E, ?> identity)