svoid nlLogic_fillBattleSpace_collector(final NLLogicChecker_v2 c, final Collector battleSpace, final bool debug) { withCancelPoint(voidfunc(final CancelPoint cp) { VF2 onRuleFired = voidfunc(IfThen rule, NLLogicChecker_v2.Matching m) { if (battleSpace.add(new RuleWithParams(rule, m.matches))) cancelTo(cp); }; VF4, Exp> onRuleFailed = voidfunc(IfThen rule, NLLogicChecker_v2.Matching m, L satisfiedConditions, Exp remaining) { //print("satisfied conditions: " + satisfiedConditions); if (battleSpace.add(new FailedRule(rule, m.matches, cloneListOrNull(nullIfEmpty(satisfiedConditions)), remaining))) cancelTo(cp); }; print("Iterating over " + n2(c.rules, "rule")); applyNLLogicFacts_v4_iterate_withFailed2_verbose.set(debug); applyNLLogicFacts_v4_iterate_withFailed2(c, onRuleFired, onRuleFailed, c.rules); }); }