def METHOD_NAME(  # type: ignore[override]
    cls, _root, info: ResolveInfo, /, *, input
):
    # check permissions based on attribute type
    permissions: Union[Tuple[ProductTypePermissions], Tuple[PageTypePermissions]]
    if input["type"] == AttributeTypeEnum.PRODUCT_TYPE.value:
        permissions = (ProductTypePermissions.MANAGE_PRODUCT_TYPES_AND_ATTRIBUTES,)
    else:
        permissions = (PageTypePermissions.MANAGE_PAGE_TYPES_AND_ATTRIBUTES,)
    if not cls.check_permissions(info.context, permissions):
        raise PermissionDenied(permissions=permissions)
    instance = models.Attribute()
    # Do cleaning and uniqueness checks
    cleaned_input = cls.clean_input(info, instance, input)
    cls.clean_attribute(instance, cleaned_input)
    cls.clean_values(cleaned_input, instance)
    # Construct the attribute
    instance = cls.construct_instance(instance, cleaned_input)
    cls.clean_instance(info, instance)
    # Commit it
    instance.save()
    cls._save_m2m(info, instance, cleaned_input)
    cls.post_save_action(info, instance, cleaned_input)
    # Return the attribute that was created
    return AttributeCreate(attribute=instance)