Namer := Object clone do( newSlot("map") newSlot("i", 0) newSlot("nameBuilder", FancyNameBuilder) init := method( map = Map clone ) nameFor := method(a, key := a asString if(map hasKey(key), return map at(key) ) name := nameBuilder option(i) i = i + 1 map atPut(key, name) name ) )