code: public static <T> Iterator<T> concat(Iterator<? extends T> a,
        Iterator<? extends T> b) {
      return concat(ImmutableList.of(a, b).iterator());
    }
docs: Combines two iterators into a single iterator. The returned iterator
  iterates across the elements in {@code a}, followed by the elements in
  {@code b}. The source iterators are not polled until necessary.
  
  <p>The returned iterator supports {@code remove()} when the corresponding
  input iterator supports it.
  
  <p><b>Note:</b> the current implementation is not suitable for nested
  concatenated iterators, i.e. the following should be avoided when in a loop:
  {@code iterator = Iterators.concat(iterator, suffix);}, since iteration over the
  resulting iterator has a cubic complexity to the depth of the nesting.