code: public static <E, I extends Iterator<E>> Iterator<Optional<E>> roundrobinLongest(Iterator<I> iterators) {
          return new RoundrobinLongestIterator<E>(iterators);
      }
docs: Multiplexes an iterator of iterators into a single iterator. The
  iteration stops when every source iterator is empty.E.g:
  <code>
  roundrobinLongest([1,2], [4]) -> [of 1, of 4, of 2, empty]
  </code>
  
  @param <E> the element type
  @param <I> the iterator type
  @param iterators the source iterator
  @return an iterator containing multiplexed elements