public static ArrayList<String> getExtendedTypeClasses(Project project, String... formTypeNames) { List<String> formTypeNamesList = Arrays.asList(formTypeNames); ArrayList<String> extendedTypeClasses = new ArrayList<String>(); FormExtensionServiceParser formExtensionServiceParser = ServiceXmlParserFactory.getInstance(project, FormExtensionServiceParser.class); for (String formClass : formExtensionServiceParser.getFormExtensions().keySet()) { PsiElement psiElements[] = PhpElementsUtil.getPsiElementsBySignature( project, "#M#C\\" + formClass + ".getExtendedType"); for (PsiElement psiElement : psiElements) { PhpReturn phpReturn = PsiTreeUtil.findChildOfType(psiElement, PhpReturn.class); if (phpReturn != null) { PhpPsiElement returnValue = phpReturn.getFirstPsiChild(); if (returnValue instanceof StringLiteralExpression && formTypeNamesList.contains( ((StringLiteralExpression) returnValue).getContents())) { extendedTypeClasses.add(formClass); } } } } return extendedTypeClasses; }