default int indexWhere(
		final Predicate<? super T> predicate,
		final int start,
		final int end
	) {
		requireNonNull(predicate, "Predicate");
		checkIndex(start, end, length());

		int index = -1;
		for (int i = start; i < end && index == -1; ++i) {
			if (predicate.test(get(i))) {
				index = i;
			}
		}
		return index;
	}
<p>
Returns the index of the first element on which the given predicate
returns {@code true}, or -1 if the predicate returns false for every
sequence element.
</p>
{@snippet lang="java":
// Finding index of first null value.
final int index = seq.indexOf(o -> o == null);

// Assert of no null values.
assert (sequence.indexOf(o -> o == null) == -1);
}

@param predicate the search predicate.
@param start the search start index
@param end the search end index
@return the index of the first element on which the given predicate
         returns {@code true}, or -1 if the predicate returns {@code false}
         for every sequence element.
@throws NullPointerException if the given {@code predicate} is {@code null}.
@throws IndexOutOfBoundsException for an illegal end point index value
         ({@code start < 0 || end > length() || start > end}).
jenetics/src/main/java/io/jenetics/util/Seq.java