protected void decoratePrimaryViewer(GraphViewer<V, E> viewer, VisualGraphLayout<V, E> layout) {

		Renderer<V, E> renderer = viewer.getRenderer();
		BasicEdgeRenderer<V, E> edgeRenderer = layout.getEdgeRenderer();
		renderer.setEdgeRenderer(edgeRenderer);

		RenderContext<V, E> renderContext = viewer.getRenderContext();

		GColor drawColor = new GColor("color.visualgraph.view.primary.edge.draw");
		GColor focusedColor = new GColor("color.visualgraph.view.primary.edge.focused");
		GColor selectedColor = new GColor("color.visualgraph.view.primary.edge.selected");
		GColor hoveredColor = new GColor("color.visualgraph.view.primary.edge.hovered");
		if (edgeRenderer instanceof VisualEdgeRenderer) {
			VisualEdgeRenderer<V, E> visualEdgeRenderer =
				(VisualEdgeRenderer<V, E>) renderer.getEdgeRenderer();
			visualEdgeRenderer.setDrawColorTransformer(e -> drawColor);
			visualEdgeRenderer.setFocusedColorTransformer(e -> focusedColor);
			visualEdgeRenderer.setSelectedColorTransformer(e -> selectedColor);
			visualEdgeRenderer.setHoveredColorTransformer(e -> hoveredColor);

		}
		else {
			Function<? super E, Paint> edgeColorTransformer =
				e -> e.isSelected() ? selectedColor : drawColor;
			renderContext.setEdgeDrawPaintTransformer(edgeColorTransformer);
			renderContext.setArrowDrawPaintTransformer(edgeColorTransformer);
			renderContext.setArrowFillPaintTransformer(edgeColorTransformer);
		}

		VisualVertexRenderer<V, E> vertexRenderer = new VisualVertexRenderer<>();
		renderer.setVertexRenderer(vertexRenderer);
		PickedState<V> pickedVertexState = viewer.getPickedVertexState();
		vertexRenderer.setVertexFillPaintTransformer(
			new PickableVertexPaintTransformer<>(pickedVertexState, Palette.WHITE, Palette.YELLOW));

		// this will paint thicker, but with the shape being used...which can look odd
		//renderContext.setEdgeFillPaintTransformer(null);
		PickedState<E> pickedEdgeState = viewer.getPickedEdgeState();
		renderContext.setEdgeStrokeTransformer(
			new VisualGraphEdgeStrokeTransformer<>(pickedEdgeState, 3));
		pickedEdgeState.addItemListener(new EdgePickingListener());

		// the layout defines the shape of the edge (this gives the layout flexibility in how
		// to render its shape)
		Function<E, Shape> edgeTransformer = layout.getEdgeShapeTransformer();
		renderContext.setEdgeShapeTransformer(edgeTransformer);

		renderContext.setArrowPlacementTolerance(5.0f);

		renderContext.setVertexShapeTransformer(new VisualGraphVertexShapeTransformer<>());
	}
This is called to configure the primary viewer's rendering settings.  Subclasses can
override this method to change, as needed.

@param viewer the new satellite viewer
@param layout the viewer's layout
Ghidra/Framework/Graph/src/main/java/ghidra/graph/viewer/GraphComponent.java