private void buildUpdater() {
		viewUpdater = createViewUpdater();
		PathHighlightListener listener = hoverChange -> {
			if (hoverChange) {
				viewUpdater.animateEdgeHover();
			}
			else {
				repaint();
			}
		};
		pathHighlighter = createPathHighlighter(listener);

		//
		// The path highlighter is subordinate to the view updater in that the path highlighter
		// should not be running while the view updater is running jobs that can mutate the
		// graph.  To facilitate this, we are using these callbacks below.  We can create a more
		// uniformed interface if needed, but this setup is very simple and easy to follow.
		//
		// signal to the path updater to stop work while jobs may be mutating the graph
		viewUpdater.addJobScheduledListener(() -> pathHighlighter.stop());
		pathHighlighter.setWorkPauser(() -> viewUpdater.isMutatingGraph());
	}
The base viewer for the Graph module.   This viewer provides methods for manipulating
the graph using the mouse.

<P>The viewer is currently an extension of the {@link VisualizationViewer} and as such it 
is accessed by much of the event handling subsystem, such as the mouse plugins, as well as 
the rendering system.

<P>Also, tooltips/popups for edges and vertices are handled by this class.

<P>This class creates a {@link VisualGraphViewUpdater} that perform graph transformations, 
such as panning the graph, with and without animation, as requested.

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