code: @Nonnull
  	public final Maybe<Integer> findIndex(@Nonnull F<A, Boolean> f) {
          ImmutableList<A> self = this;
          int i = 0;
          while (self instanceof NonEmptyImmutableList) {
              NonEmptyImmutableList<A> selfNel = (NonEmptyImmutableList<A>) self;
              if (f.apply(selfNel.head)) {
                  return Maybe.of(i);
              }
              self = selfNel.tail();
              ++i;
          }
          return Maybe.empty();
  	}
docs: Tests the elements of the list with a predicate <code>f</code> and returns the index of the first one that
  satisfies the predicate without testing the rest of the list.
  
  @param f The predicate.
  @return <code>Maybe.of(the found element index)</code> if an element is found or
  <code>Maybe.empty()</code> if none is found.