@Test public void reduce() { long sum = (int) reduceBy(Lists.list(1,2,3,4,5,6,7,8), new Object() { int sum(int s, int b) {return s+b;} }); boolean ok = sum == 36 || die(); puts (sum); sum = (long) reduceBy(new Integer[]{1,2,3,4,5,6,7,8}, new Object() { long sum(long s, int b) {return s+b;} }); ok &= sum == 36 || die(); sum = (long) reduceBy(Lists.list(1,2,3,4,5,6,7,8), new Reducer<Integer, Integer>() { @Override public Integer apply(Integer sum, Integer v) { return sum == null ? v : sum + v; } }).longValue(); }