public override Expression VisitPrefixUnaryExpression(PrefixUnaryExpressionSyntax node)
            {
                if (_proofSemantics && !node.IsMemberMethodOfPrimitiveType(_semanticModel))
                {
                    throw new UnsupportedSyntaxException($"detected overloaded unary operator '{node}'");
                }

                var operand = node.Operand.Accept(this);

                switch (node.Kind())
                {
                case SyntaxKind.UnaryMinusExpression:
                    return(new UnaryMinusExpression(operand));

                case SyntaxKind.LogicalNotExpression:
                    return(new ComparisonExpression("!=", operand, new GenericLiteralExpression()));

                default:
                    throw new UnsupportedSyntaxException(node);
                }
            }