1. Let record be the first in index’s list of records whose key is range, if any.

    2. If record was not found, return undefined.

    3. Let serialized be record’s referenced value.

    4. Return StructuredDeserialize(serialized, targetRealm).

    The steps to retrieve multiple referenced values from an index with targetRealm, index, range and optional count are as follows:

    1. If count is not given or is 0 (zero), let count be infinity.

    2. Let records be a list containing the first count in index’s list of records whose key is range.

      1. Let serialized be record’s referenced value.

      2. Let entry be StructuredDeserialize(serialized, targetRealm).

      3. Append entry to list.

    3. Return list converted to a .

    The values of an in an index are the keys of records in the object store.

    The steps to retrieve a value from an index with index and range are as follows.

    1. Let record be the first record in index’s whose key is in range, if any.

    The steps to retrieve multiple values from an index with index, range and optional count are as follows:

    1. If count is not given or is 0 (zero), let count be infinity.

    2. Let records be a list containing the first count in index’s list of records whose key is range.

    3. Let list be an empty list.

    4. For each record in records:

      1. Let entry be the result of running the steps to convert a key to a value with record’s value.

    5. Return list converted to a .