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