code: public static <I extends Iterable<E>, E> Iterator<E> flatten(Iterable<I> iterables) {
          dbc.precondition(iterables != null, "cannot flatten a null iterable");
          final Iterator<I> iterator = iterables.iterator();
          return new ChainIterator<>(new TransformingIterator<>(iterator, Iterable::iterator));
      }
docs: Flattens an iterable of iterables of E to an iterator of E. E.g:
  <code>
  flatten([1,2], [3,4]) -> [1,2,3,4]
  </code>
  
  @param <I> the iterable type
  @param <E> the iterable element type
  @param iterables the iterable of iterables to be flattened
  @return the flattened iterator