private void FillRulesAndFactorsLogicalOutput(IList <Rule> baseRuleTree, WorkingMemory workingMemory) { foreach (Rule rule in baseRuleTree) { if (this.workingMemory.HaveJudgments(rule.Antecedent.JudgmentList)) { this.rulesOutput[this.iteration].Add(rule); this.factorsOutput[this.iteration].Add(rule.Consequent.Judgment); } else { this.FillRulesAndFactorsLogicalOutput(rule.GetChildRules(), workingMemory); } } }