@Override
	public boolean isDefaultColumn(int modelIndex) {
		if (modelIndex < 0 || modelIndex >= tableColumns.size()) {
			return false;
		}

		DynamicTableColumn<?, ?, ?> column = tableColumns.get(modelIndex);

		// check the 'defaultColumns' first, as they may have been updated after initialization
		List<DynamicTableColumn<ROW_TYPE, ?, ?>> defaultColumns = getDefaultTableColumns();
		if (defaultColumns.contains(column)) {
			return true;
		}

		// now check the default values of the descriptor
		TableColumnDescriptor<ROW_TYPE> descriptor = getTableColumnDescriptor();
		List<DynamicTableColumn<ROW_TYPE, ?, ?>> modelSpecifiedColumns = descriptor.getAllColumns();
		return modelSpecifiedColumns.contains(column);
	}
Returns true if the column indicated by the index in the model is a default column (meaning
that it was specified by the model and not discovered).

@param modelIndex the index of the column in the model.
@return true if the column is a default.
Ghidra/Framework/Docking/src/main/java/docking/widgets/table/GDynamicColumnTableModel.java