code: public static <E> Iterator<E> takeLast(int howMany, Iterable<E> from) {
          dbc.precondition(from != null, "cannot call last with a null iterable");
          return takeLast(howMany, from.iterator());
      }
docs: Creates an iterator yielding last n elements from the source iterable.
  Consuming the resulting iterator yields an IllegalArgumentException if
  not enough elements can be fetched. E.g:
  <code>takeLast(2, [1, 2, 3]) -> [2, 3]</code>
  
  @param <E> the iterable element type
  @param howMany number of elements to be yielded
  @param from the source iterable
  @return the resulting iterator