@Override
			@SuppressWarnings("unchecked")
			// it's our model, it must be our type
			public void valueChanged(ListSelectionEvent e) {
				if (e.getValueIsAdjusting()) {
					return;
				}

				// we get out the model here in case it has been wrapped by one of the filters
				RowObjectTableModel<VTMatch> model =
					(RowObjectTableModel<VTMatch>) table.getModel();
				int selectedRow = table.getSelectedRow();
				VTMatch match =
					(table.getSelectedRowCount() == 1) ? model.getRowObject(selectedRow) : null;
				if (!SystemUtilities.isEqual(latestMatch, match) && match != null) {
					latestMatch = match;
					subToolManager.setMatch(match);
				}
				notifyContextChanged();
			}
The docking window that provides a table of the other tool's function matches
for the function containing the current cursor location in this tool's
listing.
Ghidra/Features/VersionTracking/src/main/java/ghidra/feature/vt/gui/provider/onetomany/VTMatchOneToManyTableProvider.java