void (@NotNull PsiMethodCallExpression expression) { super.visitMethodCallExpression(expression); final PsiReferenceExpression methodExpression = expression.getMethodExpression(); final String methodName = methodExpression.getReferenceName(); final PsiExpressionList argumentList = expression.getArgumentList(); if (HardcodedMethodConstants.HASH_CODE.equals(methodName)) { if (!argumentList.isEmpty()) return; final PsiExpression qualifier = methodExpression.getQualifierExpression(); if (qualifier == null) return; final PsiType type = qualifier.getType(); if (!(type instanceof PsiArrayType)) return; registerMethodCallError(expression, type, Kind.ARRAY_HASH_CODE); } else if ("hash".equals(methodName)) { if (argumentList.getExpressionCount() == 1) return; final PsiMethod method = expression.resolveMethod(); if (method == null) { return; } final PsiClass containingClass = method.getContainingClass(); if (containingClass == null || !CommonClassNames.JAVA_UTIL_OBJECTS.equals(containingClass.getQualifiedName())) { return; } final PsiExpression[] expressions = argumentList.getExpressions(); for (PsiExpression arg : expressions) { final PsiType type = arg.getType(); if (!(type instanceof PsiArrayType)) continue; registerError(arg, type, Kind.OBJECTS_HASH); } } }