public FGVertex updateEdgeVertexForUngrouping(FunctionGraph functionGraph,
			GroupedFunctionGraphVertex groupedVertex, FGVertex originalVertex) {

		Graph<FGVertex, FGEdge> graph = functionGraph;
		if (graph.containsVertex(originalVertex)) {
			return originalVertex;
		}

		//
		// Look through the vertices to find the vertex that contains the given address.  We may
		// have multiple vertices that contain the address, as is the case when we are
		// transitioning from a group vertex that contains a group vertex that contains the
		// given address.
		//
		Address address = originalVertex.getVertexAddress();
		Collection<FGVertex> vertices = graph.getVertices();
		for (FGVertex vertex : vertices) {
			if (vertex.containsAddress(address) && !vertex.equals(groupedVertex)) {
				return vertex;
			}
		}

		// should never happen
		throw new AssertException("Cannot find any vertex for address: " + address);
	}
Performs a relayout of the graph currently used by the given controller.
@param controller The controller whose graph should have relayout called
Ghidra/Features/FunctionGraph/src/main/java/ghidra/graph/viewer/FGViewUpdater.java