code: def Process(self, parser_mediator, root_item=None, **kwargs):
      
      # This will raise if unhandled keyword arguments are passed.
      super(DocumentSummaryInformationOLECFPlugin, self).Process(
          parser_mediator, **kwargs)
  
      if not root_item:
        raise ValueError('Root item not set.')
  
      root_creation_time, root_modification_time = self._GetTimestamps(root_item)
  
      for item_name in self.REQUIRED_ITEMS:
        item = root_item.get_sub_item_by_name(item_name)
        if not item:
          continue
  
        summary_information = OLECFDocumentSummaryInformation(item)
        event_data = summary_information.GetEventData(
            data_type='olecf:document_summary_info')
        event_data.name = 'Document Summary Information'
  
        if root_creation_time:
          date_time = dfdatetime_filetime.Filetime(
              timestamp=root_creation_time)
          event = OLECFDocumentSummaryInformationEvent(
              date_time, definitions.TIME_DESCRIPTION_CREATION)
          parser_mediator.ProduceEventWithEventData(event, event_data)
  
        if root_modification_time:
          date_time = dfdatetime_filetime.Filetime(
              timestamp=root_modification_time)
          event = OLECFDocumentSummaryInformationEvent(
              date_time, definitions.TIME_DESCRIPTION_MODIFICATION)
          parser_mediator.ProduceEventWithEventData(event, event_data)
docs: Parses a document summary information OLECF item.
  
      Args:
        parser_mediator (ParserMediator): mediates interactions between parsers
            and other components, such as storage and dfvfs.
        root_item (Optional[pyolecf.item]): root item of the OLECF file.
  
      Raises:
        ValueError: If the root item is not set.