/// <summary>
        ///     Reduces this expression to base DLR variables.
        /// </summary>
        /// <returns></returns>
        public override Expression Reduce()
        {
            var expr = new AssignmentExpression(Left as LeftHandValueExpression, Right, SetNodeType);

            expr.SetScope(Scope.ParentScope);
            expr.Right.SetScope(Scope);

            return expr;
        }
 protected virtual Expression VisitAssignment(AssignmentExpression node)
 {
     Visit(node.Left);
     Visit(node.Right);
     return node;
 }