code: public static <E, I extends Iterator<E>> Iterator<Optional<E>> roundrobinLongest(Iterable<I> iterators) {
          dbc.precondition(iterators != null, "cannot roundrobinLongest a null iterable");
          final Iterator<I> iterator = iterators.iterator();
          return new RoundrobinLongestIterator<E>(iterator);
      }
docs: Multiplexes an iterable 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 iterable
  @return an iterator containing multiplexed elements