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

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

		// Add each class in sorted order.
		for (ClassInfo classInfo : sortedClasses) {
			String packageName = interceptDirectoryName(classInfo.getPackageName());
			DirectoryPathNode packagePath = directories.computeIfAbsent(packageName, bundlePath::child);
			visitClass(packagePath, classInfo);
		}
	}
Adds the given class bundle to the tree.

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