private Point2D maybeGetGroupDestinationPoint(Map<FGVertex, Point2D> locations) {
		Set<FGVertex> toBeRemoved = getVerticesToBeRemoved();
		if (!toBeRemoved.contains(groupVertex)) {
			return null; // we are not removing the group vertex (must be a grouping operation)
		}

		// We want the group vertex to fade away into another vertex.  We also want to be 
		// consistent, so just merge to the root vertex of the group vertex.
		Address vertexAddress = groupVertex.getVertexAddress();
		Set<FGVertex> vertices = groupVertex.getVertices();
		for (FGVertex vertex : vertices) {
			if (vertex.containsAddress(vertexAddress)) {
				// just graph any vertex--we just need somewhere for the group to merge to
				Set<FGVertex> centerOverVertices = getNewVertices();
				return locations.get(centerOverVertices.iterator().next());
			}
		}

		throw new AssertException(
			"How did we not have a grouped vertex with the same address as the group vertex?");
	}
Constructor

@param controller the controller of the graph to be ungrouped
@param groupVertex The group vertex to be ungrouped
@param newVertices the vertices that will remain after the grouping/ungrouping process has
                   completed
@param verticesToRemove the vertices that will be removed from the graph after the 
                        grouping/ungrouping process has completed
@param relayoutOverride a boolean that when true signals to perform a layout <b>
		  	  			   regardless of the user's relayout options</b>.  This is required to
                        perform a manual relayout.
@param useAnimation whether to use animation
Ghidra/Features/FunctionGraph/src/main/java/ghidra/app/plugin/core/functiongraph/util/job/AbstractGroupingFunctionGraphJob.java