public virtual bool DefineRule([NotNull] Rule r)
{
Rule rule;
if (rules.TryGetValue(r.name, out rule))
{
return false;
}
rules[r.name] = r;
r.index = ruleNumber++;
indexToRule.Add(r);
return true;
}