private Shape centerShape(Shape s) {
		//
		// Center the vertex by moving it's location up and to the left (without this, the
		// vertex is drawn hanging from it's x,y position).   
		//
		// Note: this is what Jung does for its shapes.  We thought it easier to mimic what
		//       they do rather then have to change all of the edge renderers to compensate.
		// 
		Rectangle bounds = s.getBounds();
		Dimension size = bounds.getSize();
		int halfWidth = -(size.width / 2);
		int halfHeight = -(size.height / 2);

		// subtract any current x/y value to 0-out the new shape
		int x = halfWidth - bounds.x;
		int y = halfHeight - bounds.y;

		AffineTransform xform = AffineTransform.getTranslateInstance(x, y);
		Shape movedShape = xform.createTransformedShape(s);

		return movedShape;
	}
Returns the full (the actual) shape of a vertex.  This can be used to determine if a 
mouse point intersects a vertex or to get the real bounding-box of a vertex.

@param v the vertex
@return the shape
Ghidra/Framework/Graph/src/main/java/ghidra/graph/viewer/vertex/VisualGraphVertexShapeTransformer.java