public void groupSelectedVertices(FGController controller, Point2D location) {
		Set<FGVertex> selectedVertices = controller.getSelectedVertices();
		int vertexCount = selectedVertices.size();
		if (vertexCount == 1) {
			FGVertex vertex = selectedVertices.iterator().next();
			if (vertex instanceof GroupedFunctionGraphVertex) {
				FGView view = controller.getView();
				Msg.showInfo(FGViewUpdater.class, view.getPrimaryGraphViewer(),
					"Cannot Group a Single Group Vertex",
					"You cannot create a group vertex from a single group vertex");
				return;
			}
		}

		JComponent viewComponent = controller.getViewComponent();
		String text = promptUserForGroupVertexText(viewComponent, null, selectedVertices);
		if (text == null) {
			return; // cancelled
		}

		if (location == null) {
			FGView view = controller.getView();
			VisualizationServer<FGVertex, FGEdge> viewer = view.getPrimaryGraphViewer();
			Rectangle containingBounds =
				GraphViewerUtils.getBoundsForVerticesInLayoutSpace(viewer, selectedVertices);
			location =
				new Point2D.Double(containingBounds.getCenterX(), containingBounds.getCenterY());
		}

		groupVertices(controller, text, selectedVertices, location);
	}
Checks each vertex in the given set to see if it is a group vertex.  If so, this method
will check to see if the group is still in the graph.  If not, assume that it has been
uncollapsed and find it's children (recursively) and add them to the set to be regrouped,
replacing that original group.

@param graph the graph containing all vertices
@param fixupVertices the vertices to examine
Ghidra/Features/FunctionGraph/src/main/java/ghidra/graph/viewer/FGViewUpdater.java