scope gazelle_addVarDiscriminators. sclass #VarDiscriminator { S var; O discriminator; bool debug; *() {} *(S *var, O *discriminator, 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 && !isTrue(callAndMake_orF1(discriminator, value))) { if (debug) print("Rejecting var: " + var + " -> " + value + " because of " + discriminator); null; } ret map; } } svoid gazelle_addVarDiscriminators(RuleEngine2 engine, O... _) { bool debug = boolPar debug(_); for (final RuleEngine2.Rule r : engine.rules) for (Matches m : getJMatches_all("var * should satisfy *", r.comments)) { S var = $1, discriminator = $2; if (debug) print("Made discriminator for: " + var); r.addMapMassager(new VarDiscriminator(var, discriminator, debug)); } } end scope