@SuppressWarnings("unused") // used during debug
	private void labelArticulations(Component component, GraphicsDecorator g,
			RenderContext<V, E> rc, E e) {

		int offset = 5;
		int counter = 1;
		List<Point2D> points = e.getArticulationPoints();
		for (Point2D p : points) {

			MultiLayerTransformer multiLayerTransformer = rc.getMultiLayerTransformer();
			p = multiLayerTransformer.transform(Layer.LAYOUT, p);

			EdgeLabelRenderer labelRenderer = rc.getEdgeLabelRenderer();
			Font font = rc.getEdgeFontTransformer().apply(e);
			boolean isSelected = rc.getPickedEdgeState().isPicked(e);
			component = labelRenderer.getEdgeLabelRendererComponent(rc.getScreenDevice(),
				"p" + counter++, font, isSelected, e);

			Dimension d = component.getPreferredSize();
			AffineTransform old = g.getTransform();
			AffineTransform xform = new AffineTransform(old);
			xform.translate(p.getX() + offset, p.getY());
			g.setTransform(xform);
			g.draw(component, rc.getRendererPane(), 0, 0, d.width, d.height, true);
			g.setTransform(old);
		}
	}
An edge label renderer used with the {@link DecompilerNestedLayout}

@param <V> the vertex type
@param <E> the edge type
Ghidra/Features/FunctionGraphDecompilerExtension/src/main/java/ghidra/app/plugin/core/functiongraph/graph/layout/DNLEdgeLabelRenderer.java