android/guava/src/com/google/common/collect/Iterables.java
public static <T> Iterable<T> concat(
      Iterable<? extends T> a, Iterable<? extends T> b, Iterable<? extends T> c) {
    return FluentIterable.concat(a, b, c);
  }
public static <T> Iterable<T> concat(
      Iterable<? extends T> a, Iterable<? extends T> b, Iterable<? extends T> c) {
    return FluentIterable.concat(a, b, c);
  }
Combines three iterables into a single iterable. The returned iterable has an iterator that
traverses the elements in {@code a}, followed by the elements in {@code b}, followed by the
elements in {@code c}. The source iterators are not polled until necessary.

<p>The returned iterable's iterator supports {@code remove()} when the corresponding input
iterator supports it.

<p><b>Java 8 users:</b> The {@code Stream} equivalent of this method is {@code
Streams.concat(a, b, c)}.