code: public static <T> Func1<Iterable<T>, ArrayList<T>> toArrayList(final int initialCapacity) {
          return new Func1<Iterable<T>, ArrayList<T>>() {
              @Override
              public ArrayList<T> call(Iterable<T> iterable) {
                  ArrayList<T> list = new ArrayList<>(initialCapacity);
                  for (T value : iterable)
                      list.add(value);
                  return list;
              }
          };
      }
docs: Returns a method that can be used with {@link solid.stream.Stream#collect(Func1)}
  to convert a stream into a {@link List}.
  <p/>
  Use this method instead of {@link #toArrayList()} for better performance on
  streams that can have more than 12 items.
  
  @param <T>             a type of {@link List} items.
  @param initialCapacity initial capacity of the list.
  @return a method that converts an iterable into {@link List}.