anchor.diff:  
   [source,java]
   ----
  -private static <A, B> List<B> reduce(List<A> as, Function<A, B> f) {
  +static <A, B> List<B> reduce(List<A> as, Function<A, B> f) {
     List<B> bs = new ArrayList<>();
     for(A a : as) {
       bs.add(f.apply(a));
  
positive.code: 
  [source,java]
  ----
    List<String> names = new ArrayList<>(Arrays.asList("mickey", "donald", "pluto"));
    List<String> namesUpper = reduce(names, String::toUpperCase);
  
  ...
  
  private static List<String> reduce(List<String> names, UnaryOperator<String> operator) {
    List<String> namesUpper = new ArrayList<>();
    for(String name : names) {
      namesUpper.add(name.toUpperCase());
  
negative.code:     return value;
    }
  }
  ---- 
  
  With such a class, using Java lists makes more sense:
  
  [source,java]
  ----
  List<Name> names = new ArrayList<>(Arrays.asList(new Name("mickey"), 
                                                   new Name("donald"), 
                                                   new Name("pluto")));
  for(Name name : names) {
    name.toUpperCase();
  }
  