public override Expression Visit(Expression node) { if (node == null) { return(null); } if (!_candidates.Contains(node)) { return(base.Visit(node)); } var evaluated = EvaluateSubtree(node); if (evaluated != node) { return(PartialEvaluator.Evaluate(evaluated)); } return(evaluated); }
public static Expression Evaluate(Expression node) { var candidates = Nominator.Nominate(node); var evaluator = new PartialEvaluator(candidates); return evaluator.Visit(node); }