private void buildMainPanel(FunctionBitPatternsExplorerPlugin plugin, Program program,
			PatternEvaluationStats stats) {
		mainPanel = new JPanel();
		BoxLayout topLayout = new BoxLayout(mainPanel, BoxLayout.Y_AXIS);
		mainPanel.setLayout(topLayout);
		JPanel patternPanel = new JPanel(new BorderLayout());
		PatternEvalTabelModel patternEvalModel =
			new PatternEvalTabelModel(plugin, program, stats.getRowObjects());
		GhidraThreadedTablePanel<PatternEvalRowObject> threadedPanel =
			new GhidraThreadedTablePanel<>(patternEvalModel, 1000);
		GhidraTable table = threadedPanel.getTable();

		table.installNavigation(tool);
		table.setRowSelectionAllowed(true);
		table.setSelectionMode(ListSelectionModel.MULTIPLE_INTERVAL_SELECTION);
		table.setAutoResizeMode(JTable.AUTO_RESIZE_SUBSEQUENT_COLUMNS);
		table.setPreferredScrollableViewportSize(new Dimension(1200, 700));
		GhidraTableFilterPanel<PatternEvalRowObject> tableFilterPanel =
			new GhidraTableFilterPanel<>(table, patternEvalModel);
		patternPanel.add(threadedPanel, BorderLayout.CENTER);
		patternPanel.add(tableFilterPanel, BorderLayout.SOUTH);

		JPanel evalPanel = buildInfoPanel(stats);
		patternPanel.add(evalPanel, BorderLayout.NORTH);
		mainPanel.add(patternPanel);

		JPanel buttonPanel = new JPanel(new FlowLayout());

		JButton highlightButton = new JButton("Highlight Selected");
		highlightButton.addActionListener(e -> {
			AddressSet toHighlight = new AddressSet();
			for (PatternEvalRowObject row : tableFilterPanel.getSelectedItems()) {
				toHighlight.add(row.getMatchedSet());
			}
			plugin.highlightMatches(toHighlight);
		});

		JButton clearButton = new JButton("Clear Highlights");
		clearButton.addActionListener(e -> plugin.highlightMatches(new AddressSet()));

		JButton dismissButton = new JButton("Dismiss");
		dismissButton.addActionListener(e -> closeComponent());

		buttonPanel.add(highlightButton);
		buttonPanel.add(clearButton);
		buttonPanel.add(dismissButton);

		mainPanel.add(buttonPanel);
	}
Creates a provider for a Pattern Evaluation table
@param currentStats {@link PatternEvaluationStats} object to display in the table
@param parent parent {@link Component} of this provider
@param plugin plugin associated with this table
@param program program being analyzed
Ghidra/Features/BytePatterns/src/main/java/ghidra/bitpatterns/gui/PatternEvalTableProvider.java