private Data findValueFor(@Range(from = 1, to = Integer.MAX_VALUE) int idx) throws IOException {
    boolean shouldLock = shouldLockOnValueOf();
    if (shouldLock) {
      lockStorageRead();
    }
    try {
      int addr = indexToAddr(idx);
      return myKeyStorage.read(addr, shouldLock);
    }
    finally {
      if (shouldLock) {
        unlockStorageRead();
      }
    }
  }
private Data findValueFor(@Range(from = 1, to = Integer.MAX_VALUE) int idx)