@Override
	public boolean hasPrevious() throws IOException {
		if (it == null) {
			return false;
		}
		else if (!it.hasPrevious()) {
			while (keyRangeIndex > 0) {
				KeyRange keyRange = keyRangeList.get(--keyRangeIndex);
				it = table.indexKeyIterator(indexCol, new LongField(keyRange.minKey),
					new LongField(keyRange.maxKey), false);
				if (it.hasNext()) {
					it.next();
				}
				if (it.hasPrevious()) {
					return true;
				}
			}
			return false;
		}
		return true;
	}
Constructs a new AddressIndexPrimaryKeyIterator starting at a given address
@param table the database table containing indexed addresses.
@param indexCol the column that contains indexed addresses.
@param addrMap the address map
@param absolute if true, only absolute memory address encodings are considered, otherwise 
only standard/relocatable address encodings are considered.
@param start the starting address for the iterator.
@param before if true, positions the iterator before start, otherwise positions it after start.
@throws IOException if a database io error occurs.
Ghidra/Framework/SoftwareModeling/src/main/java/ghidra/program/database/map/AddressIndexPrimaryKeyIterator.java