private void createActions() {

		//@formatter:off
		new ActionBuilder("Enable Category", plugin.getName())
			.popupMenuPath("Enable Category")
			.withContext(SymbolTreeActionContext.class)
			.enabledWhen(c -> {				
				SymbolTreeNode node = c.getSelectedNode();
				return node instanceof SymbolCategoryNode;	
			})
			.onAction(c -> {
				SymbolCategoryNode node = (SymbolCategoryNode) c.getSelectedNode();
				node.setEnabled(true);
			})
			.buildAndInstallLocal(this);
		//@formatter:on

		//@formatter:off
		new ActionBuilder("Disable Category", plugin.getName())
			.popupMenuPath("Disable Category")
			.withContext(SymbolTreeActionContext.class)
			.enabledWhen(c -> {				
				SymbolTreeNode node = c.getSelectedNode();
				return node instanceof SymbolCategoryNode;	
			})
			.onAction(c -> {
				SymbolCategoryNode node = (SymbolCategoryNode) c.getSelectedNode();
				node.setEnabled(false);
			})
			.buildAndInstallLocal(this);
		//@formatter:on
	}
A disconnected symbol tree is a snapshot of the primary symbol tree.
Ghidra/Features/Base/src/main/java/ghidra/app/plugin/core/symboltree/DisconnectedSymbolTreeProvider.java