protected override bool Validate(NodeIndex nodeIndex, ValidationErrorHandler errorHandler)
{
bool result = true;
Dictionary<Precondition,bool> cache = new Dictionary<Precondition, bool> ();
foreach (Rule rule in rules.Values) {
Precondition condition = rule.Precondition;
bool applies;
// Determine if the precondition has be evaluated before
if (!cache.ContainsKey (condition)) {
applies = condition.Evaluate (nodeIndex, cache);
cache [condition] = applies;
}
else
applies = cache [condition];
if (applies) result &= rule.PerformValidation (nodeIndex, errorHandler);
}
return (result);
}