List<GrMethod> (@NotNull GrMethod constructor) { Set<Object> visited = new HashSet<>(); List<GrMethod> result = new SmartList<>(constructor); while (true) { final GrConstructorInvocation invocation = PsiUtil.getConstructorInvocation(constructor); if (invocation != null && invocation.isThisCall()) { final PsiMethod method = invocation.resolveMethod(); if (method != null && method.isConstructor() && visited.add(method)) { result.add((GrMethod)method); constructor = (GrMethod)method; continue; } } return result; } }