docs: def load(cls, file_pattern, nb_previous_files=1, parser=None):
          """
          Load a collection of timesheet from the given `file_pattern`. `file_pattern` is a path to a timesheet file that
          will be expanded with :func:`datetime.date.strftime` and the current date. `nb_previous_files` is the number of
          other timesheets to load, depending on `file_pattern` this will result in either the timesheet from the
          previous month or from the previous year to be loaded. If `parser` is not set, a default
          :class:`taxi.timesheet.parser.TimesheetParser` will be used.
          """
          if not parser:
              parser = TimesheetParser()
  
          timesheet_files = cls.get_files(file_pattern, nb_previous_files)
          timesheet_collection = cls()
  
          for file_path in timesheet_files:
              try:
                  timesheet = Timesheet.load(
                      file_path, parser=parser, initial=lambda: timesheet_collection.get_new_timesheets_contents()
                  )
              except ParseError as e:
                  e.file = file_path
                  raise
  
              timesheet_collection.timesheets.append(timesheet)
  
          # Fix `add_date_to_bottom` attribute of timesheet entries based on
          # previous timesheets. When a new timesheet is started it won't have
          # any direction defined, so we take the one from the previous
          # timesheet, if any
          if parser.add_date_to_bottom is None:
              previous_timesheet = None
              for timesheet in timesheet_collection.timesheets:
                  if previous_timesheet:
                      previous_timesheet_top_down = previous_timesheet.entries.is_top_down()
  
                      if previous_timesheet_top_down is not None:
                          timesheet.entries.parser.add_date_to_bottom = previous_timesheet_top_down
                  previous_timesheet = timesheet
  
          return timesheet_collection