List<Node> (@NotNull VirtualFile root) { LinkedList<Node> result = new LinkedList<>(); LinkedList<VirtualFile> workItems = new LinkedList<>(); workItems.add(root); while (!workItems.isEmpty()) { VirtualFile item = workItems.removeFirst(); checkCanceled(); final Node vcsElement = new VcsFileResolver(myVcs, item, root).resolve(); if (vcsElement != null) { result.add(vcsElement); } else { for (VirtualFile child : item.getChildren()) { checkCanceled(); if (child.isDirectory() && myRootIterator.acceptFolderUnderVcs(root, child)) { workItems.add(child); } } } } return result; }