@Nonnull
	public Navigable openAssembler(@Nonnull PathNode<?> path) throws IncompletePathException {
		Workspace workspace = path.getValueOfType(Workspace.class);
		WorkspaceResource resource = path.getValueOfType(WorkspaceResource.class);
		ClassBundle<?> bundle = path.getValueOfType(ClassBundle.class);
		ClassInfo info = path.getValueOfType(ClassInfo.class);
		if (info == null) {
			logger.error("Cannot resolve required path nodes, missing class in path");
			throw new IncompletePathException(ClassInfo.class);
		}
		if (workspace == null) {
			logger.error("Cannot resolve required path nodes for class '{}', missing workspace in path", info.getName());
			throw new IncompletePathException(Workspace.class);
		}
		if (resource == null) {
			logger.error("Cannot resolve required path nodes for class '{}', missing resource in path", info.getName());
			throw new IncompletePathException(WorkspaceResource.class);
		}
		if (bundle == null) {
			logger.error("Cannot resolve required path nodes for class '{}', missing bundle in path", info.getName());
			throw new IncompletePathException(ClassBundle.class);
		}

		return createContent(() -> {
			// Create text/graphic for the tab to create.
			String name = "?";
			if (path instanceof ClassPathNode classPathNode)
				name = StringUtil.shortenPath(classPathNode.getValue().getName());
			else if (path instanceof ClassMemberPathNode classMemberPathNode)
				name = classMemberPathNode.getValue().getName();
			String title = "Assembler: " + EscapeUtil.escapeStandard(StringUtil.cutOff(name, 60));
			DockableIconFactory graphicFactory = d -> new FontIconView(CarbonIcons.CODE);

			// Create content for the tab.
			AssemblerPane content = assemblerPaneProvider.get();
			content.onUpdatePath(path);

			// Build the tab.
			return createDockable(dockingManager.getPrimaryTabbedSpace(), title, graphicFactory, content);
		});
	}
Brings a {@link ClassNavigable} component representing the given class into focus.
If no such component exists, one is created.
<br>
Automatically calls the type-specific goto-declaration handling.

@param path
		Path containing a class to open.

@return Navigable content representing class content of the path.

@throws IncompletePathException
		When the path is missing parent elements.
recaf-ui/src/main/java/software/coley/recaf/services/navigation/Actions.java