private void createActions() {
		String firstGroup = "group1";
		String secondGroup = "group2";

		// group
		groupAction = new DockingAction("Group Vertices", FunctionGraphPlugin.class.getName()) {
			@Override
			public void actionPerformed(ActionContext context) {
				groupVertices();
			}
		};
		groupAction.setDescription("Combine selected vertices into one vertex");
		Icon imageIcon = new GIcon("icon.plugin.functiongraph.action.vertex.group");
		groupAction.setToolBarData(new ToolBarData(imageIcon, secondGroup));
		groupAction.setHelpLocation(
			new HelpLocation("FunctionGraphPlugin", "Group_Vertex_Action_Group"));

		// regroup
		regroupAction = new DockingAction("Regroup Vertices", FunctionGraphPlugin.class.getName()) {
			@Override
			public void actionPerformed(ActionContext context) {
				regroupVertices();
			}
		};
		regroupAction.setDescription("Restore vertex and siblings back to group form");
		imageIcon = new GIcon("icon.plugin.functiongraph.action.vertex.regroup");
		regroupAction.setToolBarData(new ToolBarData(imageIcon, secondGroup));
		regroupAction
				.setHelpLocation(new HelpLocation("FunctionGraphPlugin", "Vertex_Action_Regroup"));

		// ungroup
		ungroupAction = new DockingAction("Ungroup Vertices", FunctionGraphPlugin.class.getName()) {
			@Override
			public void actionPerformed(ActionContext context) {
				controller.ungroupVertex(groupVertex);
			}
		};
		ungroupAction.setDescription("Ungroup selected vertices into individual vertex");
		imageIcon = new GIcon("icon.plugin.functiongraph.action.vertex.ungroup");
		ungroupAction.setToolBarData(new ToolBarData(imageIcon, secondGroup));
		ungroupAction
				.setHelpLocation(new HelpLocation("FunctionGraphPlugin", "Vertex_Action_Ungroup"));

		// add to group
		addToGroupAction = new DockingAction("Add to Group", FunctionGraphPlugin.class.getName()) {
			@Override
			public void actionPerformed(ActionContext context) {
				addToGroup();
			}

			@Override
			public boolean isEnabledForContext(ActionContext context) {
				Set<FGVertex> vertices = controller.getSelectedVertices();
				vertices.remove(vertex);

				if (vertices.size() == 0) {
					Msg.showInfo(getClass(), GroupedFunctionGraphComponentPanel.this,
						"Cannot Group 1 Vertex",
						"You must have more than 1 vertex selected to add to this group");
					return false;
				}

				return vertices.size() > 0;
			}
		};
		addToGroupAction.setDescription("Add the selected vertices to this group");
		imageIcon = new GIcon("icon.plugin.functiongraph.action.vertex.group.add");
		addToGroupAction.setToolBarData(new ToolBarData(imageIcon, secondGroup));
		addToGroupAction.setHelpLocation(
			new HelpLocation("FunctionGraphPlugin", "Vertex_Action_Group_Add"));

		// color
		setVertexMostRecentAction = new SetVertexMostRecentColorAction(controller, vertex);
		setVertexMostRecentAction.setHelpLocation(
			new HelpLocation("FunctionGraphPlugin", "Group_Vertex_Action_Color"));
		Icon icon = setVertexMostRecentAction.getToolbarIcon();
		setVertexMostRecentAction.setToolBarData(new ToolBarData(icon, firstGroup));

		genericHeader.actionAdded(setVertexMostRecentAction);
		genericHeader.actionAdded(ungroupAction);
		genericHeader.actionAdded(addToGroupAction);
		genericHeader.actionAdded(groupAction); // last to be the same as the non-grouped header

		genericHeader.update();
	}
A bit of a hack that triggers the text area to update its preferred height now before we
render so that it doesn't change later.
Ghidra/Features/FunctionGraph/src/main/java/ghidra/app/plugin/core/functiongraph/graph/vertex/GroupedFunctionGraphComponentPanel.java