@Override
		public boolean hasPrevious() throws IOException {
			if (hasPrev) {
				return true;
			}
			hasNext = false;  // TODO ???
			indexKey = (IndexField) indexIterator.previous();
			int skipCnt = 0;
			while (indexKey != null && indexKey.hasSameIndexValue(lastKey)) {
				if (++skipCnt > 10) {
					// Reinit iterator to skip large number of same index value
					indexIterator =
						indexTable.fieldKeyIterator(min, max, indexKeyType.newIndexField(
							indexKey.getIndexedField(), getPrimaryTableKeyType().getMinValue()));
					skipCnt = 0;
				}
				indexKey = (IndexField) indexIterator.previous();
			}

			if (indexKey == null) {
				return false;
			}

			hasPrev = true;
			return true;
		}
Construct an index field iterator.  The iterator is positioned at index
value identified by startValue.
@param minValue minimum index value or null if no minimum
@param maxValue maximum index value or null if no maximum
@param startValue initial index value position
@param before if true initial position is before minValue, else position
after maxValue
@throws IOException an IO error occurred
Ghidra/Framework/DB/src/main/java/db/FieldIndexTable.java