!7 sclass Entry { long msgID; S originalLine; S interpretableText; sS _fieldOrder = "msgID originalLine interpretableText"; } cmodule InterpretableTest > DynObjectTable { start { thread { scan(); } } visualize { ret withCenteredButtons(super.visualize(), "Scan", rThread scan); } void scan enter { new L list; for (GazelleLine line : dm_discord_allLines()) { getInterpretables(line, contextMaker := gazelle_stdChatEvalContextMaker()); list.add(nu Entry(originalLine := line.text, msgID := line.msgID)); } setList(list); } Collection getInterpretables(GazelleLine line, O... _) { Set interpretables = linkedCISet(); // fancy new set! addAll(interpretables, collect text( dm_gazelle_reasonAboutChatInput_v2(line.user, line.text, paramsPlus(_, acceptablePurposes := litset('preprocess))))); ret interpretables; } }