code: @NullableDecl
    public static <T> T find(
        Iterator<? extends T> iterator,
        Predicate<? super T> predicate,
        @NullableDecl T defaultValue) {
      checkNotNull(iterator);
      checkNotNull(predicate);
      while (iterator.hasNext()) {
        T t = iterator.next();
        if (predicate.apply(t)) {
          return t;
        }
      }
      return defaultValue;
    }
docs: Returns the first element in {@code iterator} that satisfies the given predicate. If no such
  element is found, {@code defaultValue} will be returned from this method and the iterator will
  be left exhausted: its {@code hasNext()} method will return {@code false}. Note that this can
  usually be handled more naturally using {@code tryFind(iterator, predicate).or(defaultValue)}.
  
  @since 7.0