@Override
	public boolean isSortable(int columnIndex) {
		return true;
	}
An abstract table model for showing DynamicTableColumns where each row is based on an object of
type ROW_TYPE. The client is responsible for implementing {@link #createTableColumnDescriptor()}.
This method specifies which default columns the table should have and whether they should be
visible or hidden. Hidden columns can be made visible through the UI.
<p>
This model will also discover other system columns that understand how to render
<code>ROW_TYPE</code> data directly. Also, if you create a {@link TableRowMapper mapper}(s) for
your row type, then this model will load columns for each type for which a mapper was created,
all as optional, hidden columns.
<p>
The various attributes of the columns of this model (visibility, position, size, etc) are saved
to disk as tool preferences when the user exits the tool.
<p>
Implementation Note: this model loads all columns, specific and discovered, as being visible.
Then, during initialization, the {@link TableColumnModelState} class will either hide all
non-default columns, or reload the column state if any previous saved state is found.

@param <ROW_TYPE> the row object class for this table model.
@param <DATA_SOURCE> the type of data that will be returned from {@link #getDataSource()}. This
           object will be given to the {@link DynamicTableColumn} objects used by this table
           model when
           {@link DynamicTableColumn#getValue(Object, ghidra.docking.settings.Settings, Object, ServiceProvider)}
           is called.
Ghidra/Framework/Docking/src/main/java/docking/widgets/table/GDynamicColumnTableModel.java