public override void VisitUnaryExpression(UnaryExpression node)
 {
     this.VisitUnaryExpression(node);
     if (node.get_Operator() == UnaryOperator.Negate || node.get_Operator() == 10 && node.get_Operand().get_HasType())
     {
         V_0 = node.get_Operand().get_ExpressionType().Resolve();
         if (V_0 != null && V_0.get_IsEnum())
         {
             node.set_Operand(new ExplicitCastExpression(node.get_Operand(), this.GetEnumUnderlyingType(V_0), null));
             node.DecideExpressionType();
         }
     }
     return;
 }
        public override void VisitUnaryExpression(UnaryExpression node)
        {
            base.VisitUnaryExpression(node);

            if (node.Operator == UnaryOperator.Negate || node.Operator == UnaryOperator.UnaryPlus)
            {
                if (node.Operand.HasType)
                {
                    TypeDefinition supposedEnum = node.Operand.ExpressionType.Resolve();
                    if (supposedEnum != null && supposedEnum.IsEnum)
                    {
                        node.Operand = new CastExpression(node.Operand, GetEnumUnderlyingType(supposedEnum), null);
                        node.DecideExpressionType();
                    }
                }
            }
        }