@Override
  public @Nullable Data valueOf(int idx) throws IOException {
    int stripe = idStripe(idx);
    Lock lock = myStripeLocks[stripe];
    lock.lock();
    try {
      Data s = myIdToStringCache[stripe].get(idx);
      if (s != null) return s;
    }
    finally {
      lock.unlock();
    }

    Data s = myBase.valueOf(idx);

    if (s != null) {
      lock.lock();
      try {
        myIdToStringCache[stripe].put(idx, s);
      }
      finally {
        lock.unlock();
      }
    }
    return s;
  }
@Override
  public @Nullable Data valueOf(int idx)