code: public static <E> Optional<E> maybeFirst(Iterable<E> iterable) {
          dbc.precondition(iterable != null, "cannot call maybeFirst with a null iterable");
          return new MaybeFirstElement<E>().apply(iterable.iterator());
      }
docs: Yields the first element if present, nothing otherwise.
  
  @param <E> the iterable element type
  @param iterable the iterable that will be consumed
  @return just the first element or nothing