public synchronized long getNextPropertyIndex(long index) throws NoSuchIndexException {
		long pageID = getPageID(index);
		short offset = getPageOffset(index);
		ValueStoragePage<T> page = getPage(pageID);

		if (page != null) {
			short nextOffset = page.getNext(offset);

			if (nextOffset >= 0) {
				return getIndex(pageID, nextOffset);
			}
		}

		pageID = propertyPageIndex.getNext(pageID);

		if (pageID >= 0) {
			page = getPage(pageID);
			if (page != null) {
				short nextOffset = page.getFirst();
				if (nextOffset < 0) {
					throw new AssertException(
						"Page (" + pageID +
							") exists but there is no 'first' offset");
				}
				return getIndex(pageID, nextOffset);
			}
		}
		throw NoSuchIndexException.noSuchIndexException;
	}
Get the next index where the property value exists.
@param index the address from which to begin the search (exclusive).
@throws NoSuchIndexException thrown if there is no address with
  a property value after the given address.
Ghidra/Framework/Generic/src/main/java/ghidra/util/map/ValueMap.java