protected boolean isKeyAtIndex(final Data value, final int idx) throws IOException {
    if (myKeyStorage instanceof InlinedKeyStorage) return false;

    // check if previous serialized state is the same as for value
    // this is much faster than myDataDescriptor.isEqualTo(valueOf(idx), value) for identical objects
    // TODO: key storage lock
    final int addr = indexToAddr(idx);

    if (myKeyStorage.checkBytesAreTheSame(addr, value)) return true;

    if (myDataDescriptor instanceof DifferentSerializableBytesImplyNonEqualityPolicy) return false;
    Data actualValue = valueOf(idx);
    if (actualValue == null) {
      return value == null;
    }
    return myDataDescriptor.isEqual(actualValue, value);
  }
protected boolean isKeyAtIndex(final Data value, final int idx)