code: public static <T> Iterator<T> concat(Iterator<? extends T> a, Iterator<? extends T> b) {
      checkNotNull(a);
      checkNotNull(b);
      return concat(consumingForArray(a, b));
    }
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.