code: public final <K> Ix<GroupedIx<K, T>> groupBy(IxFunction<? super T, ? extends K> keySelector) {
          return groupBy(keySelector, IdentityHelper.<T>instance());
      }
docs: Groups elements of this sequence into distinct groups keyed by the keys returned by the keySelector.
  <p>
  The operator doesn't lose data and calling hasNext/next on either the returned Ix or on the inner
  GroupedIx can move the source sequence forward.
  <p>
  The result's iterator() and the inner groups' Iterators don't support remove().
  @param <K> the key type
  @param keySelector the function receiving the current element and returns the key to be used for
  grouping the values into the same inner GroupedIx.
  @return the new Ix instance
  @throws NullPointerException if keySelector is null
  @since 1.0
  @see #groupBy(IxFunction, IxFunction)