android/guava/src/com/google/common/collect/Iterables.java
public static <T> Optional<T> tryFind(Iterable<T> iterable, Predicate<? super T> predicate) {
    return Iterators.tryFind(iterable.iterator(), predicate);
  }
public static <T> Optional<T> tryFind(Iterable<T> iterable, Predicate<? super T> predicate) {
    return Iterators.tryFind(iterable.iterator(), predicate);
  }
Returns an {@link Optional} containing the first element in {@code 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 {@code iterable}, a NullPointerException will be thrown.

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

@since 11.0