Refactoring Wizardry

interface Mapper<A, B> {
  B map(A a);
}

<A, B> Iterable<B> mapperConvert(Iterable<A> x, Mapper<A, B> m) {
  Collection<B> y = new LinkedList<B>();
  for(A a : x)
    y.add(m.map(a));
  return y;
}