guava/src/com/google/common/collect/FluentIterable.java
public final Optional<E> firstMatch(Predicate<? super E> predicate) {
    return Iterables.tryFind(getDelegate(), predicate);
  }
public final Optional<E> firstMatch(Predicate<? super E> predicate) {
    return Iterables.tryFind(getDelegate(), predicate);
  }
Returns an {@link Optional} containing the first element in this fluent iterable that satisfies
the given predicate, if such an element exists.

<p><b>Warning:</b> avoid using a {@code predicate} that matches {@code null}. If {@code null}
is matched in this fluent iterable, a {@link NullPointerException} will be thrown.

<p><b>{@code Stream} equivalent:</b> {@code stream.filter(predicate).findFirst()}.