code: public final <K> Ix<T> distinct(IxFunction<? super T, K> keySelector) {
          return new IxDistinct<T, K>(this, nullCheck(keySelector, "keySelector is null"));
      }
docs: Emits only distinct, never before seen keys extracted from elements
  (according to null-safe equals()) of this sequence.
  <p>
  Note that this operator uses a memory of seen elements which may grow unbounded
  with long sequences.
  <p>
  The result's iterator() doesn't support remove().
  @param <K> the key type
  @param keySelector the function taking the current element and returning a key object
  that will be compared with null-safe equals().
  @return the new Ix instance
  @throws NullPointerException if keySelector is null
  @since 1.0