Integer (@NotNull PsiReferenceExpression expression, @NotNull BoxingInfo boxingInfo) { PsiElement parent = PsiUtil.skipParenthesizedExprUp(expression).getParent(); PsiMethodCallExpression call = ExpressionUtils.getCallForQualifier(expression); if (call != null) { if(!TO_STRING.test(call) && !HASH_CODE.test(call) && !isAllowedInstanceCall(call)) return null; } if (parent instanceof PsiExpressionList) { return expressionListImpactAfterBoxingRemoval((PsiExpressionList)parent, expression); } else if (parent instanceof PsiAssignmentExpression assignment) { final PsiType lExprType = assignment.getLExpression().getType(); if (lExprType != null && TypeUtils.isJavaLangString(lExprType)) return 0; PsiExpression rExpression = assignment.getRExpression(); if (rExpression == null) return 0; if (!boxingInfo.checkExpression(rExpression)) return null; return TypeConversionUtil.convertEQtoOperation(assignment.getOperationTokenType()) != null ? -2 : -1; } else if (parent instanceof PsiSynchronizedStatement) { return null; } else if (parent instanceof PsiPolyadicExpression) { return polyadicExpressionImpactAfterBoxingRemoval((PsiPolyadicExpression)parent, expression); } else if (parent instanceof PsiReturnStatement) { PsiMethod method = PsiTreeUtil.getParentOfType(parent, PsiMethod.class, false, PsiLambdaExpression.class); if (method != null) { PsiType returnType = method.getReturnType(); if (returnType != null) { return returnType instanceof PsiPrimitiveType ? -1 : 1; } } } return 0; }