code: @NotNull
      public Stream<T> takeWhileIndexed(int from, int step,
                                        @NotNull IndexedPredicate<? super T> predicate) {
          return new Stream<T>(params, new ObjTakeWhileIndexed<T>(
                  new IndexedIterator<T>(from, step, iterator),
                  predicate));
      }
docs: Takes elements while the {@code IndexedPredicate} returns {@code true}.
  
  <p>This is an intermediate operation.
  
  <p>Example:
  <pre>
  from: 2
  step: 2
  predicate: (index, value) -&gt; (index + value) &lt; 8
  stream: [1, 2, 3,  4, -5, -6, -7]
  index:  [2, 4, 6,  8, 10, 12, 14]
  sum:    [3, 6, 9, 12,  5,  6,  7]
  result: [1, 2]
  </pre>
  
  @param from  the initial value of the index (inclusive)
  @param step  the step of the index
  @param predicate  the {@code IndexedPredicate} used to take elements
  @return the new stream
  @since 1.1.6