public RecordIterator indexIterator(int columnIndex, Field startValue, Field endValue,
			boolean atStart) throws IOException {
		synchronized (db) {
			IndexTable indexTable = secondaryIndexes.get(columnIndex);
			if (indexTable == null) {
				throw new IOException("Index required (" + getName() + "," + columnIndex + ")");
			}
			return new KeyToRecordIterator(this,
				indexTable.keyIterator(startValue, endValue, atStart));
		}
	}
Iterate over a range of records using a secondary index.  Sorting occurs on the
specified schema column. The iterator is initially positioned before the startValue.
This table must have been constructed with a secondary index on the specified column.
@param columnIndex schema column to sort on.
@param startValue the starting and minimum value of the secondary index field.
@param endValue the ending and maximum value of the secondary index field.
@param atStart if true, position the iterator before the start value. 
Otherwise, position the iterator after the end value.

@return record iterator.
@throws IOException if a secondary index does not exist for the specified
column, or the wrong field type was specified, or an I/O error occurs.
Ghidra/Framework/DB/src/main/java/db/Table.java