code: public static <S extends Iterator<? extends T>, T> Iterator<T> 
          iteratorOverIterators(Iterable<S> iteratorsIterable)
      {
          Objects.requireNonNull(iteratorsIterable, 
              "The iteratorsIterable is null");
          return new CombiningIterator<T>(iteratorsIterable.iterator());
      }
docs: Returns an iterator that combines the iterators that
  are returned by the iterator that is returned by the
  given iterable.
  
  @param <S> The iterator type
  @param <T> The element type
  @param iteratorsIterable The iterable for the iterators. May not
  provide <code>null</code> iterators.
  @return The iterator