public synchronized ReadersAndUpdates get(SegmentCommitInfo info, boolean create) {

      // Make sure no new readers can be opened if another thread just closed us:
      ensureOpen(false);

      assert info.info.dir == directoryOrig: "info.dir=" + info.info.dir + " vs " + directoryOrig;

      ReadersAndUpdates rld = readerMap.get(info);
      if (rld == null) {
        if (!create) {
          return null;
        }
        rld = new ReadersAndUpdates(IndexWriter.this, info);
        // Steal initial reference:
        readerMap.put(info, rld);
      } else {
        assert rld.info == info: "rld.info=" + rld.info + " info=" + info + " isLive?=" + infoIsLive(rld.info) + " vs " + infoIsLive(info);
      }

      if (create) {
        // Return ref to caller:
        rld.incRef();
      }

      assert noDups();

      return rld;
    }