code: def ExamineEvent(self, mediator, event):
      
      # This event requires an URL attribute.
      url = getattr(event, 'url', None)
      if not url:
        return
  
      # TODO: refactor this the source should be used in formatting only.
      # Check if we are dealing with a web history event.
      source, _ = formatters_manager.FormattersManager.GetSourceStrings(event)
  
      if source != 'WEBHIST':
        return
  
      for engine, url_expression, method_name in self._URL_FILTERS:
        callback_method = getattr(self, method_name, None)
        if not callback_method:
          logger.warning('Missing method: {0:s}'.format(callback_method))
          continue
  
        match = url_expression.search(url)
        if not match:
          continue
  
        search_query = callback_method(url)
        if not search_query:
          logger.warning('Missing search query for URL: {0:s}'.format(url))
          continue
  
        search_query = self._DecodeURL(search_query)
        if not search_query:
          continue
  
        event_tag = self._CreateEventTag(
            event, self._EVENT_TAG_COMMENT, self._EVENT_TAG_LABELS)
        mediator.ProduceEventTag(event_tag)
  
        self._counter['{0:s}:{1:s}'.format(engine, search_query)] += 1
  
        # Add the timeline format for each search term.
        timestamp = getattr(event, 'timestamp', 0)
        source = getattr(event, 'parser', 'N/A')
        source = getattr(event, 'plugin', source)
        self._search_term_timeline.append(
            SEARCH_OBJECT(timestamp, source, engine, search_query))
docs: Analyzes an event.
  
      Args:
        mediator (AnalysisMediator): mediates interactions between
            analysis plugins and other components, such as storage and dfvfs.
        event (EventObject): event to examine.