void (PsiExpression expression, String key, PsiExpression highlightedExpression) { if (key == null) return; Ref<String> resourceBundleName = new Ref<>(); if (!JavaI18nUtil.isValidPropertyReference(myManager.getProject(), expression, key, resourceBundleName)) { String bundleName = resourceBundleName.get(); if (bundleName != null) { // can be null if we were unable to resolve literal expression, e.g. when JDK was not set appendPropertyKeyNotFoundProblem(bundleName, key, highlightedExpression, myManager, myProblems, onTheFly); } } else if (expression.getParent() instanceof PsiNameValuePair nvp) { if (Objects.equals(nvp.getName(), AnnotationUtil.PROPERTY_KEY_RESOURCE_BUNDLE_PARAMETER)) { PropertiesReferenceManager manager = PropertiesReferenceManager.getInstance(expression.getProject()); Module module = ModuleUtilCore.findModuleForPsiElement(expression); if (module != null) { List<PropertiesFile> propFiles = manager.findPropertiesFiles(module, key); if (propFiles.isEmpty()) { final String description = JavaI18nBundle.message("inspection.invalid.resource.bundle.reference", key); final ProblemDescriptor problem = myManager.createProblemDescriptor(expression, description, (LocalQuickFix)null, ProblemHighlightType.LIKE_UNKNOWN_SYMBOL, onTheFly); myProblems.putIfAbsent(expression, problem); } } } } else if (expression.getParent() instanceof PsiExpressionList expressions && expression.getParent().getParent() instanceof PsiMethodCallExpression) { if (!JavaI18nUtil.mustBePropertyKey(expression, null)) return; final SortedSet<Integer> paramsCount = JavaI18nUtil.getPropertyValueParamsCount(highlightedExpression, resourceBundleName.get()); if (paramsCount.isEmpty() || paramsCount.size() != 1 && resourceBundleName.get() == null) { return; } final int maxParamCount = paramsCount.last(); final PsiMethodCallExpression methodCall = (PsiMethodCallExpression)expressions.getParent(); final PsiMethod method = methodCall.resolveMethod(); final PsiExpression[] args = expressions.getExpressions(); for (int i = 0; i < args.length; i++) { if (args[i] == expression) { if (i + maxParamCount >= args.length && method != null && method.getParameterList().getParametersCount() == i + 2 && Objects.requireNonNull(method.getParameterList().getParameter(i + 1)).isVarArgs() && !hasArrayTypeAt(i + 1, methodCall)) { myProblems.putIfAbsent(methodCall, myManager.createProblemDescriptor(methodCall, JavaI18nBundle.message("property.has.more.parameters.than.passed", key, maxParamCount, args.length - i - 1), onTheFly, LocalQuickFix.EMPTY_ARRAY, ProblemHighlightType.LIKE_UNKNOWN_SYMBOL)); } break; } } } }