docs: def get_thumbnail(self, thumbnail_options, save=True, generate=None,
                        silent_template_exception=False):
          """
          Return a ``ThumbnailFile`` containing a thumbnail.
  
          If a matching thumbnail already exists, it will simply be returned.
  
          By default (unless the ``Thumbnailer`` was instanciated with
          ``generate=False``), thumbnails that don't exist are generated.
          Otherwise ``None`` is returned.
  
          Force the generation behaviour by setting the ``generate`` param to
          either ``True`` or ``False`` as required.
  
          The new thumbnail image is generated using the ``thumbnail_options``
          dictionary. If the ``save`` argument is ``True`` (default), the
          generated thumbnail will be saved too.
          """
          thumbnail_options = self.get_options(thumbnail_options)
          if generate is None:
              generate = self.generate
  
          thumbnail = self.get_existing_thumbnail(thumbnail_options)
          if not thumbnail:
              if generate:
                  thumbnail = self.generate_thumbnail(
                      thumbnail_options,
                      silent_template_exception=silent_template_exception)
                  if save:
                      self.save_thumbnail(thumbnail)
              else:
                  signals.thumbnail_missed.send(
                      sender=self, options=thumbnail_options,
                      high_resolution=False)
  
          if 'HIGH_RESOLUTION' in thumbnail_options:
              generate_high_resolution = thumbnail_options.get('HIGH_RESOLUTION')
          else:
              generate_high_resolution = self.thumbnail_high_resolution
          if generate_high_resolution:
              thumbnail.high_resolution = self.get_existing_thumbnail(
                  thumbnail_options, high_resolution=True)
              if not thumbnail.high_resolution:
                  if generate:
                      thumbnail.high_resolution = self.generate_thumbnail(
                          thumbnail_options, high_resolution=True,
                          silent_template_exception=silent_template_exception)
                      if save:
                          self.save_thumbnail(thumbnail.high_resolution)
                  else:
                      signals.thumbnail_missed.send(
                          sender=self, options=thumbnail_options,
                          high_resolution=False)
  
          return thumbnail