void (@NotNull PsiMethod method) { super.visitMethod(method); if (onlyReportPublicMethods && !method.hasModifierProperty(PsiModifier.PUBLIC)) { return; } if (JavaPsiRecordUtil.isCompactConstructor(method) || JavaPsiRecordUtil.isExplicitCanonicalConstructor(method)) { return; } final PsiParameterList parameterList = method.getParameterList(); final PsiParameter[] parameters = parameterList.getParameters(); if (parameters.length == 0) { return; } final PsiParameter lastParameter = parameters[parameters.length - 1]; final PsiType type = lastParameter.getType(); if (!(type instanceof PsiArrayType arrayType) || type instanceof PsiEllipsisType) { return; } if (NullableNotNullManager.isNullable(lastParameter)) { return; } final PsiType componentType = arrayType.getComponentType(); if (ignoreMultiDimensionalArrayParameters && componentType instanceof PsiArrayType) { // don't report when it is multidimensional array return; } if (ignoreByteAndShortArrayParameters) { if (PsiTypes.byteType().equals(componentType) || PsiTypes.shortType().equals(componentType)) { return; } if (ignoreAllPrimitiveArrayParameters && componentType instanceof PsiPrimitiveType) { return; } } if (LibraryUtil.isOverrideOfLibraryMethod(method)) { return; } if (ignoreOverridingMethods && MethodUtils.hasSuper(method)) { return; } if (ignoreMultipleArrayParameters) { for (int i = 0, length = parameters.length - 1; i < length; i++) { final PsiParameter parameter = parameters[i]; if (parameter.getType() instanceof PsiArrayType) { return; } } } final PsiElement nameIdentifier = method.getNameIdentifier(); if (nameIdentifier == null) { return; } if (isVisibleHighlight(method)) { registerErrorAtOffset(method, nameIdentifier.getStartOffsetInParent(), nameIdentifier.getTextLength()); } else { final int offset = nameIdentifier.getStartOffsetInParent(); final int length = parameterList.getStartOffsetInParent() + parameterList.getTextLength() - offset; registerErrorAtOffset(method, offset, length); } }