protected void visitFiles(@Nonnull ResourcePathNode containingResourcePath,
	                          @Nonnull FileBundle bundle) {
		Map<String, DirectoryPathNode> directories = new HashMap<>();
		BundlePathNode bundlePath = containingResourcePath.child(bundle);

		// Pre-sort classes to skip tree-building comparisons/synchronizations.
		TreeSet<FileInfo> sortedFiles = new TreeSet<>(Named.NAME_PATH_COMPARATOR);
		sortedFiles.addAll(bundle.values());

		// Add each file in sorted order.
		for (FileInfo fileInfo : sortedFiles) {
			String directoryName = interceptDirectoryName(fileInfo.getDirectoryName());
			DirectoryPathNode directoryPath = directories.computeIfAbsent(directoryName, bundlePath::child);
			visitFile(directoryPath, fileInfo);
		}
	}
Adds the given file bundle to the tree.

@param containingResourcePath
		Path to resource holding files.
@param bundle
		Bundle of files to insert.
recaf-ui/src/main/java/software/coley/recaf/ui/control/tree/WorkspaceRootTreeNode.java