private void ProcessAssertedFact(NameVerbValueFact fact)
{
IList<Rule> newfired = new List<Rule>();
foreach (var rule in this.notfired)
if (rule.Conditions.Any(c => c is NameVerbValueFact && ((NameVerbValueFact)c).Name == fact.Name))
if (rule.FireIfReady(this))
newfired.Add(rule);
foreach (var rule in newfired)
{
this.notfired.Remove(rule);
this.fired.Add(rule);
}
}