    {-# LANGUAGE TypeApplications #-}

    -- | Copyright  : Will Thompson and Iñaki García Etxebarria
    -- License    : LGPL-2.1
    -- Maintainer : Iñaki García Etxebarria
    --
    -- @GDBusActionGroup@ is an implementation of the t'GI.Gio.Interfaces.ActionGroup.ActionGroup'
    -- interface.
    --
    -- @GDBusActionGroup@ can be used as a proxy for an action group
    -- that is exported over D-Bus with 'GI.Gio.Objects.DBusConnection.dBusConnectionExportActionGroup'.

    #if !defined(__HADDOCK_VERSION__)
    #define ENABLE_OVERLOADING
    #endif

    module GI.Gio.Objects.DBusActionGroup
        (

    -- * Exported types
        DBusActionGroup(..)                     ,
        IsDBusActionGroup                       ,
        toDBusActionGroup                       ,

     -- * Methods
    -- |
    --
    --  === __Click to display all available methods, including inherited ones__
    -- ==== Methods
    -- [actionAdded]("GI.Gio.Interfaces.ActionGroup#g:method:actionAdded"), [actionEnabledChanged]("GI.Gio.Interfaces.ActionGroup#g:method:actionEnabledChanged"), [actionRemoved]("GI.Gio.Interfaces.ActionGroup#g:method:actionRemoved"), [actionStateChanged]("GI.Gio.Interfaces.ActionGroup#g:method:actionStateChanged"), [activateAction]("GI.Gio.Interfaces.ActionGroup#g:method:activateAction"), [activateActionFull]("GI.Gio.Interfaces.RemoteActionGroup#g:method:activateActionFull"), [bindProperty]("GI.GObject.Objects.Object#g:method:bindProperty"), [bindPropertyFull]("GI.GObject.Objects.Object#g:method:bindPropertyFull"), [changeActionState]("GI.Gio.Interfaces.ActionGroup#g:method:changeActionState"), [changeActionStateFull]("GI.Gio.Interfaces.RemoteActionGroup#g:method:changeActionStateFull"), [forceFloating]("GI.GObject.Objects.Object#g:method:forceFloating"), [freezeNotify]("GI.GObject.Objects.Object#g:method:freezeNotify"), [getv]("GI.GObject.Objects.Object#g:method:getv"), [hasAction]("GI.Gio.Interfaces.ActionGroup#g:method:hasAction"), [isFloating]("GI.GObject.Objects.Object#g:method:isFloating"), [listActions]("GI.Gio.Interfaces.ActionGroup#g:method:listActions"), [notify]("GI.GObject.Objects.Object#g:method:notify"), [notifyByPspec]("GI.GObject.Objects.Object#g:method:notifyByPspec"), [queryAction]("GI.Gio.Interfaces.ActionGroup#g:method:queryAction"), [ref]("GI.GObject.Objects.Object#g:method:ref"), [refSink]("GI.GObject.Objects.Object#g:method:refSink"), [runDispose]("GI.GObject.Objects.Object#g:method:runDispose"), [stealData]("GI.GObject.Objects.Object#g:method:stealData"), [stealQdata]("GI.GObject.Objects.Object#g:method:stealQdata"), [thawNotify]("GI.GObject.Objects.Object#g:method:thawNotify"), [unref]("GI.GObject.Objects.Object#g:method:unref"), [watchClosure]("GI.GObject.Objects.Object#g:method:watchClosure").
    --
    -- ==== Getters
    -- [getActionEnabled]("GI.Gio.Interfaces.ActionGroup#g:method:getActionEnabled"), [getActionParameterType]("GI.Gio.Interfaces.ActionGroup#g:method:getActionParameterType"), [getActionState]("GI.Gio.Interfaces.ActionGroup#g:method:getActionState"), [getActionStateHint]("GI.Gio.Interfaces.ActionGroup#g:method:getActionStateHint"), [getActionStateType]("GI.Gio.Interfaces.ActionGroup#g:method:getActionStateType"), [getData]("GI.GObject.Objects.Object#g:method:getData"), [getProperty]("GI.GObject.Objects.Object#g:method:getProperty"), [getQdata]("GI.GObject.Objects.Object#g:method:getQdata").
    --
    -- ==== Setters
    -- [setData]("GI.GObject.Objects.Object#g:method:setData"), [setDataFull]("GI.GObject.Objects.Object#g:method:setDataFull"), [setProperty]("GI.GObject.Objects.Object#g:method:setProperty").

    #if defined(ENABLE_OVERLOADING)
        ResolveDBusActionGroupMethod            ,
    #endif

    -- ** get #method:get#

        dBusActionGroupGet                      ,

        ) 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.BasicTypes as B.Types
    import qualified Data.GI.Base.ManagedPtr as B.ManagedPtr
    import qualified Data.GI.Base.GArray as B.GArray
    import qualified Data.GI.Base.GClosure as B.GClosure
    import qualified Data.GI.Base.GError as B.GError
    import qualified Data.GI.Base.GHashTable as B.GHT
    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.GI.Base.Properties as B.Properties
    import qualified Data.GI.Base.Signals as B.Signals
    import qualified Control.Monad.IO.Class as MIO
    import qualified Data.Coerce as Coerce
    import qualified Data.Text as T
    import qualified Data.Kind as DK
    import qualified Data.ByteString.Char8 as B
    import qualified Data.Map as Map
    import qualified Foreign.Ptr as FP
    import qualified GHC.OverloadedLabels as OL
    import qualified GHC.Records as R

    import qualified GI.GObject.Objects.Object as GObject.Object
    import {-# SOURCE #-} qualified GI.Gio.Interfaces.ActionGroup as Gio.ActionGroup
    import {-# SOURCE #-} qualified GI.Gio.Interfaces.RemoteActionGroup as Gio.RemoteActionGroup
    import {-# SOURCE #-} qualified GI.Gio.Objects.DBusConnection as Gio.DBusConnection

    -- | Memory-managed wrapper type.
    newtype DBusActionGroup = DBusActionGroup (SP.ManagedPtr DBusActionGroup)
        deriving (DBusActionGroup -> DBusActionGroup -> Bool
    (DBusActionGroup -> DBusActionGroup -> Bool)
    -> (DBusActionGroup -> DBusActionGroup -> Bool)
    -> Eq DBusActionGroup
    forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
    $c== :: DBusActionGroup -> DBusActionGroup -> Bool
    == :: DBusActionGroup -> DBusActionGroup -> Bool
    $c/= :: DBusActionGroup -> DBusActionGroup -> Bool
    /= :: DBusActionGroup -> DBusActionGroup -> Bool
    Eq)

    instance SP.ManagedPtrNewtype DBusActionGroup where
        toManagedPtr :: DBusActionGroup -> ManagedPtr DBusActionGroup
    toManagedPtr (DBusActionGroup ManagedPtr DBusActionGroup
    p) = ManagedPtr DBusActionGroup
    p

    foreign import ccall "g_dbus_action_group_get_type"
        c_g_dbus_action_group_get_type :: IO B.Types.GType

    instance B.Types.TypedObject DBusActionGroup where
        glibType :: IO GType
    glibType = IO GType
    c_g_dbus_action_group_get_type

    instance B.Types.GObject DBusActionGroup

    -- | Type class for types which can be safely cast to `DBusActionGroup`, for instance with `toDBusActionGroup`.
    class (SP.GObject o, O.IsDescendantOf DBusActionGroup o) => IsDBusActionGroup o
    instance (SP.GObject o, O.IsDescendantOf DBusActionGroup o) => IsDBusActionGroup o

    instance O.HasParentTypes DBusActionGroup
    type instance O.ParentTypes DBusActionGroup = '[GObject.Object.Object, Gio.ActionGroup.ActionGroup, Gio.RemoteActionGroup.RemoteActionGroup]

    -- | Cast to `DBusActionGroup`, for types for which this is known to be safe. For general casts, use `Data.GI.Base.ManagedPtr.castTo`.
    toDBusActionGroup :: (MIO.MonadIO m, IsDBusActionGroup o) => o -> m DBusActionGroup
    toDBusActionGroup :: forall (m :: * -> *) o.
    (MonadIO m, IsDBusActionGroup o) =>
    o -> m DBusActionGroup
    toDBusActionGroup = IO DBusActionGroup -> m DBusActionGroup
    forall a. IO a -> m a
    forall (m :: * -> *) a. MonadIO m => IO a -> m a
    MIO.liftIO (IO DBusActionGroup -> m DBusActionGroup)
    -> (o -> IO DBusActionGroup) -> o -> m DBusActionGroup
    forall b c a. (b -> c) -> (a -> b) -> a -> c
    . (ManagedPtr DBusActionGroup -> DBusActionGroup)
    -> o -> IO DBusActionGroup
    forall o o'.
    (HasCallStack, ManagedPtrNewtype o, TypedObject o,
     ManagedPtrNewtype o', TypedObject o') =>
    (ManagedPtr o' -> o') -> o -> IO o'
    B.ManagedPtr.unsafeCastTo ManagedPtr DBusActionGroup -> DBusActionGroup
    DBusActionGroup

    -- | Convert 'DBusActionGroup' to and from 'Data.GI.Base.GValue.GValue'. See 'Data.GI.Base.GValue.toGValue' and 'Data.GI.Base.GValue.fromGValue'.
    instance B.GValue.IsGValue (Maybe DBusActionGroup) where
        gvalueGType_ :: IO GType
    gvalueGType_ = IO GType
    c_g_dbus_action_group_get_type
        gvalueSet_ :: Ptr GValue -> Maybe DBusActionGroup -> IO ()
    gvalueSet_ Ptr GValue
    gv Maybe DBusActionGroup
    P.Nothing = Ptr GValue -> Ptr DBusActionGroup -> IO ()
    forall a. GObject a => Ptr GValue -> Ptr a -> IO ()
    B.GValue.set_object Ptr GValue
    gv (Ptr DBusActionGroup
    forall a. Ptr a
    FP.nullPtr :: FP.Ptr DBusActionGroup)
        gvalueSet_ Ptr GValue
    gv (P.Just DBusActionGroup
    obj) = DBusActionGroup -> (Ptr DBusActionGroup -> IO ()) -> IO ()
    forall a c.
    (HasCallStack, ManagedPtrNewtype a) =>
    a -> (Ptr a -> IO c) -> IO c
    B.ManagedPtr.withManagedPtr DBusActionGroup
    obj (Ptr GValue -> Ptr DBusActionGroup -> IO ()
    forall a. GObject a => Ptr GValue -> Ptr a -> IO ()
    B.GValue.set_object Ptr GValue
    gv)
        gvalueGet_ :: Ptr GValue -> IO (Maybe DBusActionGroup)
    gvalueGet_ Ptr GValue
    gv = do
            Ptr DBusActionGroup
    ptr <- Ptr GValue -> IO (Ptr DBusActionGroup)
    forall a. GObject a => Ptr GValue -> IO (Ptr a)
    B.GValue.get_object Ptr GValue
    gv :: IO (FP.Ptr DBusActionGroup)
            if Ptr DBusActionGroup
    ptr Ptr DBusActionGroup -> Ptr DBusActionGroup -> Bool
    forall a. Eq a => a -> a -> Bool
    /= Ptr DBusActionGroup
    forall a. Ptr a
    FP.nullPtr
            then DBusActionGroup -> Maybe DBusActionGroup
    forall a. a -> Maybe a
    P.Just (DBusActionGroup -> Maybe DBusActionGroup)
    -> IO DBusActionGroup -> IO (Maybe DBusActionGroup)
    forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
    <$> (ManagedPtr DBusActionGroup -> DBusActionGroup)
    -> Ptr DBusActionGroup -> IO DBusActionGroup
    forall a b.
    (HasCallStack, GObject a, GObject b) =>
    (ManagedPtr a -> a) -> Ptr b -> IO a
    B.ManagedPtr.newObject ManagedPtr DBusActionGroup -> DBusActionGroup
    DBusActionGroup Ptr DBusActionGroup
    ptr
            else Maybe DBusActionGroup -> IO (Maybe DBusActionGroup)
    forall a. a -> IO a
    forall (m :: * -> *) a. Monad m => a -> m a
    return Maybe DBusActionGroup
    forall a. Maybe a
    P.Nothing

    #if defined(ENABLE_OVERLOADING)
    type family ResolveDBusActionGroupMethod (t :: Symbol) (o :: DK.Type) :: DK.Type where
        ResolveDBusActionGroupMethod "actionAdded" o = Gio.ActionGroup.ActionGroupActionAddedMethodInfo
        ResolveDBusActionGroupMethod "actionEnabledChanged" o = Gio.ActionGroup.ActionGroupActionEnabledChangedMethodInfo
        ResolveDBusActionGroupMethod "actionRemoved" o = Gio.ActionGroup.ActionGroupActionRemovedMethodInfo
        ResolveDBusActionGroupMethod "actionStateChanged" o = Gio.ActionGroup.ActionGroupActionStateChangedMethodInfo
        ResolveDBusActionGroupMethod "activateAction" o = Gio.ActionGroup.ActionGroupActivateActionMethodInfo
        ResolveDBusActionGroupMethod "activateActionFull" o = Gio.RemoteActionGroup.RemoteActionGroupActivateActionFullMethodInfo
        ResolveDBusActionGroupMethod "bindProperty" o = GObject.Object.ObjectBindPropertyMethodInfo
        ResolveDBusActionGroupMethod "bindPropertyFull" o = GObject.Object.ObjectBindPropertyFullMethodInfo
        ResolveDBusActionGroupMethod "changeActionState" o = Gio.ActionGroup.ActionGroupChangeActionStateMethodInfo
        ResolveDBusActionGroupMethod "changeActionStateFull" o = Gio.RemoteActionGroup.RemoteActionGroupChangeActionStateFullMethodInfo
        ResolveDBusActionGroupMethod "forceFloating" o = GObject.Object.ObjectForceFloatingMethodInfo
        ResolveDBusActionGroupMethod "freezeNotify" o = GObject.Object.ObjectFreezeNotifyMethodInfo
        ResolveDBusActionGroupMethod "getv" o = GObject.Object.ObjectGetvMethodInfo
        ResolveDBusActionGroupMethod "hasAction" o = Gio.ActionGroup.ActionGroupHasActionMethodInfo
        ResolveDBusActionGroupMethod "isFloating" o = GObject.Object.ObjectIsFloatingMethodInfo
        ResolveDBusActionGroupMethod "listActions" o = Gio.ActionGroup.ActionGroupListActionsMethodInfo
        ResolveDBusActionGroupMethod "notify" o = GObject.Object.ObjectNotifyMethodInfo
        ResolveDBusActionGroupMethod "notifyByPspec" o = GObject.Object.ObjectNotifyByPspecMethodInfo
        ResolveDBusActionGroupMethod "queryAction" o = Gio.ActionGroup.ActionGroupQueryActionMethodInfo
        ResolveDBusActionGroupMethod "ref" o = GObject.Object.ObjectRefMethodInfo
        ResolveDBusActionGroupMethod "refSink" o = GObject.Object.ObjectRefSinkMethodInfo
        ResolveDBusActionGroupMethod "runDispose" o = GObject.Object.ObjectRunDisposeMethodInfo
        ResolveDBusActionGroupMethod "stealData" o = GObject.Object.ObjectStealDataMethodInfo
        ResolveDBusActionGroupMethod "stealQdata" o = GObject.Object.ObjectStealQdataMethodInfo
        ResolveDBusActionGroupMethod "thawNotify" o = GObject.Object.ObjectThawNotifyMethodInfo
        ResolveDBusActionGroupMethod "unref" o = GObject.Object.ObjectUnrefMethodInfo
        ResolveDBusActionGroupMethod "watchClosure" o = GObject.Object.ObjectWatchClosureMethodInfo
        ResolveDBusActionGroupMethod "getActionEnabled" o = Gio.ActionGroup.ActionGroupGetActionEnabledMethodInfo
        ResolveDBusActionGroupMethod "getActionParameterType" o = Gio.ActionGroup.ActionGroupGetActionParameterTypeMethodInfo
        ResolveDBusActionGroupMethod "getActionState" o = Gio.ActionGroup.ActionGroupGetActionStateMethodInfo
        ResolveDBusActionGroupMethod "getActionStateHint" o = Gio.ActionGroup.ActionGroupGetActionStateHintMethodInfo
        ResolveDBusActionGroupMethod "getActionStateType" o = Gio.ActionGroup.ActionGroupGetActionStateTypeMethodInfo
        ResolveDBusActionGroupMethod "getData" o = GObject.Object.ObjectGetDataMethodInfo
        ResolveDBusActionGroupMethod "getProperty" o = GObject.Object.ObjectGetPropertyMethodInfo
        ResolveDBusActionGroupMethod "getQdata" o = GObject.Object.ObjectGetQdataMethodInfo
        ResolveDBusActionGroupMethod "setData" o = GObject.Object.ObjectSetDataMethodInfo
        ResolveDBusActionGroupMethod "setDataFull" o = GObject.Object.ObjectSetDataFullMethodInfo
        ResolveDBusActionGroupMethod "setProperty" o = GObject.Object.ObjectSetPropertyMethodInfo
        ResolveDBusActionGroupMethod l o = O.MethodResolutionFailed l o

    instance (info ~ ResolveDBusActionGroupMethod t DBusActionGroup, O.OverloadedMethod info DBusActionGroup p) => OL.IsLabel t (DBusActionGroup -> p) where
    #if MIN_VERSION_base(4,10,0)
        fromLabel = O.overloadedMethod @info
    #else
        fromLabel _ = O.overloadedMethod @info
    #endif

    #if MIN_VERSION_base(4,13,0)
    instance (info ~ ResolveDBusActionGroupMethod t DBusActionGroup, O.OverloadedMethod info DBusActionGroup p, R.HasField t DBusActionGroup p) => R.HasField t DBusActionGroup p where
        getField = O.overloadedMethod @info

    #endif

    instance (info ~ ResolveDBusActionGroupMethod t DBusActionGroup, O.OverloadedMethodInfo info DBusActionGroup) => OL.IsLabel t (O.MethodProxy info DBusActionGroup) where
    #if MIN_VERSION_base(4,10,0)
        fromLabel = O.MethodProxy
    #else
        fromLabel _ = O.MethodProxy
    #endif

    #endif

    #if defined(ENABLE_OVERLOADING)
    instance O.HasAttributeList DBusActionGroup
    type instance O.AttributeList DBusActionGroup = DBusActionGroupAttributeList
    type DBusActionGroupAttributeList = ('[ ] :: [(Symbol, DK.Type)])
    #endif

    #if defined(ENABLE_OVERLOADING)
    #endif

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

    #endif

    -- method DBusActionGroup::get
    -- method type : MemberFunction
    -- Args: [ Arg
    --           { argCName = "connection"
    --           , argType =
    --               TInterface Name { namespace = "Gio" , name = "DBusConnection" }
    --           , direction = DirectionIn
    --           , mayBeNull = False
    --           , argDoc =
    --               Documentation
    --                 { rawDocText = Just "A #GDBusConnection" , sinceVersion = Nothing }
    --           , argScope = ScopeTypeInvalid
    --           , argClosure = -1
    --           , argDestroy = -1
    --           , argCallerAllocates = False
    --           , argCallbackUserData = False
    --           , transfer = TransferNothing
    --           }
    --       , Arg
    --           { argCName = "bus_name"
    --           , argType = TBasicType TUTF8
    --           , direction = DirectionIn
    --           , mayBeNull = True
    --           , argDoc =
    --               Documentation
    --                 { rawDocText =
    --                     Just
    --                       "the bus name which exports the action\n    group or %NULL if @connection is not a message bus connection"
    --                 , sinceVersion = Nothing
    --                 }
    --           , argScope = ScopeTypeInvalid
    --           , argClosure = -1
    --           , argDestroy = -1
    --           , argCallerAllocates = False
    --           , argCallbackUserData = False
    --           , transfer = TransferNothing
    --           }
    --       , Arg
    --           { argCName = "object_path"
    --           , argType = TBasicType TUTF8
    --           , direction = DirectionIn
    --           , mayBeNull = False
    --           , argDoc =
    --               Documentation
    --                 { rawDocText =
    --                     Just "the object path at which the action group is exported"
    --                 , sinceVersion = Nothing
    --                 }
    --           , argScope = ScopeTypeInvalid
    --           , argClosure = -1
    --           , argDestroy = -1
    --           , argCallerAllocates = False
    --           , argCallbackUserData = False
    --           , transfer = TransferNothing
    --           }
    --       ]
    -- Lengths: []
    -- returnType: Just
    --               (TInterface Name { namespace = "Gio" , name = "DBusActionGroup" })
    -- throws : False
    -- Skip return : False

    foreign import ccall "g_dbus_action_group_get" g_dbus_action_group_get ::
        Ptr Gio.DBusConnection.DBusConnection -> -- connection : TInterface (Name {namespace = "Gio", name = "DBusConnection"})
        CString ->                              -- bus_name : TBasicType TUTF8
        CString ->                              -- object_path : TBasicType TUTF8
        IO (Ptr DBusActionGroup)

    -- | Obtains a t'GI.Gio.Objects.DBusActionGroup.DBusActionGroup' for the action group which is exported at
    -- the given /@busName@/ and /@objectPath@/.
    --
    -- The thread default main context is taken at the time of this call.
    -- All signals on the menu model (and any linked models) are reported
    -- with respect to this context.  All calls on the returned menu model
    -- (and linked models) must also originate from this same context, with
    -- the thread default main context unchanged.
    --
    -- This call is non-blocking.  The returned action group may or may not
    -- already be filled in.  The correct thing to do is connect the signals
    -- for the action group to monitor for changes and then to call
    -- 'GI.Gio.Interfaces.ActionGroup.actionGroupListActions' to get the initial list.
    --
    -- /Since: 2.32/
    dBusActionGroupGet ::
        (B.CallStack.HasCallStack, MonadIO m, Gio.DBusConnection.IsDBusConnection a) =>
        a
        -- ^ /@connection@/: A t'GI.Gio.Objects.DBusConnection.DBusConnection'
        -> Maybe (T.Text)
        -- ^ /@busName@/: the bus name which exports the action
        --     group or 'P.Nothing' if /@connection@/ is not a message bus connection
        -> T.Text
        -- ^ /@objectPath@/: the object path at which the action group is exported
        -> m DBusActionGroup
        -- ^ __Returns:__ a t'GI.Gio.Objects.DBusActionGroup.DBusActionGroup'
    dBusActionGroupGet :: forall (m :: * -> *) a.
    (HasCallStack, MonadIO m, IsDBusConnection a) =>
    a -> Maybe Text -> Text -> m DBusActionGroup
    dBusActionGroupGet a
    connection Maybe Text
    busName Text
    objectPath = IO DBusActionGroup -> m DBusActionGroup
    forall a. IO a -> m a
    forall (m :: * -> *) a. MonadIO m => IO a -> m a
    liftIO (IO DBusActionGroup -> m DBusActionGroup)
    -> IO DBusActionGroup -> m DBusActionGroup
    forall a b. (a -> b) -> a -> b
    $ do
        Ptr DBusConnection
    connection' <- a -> IO (Ptr DBusConnection)
    forall a b. (HasCallStack, ManagedPtrNewtype a) => a -> IO (Ptr b)
    unsafeManagedPtrCastPtr a
    connection
        Ptr CChar
    maybeBusName <- case Maybe Text
    busName of
            Maybe Text
    Nothing -> Ptr CChar -> IO (Ptr CChar)
    forall a. a -> IO a
    forall (m :: * -> *) a. Monad m => a -> m a
    return Ptr CChar
    forall a. Ptr a
    nullPtr
            Just Text
    jBusName -> do
                Ptr CChar
    jBusName' <- Text -> IO (Ptr CChar)
    textToCString Text
    jBusName
                Ptr CChar -> IO (Ptr CChar)
    forall a. a -> IO a
    forall (m :: * -> *) a. Monad m => a -> m a
    return Ptr CChar
    jBusName'
        Ptr CChar
    objectPath' <- Text -> IO (Ptr CChar)
    textToCString Text
    objectPath
        Ptr DBusActionGroup
    result <- Ptr DBusConnection
    -> Ptr CChar -> Ptr CChar -> IO (Ptr DBusActionGroup)
    g_dbus_action_group_get Ptr DBusConnection
    connection' Ptr CChar
    maybeBusName Ptr CChar
    objectPath'
        Text -> Ptr DBusActionGroup -> IO ()
    forall a. HasCallStack => Text -> Ptr a -> IO ()
    checkUnexpectedReturnNULL Text
    "dBusActionGroupGet" Ptr DBusActionGroup
    result
        DBusActionGroup
    result' <- ((ManagedPtr DBusActionGroup -> DBusActionGroup)
    -> Ptr DBusActionGroup -> IO DBusActionGroup
    forall a b.
    (HasCallStack, GObject a, GObject b) =>
    (ManagedPtr a -> a) -> Ptr b -> IO a
    wrapObject ManagedPtr DBusActionGroup -> DBusActionGroup
    DBusActionGroup) Ptr DBusActionGroup
    result
        a -> IO ()
    forall a. ManagedPtrNewtype a => a -> IO ()
    touchManagedPtr a
    connection
        Ptr CChar -> IO ()
    forall a. Ptr a -> IO ()
    freeMem Ptr CChar
    maybeBusName
        Ptr CChar -> IO ()
    forall a. Ptr a -> IO ()
    freeMem Ptr CChar
    objectPath'
        DBusActionGroup -> IO DBusActionGroup
    forall a. a -> IO a
    forall (m :: * -> *) a. Monad m => a -> m a
    return DBusActionGroup
    result'

    #if defined(ENABLE_OVERLOADING)
    #endif