If a class is not directly mapped, this implementation will try to find a value with the key's
interfaces instead. if a value is found, the key's class is mapped directly for quicker access in
the future.
The skip option should only be used with small values, as skipping a large range of documents this way is inefficient (it scans the index from the startkey and then skips N elements, but still needs to read all the index values to do that).