/// <summary>
        /// Creates a new conversion that is like this one, but using the supplied children. If all of the children are the same, it will return this conversion.
        /// </summary>
        /// <param name="deconstruct">The <see cref="Deconstruct" /> property of the result.</param>
        /// <param name="conversions">The <see cref="Conversions" /> property of the result.</param>
        /// <returns>This conversion if no children changed, or an conversion with the updated children.</returns>
        public DeconstructionConversion Update(LambdaExpression deconstruct, IEnumerable <Conversion> conversions)
        {
            if (deconstruct == Deconstruct && conversions == Conversions)
            {
                return(this);
            }

            return(CSharpExpression.Deconstruct(deconstruct, conversions));
        }