code: public final <R> Ix<R> replay(int size, IxFunction<? super Ix<T>, ? extends Iterable<? extends R>> transform) {
          return new IxReplaySizeSelector<T, R>(this, positive(size, "size"), nullCheck(transform, "transform is null"));
      }
docs: Caches and replays the the last {@code size} elements of this sequence for the duration of the given transform function
  without consuming this sequence multiple times.
  <p>
  Consumption by any of the inner Ix' iterator() may move the shared sequence forward and subsequent iterator()
  consumers may get a different set of values
  <p>
  The result's iterator() doesn't support remove().
  @param <R> the result value type
  @param size the maximum number of elements to keep replaying to new inner Ix iterator() consumers, positive
  @param transform the function receiving a view into the cache and returns an Iterable sequence whose
  elements will be emitted by this Ix.
  @return the new Ix instance
  @throws NullPointerException if transform is null
  @throws IllegalArgumentException if size is non-positive
  @since 1.0