LocalQuickFix (@NotNull PsiPrefixExpression prefixExpr) { final PsiElement parent = prefixExpr.getParent(); if (parent instanceof PsiPolyadicExpression polyadicExpression) { if (ExpressionUtils.hasType(polyadicExpression, CommonClassNames.JAVA_LANG_STRING)) { return null; } final PsiJavaToken token = polyadicExpression.getTokenBeforeOperand(prefixExpr); if (token == null) { return null; } final IElementType tokenType = token.getTokenType(); if (!JavaTokenType.PLUS.equals(tokenType) && !JavaTokenType.MINUS.equals(tokenType)) { return null; } return new ReplaceParentOperatorFix(); } else if (parent instanceof PsiAssignmentExpression assignmentExpression) { if (ExpressionUtils.hasType(assignmentExpression, CommonClassNames.JAVA_LANG_STRING)) { return null; } final IElementType assignmentTokenType = assignmentExpression.getOperationTokenType(); if (!JavaTokenType.PLUSEQ.equals(assignmentTokenType)) { return null; } final PsiExpression rhs = assignmentExpression.getRExpression(); if (!prefixExpr.equals(rhs)) { // don't warn on broken code. return null; } return new ReplaceParentOperatorFix(); } return null; }