concept CSnippet implements _SetField { long id; // Whoa - clash with superclass field - and it still works S type; S title, md5; O text; S text() { ret fromUtf8OrTokenList_generic(text); } void legacyCompaction() { if (text instanceof S) cset(this, text := toUtf8_generic(text)); } // speed up (?) reflection public void _setField(S f, O x) { if (f.equals('id)) id = (long) x; else if (f.equals('type)) type = (S) x; else if (f.equals('title)) title = (S) x; else if (f.equals('md5)) md5 = (S) x; else if (f.equals('text)) text = x; } long snippetID() { ret id; } }