public void ungroupAllVertices(final FGController controller) {

		FGData functionGraphData = controller.getFunctionGraphData();
		FunctionGraph functionGraph = functionGraphData.getFunctionGraph();
		Graph<FGVertex, FGEdge> graph = functionGraph;
		Collection<FGVertex> vertices = graph.getVertices();

		Set<GroupedFunctionGraphVertex> groupVertices = new HashSet<>();
		for (FGVertex vertex : vertices) {
			if (vertex instanceof GroupedFunctionGraphVertex) {
				groupVertices.add((GroupedFunctionGraphVertex) vertex);
			}
		}

		if (groupVertices.size() == 0) {
			return; // nothing left to ungroup
		}

		ungroupVertex(controller, groupVertices.iterator().next(), true);

		// this follow-up job will call this method again until all groups are gone
		scheduleViewChangeJob(new UngroupAllVertexFunctionGraphJob(controller));
	}
Ungroups all {@link GroupedFunctionGraphVertex group vertices} found in the graph.  This
method is recursive in that it will keep running until no group vertices remain.

@param controller The controller in use with the current function graph
Ghidra/Features/FunctionGraph/src/main/java/ghidra/graph/viewer/FGViewUpdater.java