def METHOD_NAME(self, model, **kwargs):
    from .models import BaseGenericSetting, BaseSiteSetting
    """
    Register a model as a setting, adding it to the wagtail admin menu
    """
    # Don't bother registering this if it is already registered
    if model in self:
        return model
    self.append(model)
    # Register a new menu item in the settings menu
    @hooks.METHOD_NAME("register_settings_menu_item")
    def menu_hook():
        return SettingMenuItem(model, **kwargs)
    @hooks.METHOD_NAME("register_permissions")
    def permissions_hook():
        return Permission.objects.filter(
            content_type__app_label=model._meta.app_label,
            codename=f"change_{model._meta.model_name}",
        )
    # Register an admin URL finder
    permission_policy = ModelPermissionPolicy(model)
    if issubclass(model, BaseSiteSetting):
        finder_class = type(
            "_SiteSettingAdminURLFinder",
            (SiteSettingAdminURLFinder,),
            {"model": model, "permission_policy": permission_policy},
        )
    elif issubclass(model, BaseGenericSetting):
        finder_class = type(
            "_GenericSettingAdminURLFinder",
            (GenericSettingAdminURLFinder,),
            {"model": model, "permission_policy": permission_policy},
        )
    else:
        raise NotImplementedError
    register_admin_url_finder(model, finder_class)
    return model