private Component buildTablePanel() {
		model = new FunctionStartTableModel(plugin.getTool(), program, toClassify, modelRow, debug);
		tablePanel = new GhidraThreadedTablePanel<>(model, 1000);
		startTable = tablePanel.getTable();
		startTable.setName("Potential Functions in " + model.getProgram().getName());

		startTable.installNavigation(tool);
		startTable.setNavigateOnSelectionEnabled(true);
		startTable.setAutoResizeMode(JTable.AUTO_RESIZE_SUBSEQUENT_COLUMNS);
		startTable.setPreferredScrollableViewportSize(new Dimension(900, 300));
		startTable.setRowSelectionAllowed(true);
		startTable.getSelectionModel().addListSelectionListener(e -> tool.contextChanged(this));

		model.addTableModelListener(e -> {
			int rowCount = model.getRowCount();
			int unfilteredCount = model.getUnfilteredRowCount();

			StringBuilder buffy = new StringBuilder();

			buffy.append(" ").append(rowCount).append(" items");
			if (rowCount != unfilteredCount) {
				buffy.append(" (of ").append(unfilteredCount).append(" )");
			}

			setSubTitle(subTitle + buffy.toString());
		});

		JPanel container = new JPanel(new BorderLayout());
		container.add(tablePanel, BorderLayout.CENTER);
		var tableFilterPanel = new GhidraTableFilterPanel<>(startTable, model);
		container.add(tableFilterPanel, BorderLayout.SOUTH);

		return container;
	}
Returns the table model of this provider.
@return table model
Ghidra/Extensions/MachineLearning/src/main/java/ghidra/machinelearning/functionfinding/FunctionStartTableProvider.java