private Rectangle getBounds(List<FcgVertex> vertices) {
		RenderContext<FcgVertex, FcgEdge> renderContext = viewer.getRenderContext();
		Function<? super FcgVertex, Shape> shaper = renderContext.getVertexShapeTransformer();

		Layout<FcgVertex, FcgEdge> layout = viewer.getGraphLayout();

		Rectangle area = null;
		for (FcgVertex v : vertices) {
			Rectangle bounds = shaper.apply(v).getBounds();
			Point2D loc = layout.apply(v);
			int x = (int) loc.getX();
			int y = (int) loc.getY();
			// do we need to compensate for vertex centering (like is done in the default layout)?		
			//	x -= (bounds.width / 2);
			//	y -= (bounds.height / 2);
			bounds.setLocation(x, y);
			if (area == null) {
				area = bounds; // initialize
			}
			area.add(bounds);
		}

		return area;
	}
Constructor

@param viewer the graph viewer
@param newVertexCollection the collection of new vertices and edges being addeds
@param useAnimation true to use animation
Ghidra/Features/GraphFunctionCalls/src/main/java/functioncalls/graph/job/BowTieExpandVerticesJob.java