sclass RuleEngine2_MatchedRule { S globalID = aGlobalID(); RuleEngine2.Rule rule; SS map; new Map mappingQuality; // key in map to -1, 0 or 1 new LPair matchedLines; S tokenizationFunction; LS remainingConditions; int qualitySum() { ret intSum(values(mappingQuality))-l(map); } RuleEngine2.Rule applyMapping() { new RuleEngine2.Rule r; r.in = map(rule.in, f applyMappingTo); r.out = applyMappingTo(rule.out); ret r; } S appliedRuleText() { ret applyMapping().asText(); } S applyMappingTo(S s) { ret s == null ? null : join(ai_mapCodeTokensWithMap(tokenize(s), map)); } LS tokenize(S s) { ret (LS) callAndMake(assertNotNull(tokenizationFunction), s); } }