static void nlLogic_iterate_withOnFail(final NLLogicChecker_v2 c, Exp e, final NLLogicChecker_v2.Matching m, final Runnable onMatch, final VF1 onFail) { final new Flag anyResults; if (e cast And) { final Exp b = e.b; c.iterate_single(e.a, m, r { anyResults.raise(); nlLogic_iterate_withOnFail(c, b, m, onMatch, onFail) }); } else c.iterate_single(e, m, r { anyResults.raise(); callF(onMatch); }); if (!anyResults.isUp()) callF(onFail, e); }