code: def _ProcessDirectory(self, mediator, file_entry):
      
      self.processing_status = definitions.STATUS_INDICATOR_COLLECTING
  
      if self._processing_profiler:
        self._processing_profiler.StartTiming('collecting')
  
      for sub_file_entry in file_entry.sub_file_entries:
        if self._abort:
          break
  
        try:
          if not sub_file_entry.IsAllocated():
            continue
  
        except dfvfs_errors.BackEndError as exception:
          warning_message = (
              'unable to process directory entry: {0:s} with error: '
              '{1!s}').format(sub_file_entry.name, exception)
          mediator.ProduceExtractionWarning(
              warning_message, path_spec=file_entry.path_spec)
          continue
  
        # For TSK-based file entries only, ignore the virtual /$OrphanFiles
        # directory.
        if sub_file_entry.type_indicator == dfvfs_definitions.TYPE_INDICATOR_TSK:
          if file_entry.IsRoot() and sub_file_entry.name == '$OrphanFiles':
            continue
  
        event_source = event_sources.FileEntryEventSource(
            path_spec=sub_file_entry.path_spec)
  
        # TODO: move this into a dfVFS file entry property.
        stat_object = sub_file_entry.GetStat()
        if stat_object:
          event_source.file_entry_type = stat_object.type
  
        mediator.ProduceEventSource(event_source)
  
        self.last_activity_timestamp = time.time()
  
      if self._processing_profiler:
        self._processing_profiler.StopTiming('collecting')
  
      self.processing_status = definitions.STATUS_INDICATOR_RUNNING
docs: Processes a directory file entry.
  
      Args:
        mediator (ParserMediator): mediates the interactions between
            parsers and other components, such as storage and abort signals.
        file_entry (dfvfs.FileEntry): file entry of the directory.