docs: def Parse(self):
      """Parse the file."""
      if not self._file:
        logging.error("Couldn't open file")
        return
  
      # Limit read size to 5MB.
      self.input_dat = self._file.read(1024 * 1024 * 5)
      if not self.input_dat.startswith(self.FILE_HEADER):
        logging.error("Invalid index.dat file %s", self._file)
        return
  
      # Events aren't time ordered in the history file, so we collect them all
      # then sort.
      events = []
      for event in self._DoParse():
        events.append(event)
  
      for event in sorted(events, key=operator.itemgetter("mtime")):
        yield event