code: @SuppressWarnings("unchecked")
  	public static <T> Iterator<T> concat(Iterator<? extends T> a,
  			Iterator<? extends T> b) {
  		checkNotNull(a);
  		checkNotNull(b);
  		return concat(Arrays.asList(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.