code: @Nonnull
      public final <B> Maybe<B> findMap(@Nonnull F<A, Maybe<B>> f) {
          ImmutableList<A> self = this;
          while (self instanceof NonEmptyImmutableList) {
              NonEmptyImmutableList<A> selfNel = (NonEmptyImmutableList<A>) self;
              Maybe<B> result = f.apply(selfNel.head);
              if (result.isJust()) {
                  return result;
              }
              self = selfNel.tail();
          }
          return Maybe.empty();
      }
docs: Run <code>f</code> on each element of the list and return the result immediately if it is a
  <code>Maybe.of</code>. Other wise return <code>Maybe.empty()</code>
  
  @param f   The predicate.
  @param <B> The type of the result of the mapping function.
  @return <code>Maybe.of(the found element)</code> if an element is found or
  <code>Maybe.empty()</code> if none is found.