code: public static <T> Iterator<T> concat(Iterator<? extends Iterator<? extends T>> inputs) {
      return new ConcatenatedIterator<T>(inputs);
    }
docs: Combines multiple iterators into a single iterator. The returned iterator iterates across the
  elements of each iterator in {@code inputs}. The input iterators are not polled until
  necessary.
  
  <p>The returned iterator supports {@code remove()} when the corresponding input iterator
  supports it. The methods of the returned iterator may throw {@code NullPointerException} if any
  of the input iterators is null.