@NotNull
    public Stream<T> filterIndexed(int from, int step,
                                   @NotNull IndexedPredicate<? super T> predicate) {
        return new Stream<T>(params, new ObjFilterIndexed<T>(
                new IndexedIterator<T>(from, step, iterator),
                predicate));
    }
@ NotNull public Stream < T > filterIndexed ( int from , int step , @ NotNull IndexedPredicate < ? super T > predicate ) { return new Stream < T > ( params , new ObjFilterIndexed < T > ( new IndexedIterator < T > ( from , step , iterator ) , predicate ) ) ; }
Returns a {@code Stream} with elements that satisfy the given {@code IndexedPredicate}.

<p>This is an intermediate operation.

<p>Example:
<pre>
from: 4
step: 3
predicate: (index, value) -&gt; (index + value) &gt; 15
stream: [1, 2,  3,  4,  0, 11]
index:  [4, 7, 10, 13, 16, 19]
sum:    [5, 9, 13, 17, 16, 30]
filter: [          17, 16, 30]
result: [4, 0, 11]
</pre>

@param from  the initial value of the index (inclusive)
@param step  the step of the index
@param predicate  the {@code IndexedPredicate} used to filter elements
@return the new stream
@since 1.1.6