docs: private <R> R doWithReadLock(Action<K, V, R> action) {
          long stamp = sl.tryOptimisticRead();
          R result = action.doWith(commonCache);
  
          if (!sl.validate(stamp)) {
              stamp = sl.readLock();
              try {
                  result = action.doWith(commonCache);
              } finally {
                  sl.unlockRead(stamp);
              }
          }
  
          return result;
      }