static B syncGetOrCreate(Map map, A key, Class c) ctex { synchronized(map) { ret getOrCreate(map, key, c); } } // f : func -> B static B syncGetOrCreate(Map map, A key, O f) { synchronized(map) { ret getOrCreate(map, key, f); } } static B nuLike syncGetOrCreate(Class c, Map map, A key) { ret syncGetOrCreate(map, key, c); } static B syncGetOrCreate(Map map, A key, IF0 f) { synchronized(map) { ret getOrCreate(map, key, f); } }