@Override
		public void run(final TaskMonitor monitor) {
			Program program = currentProgram;
			int transactionID = program.startTransaction("Make Address Table");
			boolean commit = false;
			try {
				collisionCount = makeTables(addresses, monitor);
				commit = true;
			}
			catch (Exception e) {
				if (!(e instanceof DomainObjectException)) {
					Msg.showError(this, null, null, null, e);
				}
			}
			finally {
				program.endTransaction(transactionID, commit);
			}

			SystemUtilities.runSwingLater(() -> {

				AddressTableDialog tempDialog = addressTableDialog;
				if (tempDialog == null) {
					return; // closed/disposed
				}

				tempDialog.makeTablesCompleted();
				if (collisionCount > 0) {
					Msg.showWarn(getClass(), tempDialog.getComponent(),
						"Collisions while Making Tables", collisionMessage);
				}

				refreshModel();
			});
		}
@see ghidra.app.plugin.ProgramPlugin#selectionChanged(ProgramSelection)
Ghidra/Features/Base/src/main/java/ghidra/app/plugin/core/disassembler/AutoTableDisassemblerPlugin.java