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; }