sclass FunctionTimings { new Map data; void time(A function, Runnable r) { if (r == null) ret; Average avg = mapGetOrCreate(data, function, -> new Average); long time = nanoTime(); try { r.run(); } finally { time = nanoTime()-time; avg.add(time); } } Map get() { ret data; } }