scope gazelle_addVarConvertersToRules. sclass #VarConverter { S var1, var2; O converter; // func(S) -> S bool debug; *() {} *(S *var1, S *var2, O *converter, bool *debug) {} SS get(SS map, LS tokC, LS tokI, RuleEngine2_MatchedRule matched) { if (map == null) null; S value = map.get(var); if (value == null) ret map; if (!strictPutIC(map, var2, callAndMake_orF1(converter, value))) null; ret map; } } svoid gazelle_addVarConvertersToRules(RuleEngine2 engine, O... _) { bool debug = boolPar debug(_); for (final RuleEngine2.Rule r : engine.rules) for (Matches m : getJMatches_all("convert var * to * with *", r.comments)) r.addMapMassager(new VarConverter($1, $2, $3, debug)); } end scope