void (@NotNull Project project, @NotNull PsiElement element, @NotNull ModPsiUpdater updater) { final PsiElement parent = ParenthesesUtils.getParentSkipParentheses(element); if (!(parent instanceof PsiPolyadicExpression polyadicExpression)) { return; } final PsiExpression[] operands = polyadicExpression.getOperands(); if (operands.length != 2) { return; } PsiExpression operand = PsiUtil.skipParenthesizedExprDown(operands[1]); @NonNls final StringBuilder newExpressionText = new StringBuilder(); if (operand instanceof PsiPrefixExpression prefixExpression) { if (!JavaTokenType.EXCL.equals(prefixExpression.getOperationTokenType())) { return; } newExpressionText.append('!'); operand = PsiUtil.skipParenthesizedExprDown(prefixExpression.getOperand()); } if (!(operand instanceof PsiMethodCallExpression methodCallExpression)) { return; } final PsiReferenceExpression methodExpression = methodCallExpression.getMethodExpression(); final String referenceName = methodExpression.getReferenceName(); final PsiExpression qualifier = methodExpression.getQualifierExpression(); if (qualifier == null) { return; } final PsiExpressionList argumentList = methodCallExpression.getArgumentList(); final PsiExpression[] arguments = argumentList.getExpressions(); if (arguments.length != 1) { return; } final PsiExpression argument = arguments[0]; final PsiType type = argument.getType(); if (PsiTypes.booleanType().equals(type)) { final Object value = ExpressionUtils.computeConstantExpression(argument); if (Boolean.TRUE.equals(value)) { newExpressionText.append("java.lang.Boolean.TRUE"); } else if (Boolean.FALSE.equals(value)) { newExpressionText.append("java.lang.Boolean.FALSE"); } else { newExpressionText.append("java.lang.Boolean.valueOf(").append(argument.getText()).append(')'); } } else if (PsiTypes.byteType().equals(type)) { newExpressionText.append("java.lang.Byte.valueOf(").append(argument.getText()).append(')'); } else if (PsiTypes.shortType().equals(type)) { newExpressionText.append("java.lang.Short.valueOf(").append(argument.getText()).append(')'); } else if (PsiTypes.intType().equals(type)) { newExpressionText.append("java.lang.Integer.valueOf(").append(argument.getText()).append(')'); } else if (PsiTypes.longType().equals(type)) { newExpressionText.append("java.lang.Long.valueOf(").append(argument.getText()).append(')'); } else if (PsiTypes.floatType().equals(type)) { newExpressionText.append("java.lang.Float.valueOf(").append(argument.getText()).append(')'); } else if (PsiTypes.doubleType().equals(type)) { newExpressionText.append("java.lang.Double.valueOf(").append(argument.getText()).append(')'); } else { newExpressionText.append(argument.getText()); } newExpressionText.append('.').append(referenceName).append('(').append(qualifier.getText()).append(')'); PsiReplacementUtil.replaceExpression(polyadicExpression, newExpressionText.toString()); }