    {- |
    Copyright  : Will Thompson, Iñaki García Etxebarria and Jonas Platte
    License    : LGPL-2.1
    Maintainer : Iñaki García Etxebarria (garetxe@gmail.com)

    'GI.Gio.Objects.SimpleActionGroup.SimpleActionGroup' is a hash table filled with 'GI.Gio.Interfaces.Action.Action' objects,
    implementing the 'GI.Gio.Interfaces.ActionGroup.ActionGroup' and 'GI.Gio.Interfaces.ActionMap.ActionMap' interfaces.

    /Since: 2.28/
    -}

    #define ENABLE_OVERLOADING \
           (!defined(__HADDOCK_VERSION__))

    module GI.Gio.Objects.SimpleActionGroup
        (

    -- * Exported types
        SimpleActionGroup(..)                   ,
        IsSimpleActionGroup                     ,
        toSimpleActionGroup                     ,
        noSimpleActionGroup                     ,

     -- * Methods
    -- ** addEntries #method:addEntries#

    #if ENABLE_OVERLOADING
        SimpleActionGroupAddEntriesMethodInfo   ,
    #endif
        simpleActionGroupAddEntries             ,

    -- ** insert #method:insert#

    #if ENABLE_OVERLOADING
        SimpleActionGroupInsertMethodInfo       ,
    #endif
        simpleActionGroupInsert                 ,

    -- ** lookup #method:lookup#

    #if ENABLE_OVERLOADING
        SimpleActionGroupLookupMethodInfo       ,
    #endif
        simpleActionGroupLookup                 ,

    -- ** new #method:new#

        simpleActionGroupNew                    ,

    -- ** remove #method:remove#

    #if ENABLE_OVERLOADING
        SimpleActionGroupRemoveMethodInfo       ,
    #endif
        simpleActionGroupRemove                 ,

        ) where

    import Data.GI.Base.ShortPrelude
    import qualified Data.GI.Base.ShortPrelude as SP
    import qualified Data.GI.Base.Overloading as O
    import qualified Prelude as P

    import qualified Data.GI.Base.Attributes as GI.Attributes
    import qualified Data.GI.Base.ManagedPtr as B.ManagedPtr
    import qualified Data.GI.Base.GError as B.GError
    import qualified Data.GI.Base.GVariant as B.GVariant
    import qualified Data.GI.Base.GValue as B.GValue
    import qualified Data.GI.Base.GParamSpec as B.GParamSpec
    import qualified Data.GI.Base.CallStack as B.CallStack
    import qualified Data.Text as T
    import qualified Data.ByteString.Char8 as B
    import qualified Data.Map as Map
    import qualified Foreign.Ptr as FP

    import qualified GI.GObject.Objects.Object as GObject.Object
    import {-# SOURCE #-} qualified GI.Gio.Interfaces.Action as Gio.Action
    import {-# SOURCE #-} qualified GI.Gio.Interfaces.ActionGroup as Gio.ActionGroup
    import {-# SOURCE #-} qualified GI.Gio.Interfaces.ActionMap as Gio.ActionMap
    import {-# SOURCE #-} qualified GI.Gio.Structs.ActionEntry as Gio.ActionEntry

    -- | Memory-managed wrapper type.
    newtype SimpleActionGroup = SimpleActionGroup (ManagedPtr SimpleActionGroup)
    foreign import ccall "g_simple_action_group_get_type"
        c_g_simple_action_group_get_type :: IO GType

    instance GObject SimpleActionGroup where
        gobjectType _ = c_g_simple_action_group_get_type

    -- | Type class for types which can be safely cast to `SimpleActionGroup`, for instance with `toSimpleActionGroup`.
    class GObject o => IsSimpleActionGroup o
    #if MIN_VERSION_base(4,9,0)
    instance {-# OVERLAPPABLE #-} (GObject a, O.UnknownAncestorError SimpleActionGroup a) =>
        IsSimpleActionGroup a
    #endif
    instance IsSimpleActionGroup SimpleActionGroup
    instance GObject.Object.IsObject SimpleActionGroup
    instance Gio.ActionGroup.IsActionGroup SimpleActionGroup
    instance Gio.ActionMap.IsActionMap SimpleActionGroup

    -- | Cast to `SimpleActionGroup`, for types for which this is known to be safe. For general casts, use `Data.GI.Base.ManagedPtr.castTo`.
    toSimpleActionGroup :: (MonadIO m, IsSimpleActionGroup o) => o -> m SimpleActionGroup
    toSimpleActionGroup = liftIO . unsafeCastTo SimpleActionGroup

    -- | A convenience alias for `Nothing` :: `Maybe` `SimpleActionGroup`.
    noSimpleActionGroup :: Maybe SimpleActionGroup
    noSimpleActionGroup = Nothing

    #if ENABLE_OVERLOADING
    type family ResolveSimpleActionGroupMethod (t :: Symbol) (o :: *) :: * where
        ResolveSimpleActionGroupMethod "actionAdded" o = Gio.ActionGroup.ActionGroupActionAddedMethodInfo
        ResolveSimpleActionGroupMethod "actionEnabledChanged" o = Gio.ActionGroup.ActionGroupActionEnabledChangedMethodInfo
        ResolveSimpleActionGroupMethod "actionRemoved" o = Gio.ActionGroup.ActionGroupActionRemovedMethodInfo
        ResolveSimpleActionGroupMethod "actionStateChanged" o = Gio.ActionGroup.ActionGroupActionStateChangedMethodInfo
        ResolveSimpleActionGroupMethod "activateAction" o = Gio.ActionGroup.ActionGroupActivateActionMethodInfo
        ResolveSimpleActionGroupMethod "addAction" o = Gio.ActionMap.ActionMapAddActionMethodInfo
        ResolveSimpleActionGroupMethod "addActionEntries" o = Gio.ActionMap.ActionMapAddActionEntriesMethodInfo
        ResolveSimpleActionGroupMethod "addEntries" o = SimpleActionGroupAddEntriesMethodInfo
        ResolveSimpleActionGroupMethod "bindProperty" o = GObject.Object.ObjectBindPropertyMethodInfo
        ResolveSimpleActionGroupMethod "bindPropertyFull" o = GObject.Object.ObjectBindPropertyFullMethodInfo
        ResolveSimpleActionGroupMethod "changeActionState" o = Gio.ActionGroup.ActionGroupChangeActionStateMethodInfo
        ResolveSimpleActionGroupMethod "forceFloating" o = GObject.Object.ObjectForceFloatingMethodInfo
        ResolveSimpleActionGroupMethod "freezeNotify" o = GObject.Object.ObjectFreezeNotifyMethodInfo
        ResolveSimpleActionGroupMethod "getv" o = GObject.Object.ObjectGetvMethodInfo
        ResolveSimpleActionGroupMethod "hasAction" o = Gio.ActionGroup.ActionGroupHasActionMethodInfo
        ResolveSimpleActionGroupMethod "insert" o = SimpleActionGroupInsertMethodInfo
        ResolveSimpleActionGroupMethod "isFloating" o = GObject.Object.ObjectIsFloatingMethodInfo
        ResolveSimpleActionGroupMethod "listActions" o = Gio.ActionGroup.ActionGroupListActionsMethodInfo
        ResolveSimpleActionGroupMethod "lookup" o = SimpleActionGroupLookupMethodInfo
        ResolveSimpleActionGroupMethod "lookupAction" o = Gio.ActionMap.ActionMapLookupActionMethodInfo
        ResolveSimpleActionGroupMethod "notify" o = GObject.Object.ObjectNotifyMethodInfo
        ResolveSimpleActionGroupMethod "notifyByPspec" o = GObject.Object.ObjectNotifyByPspecMethodInfo
        ResolveSimpleActionGroupMethod "queryAction" o = Gio.ActionGroup.ActionGroupQueryActionMethodInfo
        ResolveSimpleActionGroupMethod "ref" o = GObject.Object.ObjectRefMethodInfo
        ResolveSimpleActionGroupMethod "refSink" o = GObject.Object.ObjectRefSinkMethodInfo
        ResolveSimpleActionGroupMethod "remove" o = SimpleActionGroupRemoveMethodInfo
        ResolveSimpleActionGroupMethod "removeAction" o = Gio.ActionMap.ActionMapRemoveActionMethodInfo
        ResolveSimpleActionGroupMethod "runDispose" o = GObject.Object.ObjectRunDisposeMethodInfo
        ResolveSimpleActionGroupMethod "stealData" o = GObject.Object.ObjectStealDataMethodInfo
        ResolveSimpleActionGroupMethod "stealQdata" o = GObject.Object.ObjectStealQdataMethodInfo
        ResolveSimpleActionGroupMethod "thawNotify" o = GObject.Object.ObjectThawNotifyMethodInfo
        ResolveSimpleActionGroupMethod "unref" o = GObject.Object.ObjectUnrefMethodInfo
        ResolveSimpleActionGroupMethod "watchClosure" o = GObject.Object.ObjectWatchClosureMethodInfo
        ResolveSimpleActionGroupMethod "getActionEnabled" o = Gio.ActionGroup.ActionGroupGetActionEnabledMethodInfo
        ResolveSimpleActionGroupMethod "getActionParameterType" o = Gio.ActionGroup.ActionGroupGetActionParameterTypeMethodInfo
        ResolveSimpleActionGroupMethod "getActionState" o = Gio.ActionGroup.ActionGroupGetActionStateMethodInfo
        ResolveSimpleActionGroupMethod "getActionStateHint" o = Gio.ActionGroup.ActionGroupGetActionStateHintMethodInfo
        ResolveSimpleActionGroupMethod "getActionStateType" o = Gio.ActionGroup.ActionGroupGetActionStateTypeMethodInfo
        ResolveSimpleActionGroupMethod "getData" o = GObject.Object.ObjectGetDataMethodInfo
        ResolveSimpleActionGroupMethod "getProperty" o = GObject.Object.ObjectGetPropertyMethodInfo
        ResolveSimpleActionGroupMethod "getQdata" o = GObject.Object.ObjectGetQdataMethodInfo
        ResolveSimpleActionGroupMethod "setData" o = GObject.Object.ObjectSetDataMethodInfo
        ResolveSimpleActionGroupMethod "setProperty" o = GObject.Object.ObjectSetPropertyMethodInfo
        ResolveSimpleActionGroupMethod l o = O.MethodResolutionFailed l o

    instance (info ~ ResolveSimpleActionGroupMethod t SimpleActionGroup, O.MethodInfo info SimpleActionGroup p) => O.IsLabelProxy t (SimpleActionGroup -> p) where
        fromLabelProxy _ = O.overloadedMethod (O.MethodProxy :: O.MethodProxy info)

    #if MIN_VERSION_base(4,9,0)
    instance (info ~ ResolveSimpleActionGroupMethod t SimpleActionGroup, O.MethodInfo info SimpleActionGroup p) => O.IsLabel t (SimpleActionGroup -> p) where
    #if MIN_VERSION_base(4,10,0)
        fromLabel = O.overloadedMethod (O.MethodProxy :: O.MethodProxy info)
    #else
        fromLabel _ = O.overloadedMethod (O.MethodProxy :: O.MethodProxy info)
    #endif
    #endif

    #endif

    #if ENABLE_OVERLOADING
    instance O.HasAttributeList SimpleActionGroup
    type instance O.AttributeList SimpleActionGroup = SimpleActionGroupAttributeList
    type SimpleActionGroupAttributeList = ('[ ] :: [(Symbol, *)])
    #endif

    #if ENABLE_OVERLOADING
    #endif

    #if ENABLE_OVERLOADING
    type instance O.SignalList SimpleActionGroup = SimpleActionGroupSignalList
    type SimpleActionGroupSignalList = ('[ '("actionAdded", Gio.ActionGroup.ActionGroupActionAddedSignalInfo), '("actionEnabledChanged", Gio.ActionGroup.ActionGroupActionEnabledChangedSignalInfo), '("actionRemoved", Gio.ActionGroup.ActionGroupActionRemovedSignalInfo), '("actionStateChanged", Gio.ActionGroup.ActionGroupActionStateChangedSignalInfo), '("notify", GObject.Object.ObjectNotifySignalInfo)] :: [(Symbol, *)])

    #endif

    -- method SimpleActionGroup::new
    -- method type : Constructor
    -- Args : []
    -- Lengths : []
    -- returnType : Just (TInterface (Name {namespace = "Gio", name = "SimpleActionGroup"}))
    -- throws : False
    -- Skip return : False

    foreign import ccall "g_simple_action_group_new" g_simple_action_group_new ::
        IO (Ptr SimpleActionGroup)

    {- |
    Creates a new, empty, 'GI.Gio.Objects.SimpleActionGroup.SimpleActionGroup'.

    /Since: 2.28/
    -}
    simpleActionGroupNew ::
        (B.CallStack.HasCallStack, MonadIO m) =>
        m SimpleActionGroup
        {- ^ __Returns:__ a new 'GI.Gio.Objects.SimpleActionGroup.SimpleActionGroup' -}
    simpleActionGroupNew  = liftIO $ do
        result <- g_simple_action_group_new
        checkUnexpectedReturnNULL "simpleActionGroupNew" result
        result' <- (wrapObject SimpleActionGroup) result
        return result'

    #if ENABLE_OVERLOADING
    #endif

    -- method SimpleActionGroup::add_entries
    -- method type : OrdinaryMethod
    -- Args : [Arg {argCName = "simple", argType = TInterface (Name {namespace = "Gio", name = "SimpleActionGroup"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #GSimpleActionGroup", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "entries", argType = TCArray False (-1) 2 (TInterface (Name {namespace = "Gio", name = "ActionEntry"})), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a pointer to the first item in\n          an array of #GActionEntry structs", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "n_entries", argType = TBasicType TInt, direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "the length of @entries, or -1", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "user_data", argType = TBasicType TPtr, direction = DirectionIn, mayBeNull = True, argDoc = Documentation {rawDocText = Just "the user data for signal connections", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
    -- Lengths : [Arg {argCName = "n_entries", argType = TBasicType TInt, direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "the length of @entries, or -1", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
    -- returnType : Nothing
    -- throws : False
    -- Skip return : False

    foreign import ccall "g_simple_action_group_add_entries" g_simple_action_group_add_entries ::
        Ptr SimpleActionGroup ->                -- simple : TInterface (Name {namespace = "Gio", name = "SimpleActionGroup"})
        Ptr Gio.ActionEntry.ActionEntry ->      -- entries : TCArray False (-1) 2 (TInterface (Name {namespace = "Gio", name = "ActionEntry"}))
        Int32 ->                                -- n_entries : TBasicType TInt
        Ptr () ->                               -- user_data : TBasicType TPtr
        IO ()

    {-# DEPRECATED simpleActionGroupAddEntries ["(Since version 2.38)","Use 'GI.Gio.Interfaces.ActionMap.actionMapAddActionEntries'"] #-}
    {- |
    A convenience function for creating multiple 'GI.Gio.Objects.SimpleAction.SimpleAction' instances
    and adding them to the action group.

    /Since: 2.30/
    -}
    simpleActionGroupAddEntries ::
        (B.CallStack.HasCallStack, MonadIO m, IsSimpleActionGroup a) =>
        a
        {- ^ /@simple@/: a 'GI.Gio.Objects.SimpleActionGroup.SimpleActionGroup' -}
        -> [Gio.ActionEntry.ActionEntry]
        {- ^ /@entries@/: a pointer to the first item in
              an array of 'GI.Gio.Structs.ActionEntry.ActionEntry' structs -}
        -> Ptr ()
        {- ^ /@userData@/: the user data for signal connections -}
        -> m ()
    simpleActionGroupAddEntries simple entries userData = liftIO $ do
        let nEntries = fromIntegral $ length entries
        simple' <- unsafeManagedPtrCastPtr simple
        entries' <- mapM unsafeManagedPtrGetPtr entries
        entries'' <- packBlockArray 64 entries'
        g_simple_action_group_add_entries simple' entries'' nEntries userData
        touchManagedPtr simple
        mapM_ touchManagedPtr entries
        freeMem entries''
        return ()

    #if ENABLE_OVERLOADING
    data SimpleActionGroupAddEntriesMethodInfo
    instance (signature ~ ([Gio.ActionEntry.ActionEntry] -> Ptr () -> m ()), MonadIO m, IsSimpleActionGroup a) => O.MethodInfo SimpleActionGroupAddEntriesMethodInfo a signature where
        overloadedMethod _ = simpleActionGroupAddEntries

    #endif

    -- method SimpleActionGroup::insert
    -- method type : OrdinaryMethod
    -- Args : [Arg {argCName = "simple", argType = TInterface (Name {namespace = "Gio", name = "SimpleActionGroup"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #GSimpleActionGroup", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "action", argType = TInterface (Name {namespace = "Gio", name = "Action"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #GAction", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
    -- Lengths : []
    -- returnType : Nothing
    -- throws : False
    -- Skip return : False

    foreign import ccall "g_simple_action_group_insert" g_simple_action_group_insert ::
        Ptr SimpleActionGroup ->                -- simple : TInterface (Name {namespace = "Gio", name = "SimpleActionGroup"})
        Ptr Gio.Action.Action ->                -- action : TInterface (Name {namespace = "Gio", name = "Action"})
        IO ()

    {-# DEPRECATED simpleActionGroupInsert ["(Since version 2.38)","Use 'GI.Gio.Interfaces.ActionMap.actionMapAddAction'"] #-}
    {- |
    Adds an action to the action group.

    If the action group already contains an action with the same name as
    /@action@/ then the old action is dropped from the group.

    The action group takes its own reference on /@action@/.

    /Since: 2.28/
    -}
    simpleActionGroupInsert ::
        (B.CallStack.HasCallStack, MonadIO m, IsSimpleActionGroup a, Gio.Action.IsAction b) =>
        a
        {- ^ /@simple@/: a 'GI.Gio.Objects.SimpleActionGroup.SimpleActionGroup' -}
        -> b
        {- ^ /@action@/: a 'GI.Gio.Interfaces.Action.Action' -}
        -> m ()
    simpleActionGroupInsert simple action = liftIO $ do
        simple' <- unsafeManagedPtrCastPtr simple
        action' <- unsafeManagedPtrCastPtr action
        g_simple_action_group_insert simple' action'
        touchManagedPtr simple
        touchManagedPtr action
        return ()

    #if ENABLE_OVERLOADING
    data SimpleActionGroupInsertMethodInfo
    instance (signature ~ (b -> m ()), MonadIO m, IsSimpleActionGroup a, Gio.Action.IsAction b) => O.MethodInfo SimpleActionGroupInsertMethodInfo a signature where
        overloadedMethod _ = simpleActionGroupInsert

    #endif

    -- method SimpleActionGroup::lookup
    -- method type : OrdinaryMethod
    -- Args : [Arg {argCName = "simple", argType = TInterface (Name {namespace = "Gio", name = "SimpleActionGroup"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #GSimpleActionGroup", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "action_name", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "the name of an action", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
    -- Lengths : []
    -- returnType : Just (TInterface (Name {namespace = "Gio", name = "Action"}))
    -- throws : False
    -- Skip return : False

    foreign import ccall "g_simple_action_group_lookup" g_simple_action_group_lookup ::
        Ptr SimpleActionGroup ->                -- simple : TInterface (Name {namespace = "Gio", name = "SimpleActionGroup"})
        CString ->                              -- action_name : TBasicType TUTF8
        IO (Ptr Gio.Action.Action)

    {-# DEPRECATED simpleActionGroupLookup ["(Since version 2.38)","Use 'GI.Gio.Interfaces.ActionMap.actionMapLookupAction'"] #-}
    {- |
    Looks up the action with the name /@actionName@/ in the group.

    If no such action exists, returns 'Nothing'.

    /Since: 2.28/
    -}
    simpleActionGroupLookup ::
        (B.CallStack.HasCallStack, MonadIO m, IsSimpleActionGroup a) =>
        a
        {- ^ /@simple@/: a 'GI.Gio.Objects.SimpleActionGroup.SimpleActionGroup' -}
        -> T.Text
        {- ^ /@actionName@/: the name of an action -}
        -> m Gio.Action.Action
        {- ^ __Returns:__ a 'GI.Gio.Interfaces.Action.Action', or 'Nothing' -}
    simpleActionGroupLookup simple actionName = liftIO $ do
        simple' <- unsafeManagedPtrCastPtr simple
        actionName' <- textToCString actionName
        result <- g_simple_action_group_lookup simple' actionName'
        checkUnexpectedReturnNULL "simpleActionGroupLookup" result
        result' <- (newObject Gio.Action.Action) result
        touchManagedPtr simple
        freeMem actionName'
        return result'

    #if ENABLE_OVERLOADING
    data SimpleActionGroupLookupMethodInfo
    instance (signature ~ (T.Text -> m Gio.Action.Action), MonadIO m, IsSimpleActionGroup a) => O.MethodInfo SimpleActionGroupLookupMethodInfo a signature where
        overloadedMethod _ = simpleActionGroupLookup

    #endif

    -- method SimpleActionGroup::remove
    -- method type : OrdinaryMethod
    -- Args : [Arg {argCName = "simple", argType = TInterface (Name {namespace = "Gio", name = "SimpleActionGroup"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #GSimpleActionGroup", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "action_name", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "the name of the action", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
    -- Lengths : []
    -- returnType : Nothing
    -- throws : False
    -- Skip return : False

    foreign import ccall "g_simple_action_group_remove" g_simple_action_group_remove ::
        Ptr SimpleActionGroup ->                -- simple : TInterface (Name {namespace = "Gio", name = "SimpleActionGroup"})
        CString ->                              -- action_name : TBasicType TUTF8
        IO ()

    {-# DEPRECATED simpleActionGroupRemove ["(Since version 2.38)","Use 'GI.Gio.Interfaces.ActionMap.actionMapRemoveAction'"] #-}
    {- |
    Removes the named action from the action group.

    If no action of this name is in the group then nothing happens.

    /Since: 2.28/
    -}
    simpleActionGroupRemove ::
        (B.CallStack.HasCallStack, MonadIO m, IsSimpleActionGroup a) =>
        a
        {- ^ /@simple@/: a 'GI.Gio.Objects.SimpleActionGroup.SimpleActionGroup' -}
        -> T.Text
        {- ^ /@actionName@/: the name of the action -}
        -> m ()
    simpleActionGroupRemove simple actionName = liftIO $ do
        simple' <- unsafeManagedPtrCastPtr simple
        actionName' <- textToCString actionName
        g_simple_action_group_remove simple' actionName'
        touchManagedPtr simple
        freeMem actionName'
        return ()

    #if ENABLE_OVERLOADING
    data SimpleActionGroupRemoveMethodInfo
    instance (signature ~ (T.Text -> m ()), MonadIO m, IsSimpleActionGroup a) => O.MethodInfo SimpleActionGroupRemoveMethodInfo a signature where
        overloadedMethod _ = simpleActionGroupRemove

    #endif