JBIterable<E> (@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)); } }); }