/** Returns a list generated by applying a function to each index between * 0 and {@code size} - 1. */ public static <E> List<E> generate(final int size, final Function1<Integer, E> fn) { if (size < 0) { throw new IllegalArgumentException(); } return new GeneratingList<>(size, fn); }