Tree (@NotNull Project project, @NotNull ProjectSystemId externalSystemId) { ExternalSystemTasksTreeModel model = new ExternalSystemTasksTreeModel(externalSystemId); ExternalSystemTasksTree result = new ExternalSystemTasksTree(model, new HashMap<>(), project, externalSystemId); ExternalSystemManager<?, ?, ?, ?, ?> manager = ExternalSystemApiUtil.getManager(externalSystemId); assert manager != null; AbstractExternalSystemLocalSettings<?> settings = manager.getLocalSettingsProvider().fun(project); Map<ExternalProjectPojo, Collection<ExternalProjectPojo>> projects = settings.getAvailableProjects(); List<ExternalProjectPojo> rootProjects = new ArrayList<>(projects.keySet()); ContainerUtil.sort(rootProjects); for (ExternalProjectPojo rootProject : rootProjects) { model.ensureSubProjectsStructure(rootProject, projects.get(rootProject)); } return result; }