static L> matchConditions_all(L conditions) { ret matchConditions_all(conditions, new HashMap); } static L> matchConditions_all(L conditions, Map m) { if (empty(conditions)) ret ll(m); Lisp condition = first(conditions); L> candidates = matchCondition_all(condition, m); if (empty(candidates)) ret candidates; // first condition failed new LinkedHashSet> results; for (Map m2 : candidates) results.addAll(matchConditions_all(dropFirst(conditions), m2)); ret asList(results); }