private void groupVertices(FGController controller, String groupVertexText,
			Set<FGVertex> groupedVertices, Point2D groupVertexLocation, boolean isRegroup) {

		int vertexCount = groupedVertices.size();
		if (vertexCount == 0) {
			return;
		}

		if (vertexCount == 1) {
			FGVertex vertex = groupedVertices.iterator().next();
			if (vertex instanceof GroupedFunctionGraphVertex) {
				Msg.showInfo(FGViewUpdater.class, null, "Cannot Group a Single Group Vertex",
					"You cannot create a group vertex from a single group vertex");
				return;
			}
		}

		//
		// Keep track of edges that will be incoming to the new grouped vertex.
		//
		FGData functionGraphData = controller.getFunctionGraphData();
		FunctionGraph functionGraph = functionGraphData.getFunctionGraph();
		Graph<FGVertex, FGEdge> graph = functionGraph;
		Set<FGEdge> ungroupedEdges = new HashSet<>();
		accumulateUngroupedIncidentEdges(graph, groupedVertices, ungroupedEdges);

		GroupedFunctionGraphVertex groupVertex = new GroupedFunctionGraphVertex(controller,
			groupVertexText, groupedVertices, ungroupedEdges);

		boolean relayoutOverride = false; // user operation--don't force relayout
		installGroupVertex(controller, groupVertex, groupVertexLocation, relayoutOverride,
			isAnimationEnabled(), isRegroup);
	}
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