code: public static <T, R> Ix<R> forloop(T seed, IxPredicate<? super T> condition,
              IxFunction<? super T, ? extends T> next,
              IxFunction<? super T, ? extends R> selector) {
          return new IxForloop<T, R>(seed, nullCheck(condition, "condition is null"),
                  nullCheck(selector, "selector is null"), nullCheck(next, "next is null"));
      }
docs: Generates a sequence of values via a generic indexed for-loop style construct;
  the index starts with the given seed, checked via a condition (to terminate),
  generated from the index via the selector and then a new index is generated via next.
  <p>
  The result's iterator() doesn't support remove().
  @param <T> the index value type
  @param <R> the result value type
  @param seed the initial value of the index
  @param condition the receives the current index (before selector is called) and if it
  returns false, the sequence terminates
  @param next the function that receives the current index and returns the next index
  @param selector the function that receives the current index and returns the value
  to be emitted.
  @return the new Ix instance
  @throws NullPointerException if condition, next or selector is null
  @since 1.0