code: public final <R> Ix<R> compose(IxFunction<? super Ix<T>, ? extends Iterable<? extends R>> transformer) {
          return new IxCompose<T, R>(this, nullCheck(transformer, "transformer is null"));
      }
docs: When the iterator() of the returned Ix is called, it calls the transformer function
  with this Ix instance and emits the elements of the returned Iterable.
  <p>
  The result's iterator() forwards the call remove() to the returned Iterable's Iterator.
  
  @param <R> the result value type
  @param transformer the transformer called with this Ix when Ix.iterator() is invoked
  @return the new Ix instance
  @throws NullPointerException if transformer is null
  @since 1.0