private void doAddTableColumn(DynamicTableColumn<ROW_TYPE, ?, ?> column, int index,
			boolean isDefault) {

		if (index < 0 || index > tableColumns.size()) {
			index = getDefaultTableColumns().size();
		}

		tableColumns.add(index, column);
		columnSettings.put(column, new SettingsImpl(this, column));
		if (isDefault) {
			List<DynamicTableColumn<ROW_TYPE, ?, ?>> defaultColumns = getDefaultTableColumns();
			defaultColumns.add(index, column);
		}
	}
Adds the given field at the given index to the list of fields in this class. This method is
intended for implementations to add custom column objects, rather than relying on generic,
discovered DynamicTableColumn implementations.
<p>
<b>Note: this method assumes that the columns have already been sorted.</b>

@param column The field to add.
@param index The index at which to add the field. If the index value is invalid (negative or
           greater than the number of columns), then the column will be added to the end of
           the columns list.
@param isDefault true if this is a default column
Ghidra/Framework/Docking/src/main/java/docking/widgets/table/GDynamicColumnTableModel.java