static L gazelle_reasonWithPreprocessing(S content, O... _) { S userName = stringPar userName(_); GazelleEvalContext ctx = cast optPar ctx(_); F0 contextMaker = optPar contextMaker(_, f gazelle_stdChatEvalContext); bool debug = boolPar debug(_); // preprocess L l1 = ll(GazelleTree(contextMaker!, content)); addAll(l1, dm_gazelle_reasonAboutChatInput_v2(userName, content, paramsPlus(_, acceptablePurposes := litset('preprocess)))); // TODO: uniquify lines? if (debug) print("Got " + n_entries(l1) + " after preprocessing."); new L l2; for (GazelleTree tree : l1) addAll(l2, dm_gazelle_reasonAboutChatInput_v2(userName, tree.line, paramsPlus(tree := tree, _))); ret l2; }