private static bool IsNotUnderUnaryNegation([NotNull] CSharpPostfixExpressionContext context)
        {
            var unaryExpression = context.ExpressionWithReference as IUnaryExpression;

            var operatorExpression = UnaryOperatorExpressionNavigator.GetByOperand(unaryExpression);

            if (operatorExpression == null)
            {
                return(true);
            }

            return(operatorExpression.UnaryOperatorType != UnaryOperatorType.EXCL);
        }
            protected override void AfterComplete(ITextControl textControl, ICSharpExpression expression)
            {
                // collapse '!!b' into 'b'
                var unary = expression as IUnaryOperatorExpression;

                if (unary != null && unary.UnaryOperatorType == UnaryOperatorType.EXCL)
                {
                    var unary2 = UnaryOperatorExpressionNavigator.GetByOperand(unary);
                    if (unary2 != null && unary2.UnaryOperatorType == UnaryOperatorType.EXCL)
                    {
                        var psiServices = expression.GetPsiServices();
                        expression = psiServices.DoTransaction(
                            ExpandCommandName, () => unary2.ReplaceBy(unary.Operand));
                    }
                }

                base.AfterComplete(textControl, expression);
            }