def METHOD_NAME(
    class_: MockObjClass = _UNDEF,
    *,
    entity_category: str = _UNDEF,
    device_class: str = _UNDEF,
    icon: str = _UNDEF,
    block_inverted: bool = False,
    default_restore_mode: str = "ALWAYS_OFF",
):
    schema = _SWITCH_SCHEMA.extend(
        {
            cv.Optional(CONF_RESTORE_MODE, default=default_restore_mode): cv.enum(
                RESTORE_MODES, upper=True, space="_"
            ),
        }
    )
    if class_ is not _UNDEF:
        schema = schema.extend({cv.GenerateID(): cv.declare_id(class_)})
    if entity_category is not _UNDEF:
        schema = schema.extend(
            {
                cv.Optional(
                    CONF_ENTITY_CATEGORY, default=entity_category
                ): cv.entity_category
            }
        )
    if device_class is not _UNDEF:
        schema = schema.extend(
            {
                cv.Optional(
                    CONF_DEVICE_CLASS, default=device_class
                ): validate_device_class
            }
        )
    if icon is not _UNDEF:
        schema = schema.extend({cv.Optional(CONF_ICON, default=icon): cv.icon})
    if block_inverted:
        schema = schema.extend(
            {
                cv.Optional(CONF_INVERTED): cv.invalid(
                    "Inverted is not supported for this platform!"
                )
            }
        )
    return schema