public override void Visit(UnaryExpression unary)
        {
            // Recursively evaluates the underlying expression
            unary.Expression.Accept(this);

            switch (unary.Type)
            {
            case UnaryExpressionType.Not:
                Result = !ConversionUtility.Convert <bool>(Result);
                break;

            case UnaryExpressionType.Negate:
                Result = OperatorUtility.Negate(Result);
                break;

            case UnaryExpressionType.BitwiseNot:
                Result = OperatorUtility.Not(Result);
                break;
            }
        }