boolean (PsiMethodCallExpression expression) { final PsiReferenceExpression methodExpression = expression.getMethodExpression(); @NonNls final String name = methodExpression.getReferenceName(); if (!regexMethodNames.contains(name)) { return false; } final PsiExpressionList argumentList = expression.getArgumentList(); final PsiExpression[] arguments = argumentList.getExpressions(); if (arguments.length == 0) { return false; } final Object value = ExpressionUtils.computeConstantExpression(arguments[0]); if (!(value instanceof String regex)) { return false; } if (PsiUtil.isLanguageLevel7OrHigher(expression) && "split".equals(name) && isOptimizedPattern(regex) || PsiUtil.isLanguageLevel9OrHigher(expression) && "replace".equals(name)) { return false; } final PsiMethod method = expression.resolveMethod(); if (method == null) { return false; } final PsiClass containingClass = method.getContainingClass(); if (containingClass == null) { return false; } final String className = containingClass.getQualifiedName(); if (!CommonClassNames.JAVA_LANG_STRING.equals(className)) { return false; } return AllowedApiFilterExtension.isClassAllowed("java.util.regex.Pattern", expression); }