code: def _ParseRecord(
        self, parser_mediator, record_index, evtx_record, recovered=False):
      
      event_data = self._GetEventData(
          parser_mediator, record_index, evtx_record, recovered=recovered)
  
      try:
        written_time = evtx_record.get_written_time_as_integer()
      except OverflowError as exception:
        parser_mediator.ProduceExtractionWarning((
            'unable to read written time from event record: {0:d} '
            'with error: {1!s}').format(record_index, exception))
  
        written_time = None
  
      if not written_time:
        date_time = dfdatetime_semantic_time.SemanticTime('Not set')
      else:
        date_time = dfdatetime_filetime.Filetime(timestamp=written_time)
  
      event = time_events.DateTimeValuesEvent(
          date_time, definitions.TIME_DESCRIPTION_WRITTEN)
      parser_mediator.ProduceEventWithEventData(event, event_data)
docs: Extract data from a Windows XML EventLog (EVTX) record.
  
      Args:
        parser_mediator (ParserMediator): mediates interactions between parsers
            and other components, such as storage and dfvfs.
        record_index (int): event record index.
        evtx_record (pyevtx.record): event record.
        recovered (Optional[bool]): True if the record was recovered.