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); } }