static LinkedHashSet makeHull_optimized(MultiMap map, S e) { new LinkedHashSet l; makeHull_optimized_impl(map, e, l); ret l; } static void makeHull_optimized_impl(MultiMap map, S e, LinkedHashSet dest) { if (dest.contains(e)) ret; dest.add(e); for (S f : map.get(e)) makeHull_optimized_impl(map, f, dest); }