PsiMethod[] (final PsiClass subclass) { Set<PsiMethod> baseConstructors = new HashSet<>(); PsiMethod[] constructors = subclass.getConstructors(); for (PsiMethod constructor : constructors) { PsiCodeBlock body = constructor.getBody(); if (body == null) continue; PsiStatement[] statements = body.getStatements(); if (statements.length > 0) { PsiStatement first = statements[0]; if (first instanceof PsiExpressionStatement) { PsiExpression expression = ((PsiExpressionStatement)first).getExpression(); if (expression instanceof PsiMethodCallExpression) { PsiReferenceExpression calledMethod = ((PsiMethodCallExpression)expression).getMethodExpression(); @NonNls String text = calledMethod.getText(); if ("super".equals(text)) { PsiMethod baseConstructor = (PsiMethod)calledMethod.resolve(); if (baseConstructor != null) { baseConstructors.add(baseConstructor); } } } } } } return baseConstructors.toArray(PsiMethod.EMPTY_ARRAY); }