IndexValue findKey(StoreKey key) throws StoreException {
    return findKey(key, null, EnumSet.of(IndexEntryType.PUT, IndexEntryType.DELETE, IndexEntryType.UNDELETE));
  }
Finds {@link IndexValue} that represents the latest state of the given {@code key} in the index and return it. If
not found, returns null.
<br>
This method returns the final state of the given {@code key}. The final state of a key can be a Put value, a Delete
value and a Undelete value. Ttl_update isn't considered as final state as it just update the expiration date.
{@link IndexValue} returned by this method would carry expiration date from Ttl_update if there is one.
@param key  The key to find in the index
@return The blob index value associated with the key. Null if the key is not found.
@throws StoreException
ambry-store/src/main/java/com/github/ambry/store/PersistentIndex.java