docs: def prepend(self, symbol, metadata, start_time=None):
          """
          Prepend a metadata entry for `symbol`
  
          Parameters
          ----------
          symbol : `str`
              symbol name for the item
          metadata : `dict`
              to be persisted
          start_time : `datetime.datetime`
              when metadata becomes effective
              Default: datetime.datetime.min
          """
          if metadata is None:
              return
          if start_time is None:
              start_time = dt.min
          old_metadata = self.find_one({'symbol': symbol}, sort=[('start_time', pymongo.ASCENDING)])
          if old_metadata is not None:
              if old_metadata['start_time'] <= start_time:
                  raise ValueError('start_time={} is later than the first metadata @{}'.format(start_time,
                                                                                               old_metadata['start_time']))
              if old_metadata['metadata'] == metadata:
                  self.find_one_and_update({'symbol': symbol}, {'$set': {'start_time': start_time}},
                                           sort=[('start_time', pymongo.ASCENDING)])
                  old_metadata['start_time'] = start_time
                  return old_metadata
              end_time = old_metadata.get('start_time')
          else:
              end_time = None
  
          document = {'_id': bson.ObjectId(), 'symbol': symbol, 'metadata': metadata, 'start_time': start_time}
          if end_time is not None:
              document['end_time'] = end_time
          mongo_retry(self.insert_one)(document)
  
          logger.debug('Finished writing metadata for %s', symbol)
          return document