diff --git a/platform/util/src/com/intellij/openapi/util/io/FileUtil.java b/platform/util/src/com/intellij/openapi/util/io/FileUtil.java index dc6e892094cf..4f05b86dcad9 100644 --- a/platform/util/src/com/intellij/openapi/util/io/FileUtil.java +++ b/platform/util/src/com/intellij/openapi/util/io/FileUtil.java @@ -7,7 +7,6 @@ import com.intellij.openapi.diagnostic.Logger; import com.intellij.openapi.util.Condition; import com.intellij.openapi.util.SystemInfo; import com.intellij.openapi.util.text.StringUtil; -import com.intellij.openapi.util.text.StringUtilRt; import com.intellij.util.*; import com.intellij.util.concurrency.FixedFuture; import com.intellij.util.containers.ContainerUtil; @@ -1088,13 +1087,15 @@ public class FileUtil extends FileUtilRt { } } - @NotNull - public static JBTreeTraverser fileTraverser(@Nullable File root) { - return FILE_TRAVERSER.withRoot(root); + private static class Lazy { + private static final JBTreeTraverser FILE_TRAVERSER = JBTreeTraverser.from( + (Function>)file -> file == null ? Collections.emptySet() : JBIterable.of(file.listFiles())); } - private static final JBTreeTraverser FILE_TRAVERSER = JBTreeTraverser.from( - (Function>)file -> file == null ? Collections.emptySet() : JBIterable.of(file.listFiles())); + @NotNull + public static JBTreeTraverser fileTraverser(@Nullable File root) { + return Lazy.FILE_TRAVERSER.withRoot(root); + } public static boolean processFilesRecursively(@NotNull File root, @NotNull Processor processor) { return fileTraverser(root).bfsTraversal().processEach(processor);