boolean (@NotNull PsiMethodCallExpression expression, boolean considerStaticFinalConstant, @NonNls String className, @NonNls String... methodNames) { final String methodName = getMethodName(expression); boolean found = false; for (String name : methodNames) { if (name.equals(methodName)) { found = true; break; } } if (!found) { return false; } final PsiMethod method = expression.resolveMethod(); if (method == null) { return false; } final PsiClass aClass = method.getContainingClass(); if (aClass == null) { return false; } if (!com.intellij.psi.util.InheritanceUtil.isInheritor(aClass, className)) { return false; } final PsiExpressionList argumentList = expression.getArgumentList(); final PsiExpression argument = PsiUtil.skipParenthesizedExprDown(ExpressionUtils.getFirstExpressionInList(argumentList)); if (argument == null) { return false; } final PsiType type = argument.getType(); if (type == null || !type.equalsToText(CommonClassNames.JAVA_LANG_STRING)) { return false; } if (considerStaticFinalConstant && argument instanceof PsiReferenceExpression referenceExpression) { final PsiElement target = referenceExpression.resolve(); if (target instanceof PsiField field) { if (field.hasModifierProperty(PsiModifier.STATIC) && field.hasModifierProperty(PsiModifier.FINAL)) { return false; } } } return !PsiUtil.isConstantExpression(argument); }