public static Shape createEgdeLoopInGraphSpace(Shape vertexShape, double x, double y) {

		// NOTE: this cubic bezier path approximates a circle
		GeneralPath path = new GeneralPath();
		float r = EDGE_LOOP_RADIUS;
		float k = BEZIER_CONTROL_POINT;

		path.reset();
		path.moveTo(0, -r);
		path.curveTo(-k, -r, -r, -k, -r, 0);
		path.curveTo(-r, k, -k, r, 0, r);
		path.curveTo(k, r, r, k, r, 0);
		path.curveTo(r, -k, k, -r, 0, -r);

		return createEgdeLoopInGraphSpace(path, vertexShape, x, y);
	}
Creates a loop shape for a vertex that calls itself.  The loop is transformed to graph space,
which includes updating the size and location of the loop to be relative to
the vertex.

@param vertexShape The shape of the vertex for which the edge is being created.
@param x The x coordinate of the vertex
@param y The y coordinate of the vertex
@return a loop shape for a vertex that calls itself.
Ghidra/Framework/Graph/src/main/java/ghidra/graph/viewer/GraphViewerUtils.java