internal static HashSet <Expression> Nominate(Expression expression) { var nominator = new Nominator(); nominator.Visit(expression); return(nominator._candidates); }
/// <summary> /// Performs evaluation and replacement of independent sub-trees /// </summary> /// <param name="expression">The root of the expression tree.</param> /// <returns>A new tree with sub-trees evaluated and replaced.</returns> public static Expression Rewrite(Expression expression) => Evaluator.Evaluate(Nominator.Nominate(expression), expression);