code: public static <E> Iterator<E> takeLast(int howMany, Iterator<E> from) {
          return new MemoryIterator<E>(from, howMany);
      }
docs: Creates an iterator yielding last n elements from the source iterator.
  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 iterator element type
  @param howMany number of elements to be yielded
  @param from the source iterator
  @return the resulting iterator