static void nlLogic_iterate_withOnFail2(final NLLogicChecker_v2 c, Exp e, final NLLogicChecker_v2.Matching m, final L satisfiedConditions, final Runnable onMatch, final VF2, Exp> onFail) { final new Flag anyResults; if (e cast And) { final Exp a = e.a, b = e.b; c.iterate_single(a, m, r { anyResults.raise(); temp tempAddToList_exclusive(satisfiedConditions, a); nlLogic_iterate_withOnFail2(c, b, m, satisfiedConditions, onMatch, onFail); }); } else c.iterate_single(e, m, r { anyResults.raise(); callF(onMatch); }); if (!anyResults.isUp()) callF(onFail, satisfiedConditions, e); }