void () { if (isInstanceofPlace(myPosition)) { addKeyword(LookupElementDecorator.withInsertHandler( createKeyword(PsiKeyword.INSTANCEOF), (context, item) -> { TailType tailType = TailTypes.humbleSpaceBeforeWordType(); if (tailType.isApplicable(context)) { tailType.processTail(context.getEditor(), context.getTailOffset()); } if ('!' == context.getCompletionChar()) { context.setAddCompletionChar(false); } context.commitDocument(); PsiInstanceOfExpression expr = PsiTreeUtil.findElementOfClassAtOffset(context.getFile(), context.getStartOffset(), PsiInstanceOfExpression.class, false); if (expr != null) { PsiExpression operand = expr.getOperand(); if (operand instanceof PsiPrefixExpression && ((PsiPrefixExpression)operand).getOperationTokenType().equals(JavaTokenType.EXCL)) { PsiExpression negated = ((PsiPrefixExpression)operand).getOperand(); if (negated != null) { String space = CompletionStyleUtil.getCodeStyleSettings(context).SPACE_WITHIN_PARENTHESES ? " " : ""; context.getDocument().insertString(negated.getTextRange().getStartOffset(), "(" + space); context.getDocument().insertString(context.getTailOffset(), space + ")"); } } else if ('!' == context.getCompletionChar()) { String space = CompletionStyleUtil.getCodeStyleSettings(context).SPACE_WITHIN_PARENTHESES ? " " : ""; context.getDocument().insertString(expr.getTextRange().getStartOffset(), "!(" + space); context.getDocument().insertString(context.getTailOffset(), space + ")"); } } })); } }