def METHOD_NAME(
    filer_image, sizes=None, include_original=True, extra_opts=None
) -> List[ResponsiveImageThumbnail]:
    if sizes is None:
        sizes = [
            (alias, opt["size"])
            for alias, opt in settings.THUMBNAIL_ALIASES["filer.Image"].items()
        ]
    raise_errors = getattr(settings, "THUMBNAIL_DEBUG", False)
    thumbnails = []
    if extra_opts is None:
        extra_opts = {}
    if include_original:
        # generate thumbnail for original size
        # to trigger extra source types and optimiztions
        sizes.append(("original", (int(filer_image.width), int(filer_image.height))))
    thumbnailer = get_thumbnailer(filer_image)
    for alias, size in sizes:
        if size[0] > filer_image.width:
            continue
        try:
            thumbnail = thumbnailer.get_thumbnail(
                {
                    "size": size,
                    "subject_location": filer_image.subject_location,
                    **extra_opts,
                }
            )
        except Exception:
            if raise_errors:
                raise
            continue
        thumbnails.append(
            ResponsiveImageThumbnail(
                url=thumbnail.url, size=(thumbnail.width, thumbnail.height), alias=alias
            )
        )
    return thumbnails