@Nonnull
	private Tree<String, ClassPathNode> workspaceToTree(@Nonnull Workspace workspace) {
		Tree<String, ClassPathNode> tree = new SortedTreeImpl<>();
		workspace.findClasses(false, classInfo -> true)
				.forEach(classPath -> {
					// Only match classes in the primary resource
					WorkspaceResource resource = classPath.getValueOfType(WorkspaceResource.class);
					if (resource != workspace.getPrimaryResource())
						return;

					ClassInfo info = classPath.getValue();
					String name = info.getName();
					String[] sections = name.split("/");
					int maxSplit = explorerConfig.getMaxTreeDirectoryDepth();
					if (sections.length > maxSplit) {
						name = StringUtil.cutOffAtNth(name, '/', maxSplit) + "/" + StringUtil.shortenPath(name);
						sections = name.split("/");
					}

					Tree<String, ClassPathNode> path = tree;
					for (int i = 0; i < sections.length; i++) {
						String section = sections[i];
						if (i == sections.length - 1)
							path = path.computeIfAbsent(section, s -> new SortedTreeImpl<>(classPath));
						else
							path = path.computeIfAbsent(section, s -> new SortedTreeImpl<>());
					}
				});
		return tree;
	}
Pane to display the current mapping progress of classes in the workspace.
Classes change color to indicate if they are mapped or not, and how fully mapped their declared members are.

@author Matt Coley
@see MappingProgressWindow
recaf-ui/src/main/java/software/coley/recaf/ui/pane/MappingProgressPane.java