android/guava/src/com/google/common/collect/Iterators.java
public static <T> Iterator<T> concat(Iterator<? extends T> a, Iterator<? extends T> b) {
    checkNotNull(a);
    checkNotNull(b);
    return concat(consumingForArray(a, b));
  }
public static <T> Iterator<T> concat(Iterator<? extends T> a, Iterator<? extends T> b) {
    checkNotNull(a);
    checkNotNull(b);
    return concat(consumingForArray(a, b));
  }
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.