@Override
  public CloseableIterator<IndexStoreEntry> descendingIterator(Object start, boolean startInclusive,
      Object end, boolean endInclusive, Collection keysToRemove) {
    if (start == null) {
      return new MemoryIndexStoreIterator(
          valueToEntriesMap.headMap(end, endInclusive).descendingMap(), null, keysToRemove);
    }
    return new MemoryIndexStoreIterator(
        valueToEntriesMap.subMap(start, startInclusive, end, endInclusive).descendingMap(),
        null, keysToRemove);
  }
Find the old key by traversing the forward map in case of in-place update modification If not
found it means the value object was modified with same value. So oldKey is same as newKey.
geode-core/src/main/java/org/apache/geode/cache/query/internal/index/MemoryIndexStore.java