code: func (ms *FileMsgStore) readMsgIndex(slice *fileSlice, seq uint64) (*msgIndex, error) {
  	// Compute the offset in the index file itself.
  	idxFileOffset := 4 + (int64(seq-slice.firstSeq)+int64(slice.rmCount))*msgIndexRecSize
  	// Then position the file pointer of the index file.
  	if _, err := slice.idxFile.handle.Seek(idxFileOffset, io.SeekStart); err != nil {
  		return nil, err
  	}
  	// Read the index record and ensure we have what we expect
  	seqInIndexFile, msgIndex, err := ms.readIndex(slice.idxFile.handle)
  	if err != nil {
  		return nil, err
  	}
  	if seqInIndexFile != seq {
  		return nil, fmt.Errorf("wrong sequence, wanted %v got %v", seq, seqInIndexFile)
  	}
  	return msgIndex, nil
  }
docs: // readMsgIndex reads a message index record from disk and returns a msgIndex
  // object. Same than getMsgIndex but without checking for message in
  // ms.bufferedMsgs first.