static L> matchCondition_all(Lisp condition, Map m) { L facts = lispTruth(); O evaluator = getLispEvaluator(condition.head); if (evaluator != null) ret (L) (isTrue(callF(evaluator, lispReplaceVars(condition, m))) ? ll(m) : ll()); L> candidates = new L; for (Lisp fact : facts) { Map m2 = cloneMap(m); if (lispMatchIC_xyzVars_sub(condition, fact, m2)) candidates.add(m2); } ret candidates; }