void (@NotNull PsiMethodCallExpression expression) { final PsiReferenceExpression methodExpression = expression.getMethodExpression(); final String methodName = methodExpression.getReferenceName(); final PsiExpressionList argumentList = expression.getArgumentList(); final PsiExpression[] expressions = argumentList.getExpressions(); if (!((expressions.length == 1 && HardcodedMethodConstants.HASH_CODE.equals(methodName)) || (expressions.length == 2 && HardcodedMethodConstants.EQUALS.equals(methodName)))) { return; } final PsiExpression argument1 = expressions[0]; final PsiType type1 = argument1.getType(); if (!(type1 instanceof PsiArrayType)) { return; } final int dimensions = type1.getArrayDimensions(); if (expressions.length == 2) { final PsiExpression argument2 = expressions[1]; final PsiType type2 = argument2.getType(); if (!(type2 instanceof PsiArrayType)) { return; } if (dimensions != type2.getArrayDimensions()) { return; } } final PsiMethod method = expression.resolveMethod(); if (method == null) { return; } final PsiClass containingClass = method.getContainingClass(); if (containingClass == null) { return; } final Kind kind = getKind(containingClass.getQualifiedName(), methodName, dimensions); if (kind == null) { return; } registerMethodCallError(expression, kind); }