public SubIndexerVersion valueOf(int idx) throws IOException {
    if (myValueOfCache == null) {
      synchronized (this) {
        if (myValueOfCache == null) {
          myValueOfCache = new IntObjectLRUMap<>(256);
        }
      }
    }
    synchronized (this) {
      var cached = myValueOfCache.getEntry(idx);
      if (cached != null) return cached.value.get();
    }
    Ref<SubIndexerVersion> ref = new Ref<>();
    myMap.processKeysWithExistingMapping(version -> {
      Integer versionIdx;
      try {
        versionIdx = myMap.get(version);
      }
      catch (IOException e) {
        throw new UncheckedIOException(e);
      }
      if (Comparing.equal(idx, versionIdx)) {
        ref.set(version);
        return false;
      }
      return true;
    });
    synchronized (this) {
      myValueOfCache.putEntry(new IntObjectLRUMap.MapEntry<>(idx, ref));
    }
    return ref.get();
  }
public SubIndexerVersion valueOf(int idx)