sbool traits_multiLine = true; extend Base { new L traits; bool hasTrait(S t) { ret containsIC(traits(), t); } L traits() { if (nempty(text) && neq(first(traits), text)) traits.add(0, text); ret traits; } void addTraits(L l) { setAddAll(traits(), l); } void addTrait(S t) { if (nempty(t)) setAdd(traits(), t); } S textForRender() { L traits = traits(); if (traits_multiLine) ret lines(traits); if (l(traits) <= 1) ret first(traits); ret first(traits) + " [" + join(", ", dropFirst(traits)) + "]"; } }