/// <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="left">The <see cref="BinaryCSharpExpression.Left" /> property of the result. </param>
        /// <param name="leftConversion">The <see cref="LeftConversion" /> property of the result.</param>
        /// <param name="right">The <see cref="BinaryCSharpExpression.Right" /> property of the result. </param>
        /// <param name="finalConversion">The <see cref="FinalConversion" /> property of the result.</param>
        /// <returns>This expression if no children changed, or an expression with the updated children.</returns>
        public AssignBinaryCSharpExpression Update(Expression left, LambdaExpression leftConversion, Expression right, LambdaExpression finalConversion)
        {
            if (left == base.Left && leftConversion == this.LeftConversion && right == base.Right && finalConversion == this.FinalConversion)
            {
                return(this);
            }

            return(CSharpExpression.MakeBinaryAssign(CSharpNodeType, left, right, Method, finalConversion, leftConversion));
        }