protected void paintScaledVertex(RenderContext<V, E> rc, V vertex, GraphicsDecorator g,
			Shape shape) {

		Function<? super V, Paint> fillXform = getVertexFillPaintTransformer();
		if (fillXform == null) {
			fillXform = rc.getVertexFillPaintTransformer();
		}

		Paint fillPaint = fillXform.apply(vertex);
		if (fillPaint == null) {
			return;
		}

		Paint oldPaint = g.getPaint();
		g.setPaint(fillPaint);
		g.fill(shape);

		// an outline
		g.setColor(Colors.BORDER);
		g.draw(shape);

		g.setPaint(oldPaint);
	}
A renderer for the {@link VisualGraph} system.

<p>Rendering in the graph system is a bit different than other Java rendering systems.  For
example, when a JTable renders itself, it uses a single renderer to stamp the data.  The 
table's renderer has no state and is updated for each cell's data that is to be rendered.
The graph renderer system is different due to the possibility of complex vertex UIs.  Some
vertices have sophisticated UI elements that have state.  For these vertices, it makes sense
for the vertex to build and maintain that state; having that state repeatedly built by the
renderer would be extremely inefficient and difficult to implement.  Considering that we 
expect the vertex to build and maintain its UI, this renderer is really just a tool to:
<ol>
 <li>Determine if the vertex needs to be painted (by clipping or filtering)
 </li>
 <li>Setup the geometry for the vertex (convert the model's location to the view location,
     accounting for panning and zooming)
 </li>
 <li>Paint any added effects (such as drop-shadows or highlighting)
 </li>
</ol>

@param <V> the vertex type
@param <E> the edge type
Ghidra/Framework/Graph/src/main/java/ghidra/graph/viewer/vertex/VisualVertexRenderer.java