!7 sclass Symbol { S text; *() {} *(S s) { text = new S(s); } } static new WeakHashMap<S, Symbol> symbolMap; static Symbol symbol(S s) { synchronized(symbolMap) { Symbol sym = symbolMap.get(s); if (sym == null) symbolMap.put(s, sym = Symbol(s)); ret sym; } } p { Symbol a = symbol("a"); }