code: @SuppressWarnings({ "unchecked", "rawtypes" })
      public static <T> Ix<T> concat(Iterable<? extends Iterable<? extends T>> sources) {
          return new IxFlattenIterable<Iterable<? extends T>, T>(
                  (Iterable)nullCheck(sources, "sources is null"),
                  IdentityHelper.<Iterable<? extends T>>instance());
      }
docs: Concatenates the elements of Iterable sources, provided as an Iterable itself, sequentially.
  <p>
  The result's iterator() forwards the remove() calls to the current iterator.
  <p>
  Note that merge and concat operations are the same in the Iterable world.
  @param <T> the common base type
  @param sources the Iterable sequence of source Iterables
  @return the new Ix instance
  @throws NullPointerException if sources is null
  @since 1.0
  @see #merge(Iterable)