sclass StringTree2 { A leafValue; HashMap> children = new HashMap; A get() { ret leafValue; } StringTree2 get(S s) { ret children.get(s); } StringTree2 getOrAdd(S s) { StringTree2 t = children.get(s); if (t == null) children.put(s, t = new StringTree2); ret t; } }