@Override
	public JComponent getComponent() {
		if (panel != null) {
			return panel;
		}
		panel = new JPanel(new BorderLayout());
		panel.setPreferredSize(new Dimension(600, 200));

		instrPanel =
			new InstructionPanel(0, 5, 0, 5, goHomeAction, plugin, new InstructionPanelListener() {
				@Override
				public boolean dropSupported() {
					return true;
				}

				@Override
				public void operandSelected(int opIndex, int subIndex) {
					if (!selectionBusy) {
						selectionBusy = true;
						refsTable.getSelectionModel().clearSelection();
						updateLocation();
						adjustActionState();
						selectionBusy = false;
					}
					getComponent().repaint();
				}

				@Override
				public void selectionDropped(AddressSetView set, CodeUnit cu, int opIndex) {
					plugin.addMemoryReferences(panel, set, cu, opIndex, false);
				}
			});

		panel.add(instrPanel, BorderLayout.NORTH);

		refsTable = new GhidraTable(tableModel);
		refsTable.setName("RefsTable");
		//table.getInputMap().remove(KeyStroke.getKeyStroke(KeyEvent.VK_ESCAPE, 0));
		JScrollPane sp = new JScrollPane(refsTable);
		refsTable.setPreferredScrollableViewportSize(new Dimension(200, 400));
		refsTable.setSelectionMode(ListSelectionModel.MULTIPLE_INTERVAL_SELECTION);
		refsTable.getSelectionModel().addListSelectionListener(e -> {
			if (!selectionBusy && !e.getValueIsAdjusting()) {
				selectionBusy = true;
				int[] selRows = refsTable.getSelectedRows();
				if (selRows.length == 1) {
					// Only one ref selected
					int opIndex = tableModel.getReference(selRows[0]).getOperandIndex();
					instrPanel.setSelectedOpIndex(opIndex, -1);
					followSelectedReference();
				}
//					else {
//						int opIndex = MNEONIC_OPINDEX;
//						if (selRows.length != 0) {
//							opIndex = tableModel.getReference(selRows[0]).getOperandIndex();
//						}
//						instrPanel.setSelectedOpIndex(opIndex);
//					}
				selectionBusy = false;
				updateLocation();
				adjustActionState();
			}
		});
		refsTable.addMouseListener(new MouseAdapter() {
			@Override
			public void mouseClicked(MouseEvent e) {
				if (refsTable.rowAtPoint(e.getPoint()) != -1) {
					if (e.getClickCount() == 1) {
						followSelectedReference();
					}
					else if (e.getClickCount() == 2) {
						editCallback();
					}
				}
			}
		});

		TableColumn col = refsTable.getColumnModel().getColumn(EditReferencesModel.IS_PRIMARY_COL);
		col.setMinWidth(75);
		col.setMaxWidth(75);
		col.setResizable(false);
		col = refsTable.getColumnModel().getColumn(EditReferencesModel.REF_SOURCE_COL);
		col.setMinWidth(80);
		col.setMaxWidth(80);
		col.setResizable(false);

		ToolTipManager.sharedInstance().registerComponent(refsTable);

		dropTargetAdapter = new DropTgtAdapter(dropHandler, DnDConstants.ACTION_COPY_OR_MOVE,
			ACCEPTABLE_DROP_FLAVORS);
		tableDropTarget =
			new DropTarget(refsTable, DnDConstants.ACTION_COPY_OR_MOVE, dropTargetAdapter, true);
		scrollPaneDropTarget =
			new DropTarget(sp, DnDConstants.ACTION_COPY_OR_MOVE, dropTargetAdapter, true);
		tableDropTarget.setActive(false);
		scrollPaneDropTarget.setActive(false);

		//JTableHeader header = table.getTableHeader();
		TableColumnModel columnModel = refsTable.getColumnModel();
		RefCellTextRenderer textCellRenderer = new RefCellTextRenderer();
		RefCellBooleanRenderer booleanCellRenderer = new RefCellBooleanRenderer();
		RefCellBooleanEditor booleanCellEditor = new RefCellBooleanEditor();

		// Establish cell renderers
		for (int i = 0; i < columnModel.getColumnCount(); i++) {
			TableColumn column = columnModel.getColumn(i);
			if (i == EditReferencesModel.IS_PRIMARY_COL) {
				column.setCellRenderer(booleanCellRenderer);
				column.setCellEditor(booleanCellEditor);
			}
			else if (i == EditReferencesModel.REF_TYPE_COL) {
				column.setCellRenderer(textCellRenderer);
				column.setCellEditor(new RefTypeCellEditor());
			}
			else {
				column.setCellRenderer(textCellRenderer);
			}
		}

		adjustTableColumns();

		panel.add(sp, BorderLayout.CENTER);

		int opIndex = MNEMONIC_OPINDEX;
		int subIndex = -1;
		if (currentLocation instanceof OperandFieldLocation) {
			opIndex = ((OperandFieldLocation) currentLocation).getOperandIndex();
			subIndex = ((OperandFieldLocation) currentLocation).getSubOperandIndex();
		}
		init(opIndex, subIndex);

		return panel;
	}
Find the Data at the currentCuAddress

@param data place to begin searching
@return Data starting at currentCuAddress
Ghidra/Features/Base/src/main/java/ghidra/app/plugin/core/references/EditReferencesProvider.java