code: public static <E> E first(Iterable<E> iterable) {
          dbc.precondition(iterable != null, "cannot call first with a null iterable");
          return new FirstElement<E>().apply(iterable.iterator());
      }
docs: Yields the first element of the iterable.
  
  @param <E> the element type parameter
  @param iterable the iterable to be searched
  @throws IllegalArgumentException if no element is present
  @return the found element