@Override
	protected InstructionTableDataObject[][] createDataObjects() {
		if (dialog.getSearchData().getInstructions() == null) {
			return null;
		}

		InstructionTableDataObject[][] dataObjects =
			new InstructionTableDataObject[dialog.getSearchData()
					.getInstructions()
					.size()][numColumns];

		// Loop over all instructions, adding pertinent info to each data object. This could be a long-running
		// operation so put in a task that can be cancelled.
		Task bTask = new Task("Creating Table Data", true, true, true) {

			@Override
			public void run(TaskMonitor monitor) {
				int numInstructions = dialog.getSearchData().getInstructions().size();
				monitor.setMaximum(numInstructions);
				for (int i = 0; i < numInstructions; i++) {
					if (monitor.isCancelled()) {
						return;
					}
					monitor.incrementProgress(1);
					processInstruction(dataObjects, i);
				}
			}
		};

		new TaskLauncher(bTask, this);

		return dataObjects;
	}
Creates and populates {@link InstructionTableDataObject} instances, one
for every mnemonic/operand in the instruction set. These will define the
contents of the table.
Ghidra/Features/Base/src/main/java/ghidra/app/plugin/core/instructionsearch/ui/InstructionTable.java