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.add(matchConditions_random(dropFirst(conditions), m2)); ret asList(results); }