scope dm_gazelle_statementsFromAppliedRules. sclass #ByRule { S ruleID; new MultiSet statements; } static MultiSet dm_gazelle_statementsFromAppliedRules_multiSet() { L concepts = cloneList((L) dm_requireAndCall("#1021413/AppliedRules", 'concepts)); new Map ruleMap; for (O c : concepts) pcall { S judgement = getString judgement(c); S struct = getString matchedRuleStruct(c); RuleEngine2_MatchedRule mr = cast unstructureUnlessContainsAnonymousClasses(struct); if (mr == null) continue; S ruleID = mr.rule.globalID; ByRule r = getOrCreate_f1(ruleMap, ruleID, func(S ruleID) -> ByRule { nu(ByRule, +ruleID) }); r.statements.addAll(ai_gazelle_statementsFromAppliedRule(mr, judgement)); } //pnlStruct(values(ruleMap)); new MultiSet out; for (ByRule r : values(ruleMap)) for (S s : keys(r.statements)) out.add("Rule " + r.ruleID + ": " + s, r.statements.get(s)); ret out; } end scope