/// <summary>
/// Creates a new expression that is like this one, but using the
/// supplied children. If all of the children are the same, it will
/// return this expression.
/// </summary>
/// <param name="variables">The <see cref="Variables" /> property of the result.</param>
/// <returns>This expression if no children changed, or an expression with the updated children.</returns>
public RuntimeVariablesExpression Update(IEnumerable <ParameterExpression> variables)
{
if (variables == Variables)
{
return(this);
}
return(Expression.RuntimeVariables(variables));
}