public RT ConsiderValueRule <RT>(String Name, params Object[] Arguments) { if (Arguments == null) { Arguments = new Object[] { null } } ; bool valueReturned = false; foreach (var ruleset in EnumerateRuleSets(Arguments)) { var r = ruleset.ConsiderValueRule <RT>(Name, out valueReturned, Arguments); if (valueReturned) { return(r); } } if (Rules == null) { throw new InvalidOperationException(); } return(Rules.ConsiderValueRule <RT>(Name, out valueReturned, Arguments)); }