<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def Process(self, parser_mediator, root_item=None, **kwargs):
 """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. """

    # 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)