code: def GetEstimatedYear(self):
      
      # TODO: improve this method to get a more reliable estimate.
      # Preserve the year-less date and sort this out in the psort phase.
      if self._preferred_year:
        return self._preferred_year
  
      if self._knowledge_base.year:
        return self._knowledge_base.year
  
      # TODO: Find a decent way to actually calculate the correct year
      # instead of relying on stats object.
      year = self._GetEarliestYearFromFileEntry()
      if not year:
        year = self._GetLatestYearFromFileEntry()
  
      if not year:
        year = timelib.GetCurrentYear()
      return year
docs: Retrieves an estimate of the year.
  
      This function determines the year in the following manner:
      * see if the user provided a preferred year;
      * see if knowledge base defines a year e.g. derived from preprocessing;
      * determine the year based on the file entry metadata;
      * default to the current year;
  
      Returns:
        int: estimated year.