public GroupedFunctionGraphVertex derriveGroupVertex(Set<FGVertex> additionalGroupedVertices,
			String groupVertexText, Set<FGEdge> additionalUngroupedEdges) {

		HashSet<FGEdge> newEdges = new HashSet<>(ungroupedEdges);
		newEdges.addAll(additionalUngroupedEdges);

		HashSet<FGVertex> newVertices = new HashSet<>(vertices);
		newVertices.addAll(additionalGroupedVertices);

		GroupedFunctionGraphVertex newVertex =
			new GroupedFunctionGraphVertex(getController(), groupVertexText, newVertices, newEdges);

		return newVertex;
	}
Seriously complicated algorithm (conceptually) to ensure that we never store in our 
collection of ungrouped edges (which we may sometime have to re-install) any group vertex, 
as when we go to restore the edges, we do not know how to do so if the group is no 
longer there (like as a result of an ungroup operation).
  
@param edge the edge to resolve/convert from using group vertices as endpoints to using
       real vertices as endpoints
@param updatedEdges all edges that we must record as a result of ungrouping the given edge
Ghidra/Features/FunctionGraph/src/main/java/ghidra/app/plugin/core/functiongraph/graph/vertex/GroupedFunctionGraphVertex.java