private bool TraceRule(DocTemplateDefinition template, DocModelRule rule, StringBuilder sb, SEntity ent, List<SEntity> population)
{
bool pass = true;
if (rule is DocModelRuleConstraint)
{
DocModelRuleConstraint ruleCon = (DocModelRuleConstraint)rule;
object result = TraceOperation(template, ruleCon.Expression, sb, ent, population, 0);
if(result is bool && !((bool)result))
pass = false;
}
foreach(DocModelRule sub in rule.Rules)
{
bool eachpass = TraceRule(template, sub, sb, ent, population);
if (!eachpass)
pass = false;
}
return pass;
}