void (@NotNull PsiPrefixExpression prefixExpression) { super.visitPrefixExpression(prefixExpression); if (!ConvertDoubleUnaryToPrefixOperationFix.isDesiredPrefixExpression(prefixExpression, true)) { return; } final PsiExpression operand = prefixExpression.getOperand(); if (operand == null) { return; } final PsiType type = operand.getType(); if (type == null) { return; } if (onlyReportInsideBinaryExpression) { final PsiElement parent = ParenthesesUtils.getParentSkipParentheses(prefixExpression); if (!(operand instanceof PsiParenthesizedExpression || operand instanceof PsiPrefixExpression || parent instanceof PsiPolyadicExpression || parent instanceof PsiPrefixExpression || parent instanceof PsiAssignmentExpression || parent instanceof PsiVariable)) { return; } } else if (TypeUtils.unaryNumericPromotion(type) != type && MethodCallUtils.isNecessaryForSurroundingMethodCall(prefixExpression, operand)) { // unary plus might have been used as cast to int return; } registerError(prefixExpression.getOperationSign(), ProblemHighlightType.GENERIC_ERROR_OR_WARNING, isOnTheFly(), prefixExpression); }