class CollectionUtils {

    public static <I, M, E extends Exception> List<M> transformList(final Collection<I> values,
                                                                    final Function<I, M, E> mapper) throws E {
        Reject.ifNull(values, mapper);
        final List<M> newList = new ArrayList<M>(values.size());

        for (I value : values) {
            newList.add(mapper.apply(value));
        }

        return newList;
    }

    private  CollectionUtils();

}