code: @SuppressWarnings("unchecked")
      public static <T extends Iterable<E>, E> Collector<T, ?, T> flat() {
          return (Collector<T, ?, T>) flat(ArrayList::new);
      }
docs: Returns a {@code Collector} that accumulates and flats the input elements into a
  new {@code List}. There are no guarantees on the type, mutability, serializability,
  or thread-safety of the {@code List} returned; if more control over the returned
  {@code List} is required, use {@link #flat(Supplier)}.
  
  @param <T> the type of the input elements (it must be {@code Iterable})
  @return a {@code Collector} which collects and flats all the input elements into a
  {@code List}, in encounter order