protected virtual Expression VisitLeftHandValue(LeftHandValueExpression node)
 {
     Visit(node.Value);
     return node;
 }
 internal ConditionalAssignmentExpression(LeftHandValueExpression left, Expression right, bool isOrAssign)
     : base(left, right, ExpressionType.Assign)
 {
     IsOrAssign = isOrAssign;
 }
 internal AssignmentExpression(LeftHandValueExpression left, Expression right, ExpressionType assignType)
 {
     Left = left;
     Right = right ?? Constant(null);
     ExtraNodeType = assignType;
 }
 public static AssignmentExpression Assign(LeftHandValueExpression left, Expression right, ExpressionType type)
 {
     return new AssignmentExpression(left, right, type);
 }
 public static AssignmentExpression Assign(LeftHandValueExpression left, Expression right)
 {
     return Assign(left, right, ExpressionType.Assign);
 }
 public static ConditionalAssignmentExpression ConditionalAssign(LeftHandValueExpression left, Expression right,
     bool isOrAssign)
 {
     return new ConditionalAssignmentExpression(left, right, isOrAssign);
 }