static L dm_gazelle_reasonAboutChatInput(S userName, S content, O... _) { GazelleEvalContext ctx = dm_gazelle_stdEvalContext(dm_gazelle_allRulesWithComment("discord")); // Need input as first condition ctx.engine.dropRulesWhere(r -> cicOneOf(r.comments, "in 1 = statement", "in = statement")); gazelle_addHelperTablesToRules(ctx.engine); GazelleTree tree1 = new(ctx, content); L l = dm_gazelle_getChildren(tree1, firstConditionOnly := true); GazelleTree tree2 = new(ctx, optCurly(userName) + " says: " + content); l.addAll(dm_gazelle_getChildren(tree2, firstConditionOnly := true)); if (boolPar skipBad(_)) l = [GazelleTree t : l | neq(t.prediction, 'bad)]; gazelle_sortChildren(l); ret l; }