code: public static <E> Iterator<E> take(long howMany, Iterable<E> iterable) {
          dbc.precondition(iterable != null, "cannot take from a null iterable");
          return new TakeUpToIterator<E>(iterable.iterator(), howMany);
      }
docs: Creates an iterator yielding at most first n elements of the passed
  iterable. E.g:
  <code>take(2, [1, 2, 3]) -> [1, 2]</code>
  <code>take(4, [1, 2, 3]) -> [1, 2, 3]</code>
  
  @param <E> the iterable element type
  @param howMany elements to be consumed (at most)
  @param iterable the source iterable
  @return the resulting iterator