    -- | Copyright  : Will Thompson and Iñaki García Etxebarria
    -- License    : LGPL-2.1
    -- Maintainer : Iñaki García Etxebarria

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

    module GI.Gtk.Callbacks
        (

     -- * Signals

    -- ** AccelGroupActivate #signal:AccelGroupActivate#

        AccelGroupActivate                      ,
        C_AccelGroupActivate                    ,
        dynamic_AccelGroupActivate              ,
        genClosure_AccelGroupActivate           ,
        mk_AccelGroupActivate                   ,
        noAccelGroupActivate                    ,
        wrap_AccelGroupActivate                 ,

    -- ** AccelGroupFindFunc #signal:AccelGroupFindFunc#

        AccelGroupFindFunc                      ,
        AccelGroupFindFunc_WithClosures         ,
        C_AccelGroupFindFunc                    ,
        drop_closures_AccelGroupFindFunc        ,
        dynamic_AccelGroupFindFunc              ,
        genClosure_AccelGroupFindFunc           ,
        mk_AccelGroupFindFunc                   ,
        noAccelGroupFindFunc                    ,
        noAccelGroupFindFunc_WithClosures       ,
        wrap_AccelGroupFindFunc                 ,

    -- ** AccelMapForeach #signal:AccelMapForeach#

        AccelMapForeach                         ,
        C_AccelMapForeach                       ,
        dynamic_AccelMapForeach                 ,
        genClosure_AccelMapForeach              ,
        mk_AccelMapForeach                      ,
        noAccelMapForeach                       ,
        wrap_AccelMapForeach                    ,

    -- ** ActionableInterfaceGetActionNameFieldCallback #signal:ActionableInterfaceGetActionNameFieldCallback#

        ActionableInterfaceGetActionNameFieldCallback,
        C_ActionableInterfaceGetActionNameFieldCallback,
        dynamic_ActionableInterfaceGetActionNameFieldCallback,
        genClosure_ActionableInterfaceGetActionNameFieldCallback,
        mk_ActionableInterfaceGetActionNameFieldCallback,
        noActionableInterfaceGetActionNameFieldCallback,
        wrap_ActionableInterfaceGetActionNameFieldCallback,

    -- ** ActionableInterfaceGetActionTargetValueFieldCallback #signal:ActionableInterfaceGetActionTargetValueFieldCallback#

        ActionableInterfaceGetActionTargetValueFieldCallback,
        C_ActionableInterfaceGetActionTargetValueFieldCallback,
        dynamic_ActionableInterfaceGetActionTargetValueFieldCallback,
        genClosure_ActionableInterfaceGetActionTargetValueFieldCallback,
        mk_ActionableInterfaceGetActionTargetValueFieldCallback,
        noActionableInterfaceGetActionTargetValueFieldCallback,
        wrap_ActionableInterfaceGetActionTargetValueFieldCallback,

    -- ** ActionableInterfaceSetActionNameFieldCallback #signal:ActionableInterfaceSetActionNameFieldCallback#

        ActionableInterfaceSetActionNameFieldCallback,
        C_ActionableInterfaceSetActionNameFieldCallback,
        dynamic_ActionableInterfaceSetActionNameFieldCallback,
        genClosure_ActionableInterfaceSetActionNameFieldCallback,
        mk_ActionableInterfaceSetActionNameFieldCallback,
        noActionableInterfaceSetActionNameFieldCallback,
        wrap_ActionableInterfaceSetActionNameFieldCallback,

    -- ** ActionableInterfaceSetActionTargetValueFieldCallback #signal:ActionableInterfaceSetActionTargetValueFieldCallback#

        ActionableInterfaceSetActionTargetValueFieldCallback,
        C_ActionableInterfaceSetActionTargetValueFieldCallback,
        dynamic_ActionableInterfaceSetActionTargetValueFieldCallback,
        genClosure_ActionableInterfaceSetActionTargetValueFieldCallback,
        mk_ActionableInterfaceSetActionTargetValueFieldCallback,
        noActionableInterfaceSetActionTargetValueFieldCallback,
        wrap_ActionableInterfaceSetActionTargetValueFieldCallback,

    -- ** AssistantPageFunc #signal:AssistantPageFunc#

        AssistantPageFunc                       ,
        AssistantPageFunc_WithClosures          ,
        C_AssistantPageFunc                     ,
        drop_closures_AssistantPageFunc         ,
        dynamic_AssistantPageFunc               ,
        genClosure_AssistantPageFunc            ,
        mk_AssistantPageFunc                    ,
        noAssistantPageFunc                     ,
        noAssistantPageFunc_WithClosures        ,
        wrap_AssistantPageFunc                  ,

    -- ** BuilderConnectFunc #signal:BuilderConnectFunc#

        BuilderConnectFunc                      ,
        BuilderConnectFunc_WithClosures         ,
        C_BuilderConnectFunc                    ,
        drop_closures_BuilderConnectFunc        ,
        dynamic_BuilderConnectFunc              ,
        genClosure_BuilderConnectFunc           ,
        mk_BuilderConnectFunc                   ,
        noBuilderConnectFunc                    ,
        noBuilderConnectFunc_WithClosures       ,
        wrap_BuilderConnectFunc                 ,

    -- ** CalendarDetailFunc #signal:CalendarDetailFunc#

        C_CalendarDetailFunc                    ,
        CalendarDetailFunc                      ,
        CalendarDetailFunc_WithClosures         ,
        drop_closures_CalendarDetailFunc        ,
        dynamic_CalendarDetailFunc              ,
        genClosure_CalendarDetailFunc           ,
        mk_CalendarDetailFunc                   ,
        noCalendarDetailFunc                    ,
        noCalendarDetailFunc_WithClosures       ,
        wrap_CalendarDetailFunc                 ,

    -- ** Callback #signal:Callback#

        C_Callback                              ,
        Callback                                ,
        Callback_WithClosures                   ,
        drop_closures_Callback                  ,
        dynamic_Callback                        ,
        genClosure_Callback                     ,
        mk_Callback                             ,
        noCallback                              ,
        noCallback_WithClosures                 ,
        wrap_Callback                           ,

    -- ** CellAllocCallback #signal:CellAllocCallback#

        C_CellAllocCallback                     ,
        CellAllocCallback                       ,
        CellAllocCallback_WithClosures          ,
        drop_closures_CellAllocCallback         ,
        dynamic_CellAllocCallback               ,
        genClosure_CellAllocCallback            ,
        mk_CellAllocCallback                    ,
        noCellAllocCallback                     ,
        noCellAllocCallback_WithClosures        ,
        wrap_CellAllocCallback                  ,

    -- ** CellCallback #signal:CellCallback#

        C_CellCallback                          ,
        CellCallback                            ,
        CellCallback_WithClosures               ,
        drop_closures_CellCallback              ,
        dynamic_CellCallback                    ,
        genClosure_CellCallback                 ,
        mk_CellCallback                         ,
        noCellCallback                          ,
        noCellCallback_WithClosures             ,
        wrap_CellCallback                       ,

    -- ** CellLayoutDataFunc #signal:CellLayoutDataFunc#

        C_CellLayoutDataFunc                    ,
        CellLayoutDataFunc                      ,
        CellLayoutDataFunc_WithClosures         ,
        drop_closures_CellLayoutDataFunc        ,
        dynamic_CellLayoutDataFunc              ,
        genClosure_CellLayoutDataFunc           ,
        mk_CellLayoutDataFunc                   ,
        noCellLayoutDataFunc                    ,
        noCellLayoutDataFunc_WithClosures       ,
        wrap_CellLayoutDataFunc                 ,

    -- ** ClipboardClearFunc #signal:ClipboardClearFunc#

        C_ClipboardClearFunc                    ,
        ClipboardClearFunc                      ,
        dynamic_ClipboardClearFunc              ,
        genClosure_ClipboardClearFunc           ,
        mk_ClipboardClearFunc                   ,
        noClipboardClearFunc                    ,
        wrap_ClipboardClearFunc                 ,

    -- ** ClipboardGetFunc #signal:ClipboardGetFunc#

        C_ClipboardGetFunc                      ,
        ClipboardGetFunc                        ,
        dynamic_ClipboardGetFunc                ,
        genClosure_ClipboardGetFunc             ,
        mk_ClipboardGetFunc                     ,
        noClipboardGetFunc                      ,
        wrap_ClipboardGetFunc                   ,

    -- ** ClipboardImageReceivedFunc #signal:ClipboardImageReceivedFunc#

        C_ClipboardImageReceivedFunc            ,
        ClipboardImageReceivedFunc              ,
        ClipboardImageReceivedFunc_WithClosures ,
        drop_closures_ClipboardImageReceivedFunc,
        dynamic_ClipboardImageReceivedFunc      ,
        genClosure_ClipboardImageReceivedFunc   ,
        mk_ClipboardImageReceivedFunc           ,
        noClipboardImageReceivedFunc            ,
        noClipboardImageReceivedFunc_WithClosures,
        wrap_ClipboardImageReceivedFunc         ,

    -- ** ClipboardReceivedFunc #signal:ClipboardReceivedFunc#

        C_ClipboardReceivedFunc                 ,
        ClipboardReceivedFunc                   ,
        ClipboardReceivedFunc_WithClosures      ,
        drop_closures_ClipboardReceivedFunc     ,
        dynamic_ClipboardReceivedFunc           ,
        genClosure_ClipboardReceivedFunc        ,
        mk_ClipboardReceivedFunc                ,
        noClipboardReceivedFunc                 ,
        noClipboardReceivedFunc_WithClosures    ,
        wrap_ClipboardReceivedFunc              ,

    -- ** ClipboardRichTextReceivedFunc #signal:ClipboardRichTextReceivedFunc#

        C_ClipboardRichTextReceivedFunc         ,
        ClipboardRichTextReceivedFunc           ,
        ClipboardRichTextReceivedFunc_WithClosures,
        drop_closures_ClipboardRichTextReceivedFunc,
        dynamic_ClipboardRichTextReceivedFunc   ,
        genClosure_ClipboardRichTextReceivedFunc,
        mk_ClipboardRichTextReceivedFunc        ,
        noClipboardRichTextReceivedFunc         ,
        noClipboardRichTextReceivedFunc_WithClosures,
        wrap_ClipboardRichTextReceivedFunc      ,

    -- ** ClipboardTargetsReceivedFunc #signal:ClipboardTargetsReceivedFunc#

        C_ClipboardTargetsReceivedFunc          ,
        ClipboardTargetsReceivedFunc            ,
        ClipboardTargetsReceivedFunc_WithClosures,
        drop_closures_ClipboardTargetsReceivedFunc,
        dynamic_ClipboardTargetsReceivedFunc    ,
        genClosure_ClipboardTargetsReceivedFunc ,
        mk_ClipboardTargetsReceivedFunc         ,
        noClipboardTargetsReceivedFunc          ,
        noClipboardTargetsReceivedFunc_WithClosures,
        wrap_ClipboardTargetsReceivedFunc       ,

    -- ** ClipboardTextReceivedFunc #signal:ClipboardTextReceivedFunc#

        C_ClipboardTextReceivedFunc             ,
        ClipboardTextReceivedFunc               ,
        ClipboardTextReceivedFunc_WithClosures  ,
        drop_closures_ClipboardTextReceivedFunc ,
        dynamic_ClipboardTextReceivedFunc       ,
        genClosure_ClipboardTextReceivedFunc    ,
        mk_ClipboardTextReceivedFunc            ,
        noClipboardTextReceivedFunc             ,
        noClipboardTextReceivedFunc_WithClosures,
        wrap_ClipboardTextReceivedFunc          ,

    -- ** ClipboardURIReceivedFunc #signal:ClipboardURIReceivedFunc#

        C_ClipboardURIReceivedFunc              ,
        ClipboardURIReceivedFunc                ,
        ClipboardURIReceivedFunc_WithClosures   ,
        drop_closures_ClipboardURIReceivedFunc  ,
        dynamic_ClipboardURIReceivedFunc        ,
        genClosure_ClipboardURIReceivedFunc     ,
        mk_ClipboardURIReceivedFunc             ,
        noClipboardURIReceivedFunc              ,
        noClipboardURIReceivedFunc_WithClosures ,
        wrap_ClipboardURIReceivedFunc           ,

    -- ** ColorSelectionChangePaletteFunc #signal:ColorSelectionChangePaletteFunc#

        C_ColorSelectionChangePaletteFunc       ,
        ColorSelectionChangePaletteFunc         ,
        dynamic_ColorSelectionChangePaletteFunc ,
        genClosure_ColorSelectionChangePaletteFunc,
        mk_ColorSelectionChangePaletteFunc      ,
        noColorSelectionChangePaletteFunc       ,
        wrap_ColorSelectionChangePaletteFunc    ,

    -- ** ColorSelectionChangePaletteWithScreenFunc #signal:ColorSelectionChangePaletteWithScreenFunc#

        C_ColorSelectionChangePaletteWithScreenFunc,
        ColorSelectionChangePaletteWithScreenFunc,
        dynamic_ColorSelectionChangePaletteWithScreenFunc,
        genClosure_ColorSelectionChangePaletteWithScreenFunc,
        mk_ColorSelectionChangePaletteWithScreenFunc,
        noColorSelectionChangePaletteWithScreenFunc,
        wrap_ColorSelectionChangePaletteWithScreenFunc,

    -- ** ContainerClassAddFieldCallback #signal:ContainerClassAddFieldCallback#

        C_ContainerClassAddFieldCallback        ,
        ContainerClassAddFieldCallback          ,
        dynamic_ContainerClassAddFieldCallback  ,
        genClosure_ContainerClassAddFieldCallback,
        mk_ContainerClassAddFieldCallback       ,
        noContainerClassAddFieldCallback        ,
        wrap_ContainerClassAddFieldCallback     ,

    -- ** ContainerClassCheckResizeFieldCallback #signal:ContainerClassCheckResizeFieldCallback#

        C_ContainerClassCheckResizeFieldCallback,
        ContainerClassCheckResizeFieldCallback  ,
        dynamic_ContainerClassCheckResizeFieldCallback,
        genClosure_ContainerClassCheckResizeFieldCallback,
        mk_ContainerClassCheckResizeFieldCallback,
        noContainerClassCheckResizeFieldCallback,
        wrap_ContainerClassCheckResizeFieldCallback,

    -- ** ContainerClassChildTypeFieldCallback #signal:ContainerClassChildTypeFieldCallback#

        C_ContainerClassChildTypeFieldCallback  ,
        ContainerClassChildTypeFieldCallback    ,
        dynamic_ContainerClassChildTypeFieldCallback,
        genClosure_ContainerClassChildTypeFieldCallback,
        mk_ContainerClassChildTypeFieldCallback ,
        noContainerClassChildTypeFieldCallback  ,
        wrap_ContainerClassChildTypeFieldCallback,

    -- ** ContainerClassCompositeNameFieldCallback #signal:ContainerClassCompositeNameFieldCallback#

        C_ContainerClassCompositeNameFieldCallback,
        ContainerClassCompositeNameFieldCallback,
        dynamic_ContainerClassCompositeNameFieldCallback,
        genClosure_ContainerClassCompositeNameFieldCallback,
        mk_ContainerClassCompositeNameFieldCallback,
        noContainerClassCompositeNameFieldCallback,
        wrap_ContainerClassCompositeNameFieldCallback,

    -- ** ContainerClassForallFieldCallback #signal:ContainerClassForallFieldCallback#

        C_ContainerClassForallFieldCallback     ,
        ContainerClassForallFieldCallback       ,
        ContainerClassForallFieldCallback_WithClosures,
        drop_closures_ContainerClassForallFieldCallback,
        dynamic_ContainerClassForallFieldCallback,
        genClosure_ContainerClassForallFieldCallback,
        mk_ContainerClassForallFieldCallback    ,
        noContainerClassForallFieldCallback     ,
        noContainerClassForallFieldCallback_WithClosures,
        wrap_ContainerClassForallFieldCallback  ,

    -- ** ContainerClassGetChildPropertyFieldCallback #signal:ContainerClassGetChildPropertyFieldCallback#

        C_ContainerClassGetChildPropertyFieldCallback,
        ContainerClassGetChildPropertyFieldCallback,
        dynamic_ContainerClassGetChildPropertyFieldCallback,
        genClosure_ContainerClassGetChildPropertyFieldCallback,
        mk_ContainerClassGetChildPropertyFieldCallback,
        noContainerClassGetChildPropertyFieldCallback,
        wrap_ContainerClassGetChildPropertyFieldCallback,

    -- ** ContainerClassGetPathForChildFieldCallback #signal:ContainerClassGetPathForChildFieldCallback#

        C_ContainerClassGetPathForChildFieldCallback,
        ContainerClassGetPathForChildFieldCallback,
        dynamic_ContainerClassGetPathForChildFieldCallback,
        genClosure_ContainerClassGetPathForChildFieldCallback,
        mk_ContainerClassGetPathForChildFieldCallback,
        noContainerClassGetPathForChildFieldCallback,
        wrap_ContainerClassGetPathForChildFieldCallback,

    -- ** ContainerClassRemoveFieldCallback #signal:ContainerClassRemoveFieldCallback#

        C_ContainerClassRemoveFieldCallback     ,
        ContainerClassRemoveFieldCallback       ,
        dynamic_ContainerClassRemoveFieldCallback,
        genClosure_ContainerClassRemoveFieldCallback,
        mk_ContainerClassRemoveFieldCallback    ,
        noContainerClassRemoveFieldCallback     ,
        wrap_ContainerClassRemoveFieldCallback  ,

    -- ** ContainerClassSetChildPropertyFieldCallback #signal:ContainerClassSetChildPropertyFieldCallback#

        C_ContainerClassSetChildPropertyFieldCallback,
        ContainerClassSetChildPropertyFieldCallback,
        dynamic_ContainerClassSetChildPropertyFieldCallback,
        genClosure_ContainerClassSetChildPropertyFieldCallback,
        mk_ContainerClassSetChildPropertyFieldCallback,
        noContainerClassSetChildPropertyFieldCallback,
        wrap_ContainerClassSetChildPropertyFieldCallback,

    -- ** ContainerClassSetFocusChildFieldCallback #signal:ContainerClassSetFocusChildFieldCallback#

        C_ContainerClassSetFocusChildFieldCallback,
        ContainerClassSetFocusChildFieldCallback,
        dynamic_ContainerClassSetFocusChildFieldCallback,
        genClosure_ContainerClassSetFocusChildFieldCallback,
        mk_ContainerClassSetFocusChildFieldCallback,
        noContainerClassSetFocusChildFieldCallback,
        wrap_ContainerClassSetFocusChildFieldCallback,

    -- ** EntryCompletionMatchFunc #signal:EntryCompletionMatchFunc#

        C_EntryCompletionMatchFunc              ,
        EntryCompletionMatchFunc                ,
        EntryCompletionMatchFunc_WithClosures   ,
        drop_closures_EntryCompletionMatchFunc  ,
        dynamic_EntryCompletionMatchFunc        ,
        genClosure_EntryCompletionMatchFunc     ,
        mk_EntryCompletionMatchFunc             ,
        noEntryCompletionMatchFunc              ,
        noEntryCompletionMatchFunc_WithClosures ,
        wrap_EntryCompletionMatchFunc           ,

    -- ** FileFilterFunc #signal:FileFilterFunc#

        C_FileFilterFunc                        ,
        FileFilterFunc                          ,
        FileFilterFunc_WithClosures             ,
        drop_closures_FileFilterFunc            ,
        dynamic_FileFilterFunc                  ,
        genClosure_FileFilterFunc               ,
        mk_FileFilterFunc                       ,
        noFileFilterFunc                        ,
        noFileFilterFunc_WithClosures           ,
        wrap_FileFilterFunc                     ,

    -- ** FlowBoxCreateWidgetFunc #signal:FlowBoxCreateWidgetFunc#

        C_FlowBoxCreateWidgetFunc               ,
        FlowBoxCreateWidgetFunc                 ,
        FlowBoxCreateWidgetFunc_WithClosures    ,
        drop_closures_FlowBoxCreateWidgetFunc   ,
        dynamic_FlowBoxCreateWidgetFunc         ,
        genClosure_FlowBoxCreateWidgetFunc      ,
        mk_FlowBoxCreateWidgetFunc              ,
        noFlowBoxCreateWidgetFunc               ,
        noFlowBoxCreateWidgetFunc_WithClosures  ,
        wrap_FlowBoxCreateWidgetFunc            ,

    -- ** FlowBoxFilterFunc #signal:FlowBoxFilterFunc#

        C_FlowBoxFilterFunc                     ,
        FlowBoxFilterFunc                       ,
        FlowBoxFilterFunc_WithClosures          ,
        drop_closures_FlowBoxFilterFunc         ,
        dynamic_FlowBoxFilterFunc               ,
        genClosure_FlowBoxFilterFunc            ,
        mk_FlowBoxFilterFunc                    ,
        noFlowBoxFilterFunc                     ,
        noFlowBoxFilterFunc_WithClosures        ,
        wrap_FlowBoxFilterFunc                  ,

    -- ** FlowBoxForeachFunc #signal:FlowBoxForeachFunc#

        C_FlowBoxForeachFunc                    ,
        FlowBoxForeachFunc                      ,
        FlowBoxForeachFunc_WithClosures         ,
        drop_closures_FlowBoxForeachFunc        ,
        dynamic_FlowBoxForeachFunc              ,
        genClosure_FlowBoxForeachFunc           ,
        mk_FlowBoxForeachFunc                   ,
        noFlowBoxForeachFunc                    ,
        noFlowBoxForeachFunc_WithClosures       ,
        wrap_FlowBoxForeachFunc                 ,

    -- ** FlowBoxSortFunc #signal:FlowBoxSortFunc#

        C_FlowBoxSortFunc                       ,
        FlowBoxSortFunc                         ,
        FlowBoxSortFunc_WithClosures            ,
        drop_closures_FlowBoxSortFunc           ,
        dynamic_FlowBoxSortFunc                 ,
        genClosure_FlowBoxSortFunc              ,
        mk_FlowBoxSortFunc                      ,
        noFlowBoxSortFunc                       ,
        noFlowBoxSortFunc_WithClosures          ,
        wrap_FlowBoxSortFunc                    ,

    -- ** FontFilterFunc #signal:FontFilterFunc#

        C_FontFilterFunc                        ,
        FontFilterFunc                          ,
        FontFilterFunc_WithClosures             ,
        drop_closures_FontFilterFunc            ,
        dynamic_FontFilterFunc                  ,
        genClosure_FontFilterFunc               ,
        mk_FontFilterFunc                       ,
        noFontFilterFunc                        ,
        noFontFilterFunc_WithClosures           ,
        wrap_FontFilterFunc                     ,

    -- ** IconViewForeachFunc #signal:IconViewForeachFunc#

        C_IconViewForeachFunc                   ,
        IconViewForeachFunc                     ,
        IconViewForeachFunc_WithClosures        ,
        drop_closures_IconViewForeachFunc       ,
        dynamic_IconViewForeachFunc             ,
        genClosure_IconViewForeachFunc          ,
        mk_IconViewForeachFunc                  ,
        noIconViewForeachFunc                   ,
        noIconViewForeachFunc_WithClosures      ,
        wrap_IconViewForeachFunc                ,

    -- ** KeySnoopFunc #signal:KeySnoopFunc#

        C_KeySnoopFunc                          ,
        KeySnoopFunc                            ,
        KeySnoopFunc_WithClosures               ,
        drop_closures_KeySnoopFunc              ,
        dynamic_KeySnoopFunc                    ,
        genClosure_KeySnoopFunc                 ,
        mk_KeySnoopFunc                         ,
        noKeySnoopFunc                          ,
        noKeySnoopFunc_WithClosures             ,
        wrap_KeySnoopFunc                       ,

    -- ** ListBoxCreateWidgetFunc #signal:ListBoxCreateWidgetFunc#

        C_ListBoxCreateWidgetFunc               ,
        ListBoxCreateWidgetFunc                 ,
        ListBoxCreateWidgetFunc_WithClosures    ,
        drop_closures_ListBoxCreateWidgetFunc   ,
        dynamic_ListBoxCreateWidgetFunc         ,
        genClosure_ListBoxCreateWidgetFunc      ,
        mk_ListBoxCreateWidgetFunc              ,
        noListBoxCreateWidgetFunc               ,
        noListBoxCreateWidgetFunc_WithClosures  ,
        wrap_ListBoxCreateWidgetFunc            ,

    -- ** ListBoxFilterFunc #signal:ListBoxFilterFunc#

        C_ListBoxFilterFunc                     ,
        ListBoxFilterFunc                       ,
        ListBoxFilterFunc_WithClosures          ,
        drop_closures_ListBoxFilterFunc         ,
        dynamic_ListBoxFilterFunc               ,
        genClosure_ListBoxFilterFunc            ,
        mk_ListBoxFilterFunc                    ,
        noListBoxFilterFunc                     ,
        noListBoxFilterFunc_WithClosures        ,
        wrap_ListBoxFilterFunc                  ,

    -- ** ListBoxForeachFunc #signal:ListBoxForeachFunc#

        C_ListBoxForeachFunc                    ,
        ListBoxForeachFunc                      ,
        ListBoxForeachFunc_WithClosures         ,
        drop_closures_ListBoxForeachFunc        ,
        dynamic_ListBoxForeachFunc              ,
        genClosure_ListBoxForeachFunc           ,
        mk_ListBoxForeachFunc                   ,
        noListBoxForeachFunc                    ,
        noListBoxForeachFunc_WithClosures       ,
        wrap_ListBoxForeachFunc                 ,

    -- ** ListBoxSortFunc #signal:ListBoxSortFunc#

        C_ListBoxSortFunc                       ,
        ListBoxSortFunc                         ,
        ListBoxSortFunc_WithClosures            ,
        drop_closures_ListBoxSortFunc           ,
        dynamic_ListBoxSortFunc                 ,
        genClosure_ListBoxSortFunc              ,
        mk_ListBoxSortFunc                      ,
        noListBoxSortFunc                       ,
        noListBoxSortFunc_WithClosures          ,
        wrap_ListBoxSortFunc                    ,

    -- ** ListBoxUpdateHeaderFunc #signal:ListBoxUpdateHeaderFunc#

        C_ListBoxUpdateHeaderFunc               ,
        ListBoxUpdateHeaderFunc                 ,
        ListBoxUpdateHeaderFunc_WithClosures    ,
        drop_closures_ListBoxUpdateHeaderFunc   ,
        dynamic_ListBoxUpdateHeaderFunc         ,
        genClosure_ListBoxUpdateHeaderFunc      ,
        mk_ListBoxUpdateHeaderFunc              ,
        noListBoxUpdateHeaderFunc               ,
        noListBoxUpdateHeaderFunc_WithClosures  ,
        wrap_ListBoxUpdateHeaderFunc            ,

    -- ** MenuDetachFunc #signal:MenuDetachFunc#

        C_MenuDetachFunc                        ,
        MenuDetachFunc                          ,
        dynamic_MenuDetachFunc                  ,
        genClosure_MenuDetachFunc               ,
        mk_MenuDetachFunc                       ,
        noMenuDetachFunc                        ,
        wrap_MenuDetachFunc                     ,

    -- ** MenuPositionFunc #signal:MenuPositionFunc#

        C_MenuPositionFunc                      ,
        MenuPositionFunc                        ,
        MenuPositionFunc_WithClosures           ,
        drop_closures_MenuPositionFunc          ,
        dynamic_MenuPositionFunc                ,
        genClosure_MenuPositionFunc             ,
        mk_MenuPositionFunc                     ,
        noMenuPositionFunc                      ,
        noMenuPositionFunc_WithClosures         ,
        wrap_MenuPositionFunc                   ,

    -- ** ModuleDisplayInitFunc #signal:ModuleDisplayInitFunc#

        C_ModuleDisplayInitFunc                 ,
        ModuleDisplayInitFunc                   ,
        dynamic_ModuleDisplayInitFunc           ,
        genClosure_ModuleDisplayInitFunc        ,
        mk_ModuleDisplayInitFunc                ,
        noModuleDisplayInitFunc                 ,
        wrap_ModuleDisplayInitFunc              ,

    -- ** ModuleInitFunc #signal:ModuleInitFunc#

        C_ModuleInitFunc                        ,
        ModuleInitFunc                          ,
        dynamic_ModuleInitFunc                  ,
        genClosure_ModuleInitFunc               ,
        mk_ModuleInitFunc                       ,
        noModuleInitFunc                        ,
        wrap_ModuleInitFunc                     ,

    -- ** PageSetupDoneFunc #signal:PageSetupDoneFunc#

        C_PageSetupDoneFunc                     ,
        PageSetupDoneFunc                       ,
        PageSetupDoneFunc_WithClosures          ,
        drop_closures_PageSetupDoneFunc         ,
        dynamic_PageSetupDoneFunc               ,
        genClosure_PageSetupDoneFunc            ,
        mk_PageSetupDoneFunc                    ,
        noPageSetupDoneFunc                     ,
        noPageSetupDoneFunc_WithClosures        ,
        wrap_PageSetupDoneFunc                  ,

    -- ** PrintSettingsFunc #signal:PrintSettingsFunc#

        C_PrintSettingsFunc                     ,
        PrintSettingsFunc                       ,
        PrintSettingsFunc_WithClosures          ,
        drop_closures_PrintSettingsFunc         ,
        dynamic_PrintSettingsFunc               ,
        genClosure_PrintSettingsFunc            ,
        mk_PrintSettingsFunc                    ,
        noPrintSettingsFunc                     ,
        noPrintSettingsFunc_WithClosures        ,
        wrap_PrintSettingsFunc                  ,

    -- ** RcPropertyParser #signal:RcPropertyParser#

        C_RcPropertyParser                      ,
        RcPropertyParser                        ,
        dynamic_RcPropertyParser                ,
        genClosure_RcPropertyParser             ,
        mk_RcPropertyParser                     ,
        noRcPropertyParser                      ,
        wrap_RcPropertyParser                   ,

    -- ** RecentFilterFunc #signal:RecentFilterFunc#

        C_RecentFilterFunc                      ,
        RecentFilterFunc                        ,
        RecentFilterFunc_WithClosures           ,
        drop_closures_RecentFilterFunc          ,
        dynamic_RecentFilterFunc                ,
        genClosure_RecentFilterFunc             ,
        mk_RecentFilterFunc                     ,
        noRecentFilterFunc                      ,
        noRecentFilterFunc_WithClosures         ,
        wrap_RecentFilterFunc                   ,

    -- ** RecentSortFunc #signal:RecentSortFunc#

        C_RecentSortFunc                        ,
        RecentSortFunc                          ,
        RecentSortFunc_WithClosures             ,
        drop_closures_RecentSortFunc            ,
        dynamic_RecentSortFunc                  ,
        genClosure_RecentSortFunc               ,
        mk_RecentSortFunc                       ,
        noRecentSortFunc                        ,
        noRecentSortFunc_WithClosures           ,
        wrap_RecentSortFunc                     ,

    -- ** StylePropertyParser #signal:StylePropertyParser#

        C_StylePropertyParser                   ,
        StylePropertyParser                     ,
        dynamic_StylePropertyParser             ,
        mk_StylePropertyParser                  ,
        noStylePropertyParser                   ,

    -- ** TextBufferDeserializeFunc #signal:TextBufferDeserializeFunc#

        C_TextBufferDeserializeFunc             ,
        TextBufferDeserializeFunc               ,
        TextBufferDeserializeFunc_WithClosures  ,
        drop_closures_TextBufferDeserializeFunc ,
        dynamic_TextBufferDeserializeFunc       ,
        mk_TextBufferDeserializeFunc            ,
        noTextBufferDeserializeFunc             ,
        noTextBufferDeserializeFunc_WithClosures,

    -- ** TextBufferSerializeFunc #signal:TextBufferSerializeFunc#

        C_TextBufferSerializeFunc               ,
        TextBufferSerializeFunc                 ,
        TextBufferSerializeFunc_WithClosures    ,
        drop_closures_TextBufferSerializeFunc   ,
        dynamic_TextBufferSerializeFunc         ,
        genClosure_TextBufferSerializeFunc      ,
        mk_TextBufferSerializeFunc              ,
        noTextBufferSerializeFunc               ,
        noTextBufferSerializeFunc_WithClosures  ,
        wrap_TextBufferSerializeFunc            ,

    -- ** TextCharPredicate #signal:TextCharPredicate#

        C_TextCharPredicate                     ,
        TextCharPredicate                       ,
        TextCharPredicate_WithClosures          ,
        drop_closures_TextCharPredicate         ,
        dynamic_TextCharPredicate               ,
        genClosure_TextCharPredicate            ,
        mk_TextCharPredicate                    ,
        noTextCharPredicate                     ,
        noTextCharPredicate_WithClosures        ,
        wrap_TextCharPredicate                  ,

    -- ** TextTagTableForeach #signal:TextTagTableForeach#

        C_TextTagTableForeach                   ,
        TextTagTableForeach                     ,
        TextTagTableForeach_WithClosures        ,
        drop_closures_TextTagTableForeach       ,
        dynamic_TextTagTableForeach             ,
        genClosure_TextTagTableForeach          ,
        mk_TextTagTableForeach                  ,
        noTextTagTableForeach                   ,
        noTextTagTableForeach_WithClosures      ,
        wrap_TextTagTableForeach                ,

    -- ** TickCallback #signal:TickCallback#

        C_TickCallback                          ,
        TickCallback                            ,
        TickCallback_WithClosures               ,
        drop_closures_TickCallback              ,
        dynamic_TickCallback                    ,
        genClosure_TickCallback                 ,
        mk_TickCallback                         ,
        noTickCallback                          ,
        noTickCallback_WithClosures             ,
        wrap_TickCallback                       ,

    -- ** TranslateFunc #signal:TranslateFunc#

        C_TranslateFunc                         ,
        TranslateFunc                           ,
        TranslateFunc_WithClosures              ,
        drop_closures_TranslateFunc             ,
        dynamic_TranslateFunc                   ,
        genClosure_TranslateFunc                ,
        mk_TranslateFunc                        ,
        noTranslateFunc                         ,
        noTranslateFunc_WithClosures            ,
        wrap_TranslateFunc                      ,

    -- ** TreeCellDataFunc #signal:TreeCellDataFunc#

        C_TreeCellDataFunc                      ,
        TreeCellDataFunc                        ,
        TreeCellDataFunc_WithClosures           ,
        drop_closures_TreeCellDataFunc          ,
        dynamic_TreeCellDataFunc                ,
        genClosure_TreeCellDataFunc             ,
        mk_TreeCellDataFunc                     ,
        noTreeCellDataFunc                      ,
        noTreeCellDataFunc_WithClosures         ,
        wrap_TreeCellDataFunc                   ,

    -- ** TreeDestroyCountFunc #signal:TreeDestroyCountFunc#

        C_TreeDestroyCountFunc                  ,
        TreeDestroyCountFunc                    ,
        TreeDestroyCountFunc_WithClosures       ,
        drop_closures_TreeDestroyCountFunc      ,
        dynamic_TreeDestroyCountFunc            ,
        genClosure_TreeDestroyCountFunc         ,
        mk_TreeDestroyCountFunc                 ,
        noTreeDestroyCountFunc                  ,
        noTreeDestroyCountFunc_WithClosures     ,
        wrap_TreeDestroyCountFunc               ,

    -- ** TreeIterCompareFunc #signal:TreeIterCompareFunc#

        C_TreeIterCompareFunc                   ,
        TreeIterCompareFunc                     ,
        TreeIterCompareFunc_WithClosures        ,
        drop_closures_TreeIterCompareFunc       ,
        dynamic_TreeIterCompareFunc             ,
        genClosure_TreeIterCompareFunc          ,
        mk_TreeIterCompareFunc                  ,
        noTreeIterCompareFunc                   ,
        noTreeIterCompareFunc_WithClosures      ,
        wrap_TreeIterCompareFunc                ,

    -- ** TreeModelFilterModifyFunc #signal:TreeModelFilterModifyFunc#

        C_TreeModelFilterModifyFunc             ,
        TreeModelFilterModifyFunc               ,
        TreeModelFilterModifyFunc_WithClosures  ,
        drop_closures_TreeModelFilterModifyFunc ,
        dynamic_TreeModelFilterModifyFunc       ,
        genClosure_TreeModelFilterModifyFunc    ,
        mk_TreeModelFilterModifyFunc            ,
        noTreeModelFilterModifyFunc             ,
        noTreeModelFilterModifyFunc_WithClosures,
        wrap_TreeModelFilterModifyFunc          ,

    -- ** TreeModelFilterVisibleFunc #signal:TreeModelFilterVisibleFunc#

        C_TreeModelFilterVisibleFunc            ,
        TreeModelFilterVisibleFunc              ,
        TreeModelFilterVisibleFunc_WithClosures ,
        drop_closures_TreeModelFilterVisibleFunc,
        dynamic_TreeModelFilterVisibleFunc      ,
        genClosure_TreeModelFilterVisibleFunc   ,
        mk_TreeModelFilterVisibleFunc           ,
        noTreeModelFilterVisibleFunc            ,
        noTreeModelFilterVisibleFunc_WithClosures,
        wrap_TreeModelFilterVisibleFunc         ,

    -- ** TreeModelForeachFunc #signal:TreeModelForeachFunc#

        C_TreeModelForeachFunc                  ,
        TreeModelForeachFunc                    ,
        TreeModelForeachFunc_WithClosures       ,
        drop_closures_TreeModelForeachFunc      ,
        dynamic_TreeModelForeachFunc            ,
        genClosure_TreeModelForeachFunc         ,
        mk_TreeModelForeachFunc                 ,
        noTreeModelForeachFunc                  ,
        noTreeModelForeachFunc_WithClosures     ,
        wrap_TreeModelForeachFunc               ,

    -- ** TreeSelectionForeachFunc #signal:TreeSelectionForeachFunc#

        C_TreeSelectionForeachFunc              ,
        TreeSelectionForeachFunc                ,
        TreeSelectionForeachFunc_WithClosures   ,
        drop_closures_TreeSelectionForeachFunc  ,
        dynamic_TreeSelectionForeachFunc        ,
        genClosure_TreeSelectionForeachFunc     ,
        mk_TreeSelectionForeachFunc             ,
        noTreeSelectionForeachFunc              ,
        noTreeSelectionForeachFunc_WithClosures ,
        wrap_TreeSelectionForeachFunc           ,

    -- ** TreeSelectionFunc #signal:TreeSelectionFunc#

        C_TreeSelectionFunc                     ,
        TreeSelectionFunc                       ,
        TreeSelectionFunc_WithClosures          ,
        drop_closures_TreeSelectionFunc         ,
        dynamic_TreeSelectionFunc               ,
        genClosure_TreeSelectionFunc            ,
        mk_TreeSelectionFunc                    ,
        noTreeSelectionFunc                     ,
        noTreeSelectionFunc_WithClosures        ,
        wrap_TreeSelectionFunc                  ,

    -- ** TreeViewColumnDropFunc #signal:TreeViewColumnDropFunc#

        C_TreeViewColumnDropFunc                ,
        TreeViewColumnDropFunc                  ,
        TreeViewColumnDropFunc_WithClosures     ,
        drop_closures_TreeViewColumnDropFunc    ,
        dynamic_TreeViewColumnDropFunc          ,
        genClosure_TreeViewColumnDropFunc       ,
        mk_TreeViewColumnDropFunc               ,
        noTreeViewColumnDropFunc                ,
        noTreeViewColumnDropFunc_WithClosures   ,
        wrap_TreeViewColumnDropFunc             ,

    -- ** TreeViewMappingFunc #signal:TreeViewMappingFunc#

        C_TreeViewMappingFunc                   ,
        TreeViewMappingFunc                     ,
        TreeViewMappingFunc_WithClosures        ,
        drop_closures_TreeViewMappingFunc       ,
        dynamic_TreeViewMappingFunc             ,
        genClosure_TreeViewMappingFunc          ,
        mk_TreeViewMappingFunc                  ,
        noTreeViewMappingFunc                   ,
        noTreeViewMappingFunc_WithClosures      ,
        wrap_TreeViewMappingFunc                ,

    -- ** TreeViewRowSeparatorFunc #signal:TreeViewRowSeparatorFunc#

        C_TreeViewRowSeparatorFunc              ,
        TreeViewRowSeparatorFunc                ,
        TreeViewRowSeparatorFunc_WithClosures   ,
        drop_closures_TreeViewRowSeparatorFunc  ,
        dynamic_TreeViewRowSeparatorFunc        ,
        genClosure_TreeViewRowSeparatorFunc     ,
        mk_TreeViewRowSeparatorFunc             ,
        noTreeViewRowSeparatorFunc              ,
        noTreeViewRowSeparatorFunc_WithClosures ,
        wrap_TreeViewRowSeparatorFunc           ,

    -- ** TreeViewSearchEqualFunc #signal:TreeViewSearchEqualFunc#

        C_TreeViewSearchEqualFunc               ,
        TreeViewSearchEqualFunc                 ,
        TreeViewSearchEqualFunc_WithClosures    ,
        drop_closures_TreeViewSearchEqualFunc   ,
        dynamic_TreeViewSearchEqualFunc         ,
        genClosure_TreeViewSearchEqualFunc      ,
        mk_TreeViewSearchEqualFunc              ,
        noTreeViewSearchEqualFunc               ,
        noTreeViewSearchEqualFunc_WithClosures  ,
        wrap_TreeViewSearchEqualFunc            ,

    -- ** TreeViewSearchPositionFunc #signal:TreeViewSearchPositionFunc#

        C_TreeViewSearchPositionFunc            ,
        TreeViewSearchPositionFunc              ,
        TreeViewSearchPositionFunc_WithClosures ,
        drop_closures_TreeViewSearchPositionFunc,
        dynamic_TreeViewSearchPositionFunc      ,
        genClosure_TreeViewSearchPositionFunc   ,
        mk_TreeViewSearchPositionFunc           ,
        noTreeViewSearchPositionFunc            ,
        noTreeViewSearchPositionFunc_WithClosures,
        wrap_TreeViewSearchPositionFunc         ,

    -- ** WidgetClassAdjustBaselineAllocationFieldCallback #signal:WidgetClassAdjustBaselineAllocationFieldCallback#

        C_WidgetClassAdjustBaselineAllocationFieldCallback,
        WidgetClassAdjustBaselineAllocationFieldCallback,
        dynamic_WidgetClassAdjustBaselineAllocationFieldCallback,
        genClosure_WidgetClassAdjustBaselineAllocationFieldCallback,
        mk_WidgetClassAdjustBaselineAllocationFieldCallback,
        noWidgetClassAdjustBaselineAllocationFieldCallback,
        wrap_WidgetClassAdjustBaselineAllocationFieldCallback,

    -- ** WidgetClassAdjustBaselineRequestFieldCallback #signal:WidgetClassAdjustBaselineRequestFieldCallback#

        C_WidgetClassAdjustBaselineRequestFieldCallback,
        WidgetClassAdjustBaselineRequestFieldCallback,
        dynamic_WidgetClassAdjustBaselineRequestFieldCallback,
        genClosure_WidgetClassAdjustBaselineRequestFieldCallback,
        mk_WidgetClassAdjustBaselineRequestFieldCallback,
        noWidgetClassAdjustBaselineRequestFieldCallback,
        wrap_WidgetClassAdjustBaselineRequestFieldCallback,

    -- ** WidgetClassAdjustSizeAllocationFieldCallback #signal:WidgetClassAdjustSizeAllocationFieldCallback#

        C_WidgetClassAdjustSizeAllocationFieldCallback,
        WidgetClassAdjustSizeAllocationFieldCallback,
        dynamic_WidgetClassAdjustSizeAllocationFieldCallback,
        genClosure_WidgetClassAdjustSizeAllocationFieldCallback,
        mk_WidgetClassAdjustSizeAllocationFieldCallback,
        noWidgetClassAdjustSizeAllocationFieldCallback,
        wrap_WidgetClassAdjustSizeAllocationFieldCallback,

    -- ** WidgetClassAdjustSizeRequestFieldCallback #signal:WidgetClassAdjustSizeRequestFieldCallback#

        C_WidgetClassAdjustSizeRequestFieldCallback,
        WidgetClassAdjustSizeRequestFieldCallback,
        dynamic_WidgetClassAdjustSizeRequestFieldCallback,
        genClosure_WidgetClassAdjustSizeRequestFieldCallback,
        mk_WidgetClassAdjustSizeRequestFieldCallback,
        noWidgetClassAdjustSizeRequestFieldCallback,
        wrap_WidgetClassAdjustSizeRequestFieldCallback,

    -- ** WidgetClassButtonPressEventFieldCallback #signal:WidgetClassButtonPressEventFieldCallback#

        C_WidgetClassButtonPressEventFieldCallback,
        WidgetClassButtonPressEventFieldCallback,
        dynamic_WidgetClassButtonPressEventFieldCallback,
        genClosure_WidgetClassButtonPressEventFieldCallback,
        mk_WidgetClassButtonPressEventFieldCallback,
        noWidgetClassButtonPressEventFieldCallback,
        wrap_WidgetClassButtonPressEventFieldCallback,

    -- ** WidgetClassButtonReleaseEventFieldCallback #signal:WidgetClassButtonReleaseEventFieldCallback#

        C_WidgetClassButtonReleaseEventFieldCallback,
        WidgetClassButtonReleaseEventFieldCallback,
        dynamic_WidgetClassButtonReleaseEventFieldCallback,
        genClosure_WidgetClassButtonReleaseEventFieldCallback,
        mk_WidgetClassButtonReleaseEventFieldCallback,
        noWidgetClassButtonReleaseEventFieldCallback,
        wrap_WidgetClassButtonReleaseEventFieldCallback,

    -- ** WidgetClassCanActivateAccelFieldCallback #signal:WidgetClassCanActivateAccelFieldCallback#

        C_WidgetClassCanActivateAccelFieldCallback,
        WidgetClassCanActivateAccelFieldCallback,
        dynamic_WidgetClassCanActivateAccelFieldCallback,
        genClosure_WidgetClassCanActivateAccelFieldCallback,
        mk_WidgetClassCanActivateAccelFieldCallback,
        noWidgetClassCanActivateAccelFieldCallback,
        wrap_WidgetClassCanActivateAccelFieldCallback,

    -- ** WidgetClassChildNotifyFieldCallback #signal:WidgetClassChildNotifyFieldCallback#

        C_WidgetClassChildNotifyFieldCallback   ,
        WidgetClassChildNotifyFieldCallback     ,
        dynamic_WidgetClassChildNotifyFieldCallback,
        genClosure_WidgetClassChildNotifyFieldCallback,
        mk_WidgetClassChildNotifyFieldCallback  ,
        noWidgetClassChildNotifyFieldCallback   ,
        wrap_WidgetClassChildNotifyFieldCallback,

    -- ** WidgetClassCompositedChangedFieldCallback #signal:WidgetClassCompositedChangedFieldCallback#

        C_WidgetClassCompositedChangedFieldCallback,
        WidgetClassCompositedChangedFieldCallback,
        dynamic_WidgetClassCompositedChangedFieldCallback,
        genClosure_WidgetClassCompositedChangedFieldCallback,
        mk_WidgetClassCompositedChangedFieldCallback,
        noWidgetClassCompositedChangedFieldCallback,
        wrap_WidgetClassCompositedChangedFieldCallback,

    -- ** WidgetClassComputeExpandFieldCallback #signal:WidgetClassComputeExpandFieldCallback#

        C_WidgetClassComputeExpandFieldCallback ,
        WidgetClassComputeExpandFieldCallback   ,
        dynamic_WidgetClassComputeExpandFieldCallback,
        genClosure_WidgetClassComputeExpandFieldCallback,
        mk_WidgetClassComputeExpandFieldCallback,
        noWidgetClassComputeExpandFieldCallback ,
        wrap_WidgetClassComputeExpandFieldCallback,

    -- ** WidgetClassConfigureEventFieldCallback #signal:WidgetClassConfigureEventFieldCallback#

        C_WidgetClassConfigureEventFieldCallback,
        WidgetClassConfigureEventFieldCallback  ,
        dynamic_WidgetClassConfigureEventFieldCallback,
        genClosure_WidgetClassConfigureEventFieldCallback,
        mk_WidgetClassConfigureEventFieldCallback,
        noWidgetClassConfigureEventFieldCallback,
        wrap_WidgetClassConfigureEventFieldCallback,

    -- ** WidgetClassDamageEventFieldCallback #signal:WidgetClassDamageEventFieldCallback#

        C_WidgetClassDamageEventFieldCallback   ,
        WidgetClassDamageEventFieldCallback     ,
        dynamic_WidgetClassDamageEventFieldCallback,
        genClosure_WidgetClassDamageEventFieldCallback,
        mk_WidgetClassDamageEventFieldCallback  ,
        noWidgetClassDamageEventFieldCallback   ,
        wrap_WidgetClassDamageEventFieldCallback,

    -- ** WidgetClassDeleteEventFieldCallback #signal:WidgetClassDeleteEventFieldCallback#

        C_WidgetClassDeleteEventFieldCallback   ,
        WidgetClassDeleteEventFieldCallback     ,
        dynamic_WidgetClassDeleteEventFieldCallback,
        genClosure_WidgetClassDeleteEventFieldCallback,
        mk_WidgetClassDeleteEventFieldCallback  ,
        noWidgetClassDeleteEventFieldCallback   ,
        wrap_WidgetClassDeleteEventFieldCallback,

    -- ** WidgetClassDestroyEventFieldCallback #signal:WidgetClassDestroyEventFieldCallback#

        C_WidgetClassDestroyEventFieldCallback  ,
        WidgetClassDestroyEventFieldCallback    ,
        dynamic_WidgetClassDestroyEventFieldCallback,
        genClosure_WidgetClassDestroyEventFieldCallback,
        mk_WidgetClassDestroyEventFieldCallback ,
        noWidgetClassDestroyEventFieldCallback  ,
        wrap_WidgetClassDestroyEventFieldCallback,

    -- ** WidgetClassDestroyFieldCallback #signal:WidgetClassDestroyFieldCallback#

        C_WidgetClassDestroyFieldCallback       ,
        WidgetClassDestroyFieldCallback         ,
        dynamic_WidgetClassDestroyFieldCallback ,
        genClosure_WidgetClassDestroyFieldCallback,
        mk_WidgetClassDestroyFieldCallback      ,
        noWidgetClassDestroyFieldCallback       ,
        wrap_WidgetClassDestroyFieldCallback    ,

    -- ** WidgetClassDirectionChangedFieldCallback #signal:WidgetClassDirectionChangedFieldCallback#

        C_WidgetClassDirectionChangedFieldCallback,
        WidgetClassDirectionChangedFieldCallback,
        dynamic_WidgetClassDirectionChangedFieldCallback,
        genClosure_WidgetClassDirectionChangedFieldCallback,
        mk_WidgetClassDirectionChangedFieldCallback,
        noWidgetClassDirectionChangedFieldCallback,
        wrap_WidgetClassDirectionChangedFieldCallback,

    -- ** WidgetClassDispatchChildPropertiesChangedFieldCallback #signal:WidgetClassDispatchChildPropertiesChangedFieldCallback#

        C_WidgetClassDispatchChildPropertiesChangedFieldCallback,
        WidgetClassDispatchChildPropertiesChangedFieldCallback,
        dynamic_WidgetClassDispatchChildPropertiesChangedFieldCallback,
        genClosure_WidgetClassDispatchChildPropertiesChangedFieldCallback,
        mk_WidgetClassDispatchChildPropertiesChangedFieldCallback,
        noWidgetClassDispatchChildPropertiesChangedFieldCallback,
        wrap_WidgetClassDispatchChildPropertiesChangedFieldCallback,

    -- ** WidgetClassDragBeginFieldCallback #signal:WidgetClassDragBeginFieldCallback#

        C_WidgetClassDragBeginFieldCallback     ,
        WidgetClassDragBeginFieldCallback       ,
        dynamic_WidgetClassDragBeginFieldCallback,
        genClosure_WidgetClassDragBeginFieldCallback,
        mk_WidgetClassDragBeginFieldCallback    ,
        noWidgetClassDragBeginFieldCallback     ,
        wrap_WidgetClassDragBeginFieldCallback  ,

    -- ** WidgetClassDragDataDeleteFieldCallback #signal:WidgetClassDragDataDeleteFieldCallback#

        C_WidgetClassDragDataDeleteFieldCallback,
        WidgetClassDragDataDeleteFieldCallback  ,
        dynamic_WidgetClassDragDataDeleteFieldCallback,
        genClosure_WidgetClassDragDataDeleteFieldCallback,
        mk_WidgetClassDragDataDeleteFieldCallback,
        noWidgetClassDragDataDeleteFieldCallback,
        wrap_WidgetClassDragDataDeleteFieldCallback,

    -- ** WidgetClassDragDataGetFieldCallback #signal:WidgetClassDragDataGetFieldCallback#

        C_WidgetClassDragDataGetFieldCallback   ,
        WidgetClassDragDataGetFieldCallback     ,
        dynamic_WidgetClassDragDataGetFieldCallback,
        genClosure_WidgetClassDragDataGetFieldCallback,
        mk_WidgetClassDragDataGetFieldCallback  ,
        noWidgetClassDragDataGetFieldCallback   ,
        wrap_WidgetClassDragDataGetFieldCallback,

    -- ** WidgetClassDragDataReceivedFieldCallback #signal:WidgetClassDragDataReceivedFieldCallback#

        C_WidgetClassDragDataReceivedFieldCallback,
        WidgetClassDragDataReceivedFieldCallback,
        dynamic_WidgetClassDragDataReceivedFieldCallback,
        genClosure_WidgetClassDragDataReceivedFieldCallback,
        mk_WidgetClassDragDataReceivedFieldCallback,
        noWidgetClassDragDataReceivedFieldCallback,
        wrap_WidgetClassDragDataReceivedFieldCallback,

    -- ** WidgetClassDragDropFieldCallback #signal:WidgetClassDragDropFieldCallback#

        C_WidgetClassDragDropFieldCallback      ,
        WidgetClassDragDropFieldCallback        ,
        dynamic_WidgetClassDragDropFieldCallback,
        genClosure_WidgetClassDragDropFieldCallback,
        mk_WidgetClassDragDropFieldCallback     ,
        noWidgetClassDragDropFieldCallback      ,
        wrap_WidgetClassDragDropFieldCallback   ,

    -- ** WidgetClassDragEndFieldCallback #signal:WidgetClassDragEndFieldCallback#

        C_WidgetClassDragEndFieldCallback       ,
        WidgetClassDragEndFieldCallback         ,
        dynamic_WidgetClassDragEndFieldCallback ,
        genClosure_WidgetClassDragEndFieldCallback,
        mk_WidgetClassDragEndFieldCallback      ,
        noWidgetClassDragEndFieldCallback       ,
        wrap_WidgetClassDragEndFieldCallback    ,

    -- ** WidgetClassDragFailedFieldCallback #signal:WidgetClassDragFailedFieldCallback#

        C_WidgetClassDragFailedFieldCallback    ,
        WidgetClassDragFailedFieldCallback      ,
        dynamic_WidgetClassDragFailedFieldCallback,
        genClosure_WidgetClassDragFailedFieldCallback,
        mk_WidgetClassDragFailedFieldCallback   ,
        noWidgetClassDragFailedFieldCallback    ,
        wrap_WidgetClassDragFailedFieldCallback ,

    -- ** WidgetClassDragLeaveFieldCallback #signal:WidgetClassDragLeaveFieldCallback#

        C_WidgetClassDragLeaveFieldCallback     ,
        WidgetClassDragLeaveFieldCallback       ,
        dynamic_WidgetClassDragLeaveFieldCallback,
        genClosure_WidgetClassDragLeaveFieldCallback,
        mk_WidgetClassDragLeaveFieldCallback    ,
        noWidgetClassDragLeaveFieldCallback     ,
        wrap_WidgetClassDragLeaveFieldCallback  ,

    -- ** WidgetClassDragMotionFieldCallback #signal:WidgetClassDragMotionFieldCallback#

        C_WidgetClassDragMotionFieldCallback    ,
        WidgetClassDragMotionFieldCallback      ,
        dynamic_WidgetClassDragMotionFieldCallback,
        genClosure_WidgetClassDragMotionFieldCallback,
        mk_WidgetClassDragMotionFieldCallback   ,
        noWidgetClassDragMotionFieldCallback    ,
        wrap_WidgetClassDragMotionFieldCallback ,

    -- ** WidgetClassDrawFieldCallback #signal:WidgetClassDrawFieldCallback#

        C_WidgetClassDrawFieldCallback          ,
        WidgetClassDrawFieldCallback            ,
        dynamic_WidgetClassDrawFieldCallback    ,
        genClosure_WidgetClassDrawFieldCallback ,
        mk_WidgetClassDrawFieldCallback         ,
        noWidgetClassDrawFieldCallback          ,
        wrap_WidgetClassDrawFieldCallback       ,

    -- ** WidgetClassEnterNotifyEventFieldCallback #signal:WidgetClassEnterNotifyEventFieldCallback#

        C_WidgetClassEnterNotifyEventFieldCallback,
        WidgetClassEnterNotifyEventFieldCallback,
        dynamic_WidgetClassEnterNotifyEventFieldCallback,
        genClosure_WidgetClassEnterNotifyEventFieldCallback,
        mk_WidgetClassEnterNotifyEventFieldCallback,
        noWidgetClassEnterNotifyEventFieldCallback,
        wrap_WidgetClassEnterNotifyEventFieldCallback,

    -- ** WidgetClassEventFieldCallback #signal:WidgetClassEventFieldCallback#

        C_WidgetClassEventFieldCallback         ,
        WidgetClassEventFieldCallback           ,
        dynamic_WidgetClassEventFieldCallback   ,
        genClosure_WidgetClassEventFieldCallback,
        mk_WidgetClassEventFieldCallback        ,
        noWidgetClassEventFieldCallback         ,
        wrap_WidgetClassEventFieldCallback      ,

    -- ** WidgetClassFocusFieldCallback #signal:WidgetClassFocusFieldCallback#

        C_WidgetClassFocusFieldCallback         ,
        WidgetClassFocusFieldCallback           ,
        dynamic_WidgetClassFocusFieldCallback   ,
        genClosure_WidgetClassFocusFieldCallback,
        mk_WidgetClassFocusFieldCallback        ,
        noWidgetClassFocusFieldCallback         ,
        wrap_WidgetClassFocusFieldCallback      ,

    -- ** WidgetClassFocusInEventFieldCallback #signal:WidgetClassFocusInEventFieldCallback#

        C_WidgetClassFocusInEventFieldCallback  ,
        WidgetClassFocusInEventFieldCallback    ,
        dynamic_WidgetClassFocusInEventFieldCallback,
        genClosure_WidgetClassFocusInEventFieldCallback,
        mk_WidgetClassFocusInEventFieldCallback ,
        noWidgetClassFocusInEventFieldCallback  ,
        wrap_WidgetClassFocusInEventFieldCallback,

    -- ** WidgetClassFocusOutEventFieldCallback #signal:WidgetClassFocusOutEventFieldCallback#

        C_WidgetClassFocusOutEventFieldCallback ,
        WidgetClassFocusOutEventFieldCallback   ,
        dynamic_WidgetClassFocusOutEventFieldCallback,
        genClosure_WidgetClassFocusOutEventFieldCallback,
        mk_WidgetClassFocusOutEventFieldCallback,
        noWidgetClassFocusOutEventFieldCallback ,
        wrap_WidgetClassFocusOutEventFieldCallback,

    -- ** WidgetClassGetAccessibleFieldCallback #signal:WidgetClassGetAccessibleFieldCallback#

        C_WidgetClassGetAccessibleFieldCallback ,
        WidgetClassGetAccessibleFieldCallback   ,
        dynamic_WidgetClassGetAccessibleFieldCallback,
        genClosure_WidgetClassGetAccessibleFieldCallback,
        mk_WidgetClassGetAccessibleFieldCallback,
        noWidgetClassGetAccessibleFieldCallback ,
        wrap_WidgetClassGetAccessibleFieldCallback,

    -- ** WidgetClassGetPreferredHeightAndBaselineForWidthFieldCallback #signal:WidgetClassGetPreferredHeightAndBaselineForWidthFieldCallback#

        C_WidgetClassGetPreferredHeightAndBaselineForWidthFieldCallback,
        WidgetClassGetPreferredHeightAndBaselineForWidthFieldCallback,
        dynamic_WidgetClassGetPreferredHeightAndBaselineForWidthFieldCallback,
        genClosure_WidgetClassGetPreferredHeightAndBaselineForWidthFieldCallback,
        mk_WidgetClassGetPreferredHeightAndBaselineForWidthFieldCallback,
        noWidgetClassGetPreferredHeightAndBaselineForWidthFieldCallback,
        wrap_WidgetClassGetPreferredHeightAndBaselineForWidthFieldCallback,

    -- ** WidgetClassGetPreferredHeightFieldCallback #signal:WidgetClassGetPreferredHeightFieldCallback#

        C_WidgetClassGetPreferredHeightFieldCallback,
        WidgetClassGetPreferredHeightFieldCallback,
        dynamic_WidgetClassGetPreferredHeightFieldCallback,
        genClosure_WidgetClassGetPreferredHeightFieldCallback,
        mk_WidgetClassGetPreferredHeightFieldCallback,
        noWidgetClassGetPreferredHeightFieldCallback,
        wrap_WidgetClassGetPreferredHeightFieldCallback,

    -- ** WidgetClassGetPreferredHeightForWidthFieldCallback #signal:WidgetClassGetPreferredHeightForWidthFieldCallback#

        C_WidgetClassGetPreferredHeightForWidthFieldCallback,
        WidgetClassGetPreferredHeightForWidthFieldCallback,
        dynamic_WidgetClassGetPreferredHeightForWidthFieldCallback,
        genClosure_WidgetClassGetPreferredHeightForWidthFieldCallback,
        mk_WidgetClassGetPreferredHeightForWidthFieldCallback,
        noWidgetClassGetPreferredHeightForWidthFieldCallback,
        wrap_WidgetClassGetPreferredHeightForWidthFieldCallback,

    -- ** WidgetClassGetPreferredWidthFieldCallback #signal:WidgetClassGetPreferredWidthFieldCallback#

        C_WidgetClassGetPreferredWidthFieldCallback,
        WidgetClassGetPreferredWidthFieldCallback,
        dynamic_WidgetClassGetPreferredWidthFieldCallback,
        genClosure_WidgetClassGetPreferredWidthFieldCallback,
        mk_WidgetClassGetPreferredWidthFieldCallback,
        noWidgetClassGetPreferredWidthFieldCallback,
        wrap_WidgetClassGetPreferredWidthFieldCallback,

    -- ** WidgetClassGetPreferredWidthForHeightFieldCallback #signal:WidgetClassGetPreferredWidthForHeightFieldCallback#

        C_WidgetClassGetPreferredWidthForHeightFieldCallback,
        WidgetClassGetPreferredWidthForHeightFieldCallback,
        dynamic_WidgetClassGetPreferredWidthForHeightFieldCallback,
        genClosure_WidgetClassGetPreferredWidthForHeightFieldCallback,
        mk_WidgetClassGetPreferredWidthForHeightFieldCallback,
        noWidgetClassGetPreferredWidthForHeightFieldCallback,
        wrap_WidgetClassGetPreferredWidthForHeightFieldCallback,

    -- ** WidgetClassGetRequestModeFieldCallback #signal:WidgetClassGetRequestModeFieldCallback#

        C_WidgetClassGetRequestModeFieldCallback,
        WidgetClassGetRequestModeFieldCallback  ,
        dynamic_WidgetClassGetRequestModeFieldCallback,
        genClosure_WidgetClassGetRequestModeFieldCallback,
        mk_WidgetClassGetRequestModeFieldCallback,
        noWidgetClassGetRequestModeFieldCallback,
        wrap_WidgetClassGetRequestModeFieldCallback,

    -- ** WidgetClassGrabBrokenEventFieldCallback #signal:WidgetClassGrabBrokenEventFieldCallback#

        C_WidgetClassGrabBrokenEventFieldCallback,
        WidgetClassGrabBrokenEventFieldCallback ,
        dynamic_WidgetClassGrabBrokenEventFieldCallback,
        genClosure_WidgetClassGrabBrokenEventFieldCallback,
        mk_WidgetClassGrabBrokenEventFieldCallback,
        noWidgetClassGrabBrokenEventFieldCallback,
        wrap_WidgetClassGrabBrokenEventFieldCallback,

    -- ** WidgetClassGrabFocusFieldCallback #signal:WidgetClassGrabFocusFieldCallback#

        C_WidgetClassGrabFocusFieldCallback     ,
        WidgetClassGrabFocusFieldCallback       ,
        dynamic_WidgetClassGrabFocusFieldCallback,
        genClosure_WidgetClassGrabFocusFieldCallback,
        mk_WidgetClassGrabFocusFieldCallback    ,
        noWidgetClassGrabFocusFieldCallback     ,
        wrap_WidgetClassGrabFocusFieldCallback  ,

    -- ** WidgetClassGrabNotifyFieldCallback #signal:WidgetClassGrabNotifyFieldCallback#

        C_WidgetClassGrabNotifyFieldCallback    ,
        WidgetClassGrabNotifyFieldCallback      ,
        dynamic_WidgetClassGrabNotifyFieldCallback,
        genClosure_WidgetClassGrabNotifyFieldCallback,
        mk_WidgetClassGrabNotifyFieldCallback   ,
        noWidgetClassGrabNotifyFieldCallback    ,
        wrap_WidgetClassGrabNotifyFieldCallback ,

    -- ** WidgetClassHideFieldCallback #signal:WidgetClassHideFieldCallback#

        C_WidgetClassHideFieldCallback          ,
        WidgetClassHideFieldCallback            ,
        dynamic_WidgetClassHideFieldCallback    ,
        genClosure_WidgetClassHideFieldCallback ,
        mk_WidgetClassHideFieldCallback         ,
        noWidgetClassHideFieldCallback          ,
        wrap_WidgetClassHideFieldCallback       ,

    -- ** WidgetClassHierarchyChangedFieldCallback #signal:WidgetClassHierarchyChangedFieldCallback#

        C_WidgetClassHierarchyChangedFieldCallback,
        WidgetClassHierarchyChangedFieldCallback,
        dynamic_WidgetClassHierarchyChangedFieldCallback,
        genClosure_WidgetClassHierarchyChangedFieldCallback,
        mk_WidgetClassHierarchyChangedFieldCallback,
        noWidgetClassHierarchyChangedFieldCallback,
        wrap_WidgetClassHierarchyChangedFieldCallback,

    -- ** WidgetClassKeyPressEventFieldCallback #signal:WidgetClassKeyPressEventFieldCallback#

        C_WidgetClassKeyPressEventFieldCallback ,
        WidgetClassKeyPressEventFieldCallback   ,
        dynamic_WidgetClassKeyPressEventFieldCallback,
        genClosure_WidgetClassKeyPressEventFieldCallback,
        mk_WidgetClassKeyPressEventFieldCallback,
        noWidgetClassKeyPressEventFieldCallback ,
        wrap_WidgetClassKeyPressEventFieldCallback,

    -- ** WidgetClassKeyReleaseEventFieldCallback #signal:WidgetClassKeyReleaseEventFieldCallback#

        C_WidgetClassKeyReleaseEventFieldCallback,
        WidgetClassKeyReleaseEventFieldCallback ,
        dynamic_WidgetClassKeyReleaseEventFieldCallback,
        genClosure_WidgetClassKeyReleaseEventFieldCallback,
        mk_WidgetClassKeyReleaseEventFieldCallback,
        noWidgetClassKeyReleaseEventFieldCallback,
        wrap_WidgetClassKeyReleaseEventFieldCallback,

    -- ** WidgetClassKeynavFailedFieldCallback #signal:WidgetClassKeynavFailedFieldCallback#

        C_WidgetClassKeynavFailedFieldCallback  ,
        WidgetClassKeynavFailedFieldCallback    ,
        dynamic_WidgetClassKeynavFailedFieldCallback,
        genClosure_WidgetClassKeynavFailedFieldCallback,
        mk_WidgetClassKeynavFailedFieldCallback ,
        noWidgetClassKeynavFailedFieldCallback  ,
        wrap_WidgetClassKeynavFailedFieldCallback,

    -- ** WidgetClassLeaveNotifyEventFieldCallback #signal:WidgetClassLeaveNotifyEventFieldCallback#

        C_WidgetClassLeaveNotifyEventFieldCallback,
        WidgetClassLeaveNotifyEventFieldCallback,
        dynamic_WidgetClassLeaveNotifyEventFieldCallback,
        genClosure_WidgetClassLeaveNotifyEventFieldCallback,
        mk_WidgetClassLeaveNotifyEventFieldCallback,
        noWidgetClassLeaveNotifyEventFieldCallback,
        wrap_WidgetClassLeaveNotifyEventFieldCallback,

    -- ** WidgetClassMapEventFieldCallback #signal:WidgetClassMapEventFieldCallback#

        C_WidgetClassMapEventFieldCallback      ,
        WidgetClassMapEventFieldCallback        ,
        dynamic_WidgetClassMapEventFieldCallback,
        genClosure_WidgetClassMapEventFieldCallback,
        mk_WidgetClassMapEventFieldCallback     ,
        noWidgetClassMapEventFieldCallback      ,
        wrap_WidgetClassMapEventFieldCallback   ,

    -- ** WidgetClassMapFieldCallback #signal:WidgetClassMapFieldCallback#

        C_WidgetClassMapFieldCallback           ,
        WidgetClassMapFieldCallback             ,
        dynamic_WidgetClassMapFieldCallback     ,
        genClosure_WidgetClassMapFieldCallback  ,
        mk_WidgetClassMapFieldCallback          ,
        noWidgetClassMapFieldCallback           ,
        wrap_WidgetClassMapFieldCallback        ,

    -- ** WidgetClassMnemonicActivateFieldCallback #signal:WidgetClassMnemonicActivateFieldCallback#

        C_WidgetClassMnemonicActivateFieldCallback,
        WidgetClassMnemonicActivateFieldCallback,
        dynamic_WidgetClassMnemonicActivateFieldCallback,
        genClosure_WidgetClassMnemonicActivateFieldCallback,
        mk_WidgetClassMnemonicActivateFieldCallback,
        noWidgetClassMnemonicActivateFieldCallback,
        wrap_WidgetClassMnemonicActivateFieldCallback,

    -- ** WidgetClassMotionNotifyEventFieldCallback #signal:WidgetClassMotionNotifyEventFieldCallback#

        C_WidgetClassMotionNotifyEventFieldCallback,
        WidgetClassMotionNotifyEventFieldCallback,
        dynamic_WidgetClassMotionNotifyEventFieldCallback,
        genClosure_WidgetClassMotionNotifyEventFieldCallback,
        mk_WidgetClassMotionNotifyEventFieldCallback,
        noWidgetClassMotionNotifyEventFieldCallback,
        wrap_WidgetClassMotionNotifyEventFieldCallback,

    -- ** WidgetClassMoveFocusFieldCallback #signal:WidgetClassMoveFocusFieldCallback#

        C_WidgetClassMoveFocusFieldCallback     ,
        WidgetClassMoveFocusFieldCallback       ,
        dynamic_WidgetClassMoveFocusFieldCallback,
        genClosure_WidgetClassMoveFocusFieldCallback,
        mk_WidgetClassMoveFocusFieldCallback    ,
        noWidgetClassMoveFocusFieldCallback     ,
        wrap_WidgetClassMoveFocusFieldCallback  ,

    -- ** WidgetClassParentSetFieldCallback #signal:WidgetClassParentSetFieldCallback#

        C_WidgetClassParentSetFieldCallback     ,
        WidgetClassParentSetFieldCallback       ,
        dynamic_WidgetClassParentSetFieldCallback,
        genClosure_WidgetClassParentSetFieldCallback,
        mk_WidgetClassParentSetFieldCallback    ,
        noWidgetClassParentSetFieldCallback     ,
        wrap_WidgetClassParentSetFieldCallback  ,

    -- ** WidgetClassPopupMenuFieldCallback #signal:WidgetClassPopupMenuFieldCallback#

        C_WidgetClassPopupMenuFieldCallback     ,
        WidgetClassPopupMenuFieldCallback       ,
        dynamic_WidgetClassPopupMenuFieldCallback,
        genClosure_WidgetClassPopupMenuFieldCallback,
        mk_WidgetClassPopupMenuFieldCallback    ,
        noWidgetClassPopupMenuFieldCallback     ,
        wrap_WidgetClassPopupMenuFieldCallback  ,

    -- ** WidgetClassPropertyNotifyEventFieldCallback #signal:WidgetClassPropertyNotifyEventFieldCallback#

        C_WidgetClassPropertyNotifyEventFieldCallback,
        WidgetClassPropertyNotifyEventFieldCallback,
        dynamic_WidgetClassPropertyNotifyEventFieldCallback,
        genClosure_WidgetClassPropertyNotifyEventFieldCallback,
        mk_WidgetClassPropertyNotifyEventFieldCallback,
        noWidgetClassPropertyNotifyEventFieldCallback,
        wrap_WidgetClassPropertyNotifyEventFieldCallback,

    -- ** WidgetClassProximityInEventFieldCallback #signal:WidgetClassProximityInEventFieldCallback#

        C_WidgetClassProximityInEventFieldCallback,
        WidgetClassProximityInEventFieldCallback,
        dynamic_WidgetClassProximityInEventFieldCallback,
        genClosure_WidgetClassProximityInEventFieldCallback,
        mk_WidgetClassProximityInEventFieldCallback,
        noWidgetClassProximityInEventFieldCallback,
        wrap_WidgetClassProximityInEventFieldCallback,

    -- ** WidgetClassProximityOutEventFieldCallback #signal:WidgetClassProximityOutEventFieldCallback#

        C_WidgetClassProximityOutEventFieldCallback,
        WidgetClassProximityOutEventFieldCallback,
        dynamic_WidgetClassProximityOutEventFieldCallback,
        genClosure_WidgetClassProximityOutEventFieldCallback,
        mk_WidgetClassProximityOutEventFieldCallback,
        noWidgetClassProximityOutEventFieldCallback,
        wrap_WidgetClassProximityOutEventFieldCallback,

    -- ** WidgetClassQueryTooltipFieldCallback #signal:WidgetClassQueryTooltipFieldCallback#

        C_WidgetClassQueryTooltipFieldCallback  ,
        WidgetClassQueryTooltipFieldCallback    ,
        dynamic_WidgetClassQueryTooltipFieldCallback,
        genClosure_WidgetClassQueryTooltipFieldCallback,
        mk_WidgetClassQueryTooltipFieldCallback ,
        noWidgetClassQueryTooltipFieldCallback  ,
        wrap_WidgetClassQueryTooltipFieldCallback,

    -- ** WidgetClassQueueDrawRegionFieldCallback #signal:WidgetClassQueueDrawRegionFieldCallback#

        C_WidgetClassQueueDrawRegionFieldCallback,
        WidgetClassQueueDrawRegionFieldCallback ,
        dynamic_WidgetClassQueueDrawRegionFieldCallback,
        genClosure_WidgetClassQueueDrawRegionFieldCallback,
        mk_WidgetClassQueueDrawRegionFieldCallback,
        noWidgetClassQueueDrawRegionFieldCallback,
        wrap_WidgetClassQueueDrawRegionFieldCallback,

    -- ** WidgetClassRealizeFieldCallback #signal:WidgetClassRealizeFieldCallback#

        C_WidgetClassRealizeFieldCallback       ,
        WidgetClassRealizeFieldCallback         ,
        dynamic_WidgetClassRealizeFieldCallback ,
        genClosure_WidgetClassRealizeFieldCallback,
        mk_WidgetClassRealizeFieldCallback      ,
        noWidgetClassRealizeFieldCallback       ,
        wrap_WidgetClassRealizeFieldCallback    ,

    -- ** WidgetClassScreenChangedFieldCallback #signal:WidgetClassScreenChangedFieldCallback#

        C_WidgetClassScreenChangedFieldCallback ,
        WidgetClassScreenChangedFieldCallback   ,
        dynamic_WidgetClassScreenChangedFieldCallback,
        genClosure_WidgetClassScreenChangedFieldCallback,
        mk_WidgetClassScreenChangedFieldCallback,
        noWidgetClassScreenChangedFieldCallback ,
        wrap_WidgetClassScreenChangedFieldCallback,

    -- ** WidgetClassScrollEventFieldCallback #signal:WidgetClassScrollEventFieldCallback#

        C_WidgetClassScrollEventFieldCallback   ,
        WidgetClassScrollEventFieldCallback     ,
        dynamic_WidgetClassScrollEventFieldCallback,
        genClosure_WidgetClassScrollEventFieldCallback,
        mk_WidgetClassScrollEventFieldCallback  ,
        noWidgetClassScrollEventFieldCallback   ,
        wrap_WidgetClassScrollEventFieldCallback,

    -- ** WidgetClassSelectionClearEventFieldCallback #signal:WidgetClassSelectionClearEventFieldCallback#

        C_WidgetClassSelectionClearEventFieldCallback,
        WidgetClassSelectionClearEventFieldCallback,
        dynamic_WidgetClassSelectionClearEventFieldCallback,
        genClosure_WidgetClassSelectionClearEventFieldCallback,
        mk_WidgetClassSelectionClearEventFieldCallback,
        noWidgetClassSelectionClearEventFieldCallback,
        wrap_WidgetClassSelectionClearEventFieldCallback,

    -- ** WidgetClassSelectionGetFieldCallback #signal:WidgetClassSelectionGetFieldCallback#

        C_WidgetClassSelectionGetFieldCallback  ,
        WidgetClassSelectionGetFieldCallback    ,
        dynamic_WidgetClassSelectionGetFieldCallback,
        genClosure_WidgetClassSelectionGetFieldCallback,
        mk_WidgetClassSelectionGetFieldCallback ,
        noWidgetClassSelectionGetFieldCallback  ,
        wrap_WidgetClassSelectionGetFieldCallback,

    -- ** WidgetClassSelectionNotifyEventFieldCallback #signal:WidgetClassSelectionNotifyEventFieldCallback#

        C_WidgetClassSelectionNotifyEventFieldCallback,
        WidgetClassSelectionNotifyEventFieldCallback,
        dynamic_WidgetClassSelectionNotifyEventFieldCallback,
        genClosure_WidgetClassSelectionNotifyEventFieldCallback,
        mk_WidgetClassSelectionNotifyEventFieldCallback,
        noWidgetClassSelectionNotifyEventFieldCallback,
        wrap_WidgetClassSelectionNotifyEventFieldCallback,

    -- ** WidgetClassSelectionReceivedFieldCallback #signal:WidgetClassSelectionReceivedFieldCallback#

        C_WidgetClassSelectionReceivedFieldCallback,
        WidgetClassSelectionReceivedFieldCallback,
        dynamic_WidgetClassSelectionReceivedFieldCallback,
        genClosure_WidgetClassSelectionReceivedFieldCallback,
        mk_WidgetClassSelectionReceivedFieldCallback,
        noWidgetClassSelectionReceivedFieldCallback,
        wrap_WidgetClassSelectionReceivedFieldCallback,

    -- ** WidgetClassSelectionRequestEventFieldCallback #signal:WidgetClassSelectionRequestEventFieldCallback#

        C_WidgetClassSelectionRequestEventFieldCallback,
        WidgetClassSelectionRequestEventFieldCallback,
        dynamic_WidgetClassSelectionRequestEventFieldCallback,
        genClosure_WidgetClassSelectionRequestEventFieldCallback,
        mk_WidgetClassSelectionRequestEventFieldCallback,
        noWidgetClassSelectionRequestEventFieldCallback,
        wrap_WidgetClassSelectionRequestEventFieldCallback,

    -- ** WidgetClassShowAllFieldCallback #signal:WidgetClassShowAllFieldCallback#

        C_WidgetClassShowAllFieldCallback       ,
        WidgetClassShowAllFieldCallback         ,
        dynamic_WidgetClassShowAllFieldCallback ,
        genClosure_WidgetClassShowAllFieldCallback,
        mk_WidgetClassShowAllFieldCallback      ,
        noWidgetClassShowAllFieldCallback       ,
        wrap_WidgetClassShowAllFieldCallback    ,

    -- ** WidgetClassShowFieldCallback #signal:WidgetClassShowFieldCallback#

        C_WidgetClassShowFieldCallback          ,
        WidgetClassShowFieldCallback            ,
        dynamic_WidgetClassShowFieldCallback    ,
        genClosure_WidgetClassShowFieldCallback ,
        mk_WidgetClassShowFieldCallback         ,
        noWidgetClassShowFieldCallback          ,
        wrap_WidgetClassShowFieldCallback       ,

    -- ** WidgetClassShowHelpFieldCallback #signal:WidgetClassShowHelpFieldCallback#

        C_WidgetClassShowHelpFieldCallback      ,
        WidgetClassShowHelpFieldCallback        ,
        dynamic_WidgetClassShowHelpFieldCallback,
        genClosure_WidgetClassShowHelpFieldCallback,
        mk_WidgetClassShowHelpFieldCallback     ,
        noWidgetClassShowHelpFieldCallback      ,
        wrap_WidgetClassShowHelpFieldCallback   ,

    -- ** WidgetClassSizeAllocateFieldCallback #signal:WidgetClassSizeAllocateFieldCallback#

        C_WidgetClassSizeAllocateFieldCallback  ,
        WidgetClassSizeAllocateFieldCallback    ,
        dynamic_WidgetClassSizeAllocateFieldCallback,
        genClosure_WidgetClassSizeAllocateFieldCallback,
        mk_WidgetClassSizeAllocateFieldCallback ,
        noWidgetClassSizeAllocateFieldCallback  ,
        wrap_WidgetClassSizeAllocateFieldCallback,

    -- ** WidgetClassStateChangedFieldCallback #signal:WidgetClassStateChangedFieldCallback#

        C_WidgetClassStateChangedFieldCallback  ,
        WidgetClassStateChangedFieldCallback    ,
        dynamic_WidgetClassStateChangedFieldCallback,
        genClosure_WidgetClassStateChangedFieldCallback,
        mk_WidgetClassStateChangedFieldCallback ,
        noWidgetClassStateChangedFieldCallback  ,
        wrap_WidgetClassStateChangedFieldCallback,

    -- ** WidgetClassStateFlagsChangedFieldCallback #signal:WidgetClassStateFlagsChangedFieldCallback#

        C_WidgetClassStateFlagsChangedFieldCallback,
        WidgetClassStateFlagsChangedFieldCallback,
        dynamic_WidgetClassStateFlagsChangedFieldCallback,
        genClosure_WidgetClassStateFlagsChangedFieldCallback,
        mk_WidgetClassStateFlagsChangedFieldCallback,
        noWidgetClassStateFlagsChangedFieldCallback,
        wrap_WidgetClassStateFlagsChangedFieldCallback,

    -- ** WidgetClassStyleSetFieldCallback #signal:WidgetClassStyleSetFieldCallback#

        C_WidgetClassStyleSetFieldCallback      ,
        WidgetClassStyleSetFieldCallback        ,
        dynamic_WidgetClassStyleSetFieldCallback,
        genClosure_WidgetClassStyleSetFieldCallback,
        mk_WidgetClassStyleSetFieldCallback     ,
        noWidgetClassStyleSetFieldCallback      ,
        wrap_WidgetClassStyleSetFieldCallback   ,

    -- ** WidgetClassStyleUpdatedFieldCallback #signal:WidgetClassStyleUpdatedFieldCallback#

        C_WidgetClassStyleUpdatedFieldCallback  ,
        WidgetClassStyleUpdatedFieldCallback    ,
        dynamic_WidgetClassStyleUpdatedFieldCallback,
        genClosure_WidgetClassStyleUpdatedFieldCallback,
        mk_WidgetClassStyleUpdatedFieldCallback ,
        noWidgetClassStyleUpdatedFieldCallback  ,
        wrap_WidgetClassStyleUpdatedFieldCallback,

    -- ** WidgetClassTouchEventFieldCallback #signal:WidgetClassTouchEventFieldCallback#

        C_WidgetClassTouchEventFieldCallback    ,
        WidgetClassTouchEventFieldCallback      ,
        dynamic_WidgetClassTouchEventFieldCallback,
        genClosure_WidgetClassTouchEventFieldCallback,
        mk_WidgetClassTouchEventFieldCallback   ,
        noWidgetClassTouchEventFieldCallback    ,
        wrap_WidgetClassTouchEventFieldCallback ,

    -- ** WidgetClassUnmapEventFieldCallback #signal:WidgetClassUnmapEventFieldCallback#

        C_WidgetClassUnmapEventFieldCallback    ,
        WidgetClassUnmapEventFieldCallback      ,
        dynamic_WidgetClassUnmapEventFieldCallback,
        genClosure_WidgetClassUnmapEventFieldCallback,
        mk_WidgetClassUnmapEventFieldCallback   ,
        noWidgetClassUnmapEventFieldCallback    ,
        wrap_WidgetClassUnmapEventFieldCallback ,

    -- ** WidgetClassUnmapFieldCallback #signal:WidgetClassUnmapFieldCallback#

        C_WidgetClassUnmapFieldCallback         ,
        WidgetClassUnmapFieldCallback           ,
        dynamic_WidgetClassUnmapFieldCallback   ,
        genClosure_WidgetClassUnmapFieldCallback,
        mk_WidgetClassUnmapFieldCallback        ,
        noWidgetClassUnmapFieldCallback         ,
        wrap_WidgetClassUnmapFieldCallback      ,

    -- ** WidgetClassUnrealizeFieldCallback #signal:WidgetClassUnrealizeFieldCallback#

        C_WidgetClassUnrealizeFieldCallback     ,
        WidgetClassUnrealizeFieldCallback       ,
        dynamic_WidgetClassUnrealizeFieldCallback,
        genClosure_WidgetClassUnrealizeFieldCallback,
        mk_WidgetClassUnrealizeFieldCallback    ,
        noWidgetClassUnrealizeFieldCallback     ,
        wrap_WidgetClassUnrealizeFieldCallback  ,

    -- ** WidgetClassVisibilityNotifyEventFieldCallback #signal:WidgetClassVisibilityNotifyEventFieldCallback#

        C_WidgetClassVisibilityNotifyEventFieldCallback,
        WidgetClassVisibilityNotifyEventFieldCallback,
        dynamic_WidgetClassVisibilityNotifyEventFieldCallback,
        genClosure_WidgetClassVisibilityNotifyEventFieldCallback,
        mk_WidgetClassVisibilityNotifyEventFieldCallback,
        noWidgetClassVisibilityNotifyEventFieldCallback,
        wrap_WidgetClassVisibilityNotifyEventFieldCallback,

    -- ** WidgetClassWindowStateEventFieldCallback #signal:WidgetClassWindowStateEventFieldCallback#

        C_WidgetClassWindowStateEventFieldCallback,
        WidgetClassWindowStateEventFieldCallback,
        dynamic_WidgetClassWindowStateEventFieldCallback,
        genClosure_WidgetClassWindowStateEventFieldCallback,
        mk_WidgetClassWindowStateEventFieldCallback,
        noWidgetClassWindowStateEventFieldCallback,
        wrap_WidgetClassWindowStateEventFieldCallback,

        ) 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 Data.Word as DW
    import qualified Data.Int as DI
    import qualified System.Posix.Types as SPT
    import qualified Foreign.C.Types as FCT

    -- Workaround for https://gitlab.haskell.org/ghc/ghc/-/issues/23392
    #if MIN_VERSION_base(4,18,0)
    import qualified GI.Atk.Interfaces.ImplementorIface as Atk.ImplementorIface
    import qualified GI.Atk.Objects.Object as Atk.Object
    import qualified GI.Cairo.Structs.Context as Cairo.Context
    import qualified GI.Cairo.Structs.FontOptions as Cairo.FontOptions
    import qualified GI.Cairo.Structs.Region as Cairo.Region
    import qualified GI.Cairo.Structs.Surface as Cairo.Surface
    import qualified GI.GLib.Callbacks as GLib.Callbacks
    import qualified GI.GLib.Structs.KeyFile as GLib.KeyFile
    import qualified GI.GLib.Structs.MarkupParser as GLib.MarkupParser
    import qualified GI.GLib.Structs.String as GLib.String
    import qualified GI.GObject.Callbacks as GObject.Callbacks
    import qualified GI.GObject.Flags as GObject.Flags
    import qualified GI.GObject.Objects.Object as GObject.Object
    import qualified GI.Gdk.Enums as Gdk.Enums
    import qualified GI.Gdk.Flags as Gdk.Flags
    import qualified GI.Gdk.Objects.Device as Gdk.Device
    import qualified GI.Gdk.Objects.Display as Gdk.Display
    import qualified GI.Gdk.Objects.DragContext as Gdk.DragContext
    import qualified GI.Gdk.Objects.FrameClock as Gdk.FrameClock
    import qualified GI.Gdk.Objects.Monitor as Gdk.Monitor
    import qualified GI.Gdk.Objects.Screen as Gdk.Screen
    import qualified GI.Gdk.Objects.Visual as Gdk.Visual
    import qualified GI.Gdk.Objects.Window as Gdk.Window
    import qualified GI.Gdk.Structs.Atom as Gdk.Atom
    import qualified GI.Gdk.Structs.Color as Gdk.Color
    import qualified GI.Gdk.Structs.EventAny as Gdk.EventAny
    import qualified GI.Gdk.Structs.EventButton as Gdk.EventButton
    import qualified GI.Gdk.Structs.EventConfigure as Gdk.EventConfigure
    import qualified GI.Gdk.Structs.EventCrossing as Gdk.EventCrossing
    import qualified GI.Gdk.Structs.EventExpose as Gdk.EventExpose
    import qualified GI.Gdk.Structs.EventFocus as Gdk.EventFocus
    import qualified GI.Gdk.Structs.EventGrabBroken as Gdk.EventGrabBroken
    import qualified GI.Gdk.Structs.EventKey as Gdk.EventKey
    import qualified GI.Gdk.Structs.EventMotion as Gdk.EventMotion
    import qualified GI.Gdk.Structs.EventOwnerChange as Gdk.EventOwnerChange
    import qualified GI.Gdk.Structs.EventProperty as Gdk.EventProperty
    import qualified GI.Gdk.Structs.EventProximity as Gdk.EventProximity
    import qualified GI.Gdk.Structs.EventScroll as Gdk.EventScroll
    import qualified GI.Gdk.Structs.EventSelection as Gdk.EventSelection
    import qualified GI.Gdk.Structs.EventTouch as Gdk.EventTouch
    import qualified GI.Gdk.Structs.EventVisibility as Gdk.EventVisibility
    import qualified GI.Gdk.Structs.EventWindowState as Gdk.EventWindowState
    import qualified GI.Gdk.Structs.Geometry as Gdk.Geometry
    import qualified GI.Gdk.Structs.RGBA as Gdk.RGBA
    import qualified GI.Gdk.Structs.Rectangle as Gdk.Rectangle
    import qualified GI.Gdk.Unions.Event as Gdk.Event
    import qualified GI.GdkPixbuf.Objects.Pixbuf as GdkPixbuf.Pixbuf
    import qualified GI.Gio.Flags as Gio.Flags
    import qualified GI.Gio.Interfaces.ActionGroup as Gio.ActionGroup
    import qualified GI.Gio.Interfaces.ActionMap as Gio.ActionMap
    import qualified GI.Gio.Interfaces.AppInfo as Gio.AppInfo
    import qualified GI.Gio.Interfaces.File as Gio.File
    import qualified GI.Gio.Interfaces.Icon as Gio.Icon
    import qualified GI.Gio.Interfaces.ListModel as Gio.ListModel
    import qualified GI.Gio.Objects.Application as Gio.Application
    import qualified GI.Gio.Objects.Menu as Gio.Menu
    import qualified GI.Gio.Objects.MenuModel as Gio.MenuModel
    import {-# SOURCE #-} qualified GI.Gtk.Enums as Gtk.Enums
    import {-# SOURCE #-} qualified GI.Gtk.Flags as Gtk.Flags
    import {-# SOURCE #-} qualified GI.Gtk.Interfaces.Actionable as Gtk.Actionable
    import {-# SOURCE #-} qualified GI.Gtk.Interfaces.Activatable as Gtk.Activatable
    import {-# SOURCE #-} qualified GI.Gtk.Interfaces.Buildable as Gtk.Buildable
    import {-# SOURCE #-} qualified GI.Gtk.Interfaces.CellEditable as Gtk.CellEditable
    import {-# SOURCE #-} qualified GI.Gtk.Interfaces.CellLayout as Gtk.CellLayout
    import {-# SOURCE #-} qualified GI.Gtk.Interfaces.Editable as Gtk.Editable
    import {-# SOURCE #-} qualified GI.Gtk.Interfaces.Orientable as Gtk.Orientable
    import {-# SOURCE #-} qualified GI.Gtk.Interfaces.Scrollable as Gtk.Scrollable
    import {-# SOURCE #-} qualified GI.Gtk.Interfaces.StyleProvider as Gtk.StyleProvider
    import {-# SOURCE #-} qualified GI.Gtk.Interfaces.TreeModel as Gtk.TreeModel
    import {-# SOURCE #-} qualified GI.Gtk.Objects.AccelGroup as Gtk.AccelGroup
    import {-# SOURCE #-} qualified GI.Gtk.Objects.Action as Gtk.Action
    import {-# SOURCE #-} qualified GI.Gtk.Objects.ActionGroup as Gtk.ActionGroup
    import {-# SOURCE #-} qualified GI.Gtk.Objects.Adjustment as Gtk.Adjustment
    import {-# SOURCE #-} qualified GI.Gtk.Objects.Application as Gtk.Application
    import {-# SOURCE #-} qualified GI.Gtk.Objects.Bin as Gtk.Bin
    import {-# SOURCE #-} qualified GI.Gtk.Objects.Builder as Gtk.Builder
    import {-# SOURCE #-} qualified GI.Gtk.Objects.Calendar as Gtk.Calendar
    import {-# SOURCE #-} qualified GI.Gtk.Objects.CellArea as Gtk.CellArea
    import {-# SOURCE #-} qualified GI.Gtk.Objects.CellAreaContext as Gtk.CellAreaContext
    import {-# SOURCE #-} qualified GI.Gtk.Objects.CellRenderer as Gtk.CellRenderer
    import {-# SOURCE #-} qualified GI.Gtk.Objects.Clipboard as Gtk.Clipboard
    import {-# SOURCE #-} qualified GI.Gtk.Objects.Container as Gtk.Container
    import {-# SOURCE #-} qualified GI.Gtk.Objects.Entry as Gtk.Entry
    import {-# SOURCE #-} qualified GI.Gtk.Objects.EntryBuffer as Gtk.EntryBuffer
    import {-# SOURCE #-} qualified GI.Gtk.Objects.EntryCompletion as Gtk.EntryCompletion
    import {-# SOURCE #-} qualified GI.Gtk.Objects.FlowBox as Gtk.FlowBox
    import {-# SOURCE #-} qualified GI.Gtk.Objects.FlowBoxChild as Gtk.FlowBoxChild
    import {-# SOURCE #-} qualified GI.Gtk.Objects.IconFactory as Gtk.IconFactory
    import {-# SOURCE #-} qualified GI.Gtk.Objects.IconView as Gtk.IconView
    import {-# SOURCE #-} qualified GI.Gtk.Objects.ListBox as Gtk.ListBox
    import {-# SOURCE #-} qualified GI.Gtk.Objects.ListBoxRow as Gtk.ListBoxRow
    import {-# SOURCE #-} qualified GI.Gtk.Objects.Menu as Gtk.Menu
    import {-# SOURCE #-} qualified GI.Gtk.Objects.MenuItem as Gtk.MenuItem
    import {-# SOURCE #-} qualified GI.Gtk.Objects.MenuShell as Gtk.MenuShell
    import {-# SOURCE #-} qualified GI.Gtk.Objects.PageSetup as Gtk.PageSetup
    import {-# SOURCE #-} qualified GI.Gtk.Objects.RcStyle as Gtk.RcStyle
    import {-# SOURCE #-} qualified GI.Gtk.Objects.Settings as Gtk.Settings
    import {-# SOURCE #-} qualified GI.Gtk.Objects.Style as Gtk.Style
    import {-# SOURCE #-} qualified GI.Gtk.Objects.StyleContext as Gtk.StyleContext
    import {-# SOURCE #-} qualified GI.Gtk.Objects.StyleProperties as Gtk.StyleProperties
    import {-# SOURCE #-} qualified GI.Gtk.Objects.TextBuffer as Gtk.TextBuffer
    import {-# SOURCE #-} qualified GI.Gtk.Objects.TextChildAnchor as Gtk.TextChildAnchor
    import {-# SOURCE #-} qualified GI.Gtk.Objects.TextMark as Gtk.TextMark
    import {-# SOURCE #-} qualified GI.Gtk.Objects.TextTag as Gtk.TextTag
    import {-# SOURCE #-} qualified GI.Gtk.Objects.TextTagTable as Gtk.TextTagTable
    import {-# SOURCE #-} qualified GI.Gtk.Objects.Tooltip as Gtk.Tooltip
    import {-# SOURCE #-} qualified GI.Gtk.Objects.TreeSelection as Gtk.TreeSelection
    import {-# SOURCE #-} qualified GI.Gtk.Objects.TreeView as Gtk.TreeView
    import {-# SOURCE #-} qualified GI.Gtk.Objects.TreeViewColumn as Gtk.TreeViewColumn
    import {-# SOURCE #-} qualified GI.Gtk.Objects.Widget as Gtk.Widget
    import {-# SOURCE #-} qualified GI.Gtk.Objects.Window as Gtk.Window
    import {-# SOURCE #-} qualified GI.Gtk.Objects.WindowGroup as Gtk.WindowGroup
    import {-# SOURCE #-} qualified GI.Gtk.Structs.AccelGroupEntry as Gtk.AccelGroupEntry
    import {-# SOURCE #-} qualified GI.Gtk.Structs.AccelKey as Gtk.AccelKey
    import {-# SOURCE #-} qualified GI.Gtk.Structs.Border as Gtk.Border
    import {-# SOURCE #-} qualified GI.Gtk.Structs.CssSection as Gtk.CssSection
    import {-# SOURCE #-} qualified GI.Gtk.Structs.FileFilterInfo as Gtk.FileFilterInfo
    import {-# SOURCE #-} qualified GI.Gtk.Structs.IconSet as Gtk.IconSet
    import {-# SOURCE #-} qualified GI.Gtk.Structs.IconSource as Gtk.IconSource
    import {-# SOURCE #-} qualified GI.Gtk.Structs.PaperSize as Gtk.PaperSize
    import {-# SOURCE #-} qualified GI.Gtk.Structs.RecentFilterInfo as Gtk.RecentFilterInfo
    import {-# SOURCE #-} qualified GI.Gtk.Structs.RecentInfo as Gtk.RecentInfo
    import {-# SOURCE #-} qualified GI.Gtk.Structs.Requisition as Gtk.Requisition
    import {-# SOURCE #-} qualified GI.Gtk.Structs.SelectionData as Gtk.SelectionData
    import {-# SOURCE #-} qualified GI.Gtk.Structs.SettingsValue as Gtk.SettingsValue
    import {-# SOURCE #-} qualified GI.Gtk.Structs.SymbolicColor as Gtk.SymbolicColor
    import {-# SOURCE #-} qualified GI.Gtk.Structs.TargetEntry as Gtk.TargetEntry
    import {-# SOURCE #-} qualified GI.Gtk.Structs.TargetList as Gtk.TargetList
    import {-# SOURCE #-} qualified GI.Gtk.Structs.TextAppearance as Gtk.TextAppearance
    import {-# SOURCE #-} qualified GI.Gtk.Structs.TextAttributes as Gtk.TextAttributes
    import {-# SOURCE #-} qualified GI.Gtk.Structs.TextIter as Gtk.TextIter
    import {-# SOURCE #-} qualified GI.Gtk.Structs.TreeIter as Gtk.TreeIter
    import {-# SOURCE #-} qualified GI.Gtk.Structs.TreePath as Gtk.TreePath
    import {-# SOURCE #-} qualified GI.Gtk.Structs.WidgetPath as Gtk.WidgetPath
    import qualified GI.Pango.Enums as Pango.Enums
    import qualified GI.Pango.Objects.Context as Pango.Context
    import qualified GI.Pango.Objects.FontFace as Pango.FontFace
    import qualified GI.Pango.Objects.FontFamily as Pango.FontFamily
    import qualified GI.Pango.Objects.FontMap as Pango.FontMap
    import qualified GI.Pango.Objects.Layout as Pango.Layout
    import qualified GI.Pango.Structs.AttrList as Pango.AttrList
    import qualified GI.Pango.Structs.FontDescription as Pango.FontDescription
    import qualified GI.Pango.Structs.Language as Pango.Language
    import qualified GI.Pango.Structs.TabArray as Pango.TabArray

    #else
    import qualified GI.Atk.Objects.Object as Atk.Object
    import qualified GI.Cairo.Structs.Context as Cairo.Context
    import qualified GI.Cairo.Structs.Region as Cairo.Region
    import qualified GI.GLib.Structs.String as GLib.String
    import qualified GI.GObject.Flags as GObject.Flags
    import qualified GI.GObject.Objects.Object as GObject.Object
    import qualified GI.Gdk.Flags as Gdk.Flags
    import qualified GI.Gdk.Objects.Display as Gdk.Display
    import qualified GI.Gdk.Objects.DragContext as Gdk.DragContext
    import qualified GI.Gdk.Objects.FrameClock as Gdk.FrameClock
    import qualified GI.Gdk.Objects.Screen as Gdk.Screen
    import qualified GI.Gdk.Structs.Atom as Gdk.Atom
    import qualified GI.Gdk.Structs.Color as Gdk.Color
    import qualified GI.Gdk.Structs.EventAny as Gdk.EventAny
    import qualified GI.Gdk.Structs.EventButton as Gdk.EventButton
    import qualified GI.Gdk.Structs.EventConfigure as Gdk.EventConfigure
    import qualified GI.Gdk.Structs.EventCrossing as Gdk.EventCrossing
    import qualified GI.Gdk.Structs.EventExpose as Gdk.EventExpose
    import qualified GI.Gdk.Structs.EventFocus as Gdk.EventFocus
    import qualified GI.Gdk.Structs.EventGrabBroken as Gdk.EventGrabBroken
    import qualified GI.Gdk.Structs.EventKey as Gdk.EventKey
    import qualified GI.Gdk.Structs.EventMotion as Gdk.EventMotion
    import qualified GI.Gdk.Structs.EventProperty as Gdk.EventProperty
    import qualified GI.Gdk.Structs.EventProximity as Gdk.EventProximity
    import qualified GI.Gdk.Structs.EventScroll as Gdk.EventScroll
    import qualified GI.Gdk.Structs.EventSelection as Gdk.EventSelection
    import qualified GI.Gdk.Structs.EventTouch as Gdk.EventTouch
    import qualified GI.Gdk.Structs.EventVisibility as Gdk.EventVisibility
    import qualified GI.Gdk.Structs.EventWindowState as Gdk.EventWindowState
    import qualified GI.Gdk.Structs.Rectangle as Gdk.Rectangle
    import qualified GI.Gdk.Unions.Event as Gdk.Event
    import qualified GI.GdkPixbuf.Objects.Pixbuf as GdkPixbuf.Pixbuf
    import {-# SOURCE #-} qualified GI.Gtk.Enums as Gtk.Enums
    import {-# SOURCE #-} qualified GI.Gtk.Flags as Gtk.Flags
    import {-# SOURCE #-} qualified GI.Gtk.Interfaces.Actionable as Gtk.Actionable
    import {-# SOURCE #-} qualified GI.Gtk.Interfaces.CellLayout as Gtk.CellLayout
    import {-# SOURCE #-} qualified GI.Gtk.Interfaces.TreeModel as Gtk.TreeModel
    import {-# SOURCE #-} qualified GI.Gtk.Objects.AccelGroup as Gtk.AccelGroup
    import {-# SOURCE #-} qualified GI.Gtk.Objects.Builder as Gtk.Builder
    import {-# SOURCE #-} qualified GI.Gtk.Objects.Calendar as Gtk.Calendar
    import {-# SOURCE #-} qualified GI.Gtk.Objects.CellRenderer as Gtk.CellRenderer
    import {-# SOURCE #-} qualified GI.Gtk.Objects.Clipboard as Gtk.Clipboard
    import {-# SOURCE #-} qualified GI.Gtk.Objects.Container as Gtk.Container
    import {-# SOURCE #-} qualified GI.Gtk.Objects.EntryCompletion as Gtk.EntryCompletion
    import {-# SOURCE #-} qualified GI.Gtk.Objects.FlowBox as Gtk.FlowBox
    import {-# SOURCE #-} qualified GI.Gtk.Objects.FlowBoxChild as Gtk.FlowBoxChild
    import {-# SOURCE #-} qualified GI.Gtk.Objects.IconView as Gtk.IconView
    import {-# SOURCE #-} qualified GI.Gtk.Objects.ListBox as Gtk.ListBox
    import {-# SOURCE #-} qualified GI.Gtk.Objects.ListBoxRow as Gtk.ListBoxRow
    import {-# SOURCE #-} qualified GI.Gtk.Objects.Menu as Gtk.Menu
    import {-# SOURCE #-} qualified GI.Gtk.Objects.PageSetup as Gtk.PageSetup
    import {-# SOURCE #-} qualified GI.Gtk.Objects.Style as Gtk.Style
    import {-# SOURCE #-} qualified GI.Gtk.Objects.TextBuffer as Gtk.TextBuffer
    import {-# SOURCE #-} qualified GI.Gtk.Objects.TextTag as Gtk.TextTag
    import {-# SOURCE #-} qualified GI.Gtk.Objects.Tooltip as Gtk.Tooltip
    import {-# SOURCE #-} qualified GI.Gtk.Objects.TreeSelection as Gtk.TreeSelection
    import {-# SOURCE #-} qualified GI.Gtk.Objects.TreeView as Gtk.TreeView
    import {-# SOURCE #-} qualified GI.Gtk.Objects.TreeViewColumn as Gtk.TreeViewColumn
    import {-# SOURCE #-} qualified GI.Gtk.Objects.Widget as Gtk.Widget
    import {-# SOURCE #-} qualified GI.Gtk.Structs.AccelKey as Gtk.AccelKey
    import {-# SOURCE #-} qualified GI.Gtk.Structs.FileFilterInfo as Gtk.FileFilterInfo
    import {-# SOURCE #-} qualified GI.Gtk.Structs.RecentFilterInfo as Gtk.RecentFilterInfo
    import {-# SOURCE #-} qualified GI.Gtk.Structs.RecentInfo as Gtk.RecentInfo
    import {-# SOURCE #-} qualified GI.Gtk.Structs.SelectionData as Gtk.SelectionData
    import {-# SOURCE #-} qualified GI.Gtk.Structs.TextIter as Gtk.TextIter
    import {-# SOURCE #-} qualified GI.Gtk.Structs.TreeIter as Gtk.TreeIter
    import {-# SOURCE #-} qualified GI.Gtk.Structs.TreePath as Gtk.TreePath
    import {-# SOURCE #-} qualified GI.Gtk.Structs.WidgetPath as Gtk.WidgetPath
    import qualified GI.Pango.Objects.FontFace as Pango.FontFace
    import qualified GI.Pango.Objects.FontFamily as Pango.FontFamily

    #endif

    -- callback WidgetClassWindowStateEventFieldCallback
    {- Callable
      { returnType = Just (TBasicType TBoolean)
      , returnMayBeNull = False
      , returnTransfer = TransferNothing
      , returnDocumentation =
          Documentation { rawDocText = Nothing , sinceVersion = Nothing }
      , args =
          [ Arg
              { argCName = "widget"
              , argType = TInterface Name { namespace = "Gtk" , name = "Widget" }
              , argCType = Just "GtkWidget*"
              , direction = DirectionIn
              , mayBeNull = False
              , argDoc =
                  Documentation { rawDocText = Nothing , sinceVersion = Nothing }
              , argScope = ScopeTypeInvalid
              , argClosure = -1
              , argDestroy = -1
              , argCallerAllocates = False
              , argCallbackUserData = False
              , transfer = TransferNothing
              }
          , Arg
              { argCName = "event"
              , argType =
                  TInterface Name { namespace = "Gdk" , name = "EventWindowState" }
              , argCType = Just "GdkEventWindowState*"
              , direction = DirectionIn
              , mayBeNull = False
              , argDoc =
                  Documentation { rawDocText = Nothing , sinceVersion = Nothing }
              , argScope = ScopeTypeInvalid
              , argClosure = -1
              , argDestroy = -1
              , argCallerAllocates = False
              , argCallbackUserData = False
              , transfer = TransferNothing
              }
          ]
      , skipReturn = False
      , callableThrows = False
      , callableDeprecated = Nothing
      , callableDocumentation =
          Documentation { rawDocText = Nothing , sinceVersion = Nothing }
      , callableResolvable = Nothing
      }
    -}
    -- | Type for the callback on the (unwrapped) C side.
    type C_WidgetClassWindowStateEventFieldCallback =
        Ptr Gtk.Widget.Widget ->
        Ptr Gdk.EventWindowState.EventWindowState ->
        IO CInt

    -- Args: [ Arg
    --           { argCName = "widget"
    --           , argType = TInterface Name { namespace = "Gtk" , name = "Widget" }
    --           , argCType = Just "GtkWidget*"
    --           , direction = DirectionIn
    --           , mayBeNull = False
    --           , argDoc =
    --               Documentation { rawDocText = Nothing , sinceVersion = Nothing }
    --           , argScope = ScopeTypeInvalid
    --           , argClosure = -1
    --           , argDestroy = -1
    --           , argCallerAllocates = False
    --           , argCallbackUserData = False
    --           , transfer = TransferNothing
    --           }
    --       , Arg
    --           { argCName = "event"
    --           , argType =
    --               TInterface Name { namespace = "Gdk" , name = "EventWindowState" }
    --           , argCType = Just "GdkEventWindowState*"
    --           , direction = DirectionIn
    --           , mayBeNull = False
    --           , argDoc =
    --               Documentation { rawDocText = Nothing , sinceVersion = Nothing }
    --           , argScope = ScopeTypeInvalid
    --           , argClosure = -1
    --           , argDestroy = -1
    --           , argCallerAllocates = False
    --           , argCallbackUserData = False
    --           , transfer = TransferNothing
    --           }
    --       ]
    -- Lengths: []
    -- returnType: Just (TBasicType TBoolean)
    -- throws : False
    -- Skip return : False

    foreign import ccall "dynamic" __dynamic_C_WidgetClassWindowStateEventFieldCallback :: FunPtr C_WidgetClassWindowStateEventFieldCallback -> C_WidgetClassWindowStateEventFieldCallback

    -- | Given a pointer to a foreign C function, wrap it into a function callable from Haskell.
    dynamic_WidgetClassWindowStateEventFieldCallback ::
        (B.CallStack.HasCallStack, MonadIO m, Gtk.Widget.IsWidget a) =>
        FunPtr C_WidgetClassWindowStateEventFieldCallback
        -> a
        -> Gdk.EventWindowState.EventWindowState
        -> m Bool
    dynamic_WidgetClassWindowStateEventFieldCallback :: forall (m :: * -> *) a.
    (HasCallStack, MonadIO m, IsWidget a) =>
    FunPtr C_WidgetClassWindowStateEventFieldCallback
    -> a -> EventWindowState -> m Bool
    dynamic_WidgetClassWindowStateEventFieldCallback FunPtr C_WidgetClassWindowStateEventFieldCallback
    __funPtr a
    widget EventWindowState
    event = IO Bool -> m Bool
    forall a. IO a -> m a
    forall (m :: * -> *) a. MonadIO m => IO a -> m a
    liftIO (IO Bool -> m Bool) -> IO Bool -> m Bool
    forall a b. (a -> b) -> a -> b
    $ do
        widget' <- a -> IO (Ptr Widget)
    forall a b. (HasCallStack, ManagedPtrNewtype a) => a -> IO (Ptr b)
    unsafeManagedPtrCastPtr a
    widget
        event' <- unsafeManagedPtrGetPtr event
        result <- (__dynamic_C_WidgetClassWindowStateEventFieldCallback __funPtr) widget' event'
        let result' = (CInt -> CInt -> Bool
    forall a. Eq a => a -> a -> Bool
    /= CInt
    0) CInt
    result
        touchManagedPtr widget
        touchManagedPtr event
        return result'

    -- | Generate a function pointer callable from C code, from a `C_WidgetClassWindowStateEventFieldCallback`.
    foreign import ccall "wrapper"
        mk_WidgetClassWindowStateEventFieldCallback :: C_WidgetClassWindowStateEventFieldCallback -> IO (FunPtr C_WidgetClassWindowStateEventFieldCallback)

    -- | /No description available in the introspection data./
    type WidgetClassWindowStateEventFieldCallback =
        Gtk.Widget.Widget
        -> Gdk.EventWindowState.EventWindowState
        -> IO Bool

    -- | A convenience synonym for @`Nothing` :: `Maybe` `WidgetClassWindowStateEventFieldCallback`@.
    noWidgetClassWindowStateEventFieldCallback :: Maybe WidgetClassWindowStateEventFieldCallback
    noWidgetClassWindowStateEventFieldCallback :: Maybe WidgetClassWindowStateEventFieldCallback
    noWidgetClassWindowStateEventFieldCallback = Maybe WidgetClassWindowStateEventFieldCallback
    forall a. Maybe a
    Nothing

    -- | Wrap the callback into a `GClosure`.
    genClosure_WidgetClassWindowStateEventFieldCallback :: MonadIO m => WidgetClassWindowStateEventFieldCallback -> m (GClosure C_WidgetClassWindowStateEventFieldCallback)
    genClosure_WidgetClassWindowStateEventFieldCallback :: forall (m :: * -> *).
    MonadIO m =>
    WidgetClassWindowStateEventFieldCallback
    -> m (GClosure C_WidgetClassWindowStateEventFieldCallback)
    genClosure_WidgetClassWindowStateEventFieldCallback WidgetClassWindowStateEventFieldCallback
    cb = IO (GClosure C_WidgetClassWindowStateEventFieldCallback)
    -> m (GClosure C_WidgetClassWindowStateEventFieldCallback)
    forall a. IO a -> m a
    forall (m :: * -> *) a. MonadIO m => IO a -> m a
    liftIO (IO (GClosure C_WidgetClassWindowStateEventFieldCallback)
     -> m (GClosure C_WidgetClassWindowStateEventFieldCallback))
    -> IO (GClosure C_WidgetClassWindowStateEventFieldCallback)
    -> m (GClosure C_WidgetClassWindowStateEventFieldCallback)
    forall a b. (a -> b) -> a -> b
    $ do
        let cb' :: C_WidgetClassWindowStateEventFieldCallback
    cb' = Maybe (Ptr (FunPtr C_WidgetClassWindowStateEventFieldCallback))
    -> WidgetClassWindowStateEventFieldCallback
    -> C_WidgetClassWindowStateEventFieldCallback
    wrap_WidgetClassWindowStateEventFieldCallback Maybe (Ptr (FunPtr C_WidgetClassWindowStateEventFieldCallback))
    forall a. Maybe a
    Nothing WidgetClassWindowStateEventFieldCallback
    cb
        C_WidgetClassWindowStateEventFieldCallback
    -> IO (FunPtr C_WidgetClassWindowStateEventFieldCallback)
    mk_WidgetClassWindowStateEventFieldCallback C_WidgetClassWindowStateEventFieldCallback
    cb' IO (FunPtr C_WidgetClassWindowStateEventFieldCallback)
    -> (FunPtr C_WidgetClassWindowStateEventFieldCallback
        -> IO (GClosure C_WidgetClassWindowStateEventFieldCallback))
    -> IO (GClosure C_WidgetClassWindowStateEventFieldCallback)
    forall a b. IO a -> (a -> IO b) -> IO b
    forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
    >>= FunPtr C_WidgetClassWindowStateEventFieldCallback
    -> IO (GClosure C_WidgetClassWindowStateEventFieldCallback)
    forall (m :: * -> *) a. MonadIO m => FunPtr a -> m (GClosure a)
    B.GClosure.newGClosure

    -- | Wrap a `WidgetClassWindowStateEventFieldCallback` into a `C_WidgetClassWindowStateEventFieldCallback`.
    wrap_WidgetClassWindowStateEventFieldCallback ::
        Maybe (Ptr (FunPtr C_WidgetClassWindowStateEventFieldCallback)) ->
        WidgetClassWindowStateEventFieldCallback ->
        C_WidgetClassWindowStateEventFieldCallback
    wrap_WidgetClassWindowStateEventFieldCallback :: Maybe (Ptr (FunPtr C_WidgetClassWindowStateEventFieldCallback))
    -> WidgetClassWindowStateEventFieldCallback
    -> C_WidgetClassWindowStateEventFieldCallback
    wrap_WidgetClassWindowStateEventFieldCallback Maybe (Ptr (FunPtr C_WidgetClassWindowStateEventFieldCallback))
    gi'funptrptr WidgetClassWindowStateEventFieldCallback
    gi'cb Ptr Widget
    widget Ptr EventWindowState
    event = do
        widget' <- ((ManagedPtr Widget -> Widget) -> Ptr Widget -> IO Widget
    forall a b.
    (HasCallStack, GObject a, GObject b) =>
    (ManagedPtr a -> a) -> Ptr b -> IO a
    newObject ManagedPtr Widget -> Widget
    Gtk.Widget.Widget) Ptr Widget
    widget
        event' <- (newPtr Gdk.EventWindowState.EventWindowState) event
        result <- gi'cb  widget' event'
        maybeReleaseFunPtr gi'funptrptr
        let result' = (Int -> CInt
    forall a b. (Integral a, Num b) => a -> b
    P.fromIntegral (Int -> CInt) -> (Bool -> Int) -> Bool -> CInt
    forall b c a. (b -> c) -> (a -> b) -> a -> c
    . Bool -> Int
    forall a. Enum a => a -> Int
    P.fromEnum) Bool
    result
        return result'

    -- callback WidgetClassVisibilityNotifyEventFieldCallback
    {- Callable
      { returnType = Just (TBasicType TBoolean)
      , returnMayBeNull = False
      , returnTransfer = TransferNothing
      , returnDocumentation =
          Documentation { rawDocText = Nothing , sinceVersion = Nothing }
      , args =
          [ Arg
              { argCName = "widget"
              , argType = TInterface Name { namespace = "Gtk" , name = "Widget" }
              , argCType = Just "GtkWidget*"
              , direction = DirectionIn
              , mayBeNull = False
              , argDoc =
                  Documentation { rawDocText = Nothing , sinceVersion = Nothing }
              , argScope = ScopeTypeInvalid
              , argClosure = -1
              , argDestroy = -1
              , argCallerAllocates = False
              , argCallbackUserData = False
              , transfer = TransferNothing
              }
          , Arg
              { argCName = "event"
              , argType =
                  TInterface Name { namespace = "Gdk" , name = "EventVisibility" }
              , argCType = Just "GdkEventVisibility*"
              , direction = DirectionIn
              , mayBeNull = False
              , argDoc =
                  Documentation { rawDocText = Nothing , sinceVersion = Nothing }
              , argScope = ScopeTypeInvalid
              , argClosure = -1
              , argDestroy = -1
              , argCallerAllocates = False
              , argCallbackUserData = False
              , transfer = TransferNothing
              }
          ]
      , skipReturn = False
      , callableThrows = False
      , callableDeprecated = Nothing
      , callableDocumentation =
          Documentation { rawDocText = Nothing , sinceVersion = Nothing }
      , callableResolvable = Nothing
      }
    -}
    -- | Type for the callback on the (unwrapped) C side.
    type C_WidgetClassVisibilityNotifyEventFieldCallback =
        Ptr Gtk.Widget.Widget ->
        Ptr Gdk.EventVisibility.EventVisibility ->
        IO CInt

    -- Args: [ Arg
    --           { argCName = "widget"
    --           , argType = TInterface Name { namespace = "Gtk" , name = "Widget" }
    --           , argCType = Just "GtkWidget*"
    --           , direction = DirectionIn
    --           , mayBeNull = False
    --           , argDoc =
    --               Documentation { rawDocText = Nothing , sinceVersion = Nothing }
    --           , argScope = ScopeTypeInvalid
    --           , argClosure = -1
    --           , argDestroy = -1
    --           , argCallerAllocates = False
    --           , argCallbackUserData = False
    --           , transfer = TransferNothing
    --           }
    --       , Arg
    --           { argCName = "event"
    --           , argType =
    --               TInterface Name { namespace = "Gdk" , name = "EventVisibility" }
    --           , argCType = Just "GdkEventVisibility*"
    --           , direction = DirectionIn
    --           , mayBeNull = False
    --           , argDoc =
    --               Documentation { rawDocText = Nothing , sinceVersion = Nothing }
    --           , argScope = ScopeTypeInvalid
    --           , argClosure = -1
    --           , argDestroy = -1
    --           , argCallerAllocates = False
    --           , argCallbackUserData = False
    --           , transfer = TransferNothing
    --           }
    --       ]
    -- Lengths: []
    -- returnType: Just (TBasicType TBoolean)
    -- throws : False
    -- Skip return : False

    foreign import ccall "dynamic" __dynamic_C_WidgetClassVisibilityNotifyEventFieldCallback :: FunPtr C_WidgetClassVisibilityNotifyEventFieldCallback -> C_WidgetClassVisibilityNotifyEventFieldCallback

    -- | Given a pointer to a foreign C function, wrap it into a function callable from Haskell.
    dynamic_WidgetClassVisibilityNotifyEventFieldCallback ::
        (B.CallStack.HasCallStack, MonadIO m, Gtk.Widget.IsWidget a) =>
        FunPtr C_WidgetClassVisibilityNotifyEventFieldCallback
        -> a
        -> Gdk.EventVisibility.EventVisibility
        -> m Bool
    dynamic_WidgetClassVisibilityNotifyEventFieldCallback :: forall (m :: * -> *) a.
    (HasCallStack, MonadIO m, IsWidget a) =>
    FunPtr C_WidgetClassVisibilityNotifyEventFieldCallback
    -> a -> EventVisibility -> m Bool
    dynamic_WidgetClassVisibilityNotifyEventFieldCallback FunPtr C_WidgetClassVisibilityNotifyEventFieldCallback
    __funPtr a
    widget EventVisibility
    event = IO Bool -> m Bool
    forall a. IO a -> m a
    forall (m :: * -> *) a. MonadIO m => IO a -> m a
    liftIO (IO Bool -> m Bool) -> IO Bool -> m Bool
    forall a b. (a -> b) -> a -> b
    $ do
        widget' <- a -> IO (Ptr Widget)
    forall a b. (HasCallStack, ManagedPtrNewtype a) => a -> IO (Ptr b)
    unsafeManagedPtrCastPtr a
    widget
        event' <- unsafeManagedPtrGetPtr event
        result <- (__dynamic_C_WidgetClassVisibilityNotifyEventFieldCallback __funPtr) widget' event'
        let result' = (CInt -> CInt -> Bool
    forall a. Eq a => a -> a -> Bool
    /= CInt
    0) CInt
    result
        touchManagedPtr widget
        touchManagedPtr event
        return result'

    -- | Generate a function pointer callable from C code, from a `C_WidgetClassVisibilityNotifyEventFieldCallback`.
    foreign import ccall "wrapper"
        mk_WidgetClassVisibilityNotifyEventFieldCallback :: C_WidgetClassVisibilityNotifyEventFieldCallback -> IO (FunPtr C_WidgetClassVisibilityNotifyEventFieldCallback)

    -- | /No description available in the introspection data./
    type WidgetClassVisibilityNotifyEventFieldCallback =
        Gtk.Widget.Widget
        -> Gdk.EventVisibility.EventVisibility
        -> IO Bool

    -- | A convenience synonym for @`Nothing` :: `Maybe` `WidgetClassVisibilityNotifyEventFieldCallback`@.
    noWidgetClassVisibilityNotifyEventFieldCallback :: Maybe WidgetClassVisibilityNotifyEventFieldCallback
    noWidgetClassVisibilityNotifyEventFieldCallback :: Maybe WidgetClassVisibilityNotifyEventFieldCallback
    noWidgetClassVisibilityNotifyEventFieldCallback = Maybe WidgetClassVisibilityNotifyEventFieldCallback
    forall a. Maybe a
    Nothing

    -- | Wrap the callback into a `GClosure`.
    genClosure_WidgetClassVisibilityNotifyEventFieldCallback :: MonadIO m => WidgetClassVisibilityNotifyEventFieldCallback -> m (GClosure C_WidgetClassVisibilityNotifyEventFieldCallback)
    genClosure_WidgetClassVisibilityNotifyEventFieldCallback :: forall (m :: * -> *).
    MonadIO m =>
    WidgetClassVisibilityNotifyEventFieldCallback
    -> m (GClosure C_WidgetClassVisibilityNotifyEventFieldCallback)
    genClosure_WidgetClassVisibilityNotifyEventFieldCallback WidgetClassVisibilityNotifyEventFieldCallback
    cb = IO (GClosure C_WidgetClassVisibilityNotifyEventFieldCallback)
    -> m (GClosure C_WidgetClassVisibilityNotifyEventFieldCallback)
    forall a. IO a -> m a
    forall (m :: * -> *) a. MonadIO m => IO a -> m a
    liftIO (IO (GClosure C_WidgetClassVisibilityNotifyEventFieldCallback)
     -> m (GClosure C_WidgetClassVisibilityNotifyEventFieldCallback))
    -> IO (GClosure C_WidgetClassVisibilityNotifyEventFieldCallback)
    -> m (GClosure C_WidgetClassVisibilityNotifyEventFieldCallback)
    forall a b. (a -> b) -> a -> b
    $ do
        let cb' :: C_WidgetClassVisibilityNotifyEventFieldCallback
    cb' = Maybe
      (Ptr (FunPtr C_WidgetClassVisibilityNotifyEventFieldCallback))
    -> WidgetClassVisibilityNotifyEventFieldCallback
    -> C_WidgetClassVisibilityNotifyEventFieldCallback
    wrap_WidgetClassVisibilityNotifyEventFieldCallback Maybe
      (Ptr (FunPtr C_WidgetClassVisibilityNotifyEventFieldCallback))
    forall a. Maybe a
    Nothing WidgetClassVisibilityNotifyEventFieldCallback
    cb
        C_WidgetClassVisibilityNotifyEventFieldCallback
    -> IO (FunPtr C_WidgetClassVisibilityNotifyEventFieldCallback)
    mk_WidgetClassVisibilityNotifyEventFieldCallback C_WidgetClassVisibilityNotifyEventFieldCallback
    cb' IO (FunPtr C_WidgetClassVisibilityNotifyEventFieldCallback)
    -> (FunPtr C_WidgetClassVisibilityNotifyEventFieldCallback
        -> IO (GClosure C_WidgetClassVisibilityNotifyEventFieldCallback))
    -> IO (GClosure C_WidgetClassVisibilityNotifyEventFieldCallback)
    forall a b. IO a -> (a -> IO b) -> IO b
    forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
    >>= FunPtr C_WidgetClassVisibilityNotifyEventFieldCallback
    -> IO (GClosure C_WidgetClassVisibilityNotifyEventFieldCallback)
    forall (m :: * -> *) a. MonadIO m => FunPtr a -> m (GClosure a)
    B.GClosure.newGClosure

    -- | Wrap a `WidgetClassVisibilityNotifyEventFieldCallback` into a `C_WidgetClassVisibilityNotifyEventFieldCallback`.
    wrap_WidgetClassVisibilityNotifyEventFieldCallback ::
        Maybe (Ptr (FunPtr C_WidgetClassVisibilityNotifyEventFieldCallback)) ->
        WidgetClassVisibilityNotifyEventFieldCallback ->
        C_WidgetClassVisibilityNotifyEventFieldCallback
    wrap_WidgetClassVisibilityNotifyEventFieldCallback :: Maybe
      (Ptr (FunPtr C_WidgetClassVisibilityNotifyEventFieldCallback))
    -> WidgetClassVisibilityNotifyEventFieldCallback
    -> C_WidgetClassVisibilityNotifyEventFieldCallback
    wrap_WidgetClassVisibilityNotifyEventFieldCallback Maybe
      (Ptr (FunPtr C_WidgetClassVisibilityNotifyEventFieldCallback))
    gi'funptrptr WidgetClassVisibilityNotifyEventFieldCallback
    gi'cb Ptr Widget
    widget Ptr EventVisibility
    event = do
        widget' <- ((ManagedPtr Widget -> Widget) -> Ptr Widget -> IO Widget
    forall a b.
    (HasCallStack, GObject a, GObject b) =>
    (ManagedPtr a -> a) -> Ptr b -> IO a
    newObject ManagedPtr Widget -> Widget
    Gtk.Widget.Widget) Ptr Widget
    widget
        event' <- (newPtr Gdk.EventVisibility.EventVisibility) event
        result <- gi'cb  widget' event'
        maybeReleaseFunPtr gi'funptrptr
        let result' = (Int -> CInt
    forall a b. (Integral a, Num b) => a -> b
    P.fromIntegral (Int -> CInt) -> (Bool -> Int) -> Bool -> CInt
    forall b c a. (b -> c) -> (a -> b) -> a -> c
    . Bool -> Int
    forall a. Enum a => a -> Int
    P.fromEnum) Bool
    result
        return result'

    -- callback WidgetClassUnrealizeFieldCallback
    {- Callable
      { returnType = Nothing
      , returnMayBeNull = False
      , returnTransfer = TransferNothing
      , returnDocumentation =
          Documentation { rawDocText = Nothing , sinceVersion = Nothing }
      , args =
          [ Arg
              { argCName = "widget"
              , argType = TInterface Name { namespace = "Gtk" , name = "Widget" }
              , argCType = Just "GtkWidget*"
              , direction = DirectionIn
              , mayBeNull = False
              , argDoc =
                  Documentation
                    { rawDocText = Just "a #GtkWidget" , sinceVersion = Nothing }
              , argScope = ScopeTypeInvalid
              , argClosure = -1
              , argDestroy = -1
              , argCallerAllocates = False
              , argCallbackUserData = False
              , transfer = TransferNothing
              }
          ]
      , skipReturn = False
      , callableThrows = False
      , callableDeprecated = Nothing
      , callableDocumentation =
          Documentation { rawDocText = Nothing , sinceVersion = Nothing }
      , callableResolvable = Nothing
      }
    -}
    -- | Type for the callback on the (unwrapped) C side.
    type C_WidgetClassUnrealizeFieldCallback =
        Ptr Gtk.Widget.Widget ->
        IO ()

    -- Args: [ Arg
    --           { argCName = "widget"
    --           , argType = TInterface Name { namespace = "Gtk" , name = "Widget" }
    --           , argCType = Just "GtkWidget*"
    --           , direction = DirectionIn
    --           , mayBeNull = False
    --           , argDoc =
    --               Documentation
    --                 { rawDocText = Just "a #GtkWidget" , sinceVersion = Nothing }
    --           , argScope = ScopeTypeInvalid
    --           , argClosure = -1
    --           , argDestroy = -1
    --           , argCallerAllocates = False
    --           , argCallbackUserData = False
    --           , transfer = TransferNothing
    --           }
    --       ]
    -- Lengths: []
    -- returnType: Nothing
    -- throws : False
    -- Skip return : False

    foreign import ccall "dynamic" __dynamic_C_WidgetClassUnrealizeFieldCallback :: FunPtr C_WidgetClassUnrealizeFieldCallback -> C_WidgetClassUnrealizeFieldCallback

    -- | Given a pointer to a foreign C function, wrap it into a function callable from Haskell.
    dynamic_WidgetClassUnrealizeFieldCallback ::
        (B.CallStack.HasCallStack, MonadIO m, Gtk.Widget.IsWidget a) =>
        FunPtr C_WidgetClassUnrealizeFieldCallback
        -> a
        -- ^ /@widget@/: a t'GI.Gtk.Objects.Widget.Widget'
        -> m ()
    dynamic_WidgetClassUnrealizeFieldCallback :: forall (m :: * -> *) a.
    (HasCallStack, MonadIO m, IsWidget a) =>
    FunPtr C_WidgetClassUnrealizeFieldCallback -> a -> m ()
    dynamic_WidgetClassUnrealizeFieldCallback FunPtr C_WidgetClassUnrealizeFieldCallback
    __funPtr a
    widget = IO () -> m ()
    forall a. IO a -> m a
    forall (m :: * -> *) a. MonadIO m => IO a -> m a
    liftIO (IO () -> m ()) -> IO () -> m ()
    forall a b. (a -> b) -> a -> b
    $ do
        widget' <- a -> IO (Ptr Widget)
    forall a b. (HasCallStack, ManagedPtrNewtype a) => a -> IO (Ptr b)
    unsafeManagedPtrCastPtr a
    widget
        (__dynamic_C_WidgetClassUnrealizeFieldCallback __funPtr) widget'
        touchManagedPtr widget
        return ()

    -- | Generate a function pointer callable from C code, from a `C_WidgetClassUnrealizeFieldCallback`.
    foreign import ccall "wrapper"
        mk_WidgetClassUnrealizeFieldCallback :: C_WidgetClassUnrealizeFieldCallback -> IO (FunPtr C_WidgetClassUnrealizeFieldCallback)

    -- | /No description available in the introspection data./
    type WidgetClassUnrealizeFieldCallback =
        Gtk.Widget.Widget
        -- ^ /@widget@/: a t'GI.Gtk.Objects.Widget.Widget'
        -> IO ()

    -- | A convenience synonym for @`Nothing` :: `Maybe` `WidgetClassUnrealizeFieldCallback`@.
    noWidgetClassUnrealizeFieldCallback :: Maybe WidgetClassUnrealizeFieldCallback
    noWidgetClassUnrealizeFieldCallback :: Maybe WidgetClassUnrealizeFieldCallback
    noWidgetClassUnrealizeFieldCallback = Maybe WidgetClassUnrealizeFieldCallback
    forall a. Maybe a
    Nothing

    -- | Wrap the callback into a `GClosure`.
    genClosure_WidgetClassUnrealizeFieldCallback :: MonadIO m => WidgetClassUnrealizeFieldCallback -> m (GClosure C_WidgetClassUnrealizeFieldCallback)
    genClosure_WidgetClassUnrealizeFieldCallback :: forall (m :: * -> *).
    MonadIO m =>
    WidgetClassUnrealizeFieldCallback
    -> m (GClosure C_WidgetClassUnrealizeFieldCallback)
    genClosure_WidgetClassUnrealizeFieldCallback WidgetClassUnrealizeFieldCallback
    cb = IO (GClosure C_WidgetClassUnrealizeFieldCallback)
    -> m (GClosure C_WidgetClassUnrealizeFieldCallback)
    forall a. IO a -> m a
    forall (m :: * -> *) a. MonadIO m => IO a -> m a
    liftIO (IO (GClosure C_WidgetClassUnrealizeFieldCallback)
     -> m (GClosure C_WidgetClassUnrealizeFieldCallback))
    -> IO (GClosure C_WidgetClassUnrealizeFieldCallback)
    -> m (GClosure C_WidgetClassUnrealizeFieldCallback)
    forall a b. (a -> b) -> a -> b
    $ do
        let cb' :: C_WidgetClassUnrealizeFieldCallback
    cb' = Maybe (Ptr (FunPtr C_WidgetClassUnrealizeFieldCallback))
    -> WidgetClassUnrealizeFieldCallback
    -> C_WidgetClassUnrealizeFieldCallback
    wrap_WidgetClassUnrealizeFieldCallback Maybe (Ptr (FunPtr C_WidgetClassUnrealizeFieldCallback))
    forall a. Maybe a
    Nothing WidgetClassUnrealizeFieldCallback
    cb
        C_WidgetClassUnrealizeFieldCallback
    -> IO (FunPtr C_WidgetClassUnrealizeFieldCallback)
    mk_WidgetClassUnrealizeFieldCallback C_WidgetClassUnrealizeFieldCallback
    cb' IO (FunPtr C_WidgetClassUnrealizeFieldCallback)
    -> (FunPtr C_WidgetClassUnrealizeFieldCallback
        -> IO (GClosure C_WidgetClassUnrealizeFieldCallback))
    -> IO (GClosure C_WidgetClassUnrealizeFieldCallback)
    forall a b. IO a -> (a -> IO b) -> IO b
    forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
    >>= FunPtr C_WidgetClassUnrealizeFieldCallback
    -> IO (GClosure C_WidgetClassUnrealizeFieldCallback)
    forall (m :: * -> *) a. MonadIO m => FunPtr a -> m (GClosure a)
    B.GClosure.newGClosure

    -- | Wrap a `WidgetClassUnrealizeFieldCallback` into a `C_WidgetClassUnrealizeFieldCallback`.
    wrap_WidgetClassUnrealizeFieldCallback ::
        Maybe (Ptr (FunPtr C_WidgetClassUnrealizeFieldCallback)) ->
        WidgetClassUnrealizeFieldCallback ->
        C_WidgetClassUnrealizeFieldCallback
    wrap_WidgetClassUnrealizeFieldCallback :: Maybe (Ptr (FunPtr C_WidgetClassUnrealizeFieldCallback))
    -> WidgetClassUnrealizeFieldCallback
    -> C_WidgetClassUnrealizeFieldCallback
    wrap_WidgetClassUnrealizeFieldCallback Maybe (Ptr (FunPtr C_WidgetClassUnrealizeFieldCallback))
    gi'funptrptr WidgetClassUnrealizeFieldCallback
    gi'cb Ptr Widget
    widget = do
        widget' <- ((ManagedPtr Widget -> Widget) -> Ptr Widget -> IO Widget
    forall a b.
    (HasCallStack, GObject a, GObject b) =>
    (ManagedPtr a -> a) -> Ptr b -> IO a
    newObject ManagedPtr Widget -> Widget
    Gtk.Widget.Widget) Ptr Widget
    widget
        gi'cb  widget'
        maybeReleaseFunPtr gi'funptrptr

    -- callback WidgetClassUnmapFieldCallback
    {- Callable
      { returnType = Nothing
      , returnMayBeNull = False
      , returnTransfer = TransferNothing
      , returnDocumentation =
          Documentation { rawDocText = Nothing , sinceVersion = Nothing }
      , args =
          [ Arg
              { argCName = "widget"
              , argType = TInterface Name { namespace = "Gtk" , name = "Widget" }
              , argCType = Just "GtkWidget*"
              , direction = DirectionIn
              , mayBeNull = False
              , argDoc =
                  Documentation
                    { rawDocText = Just "a #GtkWidget" , sinceVersion = Nothing }
              , argScope = ScopeTypeInvalid
              , argClosure = -1
              , argDestroy = -1
              , argCallerAllocates = False
              , argCallbackUserData = False
              , transfer = TransferNothing
              }
          ]
      , skipReturn = False
      , callableThrows = False
      , callableDeprecated = Nothing
      , callableDocumentation =
          Documentation { rawDocText = Nothing , sinceVersion = Nothing }
      , callableResolvable = Nothing
      }
    -}
    -- | Type for the callback on the (unwrapped) C side.
    type C_WidgetClassUnmapFieldCallback =
        Ptr Gtk.Widget.Widget ->
        IO ()

    -- Args: [ Arg
    --           { argCName = "widget"
    --           , argType = TInterface Name { namespace = "Gtk" , name = "Widget" }
    --           , argCType = Just "GtkWidget*"
    --           , direction = DirectionIn
    --           , mayBeNull = False
    --           , argDoc =
    --               Documentation
    --                 { rawDocText = Just "a #GtkWidget" , sinceVersion = Nothing }
    --           , argScope = ScopeTypeInvalid
    --           , argClosure = -1
    --           , argDestroy = -1
    --           , argCallerAllocates = False
    --           , argCallbackUserData = False
    --           , transfer = TransferNothing
    --           }
    --       ]
    -- Lengths: []
    -- returnType: Nothing
    -- throws : False
    -- Skip return : False

    foreign import ccall "dynamic" __dynamic_C_WidgetClassUnmapFieldCallback :: FunPtr C_WidgetClassUnmapFieldCallback -> C_WidgetClassUnmapFieldCallback

    -- | Given a pointer to a foreign C function, wrap it into a function callable from Haskell.
    dynamic_WidgetClassUnmapFieldCallback ::
        (B.CallStack.HasCallStack, MonadIO m, Gtk.Widget.IsWidget a) =>
        FunPtr C_WidgetClassUnmapFieldCallback
        -> a
        -- ^ /@widget@/: a t'GI.Gtk.Objects.Widget.Widget'
        -> m ()
    dynamic_WidgetClassUnmapFieldCallback :: forall (m :: * -> *) a.
    (HasCallStack, MonadIO m, IsWidget a) =>
    FunPtr C_WidgetClassUnrealizeFieldCallback -> a -> m ()
    dynamic_WidgetClassUnmapFieldCallback FunPtr C_WidgetClassUnrealizeFieldCallback
    __funPtr a
    widget = IO () -> m ()
    forall a. IO a -> m a
    forall (m :: * -> *) a. MonadIO m => IO a -> m a
    liftIO (IO () -> m ()) -> IO () -> m ()
    forall a b. (a -> b) -> a -> b
    $ do
        widget' <- a -> IO (Ptr Widget)
    forall a b. (HasCallStack, ManagedPtrNewtype a) => a -> IO (Ptr b)
    unsafeManagedPtrCastPtr a
    widget
        (__dynamic_C_WidgetClassUnmapFieldCallback __funPtr) widget'
        touchManagedPtr widget
        return ()

    -- | Generate a function pointer callable from C code, from a `C_WidgetClassUnmapFieldCallback`.
    foreign import ccall "wrapper"
        mk_WidgetClassUnmapFieldCallback :: C_WidgetClassUnmapFieldCallback -> IO (FunPtr C_WidgetClassUnmapFieldCallback)

    -- | /No description available in the introspection data./
    type WidgetClassUnmapFieldCallback =
        Gtk.Widget.Widget
        -- ^ /@widget@/: a t'GI.Gtk.Objects.Widget.Widget'
        -> IO ()

    -- | A convenience synonym for @`Nothing` :: `Maybe` `WidgetClassUnmapFieldCallback`@.
    noWidgetClassUnmapFieldCallback :: Maybe WidgetClassUnmapFieldCallback
    noWidgetClassUnmapFieldCallback :: Maybe WidgetClassUnrealizeFieldCallback
    noWidgetClassUnmapFieldCallback = Maybe WidgetClassUnrealizeFieldCallback
    forall a. Maybe a
    Nothing

    -- | Wrap the callback into a `GClosure`.
    genClosure_WidgetClassUnmapFieldCallback :: MonadIO m => WidgetClassUnmapFieldCallback -> m (GClosure C_WidgetClassUnmapFieldCallback)
    genClosure_WidgetClassUnmapFieldCallback :: forall (m :: * -> *).
    MonadIO m =>
    WidgetClassUnrealizeFieldCallback
    -> m (GClosure C_WidgetClassUnrealizeFieldCallback)
    genClosure_WidgetClassUnmapFieldCallback WidgetClassUnrealizeFieldCallback
    cb = IO (GClosure C_WidgetClassUnrealizeFieldCallback)
    -> m (GClosure C_WidgetClassUnrealizeFieldCallback)
    forall a. IO a -> m a
    forall (m :: * -> *) a. MonadIO m => IO a -> m a
    liftIO (IO (GClosure C_WidgetClassUnrealizeFieldCallback)
     -> m (GClosure C_WidgetClassUnrealizeFieldCallback))
    -> IO (GClosure C_WidgetClassUnrealizeFieldCallback)
    -> m (GClosure C_WidgetClassUnrealizeFieldCallback)
    forall a b. (a -> b) -> a -> b
    $ do
        let cb' :: C_WidgetClassUnrealizeFieldCallback
    cb' = Maybe (Ptr (FunPtr C_WidgetClassUnrealizeFieldCallback))
    -> WidgetClassUnrealizeFieldCallback
    -> C_WidgetClassUnrealizeFieldCallback
    wrap_WidgetClassUnmapFieldCallback Maybe (Ptr (FunPtr C_WidgetClassUnrealizeFieldCallback))
    forall a. Maybe a
    Nothing WidgetClassUnrealizeFieldCallback
    cb
        C_WidgetClassUnrealizeFieldCallback
    -> IO (FunPtr C_WidgetClassUnrealizeFieldCallback)
    mk_WidgetClassUnmapFieldCallback C_WidgetClassUnrealizeFieldCallback
    cb' IO (FunPtr C_WidgetClassUnrealizeFieldCallback)
    -> (FunPtr C_WidgetClassUnrealizeFieldCallback
        -> IO (GClosure C_WidgetClassUnrealizeFieldCallback))
    -> IO (GClosure C_WidgetClassUnrealizeFieldCallback)
    forall a b. IO a -> (a -> IO b) -> IO b
    forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
    >>= FunPtr C_WidgetClassUnrealizeFieldCallback
    -> IO (GClosure C_WidgetClassUnrealizeFieldCallback)
    forall (m :: * -> *) a. MonadIO m => FunPtr a -> m (GClosure a)
    B.GClosure.newGClosure

    -- | Wrap a `WidgetClassUnmapFieldCallback` into a `C_WidgetClassUnmapFieldCallback`.
    wrap_WidgetClassUnmapFieldCallback ::
        Maybe (Ptr (FunPtr C_WidgetClassUnmapFieldCallback)) ->
        WidgetClassUnmapFieldCallback ->
        C_WidgetClassUnmapFieldCallback
    wrap_WidgetClassUnmapFieldCallback :: Maybe (Ptr (FunPtr C_WidgetClassUnrealizeFieldCallback))
    -> WidgetClassUnrealizeFieldCallback
    -> C_WidgetClassUnrealizeFieldCallback
    wrap_WidgetClassUnmapFieldCallback Maybe (Ptr (FunPtr C_WidgetClassUnrealizeFieldCallback))
    gi'funptrptr WidgetClassUnrealizeFieldCallback
    gi'cb Ptr Widget
    widget = do
        widget' <- ((ManagedPtr Widget -> Widget) -> Ptr Widget -> IO Widget
    forall a b.
    (HasCallStack, GObject a, GObject b) =>
    (ManagedPtr a -> a) -> Ptr b -> IO a
    newObject ManagedPtr Widget -> Widget
    Gtk.Widget.Widget) Ptr Widget
    widget
        gi'cb  widget'
        maybeReleaseFunPtr gi'funptrptr

    -- callback WidgetClassUnmapEventFieldCallback
    {- Callable
      { returnType = Just (TBasicType TBoolean)
      , returnMayBeNull = False
      , returnTransfer = TransferNothing
      , returnDocumentation =
          Documentation { rawDocText = Nothing , sinceVersion = Nothing }
      , args =
          [ Arg
              { argCName = "widget"
              , argType = TInterface Name { namespace = "Gtk" , name = "Widget" }
              , argCType = Just "GtkWidget*"
              , direction = DirectionIn
              , mayBeNull = False
              , argDoc =
                  Documentation { rawDocText = Nothing , sinceVersion = Nothing }
              , argScope = ScopeTypeInvalid
              , argClosure = -1
              , argDestroy = -1
              , argCallerAllocates = False
              , argCallbackUserData = False
              , transfer = TransferNothing
              }
          , Arg
              { argCName = "event"
              , argType =
                  TInterface Name { namespace = "Gdk" , name = "EventAny" }
              , argCType = Just "GdkEventAny*"
              , direction = DirectionIn
              , mayBeNull = False
              , argDoc =
                  Documentation { rawDocText = Nothing , sinceVersion = Nothing }
              , argScope = ScopeTypeInvalid
              , argClosure = -1
              , argDestroy = -1
              , argCallerAllocates = False
              , argCallbackUserData = False
              , transfer = TransferNothing
              }
          ]
      , skipReturn = False
      , callableThrows = False
      , callableDeprecated = Nothing
      , callableDocumentation =
          Documentation { rawDocText = Nothing , sinceVersion = Nothing }
      , callableResolvable = Nothing
      }
    -}
    -- | Type for the callback on the (unwrapped) C side.
    type C_WidgetClassUnmapEventFieldCallback =
        Ptr Gtk.Widget.Widget ->
        Ptr Gdk.EventAny.EventAny ->
        IO CInt

    -- Args: [ Arg
    --           { argCName = "widget"
    --           , argType = TInterface Name { namespace = "Gtk" , name = "Widget" }
    --           , argCType = Just "GtkWidget*"
    --           , direction = DirectionIn
    --           , mayBeNull = False
    --           , argDoc =
    --               Documentation { rawDocText = Nothing , sinceVersion = Nothing }
    --           , argScope = ScopeTypeInvalid
    --           , argClosure = -1
    --           , argDestroy = -1
    --           , argCallerAllocates = False
    --           , argCallbackUserData = False
    --           , transfer = TransferNothing
    --           }
    --       , Arg
    --           { argCName = "event"
    --           , argType =
    --               TInterface Name { namespace = "Gdk" , name = "EventAny" }
    --           , argCType = Just "GdkEventAny*"
    --           , direction = DirectionIn
    --           , mayBeNull = False
    --           , argDoc =
    --               Documentation { rawDocText = Nothing , sinceVersion = Nothing }
    --           , argScope = ScopeTypeInvalid
    --           , argClosure = -1
    --           , argDestroy = -1
    --           , argCallerAllocates = False
    --           , argCallbackUserData = False
    --           , transfer = TransferNothing
    --           }
    --       ]
    -- Lengths: []
    -- returnType: Just (TBasicType TBoolean)
    -- throws : False
    -- Skip return : False

    foreign import ccall "dynamic" __dynamic_C_WidgetClassUnmapEventFieldCallback :: FunPtr C_WidgetClassUnmapEventFieldCallback -> C_WidgetClassUnmapEventFieldCallback

    -- | Given a pointer to a foreign C function, wrap it into a function callable from Haskell.
    dynamic_WidgetClassUnmapEventFieldCallback ::
        (B.CallStack.HasCallStack, MonadIO m, Gtk.Widget.IsWidget a) =>
        FunPtr C_WidgetClassUnmapEventFieldCallback
        -> a
        -> Gdk.EventAny.EventAny
        -> m Bool
    dynamic_WidgetClassUnmapEventFieldCallback :: forall (m :: * -> *) a.
    (HasCallStack, MonadIO m, IsWidget a) =>
    FunPtr C_WidgetClassUnmapEventFieldCallback
    -> a -> EventAny -> m Bool
    dynamic_WidgetClassUnmapEventFieldCallback FunPtr C_WidgetClassUnmapEventFieldCallback
    __funPtr a
    widget EventAny
    event = IO Bool -> m Bool
    forall a. IO a -> m a
    forall (m :: * -> *) a. MonadIO m => IO a -> m a
    liftIO (IO Bool -> m Bool) -> IO Bool -> m Bool
    forall a b. (a -> b) -> a -> b
    $ do
        widget' <- a -> IO (Ptr Widget)
    forall a b. (HasCallStack, ManagedPtrNewtype a) => a -> IO (Ptr b)
    unsafeManagedPtrCastPtr a
    widget
        event' <- unsafeManagedPtrGetPtr event
        result <- (__dynamic_C_WidgetClassUnmapEventFieldCallback __funPtr) widget' event'
        let result' = (CInt -> CInt -> Bool
    forall a. Eq a => a -> a -> Bool
    /= CInt
    0) CInt
    result
        touchManagedPtr widget
        touchManagedPtr event
        return result'

    -- | Generate a function pointer callable from C code, from a `C_WidgetClassUnmapEventFieldCallback`.
    foreign import ccall "wrapper"
        mk_WidgetClassUnmapEventFieldCallback :: C_WidgetClassUnmapEventFieldCallback -> IO (FunPtr C_WidgetClassUnmapEventFieldCallback)

    -- | /No description available in the introspection data./
    type WidgetClassUnmapEventFieldCallback =
        Gtk.Widget.Widget
        -> Gdk.EventAny.EventAny
        -> IO Bool

    -- | A convenience synonym for @`Nothing` :: `Maybe` `WidgetClassUnmapEventFieldCallback`@.
    noWidgetClassUnmapEventFieldCallback :: Maybe WidgetClassUnmapEventFieldCallback
    noWidgetClassUnmapEventFieldCallback :: Maybe WidgetClassUnmapEventFieldCallback
    noWidgetClassUnmapEventFieldCallback = Maybe WidgetClassUnmapEventFieldCallback
    forall a. Maybe a
    Nothing

    -- | Wrap the callback into a `GClosure`.
    genClosure_WidgetClassUnmapEventFieldCallback :: MonadIO m => WidgetClassUnmapEventFieldCallback -> m (GClosure C_WidgetClassUnmapEventFieldCallback)
    genClosure_WidgetClassUnmapEventFieldCallback :: forall (m :: * -> *).
    MonadIO m =>
    WidgetClassUnmapEventFieldCallback
    -> m (GClosure C_WidgetClassUnmapEventFieldCallback)
    genClosure_WidgetClassUnmapEventFieldCallback WidgetClassUnmapEventFieldCallback
    cb = IO (GClosure C_WidgetClassUnmapEventFieldCallback)
    -> m (GClosure C_WidgetClassUnmapEventFieldCallback)
    forall a. IO a -> m a
    forall (m :: * -> *) a. MonadIO m => IO a -> m a
    liftIO (IO (GClosure C_WidgetClassUnmapEventFieldCallback)
     -> m (GClosure C_WidgetClassUnmapEventFieldCallback))
    -> IO (GClosure C_WidgetClassUnmapEventFieldCallback)
    -> m (GClosure C_WidgetClassUnmapEventFieldCallback)
    forall a b. (a -> b) -> a -> b
    $ do
        let cb' :: C_WidgetClassUnmapEventFieldCallback
    cb' = Maybe (Ptr (FunPtr C_WidgetClassUnmapEventFieldCallback))
    -> WidgetClassUnmapEventFieldCallback
    -> C_WidgetClassUnmapEventFieldCallback
    wrap_WidgetClassUnmapEventFieldCallback Maybe (Ptr (FunPtr C_WidgetClassUnmapEventFieldCallback))
    forall a. Maybe a
    Nothing WidgetClassUnmapEventFieldCallback
    cb
        C_WidgetClassUnmapEventFieldCallback
    -> IO (FunPtr C_WidgetClassUnmapEventFieldCallback)
    mk_WidgetClassUnmapEventFieldCallback C_WidgetClassUnmapEventFieldCallback
    cb' IO (FunPtr C_WidgetClassUnmapEventFieldCallback)
    -> (FunPtr C_WidgetClassUnmapEventFieldCallback
        -> IO (GClosure C_WidgetClassUnmapEventFieldCallback))
    -> IO (GClosure C_WidgetClassUnmapEventFieldCallback)
    forall a b. IO a -> (a -> IO b) -> IO b
    forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
    >>= FunPtr C_WidgetClassUnmapEventFieldCallback
    -> IO (GClosure C_WidgetClassUnmapEventFieldCallback)
    forall (m :: * -> *) a. MonadIO m => FunPtr a -> m (GClosure a)
    B.GClosure.newGClosure

    -- | Wrap a `WidgetClassUnmapEventFieldCallback` into a `C_WidgetClassUnmapEventFieldCallback`.
    wrap_WidgetClassUnmapEventFieldCallback ::
        Maybe (Ptr (FunPtr C_WidgetClassUnmapEventFieldCallback)) ->
        WidgetClassUnmapEventFieldCallback ->
        C_WidgetClassUnmapEventFieldCallback
    wrap_WidgetClassUnmapEventFieldCallback :: Maybe (Ptr (FunPtr C_WidgetClassUnmapEventFieldCallback))
    -> WidgetClassUnmapEventFieldCallback
    -> C_WidgetClassUnmapEventFieldCallback
    wrap_WidgetClassUnmapEventFieldCallback Maybe (Ptr (FunPtr C_WidgetClassUnmapEventFieldCallback))
    gi'funptrptr WidgetClassUnmapEventFieldCallback
    gi'cb Ptr Widget
    widget Ptr EventAny
    event = do
        widget' <- ((ManagedPtr Widget -> Widget) -> Ptr Widget -> IO Widget
    forall a b.
    (HasCallStack, GObject a, GObject b) =>
    (ManagedPtr a -> a) -> Ptr b -> IO a
    newObject ManagedPtr Widget -> Widget
    Gtk.Widget.Widget) Ptr Widget
    widget
        event' <- (newPtr Gdk.EventAny.EventAny) event
        result <- gi'cb  widget' event'
        maybeReleaseFunPtr gi'funptrptr
        let result' = (Int -> CInt
    forall a b. (Integral a, Num b) => a -> b
    P.fromIntegral (Int -> CInt) -> (Bool -> Int) -> Bool -> CInt
    forall b c a. (b -> c) -> (a -> b) -> a -> c
    . Bool -> Int
    forall a. Enum a => a -> Int
    P.fromEnum) Bool
    result
        return result'

    -- callback WidgetClassTouchEventFieldCallback
    {- Callable
      { returnType = Just (TBasicType TBoolean)
      , returnMayBeNull = False
      , returnTransfer = TransferNothing
      , returnDocumentation =
          Documentation { rawDocText = Nothing , sinceVersion = Nothing }
      , args =
          [ Arg
              { argCName = "widget"
              , argType = TInterface Name { namespace = "Gtk" , name = "Widget" }
              , argCType = Just "GtkWidget*"
              , direction = DirectionIn
              , mayBeNull = False
              , argDoc =
                  Documentation { rawDocText = Nothing , sinceVersion = Nothing }
              , argScope = ScopeTypeInvalid
              , argClosure = -1
              , argDestroy = -1
              , argCallerAllocates = False
              , argCallbackUserData = False
              , transfer = TransferNothing
              }
          , Arg
              { argCName = "event"
              , argType =
                  TInterface Name { namespace = "Gdk" , name = "EventTouch" }
              , argCType = Just "GdkEventTouch*"
              , direction = DirectionIn
              , mayBeNull = False
              , argDoc =
                  Documentation { rawDocText = Nothing , sinceVersion = Nothing }
              , argScope = ScopeTypeInvalid
              , argClosure = -1
              , argDestroy = -1
              , argCallerAllocates = False
              , argCallbackUserData = False
              , transfer = TransferNothing
              }
          ]
      , skipReturn = False
      , callableThrows = False
      , callableDeprecated = Nothing
      , callableDocumentation =
          Documentation { rawDocText = Nothing , sinceVersion = Nothing }
      , callableResolvable = Nothing
      }
    -}
    -- | Type for the callback on the (unwrapped) C side.
    type C_WidgetClassTouchEventFieldCallback =
        Ptr Gtk.Widget.Widget ->
        Ptr Gdk.EventTouch.EventTouch ->
        IO CInt

    -- Args: [ Arg
    --           { argCName = "widget"
    --           , argType = TInterface Name { namespace = "Gtk" , name = "Widget" }
    --           , argCType = Just "GtkWidget*"
    --           , direction = DirectionIn
    --           , mayBeNull = False
    --           , argDoc =
    --               Documentation { rawDocText = Nothing , sinceVersion = Nothing }
    --           , argScope = ScopeTypeInvalid
    --           , argClosure = -1
    --           , argDestroy = -1
    --           , argCallerAllocates = False
    --           , argCallbackUserData = False
    --           , transfer = TransferNothing
    --           }
    --       , Arg
    --           { argCName = "event"
    --           , argType =
    --               TInterface Name { namespace = "Gdk" , name = "EventTouch" }
    --           , argCType = Just "GdkEventTouch*"
    --           , direction = DirectionIn
    --           , mayBeNull = False
    --           , argDoc =
    --               Documentation { rawDocText = Nothing , sinceVersion = Nothing }
    --           , argScope = ScopeTypeInvalid
    --           , argClosure = -1
    --           , argDestroy = -1
    --           , argCallerAllocates = False
    --           , argCallbackUserData = False
    --           , transfer = TransferNothing
    --           }
    --       ]
    -- Lengths: []
    -- returnType: Just (TBasicType TBoolean)
    -- throws : False
    -- Skip return : False

    foreign import ccall "dynamic" __dynamic_C_WidgetClassTouchEventFieldCallback :: FunPtr C_WidgetClassTouchEventFieldCallback -> C_WidgetClassTouchEventFieldCallback

    -- | Given a pointer to a foreign C function, wrap it into a function callable from Haskell.
    dynamic_WidgetClassTouchEventFieldCallback ::
        (B.CallStack.HasCallStack, MonadIO m, Gtk.Widget.IsWidget a) =>
        FunPtr C_WidgetClassTouchEventFieldCallback
        -> a
        -> Gdk.EventTouch.EventTouch
        -> m Bool
    dynamic_WidgetClassTouchEventFieldCallback :: forall (m :: * -> *) a.
    (HasCallStack, MonadIO m, IsWidget a) =>
    FunPtr C_WidgetClassTouchEventFieldCallback
    -> a -> EventTouch -> m Bool
    dynamic_WidgetClassTouchEventFieldCallback FunPtr C_WidgetClassTouchEventFieldCallback
    __funPtr a
    widget EventTouch
    event = IO Bool -> m Bool
    forall a. IO a -> m a
    forall (m :: * -> *) a. MonadIO m => IO a -> m a
    liftIO (IO Bool -> m Bool) -> IO Bool -> m Bool
    forall a b. (a -> b) -> a -> b
    $ do
        widget' <- a -> IO (Ptr Widget)
    forall a b. (HasCallStack, ManagedPtrNewtype a) => a -> IO (Ptr b)
    unsafeManagedPtrCastPtr a
    widget
        event' <- unsafeManagedPtrGetPtr event
        result <- (__dynamic_C_WidgetClassTouchEventFieldCallback __funPtr) widget' event'
        let result' = (CInt -> CInt -> Bool
    forall a. Eq a => a -> a -> Bool
    /= CInt
    0) CInt
    result
        touchManagedPtr widget
        touchManagedPtr event
        return result'

    -- | Generate a function pointer callable from C code, from a `C_WidgetClassTouchEventFieldCallback`.
    foreign import ccall "wrapper"
        mk_WidgetClassTouchEventFieldCallback :: C_WidgetClassTouchEventFieldCallback -> IO (FunPtr C_WidgetClassTouchEventFieldCallback)

    -- | /No description available in the introspection data./
    type WidgetClassTouchEventFieldCallback =
        Gtk.Widget.Widget
        -> Gdk.EventTouch.EventTouch
        -> IO Bool

    -- | A convenience synonym for @`Nothing` :: `Maybe` `WidgetClassTouchEventFieldCallback`@.
    noWidgetClassTouchEventFieldCallback :: Maybe WidgetClassTouchEventFieldCallback
    noWidgetClassTouchEventFieldCallback :: Maybe WidgetClassTouchEventFieldCallback
    noWidgetClassTouchEventFieldCallback = Maybe WidgetClassTouchEventFieldCallback
    forall a. Maybe a
    Nothing

    -- | Wrap the callback into a `GClosure`.
    genClosure_WidgetClassTouchEventFieldCallback :: MonadIO m => WidgetClassTouchEventFieldCallback -> m (GClosure C_WidgetClassTouchEventFieldCallback)
    genClosure_WidgetClassTouchEventFieldCallback :: forall (m :: * -> *).
    MonadIO m =>
    WidgetClassTouchEventFieldCallback
    -> m (GClosure C_WidgetClassTouchEventFieldCallback)
    genClosure_WidgetClassTouchEventFieldCallback WidgetClassTouchEventFieldCallback
    cb = IO (GClosure C_WidgetClassTouchEventFieldCallback)
    -> m (GClosure C_WidgetClassTouchEventFieldCallback)
    forall a. IO a -> m a
    forall (m :: * -> *) a. MonadIO m => IO a -> m a
    liftIO (IO (GClosure C_WidgetClassTouchEventFieldCallback)
     -> m (GClosure C_WidgetClassTouchEventFieldCallback))
    -> IO (GClosure C_WidgetClassTouchEventFieldCallback)
    -> m (GClosure C_WidgetClassTouchEventFieldCallback)
    forall a b. (a -> b) -> a -> b
    $ do
        let cb' :: C_WidgetClassTouchEventFieldCallback
    cb' = Maybe (Ptr (FunPtr C_WidgetClassTouchEventFieldCallback))
    -> WidgetClassTouchEventFieldCallback
    -> C_WidgetClassTouchEventFieldCallback
    wrap_WidgetClassTouchEventFieldCallback Maybe (Ptr (FunPtr C_WidgetClassTouchEventFieldCallback))
    forall a. Maybe a
    Nothing WidgetClassTouchEventFieldCallback
    cb
        C_WidgetClassTouchEventFieldCallback
    -> IO (FunPtr C_WidgetClassTouchEventFieldCallback)
    mk_WidgetClassTouchEventFieldCallback C_WidgetClassTouchEventFieldCallback
    cb' IO (FunPtr C_WidgetClassTouchEventFieldCallback)
    -> (FunPtr C_WidgetClassTouchEventFieldCallback
        -> IO (GClosure C_WidgetClassTouchEventFieldCallback))
    -> IO (GClosure C_WidgetClassTouchEventFieldCallback)
    forall a b. IO a -> (a -> IO b) -> IO b
    forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
    >>= FunPtr C_WidgetClassTouchEventFieldCallback
    -> IO (GClosure C_WidgetClassTouchEventFieldCallback)
    forall (m :: * -> *) a. MonadIO m => FunPtr a -> m (GClosure a)
    B.GClosure.newGClosure

    -- | Wrap a `WidgetClassTouchEventFieldCallback` into a `C_WidgetClassTouchEventFieldCallback`.
    wrap_WidgetClassTouchEventFieldCallback ::
        Maybe (Ptr (FunPtr C_WidgetClassTouchEventFieldCallback)) ->
        WidgetClassTouchEventFieldCallback ->
        C_WidgetClassTouchEventFieldCallback
    wrap_WidgetClassTouchEventFieldCallback :: Maybe (Ptr (FunPtr C_WidgetClassTouchEventFieldCallback))
    -> WidgetClassTouchEventFieldCallback
    -> C_WidgetClassTouchEventFieldCallback
    wrap_WidgetClassTouchEventFieldCallback Maybe (Ptr (FunPtr C_WidgetClassTouchEventFieldCallback))
    gi'funptrptr WidgetClassTouchEventFieldCallback
    gi'cb Ptr Widget
    widget Ptr EventTouch
    event = do
        widget' <- ((ManagedPtr Widget -> Widget) -> Ptr Widget -> IO Widget
    forall a b.
    (HasCallStack, GObject a, GObject b) =>
    (ManagedPtr a -> a) -> Ptr b -> IO a
    newObject ManagedPtr Widget -> Widget
    Gtk.Widget.Widget) Ptr Widget
    widget
        event' <- (newPtr Gdk.EventTouch.EventTouch) event
        result <- gi'cb  widget' event'
        maybeReleaseFunPtr gi'funptrptr
        let result' = (Int -> CInt
    forall a b. (Integral a, Num b) => a -> b
    P.fromIntegral (Int -> CInt) -> (Bool -> Int) -> Bool -> CInt
    forall b c a. (b -> c) -> (a -> b) -> a -> c
    . Bool -> Int
    forall a. Enum a => a -> Int
    P.fromEnum) Bool
    result
        return result'

    -- callback WidgetClassStyleUpdatedFieldCallback
    {- Callable
      { returnType = Nothing
      , returnMayBeNull = False
      , returnTransfer = TransferNothing
      , returnDocumentation =
          Documentation { rawDocText = Nothing , sinceVersion = Nothing }
      , args =
          [ Arg
              { argCName = "widget"
              , argType = TInterface Name { namespace = "Gtk" , name = "Widget" }
              , argCType = Just "GtkWidget*"
              , direction = DirectionIn
              , mayBeNull = False
              , argDoc =
                  Documentation { rawDocText = Nothing , sinceVersion = Nothing }
              , argScope = ScopeTypeInvalid
              , argClosure = -1
              , argDestroy = -1
              , argCallerAllocates = False
              , argCallbackUserData = False
              , transfer = TransferNothing
              }
          ]
      , skipReturn = False
      , callableThrows = False
      , callableDeprecated = Nothing
      , callableDocumentation =
          Documentation { rawDocText = Nothing , sinceVersion = Nothing }
      , callableResolvable = Nothing
      }
    -}
    -- | Type for the callback on the (unwrapped) C side.
    type C_WidgetClassStyleUpdatedFieldCallback =
        Ptr Gtk.Widget.Widget ->
        IO ()

    -- Args: [ Arg
    --           { argCName = "widget"
    --           , argType = TInterface Name { namespace = "Gtk" , name = "Widget" }
    --           , argCType = Just "GtkWidget*"
    --           , direction = DirectionIn
    --           , mayBeNull = False
    --           , argDoc =
    --               Documentation { rawDocText = Nothing , sinceVersion = Nothing }
    --           , argScope = ScopeTypeInvalid
    --           , argClosure = -1
    --           , argDestroy = -1
    --           , argCallerAllocates = False
    --           , argCallbackUserData = False
    --           , transfer = TransferNothing
    --           }
    --       ]
    -- Lengths: []
    -- returnType: Nothing
    -- throws : False
    -- Skip return : False

    foreign import ccall "dynamic" __dynamic_C_WidgetClassStyleUpdatedFieldCallback :: FunPtr C_WidgetClassStyleUpdatedFieldCallback -> C_WidgetClassStyleUpdatedFieldCallback

    -- | Given a pointer to a foreign C function, wrap it into a function callable from Haskell.
    dynamic_WidgetClassStyleUpdatedFieldCallback ::
        (B.CallStack.HasCallStack, MonadIO m, Gtk.Widget.IsWidget a) =>
        FunPtr C_WidgetClassStyleUpdatedFieldCallback
        -> a
        -> m ()
    dynamic_WidgetClassStyleUpdatedFieldCallback :: forall (m :: * -> *) a.
    (HasCallStack, MonadIO m, IsWidget a) =>
    FunPtr C_WidgetClassUnrealizeFieldCallback -> a -> m ()
    dynamic_WidgetClassStyleUpdatedFieldCallback FunPtr C_WidgetClassUnrealizeFieldCallback
    __funPtr a
    widget = IO () -> m ()
    forall a. IO a -> m a
    forall (m :: * -> *) a. MonadIO m => IO a -> m a
    liftIO (IO () -> m ()) -> IO () -> m ()
    forall a b. (a -> b) -> a -> b
    $ do
        widget' <- a -> IO (Ptr Widget)
    forall a b. (HasCallStack, ManagedPtrNewtype a) => a -> IO (Ptr b)
    unsafeManagedPtrCastPtr a
    widget
        (__dynamic_C_WidgetClassStyleUpdatedFieldCallback __funPtr) widget'
        touchManagedPtr widget
        return ()

    -- | Generate a function pointer callable from C code, from a `C_WidgetClassStyleUpdatedFieldCallback`.
    foreign import ccall "wrapper"
        mk_WidgetClassStyleUpdatedFieldCallback :: C_WidgetClassStyleUpdatedFieldCallback -> IO (FunPtr C_WidgetClassStyleUpdatedFieldCallback)

    -- | /No description available in the introspection data./
    type WidgetClassStyleUpdatedFieldCallback =
        Gtk.Widget.Widget
        -> IO ()

    -- | A convenience synonym for @`Nothing` :: `Maybe` `WidgetClassStyleUpdatedFieldCallback`@.
    noWidgetClassStyleUpdatedFieldCallback :: Maybe WidgetClassStyleUpdatedFieldCallback
    noWidgetClassStyleUpdatedFieldCallback :: Maybe WidgetClassUnrealizeFieldCallback
    noWidgetClassStyleUpdatedFieldCallback = Maybe WidgetClassUnrealizeFieldCallback
    forall a. Maybe a
    Nothing

    -- | Wrap the callback into a `GClosure`.
    genClosure_WidgetClassStyleUpdatedFieldCallback :: MonadIO m => WidgetClassStyleUpdatedFieldCallback -> m (GClosure C_WidgetClassStyleUpdatedFieldCallback)
    genClosure_WidgetClassStyleUpdatedFieldCallback :: forall (m :: * -> *).
    MonadIO m =>
    WidgetClassUnrealizeFieldCallback
    -> m (GClosure C_WidgetClassUnrealizeFieldCallback)
    genClosure_WidgetClassStyleUpdatedFieldCallback WidgetClassUnrealizeFieldCallback
    cb = IO (GClosure C_WidgetClassUnrealizeFieldCallback)
    -> m (GClosure C_WidgetClassUnrealizeFieldCallback)
    forall a. IO a -> m a
    forall (m :: * -> *) a. MonadIO m => IO a -> m a
    liftIO (IO (GClosure C_WidgetClassUnrealizeFieldCallback)
     -> m (GClosure C_WidgetClassUnrealizeFieldCallback))
    -> IO (GClosure C_WidgetClassUnrealizeFieldCallback)
    -> m (GClosure C_WidgetClassUnrealizeFieldCallback)
    forall a b. (a -> b) -> a -> b
    $ do
        let cb' :: C_WidgetClassUnrealizeFieldCallback
    cb' = Maybe (Ptr (FunPtr C_WidgetClassUnrealizeFieldCallback))
    -> WidgetClassUnrealizeFieldCallback
    -> C_WidgetClassUnrealizeFieldCallback
    wrap_WidgetClassStyleUpdatedFieldCallback Maybe (Ptr (FunPtr C_WidgetClassUnrealizeFieldCallback))
    forall a. Maybe a
    Nothing WidgetClassUnrealizeFieldCallback
    cb
        C_WidgetClassUnrealizeFieldCallback
    -> IO (FunPtr C_WidgetClassUnrealizeFieldCallback)
    mk_WidgetClassStyleUpdatedFieldCallback C_WidgetClassUnrealizeFieldCallback
    cb' IO (FunPtr C_WidgetClassUnrealizeFieldCallback)
    -> (FunPtr C_WidgetClassUnrealizeFieldCallback
        -> IO (GClosure C_WidgetClassUnrealizeFieldCallback))
    -> IO (GClosure C_WidgetClassUnrealizeFieldCallback)
    forall a b. IO a -> (a -> IO b) -> IO b
    forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
    >>= FunPtr C_WidgetClassUnrealizeFieldCallback
    -> IO (GClosure C_WidgetClassUnrealizeFieldCallback)
    forall (m :: * -> *) a. MonadIO m => FunPtr a -> m (GClosure a)
    B.GClosure.newGClosure

    -- | Wrap a `WidgetClassStyleUpdatedFieldCallback` into a `C_WidgetClassStyleUpdatedFieldCallback`.
    wrap_WidgetClassStyleUpdatedFieldCallback ::
        Maybe (Ptr (FunPtr C_WidgetClassStyleUpdatedFieldCallback)) ->
        WidgetClassStyleUpdatedFieldCallback ->
        C_WidgetClassStyleUpdatedFieldCallback
    wrap_WidgetClassStyleUpdatedFieldCallback :: Maybe (Ptr (FunPtr C_WidgetClassUnrealizeFieldCallback))
    -> WidgetClassUnrealizeFieldCallback
    -> C_WidgetClassUnrealizeFieldCallback
    wrap_WidgetClassStyleUpdatedFieldCallback Maybe (Ptr (FunPtr C_WidgetClassUnrealizeFieldCallback))
    gi'funptrptr WidgetClassUnrealizeFieldCallback
    gi'cb Ptr Widget
    widget = do
        widget' <- ((ManagedPtr Widget -> Widget) -> Ptr Widget -> IO Widget
    forall a b.
    (HasCallStack, GObject a, GObject b) =>
    (ManagedPtr a -> a) -> Ptr b -> IO a
    newObject ManagedPtr Widget -> Widget
    Gtk.Widget.Widget) Ptr Widget
    widget
        gi'cb  widget'
        maybeReleaseFunPtr gi'funptrptr

    -- callback WidgetClassStyleSetFieldCallback
    {- Callable
      { returnType = Nothing
      , returnMayBeNull = False
      , returnTransfer = TransferNothing
      , returnDocumentation =
          Documentation { rawDocText = Nothing , sinceVersion = Nothing }
      , args =
          [ Arg
              { argCName = "widget"
              , argType = TInterface Name { namespace = "Gtk" , name = "Widget" }
              , argCType = Just "GtkWidget*"
              , direction = DirectionIn
              , mayBeNull = False
              , argDoc =
                  Documentation { rawDocText = Nothing , sinceVersion = Nothing }
              , argScope = ScopeTypeInvalid
              , argClosure = -1
              , argDestroy = -1
              , argCallerAllocates = False
              , argCallbackUserData = False
              , transfer = TransferNothing
              }
          , Arg
              { argCName = "previous_style"
              , argType = TInterface Name { namespace = "Gtk" , name = "Style" }
              , argCType = Just "GtkStyle*"
              , direction = DirectionIn
              , mayBeNull = False
              , argDoc =
                  Documentation { rawDocText = Nothing , sinceVersion = Nothing }
              , argScope = ScopeTypeInvalid
              , argClosure = -1
              , argDestroy = -1
              , argCallerAllocates = False
              , argCallbackUserData = False
              , transfer = TransferNothing
              }
          ]
      , skipReturn = False
      , callableThrows = False
      , callableDeprecated = Nothing
      , callableDocumentation =
          Documentation { rawDocText = Nothing , sinceVersion = Nothing }
      , callableResolvable = Nothing
      }
    -}
    -- | Type for the callback on the (unwrapped) C side.
    type C_WidgetClassStyleSetFieldCallback =
        Ptr Gtk.Widget.Widget ->
        Ptr Gtk.Style.Style ->
        IO ()

    -- Args: [ Arg
    --           { argCName = "widget"
    --           , argType = TInterface Name { namespace = "Gtk" , name = "Widget" }
    --           , argCType = Just "GtkWidget*"
    --           , direction = DirectionIn
    --           , mayBeNull = False
    --           , argDoc =
    --               Documentation { rawDocText = Nothing , sinceVersion = Nothing }
    --           , argScope = ScopeTypeInvalid
    --           , argClosure = -1
    --           , argDestroy = -1
    --           , argCallerAllocates = False
    --           , argCallbackUserData = False
    --           , transfer = TransferNothing
    --           }
    --       , Arg
    --           { argCName = "previous_style"
    --           , argType = TInterface Name { namespace = "Gtk" , name = "Style" }
    --           , argCType = Just "GtkStyle*"
    --           , direction = DirectionIn
    --           , mayBeNull = False
    --           , argDoc =
    --               Documentation { rawDocText = Nothing , sinceVersion = Nothing }
    --           , argScope = ScopeTypeInvalid
    --           , argClosure = -1
    --           , argDestroy = -1
    --           , argCallerAllocates = False
    --           , argCallbackUserData = False
    --           , transfer = TransferNothing
    --           }
    --       ]
    -- Lengths: []
    -- returnType: Nothing
    -- throws : False
    -- Skip return : False

    foreign import ccall "dynamic" __dynamic_C_WidgetClassStyleSetFieldCallback :: FunPtr C_WidgetClassStyleSetFieldCallback -> C_WidgetClassStyleSetFieldCallback

    -- | Given a pointer to a foreign C function, wrap it into a function callable from Haskell.
    dynamic_WidgetClassStyleSetFieldCallback ::
        (B.CallStack.HasCallStack, MonadIO m, Gtk.Widget.IsWidget a, Gtk.Style.IsStyle b) =>
        FunPtr C_WidgetClassStyleSetFieldCallback
        -> a
        -> b
        -> m ()
    dynamic_WidgetClassStyleSetFieldCallback :: forall (m :: * -> *) a b.
    (HasCallStack, MonadIO m, IsWidget a, IsStyle b) =>
    FunPtr C_WidgetClassStyleSetFieldCallback -> a -> b -> m ()
    dynamic_WidgetClassStyleSetFieldCallback FunPtr C_WidgetClassStyleSetFieldCallback
    __funPtr a
    widget b
    previousStyle = IO () -> m ()
    forall a. IO a -> m a
    forall (m :: * -> *) a. MonadIO m => IO a -> m a
    liftIO (IO () -> m ()) -> IO () -> m ()
    forall a b. (a -> b) -> a -> b
    $ do
        widget' <- a -> IO (Ptr Widget)
    forall a b. (HasCallStack, ManagedPtrNewtype a) => a -> IO (Ptr b)
    unsafeManagedPtrCastPtr a
    widget
        previousStyle' <- unsafeManagedPtrCastPtr previousStyle
        (__dynamic_C_WidgetClassStyleSetFieldCallback __funPtr) widget' previousStyle'
        touchManagedPtr widget
        touchManagedPtr previousStyle
        return ()

    -- | Generate a function pointer callable from C code, from a `C_WidgetClassStyleSetFieldCallback`.
    foreign import ccall "wrapper"
        mk_WidgetClassStyleSetFieldCallback :: C_WidgetClassStyleSetFieldCallback -> IO (FunPtr C_WidgetClassStyleSetFieldCallback)

    -- | /No description available in the introspection data./
    type WidgetClassStyleSetFieldCallback =
        Gtk.Widget.Widget
        -> Gtk.Style.Style
        -> IO ()

    -- | A convenience synonym for @`Nothing` :: `Maybe` `WidgetClassStyleSetFieldCallback`@.
    noWidgetClassStyleSetFieldCallback :: Maybe WidgetClassStyleSetFieldCallback
    noWidgetClassStyleSetFieldCallback :: Maybe WidgetClassStyleSetFieldCallback
    noWidgetClassStyleSetFieldCallback = Maybe WidgetClassStyleSetFieldCallback
    forall a. Maybe a
    Nothing

    -- | Wrap the callback into a `GClosure`.
    genClosure_WidgetClassStyleSetFieldCallback :: MonadIO m => WidgetClassStyleSetFieldCallback -> m (GClosure C_WidgetClassStyleSetFieldCallback)
    genClosure_WidgetClassStyleSetFieldCallback :: forall (m :: * -> *).
    MonadIO m =>
    WidgetClassStyleSetFieldCallback
    -> m (GClosure C_WidgetClassStyleSetFieldCallback)
    genClosure_WidgetClassStyleSetFieldCallback WidgetClassStyleSetFieldCallback
    cb = IO (GClosure C_WidgetClassStyleSetFieldCallback)
    -> m (GClosure C_WidgetClassStyleSetFieldCallback)
    forall a. IO a -> m a
    forall (m :: * -> *) a. MonadIO m => IO a -> m a
    liftIO (IO (GClosure C_WidgetClassStyleSetFieldCallback)
     -> m (GClosure C_WidgetClassStyleSetFieldCallback))
    -> IO (GClosure C_WidgetClassStyleSetFieldCallback)
    -> m (GClosure C_WidgetClassStyleSetFieldCallback)
    forall a b. (a -> b) -> a -> b
    $ do
        let cb' :: C_WidgetClassStyleSetFieldCallback
    cb' = Maybe (Ptr (FunPtr C_WidgetClassStyleSetFieldCallback))
    -> WidgetClassStyleSetFieldCallback
    -> C_WidgetClassStyleSetFieldCallback
    wrap_WidgetClassStyleSetFieldCallback Maybe (Ptr (FunPtr C_WidgetClassStyleSetFieldCallback))
    forall a. Maybe a
    Nothing WidgetClassStyleSetFieldCallback
    cb
        C_WidgetClassStyleSetFieldCallback
    -> IO (FunPtr C_WidgetClassStyleSetFieldCallback)
    mk_WidgetClassStyleSetFieldCallback C_WidgetClassStyleSetFieldCallback
    cb' IO (FunPtr C_WidgetClassStyleSetFieldCallback)
    -> (FunPtr C_WidgetClassStyleSetFieldCallback
        -> IO (GClosure C_WidgetClassStyleSetFieldCallback))
    -> IO (GClosure C_WidgetClassStyleSetFieldCallback)
    forall a b. IO a -> (a -> IO b) -> IO b
    forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
    >>= FunPtr C_WidgetClassStyleSetFieldCallback
    -> IO (GClosure C_WidgetClassStyleSetFieldCallback)
    forall (m :: * -> *) a. MonadIO m => FunPtr a -> m (GClosure a)
    B.GClosure.newGClosure

    -- | Wrap a `WidgetClassStyleSetFieldCallback` into a `C_WidgetClassStyleSetFieldCallback`.
    wrap_WidgetClassStyleSetFieldCallback ::
        Maybe (Ptr (FunPtr C_WidgetClassStyleSetFieldCallback)) ->
        WidgetClassStyleSetFieldCallback ->
        C_WidgetClassStyleSetFieldCallback
    wrap_WidgetClassStyleSetFieldCallback :: Maybe (Ptr (FunPtr C_WidgetClassStyleSetFieldCallback))
    -> WidgetClassStyleSetFieldCallback
    -> C_WidgetClassStyleSetFieldCallback
    wrap_WidgetClassStyleSetFieldCallback Maybe (Ptr (FunPtr C_WidgetClassStyleSetFieldCallback))
    gi'funptrptr WidgetClassStyleSetFieldCallback
    gi'cb Ptr Widget
    widget Ptr Style
    previousStyle = do
        widget' <- ((ManagedPtr Widget -> Widget) -> Ptr Widget -> IO Widget
    forall a b.
    (HasCallStack, GObject a, GObject b) =>
    (ManagedPtr a -> a) -> Ptr b -> IO a
    newObject ManagedPtr Widget -> Widget
    Gtk.Widget.Widget) Ptr Widget
    widget
        previousStyle' <- (newObject Gtk.Style.Style) previousStyle
        gi'cb  widget' previousStyle'
        maybeReleaseFunPtr gi'funptrptr

    -- callback WidgetClassStateFlagsChangedFieldCallback
    {- Callable
      { returnType = Nothing
      , returnMayBeNull = False
      , returnTransfer = TransferNothing
      , returnDocumentation =
          Documentation { rawDocText = Nothing , sinceVersion = Nothing }
      , args =
          [ Arg
              { argCName = "widget"
              , argType = TInterface Name { namespace = "Gtk" , name = "Widget" }
              , argCType = Just "GtkWidget*"
              , direction = DirectionIn
              , mayBeNull = False
              , argDoc =
                  Documentation { rawDocText = Nothing , sinceVersion = Nothing }
              , argScope = ScopeTypeInvalid
              , argClosure = -1
              , argDestroy = -1
              , argCallerAllocates = False
              , argCallbackUserData = False
              , transfer = TransferNothing
              }
          , Arg
              { argCName = "previous_state_flags"
              , argType =
                  TInterface Name { namespace = "Gtk" , name = "StateFlags" }
              , argCType = Just "GtkStateFlags"
              , direction = DirectionIn
              , mayBeNull = False
              , argDoc =
                  Documentation { rawDocText = Nothing , sinceVersion = Nothing }
              , argScope = ScopeTypeInvalid
              , argClosure = -1
              , argDestroy = -1
              , argCallerAllocates = False
              , argCallbackUserData = False
              , transfer = TransferNothing
              }
          ]
      , skipReturn = False
      , callableThrows = False
      , callableDeprecated = Nothing
      , callableDocumentation =
          Documentation { rawDocText = Nothing , sinceVersion = Nothing }
      , callableResolvable = Nothing
      }
    -}
    -- | Type for the callback on the (unwrapped) C side.
    type C_WidgetClassStateFlagsChangedFieldCallback =
        Ptr Gtk.Widget.Widget ->
        CUInt ->
        IO ()

    -- Args: [ Arg
    --           { argCName = "widget"
    --           , argType = TInterface Name { namespace = "Gtk" , name = "Widget" }
    --           , argCType = Just "GtkWidget*"
    --           , direction = DirectionIn
    --           , mayBeNull = False
    --           , argDoc =
    --               Documentation { rawDocText = Nothing , sinceVersion = Nothing }
    --           , argScope = ScopeTypeInvalid
    --           , argClosure = -1
    --           , argDestroy = -1
    --           , argCallerAllocates = False
    --           , argCallbackUserData = False
    --           , transfer = TransferNothing
    --           }
    --       , Arg
    --           { argCName = "previous_state_flags"
    --           , argType =
    --               TInterface Name { namespace = "Gtk" , name = "StateFlags" }
    --           , argCType = Just "GtkStateFlags"
    --           , direction = DirectionIn
    --           , mayBeNull = False
    --           , argDoc =
    --               Documentation { rawDocText = Nothing , sinceVersion = Nothing }
    --           , argScope = ScopeTypeInvalid
    --           , argClosure = -1
    --           , argDestroy = -1
    --           , argCallerAllocates = False
    --           , argCallbackUserData = False
    --           , transfer = TransferNothing
    --           }
    --       ]
    -- Lengths: []
    -- returnType: Nothing
    -- throws : False
    -- Skip return : False

    foreign import ccall "dynamic" __dynamic_C_WidgetClassStateFlagsChangedFieldCallback :: FunPtr C_WidgetClassStateFlagsChangedFieldCallback -> C_WidgetClassStateFlagsChangedFieldCallback

    -- | Given a pointer to a foreign C function, wrap it into a function callable from Haskell.
    dynamic_WidgetClassStateFlagsChangedFieldCallback ::
        (B.CallStack.HasCallStack, MonadIO m, Gtk.Widget.IsWidget a) =>
        FunPtr C_WidgetClassStateFlagsChangedFieldCallback
        -> a
        -> [Gtk.Flags.StateFlags]
        -> m ()
    dynamic_WidgetClassStateFlagsChangedFieldCallback :: forall (m :: * -> *) a.
    (HasCallStack, MonadIO m, IsWidget a) =>
    FunPtr C_WidgetClassStateFlagsChangedFieldCallback
    -> a -> [StateFlags] -> m ()
    dynamic_WidgetClassStateFlagsChangedFieldCallback FunPtr C_WidgetClassStateFlagsChangedFieldCallback
    __funPtr a
    widget [StateFlags]
    previousStateFlags = IO () -> m ()
    forall a. IO a -> m a
    forall (m :: * -> *) a. MonadIO m => IO a -> m a
    liftIO (IO () -> m ()) -> IO () -> m ()
    forall a b. (a -> b) -> a -> b
    $ do
        widget' <- a -> IO (Ptr Widget)
    forall a b. (HasCallStack, ManagedPtrNewtype a) => a -> IO (Ptr b)
    unsafeManagedPtrCastPtr a
    widget
        let previousStateFlags' = [StateFlags] -> CUInt
    forall b a. (Num b, IsGFlag a) => [a] -> b
    gflagsToWord [StateFlags]
    previousStateFlags
        (__dynamic_C_WidgetClassStateFlagsChangedFieldCallback __funPtr) widget' previousStateFlags'
        touchManagedPtr widget
        return ()

    -- | Generate a function pointer callable from C code, from a `C_WidgetClassStateFlagsChangedFieldCallback`.
    foreign import ccall "wrapper"
        mk_WidgetClassStateFlagsChangedFieldCallback :: C_WidgetClassStateFlagsChangedFieldCallback -> IO (FunPtr C_WidgetClassStateFlagsChangedFieldCallback)

    -- | /No description available in the introspection data./
    type WidgetClassStateFlagsChangedFieldCallback =
        Gtk.Widget.Widget
        -> [Gtk.Flags.StateFlags]
        -> IO ()

    -- | A convenience synonym for @`Nothing` :: `Maybe` `WidgetClassStateFlagsChangedFieldCallback`@.
    noWidgetClassStateFlagsChangedFieldCallback :: Maybe WidgetClassStateFlagsChangedFieldCallback
    noWidgetClassStateFlagsChangedFieldCallback :: Maybe WidgetClassStateFlagsChangedFieldCallback
    noWidgetClassStateFlagsChangedFieldCallback = Maybe WidgetClassStateFlagsChangedFieldCallback
    forall a. Maybe a
    Nothing

    -- | Wrap the callback into a `GClosure`.
    genClosure_WidgetClassStateFlagsChangedFieldCallback :: MonadIO m => WidgetClassStateFlagsChangedFieldCallback -> m (GClosure C_WidgetClassStateFlagsChangedFieldCallback)
    genClosure_WidgetClassStateFlagsChangedFieldCallback :: forall (m :: * -> *).
    MonadIO m =>
    WidgetClassStateFlagsChangedFieldCallback
    -> m (GClosure C_WidgetClassStateFlagsChangedFieldCallback)
    genClosure_WidgetClassStateFlagsChangedFieldCallback WidgetClassStateFlagsChangedFieldCallback
    cb = IO (GClosure C_WidgetClassStateFlagsChangedFieldCallback)
    -> m (GClosure C_WidgetClassStateFlagsChangedFieldCallback)
    forall a. IO a -> m a
    forall (m :: * -> *) a. MonadIO m => IO a -> m a
    liftIO (IO (GClosure C_WidgetClassStateFlagsChangedFieldCallback)
     -> m (GClosure C_WidgetClassStateFlagsChangedFieldCallback))
    -> IO (GClosure C_WidgetClassStateFlagsChangedFieldCallback)
    -> m (GClosure C_WidgetClassStateFlagsChangedFieldCallback)
    forall a b. (a -> b) -> a -> b
    $ do
        let cb' :: C_WidgetClassStateFlagsChangedFieldCallback
    cb' = Maybe (Ptr (FunPtr C_WidgetClassStateFlagsChangedFieldCallback))
    -> WidgetClassStateFlagsChangedFieldCallback
    -> C_WidgetClassStateFlagsChangedFieldCallback
    wrap_WidgetClassStateFlagsChangedFieldCallback Maybe (Ptr (FunPtr C_WidgetClassStateFlagsChangedFieldCallback))
    forall a. Maybe a
    Nothing WidgetClassStateFlagsChangedFieldCallback
    cb
        C_WidgetClassStateFlagsChangedFieldCallback
    -> IO (FunPtr C_WidgetClassStateFlagsChangedFieldCallback)
    mk_WidgetClassStateFlagsChangedFieldCallback C_WidgetClassStateFlagsChangedFieldCallback
    cb' IO (FunPtr C_WidgetClassStateFlagsChangedFieldCallback)
    -> (FunPtr C_WidgetClassStateFlagsChangedFieldCallback
        -> IO (GClosure C_WidgetClassStateFlagsChangedFieldCallback))
    -> IO (GClosure C_WidgetClassStateFlagsChangedFieldCallback)
    forall a b. IO a -> (a -> IO b) -> IO b
    forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
    >>= FunPtr C_WidgetClassStateFlagsChangedFieldCallback
    -> IO (GClosure C_WidgetClassStateFlagsChangedFieldCallback)
    forall (m :: * -> *) a. MonadIO m => FunPtr a -> m (GClosure a)
    B.GClosure.newGClosure

    -- | Wrap a `WidgetClassStateFlagsChangedFieldCallback` into a `C_WidgetClassStateFlagsChangedFieldCallback`.
    wrap_WidgetClassStateFlagsChangedFieldCallback ::
        Maybe (Ptr (FunPtr C_WidgetClassStateFlagsChangedFieldCallback)) ->
        WidgetClassStateFlagsChangedFieldCallback ->
        C_WidgetClassStateFlagsChangedFieldCallback
    wrap_WidgetClassStateFlagsChangedFieldCallback :: Maybe (Ptr (FunPtr C_WidgetClassStateFlagsChangedFieldCallback))
    -> WidgetClassStateFlagsChangedFieldCallback
    -> C_WidgetClassStateFlagsChangedFieldCallback
    wrap_WidgetClassStateFlagsChangedFieldCallback Maybe (Ptr (FunPtr C_WidgetClassStateFlagsChangedFieldCallback))
    gi'funptrptr WidgetClassStateFlagsChangedFieldCallback
    gi'cb Ptr Widget
    widget CUInt
    previousStateFlags = do
        widget' <- ((ManagedPtr Widget -> Widget) -> Ptr Widget -> IO Widget
    forall a b.
    (HasCallStack, GObject a, GObject b) =>
    (ManagedPtr a -> a) -> Ptr b -> IO a
    newObject ManagedPtr Widget -> Widget
    Gtk.Widget.Widget) Ptr Widget
    widget
        let previousStateFlags' = CUInt -> [StateFlags]
    forall a b. (Storable a, Integral a, Bits a, IsGFlag b) => a -> [b]
    wordToGFlags CUInt
    previousStateFlags
        gi'cb  widget' previousStateFlags'
        maybeReleaseFunPtr gi'funptrptr

    -- callback WidgetClassStateChangedFieldCallback
    {- Callable
      { returnType = Nothing
      , returnMayBeNull = False
      , returnTransfer = TransferNothing
      , returnDocumentation =
          Documentation { rawDocText = Nothing , sinceVersion = Nothing }
      , args =
          [ Arg
              { argCName = "widget"
              , argType = TInterface Name { namespace = "Gtk" , name = "Widget" }
              , argCType = Just "GtkWidget*"
              , direction = DirectionIn
              , mayBeNull = False
              , argDoc =
                  Documentation { rawDocText = Nothing , sinceVersion = Nothing }
              , argScope = ScopeTypeInvalid
              , argClosure = -1
              , argDestroy = -1
              , argCallerAllocates = False
              , argCallbackUserData = False
              , transfer = TransferNothing
              }
          , Arg
              { argCName = "previous_state"
              , argType =
                  TInterface Name { namespace = "Gtk" , name = "StateType" }
              , argCType = Just "GtkStateType"
              , direction = DirectionIn
              , mayBeNull = False
              , argDoc =
                  Documentation { rawDocText = Nothing , sinceVersion = Nothing }
              , argScope = ScopeTypeInvalid
              , argClosure = -1
              , argDestroy = -1
              , argCallerAllocates = False
              , argCallbackUserData = False
              , transfer = TransferNothing
              }
          ]
      , skipReturn = False
      , callableThrows = False
      , callableDeprecated = Nothing
      , callableDocumentation =
          Documentation { rawDocText = Nothing , sinceVersion = Nothing }
      , callableResolvable = Nothing
      }
    -}
    -- | Type for the callback on the (unwrapped) C side.
    type C_WidgetClassStateChangedFieldCallback =
        Ptr Gtk.Widget.Widget ->
        CUInt ->
        IO ()

    -- Args: [ Arg
    --           { argCName = "widget"
    --           , argType = TInterface Name { namespace = "Gtk" , name = "Widget" }
    --           , argCType = Just "GtkWidget*"
    --           , direction = DirectionIn
    --           , mayBeNull = False
    --           , argDoc =
    --               Documentation { rawDocText = Nothing , sinceVersion = Nothing }
    --           , argScope = ScopeTypeInvalid
    --           , argClosure = -1
    --           , argDestroy = -1
    --           , argCallerAllocates = False
    --           , argCallbackUserData = False
    --           , transfer = TransferNothing
    --           }
    --       , Arg
    --           { argCName = "previous_state"
    --           , argType =
    --               TInterface Name { namespace = "Gtk" , name = "StateType" }
    --           , argCType = Just "GtkStateType"
    --           , direction = DirectionIn
    --           , mayBeNull = False
    --           , argDoc =
    --               Documentation { rawDocText = Nothing , sinceVersion = Nothing }
    --           , argScope = ScopeTypeInvalid
    --           , argClosure = -1
    --           , argDestroy = -1
    --           , argCallerAllocates = False
    --           , argCallbackUserData = False
    --           , transfer = TransferNothing
    --           }
    --       ]
    -- Lengths: []
    -- returnType: Nothing
    -- throws : False
    -- Skip return : False

    foreign import ccall "dynamic" __dynamic_C_WidgetClassStateChangedFieldCallback :: FunPtr C_WidgetClassStateChangedFieldCallback -> C_WidgetClassStateChangedFieldCallback

    -- | Given a pointer to a foreign C function, wrap it into a function callable from Haskell.
    dynamic_WidgetClassStateChangedFieldCallback ::
        (B.CallStack.HasCallStack, MonadIO m, Gtk.Widget.IsWidget a) =>
        FunPtr C_WidgetClassStateChangedFieldCallback
        -> a
        -> Gtk.Enums.StateType
        -> m ()
    dynamic_WidgetClassStateChangedFieldCallback :: forall (m :: * -> *) a.
    (HasCallStack, MonadIO m, IsWidget a) =>
    FunPtr C_WidgetClassStateFlagsChangedFieldCallback
    -> a -> StateType -> m ()
    dynamic_WidgetClassStateChangedFieldCallback FunPtr C_WidgetClassStateFlagsChangedFieldCallback
    __funPtr a
    widget StateType
    previousState = IO () -> m ()
    forall a. IO a -> m a
    forall (m :: * -> *) a. MonadIO m => IO a -> m a
    liftIO (IO () -> m ()) -> IO () -> m ()
    forall a b. (a -> b) -> a -> b
    $ do
        widget' <- a -> IO (Ptr Widget)
    forall a b. (HasCallStack, ManagedPtrNewtype a) => a -> IO (Ptr b)
    unsafeManagedPtrCastPtr a
    widget
        let previousState' = (Int -> CUInt
    forall a b. (Integral a, Num b) => a -> b
    fromIntegral (Int -> CUInt) -> (StateType -> Int) -> StateType -> CUInt
    forall b c a. (b -> c) -> (a -> b) -> a -> c
    . StateType -> Int
    forall a. Enum a => a -> Int
    fromEnum) StateType
    previousState
        (__dynamic_C_WidgetClassStateChangedFieldCallback __funPtr) widget' previousState'
        touchManagedPtr widget
        return ()

    -- | Generate a function pointer callable from C code, from a `C_WidgetClassStateChangedFieldCallback`.
    foreign import ccall "wrapper"
        mk_WidgetClassStateChangedFieldCallback :: C_WidgetClassStateChangedFieldCallback -> IO (FunPtr C_WidgetClassStateChangedFieldCallback)

    -- | /No description available in the introspection data./
    type WidgetClassStateChangedFieldCallback =
        Gtk.Widget.Widget
        -> Gtk.Enums.StateType
        -> IO ()

    -- | A convenience synonym for @`Nothing` :: `Maybe` `WidgetClassStateChangedFieldCallback`@.
    noWidgetClassStateChangedFieldCallback :: Maybe WidgetClassStateChangedFieldCallback
    noWidgetClassStateChangedFieldCallback :: Maybe WidgetClassStateChangedFieldCallback
    noWidgetClassStateChangedFieldCallback = Maybe WidgetClassStateChangedFieldCallback
    forall a. Maybe a
    Nothing

    -- | Wrap the callback into a `GClosure`.
    genClosure_WidgetClassStateChangedFieldCallback :: MonadIO m => WidgetClassStateChangedFieldCallback -> m (GClosure C_WidgetClassStateChangedFieldCallback)
    genClosure_WidgetClassStateChangedFieldCallback :: forall (m :: * -> *).
    MonadIO m =>
    WidgetClassStateChangedFieldCallback
    -> m (GClosure C_WidgetClassStateFlagsChangedFieldCallback)
    genClosure_WidgetClassStateChangedFieldCallback WidgetClassStateChangedFieldCallback
    cb = IO (GClosure C_WidgetClassStateFlagsChangedFieldCallback)
    -> m (GClosure C_WidgetClassStateFlagsChangedFieldCallback)
    forall a. IO a -> m a
    forall (m :: * -> *) a. MonadIO m => IO a -> m a
    liftIO (IO (GClosure C_WidgetClassStateFlagsChangedFieldCallback)
     -> m (GClosure C_WidgetClassStateFlagsChangedFieldCallback))
    -> IO (GClosure C_WidgetClassStateFlagsChangedFieldCallback)
    -> m (GClosure C_WidgetClassStateFlagsChangedFieldCallback)
    forall a b. (a -> b) -> a -> b
    $ do
        let cb' :: C_WidgetClassStateFlagsChangedFieldCallback
    cb' = Maybe (Ptr (FunPtr C_WidgetClassStateFlagsChangedFieldCallback))
    -> WidgetClassStateChangedFieldCallback
    -> C_WidgetClassStateFlagsChangedFieldCallback
    wrap_WidgetClassStateChangedFieldCallback Maybe (Ptr (FunPtr C_WidgetClassStateFlagsChangedFieldCallback))
    forall a. Maybe a
    Nothing WidgetClassStateChangedFieldCallback
    cb
        C_WidgetClassStateFlagsChangedFieldCallback
    -> IO (FunPtr C_WidgetClassStateFlagsChangedFieldCallback)
    mk_WidgetClassStateChangedFieldCallback C_WidgetClassStateFlagsChangedFieldCallback
    cb' IO (FunPtr C_WidgetClassStateFlagsChangedFieldCallback)
    -> (FunPtr C_WidgetClassStateFlagsChangedFieldCallback
        -> IO (GClosure C_WidgetClassStateFlagsChangedFieldCallback))
    -> IO (GClosure C_WidgetClassStateFlagsChangedFieldCallback)
    forall a b. IO a -> (a -> IO b) -> IO b
    forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
    >>= FunPtr C_WidgetClassStateFlagsChangedFieldCallback
    -> IO (GClosure C_WidgetClassStateFlagsChangedFieldCallback)
    forall (m :: * -> *) a. MonadIO m => FunPtr a -> m (GClosure a)
    B.GClosure.newGClosure

    -- | Wrap a `WidgetClassStateChangedFieldCallback` into a `C_WidgetClassStateChangedFieldCallback`.
    wrap_WidgetClassStateChangedFieldCallback ::
        Maybe (Ptr (FunPtr C_WidgetClassStateChangedFieldCallback)) ->
        WidgetClassStateChangedFieldCallback ->
        C_WidgetClassStateChangedFieldCallback
    wrap_WidgetClassStateChangedFieldCallback :: Maybe (Ptr (FunPtr C_WidgetClassStateFlagsChangedFieldCallback))
    -> WidgetClassStateChangedFieldCallback
    -> C_WidgetClassStateFlagsChangedFieldCallback
    wrap_WidgetClassStateChangedFieldCallback Maybe (Ptr (FunPtr C_WidgetClassStateFlagsChangedFieldCallback))
    gi'funptrptr WidgetClassStateChangedFieldCallback
    gi'cb Ptr Widget
    widget CUInt
    previousState = do
        widget' <- ((ManagedPtr Widget -> Widget) -> Ptr Widget -> IO Widget
    forall a b.
    (HasCallStack, GObject a, GObject b) =>
    (ManagedPtr a -> a) -> Ptr b -> IO a
    newObject ManagedPtr Widget -> Widget
    Gtk.Widget.Widget) Ptr Widget
    widget
        let previousState' = (Int -> StateType
    forall a. Enum a => Int -> a
    toEnum (Int -> StateType) -> (CUInt -> Int) -> CUInt -> StateType
    forall b c a. (b -> c) -> (a -> b) -> a -> c
    . CUInt -> Int
    forall a b. (Integral a, Num b) => a -> b
    fromIntegral) CUInt
    previousState
        gi'cb  widget' previousState'
        maybeReleaseFunPtr gi'funptrptr

    -- callback WidgetClassSizeAllocateFieldCallback
    {- Callable
      { returnType = Nothing
      , returnMayBeNull = False
      , returnTransfer = TransferNothing
      , returnDocumentation =
          Documentation { rawDocText = Nothing , sinceVersion = Nothing }
      , args =
          [ Arg
              { argCName = "widget"
              , argType = TInterface Name { namespace = "Gtk" , name = "Widget" }
              , argCType = Just "GtkWidget*"
              , direction = DirectionIn
              , mayBeNull = False
              , argDoc =
                  Documentation
                    { rawDocText = Just "a #GtkWidget" , sinceVersion = Nothing }
              , argScope = ScopeTypeInvalid
              , argClosure = -1
              , argDestroy = -1
              , argCallerAllocates = False
              , argCallbackUserData = False
              , transfer = TransferNothing
              }
          , Arg
              { argCName = "allocation"
              , argType =
                  TInterface Name { namespace = "Gdk" , name = "Rectangle" }
              , argCType = Just "GtkAllocation*"
              , direction = DirectionIn
              , mayBeNull = False
              , argDoc =
                  Documentation
                    { rawDocText = Just "position and size to be allocated to @widget"
                    , sinceVersion = Nothing
                    }
              , argScope = ScopeTypeInvalid
              , argClosure = -1
              , argDestroy = -1
              , argCallerAllocates = False
              , argCallbackUserData = False
              , transfer = TransferNothing
              }
          ]
      , skipReturn = False
      , callableThrows = False
      , callableDeprecated = Nothing
      , callableDocumentation =
          Documentation { rawDocText = Nothing , sinceVersion = Nothing }
      , callableResolvable = Nothing
      }
    -}
    -- | Type for the callback on the (unwrapped) C side.
    type C_WidgetClassSizeAllocateFieldCallback =
        Ptr Gtk.Widget.Widget ->
        Ptr Gdk.Rectangle.Rectangle ->
        IO ()

    -- Args: [ Arg
    --           { argCName = "widget"
    --           , argType = TInterface Name { namespace = "Gtk" , name = "Widget" }
    --           , argCType = Just "GtkWidget*"
    --           , direction = DirectionIn
    --           , mayBeNull = False
    --           , argDoc =
    --               Documentation
    --                 { rawDocText = Just "a #GtkWidget" , sinceVersion = Nothing }
    --           , argScope = ScopeTypeInvalid
    --           , argClosure = -1
    --           , argDestroy = -1
    --           , argCallerAllocates = False
    --           , argCallbackUserData = False
    --           , transfer = TransferNothing
    --           }
    --       , Arg
    --           { argCName = "allocation"
    --           , argType =
    --               TInterface Name { namespace = "Gdk" , name = "Rectangle" }
    --           , argCType = Just "GtkAllocation*"
    --           , direction = DirectionIn
    --           , mayBeNull = False
    --           , argDoc =
    --               Documentation
    --                 { rawDocText = Just "position and size to be allocated to @widget"
    --                 , sinceVersion = Nothing
    --                 }
    --           , argScope = ScopeTypeInvalid
    --           , argClosure = -1
    --           , argDestroy = -1
    --           , argCallerAllocates = False
    --           , argCallbackUserData = False
    --           , transfer = TransferNothing
    --           }
    --       ]
    -- Lengths: []
    -- returnType: Nothing
    -- throws : False
    -- Skip return : False

    foreign import ccall "dynamic" __dynamic_C_WidgetClassSizeAllocateFieldCallback :: FunPtr C_WidgetClassSizeAllocateFieldCallback -> C_WidgetClassSizeAllocateFieldCallback

    -- | Given a pointer to a foreign C function, wrap it into a function callable from Haskell.
    dynamic_WidgetClassSizeAllocateFieldCallback ::
        (B.CallStack.HasCallStack, MonadIO m, Gtk.Widget.IsWidget a) =>
        FunPtr C_WidgetClassSizeAllocateFieldCallback
        -> a
        -- ^ /@widget@/: a t'GI.Gtk.Objects.Widget.Widget'
        -> Gdk.Rectangle.Rectangle
        -- ^ /@allocation@/: position and size to be allocated to /@widget@/
        -> m ()
    dynamic_WidgetClassSizeAllocateFieldCallback :: forall (m :: * -> *) a.
    (HasCallStack, MonadIO m, IsWidget a) =>
    FunPtr C_WidgetClassSizeAllocateFieldCallback
    -> a -> Rectangle -> m ()
    dynamic_WidgetClassSizeAllocateFieldCallback FunPtr C_WidgetClassSizeAllocateFieldCallback
    __funPtr a
    widget Rectangle
    allocation = IO () -> m ()
    forall a. IO a -> m a
    forall (m :: * -> *) a. MonadIO m => IO a -> m a
    liftIO (IO () -> m ()) -> IO () -> m ()
    forall a b. (a -> b) -> a -> b
    $ do
        widget' <- a -> IO (Ptr Widget)
    forall a b. (HasCallStack, ManagedPtrNewtype a) => a -> IO (Ptr b)
    unsafeManagedPtrCastPtr a
    widget
        allocation' <- unsafeManagedPtrGetPtr allocation
        (__dynamic_C_WidgetClassSizeAllocateFieldCallback __funPtr) widget' allocation'
        touchManagedPtr widget
        touchManagedPtr allocation
        return ()

    -- | Generate a function pointer callable from C code, from a `C_WidgetClassSizeAllocateFieldCallback`.
    foreign import ccall "wrapper"
        mk_WidgetClassSizeAllocateFieldCallback :: C_WidgetClassSizeAllocateFieldCallback -> IO (FunPtr C_WidgetClassSizeAllocateFieldCallback)

    -- | /No description available in the introspection data./
    type WidgetClassSizeAllocateFieldCallback =
        Gtk.Widget.Widget
        -- ^ /@widget@/: a t'GI.Gtk.Objects.Widget.Widget'
        -> Gdk.Rectangle.Rectangle
        -- ^ /@allocation@/: position and size to be allocated to /@widget@/
        -> IO ()

    -- | A convenience synonym for @`Nothing` :: `Maybe` `WidgetClassSizeAllocateFieldCallback`@.
    noWidgetClassSizeAllocateFieldCallback :: Maybe WidgetClassSizeAllocateFieldCallback
    noWidgetClassSizeAllocateFieldCallback :: Maybe WidgetClassSizeAllocateFieldCallback
    noWidgetClassSizeAllocateFieldCallback = Maybe WidgetClassSizeAllocateFieldCallback
    forall a. Maybe a
    Nothing

    -- | Wrap the callback into a `GClosure`.
    genClosure_WidgetClassSizeAllocateFieldCallback :: MonadIO m => WidgetClassSizeAllocateFieldCallback -> m (GClosure C_WidgetClassSizeAllocateFieldCallback)
    genClosure_WidgetClassSizeAllocateFieldCallback :: forall (m :: * -> *).
    MonadIO m =>
    WidgetClassSizeAllocateFieldCallback
    -> m (GClosure C_WidgetClassSizeAllocateFieldCallback)
    genClosure_WidgetClassSizeAllocateFieldCallback WidgetClassSizeAllocateFieldCallback
    cb = IO (GClosure C_WidgetClassSizeAllocateFieldCallback)
    -> m (GClosure C_WidgetClassSizeAllocateFieldCallback)
    forall a. IO a -> m a
    forall (m :: * -> *) a. MonadIO m => IO a -> m a
    liftIO (IO (GClosure C_WidgetClassSizeAllocateFieldCallback)
     -> m (GClosure C_WidgetClassSizeAllocateFieldCallback))
    -> IO (GClosure C_WidgetClassSizeAllocateFieldCallback)
    -> m (GClosure C_WidgetClassSizeAllocateFieldCallback)
    forall a b. (a -> b) -> a -> b
    $ do
        let cb' :: C_WidgetClassSizeAllocateFieldCallback
    cb' = Maybe (Ptr (FunPtr C_WidgetClassSizeAllocateFieldCallback))
    -> WidgetClassSizeAllocateFieldCallback
    -> C_WidgetClassSizeAllocateFieldCallback
    wrap_WidgetClassSizeAllocateFieldCallback Maybe (Ptr (FunPtr C_WidgetClassSizeAllocateFieldCallback))
    forall a. Maybe a
    Nothing WidgetClassSizeAllocateFieldCallback
    cb
        C_WidgetClassSizeAllocateFieldCallback
    -> IO (FunPtr C_WidgetClassSizeAllocateFieldCallback)
    mk_WidgetClassSizeAllocateFieldCallback C_WidgetClassSizeAllocateFieldCallback
    cb' IO (FunPtr C_WidgetClassSizeAllocateFieldCallback)
    -> (FunPtr C_WidgetClassSizeAllocateFieldCallback
        -> IO (GClosure C_WidgetClassSizeAllocateFieldCallback))
    -> IO (GClosure C_WidgetClassSizeAllocateFieldCallback)
    forall a b. IO a -> (a -> IO b) -> IO b
    forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
    >>= FunPtr C_WidgetClassSizeAllocateFieldCallback
    -> IO (GClosure C_WidgetClassSizeAllocateFieldCallback)
    forall (m :: * -> *) a. MonadIO m => FunPtr a -> m (GClosure a)
    B.GClosure.newGClosure

    -- | Wrap a `WidgetClassSizeAllocateFieldCallback` into a `C_WidgetClassSizeAllocateFieldCallback`.
    wrap_WidgetClassSizeAllocateFieldCallback ::
        Maybe (Ptr (FunPtr C_WidgetClassSizeAllocateFieldCallback)) ->
        WidgetClassSizeAllocateFieldCallback ->
        C_WidgetClassSizeAllocateFieldCallback
    wrap_WidgetClassSizeAllocateFieldCallback :: Maybe (Ptr (FunPtr C_WidgetClassSizeAllocateFieldCallback))
    -> WidgetClassSizeAllocateFieldCallback
    -> C_WidgetClassSizeAllocateFieldCallback
    wrap_WidgetClassSizeAllocateFieldCallback Maybe (Ptr (FunPtr C_WidgetClassSizeAllocateFieldCallback))
    gi'funptrptr WidgetClassSizeAllocateFieldCallback
    gi'cb Ptr Widget
    widget Ptr Rectangle
    allocation = do
        widget' <- ((ManagedPtr Widget -> Widget) -> Ptr Widget -> IO Widget
    forall a b.
    (HasCallStack, GObject a, GObject b) =>
    (ManagedPtr a -> a) -> Ptr b -> IO a
    newObject ManagedPtr Widget -> Widget
    Gtk.Widget.Widget) Ptr Widget
    widget
        B.ManagedPtr.withTransient  allocation $ \Rectangle
    allocation' -> do
            WidgetClassSizeAllocateFieldCallback
    gi'cb  Widget
    widget' Rectangle
    allocation'
            Maybe (Ptr (FunPtr C_WidgetClassSizeAllocateFieldCallback))
    -> IO ()
    forall a. Maybe (Ptr (FunPtr a)) -> IO ()
    maybeReleaseFunPtr Maybe (Ptr (FunPtr C_WidgetClassSizeAllocateFieldCallback))
    gi'funptrptr

    -- callback WidgetClassShowHelpFieldCallback
    {- Callable
      { returnType = Just (TBasicType TBoolean)
      , returnMayBeNull = False
      , returnTransfer = TransferNothing
      , returnDocumentation =
          Documentation { rawDocText = Nothing , sinceVersion = Nothing }
      , args =
          [ Arg
              { argCName = "widget"
              , argType = TInterface Name { namespace = "Gtk" , name = "Widget" }
              , argCType = Just "GtkWidget*"
              , direction = DirectionIn
              , mayBeNull = False
              , argDoc =
                  Documentation { rawDocText = Nothing , sinceVersion = Nothing }
              , argScope = ScopeTypeInvalid
              , argClosure = -1
              , argDestroy = -1
              , argCallerAllocates = False
              , argCallbackUserData = False
              , transfer = TransferNothing
              }
          , Arg
              { argCName = "help_type"
              , argType =
                  TInterface Name { namespace = "Gtk" , name = "WidgetHelpType" }
              , argCType = Just "GtkWidgetHelpType"
              , direction = DirectionIn
              , mayBeNull = False
              , argDoc =
                  Documentation { rawDocText = Nothing , sinceVersion = Nothing }
              , argScope = ScopeTypeInvalid
              , argClosure = -1
              , argDestroy = -1
              , argCallerAllocates = False
              , argCallbackUserData = False
              , transfer = TransferNothing
              }
          ]
      , skipReturn = False
      , callableThrows = False
      , callableDeprecated = Nothing
      , callableDocumentation =
          Documentation { rawDocText = Nothing , sinceVersion = Nothing }
      , callableResolvable = Nothing
      }
    -}
    -- | Type for the callback on the (unwrapped) C side.
    type C_WidgetClassShowHelpFieldCallback =
        Ptr Gtk.Widget.Widget ->
        CUInt ->
        IO CInt

    -- Args: [ Arg
    --           { argCName = "widget"
    --           , argType = TInterface Name { namespace = "Gtk" , name = "Widget" }
    --           , argCType = Just "GtkWidget*"
    --           , direction = DirectionIn
    --           , mayBeNull = False
    --           , argDoc =
    --               Documentation { rawDocText = Nothing , sinceVersion = Nothing }
    --           , argScope = ScopeTypeInvalid
    --           , argClosure = -1
    --           , argDestroy = -1
    --           , argCallerAllocates = False
    --           , argCallbackUserData = False
    --           , transfer = TransferNothing
    --           }
    --       , Arg
    --           { argCName = "help_type"
    --           , argType =
    --               TInterface Name { namespace = "Gtk" , name = "WidgetHelpType" }
    --           , argCType = Just "GtkWidgetHelpType"
    --           , direction = DirectionIn
    --           , mayBeNull = False
    --           , argDoc =
    --               Documentation { rawDocText = Nothing , sinceVersion = Nothing }
    --           , argScope = ScopeTypeInvalid
    --           , argClosure = -1
    --           , argDestroy = -1
    --           , argCallerAllocates = False
    --           , argCallbackUserData = False
    --           , transfer = TransferNothing
    --           }
    --       ]
    -- Lengths: []
    -- returnType: Just (TBasicType TBoolean)
    -- throws : False
    -- Skip return : False

    foreign import ccall "dynamic" __dynamic_C_WidgetClassShowHelpFieldCallback :: FunPtr C_WidgetClassShowHelpFieldCallback -> C_WidgetClassShowHelpFieldCallback

    -- | Given a pointer to a foreign C function, wrap it into a function callable from Haskell.
    dynamic_WidgetClassShowHelpFieldCallback ::
        (B.CallStack.HasCallStack, MonadIO m, Gtk.Widget.IsWidget a) =>
        FunPtr C_WidgetClassShowHelpFieldCallback
        -> a
        -> Gtk.Enums.WidgetHelpType
        -> m Bool
    dynamic_WidgetClassShowHelpFieldCallback :: forall (m :: * -> *) a.
    (HasCallStack, MonadIO m, IsWidget a) =>
    FunPtr C_WidgetClassShowHelpFieldCallback
    -> a -> WidgetHelpType -> m Bool
    dynamic_WidgetClassShowHelpFieldCallback FunPtr C_WidgetClassShowHelpFieldCallback
    __funPtr a
    widget WidgetHelpType
    helpType = IO Bool -> m Bool
    forall a. IO a -> m a
    forall (m :: * -> *) a. MonadIO m => IO a -> m a
    liftIO (IO Bool -> m Bool) -> IO Bool -> m Bool
    forall a b. (a -> b) -> a -> b
    $ do
        widget' <- a -> IO (Ptr Widget)
    forall a b. (HasCallStack, ManagedPtrNewtype a) => a -> IO (Ptr b)
    unsafeManagedPtrCastPtr a
    widget
        let helpType' = (Int -> CUInt
    forall a b. (Integral a, Num b) => a -> b
    fromIntegral (Int -> CUInt)
    -> (WidgetHelpType -> Int) -> WidgetHelpType -> CUInt
    forall b c a. (b -> c) -> (a -> b) -> a -> c
    . WidgetHelpType -> Int
    forall a. Enum a => a -> Int
    fromEnum) WidgetHelpType
    helpType
        result <- (__dynamic_C_WidgetClassShowHelpFieldCallback __funPtr) widget' helpType'
        let result' = (CInt -> CInt -> Bool
    forall a. Eq a => a -> a -> Bool
    /= CInt
    0) CInt
    result
        touchManagedPtr widget
        return result'

    -- | Generate a function pointer callable from C code, from a `C_WidgetClassShowHelpFieldCallback`.
    foreign import ccall "wrapper"
        mk_WidgetClassShowHelpFieldCallback :: C_WidgetClassShowHelpFieldCallback -> IO (FunPtr C_WidgetClassShowHelpFieldCallback)

    -- | /No description available in the introspection data./
    type WidgetClassShowHelpFieldCallback =
        Gtk.Widget.Widget
        -> Gtk.Enums.WidgetHelpType
        -> IO Bool

    -- | A convenience synonym for @`Nothing` :: `Maybe` `WidgetClassShowHelpFieldCallback`@.
    noWidgetClassShowHelpFieldCallback :: Maybe WidgetClassShowHelpFieldCallback
    noWidgetClassShowHelpFieldCallback :: Maybe WidgetClassShowHelpFieldCallback
    noWidgetClassShowHelpFieldCallback = Maybe WidgetClassShowHelpFieldCallback
    forall a. Maybe a
    Nothing

    -- | Wrap the callback into a `GClosure`.
    genClosure_WidgetClassShowHelpFieldCallback :: MonadIO m => WidgetClassShowHelpFieldCallback -> m (GClosure C_WidgetClassShowHelpFieldCallback)
    genClosure_WidgetClassShowHelpFieldCallback :: forall (m :: * -> *).
    MonadIO m =>
    WidgetClassShowHelpFieldCallback
    -> m (GClosure C_WidgetClassShowHelpFieldCallback)
    genClosure_WidgetClassShowHelpFieldCallback WidgetClassShowHelpFieldCallback
    cb = IO (GClosure C_WidgetClassShowHelpFieldCallback)
    -> m (GClosure C_WidgetClassShowHelpFieldCallback)
    forall a. IO a -> m a
    forall (m :: * -> *) a. MonadIO m => IO a -> m a
    liftIO (IO (GClosure C_WidgetClassShowHelpFieldCallback)
     -> m (GClosure C_WidgetClassShowHelpFieldCallback))
    -> IO (GClosure C_WidgetClassShowHelpFieldCallback)
    -> m (GClosure C_WidgetClassShowHelpFieldCallback)
    forall a b. (a -> b) -> a -> b
    $ do
        let cb' :: C_WidgetClassShowHelpFieldCallback
    cb' = Maybe (Ptr (FunPtr C_WidgetClassShowHelpFieldCallback))
    -> WidgetClassShowHelpFieldCallback
    -> C_WidgetClassShowHelpFieldCallback
    wrap_WidgetClassShowHelpFieldCallback Maybe (Ptr (FunPtr C_WidgetClassShowHelpFieldCallback))
    forall a. Maybe a
    Nothing WidgetClassShowHelpFieldCallback
    cb
        C_WidgetClassShowHelpFieldCallback
    -> IO (FunPtr C_WidgetClassShowHelpFieldCallback)
    mk_WidgetClassShowHelpFieldCallback C_WidgetClassShowHelpFieldCallback
    cb' IO (FunPtr C_WidgetClassShowHelpFieldCallback)
    -> (FunPtr C_WidgetClassShowHelpFieldCallback
        -> IO (GClosure C_WidgetClassShowHelpFieldCallback))
    -> IO (GClosure C_WidgetClassShowHelpFieldCallback)
    forall a b. IO a -> (a -> IO b) -> IO b
    forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
    >>= FunPtr C_WidgetClassShowHelpFieldCallback
    -> IO (GClosure C_WidgetClassShowHelpFieldCallback)
    forall (m :: * -> *) a. MonadIO m => FunPtr a -> m (GClosure a)
    B.GClosure.newGClosure

    -- | Wrap a `WidgetClassShowHelpFieldCallback` into a `C_WidgetClassShowHelpFieldCallback`.
    wrap_WidgetClassShowHelpFieldCallback ::
        Maybe (Ptr (FunPtr C_WidgetClassShowHelpFieldCallback)) ->
        WidgetClassShowHelpFieldCallback ->
        C_WidgetClassShowHelpFieldCallback
    wrap_WidgetClassShowHelpFieldCallback :: Maybe (Ptr (FunPtr C_WidgetClassShowHelpFieldCallback))
    -> WidgetClassShowHelpFieldCallback
    -> C_WidgetClassShowHelpFieldCallback
    wrap_WidgetClassShowHelpFieldCallback Maybe (Ptr (FunPtr C_WidgetClassShowHelpFieldCallback))
    gi'funptrptr WidgetClassShowHelpFieldCallback
    gi'cb Ptr Widget
    widget CUInt
    helpType = do
        widget' <- ((ManagedPtr Widget -> Widget) -> Ptr Widget -> IO Widget
    forall a b.
    (HasCallStack, GObject a, GObject b) =>
    (ManagedPtr a -> a) -> Ptr b -> IO a
    newObject ManagedPtr Widget -> Widget
    Gtk.Widget.Widget) Ptr Widget
    widget
        let helpType' = (Int -> WidgetHelpType
    forall a. Enum a => Int -> a
    toEnum (Int -> WidgetHelpType)
    -> (CUInt -> Int) -> CUInt -> WidgetHelpType
    forall b c a. (b -> c) -> (a -> b) -> a -> c
    . CUInt -> Int
    forall a b. (Integral a, Num b) => a -> b
    fromIntegral) CUInt
    helpType
        result <- gi'cb  widget' helpType'
        maybeReleaseFunPtr gi'funptrptr
        let result' = (Int -> CInt
    forall a b. (Integral a, Num b) => a -> b
    P.fromIntegral (Int -> CInt) -> (Bool -> Int) -> Bool -> CInt
    forall b c a. (b -> c) -> (a -> b) -> a -> c
    . Bool -> Int
    forall a. Enum a => a -> Int
    P.fromEnum) Bool
    result
        return result'

    -- callback WidgetClassShowFieldCallback
    {- Callable
      { returnType = Nothing
      , returnMayBeNull = False
      , returnTransfer = TransferNothing
      , returnDocumentation =
          Documentation { rawDocText = Nothing , sinceVersion = Nothing }
      , args =
          [ Arg
              { argCName = "widget"
              , argType = TInterface Name { namespace = "Gtk" , name = "Widget" }
              , argCType = Just "GtkWidget*"
              , direction = DirectionIn
              , mayBeNull = False
              , argDoc =
                  Documentation
                    { rawDocText = Just "a #GtkWidget" , sinceVersion = Nothing }
              , argScope = ScopeTypeInvalid
              , argClosure = -1
              , argDestroy = -1
              , argCallerAllocates = False
              , argCallbackUserData = False
              , transfer = TransferNothing
              }
          ]
      , skipReturn = False
      , callableThrows = False
      , callableDeprecated = Nothing
      , callableDocumentation =
          Documentation { rawDocText = Nothing , sinceVersion = Nothing }
      , callableResolvable = Nothing
      }
    -}
    -- | Type for the callback on the (unwrapped) C side.
    type C_WidgetClassShowFieldCallback =
        Ptr Gtk.Widget.Widget ->
        IO ()

    -- Args: [ Arg
    --           { argCName = "widget"
    --           , argType = TInterface Name { namespace = "Gtk" , name = "Widget" }
    --           , argCType = Just "GtkWidget*"
    --           , direction = DirectionIn
    --           , mayBeNull = False
    --           , argDoc =
    --               Documentation
    --                 { rawDocText = Just "a #GtkWidget" , sinceVersion = Nothing }
    --           , argScope = ScopeTypeInvalid
    --           , argClosure = -1
    --           , argDestroy = -1
    --           , argCallerAllocates = False
    --           , argCallbackUserData = False
    --           , transfer = TransferNothing
    --           }
    --       ]
    -- Lengths: []
    -- returnType: Nothing
    -- throws : False
    -- Skip return : False

    foreign import ccall "dynamic" __dynamic_C_WidgetClassShowFieldCallback :: FunPtr C_WidgetClassShowFieldCallback -> C_WidgetClassShowFieldCallback

    -- | Given a pointer to a foreign C function, wrap it into a function callable from Haskell.
    dynamic_WidgetClassShowFieldCallback ::
        (B.CallStack.HasCallStack, MonadIO m, Gtk.Widget.IsWidget a) =>
        FunPtr C_WidgetClassShowFieldCallback
        -> a
        -- ^ /@widget@/: a t'GI.Gtk.Objects.Widget.Widget'
        -> m ()
    dynamic_WidgetClassShowFieldCallback :: forall (m :: * -> *) a.
    (HasCallStack, MonadIO m, IsWidget a) =>
    FunPtr C_WidgetClassUnrealizeFieldCallback -> a -> m ()
    dynamic_WidgetClassShowFieldCallback FunPtr C_WidgetClassUnrealizeFieldCallback
    __funPtr a
    widget = IO () -> m ()
    forall a. IO a -> m a
    forall (m :: * -> *) a. MonadIO m => IO a -> m a
    liftIO (IO () -> m ()) -> IO () -> m ()
    forall a b. (a -> b) -> a -> b
    $ do
        widget' <- a -> IO (Ptr Widget)
    forall a b. (HasCallStack, ManagedPtrNewtype a) => a -> IO (Ptr b)
    unsafeManagedPtrCastPtr a
    widget
        (__dynamic_C_WidgetClassShowFieldCallback __funPtr) widget'
        touchManagedPtr widget
        return ()

    -- | Generate a function pointer callable from C code, from a `C_WidgetClassShowFieldCallback`.
    foreign import ccall "wrapper"
        mk_WidgetClassShowFieldCallback :: C_WidgetClassShowFieldCallback -> IO (FunPtr C_WidgetClassShowFieldCallback)

    -- | /No description available in the introspection data./
    type WidgetClassShowFieldCallback =
        Gtk.Widget.Widget
        -- ^ /@widget@/: a t'GI.Gtk.Objects.Widget.Widget'
        -> IO ()

    -- | A convenience synonym for @`Nothing` :: `Maybe` `WidgetClassShowFieldCallback`@.
    noWidgetClassShowFieldCallback :: Maybe WidgetClassShowFieldCallback
    noWidgetClassShowFieldCallback :: Maybe WidgetClassUnrealizeFieldCallback
    noWidgetClassShowFieldCallback = Maybe WidgetClassUnrealizeFieldCallback
    forall a. Maybe a
    Nothing

    -- | Wrap the callback into a `GClosure`.
    genClosure_WidgetClassShowFieldCallback :: MonadIO m => WidgetClassShowFieldCallback -> m (GClosure C_WidgetClassShowFieldCallback)
    genClosure_WidgetClassShowFieldCallback :: forall (m :: * -> *).
    MonadIO m =>
    WidgetClassUnrealizeFieldCallback
    -> m (GClosure C_WidgetClassUnrealizeFieldCallback)
    genClosure_WidgetClassShowFieldCallback WidgetClassUnrealizeFieldCallback
    cb = IO (GClosure C_WidgetClassUnrealizeFieldCallback)
    -> m (GClosure C_WidgetClassUnrealizeFieldCallback)
    forall a. IO a -> m a
    forall (m :: * -> *) a. MonadIO m => IO a -> m a
    liftIO (IO (GClosure C_WidgetClassUnrealizeFieldCallback)
     -> m (GClosure C_WidgetClassUnrealizeFieldCallback))
    -> IO (GClosure C_WidgetClassUnrealizeFieldCallback)
    -> m (GClosure C_WidgetClassUnrealizeFieldCallback)
    forall a b. (a -> b) -> a -> b
    $ do
        let cb' :: C_WidgetClassUnrealizeFieldCallback
    cb' = Maybe (Ptr (FunPtr C_WidgetClassUnrealizeFieldCallback))
    -> WidgetClassUnrealizeFieldCallback
    -> C_WidgetClassUnrealizeFieldCallback
    wrap_WidgetClassShowFieldCallback Maybe (Ptr (FunPtr C_WidgetClassUnrealizeFieldCallback))
    forall a. Maybe a
    Nothing WidgetClassUnrealizeFieldCallback
    cb
        C_WidgetClassUnrealizeFieldCallback
    -> IO (FunPtr C_WidgetClassUnrealizeFieldCallback)
    mk_WidgetClassShowFieldCallback C_WidgetClassUnrealizeFieldCallback
    cb' IO (FunPtr C_WidgetClassUnrealizeFieldCallback)
    -> (FunPtr C_WidgetClassUnrealizeFieldCallback
        -> IO (GClosure C_WidgetClassUnrealizeFieldCallback))
    -> IO (GClosure C_WidgetClassUnrealizeFieldCallback)
    forall a b. IO a -> (a -> IO b) -> IO b
    forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
    >>= FunPtr C_WidgetClassUnrealizeFieldCallback
    -> IO (GClosure C_WidgetClassUnrealizeFieldCallback)
    forall (m :: * -> *) a. MonadIO m => FunPtr a -> m (GClosure a)
    B.GClosure.newGClosure

    -- | Wrap a `WidgetClassShowFieldCallback` into a `C_WidgetClassShowFieldCallback`.
    wrap_WidgetClassShowFieldCallback ::
        Maybe (Ptr (FunPtr C_WidgetClassShowFieldCallback)) ->
        WidgetClassShowFieldCallback ->
        C_WidgetClassShowFieldCallback
    wrap_WidgetClassShowFieldCallback :: Maybe (Ptr (FunPtr C_WidgetClassUnrealizeFieldCallback))
    -> WidgetClassUnrealizeFieldCallback
    -> C_WidgetClassUnrealizeFieldCallback
    wrap_WidgetClassShowFieldCallback Maybe (Ptr (FunPtr C_WidgetClassUnrealizeFieldCallback))
    gi'funptrptr WidgetClassUnrealizeFieldCallback
    gi'cb Ptr Widget
    widget = do
        widget' <- ((ManagedPtr Widget -> Widget) -> Ptr Widget -> IO Widget
    forall a b.
    (HasCallStack, GObject a, GObject b) =>
    (ManagedPtr a -> a) -> Ptr b -> IO a
    newObject ManagedPtr Widget -> Widget
    Gtk.Widget.Widget) Ptr Widget
    widget
        gi'cb  widget'
        maybeReleaseFunPtr gi'funptrptr

    -- callback WidgetClassShowAllFieldCallback
    {- Callable
      { returnType = Nothing
      , returnMayBeNull = False
      , returnTransfer = TransferNothing
      , returnDocumentation =
          Documentation { rawDocText = Nothing , sinceVersion = Nothing }
      , args =
          [ Arg
              { argCName = "widget"
              , argType = TInterface Name { namespace = "Gtk" , name = "Widget" }
              , argCType = Just "GtkWidget*"
              , direction = DirectionIn
              , mayBeNull = False
              , argDoc =
                  Documentation
                    { rawDocText = Just "a #GtkWidget" , sinceVersion = Nothing }
              , argScope = ScopeTypeInvalid
              , argClosure = -1
              , argDestroy = -1
              , argCallerAllocates = False
              , argCallbackUserData = False
              , transfer = TransferNothing
              }
          ]
      , skipReturn = False
      , callableThrows = False
      , callableDeprecated = Nothing
      , callableDocumentation =
          Documentation { rawDocText = Nothing , sinceVersion = Nothing }
      , callableResolvable = Nothing
      }
    -}
    -- | Type for the callback on the (unwrapped) C side.
    type C_WidgetClassShowAllFieldCallback =
        Ptr Gtk.Widget.Widget ->
        IO ()

    -- Args: [ Arg
    --           { argCName = "widget"
    --           , argType = TInterface Name { namespace = "Gtk" , name = "Widget" }
    --           , argCType = Just "GtkWidget*"
    --           , direction = DirectionIn
    --           , mayBeNull = False
    --           , argDoc =
    --               Documentation
    --                 { rawDocText = Just "a #GtkWidget" , sinceVersion = Nothing }
    --           , argScope = ScopeTypeInvalid
    --           , argClosure = -1
    --           , argDestroy = -1
    --           , argCallerAllocates = False
    --           , argCallbackUserData = False
    --           , transfer = TransferNothing
    --           }
    --       ]
    -- Lengths: []
    -- returnType: Nothing
    -- throws : False
    -- Skip return : False

    foreign import ccall "dynamic" __dynamic_C_WidgetClassShowAllFieldCallback :: FunPtr C_WidgetClassShowAllFieldCallback -> C_WidgetClassShowAllFieldCallback

    -- | Given a pointer to a foreign C function, wrap it into a function callable from Haskell.
    dynamic_WidgetClassShowAllFieldCallback ::
        (B.CallStack.HasCallStack, MonadIO m, Gtk.Widget.IsWidget a) =>
        FunPtr C_WidgetClassShowAllFieldCallback
        -> a
        -- ^ /@widget@/: a t'GI.Gtk.Objects.Widget.Widget'
        -> m ()
    dynamic_WidgetClassShowAllFieldCallback :: forall (m :: * -> *) a.
    (HasCallStack, MonadIO m, IsWidget a) =>
    FunPtr C_WidgetClassUnrealizeFieldCallback -> a -> m ()
    dynamic_WidgetClassShowAllFieldCallback FunPtr C_WidgetClassUnrealizeFieldCallback
    __funPtr a
    widget = IO () -> m ()
    forall a. IO a -> m a
    forall (m :: * -> *) a. MonadIO m => IO a -> m a
    liftIO (IO () -> m ()) -> IO () -> m ()
    forall a b. (a -> b) -> a -> b
    $ do
        widget' <- a -> IO (Ptr Widget)
    forall a b. (HasCallStack, ManagedPtrNewtype a) => a -> IO (Ptr b)
    unsafeManagedPtrCastPtr a
    widget
        (__dynamic_C_WidgetClassShowAllFieldCallback __funPtr) widget'
        touchManagedPtr widget
        return ()

    -- | Generate a function pointer callable from C code, from a `C_WidgetClassShowAllFieldCallback`.
    foreign import ccall "wrapper"
        mk_WidgetClassShowAllFieldCallback :: C_WidgetClassShowAllFieldCallback -> IO (FunPtr C_WidgetClassShowAllFieldCallback)

    -- | /No description available in the introspection data./
    type WidgetClassShowAllFieldCallback =
        Gtk.Widget.Widget
        -- ^ /@widget@/: a t'GI.Gtk.Objects.Widget.Widget'
        -> IO ()

    -- | A convenience synonym for @`Nothing` :: `Maybe` `WidgetClassShowAllFieldCallback`@.
    noWidgetClassShowAllFieldCallback :: Maybe WidgetClassShowAllFieldCallback
    noWidgetClassShowAllFieldCallback :: Maybe WidgetClassUnrealizeFieldCallback
    noWidgetClassShowAllFieldCallback = Maybe WidgetClassUnrealizeFieldCallback
    forall a. Maybe a
    Nothing

    -- | Wrap the callback into a `GClosure`.
    genClosure_WidgetClassShowAllFieldCallback :: MonadIO m => WidgetClassShowAllFieldCallback -> m (GClosure C_WidgetClassShowAllFieldCallback)
    genClosure_WidgetClassShowAllFieldCallback :: forall (m :: * -> *).
    MonadIO m =>
    WidgetClassUnrealizeFieldCallback
    -> m (GClosure C_WidgetClassUnrealizeFieldCallback)
    genClosure_WidgetClassShowAllFieldCallback WidgetClassUnrealizeFieldCallback
    cb = IO (GClosure C_WidgetClassUnrealizeFieldCallback)
    -> m (GClosure C_WidgetClassUnrealizeFieldCallback)
    forall a. IO a -> m a
    forall (m :: * -> *) a. MonadIO m => IO a -> m a
    liftIO (IO (GClosure C_WidgetClassUnrealizeFieldCallback)
     -> m (GClosure C_WidgetClassUnrealizeFieldCallback))
    -> IO (GClosure C_WidgetClassUnrealizeFieldCallback)
    -> m (GClosure C_WidgetClassUnrealizeFieldCallback)
    forall a b. (a -> b) -> a -> b
    $ do
        let cb' :: C_WidgetClassUnrealizeFieldCallback
    cb' = Maybe (Ptr (FunPtr C_WidgetClassUnrealizeFieldCallback))
    -> WidgetClassUnrealizeFieldCallback
    -> C_WidgetClassUnrealizeFieldCallback
    wrap_WidgetClassShowAllFieldCallback Maybe (Ptr (FunPtr C_WidgetClassUnrealizeFieldCallback))
    forall a. Maybe a
    Nothing WidgetClassUnrealizeFieldCallback
    cb
        C_WidgetClassUnrealizeFieldCallback
    -> IO (FunPtr C_WidgetClassUnrealizeFieldCallback)
    mk_WidgetClassShowAllFieldCallback C_WidgetClassUnrealizeFieldCallback
    cb' IO (FunPtr C_WidgetClassUnrealizeFieldCallback)
    -> (FunPtr C_WidgetClassUnrealizeFieldCallback
        -> IO (GClosure C_WidgetClassUnrealizeFieldCallback))
    -> IO (GClosure C_WidgetClassUnrealizeFieldCallback)
    forall a b. IO a -> (a -> IO b) -> IO b
    forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
    >>= FunPtr C_WidgetClassUnrealizeFieldCallback
    -> IO (GClosure C_WidgetClassUnrealizeFieldCallback)
    forall (m :: * -> *) a. MonadIO m => FunPtr a -> m (GClosure a)
    B.GClosure.newGClosure

    -- | Wrap a `WidgetClassShowAllFieldCallback` into a `C_WidgetClassShowAllFieldCallback`.
    wrap_WidgetClassShowAllFieldCallback ::
        Maybe (Ptr (FunPtr C_WidgetClassShowAllFieldCallback)) ->
        WidgetClassShowAllFieldCallback ->
        C_WidgetClassShowAllFieldCallback
    wrap_WidgetClassShowAllFieldCallback :: Maybe (Ptr (FunPtr C_WidgetClassUnrealizeFieldCallback))
    -> WidgetClassUnrealizeFieldCallback
    -> C_WidgetClassUnrealizeFieldCallback
    wrap_WidgetClassShowAllFieldCallback Maybe (Ptr (FunPtr C_WidgetClassUnrealizeFieldCallback))
    gi'funptrptr WidgetClassUnrealizeFieldCallback
    gi'cb Ptr Widget
    widget = do
        widget' <- ((ManagedPtr Widget -> Widget) -> Ptr Widget -> IO Widget
    forall a b.
    (HasCallStack, GObject a, GObject b) =>
    (ManagedPtr a -> a) -> Ptr b -> IO a
    newObject ManagedPtr Widget -> Widget
    Gtk.Widget.Widget) Ptr Widget
    widget
        gi'cb  widget'
        maybeReleaseFunPtr gi'funptrptr

    -- callback WidgetClassSelectionRequestEventFieldCallback
    {- Callable
      { returnType = Just (TBasicType TBoolean)
      , returnMayBeNull = False
      , returnTransfer = TransferNothing
      , returnDocumentation =
          Documentation { rawDocText = Nothing , sinceVersion = Nothing }
      , args =
          [ Arg
              { argCName = "widget"
              , argType = TInterface Name { namespace = "Gtk" , name = "Widget" }
              , argCType = Just "GtkWidget*"
              , direction = DirectionIn
              , mayBeNull = False
              , argDoc =
                  Documentation { rawDocText = Nothing , sinceVersion = Nothing }
              , argScope = ScopeTypeInvalid
              , argClosure = -1
              , argDestroy = -1
              , argCallerAllocates = False
              , argCallbackUserData = False
              , transfer = TransferNothing
              }
          , Arg
              { argCName = "event"
              , argType =
                  TInterface Name { namespace = "Gdk" , name = "EventSelection" }
              , argCType = Just "GdkEventSelection*"
              , direction = DirectionIn
              , mayBeNull = False
              , argDoc =
                  Documentation { rawDocText = Nothing , sinceVersion = Nothing }
              , argScope = ScopeTypeInvalid
              , argClosure = -1
              , argDestroy = -1
              , argCallerAllocates = False
              , argCallbackUserData = False
              , transfer = TransferNothing
              }
          ]
      , skipReturn = False
      , callableThrows = False
      , callableDeprecated = Nothing
      , callableDocumentation =
          Documentation { rawDocText = Nothing , sinceVersion = Nothing }
      , callableResolvable = Nothing
      }
    -}
    -- | Type for the callback on the (unwrapped) C side.
    type C_WidgetClassSelectionRequestEventFieldCallback =
        Ptr Gtk.Widget.Widget ->
        Ptr Gdk.EventSelection.EventSelection ->
        IO CInt

    -- Args: [ Arg
    --           { argCName = "widget"
    --           , argType = TInterface Name { namespace = "Gtk" , name = "Widget" }
    --           , argCType = Just "GtkWidget*"
    --           , direction = DirectionIn
    --           , mayBeNull = False
    --           , argDoc =
    --               Documentation { rawDocText = Nothing , sinceVersion = Nothing }
    --           , argScope = ScopeTypeInvalid
    --           , argClosure = -1
    --           , argDestroy = -1
    --           , argCallerAllocates = False
    --           , argCallbackUserData = False
    --           , transfer = TransferNothing
    --           }
    --       , Arg
    --           { argCName = "event"
    --           , argType =
    --               TInterface Name { namespace = "Gdk" , name = "EventSelection" }
    --           , argCType = Just "GdkEventSelection*"
    --           , direction = DirectionIn
    --           , mayBeNull = False
    --           , argDoc =
    --               Documentation { rawDocText = Nothing , sinceVersion = Nothing }
    --           , argScope = ScopeTypeInvalid
    --           , argClosure = -1
    --           , argDestroy = -1
    --           , argCallerAllocates = False
    --           , argCallbackUserData = False
    --           , transfer = TransferNothing
    --           }
    --       ]
    -- Lengths: []
    -- returnType: Just (TBasicType TBoolean)
    -- throws : False
    -- Skip return : False

    foreign import ccall "dynamic" __dynamic_C_WidgetClassSelectionRequestEventFieldCallback :: FunPtr C_WidgetClassSelectionRequestEventFieldCallback -> C_WidgetClassSelectionRequestEventFieldCallback

    -- | Given a pointer to a foreign C function, wrap it into a function callable from Haskell.
    dynamic_WidgetClassSelectionRequestEventFieldCallback ::
        (B.CallStack.HasCallStack, MonadIO m, Gtk.Widget.IsWidget a) =>
        FunPtr C_WidgetClassSelectionRequestEventFieldCallback
        -> a
        -> Gdk.EventSelection.EventSelection
        -> m Bool
    dynamic_WidgetClassSelectionRequestEventFieldCallback :: forall (m :: * -> *) a.
    (HasCallStack, MonadIO m, IsWidget a) =>
    FunPtr C_WidgetClassSelectionRequestEventFieldCallback
    -> a -> EventSelection -> m Bool
    dynamic_WidgetClassSelectionRequestEventFieldCallback FunPtr C_WidgetClassSelectionRequestEventFieldCallback
    __funPtr a
    widget EventSelection
    event = IO Bool -> m Bool
    forall a. IO a -> m a
    forall (m :: * -> *) a. MonadIO m => IO a -> m a
    liftIO (IO Bool -> m Bool) -> IO Bool -> m Bool
    forall a b. (a -> b) -> a -> b
    $ do
        widget' <- a -> IO (Ptr Widget)
    forall a b. (HasCallStack, ManagedPtrNewtype a) => a -> IO (Ptr b)
    unsafeManagedPtrCastPtr a
    widget
        event' <- unsafeManagedPtrGetPtr event
        result <- (__dynamic_C_WidgetClassSelectionRequestEventFieldCallback __funPtr) widget' event'
        let result' = (CInt -> CInt -> Bool
    forall a. Eq a => a -> a -> Bool
    /= CInt
    0) CInt
    result
        touchManagedPtr widget
        touchManagedPtr event
        return result'

    -- | Generate a function pointer callable from C code, from a `C_WidgetClassSelectionRequestEventFieldCallback`.
    foreign import ccall "wrapper"
        mk_WidgetClassSelectionRequestEventFieldCallback :: C_WidgetClassSelectionRequestEventFieldCallback -> IO (FunPtr C_WidgetClassSelectionRequestEventFieldCallback)

    -- | /No description available in the introspection data./
    type WidgetClassSelectionRequestEventFieldCallback =
        Gtk.Widget.Widget
        -> Gdk.EventSelection.EventSelection
        -> IO Bool

    -- | A convenience synonym for @`Nothing` :: `Maybe` `WidgetClassSelectionRequestEventFieldCallback`@.
    noWidgetClassSelectionRequestEventFieldCallback :: Maybe WidgetClassSelectionRequestEventFieldCallback
    noWidgetClassSelectionRequestEventFieldCallback :: Maybe WidgetClassSelectionRequestEventFieldCallback
    noWidgetClassSelectionRequestEventFieldCallback = Maybe WidgetClassSelectionRequestEventFieldCallback
    forall a. Maybe a
    Nothing

    -- | Wrap the callback into a `GClosure`.
    genClosure_WidgetClassSelectionRequestEventFieldCallback :: MonadIO m => WidgetClassSelectionRequestEventFieldCallback -> m (GClosure C_WidgetClassSelectionRequestEventFieldCallback)
    genClosure_WidgetClassSelectionRequestEventFieldCallback :: forall (m :: * -> *).
    MonadIO m =>
    WidgetClassSelectionRequestEventFieldCallback
    -> m (GClosure C_WidgetClassSelectionRequestEventFieldCallback)
    genClosure_WidgetClassSelectionRequestEventFieldCallback WidgetClassSelectionRequestEventFieldCallback
    cb = IO (GClosure C_WidgetClassSelectionRequestEventFieldCallback)
    -> m (GClosure C_WidgetClassSelectionRequestEventFieldCallback)
    forall a. IO a -> m a
    forall (m :: * -> *) a. MonadIO m => IO a -> m a
    liftIO (IO (GClosure C_WidgetClassSelectionRequestEventFieldCallback)
     -> m (GClosure C_WidgetClassSelectionRequestEventFieldCallback))
    -> IO (GClosure C_WidgetClassSelectionRequestEventFieldCallback)
    -> m (GClosure C_WidgetClassSelectionRequestEventFieldCallback)
    forall a b. (a -> b) -> a -> b
    $ do
        let cb' :: C_WidgetClassSelectionRequestEventFieldCallback
    cb' = Maybe
      (Ptr (FunPtr C_WidgetClassSelectionRequestEventFieldCallback))
    -> WidgetClassSelectionRequestEventFieldCallback
    -> C_WidgetClassSelectionRequestEventFieldCallback
    wrap_WidgetClassSelectionRequestEventFieldCallback Maybe
      (Ptr (FunPtr C_WidgetClassSelectionRequestEventFieldCallback))
    forall a. Maybe a
    Nothing WidgetClassSelectionRequestEventFieldCallback
    cb
        C_WidgetClassSelectionRequestEventFieldCallback
    -> IO (FunPtr C_WidgetClassSelectionRequestEventFieldCallback)
    mk_WidgetClassSelectionRequestEventFieldCallback C_WidgetClassSelectionRequestEventFieldCallback
    cb' IO (FunPtr C_WidgetClassSelectionRequestEventFieldCallback)
    -> (FunPtr C_WidgetClassSelectionRequestEventFieldCallback
        -> IO (GClosure C_WidgetClassSelectionRequestEventFieldCallback))
    -> IO (GClosure C_WidgetClassSelectionRequestEventFieldCallback)
    forall a b. IO a -> (a -> IO b) -> IO b
    forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
    >>= FunPtr C_WidgetClassSelectionRequestEventFieldCallback
    -> IO (GClosure C_WidgetClassSelectionRequestEventFieldCallback)
    forall (m :: * -> *) a. MonadIO m => FunPtr a -> m (GClosure a)
    B.GClosure.newGClosure

    -- | Wrap a `WidgetClassSelectionRequestEventFieldCallback` into a `C_WidgetClassSelectionRequestEventFieldCallback`.
    wrap_WidgetClassSelectionRequestEventFieldCallback ::
        Maybe (Ptr (FunPtr C_WidgetClassSelectionRequestEventFieldCallback)) ->
        WidgetClassSelectionRequestEventFieldCallback ->
        C_WidgetClassSelectionRequestEventFieldCallback
    wrap_WidgetClassSelectionRequestEventFieldCallback :: Maybe
      (Ptr (FunPtr C_WidgetClassSelectionRequestEventFieldCallback))
    -> WidgetClassSelectionRequestEventFieldCallback
    -> C_WidgetClassSelectionRequestEventFieldCallback
    wrap_WidgetClassSelectionRequestEventFieldCallback Maybe
      (Ptr (FunPtr C_WidgetClassSelectionRequestEventFieldCallback))
    gi'funptrptr WidgetClassSelectionRequestEventFieldCallback
    gi'cb Ptr Widget
    widget Ptr EventSelection
    event = do
        widget' <- ((ManagedPtr Widget -> Widget) -> Ptr Widget -> IO Widget
    forall a b.
    (HasCallStack, GObject a, GObject b) =>
    (ManagedPtr a -> a) -> Ptr b -> IO a
    newObject ManagedPtr Widget -> Widget
    Gtk.Widget.Widget) Ptr Widget
    widget
        event' <- (newPtr Gdk.EventSelection.EventSelection) event
        result <- gi'cb  widget' event'
        maybeReleaseFunPtr gi'funptrptr
        let result' = (Int -> CInt
    forall a b. (Integral a, Num b) => a -> b
    P.fromIntegral (Int -> CInt) -> (Bool -> Int) -> Bool -> CInt
    forall b c a. (b -> c) -> (a -> b) -> a -> c
    . Bool -> Int
    forall a. Enum a => a -> Int
    P.fromEnum) Bool
    result
        return result'

    -- callback WidgetClassSelectionReceivedFieldCallback
    {- Callable
      { returnType = Nothing
      , returnMayBeNull = False
      , returnTransfer = TransferNothing
      , returnDocumentation =
          Documentation { rawDocText = Nothing , sinceVersion = Nothing }
      , args =
          [ Arg
              { argCName = "widget"
              , argType = TInterface Name { namespace = "Gtk" , name = "Widget" }
              , argCType = Just "GtkWidget*"
              , direction = DirectionIn
              , mayBeNull = False
              , argDoc =
                  Documentation { rawDocText = Nothing , sinceVersion = Nothing }
              , argScope = ScopeTypeInvalid
              , argClosure = -1
              , argDestroy = -1
              , argCallerAllocates = False
              , argCallbackUserData = False
              , transfer = TransferNothing
              }
          , Arg
              { argCName = "selection_data"
              , argType =
                  TInterface Name { namespace = "Gtk" , name = "SelectionData" }
              , argCType = Just "GtkSelectionData*"
              , direction = DirectionIn
              , mayBeNull = False
              , argDoc =
                  Documentation { rawDocText = Nothing , sinceVersion = Nothing }
              , argScope = ScopeTypeInvalid
              , argClosure = -1
              , argDestroy = -1
              , argCallerAllocates = False
              , argCallbackUserData = False
              , transfer = TransferNothing
              }
          , Arg
              { argCName = "time_"
              , argType = TBasicType TUInt
              , argCType = Just "guint"
              , direction = DirectionIn
              , mayBeNull = False
              , argDoc =
                  Documentation { rawDocText = Nothing , sinceVersion = Nothing }
              , argScope = ScopeTypeInvalid
              , argClosure = -1
              , argDestroy = -1
              , argCallerAllocates = False
              , argCallbackUserData = False
              , transfer = TransferNothing
              }
          ]
      , skipReturn = False
      , callableThrows = False
      , callableDeprecated = Nothing
      , callableDocumentation =
          Documentation { rawDocText = Nothing , sinceVersion = Nothing }
      , callableResolvable = Nothing
      }
    -}
    -- | Type for the callback on the (unwrapped) C side.
    type C_WidgetClassSelectionReceivedFieldCallback =
        Ptr Gtk.Widget.Widget ->
        Ptr Gtk.SelectionData.SelectionData ->
        Word32 ->
        IO ()

    -- Args: [ Arg
    --           { argCName = "widget"
    --           , argType = TInterface Name { namespace = "Gtk" , name = "Widget" }
    --           , argCType = Just "GtkWidget*"
    --           , direction = DirectionIn
    --           , mayBeNull = False
    --           , argDoc =
    --               Documentation { rawDocText = Nothing , sinceVersion = Nothing }
    --           , argScope = ScopeTypeInvalid
    --           , argClosure = -1
    --           , argDestroy = -1
    --           , argCallerAllocates = False
    --           , argCallbackUserData = False
    --           , transfer = TransferNothing
    --           }
    --       , Arg
    --           { argCName = "selection_data"
    --           , argType =
    --               TInterface Name { namespace = "Gtk" , name = "SelectionData" }
    --           , argCType = Just "GtkSelectionData*"
    --           , direction = DirectionIn
    --           , mayBeNull = False
    --           , argDoc =
    --               Documentation { rawDocText = Nothing , sinceVersion = Nothing }
    --           , argScope = ScopeTypeInvalid
    --           , argClosure = -1
    --           , argDestroy = -1
    --           , argCallerAllocates = False
    --           , argCallbackUserData = False
    --           , transfer = TransferNothing
    --           }
    --       , Arg
    --           { argCName = "time_"
    --           , argType = TBasicType TUInt
    --           , argCType = Just "guint"
    --           , direction = DirectionIn
    --           , mayBeNull = False
    --           , argDoc =
    --               Documentation { rawDocText = Nothing , sinceVersion = Nothing }
    --           , argScope = ScopeTypeInvalid
    --           , argClosure = -1
    --           , argDestroy = -1
    --           , argCallerAllocates = False
    --           , argCallbackUserData = False
    --           , transfer = TransferNothing
    --           }
    --       ]
    -- Lengths: []
    -- returnType: Nothing
    -- throws : False
    -- Skip return : False

    foreign import ccall "dynamic" __dynamic_C_WidgetClassSelectionReceivedFieldCallback :: FunPtr C_WidgetClassSelectionReceivedFieldCallback -> C_WidgetClassSelectionReceivedFieldCallback

    -- | Given a pointer to a foreign C function, wrap it into a function callable from Haskell.
    dynamic_WidgetClassSelectionReceivedFieldCallback ::
        (B.CallStack.HasCallStack, MonadIO m, Gtk.Widget.IsWidget a) =>
        FunPtr C_WidgetClassSelectionReceivedFieldCallback
        -> a
        -> Gtk.SelectionData.SelectionData
        -> Word32
        -> m ()
    dynamic_WidgetClassSelectionReceivedFieldCallback :: forall (m :: * -> *) a.
    (HasCallStack, MonadIO m, IsWidget a) =>
    FunPtr C_WidgetClassSelectionReceivedFieldCallback
    -> a -> SelectionData -> Word32 -> m ()
    dynamic_WidgetClassSelectionReceivedFieldCallback FunPtr C_WidgetClassSelectionReceivedFieldCallback
    __funPtr a
    widget SelectionData
    selectionData Word32
    time_ = IO () -> m ()
    forall a. IO a -> m a
    forall (m :: * -> *) a. MonadIO m => IO a -> m a
    liftIO (IO () -> m ()) -> IO () -> m ()
    forall a b. (a -> b) -> a -> b
    $ do
        widget' <- a -> IO (Ptr Widget)
    forall a b. (HasCallStack, ManagedPtrNewtype a) => a -> IO (Ptr b)
    unsafeManagedPtrCastPtr a
    widget
        selectionData' <- unsafeManagedPtrGetPtr selectionData
        (__dynamic_C_WidgetClassSelectionReceivedFieldCallback __funPtr) widget' selectionData' time_
        touchManagedPtr widget
        touchManagedPtr selectionData
        return ()

    -- | Generate a function pointer callable from C code, from a `C_WidgetClassSelectionReceivedFieldCallback`.
    foreign import ccall "wrapper"
        mk_WidgetClassSelectionReceivedFieldCallback :: C_WidgetClassSelectionReceivedFieldCallback -> IO (FunPtr C_WidgetClassSelectionReceivedFieldCallback)

    -- | /No description available in the introspection data./
    type WidgetClassSelectionReceivedFieldCallback =
        Gtk.Widget.Widget
        -> Gtk.SelectionData.SelectionData
        -> Word32
        -> IO ()

    -- | A convenience synonym for @`Nothing` :: `Maybe` `WidgetClassSelectionReceivedFieldCallback`@.
    noWidgetClassSelectionReceivedFieldCallback :: Maybe WidgetClassSelectionReceivedFieldCallback
    noWidgetClassSelectionReceivedFieldCallback :: Maybe WidgetClassSelectionReceivedFieldCallback
    noWidgetClassSelectionReceivedFieldCallback = Maybe WidgetClassSelectionReceivedFieldCallback
    forall a. Maybe a
    Nothing

    -- | Wrap the callback into a `GClosure`.
    genClosure_WidgetClassSelectionReceivedFieldCallback :: MonadIO m => WidgetClassSelectionReceivedFieldCallback -> m (GClosure C_WidgetClassSelectionReceivedFieldCallback)
    genClosure_WidgetClassSelectionReceivedFieldCallback :: forall (m :: * -> *).
    MonadIO m =>
    WidgetClassSelectionReceivedFieldCallback
    -> m (GClosure C_WidgetClassSelectionReceivedFieldCallback)
    genClosure_WidgetClassSelectionReceivedFieldCallback WidgetClassSelectionReceivedFieldCallback
    cb = IO (GClosure C_WidgetClassSelectionReceivedFieldCallback)
    -> m (GClosure C_WidgetClassSelectionReceivedFieldCallback)
    forall a. IO a -> m a
    forall (m :: * -> *) a. MonadIO m => IO a -> m a
    liftIO (IO (GClosure C_WidgetClassSelectionReceivedFieldCallback)
     -> m (GClosure C_WidgetClassSelectionReceivedFieldCallback))
    -> IO (GClosure C_WidgetClassSelectionReceivedFieldCallback)
    -> m (GClosure C_WidgetClassSelectionReceivedFieldCallback)
    forall a b. (a -> b) -> a -> b
    $ do
        let cb' :: C_WidgetClassSelectionReceivedFieldCallback
    cb' = Maybe (Ptr (FunPtr C_WidgetClassSelectionReceivedFieldCallback))
    -> WidgetClassSelectionReceivedFieldCallback
    -> C_WidgetClassSelectionReceivedFieldCallback
    wrap_WidgetClassSelectionReceivedFieldCallback Maybe (Ptr (FunPtr C_WidgetClassSelectionReceivedFieldCallback))
    forall a. Maybe a
    Nothing WidgetClassSelectionReceivedFieldCallback
    cb
        C_WidgetClassSelectionReceivedFieldCallback
    -> IO (FunPtr C_WidgetClassSelectionReceivedFieldCallback)
    mk_WidgetClassSelectionReceivedFieldCallback C_WidgetClassSelectionReceivedFieldCallback
    cb' IO (FunPtr C_WidgetClassSelectionReceivedFieldCallback)
    -> (FunPtr C_WidgetClassSelectionReceivedFieldCallback
        -> IO (GClosure C_WidgetClassSelectionReceivedFieldCallback))
    -> IO (GClosure C_WidgetClassSelectionReceivedFieldCallback)
    forall a b. IO a -> (a -> IO b) -> IO b
    forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
    >>= FunPtr C_WidgetClassSelectionReceivedFieldCallback
    -> IO (GClosure C_WidgetClassSelectionReceivedFieldCallback)
    forall (m :: * -> *) a. MonadIO m => FunPtr a -> m (GClosure a)
    B.GClosure.newGClosure

    -- | Wrap a `WidgetClassSelectionReceivedFieldCallback` into a `C_WidgetClassSelectionReceivedFieldCallback`.
    wrap_WidgetClassSelectionReceivedFieldCallback ::
        Maybe (Ptr (FunPtr C_WidgetClassSelectionReceivedFieldCallback)) ->
        WidgetClassSelectionReceivedFieldCallback ->
        C_WidgetClassSelectionReceivedFieldCallback
    wrap_WidgetClassSelectionReceivedFieldCallback :: Maybe (Ptr (FunPtr C_WidgetClassSelectionReceivedFieldCallback))
    -> WidgetClassSelectionReceivedFieldCallback
    -> C_WidgetClassSelectionReceivedFieldCallback
    wrap_WidgetClassSelectionReceivedFieldCallback Maybe (Ptr (FunPtr C_WidgetClassSelectionReceivedFieldCallback))
    gi'funptrptr WidgetClassSelectionReceivedFieldCallback
    gi'cb Ptr Widget
    widget Ptr SelectionData
    selectionData Word32
    time_ = do
        widget' <- ((ManagedPtr Widget -> Widget) -> Ptr Widget -> IO Widget
    forall a b.
    (HasCallStack, GObject a, GObject b) =>
    (ManagedPtr a -> a) -> Ptr b -> IO a
    newObject ManagedPtr Widget -> Widget
    Gtk.Widget.Widget) Ptr Widget
    widget
        B.ManagedPtr.withTransient  selectionData $ \SelectionData
    selectionData' -> do
            WidgetClassSelectionReceivedFieldCallback
    gi'cb  Widget
    widget' SelectionData
    selectionData' Word32
    time_
            Maybe (Ptr (FunPtr C_WidgetClassSelectionReceivedFieldCallback))
    -> IO ()
    forall a. Maybe (Ptr (FunPtr a)) -> IO ()
    maybeReleaseFunPtr Maybe (Ptr (FunPtr C_WidgetClassSelectionReceivedFieldCallback))
    gi'funptrptr

    -- callback WidgetClassSelectionNotifyEventFieldCallback
    {- Callable
      { returnType = Just (TBasicType TBoolean)
      , returnMayBeNull = False
      , returnTransfer = TransferNothing
      , returnDocumentation =
          Documentation { rawDocText = Nothing , sinceVersion = Nothing }
      , args =
          [ Arg
              { argCName = "widget"
              , argType = TInterface Name { namespace = "Gtk" , name = "Widget" }
              , argCType = Just "GtkWidget*"
              , direction = DirectionIn
              , mayBeNull = False
              , argDoc =
                  Documentation { rawDocText = Nothing , sinceVersion = Nothing }
              , argScope = ScopeTypeInvalid
              , argClosure = -1
              , argDestroy = -1
              , argCallerAllocates = False
              , argCallbackUserData = False
              , transfer = TransferNothing
              }
          , Arg
              { argCName = "event"
              , argType =
                  TInterface Name { namespace = "Gdk" , name = "EventSelection" }
              , argCType = Just "GdkEventSelection*"
              , direction = DirectionIn
              , mayBeNull = False
              , argDoc =
                  Documentation { rawDocText = Nothing , sinceVersion = Nothing }
              , argScope = ScopeTypeInvalid
              , argClosure = -1
              , argDestroy = -1
              , argCallerAllocates = False
              , argCallbackUserData = False
              , transfer = TransferNothing
              }
          ]
      , skipReturn = False
      , callableThrows = False
      , callableDeprecated = Nothing
      , callableDocumentation =
          Documentation { rawDocText = Nothing , sinceVersion = Nothing }
      , callableResolvable = Nothing
      }
    -}
    -- | Type for the callback on the (unwrapped) C side.
    type C_WidgetClassSelectionNotifyEventFieldCallback =
        Ptr Gtk.Widget.Widget ->
        Ptr Gdk.EventSelection.EventSelection ->
        IO CInt

    -- Args: [ Arg
    --           { argCName = "widget"
    --           , argType = TInterface Name { namespace = "Gtk" , name = "Widget" }
    --           , argCType = Just "GtkWidget*"
    --           , direction = DirectionIn
    --           , mayBeNull = False
    --           , argDoc =
    --               Documentation { rawDocText = Nothing , sinceVersion = Nothing }
    --           , argScope = ScopeTypeInvalid
    --           , argClosure = -1
    --           , argDestroy = -1
    --           , argCallerAllocates = False
    --           , argCallbackUserData = False
    --           , transfer = TransferNothing
    --           }
    --       , Arg
    --           { argCName = "event"
    --           , argType =
    --               TInterface Name { namespace = "Gdk" , name = "EventSelection" }
    --           , argCType = Just "GdkEventSelection*"
    --           , direction = DirectionIn
    --           , mayBeNull = False
    --           , argDoc =
    --               Documentation { rawDocText = Nothing , sinceVersion = Nothing }
    --           , argScope = ScopeTypeInvalid
    --           , argClosure = -1
    --           , argDestroy = -1
    --           , argCallerAllocates = False
    --           , argCallbackUserData = False
    --           , transfer = TransferNothing
    --           }
    --       ]
    -- Lengths: []
    -- returnType: Just (TBasicType TBoolean)
    -- throws : False
    -- Skip return : False

    foreign import ccall "dynamic" __dynamic_C_WidgetClassSelectionNotifyEventFieldCallback :: FunPtr C_WidgetClassSelectionNotifyEventFieldCallback -> C_WidgetClassSelectionNotifyEventFieldCallback

    -- | Given a pointer to a foreign C function, wrap it into a function callable from Haskell.
    dynamic_WidgetClassSelectionNotifyEventFieldCallback ::
        (B.CallStack.HasCallStack, MonadIO m, Gtk.Widget.IsWidget a) =>
        FunPtr C_WidgetClassSelectionNotifyEventFieldCallback
        -> a
        -> Gdk.EventSelection.EventSelection
        -> m Bool
    dynamic_WidgetClassSelectionNotifyEventFieldCallback :: forall (m :: * -> *) a.
    (HasCallStack, MonadIO m, IsWidget a) =>
    FunPtr C_WidgetClassSelectionRequestEventFieldCallback
    -> a -> EventSelection -> m Bool
    dynamic_WidgetClassSelectionNotifyEventFieldCallback FunPtr C_WidgetClassSelectionRequestEventFieldCallback
    __funPtr a
    widget EventSelection
    event = IO Bool -> m Bool
    forall a. IO a -> m a
    forall (m :: * -> *) a. MonadIO m => IO a -> m a
    liftIO (IO Bool -> m Bool) -> IO Bool -> m Bool
    forall a b. (a -> b) -> a -> b
    $ do
        widget' <- a -> IO (Ptr Widget)
    forall a b. (HasCallStack, ManagedPtrNewtype a) => a -> IO (Ptr b)
    unsafeManagedPtrCastPtr a
    widget
        event' <- unsafeManagedPtrGetPtr event
        result <- (__dynamic_C_WidgetClassSelectionNotifyEventFieldCallback __funPtr) widget' event'
        let result' = (CInt -> CInt -> Bool
    forall a. Eq a => a -> a -> Bool
    /= CInt
    0) CInt
    result
        touchManagedPtr widget
        touchManagedPtr event
        return result'

    -- | Generate a function pointer callable from C code, from a `C_WidgetClassSelectionNotifyEventFieldCallback`.
    foreign import ccall "wrapper"
        mk_WidgetClassSelectionNotifyEventFieldCallback :: C_WidgetClassSelectionNotifyEventFieldCallback -> IO (FunPtr C_WidgetClassSelectionNotifyEventFieldCallback)

    -- | /No description available in the introspection data./
    type WidgetClassSelectionNotifyEventFieldCallback =
        Gtk.Widget.Widget
        -> Gdk.EventSelection.EventSelection
        -> IO Bool

    -- | A convenience synonym for @`Nothing` :: `Maybe` `WidgetClassSelectionNotifyEventFieldCallback`@.
    noWidgetClassSelectionNotifyEventFieldCallback :: Maybe WidgetClassSelectionNotifyEventFieldCallback
    noWidgetClassSelectionNotifyEventFieldCallback :: Maybe WidgetClassSelectionRequestEventFieldCallback
    noWidgetClassSelectionNotifyEventFieldCallback = Maybe WidgetClassSelectionRequestEventFieldCallback
    forall a. Maybe a
    Nothing

    -- | Wrap the callback into a `GClosure`.
    genClosure_WidgetClassSelectionNotifyEventFieldCallback :: MonadIO m => WidgetClassSelectionNotifyEventFieldCallback -> m (GClosure C_WidgetClassSelectionNotifyEventFieldCallback)
    genClosure_WidgetClassSelectionNotifyEventFieldCallback :: forall (m :: * -> *).
    MonadIO m =>
    WidgetClassSelectionRequestEventFieldCallback
    -> m (GClosure C_WidgetClassSelectionRequestEventFieldCallback)
    genClosure_WidgetClassSelectionNotifyEventFieldCallback WidgetClassSelectionRequestEventFieldCallback
    cb = IO (GClosure C_WidgetClassSelectionRequestEventFieldCallback)
    -> m (GClosure C_WidgetClassSelectionRequestEventFieldCallback)
    forall a. IO a -> m a
    forall (m :: * -> *) a. MonadIO m => IO a -> m a
    liftIO (IO (GClosure C_WidgetClassSelectionRequestEventFieldCallback)
     -> m (GClosure C_WidgetClassSelectionRequestEventFieldCallback))
    -> IO (GClosure C_WidgetClassSelectionRequestEventFieldCallback)
    -> m (GClosure C_WidgetClassSelectionRequestEventFieldCallback)
    forall a b. (a -> b) -> a -> b
    $ do
        let cb' :: C_WidgetClassSelectionRequestEventFieldCallback
    cb' = Maybe
      (Ptr (FunPtr C_WidgetClassSelectionRequestEventFieldCallback))
    -> WidgetClassSelectionRequestEventFieldCallback
    -> C_WidgetClassSelectionRequestEventFieldCallback
    wrap_WidgetClassSelectionNotifyEventFieldCallback Maybe
      (Ptr (FunPtr C_WidgetClassSelectionRequestEventFieldCallback))
    forall a. Maybe a
    Nothing WidgetClassSelectionRequestEventFieldCallback
    cb
        C_WidgetClassSelectionRequestEventFieldCallback
    -> IO (FunPtr C_WidgetClassSelectionRequestEventFieldCallback)
    mk_WidgetClassSelectionNotifyEventFieldCallback C_WidgetClassSelectionRequestEventFieldCallback
    cb' IO (FunPtr C_WidgetClassSelectionRequestEventFieldCallback)
    -> (FunPtr C_WidgetClassSelectionRequestEventFieldCallback
        -> IO (GClosure C_WidgetClassSelectionRequestEventFieldCallback))
    -> IO (GClosure C_WidgetClassSelectionRequestEventFieldCallback)
    forall a b. IO a -> (a -> IO b) -> IO b
    forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
    >>= FunPtr C_WidgetClassSelectionRequestEventFieldCallback
    -> IO (GClosure C_WidgetClassSelectionRequestEventFieldCallback)
    forall (m :: * -> *) a. MonadIO m => FunPtr a -> m (GClosure a)
    B.GClosure.newGClosure

    -- | Wrap a `WidgetClassSelectionNotifyEventFieldCallback` into a `C_WidgetClassSelectionNotifyEventFieldCallback`.
    wrap_WidgetClassSelectionNotifyEventFieldCallback ::
        Maybe (Ptr (FunPtr C_WidgetClassSelectionNotifyEventFieldCallback)) ->
        WidgetClassSelectionNotifyEventFieldCallback ->
        C_WidgetClassSelectionNotifyEventFieldCallback
    wrap_WidgetClassSelectionNotifyEventFieldCallback :: Maybe
      (Ptr (FunPtr C_WidgetClassSelectionRequestEventFieldCallback))
    -> WidgetClassSelectionRequestEventFieldCallback
    -> C_WidgetClassSelectionRequestEventFieldCallback
    wrap_WidgetClassSelectionNotifyEventFieldCallback Maybe
      (Ptr (FunPtr C_WidgetClassSelectionRequestEventFieldCallback))
    gi'funptrptr WidgetClassSelectionRequestEventFieldCallback
    gi'cb Ptr Widget
    widget Ptr EventSelection
    event = do
        widget' <- ((ManagedPtr Widget -> Widget) -> Ptr Widget -> IO Widget
    forall a b.
    (HasCallStack, GObject a, GObject b) =>
    (ManagedPtr a -> a) -> Ptr b -> IO a
    newObject ManagedPtr Widget -> Widget
    Gtk.Widget.Widget) Ptr Widget
    widget
        event' <- (newPtr Gdk.EventSelection.EventSelection) event
        result <- gi'cb  widget' event'
        maybeReleaseFunPtr gi'funptrptr
        let result' = (Int -> CInt
    forall a b. (Integral a, Num b) => a -> b
    P.fromIntegral (Int -> CInt) -> (Bool -> Int) -> Bool -> CInt
    forall b c a. (b -> c) -> (a -> b) -> a -> c
    . Bool -> Int
    forall a. Enum a => a -> Int
    P.fromEnum) Bool
    result
        return result'

    -- callback WidgetClassSelectionGetFieldCallback
    {- Callable
      { returnType = Nothing
      , returnMayBeNull = False
      , returnTransfer = TransferNothing
      , returnDocumentation =
          Documentation { rawDocText = Nothing , sinceVersion = Nothing }
      , args =
          [ Arg
              { argCName = "widget"
              , argType = TInterface Name { namespace = "Gtk" , name = "Widget" }
              , argCType = Just "GtkWidget*"
              , direction = DirectionIn
              , mayBeNull = False
              , argDoc =
                  Documentation { rawDocText = Nothing , sinceVersion = Nothing }
              , argScope = ScopeTypeInvalid
              , argClosure = -1
              , argDestroy = -1
              , argCallerAllocates = False
              , argCallbackUserData = False
              , transfer = TransferNothing
              }
          , Arg
              { argCName = "selection_data"
              , argType =
                  TInterface Name { namespace = "Gtk" , name = "SelectionData" }
              , argCType = Just "GtkSelectionData*"
              , direction = DirectionIn
              , mayBeNull = False
              , argDoc =
                  Documentation { rawDocText = Nothing , sinceVersion = Nothing }
              , argScope = ScopeTypeInvalid
              , argClosure = -1
              , argDestroy = -1
              , argCallerAllocates = False
              , argCallbackUserData = False
              , transfer = TransferNothing
              }
          , Arg
              { argCName = "info"
              , argType = TBasicType TUInt
              , argCType = Just "guint"
              , direction = DirectionIn
              , mayBeNull = False
              , argDoc =
                  Documentation { rawDocText = Nothing , sinceVersion = Nothing }
              , argScope = ScopeTypeInvalid
              , argClosure = -1
              , argDestroy = -1
              , argCallerAllocates = False
              , argCallbackUserData = False
              , transfer = TransferNothing
              }
          , Arg
              { argCName = "time_"
              , argType = TBasicType TUInt
              , argCType = Just "guint"
              , direction = DirectionIn
              , mayBeNull = False
              , argDoc =
                  Documentation { rawDocText = Nothing , sinceVersion = Nothing }
              , argScope = ScopeTypeInvalid
              , argClosure = -1
              , argDestroy = -1
              , argCallerAllocates = False
              , argCallbackUserData = False
              , transfer = TransferNothing
              }
          ]
      , skipReturn = False
      , callableThrows = False
      , callableDeprecated = Nothing
      , callableDocumentation =
          Documentation { rawDocText = Nothing , sinceVersion = Nothing }
      , callableResolvable = Nothing
      }
    -}
    -- | Type for the callback on the (unwrapped) C side.
    type C_WidgetClassSelectionGetFieldCallback =
        Ptr Gtk.Widget.Widget ->
        Ptr Gtk.SelectionData.SelectionData ->
        Word32 ->
        Word32 ->
        IO ()

    -- Args: [ Arg
    --           { argCName = "widget"
    --           , argType = TInterface Name { namespace = "Gtk" , name = "Widget" }
    --           , argCType = Just "GtkWidget*"
    --           , direction = DirectionIn
    --           , mayBeNull = False
    --           , argDoc =
    --               Documentation { rawDocText = Nothing , sinceVersion = Nothing }
    --           , argScope = ScopeTypeInvalid
    --           , argClosure = -1
    --           , argDestroy = -1
    --           , argCallerAllocates = False
    --           , argCallbackUserData = False
    --           , transfer = TransferNothing
    --           }
    --       , Arg
    --           { argCName = "selection_data"
    --           , argType =
    --               TInterface Name { namespace = "Gtk" , name = "SelectionData" }
    --           , argCType = Just "GtkSelectionData*"
    --           , direction = DirectionIn
    --           , mayBeNull = False
    --           , argDoc =
    --               Documentation { rawDocText = Nothing , sinceVersion = Nothing }
    --           , argScope = ScopeTypeInvalid
    --           , argClosure = -1
    --           , argDestroy = -1
    --           , argCallerAllocates = False
    --           , argCallbackUserData = False
    --           , transfer = TransferNothing
    --           }
    --       , Arg
    --           { argCName = "info"
    --           , argType = TBasicType TUInt
    --           , argCType = Just "guint"
    --           , direction = DirectionIn
    --           , mayBeNull = False
    --           , argDoc =
    --               Documentation { rawDocText = Nothing , sinceVersion = Nothing }
    --           , argScope = ScopeTypeInvalid
    --           , argClosure = -1
    --           , argDestroy = -1
    --           , argCallerAllocates = False
    --           , argCallbackUserData = False
    --           , transfer = TransferNothing
    --           }
    --       , Arg
    --           { argCName = "time_"
    --           , argType = TBasicType TUInt
    --           , argCType = Just "guint"
    --           , direction = DirectionIn
    --           , mayBeNull = False
    --           , argDoc =
    --               Documentation { rawDocText = Nothing , sinceVersion = Nothing }
    --           , argScope = ScopeTypeInvalid
    --           , argClosure = -1
    --           , argDestroy = -1
    --           , argCallerAllocates = False
    --           , argCallbackUserData = False
    --           , transfer = TransferNothing
    --           }
    --       ]
    -- Lengths: []
    -- returnType: Nothing
    -- throws : False
    -- Skip return : False

    foreign import ccall "dynamic" __dynamic_C_WidgetClassSelectionGetFieldCallback :: FunPtr C_WidgetClassSelectionGetFieldCallback -> C_WidgetClassSelectionGetFieldCallback

    -- | Given a pointer to a foreign C function, wrap it into a function callable from Haskell.
    dynamic_WidgetClassSelectionGetFieldCallback ::
        (B.CallStack.HasCallStack, MonadIO m, Gtk.Widget.IsWidget a) =>
        FunPtr C_WidgetClassSelectionGetFieldCallback
        -> a
        -> Gtk.SelectionData.SelectionData
        -> Word32
        -> Word32
        -> m ()
    dynamic_WidgetClassSelectionGetFieldCallback :: forall (m :: * -> *) a.
    (HasCallStack, MonadIO m, IsWidget a) =>
    FunPtr C_WidgetClassSelectionGetFieldCallback
    -> a -> SelectionData -> Word32 -> Word32 -> m ()
    dynamic_WidgetClassSelectionGetFieldCallback FunPtr C_WidgetClassSelectionGetFieldCallback
    __funPtr a
    widget SelectionData
    selectionData Word32
    info Word32
    time_ = IO () -> m ()
    forall a. IO a -> m a
    forall (m :: * -> *) a. MonadIO m => IO a -> m a
    liftIO (IO () -> m ()) -> IO () -> m ()
    forall a b. (a -> b) -> a -> b
    $ do
        widget' <- a -> IO (Ptr Widget)
    forall a b. (HasCallStack, ManagedPtrNewtype a) => a -> IO (Ptr b)
    unsafeManagedPtrCastPtr a
    widget
        selectionData' <- unsafeManagedPtrGetPtr selectionData
        (__dynamic_C_WidgetClassSelectionGetFieldCallback __funPtr) widget' selectionData' info time_
        touchManagedPtr widget
        touchManagedPtr selectionData
        return ()

    -- | Generate a function pointer callable from C code, from a `C_WidgetClassSelectionGetFieldCallback`.
    foreign import ccall "wrapper"
        mk_WidgetClassSelectionGetFieldCallback :: C_WidgetClassSelectionGetFieldCallback -> IO (FunPtr C_WidgetClassSelectionGetFieldCallback)

    -- | /No description available in the introspection data./
    type WidgetClassSelectionGetFieldCallback =
        Gtk.Widget.Widget
        -> Gtk.SelectionData.SelectionData
        -> Word32
        -> Word32
        -> IO ()

    -- | A convenience synonym for @`Nothing` :: `Maybe` `WidgetClassSelectionGetFieldCallback`@.
    noWidgetClassSelectionGetFieldCallback :: Maybe WidgetClassSelectionGetFieldCallback
    noWidgetClassSelectionGetFieldCallback :: Maybe WidgetClassSelectionGetFieldCallback
    noWidgetClassSelectionGetFieldCallback = Maybe WidgetClassSelectionGetFieldCallback
    forall a. Maybe a
    Nothing

    -- | Wrap the callback into a `GClosure`.
    genClosure_WidgetClassSelectionGetFieldCallback :: MonadIO m => WidgetClassSelectionGetFieldCallback -> m (GClosure C_WidgetClassSelectionGetFieldCallback)
    genClosure_WidgetClassSelectionGetFieldCallback :: forall (m :: * -> *).
    MonadIO m =>
    WidgetClassSelectionGetFieldCallback
    -> m (GClosure C_WidgetClassSelectionGetFieldCallback)
    genClosure_WidgetClassSelectionGetFieldCallback WidgetClassSelectionGetFieldCallback
    cb = IO (GClosure C_WidgetClassSelectionGetFieldCallback)
    -> m (GClosure C_WidgetClassSelectionGetFieldCallback)
    forall a. IO a -> m a
    forall (m :: * -> *) a. MonadIO m => IO a -> m a
    liftIO (IO (GClosure C_WidgetClassSelectionGetFieldCallback)
     -> m (GClosure C_WidgetClassSelectionGetFieldCallback))
    -> IO (GClosure C_WidgetClassSelectionGetFieldCallback)
    -> m (GClosure C_WidgetClassSelectionGetFieldCallback)
    forall a b. (a -> b) -> a -> b
    $ do
        let cb' :: C_WidgetClassSelectionGetFieldCallback
    cb' = Maybe (Ptr (FunPtr C_WidgetClassSelectionGetFieldCallback))
    -> WidgetClassSelectionGetFieldCallback
    -> C_WidgetClassSelectionGetFieldCallback
    wrap_WidgetClassSelectionGetFieldCallback Maybe (Ptr (FunPtr C_WidgetClassSelectionGetFieldCallback))
    forall a. Maybe a
    Nothing WidgetClassSelectionGetFieldCallback
    cb
        C_WidgetClassSelectionGetFieldCallback
    -> IO (FunPtr C_WidgetClassSelectionGetFieldCallback)
    mk_WidgetClassSelectionGetFieldCallback C_WidgetClassSelectionGetFieldCallback
    cb' IO (FunPtr C_WidgetClassSelectionGetFieldCallback)
    -> (FunPtr C_WidgetClassSelectionGetFieldCallback
        -> IO (GClosure C_WidgetClassSelectionGetFieldCallback))
    -> IO (GClosure C_WidgetClassSelectionGetFieldCallback)
    forall a b. IO a -> (a -> IO b) -> IO b
    forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
    >>= FunPtr C_WidgetClassSelectionGetFieldCallback
    -> IO (GClosure C_WidgetClassSelectionGetFieldCallback)
    forall (m :: * -> *) a. MonadIO m => FunPtr a -> m (GClosure a)
    B.GClosure.newGClosure

    -- | Wrap a `WidgetClassSelectionGetFieldCallback` into a `C_WidgetClassSelectionGetFieldCallback`.
    wrap_WidgetClassSelectionGetFieldCallback ::
        Maybe (Ptr (FunPtr C_WidgetClassSelectionGetFieldCallback)) ->
        WidgetClassSelectionGetFieldCallback ->
        C_WidgetClassSelectionGetFieldCallback
    wrap_WidgetClassSelectionGetFieldCallback :: Maybe (Ptr (FunPtr C_WidgetClassSelectionGetFieldCallback))
    -> WidgetClassSelectionGetFieldCallback
    -> C_WidgetClassSelectionGetFieldCallback
    wrap_WidgetClassSelectionGetFieldCallback Maybe (Ptr (FunPtr C_WidgetClassSelectionGetFieldCallback))
    gi'funptrptr WidgetClassSelectionGetFieldCallback
    gi'cb Ptr Widget
    widget Ptr SelectionData
    selectionData Word32
    info Word32
    time_ = do
        widget' <- ((ManagedPtr Widget -> Widget) -> Ptr Widget -> IO Widget
    forall a b.
    (HasCallStack, GObject a, GObject b) =>
    (ManagedPtr a -> a) -> Ptr b -> IO a
    newObject ManagedPtr Widget -> Widget
    Gtk.Widget.Widget) Ptr Widget
    widget
        B.ManagedPtr.withTransient  selectionData $ \SelectionData
    selectionData' -> do
            WidgetClassSelectionGetFieldCallback
    gi'cb  Widget
    widget' SelectionData
    selectionData' Word32
    info Word32
    time_
            Maybe (Ptr (FunPtr C_WidgetClassSelectionGetFieldCallback))
    -> IO ()
    forall a. Maybe (Ptr (FunPtr a)) -> IO ()
    maybeReleaseFunPtr Maybe (Ptr (FunPtr C_WidgetClassSelectionGetFieldCallback))
    gi'funptrptr

    -- callback WidgetClassSelectionClearEventFieldCallback
    {- Callable
      { returnType = Just (TBasicType TBoolean)
      , returnMayBeNull = False
      , returnTransfer = TransferNothing
      , returnDocumentation =
          Documentation { rawDocText = Nothing , sinceVersion = Nothing }
      , args =
          [ Arg
              { argCName = "widget"
              , argType = TInterface Name { namespace = "Gtk" , name = "Widget" }
              , argCType = Just "GtkWidget*"
              , direction = DirectionIn
              , mayBeNull = False
              , argDoc =
                  Documentation { rawDocText = Nothing , sinceVersion = Nothing }
              , argScope = ScopeTypeInvalid
              , argClosure = -1
              , argDestroy = -1
              , argCallerAllocates = False
              , argCallbackUserData = False
              , transfer = TransferNothing
              }
          , Arg
              { argCName = "event"
              , argType =
                  TInterface Name { namespace = "Gdk" , name = "EventSelection" }
              , argCType = Just "GdkEventSelection*"
              , direction = DirectionIn
              , mayBeNull = False
              , argDoc =
                  Documentation { rawDocText = Nothing , sinceVersion = Nothing }
              , argScope = ScopeTypeInvalid
              , argClosure = -1
              , argDestroy = -1
              , argCallerAllocates = False
              , argCallbackUserData = False
              , transfer = TransferNothing
              }
          ]
      , skipReturn = False
      , callableThrows = False
      , callableDeprecated = Nothing
      , callableDocumentation =
          Documentation { rawDocText = Nothing , sinceVersion = Nothing }
      , callableResolvable = Nothing
      }
    -}
    -- | Type for the callback on the (unwrapped) C side.
    type C_WidgetClassSelectionClearEventFieldCallback =
        Ptr Gtk.Widget.Widget ->
        Ptr Gdk.EventSelection.EventSelection ->
        IO CInt

    -- Args: [ Arg
    --           { argCName = "widget"
    --           , argType = TInterface Name { namespace = "Gtk" , name = "Widget" }
    --           , argCType = Just "GtkWidget*"
    --           , direction = DirectionIn
    --           , mayBeNull = False
    --           , argDoc =
    --               Documentation { rawDocText = Nothing , sinceVersion = Nothing }
    --           , argScope = ScopeTypeInvalid
    --           , argClosure = -1
    --           , argDestroy = -1
    --           , argCallerAllocates = False
    --           , argCallbackUserData = False
    --           , transfer = TransferNothing
    --           }
    --       , Arg
    --           { argCName = "event"
    --           , argType =
    --               TInterface Name { namespace = "Gdk" , name = "EventSelection" }
    --           , argCType = Just "GdkEventSelection*"
    --           , direction = DirectionIn
    --           , mayBeNull = False
    --           , argDoc =
    --               Documentation { rawDocText = Nothing , sinceVersion = Nothing }
    --           , argScope = ScopeTypeInvalid
    --           , argClosure = -1
    --           , argDestroy = -1
    --           , argCallerAllocates = False
    --           , argCallbackUserData = False
    --           , transfer = TransferNothing
    --           }
    --       ]
    -- Lengths: []
    -- returnType: Just (TBasicType TBoolean)
    -- throws : False
    -- Skip return : False

    foreign import ccall "dynamic" __dynamic_C_WidgetClassSelectionClearEventFieldCallback :: FunPtr C_WidgetClassSelectionClearEventFieldCallback -> C_WidgetClassSelectionClearEventFieldCallback

    -- | Given a pointer to a foreign C function, wrap it into a function callable from Haskell.
    dynamic_WidgetClassSelectionClearEventFieldCallback ::
        (B.CallStack.HasCallStack, MonadIO m, Gtk.Widget.IsWidget a) =>
        FunPtr C_WidgetClassSelectionClearEventFieldCallback
        -> a
        -> Gdk.EventSelection.EventSelection
        -> m Bool
    dynamic_WidgetClassSelectionClearEventFieldCallback :: forall (m :: * -> *) a.
    (HasCallStack, MonadIO m, IsWidget a) =>
    FunPtr C_WidgetClassSelectionRequestEventFieldCallback
    -> a -> EventSelection -> m Bool
    dynamic_WidgetClassSelectionClearEventFieldCallback FunPtr C_WidgetClassSelectionRequestEventFieldCallback
    __funPtr a
    widget EventSelection
    event = IO Bool -> m Bool
    forall a. IO a -> m a
    forall (m :: * -> *) a. MonadIO m => IO a -> m a
    liftIO (IO Bool -> m Bool) -> IO Bool -> m Bool
    forall a b. (a -> b) -> a -> b
    $ do
        widget' <- a -> IO (Ptr Widget)
    forall a b. (HasCallStack, ManagedPtrNewtype a) => a -> IO (Ptr b)
    unsafeManagedPtrCastPtr a
    widget
        event' <- unsafeManagedPtrGetPtr event
        result <- (__dynamic_C_WidgetClassSelectionClearEventFieldCallback __funPtr) widget' event'
        let result' = (CInt -> CInt -> Bool
    forall a. Eq a => a -> a -> Bool
    /= CInt
    0) CInt
    result
        touchManagedPtr widget
        touchManagedPtr event
        return result'

    -- | Generate a function pointer callable from C code, from a `C_WidgetClassSelectionClearEventFieldCallback`.
    foreign import ccall "wrapper"
        mk_WidgetClassSelectionClearEventFieldCallback :: C_WidgetClassSelectionClearEventFieldCallback -> IO (FunPtr C_WidgetClassSelectionClearEventFieldCallback)

    -- | /No description available in the introspection data./
    type WidgetClassSelectionClearEventFieldCallback =
        Gtk.Widget.Widget
        -> Gdk.EventSelection.EventSelection
        -> IO Bool

    -- | A convenience synonym for @`Nothing` :: `Maybe` `WidgetClassSelectionClearEventFieldCallback`@.
    noWidgetClassSelectionClearEventFieldCallback :: Maybe WidgetClassSelectionClearEventFieldCallback
    noWidgetClassSelectionClearEventFieldCallback :: Maybe WidgetClassSelectionRequestEventFieldCallback
    noWidgetClassSelectionClearEventFieldCallback = Maybe WidgetClassSelectionRequestEventFieldCallback
    forall a. Maybe a
    Nothing

    -- | Wrap the callback into a `GClosure`.
    genClosure_WidgetClassSelectionClearEventFieldCallback :: MonadIO m => WidgetClassSelectionClearEventFieldCallback -> m (GClosure C_WidgetClassSelectionClearEventFieldCallback)
    genClosure_WidgetClassSelectionClearEventFieldCallback :: forall (m :: * -> *).
    MonadIO m =>
    WidgetClassSelectionRequestEventFieldCallback
    -> m (GClosure C_WidgetClassSelectionRequestEventFieldCallback)
    genClosure_WidgetClassSelectionClearEventFieldCallback WidgetClassSelectionRequestEventFieldCallback
    cb = IO (GClosure C_WidgetClassSelectionRequestEventFieldCallback)
    -> m (GClosure C_WidgetClassSelectionRequestEventFieldCallback)
    forall a. IO a -> m a
    forall (m :: * -> *) a. MonadIO m => IO a -> m a
    liftIO (IO (GClosure C_WidgetClassSelectionRequestEventFieldCallback)
     -> m (GClosure C_WidgetClassSelectionRequestEventFieldCallback))
    -> IO (GClosure C_WidgetClassSelectionRequestEventFieldCallback)
    -> m (GClosure C_WidgetClassSelectionRequestEventFieldCallback)
    forall a b. (a -> b) -> a -> b
    $ do
        let cb' :: C_WidgetClassSelectionRequestEventFieldCallback
    cb' = Maybe
      (Ptr (FunPtr C_WidgetClassSelectionRequestEventFieldCallback))
    -> WidgetClassSelectionRequestEventFieldCallback
    -> C_WidgetClassSelectionRequestEventFieldCallback
    wrap_WidgetClassSelectionClearEventFieldCallback Maybe
      (Ptr (FunPtr C_WidgetClassSelectionRequestEventFieldCallback))
    forall a. Maybe a
    Nothing WidgetClassSelectionRequestEventFieldCallback
    cb
        C_WidgetClassSelectionRequestEventFieldCallback
    -> IO (FunPtr C_WidgetClassSelectionRequestEventFieldCallback)
    mk_WidgetClassSelectionClearEventFieldCallback C_WidgetClassSelectionRequestEventFieldCallback
    cb' IO (FunPtr C_WidgetClassSelectionRequestEventFieldCallback)
    -> (FunPtr C_WidgetClassSelectionRequestEventFieldCallback
        -> IO (GClosure C_WidgetClassSelectionRequestEventFieldCallback))
    -> IO (GClosure C_WidgetClassSelectionRequestEventFieldCallback)
    forall a b. IO a -> (a -> IO b) -> IO b
    forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
    >>= FunPtr C_WidgetClassSelectionRequestEventFieldCallback
    -> IO (GClosure C_WidgetClassSelectionRequestEventFieldCallback)
    forall (m :: * -> *) a. MonadIO m => FunPtr a -> m (GClosure a)
    B.GClosure.newGClosure

    -- | Wrap a `WidgetClassSelectionClearEventFieldCallback` into a `C_WidgetClassSelectionClearEventFieldCallback`.
    wrap_WidgetClassSelectionClearEventFieldCallback ::
        Maybe (Ptr (FunPtr C_WidgetClassSelectionClearEventFieldCallback)) ->
        WidgetClassSelectionClearEventFieldCallback ->
        C_WidgetClassSelectionClearEventFieldCallback
    wrap_WidgetClassSelectionClearEventFieldCallback :: Maybe
      (Ptr (FunPtr C_WidgetClassSelectionRequestEventFieldCallback))
    -> WidgetClassSelectionRequestEventFieldCallback
    -> C_WidgetClassSelectionRequestEventFieldCallback
    wrap_WidgetClassSelectionClearEventFieldCallback Maybe
      (Ptr (FunPtr C_WidgetClassSelectionRequestEventFieldCallback))
    gi'funptrptr WidgetClassSelectionRequestEventFieldCallback
    gi'cb Ptr Widget
    widget Ptr EventSelection
    event = do
        widget' <- ((ManagedPtr Widget -> Widget) -> Ptr Widget -> IO Widget
    forall a b.
    (HasCallStack, GObject a, GObject b) =>
    (ManagedPtr a -> a) -> Ptr b -> IO a
    newObject ManagedPtr Widget -> Widget
    Gtk.Widget.Widget) Ptr Widget
    widget
        event' <- (newPtr Gdk.EventSelection.EventSelection) event
        result <- gi'cb  widget' event'
        maybeReleaseFunPtr gi'funptrptr
        let result' = (Int -> CInt
    forall a b. (Integral a, Num b) => a -> b
    P.fromIntegral (Int -> CInt) -> (Bool -> Int) -> Bool -> CInt
    forall b c a. (b -> c) -> (a -> b) -> a -> c
    . Bool -> Int
    forall a. Enum a => a -> Int
    P.fromEnum) Bool
    result
        return result'

    -- callback WidgetClassScrollEventFieldCallback
    {- Callable
      { returnType = Just (TBasicType TBoolean)
      , returnMayBeNull = False
      , returnTransfer = TransferNothing
      , returnDocumentation =
          Documentation { rawDocText = Nothing , sinceVersion = Nothing }
      , args =
          [ Arg
              { argCName = "widget"
              , argType = TInterface Name { namespace = "Gtk" , name = "Widget" }
              , argCType = Just "GtkWidget*"
              , direction = DirectionIn
              , mayBeNull = False
              , argDoc =
                  Documentation { rawDocText = Nothing , sinceVersion = Nothing }
              , argScope = ScopeTypeInvalid
              , argClosure = -1
              , argDestroy = -1
              , argCallerAllocates = False
              , argCallbackUserData = False
              , transfer = TransferNothing
              }
          , Arg
              { argCName = "event"
              , argType =
                  TInterface Name { namespace = "Gdk" , name = "EventScroll" }
              , argCType = Just "GdkEventScroll*"
              , direction = DirectionIn
              , mayBeNull = False
              , argDoc =
                  Documentation { rawDocText = Nothing , sinceVersion = Nothing }
              , argScope = ScopeTypeInvalid
              , argClosure = -1
              , argDestroy = -1
              , argCallerAllocates = False
              , argCallbackUserData = False
              , transfer = TransferNothing
              }
          ]
      , skipReturn = False
      , callableThrows = False
      , callableDeprecated = Nothing
      , callableDocumentation =
          Documentation { rawDocText = Nothing , sinceVersion = Nothing }
      , callableResolvable = Nothing
      }
    -}
    -- | Type for the callback on the (unwrapped) C side.
    type C_WidgetClassScrollEventFieldCallback =
        Ptr Gtk.Widget.Widget ->
        Ptr Gdk.EventScroll.EventScroll ->
        IO CInt

    -- Args: [ Arg
    --           { argCName = "widget"
    --           , argType = TInterface Name { namespace = "Gtk" , name = "Widget" }
    --           , argCType = Just "GtkWidget*"
    --           , direction = DirectionIn
    --           , mayBeNull = False
    --           , argDoc =
    --               Documentation { rawDocText = Nothing , sinceVersion = Nothing }
    --           , argScope = ScopeTypeInvalid
    --           , argClosure = -1
    --           , argDestroy = -1
    --           , argCallerAllocates = False
    --           , argCallbackUserData = False
    --           , transfer = TransferNothing
    --           }
    --       , Arg
    --           { argCName = "event"
    --           , argType =
    --               TInterface Name { namespace = "Gdk" , name = "EventScroll" }
    --           , argCType = Just "GdkEventScroll*"
    --           , direction = DirectionIn
    --           , mayBeNull = False
    --           , argDoc =
    --               Documentation { rawDocText = Nothing , sinceVersion = Nothing }
    --           , argScope = ScopeTypeInvalid
    --           , argClosure = -1
    --           , argDestroy = -1
    --           , argCallerAllocates = False
    --           , argCallbackUserData = False
    --           , transfer = TransferNothing
    --           }
    --       ]
    -- Lengths: []
    -- returnType: Just (TBasicType TBoolean)
    -- throws : False
    -- Skip return : False

    foreign import ccall "dynamic" __dynamic_C_WidgetClassScrollEventFieldCallback :: FunPtr C_WidgetClassScrollEventFieldCallback -> C_WidgetClassScrollEventFieldCallback

    -- | Given a pointer to a foreign C function, wrap it into a function callable from Haskell.
    dynamic_WidgetClassScrollEventFieldCallback ::
        (B.CallStack.HasCallStack, MonadIO m, Gtk.Widget.IsWidget a) =>
        FunPtr C_WidgetClassScrollEventFieldCallback
        -> a
        -> Gdk.EventScroll.EventScroll
        -> m Bool
    dynamic_WidgetClassScrollEventFieldCallback :: forall (m :: * -> *) a.
    (HasCallStack, MonadIO m, IsWidget a) =>
    FunPtr C_WidgetClassScrollEventFieldCallback
    -> a -> EventScroll -> m Bool
    dynamic_WidgetClassScrollEventFieldCallback FunPtr C_WidgetClassScrollEventFieldCallback
    __funPtr a
    widget EventScroll
    event = IO Bool -> m Bool
    forall a. IO a -> m a
    forall (m :: * -> *) a. MonadIO m => IO a -> m a
    liftIO (IO Bool -> m Bool) -> IO Bool -> m Bool
    forall a b. (a -> b) -> a -> b
    $ do
        widget' <- a -> IO (Ptr Widget)
    forall a b. (HasCallStack, ManagedPtrNewtype a) => a -> IO (Ptr b)
    unsafeManagedPtrCastPtr a
    widget
        event' <- unsafeManagedPtrGetPtr event
        result <- (__dynamic_C_WidgetClassScrollEventFieldCallback __funPtr) widget' event'
        let result' = (CInt -> CInt -> Bool
    forall a. Eq a => a -> a -> Bool
    /= CInt
    0) CInt
    result
        touchManagedPtr widget
        touchManagedPtr event
        return result'

    -- | Generate a function pointer callable from C code, from a `C_WidgetClassScrollEventFieldCallback`.
    foreign import ccall "wrapper"
        mk_WidgetClassScrollEventFieldCallback :: C_WidgetClassScrollEventFieldCallback -> IO (FunPtr C_WidgetClassScrollEventFieldCallback)

    -- | /No description available in the introspection data./
    type WidgetClassScrollEventFieldCallback =
        Gtk.Widget.Widget
        -> Gdk.EventScroll.EventScroll
        -> IO Bool

    -- | A convenience synonym for @`Nothing` :: `Maybe` `WidgetClassScrollEventFieldCallback`@.
    noWidgetClassScrollEventFieldCallback :: Maybe WidgetClassScrollEventFieldCallback
    noWidgetClassScrollEventFieldCallback :: Maybe WidgetClassScrollEventFieldCallback
    noWidgetClassScrollEventFieldCallback = Maybe WidgetClassScrollEventFieldCallback
    forall a. Maybe a
    Nothing

    -- | Wrap the callback into a `GClosure`.
    genClosure_WidgetClassScrollEventFieldCallback :: MonadIO m => WidgetClassScrollEventFieldCallback -> m (GClosure C_WidgetClassScrollEventFieldCallback)
    genClosure_WidgetClassScrollEventFieldCallback :: forall (m :: * -> *).
    MonadIO m =>
    WidgetClassScrollEventFieldCallback
    -> m (GClosure C_WidgetClassScrollEventFieldCallback)
    genClosure_WidgetClassScrollEventFieldCallback WidgetClassScrollEventFieldCallback
    cb = IO (GClosure C_WidgetClassScrollEventFieldCallback)
    -> m (GClosure C_WidgetClassScrollEventFieldCallback)
    forall a. IO a -> m a
    forall (m :: * -> *) a. MonadIO m => IO a -> m a
    liftIO (IO (GClosure C_WidgetClassScrollEventFieldCallback)
     -> m (GClosure C_WidgetClassScrollEventFieldCallback))
    -> IO (GClosure C_WidgetClassScrollEventFieldCallback)
    -> m (GClosure C_WidgetClassScrollEventFieldCallback)
    forall a b. (a -> b) -> a -> b
    $ do
        let cb' :: C_WidgetClassScrollEventFieldCallback
    cb' = Maybe (Ptr (FunPtr C_WidgetClassScrollEventFieldCallback))
    -> WidgetClassScrollEventFieldCallback
    -> C_WidgetClassScrollEventFieldCallback
    wrap_WidgetClassScrollEventFieldCallback Maybe (Ptr (FunPtr C_WidgetClassScrollEventFieldCallback))
    forall a. Maybe a
    Nothing WidgetClassScrollEventFieldCallback
    cb
        C_WidgetClassScrollEventFieldCallback
    -> IO (FunPtr C_WidgetClassScrollEventFieldCallback)
    mk_WidgetClassScrollEventFieldCallback C_WidgetClassScrollEventFieldCallback
    cb' IO (FunPtr C_WidgetClassScrollEventFieldCallback)
    -> (FunPtr C_WidgetClassScrollEventFieldCallback
        -> IO (GClosure C_WidgetClassScrollEventFieldCallback))
    -> IO (GClosure C_WidgetClassScrollEventFieldCallback)
    forall a b. IO a -> (a -> IO b) -> IO b
    forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
    >>= FunPtr C_WidgetClassScrollEventFieldCallback
    -> IO (GClosure C_WidgetClassScrollEventFieldCallback)
    forall (m :: * -> *) a. MonadIO m => FunPtr a -> m (GClosure a)
    B.GClosure.newGClosure

    -- | Wrap a `WidgetClassScrollEventFieldCallback` into a `C_WidgetClassScrollEventFieldCallback`.
    wrap_WidgetClassScrollEventFieldCallback ::
        Maybe (Ptr (FunPtr C_WidgetClassScrollEventFieldCallback)) ->
        WidgetClassScrollEventFieldCallback ->
        C_WidgetClassScrollEventFieldCallback
    wrap_WidgetClassScrollEventFieldCallback :: Maybe (Ptr (FunPtr C_WidgetClassScrollEventFieldCallback))
    -> WidgetClassScrollEventFieldCallback
    -> C_WidgetClassScrollEventFieldCallback
    wrap_WidgetClassScrollEventFieldCallback Maybe (Ptr (FunPtr C_WidgetClassScrollEventFieldCallback))
    gi'funptrptr WidgetClassScrollEventFieldCallback
    gi'cb Ptr Widget
    widget Ptr EventScroll
    event = do
        widget' <- ((ManagedPtr Widget -> Widget) -> Ptr Widget -> IO Widget
    forall a b.
    (HasCallStack, GObject a, GObject b) =>
    (ManagedPtr a -> a) -> Ptr b -> IO a
    newObject ManagedPtr Widget -> Widget
    Gtk.Widget.Widget) Ptr Widget
    widget
        event' <- (newPtr Gdk.EventScroll.EventScroll) event
        result <- gi'cb  widget' event'
        maybeReleaseFunPtr gi'funptrptr
        let result' = (Int -> CInt
    forall a b. (Integral a, Num b) => a -> b
    P.fromIntegral (Int -> CInt) -> (Bool -> Int) -> Bool -> CInt
    forall b c a. (b -> c) -> (a -> b) -> a -> c
    . Bool -> Int
    forall a. Enum a => a -> Int
    P.fromEnum) Bool
    result
        return result'

    -- callback WidgetClassScreenChangedFieldCallback
    {- Callable
      { returnType = Nothing
      , returnMayBeNull = False
      , returnTransfer = TransferNothing
      , returnDocumentation =
          Documentation { rawDocText = Nothing , sinceVersion = Nothing }
      , args =
          [ Arg
              { argCName = "widget"
              , argType = TInterface Name { namespace = "Gtk" , name = "Widget" }
              , argCType = Just "GtkWidget*"
              , direction = DirectionIn
              , mayBeNull = False
              , argDoc =
                  Documentation { rawDocText = Nothing , sinceVersion = Nothing }
              , argScope = ScopeTypeInvalid
              , argClosure = -1
              , argDestroy = -1
              , argCallerAllocates = False
              , argCallbackUserData = False
              , transfer = TransferNothing
              }
          , Arg
              { argCName = "previous_screen"
              , argType = TInterface Name { namespace = "Gdk" , name = "Screen" }
              , argCType = Just "GdkScreen*"
              , direction = DirectionIn
              , mayBeNull = False
              , argDoc =
                  Documentation { rawDocText = Nothing , sinceVersion = Nothing }
              , argScope = ScopeTypeInvalid
              , argClosure = -1
              , argDestroy = -1
              , argCallerAllocates = False
              , argCallbackUserData = False
              , transfer = TransferNothing
              }
          ]
      , skipReturn = False
      , callableThrows = False
      , callableDeprecated = Nothing
      , callableDocumentation =
          Documentation { rawDocText = Nothing , sinceVersion = Nothing }
      , callableResolvable = Nothing
      }
    -}
    -- | Type for the callback on the (unwrapped) C side.
    type C_WidgetClassScreenChangedFieldCallback =
        Ptr Gtk.Widget.Widget ->
        Ptr Gdk.Screen.Screen ->
        IO ()

    -- Args: [ Arg
    --           { argCName = "widget"
    --           , argType = TInterface Name { namespace = "Gtk" , name = "Widget" }
    --           , argCType = Just "GtkWidget*"
    --           , direction = DirectionIn
    --           , mayBeNull = False
    --           , argDoc =
    --               Documentation { rawDocText = Nothing , sinceVersion = Nothing }
    --           , argScope = ScopeTypeInvalid
    --           , argClosure = -1
    --           , argDestroy = -1
    --           , argCallerAllocates = False
    --           , argCallbackUserData = False
    --           , transfer = TransferNothing
    --           }
    --       , Arg
    --           { argCName = "previous_screen"
    --           , argType = TInterface Name { namespace = "Gdk" , name = "Screen" }
    --           , argCType = Just "GdkScreen*"
    --           , direction = DirectionIn
    --           , mayBeNull = False
    --           , argDoc =
    --               Documentation { rawDocText = Nothing , sinceVersion = Nothing }
    --           , argScope = ScopeTypeInvalid
    --           , argClosure = -1
    --           , argDestroy = -1
    --           , argCallerAllocates = False
    --           , argCallbackUserData = False
    --           , transfer = TransferNothing
    --           }
    --       ]
    -- Lengths: []
    -- returnType: Nothing
    -- throws : False
    -- Skip return : False

    foreign import ccall "dynamic" __dynamic_C_WidgetClassScreenChangedFieldCallback :: FunPtr C_WidgetClassScreenChangedFieldCallback -> C_WidgetClassScreenChangedFieldCallback

    -- | Given a pointer to a foreign C function, wrap it into a function callable from Haskell.
    dynamic_WidgetClassScreenChangedFieldCallback ::
        (B.CallStack.HasCallStack, MonadIO m, Gtk.Widget.IsWidget a, Gdk.Screen.IsScreen b) =>
        FunPtr C_WidgetClassScreenChangedFieldCallback
        -> a
        -> b
        -> m ()
    dynamic_WidgetClassScreenChangedFieldCallback :: forall (m :: * -> *) a b.
    (HasCallStack, MonadIO m, IsWidget a, IsScreen b) =>
    FunPtr C_WidgetClassScreenChangedFieldCallback -> a -> b -> m ()
    dynamic_WidgetClassScreenChangedFieldCallback FunPtr C_WidgetClassScreenChangedFieldCallback
    __funPtr a
    widget b
    previousScreen = IO () -> m ()
    forall a. IO a -> m a
    forall (m :: * -> *) a. MonadIO m => IO a -> m a
    liftIO (IO () -> m ()) -> IO () -> m ()
    forall a b. (a -> b) -> a -> b
    $ do
        widget' <- a -> IO (Ptr Widget)
    forall a b. (HasCallStack, ManagedPtrNewtype a) => a -> IO (Ptr b)
    unsafeManagedPtrCastPtr a
    widget
        previousScreen' <- unsafeManagedPtrCastPtr previousScreen
        (__dynamic_C_WidgetClassScreenChangedFieldCallback __funPtr) widget' previousScreen'
        touchManagedPtr widget
        touchManagedPtr previousScreen
        return ()

    -- | Generate a function pointer callable from C code, from a `C_WidgetClassScreenChangedFieldCallback`.
    foreign import ccall "wrapper"
        mk_WidgetClassScreenChangedFieldCallback :: C_WidgetClassScreenChangedFieldCallback -> IO (FunPtr C_WidgetClassScreenChangedFieldCallback)

    -- | /No description available in the introspection data./
    type WidgetClassScreenChangedFieldCallback =
        Gtk.Widget.Widget
        -> Gdk.Screen.Screen
        -> IO ()

    -- | A convenience synonym for @`Nothing` :: `Maybe` `WidgetClassScreenChangedFieldCallback`@.
    noWidgetClassScreenChangedFieldCallback :: Maybe WidgetClassScreenChangedFieldCallback
    noWidgetClassScreenChangedFieldCallback :: Maybe WidgetClassScreenChangedFieldCallback
    noWidgetClassScreenChangedFieldCallback = Maybe WidgetClassScreenChangedFieldCallback
    forall a. Maybe a
    Nothing

    -- | Wrap the callback into a `GClosure`.
    genClosure_WidgetClassScreenChangedFieldCallback :: MonadIO m => WidgetClassScreenChangedFieldCallback -> m (GClosure C_WidgetClassScreenChangedFieldCallback)
    genClosure_WidgetClassScreenChangedFieldCallback :: forall (m :: * -> *).
    MonadIO m =>
    WidgetClassScreenChangedFieldCallback
    -> m (GClosure C_WidgetClassScreenChangedFieldCallback)
    genClosure_WidgetClassScreenChangedFieldCallback WidgetClassScreenChangedFieldCallback
    cb = IO (GClosure C_WidgetClassScreenChangedFieldCallback)
    -> m (GClosure C_WidgetClassScreenChangedFieldCallback)
    forall a. IO a -> m a
    forall (m :: * -> *) a. MonadIO m => IO a -> m a
    liftIO (IO (GClosure C_WidgetClassScreenChangedFieldCallback)
     -> m (GClosure C_WidgetClassScreenChangedFieldCallback))
    -> IO (GClosure C_WidgetClassScreenChangedFieldCallback)
    -> m (GClosure C_WidgetClassScreenChangedFieldCallback)
    forall a b. (a -> b) -> a -> b
    $ do
        let cb' :: C_WidgetClassScreenChangedFieldCallback
    cb' = Maybe (Ptr (FunPtr C_WidgetClassScreenChangedFieldCallback))
    -> WidgetClassScreenChangedFieldCallback
    -> C_WidgetClassScreenChangedFieldCallback
    wrap_WidgetClassScreenChangedFieldCallback Maybe (Ptr (FunPtr C_WidgetClassScreenChangedFieldCallback))
    forall a. Maybe a
    Nothing WidgetClassScreenChangedFieldCallback
    cb
        C_WidgetClassScreenChangedFieldCallback
    -> IO (FunPtr C_WidgetClassScreenChangedFieldCallback)
    mk_WidgetClassScreenChangedFieldCallback C_WidgetClassScreenChangedFieldCallback
    cb' IO (FunPtr C_WidgetClassScreenChangedFieldCallback)
    -> (FunPtr C_WidgetClassScreenChangedFieldCallback
        -> IO (GClosure C_WidgetClassScreenChangedFieldCallback))
    -> IO (GClosure C_WidgetClassScreenChangedFieldCallback)
    forall a b. IO a -> (a -> IO b) -> IO b
    forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
    >>= FunPtr C_WidgetClassScreenChangedFieldCallback
    -> IO (GClosure C_WidgetClassScreenChangedFieldCallback)
    forall (m :: * -> *) a. MonadIO m => FunPtr a -> m (GClosure a)
    B.GClosure.newGClosure

    -- | Wrap a `WidgetClassScreenChangedFieldCallback` into a `C_WidgetClassScreenChangedFieldCallback`.
    wrap_WidgetClassScreenChangedFieldCallback ::
        Maybe (Ptr (FunPtr C_WidgetClassScreenChangedFieldCallback)) ->
        WidgetClassScreenChangedFieldCallback ->
        C_WidgetClassScreenChangedFieldCallback
    wrap_WidgetClassScreenChangedFieldCallback :: Maybe (Ptr (FunPtr C_WidgetClassScreenChangedFieldCallback))
    -> WidgetClassScreenChangedFieldCallback
    -> C_WidgetClassScreenChangedFieldCallback
    wrap_WidgetClassScreenChangedFieldCallback Maybe (Ptr (FunPtr C_WidgetClassScreenChangedFieldCallback))
    gi'funptrptr WidgetClassScreenChangedFieldCallback
    gi'cb Ptr Widget
    widget Ptr Screen
    previousScreen = do
        widget' <- ((ManagedPtr Widget -> Widget) -> Ptr Widget -> IO Widget
    forall a b.
    (HasCallStack, GObject a, GObject b) =>
    (ManagedPtr a -> a) -> Ptr b -> IO a
    newObject ManagedPtr Widget -> Widget
    Gtk.Widget.Widget) Ptr Widget
    widget
        previousScreen' <- (newObject Gdk.Screen.Screen) previousScreen
        gi'cb  widget' previousScreen'
        maybeReleaseFunPtr gi'funptrptr

    -- callback WidgetClassRealizeFieldCallback
    {- Callable
      { returnType = Nothing
      , returnMayBeNull = False
      , returnTransfer = TransferNothing
      , returnDocumentation =
          Documentation { rawDocText = Nothing , sinceVersion = Nothing }
      , args =
          [ Arg
              { argCName = "widget"
              , argType = TInterface Name { namespace = "Gtk" , name = "Widget" }
              , argCType = Just "GtkWidget*"
              , direction = DirectionIn
              , mayBeNull = False
              , argDoc =
                  Documentation
                    { rawDocText = Just "a #GtkWidget" , sinceVersion = Nothing }
              , argScope = ScopeTypeInvalid
              , argClosure = -1
              , argDestroy = -1
              , argCallerAllocates = False
              , argCallbackUserData = False
              , transfer = TransferNothing
              }
          ]
      , skipReturn = False
      , callableThrows = False
      , callableDeprecated = Nothing
      , callableDocumentation =
          Documentation { rawDocText = Nothing , sinceVersion = Nothing }
      , callableResolvable = Nothing
      }
    -}
    -- | Type for the callback on the (unwrapped) C side.
    type C_WidgetClassRealizeFieldCallback =
        Ptr Gtk.Widget.Widget ->
        IO ()

    -- Args: [ Arg
    --           { argCName = "widget"
    --           , argType = TInterface Name { namespace = "Gtk" , name = "Widget" }
    --           , argCType = Just "GtkWidget*"
    --           , direction = DirectionIn
    --           , mayBeNull = False
    --           , argDoc =
    --               Documentation
    --                 { rawDocText = Just "a #GtkWidget" , sinceVersion = Nothing }
    --           , argScope = ScopeTypeInvalid
    --           , argClosure = -1
    --           , argDestroy = -1
    --           , argCallerAllocates = False
    --           , argCallbackUserData = False
    --           , transfer = TransferNothing
    --           }
    --       ]
    -- Lengths: []
    -- returnType: Nothing
    -- throws : False
    -- Skip return : False

    foreign import ccall "dynamic" __dynamic_C_WidgetClassRealizeFieldCallback :: FunPtr C_WidgetClassRealizeFieldCallback -> C_WidgetClassRealizeFieldCallback

    -- | Given a pointer to a foreign C function, wrap it into a function callable from Haskell.
    dynamic_WidgetClassRealizeFieldCallback ::
        (B.CallStack.HasCallStack, MonadIO m, Gtk.Widget.IsWidget a) =>
        FunPtr C_WidgetClassRealizeFieldCallback
        -> a
        -- ^ /@widget@/: a t'GI.Gtk.Objects.Widget.Widget'
        -> m ()
    dynamic_WidgetClassRealizeFieldCallback :: forall (m :: * -> *) a.
    (HasCallStack, MonadIO m, IsWidget a) =>
    FunPtr C_WidgetClassUnrealizeFieldCallback -> a -> m ()
    dynamic_WidgetClassRealizeFieldCallback FunPtr C_WidgetClassUnrealizeFieldCallback
    __funPtr a
    widget = IO () -> m ()
    forall a. IO a -> m a
    forall (m :: * -> *) a. MonadIO m => IO a -> m a
    liftIO (IO () -> m ()) -> IO () -> m ()
    forall a b. (a -> b) -> a -> b
    $ do
        widget' <- a -> IO (Ptr Widget)
    forall a b. (HasCallStack, ManagedPtrNewtype a) => a -> IO (Ptr b)
    unsafeManagedPtrCastPtr a
    widget
        (__dynamic_C_WidgetClassRealizeFieldCallback __funPtr) widget'
        touchManagedPtr widget
        return ()

    -- | Generate a function pointer callable from C code, from a `C_WidgetClassRealizeFieldCallback`.
    foreign import ccall "wrapper"
        mk_WidgetClassRealizeFieldCallback :: C_WidgetClassRealizeFieldCallback -> IO (FunPtr C_WidgetClassRealizeFieldCallback)

    -- | /No description available in the introspection data./
    type WidgetClassRealizeFieldCallback =
        Gtk.Widget.Widget
        -- ^ /@widget@/: a t'GI.Gtk.Objects.Widget.Widget'
        -> IO ()

    -- | A convenience synonym for @`Nothing` :: `Maybe` `WidgetClassRealizeFieldCallback`@.
    noWidgetClassRealizeFieldCallback :: Maybe WidgetClassRealizeFieldCallback
    noWidgetClassRealizeFieldCallback :: Maybe WidgetClassUnrealizeFieldCallback
    noWidgetClassRealizeFieldCallback = Maybe WidgetClassUnrealizeFieldCallback
    forall a. Maybe a
    Nothing

    -- | Wrap the callback into a `GClosure`.
    genClosure_WidgetClassRealizeFieldCallback :: MonadIO m => WidgetClassRealizeFieldCallback -> m (GClosure C_WidgetClassRealizeFieldCallback)
    genClosure_WidgetClassRealizeFieldCallback :: forall (m :: * -> *).
    MonadIO m =>
    WidgetClassUnrealizeFieldCallback
    -> m (GClosure C_WidgetClassUnrealizeFieldCallback)
    genClosure_WidgetClassRealizeFieldCallback WidgetClassUnrealizeFieldCallback
    cb = IO (GClosure C_WidgetClassUnrealizeFieldCallback)
    -> m (GClosure C_WidgetClassUnrealizeFieldCallback)
    forall a. IO a -> m a
    forall (m :: * -> *) a. MonadIO m => IO a -> m a
    liftIO (IO (GClosure C_WidgetClassUnrealizeFieldCallback)
     -> m (GClosure C_WidgetClassUnrealizeFieldCallback))
    -> IO (GClosure C_WidgetClassUnrealizeFieldCallback)
    -> m (GClosure C_WidgetClassUnrealizeFieldCallback)
    forall a b. (a -> b) -> a -> b
    $ do
        let cb' :: C_WidgetClassUnrealizeFieldCallback
    cb' = Maybe (Ptr (FunPtr C_WidgetClassUnrealizeFieldCallback))
    -> WidgetClassUnrealizeFieldCallback
    -> C_WidgetClassUnrealizeFieldCallback
    wrap_WidgetClassRealizeFieldCallback Maybe (Ptr (FunPtr C_WidgetClassUnrealizeFieldCallback))
    forall a. Maybe a
    Nothing WidgetClassUnrealizeFieldCallback
    cb
        C_WidgetClassUnrealizeFieldCallback
    -> IO (FunPtr C_WidgetClassUnrealizeFieldCallback)
    mk_WidgetClassRealizeFieldCallback C_WidgetClassUnrealizeFieldCallback
    cb' IO (FunPtr C_WidgetClassUnrealizeFieldCallback)
    -> (FunPtr C_WidgetClassUnrealizeFieldCallback
        -> IO (GClosure C_WidgetClassUnrealizeFieldCallback))
    -> IO (GClosure C_WidgetClassUnrealizeFieldCallback)
    forall a b. IO a -> (a -> IO b) -> IO b
    forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
    >>= FunPtr C_WidgetClassUnrealizeFieldCallback
    -> IO (GClosure C_WidgetClassUnrealizeFieldCallback)
    forall (m :: * -> *) a. MonadIO m => FunPtr a -> m (GClosure a)
    B.GClosure.newGClosure

    -- | Wrap a `WidgetClassRealizeFieldCallback` into a `C_WidgetClassRealizeFieldCallback`.
    wrap_WidgetClassRealizeFieldCallback ::
        Maybe (Ptr (FunPtr C_WidgetClassRealizeFieldCallback)) ->
        WidgetClassRealizeFieldCallback ->
        C_WidgetClassRealizeFieldCallback
    wrap_WidgetClassRealizeFieldCallback :: Maybe (Ptr (FunPtr C_WidgetClassUnrealizeFieldCallback))
    -> WidgetClassUnrealizeFieldCallback
    -> C_WidgetClassUnrealizeFieldCallback
    wrap_WidgetClassRealizeFieldCallback Maybe (Ptr (FunPtr C_WidgetClassUnrealizeFieldCallback))
    gi'funptrptr WidgetClassUnrealizeFieldCallback
    gi'cb Ptr Widget
    widget = do
        widget' <- ((ManagedPtr Widget -> Widget) -> Ptr Widget -> IO Widget
    forall a b.
    (HasCallStack, GObject a, GObject b) =>
    (ManagedPtr a -> a) -> Ptr b -> IO a
    newObject ManagedPtr Widget -> Widget
    Gtk.Widget.Widget) Ptr Widget
    widget
        gi'cb  widget'
        maybeReleaseFunPtr gi'funptrptr

    -- callback WidgetClassQueueDrawRegionFieldCallback
    {- Callable
      { returnType = Nothing
      , returnMayBeNull = False
      , returnTransfer = TransferNothing
      , returnDocumentation =
          Documentation { rawDocText = Nothing , sinceVersion = Nothing }
      , args =
          [ Arg
              { argCName = "widget"
              , argType = TInterface Name { namespace = "Gtk" , name = "Widget" }
              , argCType = Just "GtkWidget*"
              , direction = DirectionIn
              , mayBeNull = False
              , argDoc =
                  Documentation
                    { rawDocText = Just "a #GtkWidget" , sinceVersion = Nothing }
              , argScope = ScopeTypeInvalid
              , argClosure = -1
              , argDestroy = -1
              , argCallerAllocates = False
              , argCallbackUserData = False
              , transfer = TransferNothing
              }
          , Arg
              { argCName = "region"
              , argType =
                  TInterface Name { namespace = "cairo" , name = "Region" }
              , argCType = Just "const cairo_region_t*"
              , direction = DirectionIn
              , mayBeNull = False
              , argDoc =
                  Documentation
                    { rawDocText = Just "region to draw" , sinceVersion = Nothing }
              , argScope = ScopeTypeInvalid
              , argClosure = -1
              , argDestroy = -1
              , argCallerAllocates = False
              , argCallbackUserData = False
              , transfer = TransferNothing
              }
          ]
      , skipReturn = False
      , callableThrows = False
      , callableDeprecated = Nothing
      , callableDocumentation =
          Documentation { rawDocText = Nothing , sinceVersion = Nothing }
      , callableResolvable = Nothing
      }
    -}
    -- | Type for the callback on the (unwrapped) C side.
    type C_WidgetClassQueueDrawRegionFieldCallback =
        Ptr Gtk.Widget.Widget ->
        Ptr Cairo.Region.Region ->
        IO ()

    -- Args: [ Arg
    --           { argCName = "widget"
    --           , argType = TInterface Name { namespace = "Gtk" , name = "Widget" }
    --           , argCType = Just "GtkWidget*"
    --           , direction = DirectionIn
    --           , mayBeNull = False
    --           , argDoc =
    --               Documentation
    --                 { rawDocText = Just "a #GtkWidget" , sinceVersion = Nothing }
    --           , argScope = ScopeTypeInvalid
    --           , argClosure = -1
    --           , argDestroy = -1
    --           , argCallerAllocates = False
    --           , argCallbackUserData = False
    --           , transfer = TransferNothing
    --           }
    --       , Arg
    --           { argCName = "region"
    --           , argType =
    --               TInterface Name { namespace = "cairo" , name = "Region" }
    --           , argCType = Just "const cairo_region_t*"
    --           , direction = DirectionIn
    --           , mayBeNull = False
    --           , argDoc =
    --               Documentation
    --                 { rawDocText = Just "region to draw" , sinceVersion = Nothing }
    --           , argScope = ScopeTypeInvalid
    --           , argClosure = -1
    --           , argDestroy = -1
    --           , argCallerAllocates = False
    --           , argCallbackUserData = False
    --           , transfer = TransferNothing
    --           }
    --       ]
    -- Lengths: []
    -- returnType: Nothing
    -- throws : False
    -- Skip return : False

    foreign import ccall "dynamic" __dynamic_C_WidgetClassQueueDrawRegionFieldCallback :: FunPtr C_WidgetClassQueueDrawRegionFieldCallback -> C_WidgetClassQueueDrawRegionFieldCallback

    -- | Given a pointer to a foreign C function, wrap it into a function callable from Haskell.
    dynamic_WidgetClassQueueDrawRegionFieldCallback ::
        (B.CallStack.HasCallStack, MonadIO m, Gtk.Widget.IsWidget a) =>
        FunPtr C_WidgetClassQueueDrawRegionFieldCallback
        -> a
        -- ^ /@widget@/: a t'GI.Gtk.Objects.Widget.Widget'
        -> Cairo.Region.Region
        -- ^ /@region@/: region to draw
        -> m ()
    dynamic_WidgetClassQueueDrawRegionFieldCallback :: forall (m :: * -> *) a.
    (HasCallStack, MonadIO m, IsWidget a) =>
    FunPtr C_WidgetClassQueueDrawRegionFieldCallback
    -> a -> Region -> m ()
    dynamic_WidgetClassQueueDrawRegionFieldCallback FunPtr C_WidgetClassQueueDrawRegionFieldCallback
    __funPtr a
    widget Region
    region = IO () -> m ()
    forall a. IO a -> m a
    forall (m :: * -> *) a. MonadIO m => IO a -> m a
    liftIO (IO () -> m ()) -> IO () -> m ()
    forall a b. (a -> b) -> a -> b
    $ do
        widget' <- a -> IO (Ptr Widget)
    forall a b. (HasCallStack, ManagedPtrNewtype a) => a -> IO (Ptr b)
    unsafeManagedPtrCastPtr a
    widget
        region' <- unsafeManagedPtrGetPtr region
        (__dynamic_C_WidgetClassQueueDrawRegionFieldCallback __funPtr) widget' region'
        touchManagedPtr widget
        touchManagedPtr region
        return ()

    -- | Generate a function pointer callable from C code, from a `C_WidgetClassQueueDrawRegionFieldCallback`.
    foreign import ccall "wrapper"
        mk_WidgetClassQueueDrawRegionFieldCallback :: C_WidgetClassQueueDrawRegionFieldCallback -> IO (FunPtr C_WidgetClassQueueDrawRegionFieldCallback)

    -- | /No description available in the introspection data./
    type WidgetClassQueueDrawRegionFieldCallback =
        Gtk.Widget.Widget
        -- ^ /@widget@/: a t'GI.Gtk.Objects.Widget.Widget'
        -> Cairo.Region.Region
        -- ^ /@region@/: region to draw
        -> IO ()

    -- | A convenience synonym for @`Nothing` :: `Maybe` `WidgetClassQueueDrawRegionFieldCallback`@.
    noWidgetClassQueueDrawRegionFieldCallback :: Maybe WidgetClassQueueDrawRegionFieldCallback
    noWidgetClassQueueDrawRegionFieldCallback :: Maybe WidgetClassQueueDrawRegionFieldCallback
    noWidgetClassQueueDrawRegionFieldCallback = Maybe WidgetClassQueueDrawRegionFieldCallback
    forall a. Maybe a
    Nothing

    -- | Wrap the callback into a `GClosure`.
    genClosure_WidgetClassQueueDrawRegionFieldCallback :: MonadIO m => WidgetClassQueueDrawRegionFieldCallback -> m (GClosure C_WidgetClassQueueDrawRegionFieldCallback)
    genClosure_WidgetClassQueueDrawRegionFieldCallback :: forall (m :: * -> *).
    MonadIO m =>
    WidgetClassQueueDrawRegionFieldCallback
    -> m (GClosure C_WidgetClassQueueDrawRegionFieldCallback)
    genClosure_WidgetClassQueueDrawRegionFieldCallback WidgetClassQueueDrawRegionFieldCallback
    cb = IO (GClosure C_WidgetClassQueueDrawRegionFieldCallback)
    -> m (GClosure C_WidgetClassQueueDrawRegionFieldCallback)
    forall a. IO a -> m a
    forall (m :: * -> *) a. MonadIO m => IO a -> m a
    liftIO (IO (GClosure C_WidgetClassQueueDrawRegionFieldCallback)
     -> m (GClosure C_WidgetClassQueueDrawRegionFieldCallback))
    -> IO (GClosure C_WidgetClassQueueDrawRegionFieldCallback)
    -> m (GClosure C_WidgetClassQueueDrawRegionFieldCallback)
    forall a b. (a -> b) -> a -> b
    $ do
        let cb' :: C_WidgetClassQueueDrawRegionFieldCallback
    cb' = Maybe (Ptr (FunPtr C_WidgetClassQueueDrawRegionFieldCallback))
    -> WidgetClassQueueDrawRegionFieldCallback
    -> C_WidgetClassQueueDrawRegionFieldCallback
    wrap_WidgetClassQueueDrawRegionFieldCallback Maybe (Ptr (FunPtr C_WidgetClassQueueDrawRegionFieldCallback))
    forall a. Maybe a
    Nothing WidgetClassQueueDrawRegionFieldCallback
    cb
        C_WidgetClassQueueDrawRegionFieldCallback
    -> IO (FunPtr C_WidgetClassQueueDrawRegionFieldCallback)
    mk_WidgetClassQueueDrawRegionFieldCallback C_WidgetClassQueueDrawRegionFieldCallback
    cb' IO (FunPtr C_WidgetClassQueueDrawRegionFieldCallback)
    -> (FunPtr C_WidgetClassQueueDrawRegionFieldCallback
        -> IO (GClosure C_WidgetClassQueueDrawRegionFieldCallback))
    -> IO (GClosure C_WidgetClassQueueDrawRegionFieldCallback)
    forall a b. IO a -> (a -> IO b) -> IO b
    forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
    >>= FunPtr C_WidgetClassQueueDrawRegionFieldCallback
    -> IO (GClosure C_WidgetClassQueueDrawRegionFieldCallback)
    forall (m :: * -> *) a. MonadIO m => FunPtr a -> m (GClosure a)
    B.GClosure.newGClosure

    -- | Wrap a `WidgetClassQueueDrawRegionFieldCallback` into a `C_WidgetClassQueueDrawRegionFieldCallback`.
    wrap_WidgetClassQueueDrawRegionFieldCallback ::
        Maybe (Ptr (FunPtr C_WidgetClassQueueDrawRegionFieldCallback)) ->
        WidgetClassQueueDrawRegionFieldCallback ->
        C_WidgetClassQueueDrawRegionFieldCallback
    wrap_WidgetClassQueueDrawRegionFieldCallback :: Maybe (Ptr (FunPtr C_WidgetClassQueueDrawRegionFieldCallback))
    -> WidgetClassQueueDrawRegionFieldCallback
    -> C_WidgetClassQueueDrawRegionFieldCallback
    wrap_WidgetClassQueueDrawRegionFieldCallback Maybe (Ptr (FunPtr C_WidgetClassQueueDrawRegionFieldCallback))
    gi'funptrptr WidgetClassQueueDrawRegionFieldCallback
    gi'cb Ptr Widget
    widget Ptr Region
    region = do
        widget' <- ((ManagedPtr Widget -> Widget) -> Ptr Widget -> IO Widget
    forall a b.
    (HasCallStack, GObject a, GObject b) =>
    (ManagedPtr a -> a) -> Ptr b -> IO a
    newObject ManagedPtr Widget -> Widget
    Gtk.Widget.Widget) Ptr Widget
    widget
        B.ManagedPtr.withTransient  region $ \Region
    region' -> do
            WidgetClassQueueDrawRegionFieldCallback
    gi'cb  Widget
    widget' Region
    region'
            Maybe (Ptr (FunPtr C_WidgetClassQueueDrawRegionFieldCallback))
    -> IO ()
    forall a. Maybe (Ptr (FunPtr a)) -> IO ()
    maybeReleaseFunPtr Maybe (Ptr (FunPtr C_WidgetClassQueueDrawRegionFieldCallback))
    gi'funptrptr

    -- callback WidgetClassQueryTooltipFieldCallback
    {- Callable
      { returnType = Just (TBasicType TBoolean)
      , returnMayBeNull = False
      , returnTransfer = TransferNothing
      , returnDocumentation =
          Documentation { rawDocText = Nothing , sinceVersion = Nothing }
      , args =
          [ Arg
              { argCName = "widget"
              , argType = TInterface Name { namespace = "Gtk" , name = "Widget" }
              , argCType = Just "GtkWidget*"
              , direction = DirectionIn
              , mayBeNull = False
              , argDoc =
                  Documentation { rawDocText = Nothing , sinceVersion = Nothing }
              , argScope = ScopeTypeInvalid
              , argClosure = -1
              , argDestroy = -1
              , argCallerAllocates = False
              , argCallbackUserData = False
              , transfer = TransferNothing
              }
          , Arg
              { argCName = "x"
              , argType = TBasicType TInt
              , argCType = Just "gint"
              , direction = DirectionIn
              , mayBeNull = False
              , argDoc =
                  Documentation { rawDocText = Nothing , sinceVersion = Nothing }
              , argScope = ScopeTypeInvalid
              , argClosure = -1
              , argDestroy = -1
              , argCallerAllocates = False
              , argCallbackUserData = False
              , transfer = TransferNothing
              }
          , Arg
              { argCName = "y"
              , argType = TBasicType TInt
              , argCType = Just "gint"
              , direction = DirectionIn
              , mayBeNull = False
              , argDoc =
                  Documentation { rawDocText = Nothing , sinceVersion = Nothing }
              , argScope = ScopeTypeInvalid
              , argClosure = -1
              , argDestroy = -1
              , argCallerAllocates = False
              , argCallbackUserData = False
              , transfer = TransferNothing
              }
          , Arg
              { argCName = "keyboard_tooltip"
              , argType = TBasicType TBoolean
              , argCType = Just "gboolean"
              , direction = DirectionIn
              , mayBeNull = False
              , argDoc =
                  Documentation { rawDocText = Nothing , sinceVersion = Nothing }
              , argScope = ScopeTypeInvalid
              , argClosure = -1
              , argDestroy = -1
              , argCallerAllocates = False
              , argCallbackUserData = False
              , transfer = TransferNothing
              }
          , Arg
              { argCName = "tooltip"
              , argType =
                  TInterface Name { namespace = "Gtk" , name = "Tooltip" }
              , argCType = Just "GtkTooltip*"
              , direction = DirectionIn
              , mayBeNull = False
              , argDoc =
                  Documentation { rawDocText = Nothing , sinceVersion = Nothing }
              , argScope = ScopeTypeInvalid
              , argClosure = -1
              , argDestroy = -1
              , argCallerAllocates = False
              , argCallbackUserData = False
              , transfer = TransferNothing
              }
          ]
      , skipReturn = False
      , callableThrows = False
      , callableDeprecated = Nothing
      , callableDocumentation =
          Documentation { rawDocText = Nothing , sinceVersion = Nothing }
      , callableResolvable = Nothing
      }
    -}
    -- | Type for the callback on the (unwrapped) C side.
    type C_WidgetClassQueryTooltipFieldCallback =
        Ptr Gtk.Widget.Widget ->
        Int32 ->
        Int32 ->
        CInt ->
        Ptr Gtk.Tooltip.Tooltip ->
        IO CInt

    -- Args: [ Arg
    --           { argCName = "widget"
    --           , argType = TInterface Name { namespace = "Gtk" , name = "Widget" }
    --           , argCType = Just "GtkWidget*"
    --           , direction = DirectionIn
    --           , mayBeNull = False
    --           , argDoc =
    --               Documentation { rawDocText = Nothing , sinceVersion = Nothing }
    --           , argScope = ScopeTypeInvalid
    --           , argClosure = -1
    --           , argDestroy = -1
    --           , argCallerAllocates = False
    --           , argCallbackUserData = False
    --           , transfer = TransferNothing
    --           }
    --       , Arg
    --           { argCName = "x"
    --           , argType = TBasicType TInt
    --           , argCType = Just "gint"
    --           , direction = DirectionIn
    --           , mayBeNull = False
    --           , argDoc =
    --               Documentation { rawDocText = Nothing , sinceVersion = Nothing }
    --           , argScope = ScopeTypeInvalid
    --           , argClosure = -1
    --           , argDestroy = -1
    --           , argCallerAllocates = False
    --           , argCallbackUserData = False
    --           , transfer = TransferNothing
    --           }
    --       , Arg
    --           { argCName = "y"
    --           , argType = TBasicType TInt
    --           , argCType = Just "gint"
    --           , direction = DirectionIn
    --           , mayBeNull = False
    --           , argDoc =
    --               Documentation { rawDocText = Nothing , sinceVersion = Nothing }
    --           , argScope = ScopeTypeInvalid
    --           , argClosure = -1
    --           , argDestroy = -1
    --           , argCallerAllocates = False
    --           , argCallbackUserData = False
    --           , transfer = TransferNothing
    --           }
    --       , Arg
    --           { argCName = "keyboard_tooltip"
    --           , argType = TBasicType TBoolean
    --           , argCType = Just "gboolean"
    --           , direction = DirectionIn
    --           , mayBeNull = False
    --           , argDoc =
    --               Documentation { rawDocText = Nothing , sinceVersion = Nothing }
    --           , argScope = ScopeTypeInvalid
    --           , argClosure = -1
    --           , argDestroy = -1
    --           , argCallerAllocates = False
    --           , argCallbackUserData = False
    --           , transfer = TransferNothing
    --           }
    --       , Arg
    --           { argCName = "tooltip"
    --           , argType =
    --               TInterface Name { namespace = "Gtk" , name = "Tooltip" }
    --           , argCType = Just "GtkTooltip*"
    --           , direction = DirectionIn
    --           , mayBeNull = False
    --           , argDoc =
    --               Documentation { rawDocText = Nothing , sinceVersion = Nothing }
    --           , argScope = ScopeTypeInvalid
    --           , argClosure = -1
    --           , argDestroy = -1
    --           , argCallerAllocates = False
    --           , argCallbackUserData = False
    --           , transfer = TransferNothing
    --           }
    --       ]
    -- Lengths: []
    -- returnType: Just (TBasicType TBoolean)
    -- throws : False
    -- Skip return : False

    foreign import ccall "dynamic" __dynamic_C_WidgetClassQueryTooltipFieldCallback :: FunPtr C_WidgetClassQueryTooltipFieldCallback -> C_WidgetClassQueryTooltipFieldCallback

    -- | Given a pointer to a foreign C function, wrap it into a function callable from Haskell.
    dynamic_WidgetClassQueryTooltipFieldCallback ::
        (B.CallStack.HasCallStack, MonadIO m, Gtk.Widget.IsWidget a, Gtk.Tooltip.IsTooltip b) =>
        FunPtr C_WidgetClassQueryTooltipFieldCallback
        -> a
        -> Int32
        -> Int32
        -> Bool
        -> b
        -> m Bool
    dynamic_WidgetClassQueryTooltipFieldCallback :: forall (m :: * -> *) a b.
    (HasCallStack, MonadIO m, IsWidget a, IsTooltip b) =>
    FunPtr C_WidgetClassQueryTooltipFieldCallback
    -> a -> Int32 -> Int32 -> Bool -> b -> m Bool
    dynamic_WidgetClassQueryTooltipFieldCallback FunPtr C_WidgetClassQueryTooltipFieldCallback
    __funPtr a
    widget Int32
    x Int32
    y Bool
    keyboardTooltip b
    tooltip = IO Bool -> m Bool
    forall a. IO a -> m a
    forall (m :: * -> *) a. MonadIO m => IO a -> m a
    liftIO (IO Bool -> m Bool) -> IO Bool -> m Bool
    forall a b. (a -> b) -> a -> b
    $ do
        widget' <- a -> IO (Ptr Widget)
    forall a b. (HasCallStack, ManagedPtrNewtype a) => a -> IO (Ptr b)
    unsafeManagedPtrCastPtr a
    widget
        let keyboardTooltip' = (Int -> CInt
    forall a b. (Integral a, Num b) => a -> b
    P.fromIntegral (Int -> CInt) -> (Bool -> Int) -> Bool -> CInt
    forall b c a. (b -> c) -> (a -> b) -> a -> c
    . Bool -> Int
    forall a. Enum a => a -> Int
    P.fromEnum) Bool
    keyboardTooltip
        tooltip' <- unsafeManagedPtrCastPtr tooltip
        result <- (__dynamic_C_WidgetClassQueryTooltipFieldCallback __funPtr) widget' x y keyboardTooltip' tooltip'
        let result' = (CInt -> CInt -> Bool
    forall a. Eq a => a -> a -> Bool
    /= CInt
    0) CInt
    result
        touchManagedPtr widget
        touchManagedPtr tooltip
        return result'

    -- | Generate a function pointer callable from C code, from a `C_WidgetClassQueryTooltipFieldCallback`.
    foreign import ccall "wrapper"
        mk_WidgetClassQueryTooltipFieldCallback :: C_WidgetClassQueryTooltipFieldCallback -> IO (FunPtr C_WidgetClassQueryTooltipFieldCallback)

    -- | /No description available in the introspection data./
    type WidgetClassQueryTooltipFieldCallback =
        Gtk.Widget.Widget
        -> Int32
        -> Int32
        -> Bool
        -> Gtk.Tooltip.Tooltip
        -> IO Bool

    -- | A convenience synonym for @`Nothing` :: `Maybe` `WidgetClassQueryTooltipFieldCallback`@.
    noWidgetClassQueryTooltipFieldCallback :: Maybe WidgetClassQueryTooltipFieldCallback
    noWidgetClassQueryTooltipFieldCallback :: Maybe WidgetClassQueryTooltipFieldCallback
    noWidgetClassQueryTooltipFieldCallback = Maybe WidgetClassQueryTooltipFieldCallback
    forall a. Maybe a
    Nothing

    -- | Wrap the callback into a `GClosure`.
    genClosure_WidgetClassQueryTooltipFieldCallback :: MonadIO m => WidgetClassQueryTooltipFieldCallback -> m (GClosure C_WidgetClassQueryTooltipFieldCallback)
    genClosure_WidgetClassQueryTooltipFieldCallback :: forall (m :: * -> *).
    MonadIO m =>
    WidgetClassQueryTooltipFieldCallback
    -> m (GClosure C_WidgetClassQueryTooltipFieldCallback)
    genClosure_WidgetClassQueryTooltipFieldCallback WidgetClassQueryTooltipFieldCallback
    cb = IO (GClosure C_WidgetClassQueryTooltipFieldCallback)
    -> m (GClosure C_WidgetClassQueryTooltipFieldCallback)
    forall a. IO a -> m a
    forall (m :: * -> *) a. MonadIO m => IO a -> m a
    liftIO (IO (GClosure C_WidgetClassQueryTooltipFieldCallback)
     -> m (GClosure C_WidgetClassQueryTooltipFieldCallback))
    -> IO (GClosure C_WidgetClassQueryTooltipFieldCallback)
    -> m (GClosure C_WidgetClassQueryTooltipFieldCallback)
    forall a b. (a -> b) -> a -> b
    $ do
        let cb' :: C_WidgetClassQueryTooltipFieldCallback
    cb' = Maybe (Ptr (FunPtr C_WidgetClassQueryTooltipFieldCallback))
    -> WidgetClassQueryTooltipFieldCallback
    -> C_WidgetClassQueryTooltipFieldCallback
    wrap_WidgetClassQueryTooltipFieldCallback Maybe (Ptr (FunPtr C_WidgetClassQueryTooltipFieldCallback))
    forall a. Maybe a
    Nothing WidgetClassQueryTooltipFieldCallback
    cb
        C_WidgetClassQueryTooltipFieldCallback
    -> IO (FunPtr C_WidgetClassQueryTooltipFieldCallback)
    mk_WidgetClassQueryTooltipFieldCallback C_WidgetClassQueryTooltipFieldCallback
    cb' IO (FunPtr C_WidgetClassQueryTooltipFieldCallback)
    -> (FunPtr C_WidgetClassQueryTooltipFieldCallback
        -> IO (GClosure C_WidgetClassQueryTooltipFieldCallback))
    -> IO (GClosure C_WidgetClassQueryTooltipFieldCallback)
    forall a b. IO a -> (a -> IO b) -> IO b
    forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
    >>= FunPtr C_WidgetClassQueryTooltipFieldCallback
    -> IO (GClosure C_WidgetClassQueryTooltipFieldCallback)
    forall (m :: * -> *) a. MonadIO m => FunPtr a -> m (GClosure a)
    B.GClosure.newGClosure

    -- | Wrap a `WidgetClassQueryTooltipFieldCallback` into a `C_WidgetClassQueryTooltipFieldCallback`.
    wrap_WidgetClassQueryTooltipFieldCallback ::
        Maybe (Ptr (FunPtr C_WidgetClassQueryTooltipFieldCallback)) ->
        WidgetClassQueryTooltipFieldCallback ->
        C_WidgetClassQueryTooltipFieldCallback
    wrap_WidgetClassQueryTooltipFieldCallback :: Maybe (Ptr (FunPtr C_WidgetClassQueryTooltipFieldCallback))
    -> WidgetClassQueryTooltipFieldCallback
    -> C_WidgetClassQueryTooltipFieldCallback
    wrap_WidgetClassQueryTooltipFieldCallback Maybe (Ptr (FunPtr C_WidgetClassQueryTooltipFieldCallback))
    gi'funptrptr WidgetClassQueryTooltipFieldCallback
    gi'cb Ptr Widget
    widget Int32
    x Int32
    y CInt
    keyboardTooltip Ptr Tooltip
    tooltip = do
        widget' <- ((ManagedPtr Widget -> Widget) -> Ptr Widget -> IO Widget
    forall a b.
    (HasCallStack, GObject a, GObject b) =>
    (ManagedPtr a -> a) -> Ptr b -> IO a
    newObject ManagedPtr Widget -> Widget
    Gtk.Widget.Widget) Ptr Widget
    widget
        let keyboardTooltip' = (CInt -> CInt -> Bool
    forall a. Eq a => a -> a -> Bool
    /= CInt
    0) CInt
    keyboardTooltip
        tooltip' <- (newObject Gtk.Tooltip.Tooltip) tooltip
        result <- gi'cb  widget' x y keyboardTooltip' tooltip'
        maybeReleaseFunPtr gi'funptrptr
        let result' = (Int -> CInt
    forall a b. (Integral a, Num b) => a -> b
    P.fromIntegral (Int -> CInt) -> (Bool -> Int) -> Bool -> CInt
    forall b c a. (b -> c) -> (a -> b) -> a -> c
    . Bool -> Int
    forall a. Enum a => a -> Int
    P.fromEnum) Bool
    result
        return result'

    -- callback WidgetClassProximityOutEventFieldCallback
    {- Callable
      { returnType = Just (TBasicType TBoolean)
      , returnMayBeNull = False
      , returnTransfer = TransferNothing
      , returnDocumentation =
          Documentation { rawDocText = Nothing , sinceVersion = Nothing }
      , args =
          [ Arg
              { argCName = "widget"
              , argType = TInterface Name { namespace = "Gtk" , name = "Widget" }
              , argCType = Just "GtkWidget*"
              , direction = DirectionIn
              , mayBeNull = False
              , argDoc =
                  Documentation { rawDocText = Nothing , sinceVersion = Nothing }
              , argScope = ScopeTypeInvalid
              , argClosure = -1
              , argDestroy = -1
              , argCallerAllocates = False
              , argCallbackUserData = False
              , transfer = TransferNothing
              }
          , Arg
              { argCName = "event"
              , argType =
                  TInterface Name { namespace = "Gdk" , name = "EventProximity" }
              , argCType = Just "GdkEventProximity*"
              , direction = DirectionIn
              , mayBeNull = False
              , argDoc =
                  Documentation { rawDocText = Nothing , sinceVersion = Nothing }
              , argScope = ScopeTypeInvalid
              , argClosure = -1
              , argDestroy = -1
              , argCallerAllocates = False
              , argCallbackUserData = False
              , transfer = TransferNothing
              }
          ]
      , skipReturn = False
      , callableThrows = False
      , callableDeprecated = Nothing
      , callableDocumentation =
          Documentation { rawDocText = Nothing , sinceVersion = Nothing }
      , callableResolvable = Nothing
      }
    -}
    -- | Type for the callback on the (unwrapped) C side.
    type C_WidgetClassProximityOutEventFieldCallback =
        Ptr Gtk.Widget.Widget ->
        Ptr Gdk.EventProximity.EventProximity ->
        IO CInt

    -- Args: [ Arg
    --           { argCName = "widget"
    --           , argType = TInterface Name { namespace = "Gtk" , name = "Widget" }
    --           , argCType = Just "GtkWidget*"
    --           , direction = DirectionIn
    --           , mayBeNull = False
    --           , argDoc =
    --               Documentation { rawDocText = Nothing , sinceVersion = Nothing }
    --           , argScope = ScopeTypeInvalid
    --           , argClosure = -1
    --           , argDestroy = -1
    --           , argCallerAllocates = False
    --           , argCallbackUserData = False
    --           , transfer = TransferNothing
    --           }
    --       , Arg
    --           { argCName = "event"
    --           , argType =
    --               TInterface Name { namespace = "Gdk" , name = "EventProximity" }
    --           , argCType = Just "GdkEventProximity*"
    --           , direction = DirectionIn
    --           , mayBeNull = False
    --           , argDoc =
    --               Documentation { rawDocText = Nothing , sinceVersion = Nothing }
    --           , argScope = ScopeTypeInvalid
    --           , argClosure = -1
    --           , argDestroy = -1
    --           , argCallerAllocates = False
    --           , argCallbackUserData = False
    --           , transfer = TransferNothing
    --           }
    --       ]
    -- Lengths: []
    -- returnType: Just (TBasicType TBoolean)
    -- throws : False
    -- Skip return : False

    foreign import ccall "dynamic" __dynamic_C_WidgetClassProximityOutEventFieldCallback :: FunPtr C_WidgetClassProximityOutEventFieldCallback -> C_WidgetClassProximityOutEventFieldCallback

    -- | Given a pointer to a foreign C function, wrap it into a function callable from Haskell.
    dynamic_WidgetClassProximityOutEventFieldCallback ::
        (B.CallStack.HasCallStack, MonadIO m, Gtk.Widget.IsWidget a) =>
        FunPtr C_WidgetClassProximityOutEventFieldCallback
        -> a
        -> Gdk.EventProximity.EventProximity
        -> m Bool
    dynamic_WidgetClassProximityOutEventFieldCallback :: forall (m :: * -> *) a.
    (HasCallStack, MonadIO m, IsWidget a) =>
    FunPtr C_WidgetClassProximityOutEventFieldCallback
    -> a -> EventProximity -> m Bool
    dynamic_WidgetClassProximityOutEventFieldCallback FunPtr C_WidgetClassProximityOutEventFieldCallback
    __funPtr a
    widget EventProximity
    event = IO Bool -> m Bool
    forall a. IO a -> m a
    forall (m :: * -> *) a. MonadIO m => IO a -> m a
    liftIO (IO Bool -> m Bool) -> IO Bool -> m Bool
    forall a b. (a -> b) -> a -> b
    $ do
        widget' <- a -> IO (Ptr Widget)
    forall a b. (HasCallStack, ManagedPtrNewtype a) => a -> IO (Ptr b)
    unsafeManagedPtrCastPtr a
    widget
        event' <- unsafeManagedPtrGetPtr event
        result <- (__dynamic_C_WidgetClassProximityOutEventFieldCallback __funPtr) widget' event'
        let result' = (CInt -> CInt -> Bool
    forall a. Eq a => a -> a -> Bool
    /= CInt
    0) CInt
    result
        touchManagedPtr widget
        touchManagedPtr event
        return result'

    -- | Generate a function pointer callable from C code, from a `C_WidgetClassProximityOutEventFieldCallback`.
    foreign import ccall "wrapper"
        mk_WidgetClassProximityOutEventFieldCallback :: C_WidgetClassProximityOutEventFieldCallback -> IO (FunPtr C_WidgetClassProximityOutEventFieldCallback)

    -- | /No description available in the introspection data./
    type WidgetClassProximityOutEventFieldCallback =
        Gtk.Widget.Widget
        -> Gdk.EventProximity.EventProximity
        -> IO Bool

    -- | A convenience synonym for @`Nothing` :: `Maybe` `WidgetClassProximityOutEventFieldCallback`@.
    noWidgetClassProximityOutEventFieldCallback :: Maybe WidgetClassProximityOutEventFieldCallback
    noWidgetClassProximityOutEventFieldCallback :: Maybe WidgetClassProximityOutEventFieldCallback
    noWidgetClassProximityOutEventFieldCallback = Maybe WidgetClassProximityOutEventFieldCallback
    forall a. Maybe a
    Nothing

    -- | Wrap the callback into a `GClosure`.
    genClosure_WidgetClassProximityOutEventFieldCallback :: MonadIO m => WidgetClassProximityOutEventFieldCallback -> m (GClosure C_WidgetClassProximityOutEventFieldCallback)
    genClosure_WidgetClassProximityOutEventFieldCallback :: forall (m :: * -> *).
    MonadIO m =>
    WidgetClassProximityOutEventFieldCallback
    -> m (GClosure C_WidgetClassProximityOutEventFieldCallback)
    genClosure_WidgetClassProximityOutEventFieldCallback WidgetClassProximityOutEventFieldCallback
    cb = IO (GClosure C_WidgetClassProximityOutEventFieldCallback)
    -> m (GClosure C_WidgetClassProximityOutEventFieldCallback)
    forall a. IO a -> m a
    forall (m :: * -> *) a. MonadIO m => IO a -> m a
    liftIO (IO (GClosure C_WidgetClassProximityOutEventFieldCallback)
     -> m (GClosure C_WidgetClassProximityOutEventFieldCallback))
    -> IO (GClosure C_WidgetClassProximityOutEventFieldCallback)
    -> m (GClosure C_WidgetClassProximityOutEventFieldCallback)
    forall a b. (a -> b) -> a -> b
    $ do
        let cb' :: C_WidgetClassProximityOutEventFieldCallback
    cb' = Maybe (Ptr (FunPtr C_WidgetClassProximityOutEventFieldCallback))
    -> WidgetClassProximityOutEventFieldCallback
    -> C_WidgetClassProximityOutEventFieldCallback
    wrap_WidgetClassProximityOutEventFieldCallback Maybe (Ptr (FunPtr C_WidgetClassProximityOutEventFieldCallback))
    forall a. Maybe a
    Nothing WidgetClassProximityOutEventFieldCallback
    cb
        C_WidgetClassProximityOutEventFieldCallback
    -> IO (FunPtr C_WidgetClassProximityOutEventFieldCallback)
    mk_WidgetClassProximityOutEventFieldCallback C_WidgetClassProximityOutEventFieldCallback
    cb' IO (FunPtr C_WidgetClassProximityOutEventFieldCallback)
    -> (FunPtr C_WidgetClassProximityOutEventFieldCallback
        -> IO (GClosure C_WidgetClassProximityOutEventFieldCallback))
    -> IO (GClosure C_WidgetClassProximityOutEventFieldCallback)
    forall a b. IO a -> (a -> IO b) -> IO b
    forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
    >>= FunPtr C_WidgetClassProximityOutEventFieldCallback
    -> IO (GClosure C_WidgetClassProximityOutEventFieldCallback)
    forall (m :: * -> *) a. MonadIO m => FunPtr a -> m (GClosure a)
    B.GClosure.newGClosure

    -- | Wrap a `WidgetClassProximityOutEventFieldCallback` into a `C_WidgetClassProximityOutEventFieldCallback`.
    wrap_WidgetClassProximityOutEventFieldCallback ::
        Maybe (Ptr (FunPtr C_WidgetClassProximityOutEventFieldCallback)) ->
        WidgetClassProximityOutEventFieldCallback ->
        C_WidgetClassProximityOutEventFieldCallback
    wrap_WidgetClassProximityOutEventFieldCallback :: Maybe (Ptr (FunPtr C_WidgetClassProximityOutEventFieldCallback))
    -> WidgetClassProximityOutEventFieldCallback
    -> C_WidgetClassProximityOutEventFieldCallback
    wrap_WidgetClassProximityOutEventFieldCallback Maybe (Ptr (FunPtr C_WidgetClassProximityOutEventFieldCallback))
    gi'funptrptr WidgetClassProximityOutEventFieldCallback
    gi'cb Ptr Widget
    widget Ptr EventProximity
    event = do
        widget' <- ((ManagedPtr Widget -> Widget) -> Ptr Widget -> IO Widget
    forall a b.
    (HasCallStack, GObject a, GObject b) =>
    (ManagedPtr a -> a) -> Ptr b -> IO a
    newObject ManagedPtr Widget -> Widget
    Gtk.Widget.Widget) Ptr Widget
    widget
        event' <- (newPtr Gdk.EventProximity.EventProximity) event
        result <- gi'cb  widget' event'
        maybeReleaseFunPtr gi'funptrptr
        let result' = (Int -> CInt
    forall a b. (Integral a, Num b) => a -> b
    P.fromIntegral (Int -> CInt) -> (Bool -> Int) -> Bool -> CInt
    forall b c a. (b -> c) -> (a -> b) -> a -> c
    . Bool -> Int
    forall a. Enum a => a -> Int
    P.fromEnum) Bool
    result
        return result'

    -- callback WidgetClassProximityInEventFieldCallback
    {- Callable
      { returnType = Just (TBasicType TBoolean)
      , returnMayBeNull = False
      , returnTransfer = TransferNothing
      , returnDocumentation =
          Documentation { rawDocText = Nothing , sinceVersion = Nothing }
      , args =
          [ Arg
              { argCName = "widget"
              , argType = TInterface Name { namespace = "Gtk" , name = "Widget" }
              , argCType = Just "GtkWidget*"
              , direction = DirectionIn
              , mayBeNull = False
              , argDoc =
                  Documentation { rawDocText = Nothing , sinceVersion = Nothing }
              , argScope = ScopeTypeInvalid
              , argClosure = -1
              , argDestroy = -1
              , argCallerAllocates = False
              , argCallbackUserData = False
              , transfer = TransferNothing
              }
          , Arg
              { argCName = "event"
              , argType =
                  TInterface Name { namespace = "Gdk" , name = "EventProximity" }
              , argCType = Just "GdkEventProximity*"
              , direction = DirectionIn
              , mayBeNull = False
              , argDoc =
                  Documentation { rawDocText = Nothing , sinceVersion = Nothing }
              , argScope = ScopeTypeInvalid
              , argClosure = -1
              , argDestroy = -1
              , argCallerAllocates = False
              , argCallbackUserData = False
              , transfer = TransferNothing
              }
          ]
      , skipReturn = False
      , callableThrows = False
      , callableDeprecated = Nothing
      , callableDocumentation =
          Documentation { rawDocText = Nothing , sinceVersion = Nothing }
      , callableResolvable = Nothing
      }
    -}
    -- | Type for the callback on the (unwrapped) C side.
    type C_WidgetClassProximityInEventFieldCallback =
        Ptr Gtk.Widget.Widget ->
        Ptr Gdk.EventProximity.EventProximity ->
        IO CInt

    -- Args: [ Arg
    --           { argCName = "widget"
    --           , argType = TInterface Name { namespace = "Gtk" , name = "Widget" }
    --           , argCType = Just "GtkWidget*"
    --           , direction = DirectionIn
    --           , mayBeNull = False
    --           , argDoc =
    --               Documentation { rawDocText = Nothing , sinceVersion = Nothing }
    --           , argScope = ScopeTypeInvalid
    --           , argClosure = -1
    --           , argDestroy = -1
    --           , argCallerAllocates = False
    --           , argCallbackUserData = False
    --           , transfer = TransferNothing
    --           }
    --       , Arg
    --           { argCName = "event"
    --           , argType =
    --               TInterface Name { namespace = "Gdk" , name = "EventProximity" }
    --           , argCType = Just "GdkEventProximity*"
    --           , direction = DirectionIn
    --           , mayBeNull = False
    --           , argDoc =
    --               Documentation { rawDocText = Nothing , sinceVersion = Nothing }
    --           , argScope = ScopeTypeInvalid
    --           , argClosure = -1
    --           , argDestroy = -1
    --           , argCallerAllocates = False
    --           , argCallbackUserData = False
    --           , transfer = TransferNothing
    --           }
    --       ]
    -- Lengths: []
    -- returnType: Just (TBasicType TBoolean)
    -- throws : False
    -- Skip return : False

    foreign import ccall "dynamic" __dynamic_C_WidgetClassProximityInEventFieldCallback :: FunPtr C_WidgetClassProximityInEventFieldCallback -> C_WidgetClassProximityInEventFieldCallback

    -- | Given a pointer to a foreign C function, wrap it into a function callable from Haskell.
    dynamic_WidgetClassProximityInEventFieldCallback ::
        (B.CallStack.HasCallStack, MonadIO m, Gtk.Widget.IsWidget a) =>
        FunPtr C_WidgetClassProximityInEventFieldCallback
        -> a
        -> Gdk.EventProximity.EventProximity
        -> m Bool
    dynamic_WidgetClassProximityInEventFieldCallback :: forall (m :: * -> *) a.
    (HasCallStack, MonadIO m, IsWidget a) =>
    FunPtr C_WidgetClassProximityOutEventFieldCallback
    -> a -> EventProximity -> m Bool
    dynamic_WidgetClassProximityInEventFieldCallback FunPtr C_WidgetClassProximityOutEventFieldCallback
    __funPtr a
    widget EventProximity
    event = IO Bool -> m Bool
    forall a. IO a -> m a
    forall (m :: * -> *) a. MonadIO m => IO a -> m a
    liftIO (IO Bool -> m Bool) -> IO Bool -> m Bool
    forall a b. (a -> b) -> a -> b
    $ do
        widget' <- a -> IO (Ptr Widget)
    forall a b. (HasCallStack, ManagedPtrNewtype a) => a -> IO (Ptr b)
    unsafeManagedPtrCastPtr a
    widget
        event' <- unsafeManagedPtrGetPtr event
        result <- (__dynamic_C_WidgetClassProximityInEventFieldCallback __funPtr) widget' event'
        let result' = (CInt -> CInt -> Bool
    forall a. Eq a => a -> a -> Bool
    /= CInt
    0) CInt
    result
        touchManagedPtr widget
        touchManagedPtr event
        return result'

    -- | Generate a function pointer callable from C code, from a `C_WidgetClassProximityInEventFieldCallback`.
    foreign import ccall "wrapper"
        mk_WidgetClassProximityInEventFieldCallback :: C_WidgetClassProximityInEventFieldCallback -> IO (FunPtr C_WidgetClassProximityInEventFieldCallback)

    -- | /No description available in the introspection data./
    type WidgetClassProximityInEventFieldCallback =
        Gtk.Widget.Widget
        -> Gdk.EventProximity.EventProximity
        -> IO Bool

    -- | A convenience synonym for @`Nothing` :: `Maybe` `WidgetClassProximityInEventFieldCallback`@.
    noWidgetClassProximityInEventFieldCallback :: Maybe WidgetClassProximityInEventFieldCallback
    noWidgetClassProximityInEventFieldCallback :: Maybe WidgetClassProximityOutEventFieldCallback
    noWidgetClassProximityInEventFieldCallback = Maybe WidgetClassProximityOutEventFieldCallback
    forall a. Maybe a
    Nothing

    -- | Wrap the callback into a `GClosure`.
    genClosure_WidgetClassProximityInEventFieldCallback :: MonadIO m => WidgetClassProximityInEventFieldCallback -> m (GClosure C_WidgetClassProximityInEventFieldCallback)
    genClosure_WidgetClassProximityInEventFieldCallback :: forall (m :: * -> *).
    MonadIO m =>
    WidgetClassProximityOutEventFieldCallback
    -> m (GClosure C_WidgetClassProximityOutEventFieldCallback)
    genClosure_WidgetClassProximityInEventFieldCallback WidgetClassProximityOutEventFieldCallback
    cb = IO (GClosure C_WidgetClassProximityOutEventFieldCallback)
    -> m (GClosure C_WidgetClassProximityOutEventFieldCallback)
    forall a. IO a -> m a
    forall (m :: * -> *) a. MonadIO m => IO a -> m a
    liftIO (IO (GClosure C_WidgetClassProximityOutEventFieldCallback)
     -> m (GClosure C_WidgetClassProximityOutEventFieldCallback))
    -> IO (GClosure C_WidgetClassProximityOutEventFieldCallback)
    -> m (GClosure C_WidgetClassProximityOutEventFieldCallback)
    forall a b. (a -> b) -> a -> b
    $ do
        let cb' :: C_WidgetClassProximityOutEventFieldCallback
    cb' = Maybe (Ptr (FunPtr C_WidgetClassProximityOutEventFieldCallback))
    -> WidgetClassProximityOutEventFieldCallback
    -> C_WidgetClassProximityOutEventFieldCallback
    wrap_WidgetClassProximityInEventFieldCallback Maybe (Ptr (FunPtr C_WidgetClassProximityOutEventFieldCallback))
    forall a. Maybe a
    Nothing WidgetClassProximityOutEventFieldCallback
    cb
        C_WidgetClassProximityOutEventFieldCallback
    -> IO (FunPtr C_WidgetClassProximityOutEventFieldCallback)
    mk_WidgetClassProximityInEventFieldCallback C_WidgetClassProximityOutEventFieldCallback
    cb' IO (FunPtr C_WidgetClassProximityOutEventFieldCallback)
    -> (FunPtr C_WidgetClassProximityOutEventFieldCallback
        -> IO (GClosure C_WidgetClassProximityOutEventFieldCallback))
    -> IO (GClosure C_WidgetClassProximityOutEventFieldCallback)
    forall a b. IO a -> (a -> IO b) -> IO b
    forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
    >>= FunPtr C_WidgetClassProximityOutEventFieldCallback
    -> IO (GClosure C_WidgetClassProximityOutEventFieldCallback)
    forall (m :: * -> *) a. MonadIO m => FunPtr a -> m (GClosure a)
    B.GClosure.newGClosure

    -- | Wrap a `WidgetClassProximityInEventFieldCallback` into a `C_WidgetClassProximityInEventFieldCallback`.
    wrap_WidgetClassProximityInEventFieldCallback ::
        Maybe (Ptr (FunPtr C_WidgetClassProximityInEventFieldCallback)) ->
        WidgetClassProximityInEventFieldCallback ->
        C_WidgetClassProximityInEventFieldCallback
    wrap_WidgetClassProximityInEventFieldCallback :: Maybe (Ptr (FunPtr C_WidgetClassProximityOutEventFieldCallback))
    -> WidgetClassProximityOutEventFieldCallback
    -> C_WidgetClassProximityOutEventFieldCallback
    wrap_WidgetClassProximityInEventFieldCallback Maybe (Ptr (FunPtr C_WidgetClassProximityOutEventFieldCallback))
    gi'funptrptr WidgetClassProximityOutEventFieldCallback
    gi'cb Ptr Widget
    widget Ptr EventProximity
    event = do
        widget' <- ((ManagedPtr Widget -> Widget) -> Ptr Widget -> IO Widget
    forall a b.
    (HasCallStack, GObject a, GObject b) =>
    (ManagedPtr a -> a) -> Ptr b -> IO a
    newObject ManagedPtr Widget -> Widget
    Gtk.Widget.Widget) Ptr Widget
    widget
        event' <- (newPtr Gdk.EventProximity.EventProximity) event
        result <- gi'cb  widget' event'
        maybeReleaseFunPtr gi'funptrptr
        let result' = (Int -> CInt
    forall a b. (Integral a, Num b) => a -> b
    P.fromIntegral (Int -> CInt) -> (Bool -> Int) -> Bool -> CInt
    forall b c a. (b -> c) -> (a -> b) -> a -> c
    . Bool -> Int
    forall a. Enum a => a -> Int
    P.fromEnum) Bool
    result
        return result'

    -- callback WidgetClassPropertyNotifyEventFieldCallback
    {- Callable
      { returnType = Just (TBasicType TBoolean)
      , returnMayBeNull = False
      , returnTransfer = TransferNothing
      , returnDocumentation =
          Documentation { rawDocText = Nothing , sinceVersion = Nothing }
      , args =
          [ Arg
              { argCName = "widget"
              , argType = TInterface Name { namespace = "Gtk" , name = "Widget" }
              , argCType = Just "GtkWidget*"
              , direction = DirectionIn
              , mayBeNull = False
              , argDoc =
                  Documentation { rawDocText = Nothing , sinceVersion = Nothing }
              , argScope = ScopeTypeInvalid
              , argClosure = -1
              , argDestroy = -1
              , argCallerAllocates = False
              , argCallbackUserData = False
              , transfer = TransferNothing
              }
          , Arg
              { argCName = "event"
              , argType =
                  TInterface Name { namespace = "Gdk" , name = "EventProperty" }
              , argCType = Just "GdkEventProperty*"
              , direction = DirectionIn
              , mayBeNull = False
              , argDoc =
                  Documentation { rawDocText = Nothing , sinceVersion = Nothing }
              , argScope = ScopeTypeInvalid
              , argClosure = -1
              , argDestroy = -1
              , argCallerAllocates = False
              , argCallbackUserData = False
              , transfer = TransferNothing
              }
          ]
      , skipReturn = False
      , callableThrows = False
      , callableDeprecated = Nothing
      , callableDocumentation =
          Documentation { rawDocText = Nothing , sinceVersion = Nothing }
      , callableResolvable = Nothing
      }
    -}
    -- | Type for the callback on the (unwrapped) C side.
    type C_WidgetClassPropertyNotifyEventFieldCallback =
        Ptr Gtk.Widget.Widget ->
        Ptr Gdk.EventProperty.EventProperty ->
        IO CInt

    -- Args: [ Arg
    --           { argCName = "widget"
    --           , argType = TInterface Name { namespace = "Gtk" , name = "Widget" }
    --           , argCType = Just "GtkWidget*"
    --           , direction = DirectionIn
    --           , mayBeNull = False
    --           , argDoc =
    --               Documentation { rawDocText = Nothing , sinceVersion = Nothing }
    --           , argScope = ScopeTypeInvalid
    --           , argClosure = -1
    --           , argDestroy = -1
    --           , argCallerAllocates = False
    --           , argCallbackUserData = False
    --           , transfer = TransferNothing
    --           }
    --       , Arg
    --           { argCName = "event"
    --           , argType =
    --               TInterface Name { namespace = "Gdk" , name = "EventProperty" }
    --           , argCType = Just "GdkEventProperty*"
    --           , direction = DirectionIn
    --           , mayBeNull = False
    --           , argDoc =
    --               Documentation { rawDocText = Nothing , sinceVersion = Nothing }
    --           , argScope = ScopeTypeInvalid
    --           , argClosure = -1
    --           , argDestroy = -1
    --           , argCallerAllocates = False
    --           , argCallbackUserData = False
    --           , transfer = TransferNothing
    --           }
    --       ]
    -- Lengths: []
    -- returnType: Just (TBasicType TBoolean)
    -- throws : False
    -- Skip return : False

    foreign import ccall "dynamic" __dynamic_C_WidgetClassPropertyNotifyEventFieldCallback :: FunPtr C_WidgetClassPropertyNotifyEventFieldCallback -> C_WidgetClassPropertyNotifyEventFieldCallback

    -- | Given a pointer to a foreign C function, wrap it into a function callable from Haskell.
    dynamic_WidgetClassPropertyNotifyEventFieldCallback ::
        (B.CallStack.HasCallStack, MonadIO m, Gtk.Widget.IsWidget a) =>
        FunPtr C_WidgetClassPropertyNotifyEventFieldCallback
        -> a
        -> Gdk.EventProperty.EventProperty
        -> m Bool
    dynamic_WidgetClassPropertyNotifyEventFieldCallback :: forall (m :: * -> *) a.
    (HasCallStack, MonadIO m, IsWidget a) =>
    FunPtr C_WidgetClassPropertyNotifyEventFieldCallback
    -> a -> EventProperty -> m Bool
    dynamic_WidgetClassPropertyNotifyEventFieldCallback FunPtr C_WidgetClassPropertyNotifyEventFieldCallback
    __funPtr a
    widget EventProperty
    event = IO Bool -> m Bool
    forall a. IO a -> m a
    forall (m :: * -> *) a. MonadIO m => IO a -> m a
    liftIO (IO Bool -> m Bool) -> IO Bool -> m Bool
    forall a b. (a -> b) -> a -> b
    $ do
        widget' <- a -> IO (Ptr Widget)
    forall a b. (HasCallStack, ManagedPtrNewtype a) => a -> IO (Ptr b)
    unsafeManagedPtrCastPtr a
    widget
        event' <- unsafeManagedPtrGetPtr event
        result <- (__dynamic_C_WidgetClassPropertyNotifyEventFieldCallback __funPtr) widget' event'
        let result' = (CInt -> CInt -> Bool
    forall a. Eq a => a -> a -> Bool
    /= CInt
    0) CInt
    result
        touchManagedPtr widget
        touchManagedPtr event
        return result'

    -- | Generate a function pointer callable from C code, from a `C_WidgetClassPropertyNotifyEventFieldCallback`.
    foreign import ccall "wrapper"
        mk_WidgetClassPropertyNotifyEventFieldCallback :: C_WidgetClassPropertyNotifyEventFieldCallback -> IO (FunPtr C_WidgetClassPropertyNotifyEventFieldCallback)

    -- | /No description available in the introspection data./
    type WidgetClassPropertyNotifyEventFieldCallback =
        Gtk.Widget.Widget
        -> Gdk.EventProperty.EventProperty
        -> IO Bool

    -- | A convenience synonym for @`Nothing` :: `Maybe` `WidgetClassPropertyNotifyEventFieldCallback`@.
    noWidgetClassPropertyNotifyEventFieldCallback :: Maybe WidgetClassPropertyNotifyEventFieldCallback
    noWidgetClassPropertyNotifyEventFieldCallback :: Maybe WidgetClassPropertyNotifyEventFieldCallback
    noWidgetClassPropertyNotifyEventFieldCallback = Maybe WidgetClassPropertyNotifyEventFieldCallback
    forall a. Maybe a
    Nothing

    -- | Wrap the callback into a `GClosure`.
    genClosure_WidgetClassPropertyNotifyEventFieldCallback :: MonadIO m => WidgetClassPropertyNotifyEventFieldCallback -> m (GClosure C_WidgetClassPropertyNotifyEventFieldCallback)
    genClosure_WidgetClassPropertyNotifyEventFieldCallback :: forall (m :: * -> *).
    MonadIO m =>
    WidgetClassPropertyNotifyEventFieldCallback
    -> m (GClosure C_WidgetClassPropertyNotifyEventFieldCallback)
    genClosure_WidgetClassPropertyNotifyEventFieldCallback WidgetClassPropertyNotifyEventFieldCallback
    cb = IO (GClosure C_WidgetClassPropertyNotifyEventFieldCallback)
    -> m (GClosure C_WidgetClassPropertyNotifyEventFieldCallback)
    forall a. IO a -> m a
    forall (m :: * -> *) a. MonadIO m => IO a -> m a
    liftIO (IO (GClosure C_WidgetClassPropertyNotifyEventFieldCallback)
     -> m (GClosure C_WidgetClassPropertyNotifyEventFieldCallback))
    -> IO (GClosure C_WidgetClassPropertyNotifyEventFieldCallback)
    -> m (GClosure C_WidgetClassPropertyNotifyEventFieldCallback)
    forall a b. (a -> b) -> a -> b
    $ do
        let cb' :: C_WidgetClassPropertyNotifyEventFieldCallback
    cb' = Maybe (Ptr (FunPtr C_WidgetClassPropertyNotifyEventFieldCallback))
    -> WidgetClassPropertyNotifyEventFieldCallback
    -> C_WidgetClassPropertyNotifyEventFieldCallback
    wrap_WidgetClassPropertyNotifyEventFieldCallback Maybe (Ptr (FunPtr C_WidgetClassPropertyNotifyEventFieldCallback))
    forall a. Maybe a
    Nothing WidgetClassPropertyNotifyEventFieldCallback
    cb
        C_WidgetClassPropertyNotifyEventFieldCallback
    -> IO (FunPtr C_WidgetClassPropertyNotifyEventFieldCallback)
    mk_WidgetClassPropertyNotifyEventFieldCallback C_WidgetClassPropertyNotifyEventFieldCallback
    cb' IO (FunPtr C_WidgetClassPropertyNotifyEventFieldCallback)
    -> (FunPtr C_WidgetClassPropertyNotifyEventFieldCallback
        -> IO (GClosure C_WidgetClassPropertyNotifyEventFieldCallback))
    -> IO (GClosure C_WidgetClassPropertyNotifyEventFieldCallback)
    forall a b. IO a -> (a -> IO b) -> IO b
    forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
    >>= FunPtr C_WidgetClassPropertyNotifyEventFieldCallback
    -> IO (GClosure C_WidgetClassPropertyNotifyEventFieldCallback)
    forall (m :: * -> *) a. MonadIO m => FunPtr a -> m (GClosure a)
    B.GClosure.newGClosure

    -- | Wrap a `WidgetClassPropertyNotifyEventFieldCallback` into a `C_WidgetClassPropertyNotifyEventFieldCallback`.
    wrap_WidgetClassPropertyNotifyEventFieldCallback ::
        Maybe (Ptr (FunPtr C_WidgetClassPropertyNotifyEventFieldCallback)) ->
        WidgetClassPropertyNotifyEventFieldCallback ->
        C_WidgetClassPropertyNotifyEventFieldCallback
    wrap_WidgetClassPropertyNotifyEventFieldCallback :: Maybe (Ptr (FunPtr C_WidgetClassPropertyNotifyEventFieldCallback))
    -> WidgetClassPropertyNotifyEventFieldCallback
    -> C_WidgetClassPropertyNotifyEventFieldCallback
    wrap_WidgetClassPropertyNotifyEventFieldCallback Maybe (Ptr (FunPtr C_WidgetClassPropertyNotifyEventFieldCallback))
    gi'funptrptr WidgetClassPropertyNotifyEventFieldCallback
    gi'cb Ptr Widget
    widget Ptr EventProperty
    event = do
        widget' <- ((ManagedPtr Widget -> Widget) -> Ptr Widget -> IO Widget
    forall a b.
    (HasCallStack, GObject a, GObject b) =>
    (ManagedPtr a -> a) -> Ptr b -> IO a
    newObject ManagedPtr Widget -> Widget
    Gtk.Widget.Widget) Ptr Widget
    widget
        event' <- (newPtr Gdk.EventProperty.EventProperty) event
        result <- gi'cb  widget' event'
        maybeReleaseFunPtr gi'funptrptr
        let result' = (Int -> CInt
    forall a b. (Integral a, Num b) => a -> b
    P.fromIntegral (Int -> CInt) -> (Bool -> Int) -> Bool -> CInt
    forall b c a. (b -> c) -> (a -> b) -> a -> c
    . Bool -> Int
    forall a. Enum a => a -> Int
    P.fromEnum) Bool
    result
        return result'

    -- callback WidgetClassPopupMenuFieldCallback
    {- Callable
      { returnType = Just (TBasicType TBoolean)
      , returnMayBeNull = False
      , returnTransfer = TransferNothing
      , returnDocumentation =
          Documentation { rawDocText = Nothing , sinceVersion = Nothing }
      , args =
          [ Arg
              { argCName = "widget"
              , argType = TInterface Name { namespace = "Gtk" , name = "Widget" }
              , argCType = Just "GtkWidget*"
              , direction = DirectionIn
              , mayBeNull = False
              , argDoc =
                  Documentation { rawDocText = Nothing , sinceVersion = Nothing }
              , argScope = ScopeTypeInvalid
              , argClosure = -1
              , argDestroy = -1
              , argCallerAllocates = False
              , argCallbackUserData = False
              , transfer = TransferNothing
              }
          ]
      , skipReturn = False
      , callableThrows = False
      , callableDeprecated = Nothing
      , callableDocumentation =
          Documentation { rawDocText = Nothing , sinceVersion = Nothing }
      , callableResolvable = Nothing
      }
    -}
    -- | Type for the callback on the (unwrapped) C side.
    type C_WidgetClassPopupMenuFieldCallback =
        Ptr Gtk.Widget.Widget ->
        IO CInt

    -- Args: [ Arg
    --           { argCName = "widget"
    --           , argType = TInterface Name { namespace = "Gtk" , name = "Widget" }
    --           , argCType = Just "GtkWidget*"
    --           , direction = DirectionIn
    --           , mayBeNull = False
    --           , argDoc =
    --               Documentation { rawDocText = Nothing , sinceVersion = Nothing }
    --           , argScope = ScopeTypeInvalid
    --           , argClosure = -1
    --           , argDestroy = -1
    --           , argCallerAllocates = False
    --           , argCallbackUserData = False
    --           , transfer = TransferNothing
    --           }
    --       ]
    -- Lengths: []
    -- returnType: Just (TBasicType TBoolean)
    -- throws : False
    -- Skip return : False

    foreign import ccall "dynamic" __dynamic_C_WidgetClassPopupMenuFieldCallback :: FunPtr C_WidgetClassPopupMenuFieldCallback -> C_WidgetClassPopupMenuFieldCallback

    -- | Given a pointer to a foreign C function, wrap it into a function callable from Haskell.
    dynamic_WidgetClassPopupMenuFieldCallback ::
        (B.CallStack.HasCallStack, MonadIO m, Gtk.Widget.IsWidget a) =>
        FunPtr C_WidgetClassPopupMenuFieldCallback
        -> a
        -> m Bool
    dynamic_WidgetClassPopupMenuFieldCallback :: forall (m :: * -> *) a.
    (HasCallStack, MonadIO m, IsWidget a) =>
    FunPtr C_WidgetClassPopupMenuFieldCallback -> a -> m Bool
    dynamic_WidgetClassPopupMenuFieldCallback FunPtr C_WidgetClassPopupMenuFieldCallback
    __funPtr a
    widget = IO Bool -> m Bool
    forall a. IO a -> m a
    forall (m :: * -> *) a. MonadIO m => IO a -> m a
    liftIO (IO Bool -> m Bool) -> IO Bool -> m Bool
    forall a b. (a -> b) -> a -> b
    $ do
        widget' <- a -> IO (Ptr Widget)
    forall a b. (HasCallStack, ManagedPtrNewtype a) => a -> IO (Ptr b)
    unsafeManagedPtrCastPtr a
    widget
        result <- (__dynamic_C_WidgetClassPopupMenuFieldCallback __funPtr) widget'
        let result' = (CInt -> CInt -> Bool
    forall a. Eq a => a -> a -> Bool
    /= CInt
    0) CInt
    result
        touchManagedPtr widget
        return result'

    -- | Generate a function pointer callable from C code, from a `C_WidgetClassPopupMenuFieldCallback`.
    foreign import ccall "wrapper"
        mk_WidgetClassPopupMenuFieldCallback :: C_WidgetClassPopupMenuFieldCallback -> IO (FunPtr C_WidgetClassPopupMenuFieldCallback)

    -- | /No description available in the introspection data./
    type WidgetClassPopupMenuFieldCallback =
        Gtk.Widget.Widget
        -> IO Bool

    -- | A convenience synonym for @`Nothing` :: `Maybe` `WidgetClassPopupMenuFieldCallback`@.
    noWidgetClassPopupMenuFieldCallback :: Maybe WidgetClassPopupMenuFieldCallback
    noWidgetClassPopupMenuFieldCallback :: Maybe WidgetClassPopupMenuFieldCallback
    noWidgetClassPopupMenuFieldCallback = Maybe WidgetClassPopupMenuFieldCallback
    forall a. Maybe a
    Nothing

    -- | Wrap the callback into a `GClosure`.
    genClosure_WidgetClassPopupMenuFieldCallback :: MonadIO m => WidgetClassPopupMenuFieldCallback -> m (GClosure C_WidgetClassPopupMenuFieldCallback)
    genClosure_WidgetClassPopupMenuFieldCallback :: forall (m :: * -> *).
    MonadIO m =>
    WidgetClassPopupMenuFieldCallback
    -> m (GClosure C_WidgetClassPopupMenuFieldCallback)
    genClosure_WidgetClassPopupMenuFieldCallback WidgetClassPopupMenuFieldCallback
    cb = IO (GClosure C_WidgetClassPopupMenuFieldCallback)
    -> m (GClosure C_WidgetClassPopupMenuFieldCallback)
    forall a. IO a -> m a
    forall (m :: * -> *) a. MonadIO m => IO a -> m a
    liftIO (IO (GClosure C_WidgetClassPopupMenuFieldCallback)
     -> m (GClosure C_WidgetClassPopupMenuFieldCallback))
    -> IO (GClosure C_WidgetClassPopupMenuFieldCallback)
    -> m (GClosure C_WidgetClassPopupMenuFieldCallback)
    forall a b. (a -> b) -> a -> b
    $ do
        let cb' :: C_WidgetClassPopupMenuFieldCallback
    cb' = Maybe (Ptr (FunPtr C_WidgetClassPopupMenuFieldCallback))
    -> WidgetClassPopupMenuFieldCallback
    -> C_WidgetClassPopupMenuFieldCallback
    wrap_WidgetClassPopupMenuFieldCallback Maybe (Ptr (FunPtr C_WidgetClassPopupMenuFieldCallback))
    forall a. Maybe a
    Nothing WidgetClassPopupMenuFieldCallback
    cb
        C_WidgetClassPopupMenuFieldCallback
    -> IO (FunPtr C_WidgetClassPopupMenuFieldCallback)
    mk_WidgetClassPopupMenuFieldCallback C_WidgetClassPopupMenuFieldCallback
    cb' IO (FunPtr C_WidgetClassPopupMenuFieldCallback)
    -> (FunPtr C_WidgetClassPopupMenuFieldCallback
        -> IO (GClosure C_WidgetClassPopupMenuFieldCallback))
    -> IO (GClosure C_WidgetClassPopupMenuFieldCallback)
    forall a b. IO a -> (a -> IO b) -> IO b
    forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
    >>= FunPtr C_WidgetClassPopupMenuFieldCallback
    -> IO (GClosure C_WidgetClassPopupMenuFieldCallback)
    forall (m :: * -> *) a. MonadIO m => FunPtr a -> m (GClosure a)
    B.GClosure.newGClosure

    -- | Wrap a `WidgetClassPopupMenuFieldCallback` into a `C_WidgetClassPopupMenuFieldCallback`.
    wrap_WidgetClassPopupMenuFieldCallback ::
        Maybe (Ptr (FunPtr C_WidgetClassPopupMenuFieldCallback)) ->
        WidgetClassPopupMenuFieldCallback ->
        C_WidgetClassPopupMenuFieldCallback
    wrap_WidgetClassPopupMenuFieldCallback :: Maybe (Ptr (FunPtr C_WidgetClassPopupMenuFieldCallback))
    -> WidgetClassPopupMenuFieldCallback
    -> C_WidgetClassPopupMenuFieldCallback
    wrap_WidgetClassPopupMenuFieldCallback Maybe (Ptr (FunPtr C_WidgetClassPopupMenuFieldCallback))
    gi'funptrptr WidgetClassPopupMenuFieldCallback
    gi'cb Ptr Widget
    widget = do
        widget' <- ((ManagedPtr Widget -> Widget) -> Ptr Widget -> IO Widget
    forall a b.
    (HasCallStack, GObject a, GObject b) =>
    (ManagedPtr a -> a) -> Ptr b -> IO a
    newObject ManagedPtr Widget -> Widget
    Gtk.Widget.Widget) Ptr Widget
    widget
        result <- gi'cb  widget'
        maybeReleaseFunPtr gi'funptrptr
        let result' = (Int -> CInt
    forall a b. (Integral a, Num b) => a -> b
    P.fromIntegral (Int -> CInt) -> (Bool -> Int) -> Bool -> CInt
    forall b c a. (b -> c) -> (a -> b) -> a -> c
    . Bool -> Int
    forall a. Enum a => a -> Int
    P.fromEnum) Bool
    result
        return result'

    -- callback WidgetClassParentSetFieldCallback
    {- Callable
      { returnType = Nothing
      , returnMayBeNull = False
      , returnTransfer = TransferNothing
      , returnDocumentation =
          Documentation { rawDocText = Nothing , sinceVersion = Nothing }
      , args =
          [ Arg
              { argCName = "widget"
              , argType = TInterface Name { namespace = "Gtk" , name = "Widget" }
              , argCType = Just "GtkWidget*"
              , direction = DirectionIn
              , mayBeNull = False
              , argDoc =
                  Documentation { rawDocText = Nothing , sinceVersion = Nothing }
              , argScope = ScopeTypeInvalid
              , argClosure = -1
              , argDestroy = -1
              , argCallerAllocates = False
              , argCallbackUserData = False
              , transfer = TransferNothing
              }
          , Arg
              { argCName = "previous_parent"
              , argType = TInterface Name { namespace = "Gtk" , name = "Widget" }
              , argCType = Just "GtkWidget*"
              , direction = DirectionIn
              , mayBeNull = False
              , argDoc =
                  Documentation { rawDocText = Nothing , sinceVersion = Nothing }
              , argScope = ScopeTypeInvalid
              , argClosure = -1
              , argDestroy = -1
              , argCallerAllocates = False
              , argCallbackUserData = False
              , transfer = TransferNothing
              }
          ]
      , skipReturn = False
      , callableThrows = False
      , callableDeprecated = Nothing
      , callableDocumentation =
          Documentation { rawDocText = Nothing , sinceVersion = Nothing }
      , callableResolvable = Nothing
      }
    -}
    -- | Type for the callback on the (unwrapped) C side.
    type C_WidgetClassParentSetFieldCallback =
        Ptr Gtk.Widget.Widget ->
        Ptr Gtk.Widget.Widget ->
        IO ()

    -- Args: [ Arg
    --           { argCName = "widget"
    --           , argType = TInterface Name { namespace = "Gtk" , name = "Widget" }
    --           , argCType = Just "GtkWidget*"
    --           , direction = DirectionIn
    --           , mayBeNull = False
    --           , argDoc =
    --               Documentation { rawDocText = Nothing , sinceVersion = Nothing }
    --           , argScope = ScopeTypeInvalid
    --           , argClosure = -1
    --           , argDestroy = -1
    --           , argCallerAllocates = False
    --           , argCallbackUserData = False
    --           , transfer = TransferNothing
    --           }
    --       , Arg
    --           { argCName = "previous_parent"
    --           , argType = TInterface Name { namespace = "Gtk" , name = "Widget" }
    --           , argCType = Just "GtkWidget*"
    --           , direction = DirectionIn
    --           , mayBeNull = False
    --           , argDoc =
    --               Documentation { rawDocText = Nothing , sinceVersion = Nothing }
    --           , argScope = ScopeTypeInvalid
    --           , argClosure = -1
    --           , argDestroy = -1
    --           , argCallerAllocates = False
    --           , argCallbackUserData = False
    --           , transfer = TransferNothing
    --           }
    --       ]
    -- Lengths: []
    -- returnType: Nothing
    -- throws : False
    -- Skip return : False

    foreign import ccall "dynamic" __dynamic_C_WidgetClassParentSetFieldCallback :: FunPtr C_WidgetClassParentSetFieldCallback -> C_WidgetClassParentSetFieldCallback

    -- | Given a pointer to a foreign C function, wrap it into a function callable from Haskell.
    dynamic_WidgetClassParentSetFieldCallback ::
        (B.CallStack.HasCallStack, MonadIO m, Gtk.Widget.IsWidget a, Gtk.Widget.IsWidget b) =>
        FunPtr C_WidgetClassParentSetFieldCallback
        -> a
        -> b
        -> m ()
    dynamic_WidgetClassParentSetFieldCallback :: forall (m :: * -> *) a b.
    (HasCallStack, MonadIO m, IsWidget a, IsWidget b) =>
    FunPtr C_WidgetClassParentSetFieldCallback -> a -> b -> m ()
    dynamic_WidgetClassParentSetFieldCallback FunPtr C_WidgetClassParentSetFieldCallback
    __funPtr a
    widget b
    previousParent = IO () -> m ()
    forall a. IO a -> m a
    forall (m :: * -> *) a. MonadIO m => IO a -> m a
    liftIO (IO () -> m ()) -> IO () -> m ()
    forall a b. (a -> b) -> a -> b
    $ do
        widget' <- a -> IO (Ptr Widget)
    forall a b. (HasCallStack, ManagedPtrNewtype a) => a -> IO (Ptr b)
    unsafeManagedPtrCastPtr a
    widget
        previousParent' <- unsafeManagedPtrCastPtr previousParent
        (__dynamic_C_WidgetClassParentSetFieldCallback __funPtr) widget' previousParent'
        touchManagedPtr widget
        touchManagedPtr previousParent
        return ()

    -- | Generate a function pointer callable from C code, from a `C_WidgetClassParentSetFieldCallback`.
    foreign import ccall "wrapper"
        mk_WidgetClassParentSetFieldCallback :: C_WidgetClassParentSetFieldCallback -> IO (FunPtr C_WidgetClassParentSetFieldCallback)

    -- | /No description available in the introspection data./
    type WidgetClassParentSetFieldCallback =
        Gtk.Widget.Widget
        -> Gtk.Widget.Widget
        -> IO ()

    -- | A convenience synonym for @`Nothing` :: `Maybe` `WidgetClassParentSetFieldCallback`@.
    noWidgetClassParentSetFieldCallback :: Maybe WidgetClassParentSetFieldCallback
    noWidgetClassParentSetFieldCallback :: Maybe WidgetClassParentSetFieldCallback
    noWidgetClassParentSetFieldCallback = Maybe WidgetClassParentSetFieldCallback
    forall a. Maybe a
    Nothing

    -- | Wrap the callback into a `GClosure`.
    genClosure_WidgetClassParentSetFieldCallback :: MonadIO m => WidgetClassParentSetFieldCallback -> m (GClosure C_WidgetClassParentSetFieldCallback)
    genClosure_WidgetClassParentSetFieldCallback :: forall (m :: * -> *).
    MonadIO m =>
    WidgetClassParentSetFieldCallback
    -> m (GClosure C_WidgetClassParentSetFieldCallback)
    genClosure_WidgetClassParentSetFieldCallback WidgetClassParentSetFieldCallback
    cb = IO (GClosure C_WidgetClassParentSetFieldCallback)
    -> m (GClosure C_WidgetClassParentSetFieldCallback)
    forall a. IO a -> m a
    forall (m :: * -> *) a. MonadIO m => IO a -> m a
    liftIO (IO (GClosure C_WidgetClassParentSetFieldCallback)
     -> m (GClosure C_WidgetClassParentSetFieldCallback))
    -> IO (GClosure C_WidgetClassParentSetFieldCallback)
    -> m (GClosure C_WidgetClassParentSetFieldCallback)
    forall a b. (a -> b) -> a -> b
    $ do
        let cb' :: C_WidgetClassParentSetFieldCallback
    cb' = Maybe (Ptr (FunPtr C_WidgetClassParentSetFieldCallback))
    -> WidgetClassParentSetFieldCallback
    -> C_WidgetClassParentSetFieldCallback
    wrap_WidgetClassParentSetFieldCallback Maybe (Ptr (FunPtr C_WidgetClassParentSetFieldCallback))
    forall a. Maybe a
    Nothing WidgetClassParentSetFieldCallback
    cb
        C_WidgetClassParentSetFieldCallback
    -> IO (FunPtr C_WidgetClassParentSetFieldCallback)
    mk_WidgetClassParentSetFieldCallback C_WidgetClassParentSetFieldCallback
    cb' IO (FunPtr C_WidgetClassParentSetFieldCallback)
    -> (FunPtr C_WidgetClassParentSetFieldCallback
        -> IO (GClosure C_WidgetClassParentSetFieldCallback))
    -> IO (GClosure C_WidgetClassParentSetFieldCallback)
    forall a b. IO a -> (a -> IO b) -> IO b
    forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
    >>= FunPtr C_WidgetClassParentSetFieldCallback
    -> IO (GClosure C_WidgetClassParentSetFieldCallback)
    forall (m :: * -> *) a. MonadIO m => FunPtr a -> m (GClosure a)
    B.GClosure.newGClosure

    -- | Wrap a `WidgetClassParentSetFieldCallback` into a `C_WidgetClassParentSetFieldCallback`.
    wrap_WidgetClassParentSetFieldCallback ::
        Maybe (Ptr (FunPtr C_WidgetClassParentSetFieldCallback)) ->
        WidgetClassParentSetFieldCallback ->
        C_WidgetClassParentSetFieldCallback
    wrap_WidgetClassParentSetFieldCallback :: Maybe (Ptr (FunPtr C_WidgetClassParentSetFieldCallback))
    -> WidgetClassParentSetFieldCallback
    -> C_WidgetClassParentSetFieldCallback
    wrap_WidgetClassParentSetFieldCallback Maybe (Ptr (FunPtr C_WidgetClassParentSetFieldCallback))
    gi'funptrptr WidgetClassParentSetFieldCallback
    gi'cb Ptr Widget
    widget Ptr Widget
    previousParent = do
        widget' <- ((ManagedPtr Widget -> Widget) -> Ptr Widget -> IO Widget
    forall a b.
    (HasCallStack, GObject a, GObject b) =>
    (ManagedPtr a -> a) -> Ptr b -> IO a
    newObject ManagedPtr Widget -> Widget
    Gtk.Widget.Widget) Ptr Widget
    widget
        previousParent' <- (newObject Gtk.Widget.Widget) previousParent
        gi'cb  widget' previousParent'
        maybeReleaseFunPtr gi'funptrptr

    -- callback WidgetClassMoveFocusFieldCallback
    {- Callable
      { returnType = Nothing
      , returnMayBeNull = False
      , returnTransfer = TransferNothing
      , returnDocumentation =
          Documentation { rawDocText = Nothing , sinceVersion = Nothing }
      , args =
          [ Arg
              { argCName = "widget"
              , argType = TInterface Name { namespace = "Gtk" , name = "Widget" }
              , argCType = Just "GtkWidget*"
              , direction = DirectionIn
              , mayBeNull = False
              , argDoc =
                  Documentation { rawDocText = Nothing , sinceVersion = Nothing }
              , argScope = ScopeTypeInvalid
              , argClosure = -1
              , argDestroy = -1
              , argCallerAllocates = False
              , argCallbackUserData = False
              , transfer = TransferNothing
              }
          , Arg
              { argCName = "direction"
              , argType =
                  TInterface Name { namespace = "Gtk" , name = "DirectionType" }
              , argCType = Just "GtkDirectionType"
              , direction = DirectionIn
              , mayBeNull = False
              , argDoc =
                  Documentation { rawDocText = Nothing , sinceVersion = Nothing }
              , argScope = ScopeTypeInvalid
              , argClosure = -1
              , argDestroy = -1
              , argCallerAllocates = False
              , argCallbackUserData = False
              , transfer = TransferNothing
              }
          ]
      , skipReturn = False
      , callableThrows = False
      , callableDeprecated = Nothing
      , callableDocumentation =
          Documentation { rawDocText = Nothing , sinceVersion = Nothing }
      , callableResolvable = Nothing
      }
    -}
    -- | Type for the callback on the (unwrapped) C side.
    type C_WidgetClassMoveFocusFieldCallback =
        Ptr Gtk.Widget.Widget ->
        CUInt ->
        IO ()

    -- Args: [ Arg
    --           { argCName = "widget"
    --           , argType = TInterface Name { namespace = "Gtk" , name = "Widget" }
    --           , argCType = Just "GtkWidget*"
    --           , direction = DirectionIn
    --           , mayBeNull = False
    --           , argDoc =
    --               Documentation { rawDocText = Nothing , sinceVersion = Nothing }
    --           , argScope = ScopeTypeInvalid
    --           , argClosure = -1
    --           , argDestroy = -1
    --           , argCallerAllocates = False
    --           , argCallbackUserData = False
    --           , transfer = TransferNothing
    --           }
    --       , Arg
    --           { argCName = "direction"
    --           , argType =
    --               TInterface Name { namespace = "Gtk" , name = "DirectionType" }
    --           , argCType = Just "GtkDirectionType"
    --           , direction = DirectionIn
    --           , mayBeNull = False
    --           , argDoc =
    --               Documentation { rawDocText = Nothing , sinceVersion = Nothing }
    --           , argScope = ScopeTypeInvalid
    --           , argClosure = -1
    --           , argDestroy = -1
    --           , argCallerAllocates = False
    --           , argCallbackUserData = False
    --           , transfer = TransferNothing
    --           }
    --       ]
    -- Lengths: []
    -- returnType: Nothing
    -- throws : False
    -- Skip return : False

    foreign import ccall "dynamic" __dynamic_C_WidgetClassMoveFocusFieldCallback :: FunPtr C_WidgetClassMoveFocusFieldCallback -> C_WidgetClassMoveFocusFieldCallback

    -- | Given a pointer to a foreign C function, wrap it into a function callable from Haskell.
    dynamic_WidgetClassMoveFocusFieldCallback ::
        (B.CallStack.HasCallStack, MonadIO m, Gtk.Widget.IsWidget a) =>
        FunPtr C_WidgetClassMoveFocusFieldCallback
        -> a
        -> Gtk.Enums.DirectionType
        -> m ()
    dynamic_WidgetClassMoveFocusFieldCallback :: forall (m :: * -> *) a.
    (HasCallStack, MonadIO m, IsWidget a) =>
    FunPtr C_WidgetClassStateFlagsChangedFieldCallback
    -> a -> DirectionType -> m ()
    dynamic_WidgetClassMoveFocusFieldCallback FunPtr C_WidgetClassStateFlagsChangedFieldCallback
    __funPtr a
    widget DirectionType
    direction = IO () -> m ()
    forall a. IO a -> m a
    forall (m :: * -> *) a. MonadIO m => IO a -> m a
    liftIO (IO () -> m ()) -> IO () -> m ()
    forall a b. (a -> b) -> a -> b
    $ do
        widget' <- a -> IO (Ptr Widget)
    forall a b. (HasCallStack, ManagedPtrNewtype a) => a -> IO (Ptr b)
    unsafeManagedPtrCastPtr a
    widget
        let direction' = (Int -> CUInt
    forall a b. (Integral a, Num b) => a -> b
    fromIntegral (Int -> CUInt) -> (DirectionType -> Int) -> DirectionType -> CUInt
    forall b c a. (b -> c) -> (a -> b) -> a -> c
    . DirectionType -> Int
    forall a. Enum a => a -> Int
    fromEnum) DirectionType
    direction
        (__dynamic_C_WidgetClassMoveFocusFieldCallback __funPtr) widget' direction'
        touchManagedPtr widget
        return ()

    -- | Generate a function pointer callable from C code, from a `C_WidgetClassMoveFocusFieldCallback`.
    foreign import ccall "wrapper"
        mk_WidgetClassMoveFocusFieldCallback :: C_WidgetClassMoveFocusFieldCallback -> IO (FunPtr C_WidgetClassMoveFocusFieldCallback)

    -- | /No description available in the introspection data./
    type WidgetClassMoveFocusFieldCallback =
        Gtk.Widget.Widget
        -> Gtk.Enums.DirectionType
        -> IO ()

    -- | A convenience synonym for @`Nothing` :: `Maybe` `WidgetClassMoveFocusFieldCallback`@.
    noWidgetClassMoveFocusFieldCallback :: Maybe WidgetClassMoveFocusFieldCallback
    noWidgetClassMoveFocusFieldCallback :: Maybe WidgetClassMoveFocusFieldCallback
    noWidgetClassMoveFocusFieldCallback = Maybe WidgetClassMoveFocusFieldCallback
    forall a. Maybe a
    Nothing

    -- | Wrap the callback into a `GClosure`.
    genClosure_WidgetClassMoveFocusFieldCallback :: MonadIO m => WidgetClassMoveFocusFieldCallback -> m (GClosure C_WidgetClassMoveFocusFieldCallback)
    genClosure_WidgetClassMoveFocusFieldCallback :: forall (m :: * -> *).
    MonadIO m =>
    WidgetClassMoveFocusFieldCallback
    -> m (GClosure C_WidgetClassStateFlagsChangedFieldCallback)
    genClosure_WidgetClassMoveFocusFieldCallback WidgetClassMoveFocusFieldCallback
    cb = IO (GClosure C_WidgetClassStateFlagsChangedFieldCallback)
    -> m (GClosure C_WidgetClassStateFlagsChangedFieldCallback)
    forall a. IO a -> m a
    forall (m :: * -> *) a. MonadIO m => IO a -> m a
    liftIO (IO (GClosure C_WidgetClassStateFlagsChangedFieldCallback)
     -> m (GClosure C_WidgetClassStateFlagsChangedFieldCallback))
    -> IO (GClosure C_WidgetClassStateFlagsChangedFieldCallback)
    -> m (GClosure C_WidgetClassStateFlagsChangedFieldCallback)
    forall a b. (a -> b) -> a -> b
    $ do
        let cb' :: C_WidgetClassStateFlagsChangedFieldCallback
    cb' = Maybe (Ptr (FunPtr C_WidgetClassStateFlagsChangedFieldCallback))
    -> WidgetClassMoveFocusFieldCallback
    -> C_WidgetClassStateFlagsChangedFieldCallback
    wrap_WidgetClassMoveFocusFieldCallback Maybe (Ptr (FunPtr C_WidgetClassStateFlagsChangedFieldCallback))
    forall a. Maybe a
    Nothing WidgetClassMoveFocusFieldCallback
    cb
        C_WidgetClassStateFlagsChangedFieldCallback
    -> IO (FunPtr C_WidgetClassStateFlagsChangedFieldCallback)
    mk_WidgetClassMoveFocusFieldCallback C_WidgetClassStateFlagsChangedFieldCallback
    cb' IO (FunPtr C_WidgetClassStateFlagsChangedFieldCallback)
    -> (FunPtr C_WidgetClassStateFlagsChangedFieldCallback
        -> IO (GClosure C_WidgetClassStateFlagsChangedFieldCallback))
    -> IO (GClosure C_WidgetClassStateFlagsChangedFieldCallback)
    forall a b. IO a -> (a -> IO b) -> IO b
    forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
    >>= FunPtr C_WidgetClassStateFlagsChangedFieldCallback
    -> IO (GClosure C_WidgetClassStateFlagsChangedFieldCallback)
    forall (m :: * -> *) a. MonadIO m => FunPtr a -> m (GClosure a)
    B.GClosure.newGClosure

    -- | Wrap a `WidgetClassMoveFocusFieldCallback` into a `C_WidgetClassMoveFocusFieldCallback`.
    wrap_WidgetClassMoveFocusFieldCallback ::
        Maybe (Ptr (FunPtr C_WidgetClassMoveFocusFieldCallback)) ->
        WidgetClassMoveFocusFieldCallback ->
        C_WidgetClassMoveFocusFieldCallback
    wrap_WidgetClassMoveFocusFieldCallback :: Maybe (Ptr (FunPtr C_WidgetClassStateFlagsChangedFieldCallback))
    -> WidgetClassMoveFocusFieldCallback
    -> C_WidgetClassStateFlagsChangedFieldCallback
    wrap_WidgetClassMoveFocusFieldCallback Maybe (Ptr (FunPtr C_WidgetClassStateFlagsChangedFieldCallback))
    gi'funptrptr WidgetClassMoveFocusFieldCallback
    gi'cb Ptr Widget
    widget CUInt
    direction = do
        widget' <- ((ManagedPtr Widget -> Widget) -> Ptr Widget -> IO Widget
    forall a b.
    (HasCallStack, GObject a, GObject b) =>
    (ManagedPtr a -> a) -> Ptr b -> IO a
    newObject ManagedPtr Widget -> Widget
    Gtk.Widget.Widget) Ptr Widget
    widget
        let direction' = (Int -> DirectionType
    forall a. Enum a => Int -> a
    toEnum (Int -> DirectionType) -> (CUInt -> Int) -> CUInt -> DirectionType
    forall b c a. (b -> c) -> (a -> b) -> a -> c
    . CUInt -> Int
    forall a b. (Integral a, Num b) => a -> b
    fromIntegral) CUInt
    direction
        gi'cb  widget' direction'
        maybeReleaseFunPtr gi'funptrptr

    -- callback WidgetClassMotionNotifyEventFieldCallback
    {- Callable
      { returnType = Just (TBasicType TBoolean)
      , returnMayBeNull = False
      , returnTransfer = TransferNothing
      , returnDocumentation =
          Documentation { rawDocText = Nothing , sinceVersion = Nothing }
      , args =
          [ Arg
              { argCName = "widget"
              , argType = TInterface Name { namespace = "Gtk" , name = "Widget" }
              , argCType = Just "GtkWidget*"
              , direction = DirectionIn
              , mayBeNull = False
              , argDoc =
                  Documentation { rawDocText = Nothing , sinceVersion = Nothing }
              , argScope = ScopeTypeInvalid
              , argClosure = -1
              , argDestroy = -1
              , argCallerAllocates = False
              , argCallbackUserData = False
              , transfer = TransferNothing
              }
          , Arg
              { argCName = "event"
              , argType =
                  TInterface Name { namespace = "Gdk" , name = "EventMotion" }
              , argCType = Just "GdkEventMotion*"
              , direction = DirectionIn
              , mayBeNull = False
              , argDoc =
                  Documentation { rawDocText = Nothing , sinceVersion = Nothing }
              , argScope = ScopeTypeInvalid
              , argClosure = -1
              , argDestroy = -1
              , argCallerAllocates = False
              , argCallbackUserData = False
              , transfer = TransferNothing
              }
          ]
      , skipReturn = False
      , callableThrows = False
      , callableDeprecated = Nothing
      , callableDocumentation =
          Documentation { rawDocText = Nothing , sinceVersion = Nothing }
      , callableResolvable = Nothing
      }
    -}
    -- | Type for the callback on the (unwrapped) C side.
    type C_WidgetClassMotionNotifyEventFieldCallback =
        Ptr Gtk.Widget.Widget ->
        Ptr Gdk.EventMotion.EventMotion ->
        IO CInt

    -- Args: [ Arg
    --           { argCName = "widget"
    --           , argType = TInterface Name { namespace = "Gtk" , name = "Widget" }
    --           , argCType = Just "GtkWidget*"
    --           , direction = DirectionIn
    --           , mayBeNull = False
    --           , argDoc =
    --               Documentation { rawDocText = Nothing , sinceVersion = Nothing }
    --           , argScope = ScopeTypeInvalid
    --           , argClosure = -1
    --           , argDestroy = -1
    --           , argCallerAllocates = False
    --           , argCallbackUserData = False
    --           , transfer = TransferNothing
    --           }
    --       , Arg
    --           { argCName = "event"
    --           , argType =
    --               TInterface Name { namespace = "Gdk" , name = "EventMotion" }
    --           , argCType = Just "GdkEventMotion*"
    --           , direction = DirectionIn
    --           , mayBeNull = False
    --           , argDoc =
    --               Documentation { rawDocText = Nothing , sinceVersion = Nothing }
    --           , argScope = ScopeTypeInvalid
    --           , argClosure = -1
    --           , argDestroy = -1
    --           , argCallerAllocates = False
    --           , argCallbackUserData = False
    --           , transfer = TransferNothing
    --           }
    --       ]
    -- Lengths: []
    -- returnType: Just (TBasicType TBoolean)
    -- throws : False
    -- Skip return : False

    foreign import ccall "dynamic" __dynamic_C_WidgetClassMotionNotifyEventFieldCallback :: FunPtr C_WidgetClassMotionNotifyEventFieldCallback -> C_WidgetClassMotionNotifyEventFieldCallback

    -- | Given a pointer to a foreign C function, wrap it into a function callable from Haskell.
    dynamic_WidgetClassMotionNotifyEventFieldCallback ::
        (B.CallStack.HasCallStack, MonadIO m, Gtk.Widget.IsWidget a) =>
        FunPtr C_WidgetClassMotionNotifyEventFieldCallback
        -> a
        -> Gdk.EventMotion.EventMotion
        -> m Bool
    dynamic_WidgetClassMotionNotifyEventFieldCallback :: forall (m :: * -> *) a.
    (HasCallStack, MonadIO m, IsWidget a) =>
    FunPtr C_WidgetClassMotionNotifyEventFieldCallback
    -> a -> EventMotion -> m Bool
    dynamic_WidgetClassMotionNotifyEventFieldCallback FunPtr C_WidgetClassMotionNotifyEventFieldCallback
    __funPtr a
    widget EventMotion
    event = IO Bool -> m Bool
    forall a. IO a -> m a
    forall (m :: * -> *) a. MonadIO m => IO a -> m a
    liftIO (IO Bool -> m Bool) -> IO Bool -> m Bool
    forall a b. (a -> b) -> a -> b
    $ do
        widget' <- a -> IO (Ptr Widget)
    forall a b. (HasCallStack, ManagedPtrNewtype a) => a -> IO (Ptr b)
    unsafeManagedPtrCastPtr a
    widget
        event' <- unsafeManagedPtrGetPtr event
        result <- (__dynamic_C_WidgetClassMotionNotifyEventFieldCallback __funPtr) widget' event'
        let result' = (CInt -> CInt -> Bool
    forall a. Eq a => a -> a -> Bool
    /= CInt
    0) CInt
    result
        touchManagedPtr widget
        touchManagedPtr event
        return result'

    -- | Generate a function pointer callable from C code, from a `C_WidgetClassMotionNotifyEventFieldCallback`.
    foreign import ccall "wrapper"
        mk_WidgetClassMotionNotifyEventFieldCallback :: C_WidgetClassMotionNotifyEventFieldCallback -> IO (FunPtr C_WidgetClassMotionNotifyEventFieldCallback)

    -- | /No description available in the introspection data./
    type WidgetClassMotionNotifyEventFieldCallback =
        Gtk.Widget.Widget
        -> Gdk.EventMotion.EventMotion
        -> IO Bool

    -- | A convenience synonym for @`Nothing` :: `Maybe` `WidgetClassMotionNotifyEventFieldCallback`@.
    noWidgetClassMotionNotifyEventFieldCallback :: Maybe WidgetClassMotionNotifyEventFieldCallback
    noWidgetClassMotionNotifyEventFieldCallback :: Maybe WidgetClassMotionNotifyEventFieldCallback
    noWidgetClassMotionNotifyEventFieldCallback = Maybe WidgetClassMotionNotifyEventFieldCallback
    forall a. Maybe a
    Nothing

    -- | Wrap the callback into a `GClosure`.
    genClosure_WidgetClassMotionNotifyEventFieldCallback :: MonadIO m => WidgetClassMotionNotifyEventFieldCallback -> m (GClosure C_WidgetClassMotionNotifyEventFieldCallback)
    genClosure_WidgetClassMotionNotifyEventFieldCallback :: forall (m :: * -> *).
    MonadIO m =>
    WidgetClassMotionNotifyEventFieldCallback
    -> m (GClosure C_WidgetClassMotionNotifyEventFieldCallback)
    genClosure_WidgetClassMotionNotifyEventFieldCallback WidgetClassMotionNotifyEventFieldCallback
    cb = IO (GClosure C_WidgetClassMotionNotifyEventFieldCallback)
    -> m (GClosure C_WidgetClassMotionNotifyEventFieldCallback)
    forall a. IO a -> m a
    forall (m :: * -> *) a. MonadIO m => IO a -> m a
    liftIO (IO (GClosure C_WidgetClassMotionNotifyEventFieldCallback)
     -> m (GClosure C_WidgetClassMotionNotifyEventFieldCallback))
    -> IO (GClosure C_WidgetClassMotionNotifyEventFieldCallback)
    -> m (GClosure C_WidgetClassMotionNotifyEventFieldCallback)
    forall a b. (a -> b) -> a -> b
    $ do
        let cb' :: C_WidgetClassMotionNotifyEventFieldCallback
    cb' = Maybe (Ptr (FunPtr C_WidgetClassMotionNotifyEventFieldCallback))
    -> WidgetClassMotionNotifyEventFieldCallback
    -> C_WidgetClassMotionNotifyEventFieldCallback
    wrap_WidgetClassMotionNotifyEventFieldCallback Maybe (Ptr (FunPtr C_WidgetClassMotionNotifyEventFieldCallback))
    forall a. Maybe a
    Nothing WidgetClassMotionNotifyEventFieldCallback
    cb
        C_WidgetClassMotionNotifyEventFieldCallback
    -> IO (FunPtr C_WidgetClassMotionNotifyEventFieldCallback)
    mk_WidgetClassMotionNotifyEventFieldCallback C_WidgetClassMotionNotifyEventFieldCallback
    cb' IO (FunPtr C_WidgetClassMotionNotifyEventFieldCallback)
    -> (FunPtr C_WidgetClassMotionNotifyEventFieldCallback
        -> IO (GClosure C_WidgetClassMotionNotifyEventFieldCallback))
    -> IO (GClosure C_WidgetClassMotionNotifyEventFieldCallback)
    forall a b. IO a -> (a -> IO b) -> IO b
    forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
    >>= FunPtr C_WidgetClassMotionNotifyEventFieldCallback
    -> IO (GClosure C_WidgetClassMotionNotifyEventFieldCallback)
    forall (m :: * -> *) a. MonadIO m => FunPtr a -> m (GClosure a)
    B.GClosure.newGClosure

    -- | Wrap a `WidgetClassMotionNotifyEventFieldCallback` into a `C_WidgetClassMotionNotifyEventFieldCallback`.
    wrap_WidgetClassMotionNotifyEventFieldCallback ::
        Maybe (Ptr (FunPtr C_WidgetClassMotionNotifyEventFieldCallback)) ->
        WidgetClassMotionNotifyEventFieldCallback ->
        C_WidgetClassMotionNotifyEventFieldCallback
    wrap_WidgetClassMotionNotifyEventFieldCallback :: Maybe (Ptr (FunPtr C_WidgetClassMotionNotifyEventFieldCallback))
    -> WidgetClassMotionNotifyEventFieldCallback
    -> C_WidgetClassMotionNotifyEventFieldCallback
    wrap_WidgetClassMotionNotifyEventFieldCallback Maybe (Ptr (FunPtr C_WidgetClassMotionNotifyEventFieldCallback))
    gi'funptrptr WidgetClassMotionNotifyEventFieldCallback
    gi'cb Ptr Widget
    widget Ptr EventMotion
    event = do
        widget' <- ((ManagedPtr Widget -> Widget) -> Ptr Widget -> IO Widget
    forall a b.
    (HasCallStack, GObject a, GObject b) =>
    (ManagedPtr a -> a) -> Ptr b -> IO a
    newObject ManagedPtr Widget -> Widget
    Gtk.Widget.Widget) Ptr Widget
    widget
        event' <- (newPtr Gdk.EventMotion.EventMotion) event
        result <- gi'cb  widget' event'
        maybeReleaseFunPtr gi'funptrptr
        let result' = (Int -> CInt
    forall a b. (Integral a, Num b) => a -> b
    P.fromIntegral (Int -> CInt) -> (Bool -> Int) -> Bool -> CInt
    forall b c a. (b -> c) -> (a -> b) -> a -> c
    . Bool -> Int
    forall a. Enum a => a -> Int
    P.fromEnum) Bool
    result
        return result'

    -- callback WidgetClassMnemonicActivateFieldCallback
    {- Callable
      { returnType = Just (TBasicType TBoolean)
      , returnMayBeNull = False
      , returnTransfer = TransferNothing
      , returnDocumentation =
          Documentation
            { rawDocText = Just "%TRUE if the signal has been handled"
            , sinceVersion = Nothing
            }
      , args =
          [ Arg
              { argCName = "widget"
              , argType = TInterface Name { namespace = "Gtk" , name = "Widget" }
              , argCType = Just "GtkWidget*"
              , direction = DirectionIn
              , mayBeNull = False
              , argDoc =
                  Documentation
                    { rawDocText = Just "a #GtkWidget" , sinceVersion = Nothing }
              , argScope = ScopeTypeInvalid
              , argClosure = -1
              , argDestroy = -1
              , argCallerAllocates = False
              , argCallbackUserData = False
              , transfer = TransferNothing
              }
          , Arg
              { argCName = "group_cycling"
              , argType = TBasicType TBoolean
              , argCType = Just "gboolean"
              , direction = DirectionIn
              , mayBeNull = False
              , argDoc =
                  Documentation
                    { rawDocText =
                        Just "%TRUE if there are other widgets with the same mnemonic"
                    , sinceVersion = Nothing
                    }
              , argScope = ScopeTypeInvalid
              , argClosure = -1
              , argDestroy = -1
              , argCallerAllocates = False
              , argCallbackUserData = False
              , transfer = TransferNothing
              }
          ]
      , skipReturn = False
      , callableThrows = False
      , callableDeprecated = Nothing
      , callableDocumentation =
          Documentation { rawDocText = Nothing , sinceVersion = Nothing }
      , callableResolvable = Nothing
      }
    -}
    -- | Type for the callback on the (unwrapped) C side.
    type C_WidgetClassMnemonicActivateFieldCallback =
        Ptr Gtk.Widget.Widget ->
        CInt ->
        IO CInt

    -- Args: [ Arg
    --           { argCName = "widget"
    --           , argType = TInterface Name { namespace = "Gtk" , name = "Widget" }
    --           , argCType = Just "GtkWidget*"
    --           , direction = DirectionIn
    --           , mayBeNull = False
    --           , argDoc =
    --               Documentation
    --                 { rawDocText = Just "a #GtkWidget" , sinceVersion = Nothing }
    --           , argScope = ScopeTypeInvalid
    --           , argClosure = -1
    --           , argDestroy = -1
    --           , argCallerAllocates = False
    --           , argCallbackUserData = False
    --           , transfer = TransferNothing
    --           }
    --       , Arg
    --           { argCName = "group_cycling"
    --           , argType = TBasicType TBoolean
    --           , argCType = Just "gboolean"
    --           , direction = DirectionIn
    --           , mayBeNull = False
    --           , argDoc =
    --               Documentation
    --                 { rawDocText =
    --                     Just "%TRUE if there are other widgets with the same mnemonic"
    --                 , sinceVersion = Nothing
    --                 }
    --           , argScope = ScopeTypeInvalid
    --           , argClosure = -1
    --           , argDestroy = -1
    --           , argCallerAllocates = False
    --           , argCallbackUserData = False
    --           , transfer = TransferNothing
    --           }
    --       ]
    -- Lengths: []
    -- returnType: Just (TBasicType TBoolean)
    -- throws : False
    -- Skip return : False

    foreign import ccall "dynamic" __dynamic_C_WidgetClassMnemonicActivateFieldCallback :: FunPtr C_WidgetClassMnemonicActivateFieldCallback -> C_WidgetClassMnemonicActivateFieldCallback

    -- | Given a pointer to a foreign C function, wrap it into a function callable from Haskell.
    dynamic_WidgetClassMnemonicActivateFieldCallback ::
        (B.CallStack.HasCallStack, MonadIO m, Gtk.Widget.IsWidget a) =>
        FunPtr C_WidgetClassMnemonicActivateFieldCallback
        -> a
        -- ^ /@widget@/: a t'GI.Gtk.Objects.Widget.Widget'
        -> Bool
        -- ^ /@groupCycling@/: 'P.True' if there are other widgets with the same mnemonic
        -> m Bool
        -- ^ __Returns:__ 'P.True' if the signal has been handled
    dynamic_WidgetClassMnemonicActivateFieldCallback :: forall (m :: * -> *) a.
    (HasCallStack, MonadIO m, IsWidget a) =>
    FunPtr C_WidgetClassMnemonicActivateFieldCallback
    -> a -> Bool -> m Bool
    dynamic_WidgetClassMnemonicActivateFieldCallback FunPtr C_WidgetClassMnemonicActivateFieldCallback
    __funPtr a
    widget Bool
    groupCycling = IO Bool -> m Bool
    forall a. IO a -> m a
    forall (m :: * -> *) a. MonadIO m => IO a -> m a
    liftIO (IO Bool -> m Bool) -> IO Bool -> m Bool
    forall a b. (a -> b) -> a -> b
    $ do
        widget' <- a -> IO (Ptr Widget)
    forall a b. (HasCallStack, ManagedPtrNewtype a) => a -> IO (Ptr b)
    unsafeManagedPtrCastPtr a
    widget
        let groupCycling' = (Int -> CInt
    forall a b. (Integral a, Num b) => a -> b
    P.fromIntegral (Int -> CInt) -> (Bool -> Int) -> Bool -> CInt
    forall b c a. (b -> c) -> (a -> b) -> a -> c
    . Bool -> Int
    forall a. Enum a => a -> Int
    P.fromEnum) Bool
    groupCycling
        result <- (__dynamic_C_WidgetClassMnemonicActivateFieldCallback __funPtr) widget' groupCycling'
        let result' = (CInt -> CInt -> Bool
    forall a. Eq a => a -> a -> Bool
    /= CInt
    0) CInt
    result
        touchManagedPtr widget
        return result'

    -- | Generate a function pointer callable from C code, from a `C_WidgetClassMnemonicActivateFieldCallback`.
    foreign import ccall "wrapper"
        mk_WidgetClassMnemonicActivateFieldCallback :: C_WidgetClassMnemonicActivateFieldCallback -> IO (FunPtr C_WidgetClassMnemonicActivateFieldCallback)

    -- | /No description available in the introspection data./
    type WidgetClassMnemonicActivateFieldCallback =
        Gtk.Widget.Widget
        -- ^ /@widget@/: a t'GI.Gtk.Objects.Widget.Widget'
        -> Bool
        -- ^ /@groupCycling@/: 'P.True' if there are other widgets with the same mnemonic
        -> IO Bool
        -- ^ __Returns:__ 'P.True' if the signal has been handled

    -- | A convenience synonym for @`Nothing` :: `Maybe` `WidgetClassMnemonicActivateFieldCallback`@.
    noWidgetClassMnemonicActivateFieldCallback :: Maybe WidgetClassMnemonicActivateFieldCallback
    noWidgetClassMnemonicActivateFieldCallback :: Maybe WidgetClassMnemonicActivateFieldCallback
    noWidgetClassMnemonicActivateFieldCallback = Maybe WidgetClassMnemonicActivateFieldCallback
    forall a. Maybe a
    Nothing

    -- | Wrap the callback into a `GClosure`.
    genClosure_WidgetClassMnemonicActivateFieldCallback :: MonadIO m => WidgetClassMnemonicActivateFieldCallback -> m (GClosure C_WidgetClassMnemonicActivateFieldCallback)
    genClosure_WidgetClassMnemonicActivateFieldCallback :: forall (m :: * -> *).
    MonadIO m =>
    WidgetClassMnemonicActivateFieldCallback
    -> m (GClosure C_WidgetClassMnemonicActivateFieldCallback)
    genClosure_WidgetClassMnemonicActivateFieldCallback WidgetClassMnemonicActivateFieldCallback
    cb = IO (GClosure C_WidgetClassMnemonicActivateFieldCallback)
    -> m (GClosure C_WidgetClassMnemonicActivateFieldCallback)
    forall a. IO a -> m a
    forall (m :: * -> *) a. MonadIO m => IO a -> m a
    liftIO (IO (GClosure C_WidgetClassMnemonicActivateFieldCallback)
     -> m (GClosure C_WidgetClassMnemonicActivateFieldCallback))
    -> IO (GClosure C_WidgetClassMnemonicActivateFieldCallback)
    -> m (GClosure C_WidgetClassMnemonicActivateFieldCallback)
    forall a b. (a -> b) -> a -> b
    $ do
        let cb' :: C_WidgetClassMnemonicActivateFieldCallback
    cb' = Maybe (Ptr (FunPtr C_WidgetClassMnemonicActivateFieldCallback))
    -> WidgetClassMnemonicActivateFieldCallback
    -> C_WidgetClassMnemonicActivateFieldCallback
    wrap_WidgetClassMnemonicActivateFieldCallback Maybe (Ptr (FunPtr C_WidgetClassMnemonicActivateFieldCallback))
    forall a. Maybe a
    Nothing WidgetClassMnemonicActivateFieldCallback
    cb
        C_WidgetClassMnemonicActivateFieldCallback
    -> IO (FunPtr C_WidgetClassMnemonicActivateFieldCallback)
    mk_WidgetClassMnemonicActivateFieldCallback C_WidgetClassMnemonicActivateFieldCallback
    cb' IO (FunPtr C_WidgetClassMnemonicActivateFieldCallback)
    -> (FunPtr C_WidgetClassMnemonicActivateFieldCallback
        -> IO (GClosure C_WidgetClassMnemonicActivateFieldCallback))
    -> IO (GClosure C_WidgetClassMnemonicActivateFieldCallback)
    forall a b. IO a -> (a -> IO b) -> IO b
    forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
    >>= FunPtr C_WidgetClassMnemonicActivateFieldCallback
    -> IO (GClosure C_WidgetClassMnemonicActivateFieldCallback)
    forall (m :: * -> *) a. MonadIO m => FunPtr a -> m (GClosure a)
    B.GClosure.newGClosure

    -- | Wrap a `WidgetClassMnemonicActivateFieldCallback` into a `C_WidgetClassMnemonicActivateFieldCallback`.
    wrap_WidgetClassMnemonicActivateFieldCallback ::
        Maybe (Ptr (FunPtr C_WidgetClassMnemonicActivateFieldCallback)) ->
        WidgetClassMnemonicActivateFieldCallback ->
        C_WidgetClassMnemonicActivateFieldCallback
    wrap_WidgetClassMnemonicActivateFieldCallback :: Maybe (Ptr (FunPtr C_WidgetClassMnemonicActivateFieldCallback))
    -> WidgetClassMnemonicActivateFieldCallback
    -> C_WidgetClassMnemonicActivateFieldCallback
    wrap_WidgetClassMnemonicActivateFieldCallback Maybe (Ptr (FunPtr C_WidgetClassMnemonicActivateFieldCallback))
    gi'funptrptr WidgetClassMnemonicActivateFieldCallback
    gi'cb Ptr Widget
    widget CInt
    groupCycling = do
        widget' <- ((ManagedPtr Widget -> Widget) -> Ptr Widget -> IO Widget
    forall a b.
    (HasCallStack, GObject a, GObject b) =>
    (ManagedPtr a -> a) -> Ptr b -> IO a
    newObject ManagedPtr Widget -> Widget
    Gtk.Widget.Widget) Ptr Widget
    widget
        let groupCycling' = (CInt -> CInt -> Bool
    forall a. Eq a => a -> a -> Bool
    /= CInt
    0) CInt
    groupCycling
        result <- gi'cb  widget' groupCycling'
        maybeReleaseFunPtr gi'funptrptr
        let result' = (Int -> CInt
    forall a b. (Integral a, Num b) => a -> b
    P.fromIntegral (Int -> CInt) -> (Bool -> Int) -> Bool -> CInt
    forall b c a. (b -> c) -> (a -> b) -> a -> c
    . Bool -> Int
    forall a. Enum a => a -> Int
    P.fromEnum) Bool
    result
        return result'

    -- callback WidgetClassMapFieldCallback
    {- Callable
      { returnType = Nothing
      , returnMayBeNull = False
      , returnTransfer = TransferNothing
      , returnDocumentation =
          Documentation { rawDocText = Nothing , sinceVersion = Nothing }
      , args =
          [ Arg
              { argCName = "widget"
              , argType = TInterface Name { namespace = "Gtk" , name = "Widget" }
              , argCType = Just "GtkWidget*"
              , direction = DirectionIn
              , mayBeNull = False
              , argDoc =
                  Documentation
                    { rawDocText = Just "a #GtkWidget" , sinceVersion = Nothing }
              , argScope = ScopeTypeInvalid
              , argClosure = -1
              , argDestroy = -1
              , argCallerAllocates = False
              , argCallbackUserData = False
              , transfer = TransferNothing
              }
          ]
      , skipReturn = False
      , callableThrows = False
      , callableDeprecated = Nothing
      , callableDocumentation =
          Documentation { rawDocText = Nothing , sinceVersion = Nothing }
      , callableResolvable = Nothing
      }
    -}
    -- | Type for the callback on the (unwrapped) C side.
    type C_WidgetClassMapFieldCallback =
        Ptr Gtk.Widget.Widget ->
        IO ()

    -- Args: [ Arg
    --           { argCName = "widget"
    --           , argType = TInterface Name { namespace = "Gtk" , name = "Widget" }
    --           , argCType = Just "GtkWidget*"
    --           , direction = DirectionIn
    --           , mayBeNull = False
    --           , argDoc =
    --               Documentation
    --                 { rawDocText = Just "a #GtkWidget" , sinceVersion = Nothing }
    --           , argScope = ScopeTypeInvalid
    --           , argClosure = -1
    --           , argDestroy = -1
    --           , argCallerAllocates = False
    --           , argCallbackUserData = False
    --           , transfer = TransferNothing
    --           }
    --       ]
    -- Lengths: []
    -- returnType: Nothing
    -- throws : False
    -- Skip return : False

    foreign import ccall "dynamic" __dynamic_C_WidgetClassMapFieldCallback :: FunPtr C_WidgetClassMapFieldCallback -> C_WidgetClassMapFieldCallback

    -- | Given a pointer to a foreign C function, wrap it into a function callable from Haskell.
    dynamic_WidgetClassMapFieldCallback ::
        (B.CallStack.HasCallStack, MonadIO m, Gtk.Widget.IsWidget a) =>
        FunPtr C_WidgetClassMapFieldCallback
        -> a
        -- ^ /@widget@/: a t'GI.Gtk.Objects.Widget.Widget'
        -> m ()
    dynamic_WidgetClassMapFieldCallback :: forall (m :: * -> *) a.
    (HasCallStack, MonadIO m, IsWidget a) =>
    FunPtr C_WidgetClassUnrealizeFieldCallback -> a -> m ()
    dynamic_WidgetClassMapFieldCallback FunPtr C_WidgetClassUnrealizeFieldCallback
    __funPtr a
    widget = IO () -> m ()
    forall a. IO a -> m a
    forall (m :: * -> *) a. MonadIO m => IO a -> m a
    liftIO (IO () -> m ()) -> IO () -> m ()
    forall a b. (a -> b) -> a -> b
    $ do
        widget' <- a -> IO (Ptr Widget)
    forall a b. (HasCallStack, ManagedPtrNewtype a) => a -> IO (Ptr b)
    unsafeManagedPtrCastPtr a
    widget
        (__dynamic_C_WidgetClassMapFieldCallback __funPtr) widget'
        touchManagedPtr widget
        return ()

    -- | Generate a function pointer callable from C code, from a `C_WidgetClassMapFieldCallback`.
    foreign import ccall "wrapper"
        mk_WidgetClassMapFieldCallback :: C_WidgetClassMapFieldCallback -> IO (FunPtr C_WidgetClassMapFieldCallback)

    -- | /No description available in the introspection data./
    type WidgetClassMapFieldCallback =
        Gtk.Widget.Widget
        -- ^ /@widget@/: a t'GI.Gtk.Objects.Widget.Widget'
        -> IO ()

    -- | A convenience synonym for @`Nothing` :: `Maybe` `WidgetClassMapFieldCallback`@.
    noWidgetClassMapFieldCallback :: Maybe WidgetClassMapFieldCallback
    noWidgetClassMapFieldCallback :: Maybe WidgetClassUnrealizeFieldCallback
    noWidgetClassMapFieldCallback = Maybe WidgetClassUnrealizeFieldCallback
    forall a. Maybe a
    Nothing

    -- | Wrap the callback into a `GClosure`.
    genClosure_WidgetClassMapFieldCallback :: MonadIO m => WidgetClassMapFieldCallback -> m (GClosure C_WidgetClassMapFieldCallback)
    genClosure_WidgetClassMapFieldCallback :: forall (m :: * -> *).
    MonadIO m =>
    WidgetClassUnrealizeFieldCallback
    -> m (GClosure C_WidgetClassUnrealizeFieldCallback)
    genClosure_WidgetClassMapFieldCallback WidgetClassUnrealizeFieldCallback
    cb = IO (GClosure C_WidgetClassUnrealizeFieldCallback)
    -> m (GClosure C_WidgetClassUnrealizeFieldCallback)
    forall a. IO a -> m a
    forall (m :: * -> *) a. MonadIO m => IO a -> m a
    liftIO (IO (GClosure C_WidgetClassUnrealizeFieldCallback)
     -> m (GClosure C_WidgetClassUnrealizeFieldCallback))
    -> IO (GClosure C_WidgetClassUnrealizeFieldCallback)
    -> m (GClosure C_WidgetClassUnrealizeFieldCallback)
    forall a b. (a -> b) -> a -> b
    $ do
        let cb' :: C_WidgetClassUnrealizeFieldCallback
    cb' = Maybe (Ptr (FunPtr C_WidgetClassUnrealizeFieldCallback))
    -> WidgetClassUnrealizeFieldCallback
    -> C_WidgetClassUnrealizeFieldCallback
    wrap_WidgetClassMapFieldCallback Maybe (Ptr (FunPtr C_WidgetClassUnrealizeFieldCallback))
    forall a. Maybe a
    Nothing WidgetClassUnrealizeFieldCallback
    cb
        C_WidgetClassUnrealizeFieldCallback
    -> IO (FunPtr C_WidgetClassUnrealizeFieldCallback)
    mk_WidgetClassMapFieldCallback C_WidgetClassUnrealizeFieldCallback
    cb' IO (FunPtr C_WidgetClassUnrealizeFieldCallback)
    -> (FunPtr C_WidgetClassUnrealizeFieldCallback
        -> IO (GClosure C_WidgetClassUnrealizeFieldCallback))
    -> IO (GClosure C_WidgetClassUnrealizeFieldCallback)
    forall a b. IO a -> (a -> IO b) -> IO b
    forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
    >>= FunPtr C_WidgetClassUnrealizeFieldCallback
    -> IO (GClosure C_WidgetClassUnrealizeFieldCallback)
    forall (m :: * -> *) a. MonadIO m => FunPtr a -> m (GClosure a)
    B.GClosure.newGClosure

    -- | Wrap a `WidgetClassMapFieldCallback` into a `C_WidgetClassMapFieldCallback`.
    wrap_WidgetClassMapFieldCallback ::
        Maybe (Ptr (FunPtr C_WidgetClassMapFieldCallback)) ->
        WidgetClassMapFieldCallback ->
        C_WidgetClassMapFieldCallback
    wrap_WidgetClassMapFieldCallback :: Maybe (Ptr (FunPtr C_WidgetClassUnrealizeFieldCallback))
    -> WidgetClassUnrealizeFieldCallback
    -> C_WidgetClassUnrealizeFieldCallback
    wrap_WidgetClassMapFieldCallback Maybe (Ptr (FunPtr C_WidgetClassUnrealizeFieldCallback))
    gi'funptrptr WidgetClassUnrealizeFieldCallback
    gi'cb Ptr Widget
    widget = do
        widget' <- ((ManagedPtr Widget -> Widget) -> Ptr Widget -> IO Widget
    forall a b.
    (HasCallStack, GObject a, GObject b) =>
    (ManagedPtr a -> a) -> Ptr b -> IO a
    newObject ManagedPtr Widget -> Widget
    Gtk.Widget.Widget) Ptr Widget
    widget
        gi'cb  widget'
        maybeReleaseFunPtr gi'funptrptr

    -- callback WidgetClassMapEventFieldCallback
    {- Callable
      { returnType = Just (TBasicType TBoolean)
      , returnMayBeNull = False
      , returnTransfer = TransferNothing
      , returnDocumentation =
          Documentation { rawDocText = Nothing , sinceVersion = Nothing }
      , args =
          [ Arg
              { argCName = "widget"
              , argType = TInterface Name { namespace = "Gtk" , name = "Widget" }
              , argCType = Just "GtkWidget*"
              , direction = DirectionIn
              , mayBeNull = False
              , argDoc =
                  Documentation { rawDocText = Nothing , sinceVersion = Nothing }
              , argScope = ScopeTypeInvalid
              , argClosure = -1
              , argDestroy = -1
              , argCallerAllocates = False
              , argCallbackUserData = False
              , transfer = TransferNothing
              }
          , Arg
              { argCName = "event"
              , argType =
                  TInterface Name { namespace = "Gdk" , name = "EventAny" }
              , argCType = Just "GdkEventAny*"
              , direction = DirectionIn
              , mayBeNull = False
              , argDoc =
                  Documentation { rawDocText = Nothing , sinceVersion = Nothing }
              , argScope = ScopeTypeInvalid
              , argClosure = -1
              , argDestroy = -1
              , argCallerAllocates = False
              , argCallbackUserData = False
              , transfer = TransferNothing
              }
          ]
      , skipReturn = False
      , callableThrows = False
      , callableDeprecated = Nothing
      , callableDocumentation =
          Documentation { rawDocText = Nothing , sinceVersion = Nothing }
      , callableResolvable = Nothing
      }
    -}
    -- | Type for the callback on the (unwrapped) C side.
    type C_WidgetClassMapEventFieldCallback =
        Ptr Gtk.Widget.Widget ->
        Ptr Gdk.EventAny.EventAny ->
        IO CInt

    -- Args: [ Arg
    --           { argCName = "widget"
    --           , argType = TInterface Name { namespace = "Gtk" , name = "Widget" }
    --           , argCType = Just "GtkWidget*"
    --           , direction = DirectionIn
    --           , mayBeNull = False
    --           , argDoc =
    --               Documentation { rawDocText = Nothing , sinceVersion = Nothing }
    --           , argScope = ScopeTypeInvalid
    --           , argClosure = -1
    --           , argDestroy = -1
    --           , argCallerAllocates = False
    --           , argCallbackUserData = False
    --           , transfer = TransferNothing
    --           }
    --       , Arg
    --           { argCName = "event"
    --           , argType =
    --               TInterface Name { namespace = "Gdk" , name = "EventAny" }
    --           , argCType = Just "GdkEventAny*"
    --           , direction = DirectionIn
    --           , mayBeNull = False
    --           , argDoc =
    --               Documentation { rawDocText = Nothing , sinceVersion = Nothing }
    --           , argScope = ScopeTypeInvalid
    --           , argClosure = -1
    --           , argDestroy = -1
    --           , argCallerAllocates = False
    --           , argCallbackUserData = False
    --           , transfer = TransferNothing
    --           }
    --       ]
    -- Lengths: []
    -- returnType: Just (TBasicType TBoolean)
    -- throws : False
    -- Skip return : False

    foreign import ccall "dynamic" __dynamic_C_WidgetClassMapEventFieldCallback :: FunPtr C_WidgetClassMapEventFieldCallback -> C_WidgetClassMapEventFieldCallback

    -- | Given a pointer to a foreign C function, wrap it into a function callable from Haskell.
    dynamic_WidgetClassMapEventFieldCallback ::
        (B.CallStack.HasCallStack, MonadIO m, Gtk.Widget.IsWidget a) =>
        FunPtr C_WidgetClassMapEventFieldCallback
        -> a
        -> Gdk.EventAny.EventAny
        -> m Bool
    dynamic_WidgetClassMapEventFieldCallback :: forall (m :: * -> *) a.
    (HasCallStack, MonadIO m, IsWidget a) =>
    FunPtr C_WidgetClassUnmapEventFieldCallback
    -> a -> EventAny -> m Bool
    dynamic_WidgetClassMapEventFieldCallback FunPtr C_WidgetClassUnmapEventFieldCallback
    __funPtr a
    widget EventAny
    event = IO Bool -> m Bool
    forall a. IO a -> m a
    forall (m :: * -> *) a. MonadIO m => IO a -> m a
    liftIO (IO Bool -> m Bool) -> IO Bool -> m Bool
    forall a b. (a -> b) -> a -> b
    $ do
        widget' <- a -> IO (Ptr Widget)
    forall a b. (HasCallStack, ManagedPtrNewtype a) => a -> IO (Ptr b)
    unsafeManagedPtrCastPtr a
    widget
        event' <- unsafeManagedPtrGetPtr event
        result <- (__dynamic_C_WidgetClassMapEventFieldCallback __funPtr) widget' event'
        let result' = (CInt -> CInt -> Bool
    forall a. Eq a => a -> a -> Bool
    /= CInt
    0) CInt
    result
        touchManagedPtr widget
        touchManagedPtr event
        return result'

    -- | Generate a function pointer callable from C code, from a `C_WidgetClassMapEventFieldCallback`.
    foreign import ccall "wrapper"
        mk_WidgetClassMapEventFieldCallback :: C_WidgetClassMapEventFieldCallback -> IO (FunPtr C_WidgetClassMapEventFieldCallback)

    -- | /No description available in the introspection data./
    type WidgetClassMapEventFieldCallback =
        Gtk.Widget.Widget
        -> Gdk.EventAny.EventAny
        -> IO Bool

    -- | A convenience synonym for @`Nothing` :: `Maybe` `WidgetClassMapEventFieldCallback`@.
    noWidgetClassMapEventFieldCallback :: Maybe WidgetClassMapEventFieldCallback
    noWidgetClassMapEventFieldCallback :: Maybe WidgetClassUnmapEventFieldCallback
    noWidgetClassMapEventFieldCallback = Maybe WidgetClassUnmapEventFieldCallback
    forall a. Maybe a
    Nothing

    -- | Wrap the callback into a `GClosure`.
    genClosure_WidgetClassMapEventFieldCallback :: MonadIO m => WidgetClassMapEventFieldCallback -> m (GClosure C_WidgetClassMapEventFieldCallback)
    genClosure_WidgetClassMapEventFieldCallback :: forall (m :: * -> *).
    MonadIO m =>
    WidgetClassUnmapEventFieldCallback
    -> m (GClosure C_WidgetClassUnmapEventFieldCallback)
    genClosure_WidgetClassMapEventFieldCallback WidgetClassUnmapEventFieldCallback
    cb = IO (GClosure C_WidgetClassUnmapEventFieldCallback)
    -> m (GClosure C_WidgetClassUnmapEventFieldCallback)
    forall a. IO a -> m a
    forall (m :: * -> *) a. MonadIO m => IO a -> m a
    liftIO (IO (GClosure C_WidgetClassUnmapEventFieldCallback)
     -> m (GClosure C_WidgetClassUnmapEventFieldCallback))
    -> IO (GClosure C_WidgetClassUnmapEventFieldCallback)
    -> m (GClosure C_WidgetClassUnmapEventFieldCallback)
    forall a b. (a -> b) -> a -> b
    $ do
        let cb' :: C_WidgetClassUnmapEventFieldCallback
    cb' = Maybe (Ptr (FunPtr C_WidgetClassUnmapEventFieldCallback))
    -> WidgetClassUnmapEventFieldCallback
    -> C_WidgetClassUnmapEventFieldCallback
    wrap_WidgetClassMapEventFieldCallback Maybe (Ptr (FunPtr C_WidgetClassUnmapEventFieldCallback))
    forall a. Maybe a
    Nothing WidgetClassUnmapEventFieldCallback
    cb
        C_WidgetClassUnmapEventFieldCallback
    -> IO (FunPtr C_WidgetClassUnmapEventFieldCallback)
    mk_WidgetClassMapEventFieldCallback C_WidgetClassUnmapEventFieldCallback
    cb' IO (FunPtr C_WidgetClassUnmapEventFieldCallback)
    -> (FunPtr C_WidgetClassUnmapEventFieldCallback
        -> IO (GClosure C_WidgetClassUnmapEventFieldCallback))
    -> IO (GClosure C_WidgetClassUnmapEventFieldCallback)
    forall a b. IO a -> (a -> IO b) -> IO b
    forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
    >>= FunPtr C_WidgetClassUnmapEventFieldCallback
    -> IO (GClosure C_WidgetClassUnmapEventFieldCallback)
    forall (m :: * -> *) a. MonadIO m => FunPtr a -> m (GClosure a)
    B.GClosure.newGClosure

    -- | Wrap a `WidgetClassMapEventFieldCallback` into a `C_WidgetClassMapEventFieldCallback`.
    wrap_WidgetClassMapEventFieldCallback ::
        Maybe (Ptr (FunPtr C_WidgetClassMapEventFieldCallback)) ->
        WidgetClassMapEventFieldCallback ->
        C_WidgetClassMapEventFieldCallback
    wrap_WidgetClassMapEventFieldCallback :: Maybe (Ptr (FunPtr C_WidgetClassUnmapEventFieldCallback))
    -> WidgetClassUnmapEventFieldCallback
    -> C_WidgetClassUnmapEventFieldCallback
    wrap_WidgetClassMapEventFieldCallback Maybe (Ptr (FunPtr C_WidgetClassUnmapEventFieldCallback))
    gi'funptrptr WidgetClassUnmapEventFieldCallback
    gi'cb Ptr Widget
    widget Ptr EventAny
    event = do
        widget' <- ((ManagedPtr Widget -> Widget) -> Ptr Widget -> IO Widget
    forall a b.
    (HasCallStack, GObject a, GObject b) =>
    (ManagedPtr a -> a) -> Ptr b -> IO a
    newObject ManagedPtr Widget -> Widget
    Gtk.Widget.Widget) Ptr Widget
    widget
        event' <- (newPtr Gdk.EventAny.EventAny) event
        result <- gi'cb  widget' event'
        maybeReleaseFunPtr gi'funptrptr
        let result' = (Int -> CInt
    forall a b. (Integral a, Num b) => a -> b
    P.fromIntegral (Int -> CInt) -> (Bool -> Int) -> Bool -> CInt
    forall b c a. (b -> c) -> (a -> b) -> a -> c
    . Bool -> Int
    forall a. Enum a => a -> Int
    P.fromEnum) Bool
    result
        return result'

    -- callback WidgetClassLeaveNotifyEventFieldCallback
    {- Callable
      { returnType = Just (TBasicType TBoolean)
      , returnMayBeNull = False
      , returnTransfer = TransferNothing
      , returnDocumentation =
          Documentation { rawDocText = Nothing , sinceVersion = Nothing }
      , args =
          [ Arg
              { argCName = "widget"
              , argType = TInterface Name { namespace = "Gtk" , name = "Widget" }
              , argCType = Just "GtkWidget*"
              , direction = DirectionIn
              , mayBeNull = False
              , argDoc =
                  Documentation { rawDocText = Nothing , sinceVersion = Nothing }
              , argScope = ScopeTypeInvalid
              , argClosure = -1
              , argDestroy = -1
              , argCallerAllocates = False
              , argCallbackUserData = False
              , transfer = TransferNothing
              }
          , Arg
              { argCName = "event"
              , argType =
                  TInterface Name { namespace = "Gdk" , name = "EventCrossing" }
              , argCType = Just "GdkEventCrossing*"
              , direction = DirectionIn
              , mayBeNull = False
              , argDoc =
                  Documentation { rawDocText = Nothing , sinceVersion = Nothing }
              , argScope = ScopeTypeInvalid
              , argClosure = -1
              , argDestroy = -1
              , argCallerAllocates = False
              , argCallbackUserData = False
              , transfer = TransferNothing
              }
          ]
      , skipReturn = False
      , callableThrows = False
      , callableDeprecated = Nothing
      , callableDocumentation =
          Documentation { rawDocText = Nothing , sinceVersion = Nothing }
      , callableResolvable = Nothing
      }
    -}
    -- | Type for the callback on the (unwrapped) C side.
    type C_WidgetClassLeaveNotifyEventFieldCallback =
        Ptr Gtk.Widget.Widget ->
        Ptr Gdk.EventCrossing.EventCrossing ->
        IO CInt

    -- Args: [ Arg
    --           { argCName = "widget"
    --           , argType = TInterface Name { namespace = "Gtk" , name = "Widget" }
    --           , argCType = Just "GtkWidget*"
    --           , direction = DirectionIn
    --           , mayBeNull = False
    --           , argDoc =
    --               Documentation { rawDocText = Nothing , sinceVersion = Nothing }
    --           , argScope = ScopeTypeInvalid
    --           , argClosure = -1
    --           , argDestroy = -1
    --           , argCallerAllocates = False
    --           , argCallbackUserData = False
    --           , transfer = TransferNothing
    --           }
    --       , Arg
    --           { argCName = "event"
    --           , argType =
    --               TInterface Name { namespace = "Gdk" , name = "EventCrossing" }
    --           , argCType = Just "GdkEventCrossing*"
    --           , direction = DirectionIn
    --           , mayBeNull = False
    --           , argDoc =
    --               Documentation { rawDocText = Nothing , sinceVersion = Nothing }
    --           , argScope = ScopeTypeInvalid
    --           , argClosure = -1
    --           , argDestroy = -1
    --           , argCallerAllocates = False
    --           , argCallbackUserData = False
    --           , transfer = TransferNothing
    --           }
    --       ]
    -- Lengths: []
    -- returnType: Just (TBasicType TBoolean)
    -- throws : False
    -- Skip return : False

    foreign import ccall "dynamic" __dynamic_C_WidgetClassLeaveNotifyEventFieldCallback :: FunPtr C_WidgetClassLeaveNotifyEventFieldCallback -> C_WidgetClassLeaveNotifyEventFieldCallback

    -- | Given a pointer to a foreign C function, wrap it into a function callable from Haskell.
    dynamic_WidgetClassLeaveNotifyEventFieldCallback ::
        (B.CallStack.HasCallStack, MonadIO m, Gtk.Widget.IsWidget a) =>
        FunPtr C_WidgetClassLeaveNotifyEventFieldCallback
        -> a
        -> Gdk.EventCrossing.EventCrossing
        -> m Bool
    dynamic_WidgetClassLeaveNotifyEventFieldCallback :: forall (m :: * -> *) a.
    (HasCallStack, MonadIO m, IsWidget a) =>
    FunPtr C_WidgetClassLeaveNotifyEventFieldCallback
    -> a -> EventCrossing -> m Bool
    dynamic_WidgetClassLeaveNotifyEventFieldCallback FunPtr C_WidgetClassLeaveNotifyEventFieldCallback
    __funPtr a
    widget EventCrossing
    event = IO Bool -> m Bool
    forall a. IO a -> m a
    forall (m :: * -> *) a. MonadIO m => IO a -> m a
    liftIO (IO Bool -> m Bool) -> IO Bool -> m Bool
    forall a b. (a -> b) -> a -> b
    $ do
        widget' <- a -> IO (Ptr Widget)
    forall a b. (HasCallStack, ManagedPtrNewtype a) => a -> IO (Ptr b)
    unsafeManagedPtrCastPtr a
    widget
        event' <- unsafeManagedPtrGetPtr event
        result <- (__dynamic_C_WidgetClassLeaveNotifyEventFieldCallback __funPtr) widget' event'
        let result' = (CInt -> CInt -> Bool
    forall a. Eq a => a -> a -> Bool
    /= CInt
    0) CInt
    result
        touchManagedPtr widget
        touchManagedPtr event
        return result'

    -- | Generate a function pointer callable from C code, from a `C_WidgetClassLeaveNotifyEventFieldCallback`.
    foreign import ccall "wrapper"
        mk_WidgetClassLeaveNotifyEventFieldCallback :: C_WidgetClassLeaveNotifyEventFieldCallback -> IO (FunPtr C_WidgetClassLeaveNotifyEventFieldCallback)

    -- | /No description available in the introspection data./
    type WidgetClassLeaveNotifyEventFieldCallback =
        Gtk.Widget.Widget
        -> Gdk.EventCrossing.EventCrossing
        -> IO Bool

    -- | A convenience synonym for @`Nothing` :: `Maybe` `WidgetClassLeaveNotifyEventFieldCallback`@.
    noWidgetClassLeaveNotifyEventFieldCallback :: Maybe WidgetClassLeaveNotifyEventFieldCallback
    noWidgetClassLeaveNotifyEventFieldCallback :: Maybe WidgetClassLeaveNotifyEventFieldCallback
    noWidgetClassLeaveNotifyEventFieldCallback = Maybe WidgetClassLeaveNotifyEventFieldCallback
    forall a. Maybe a
    Nothing

    -- | Wrap the callback into a `GClosure`.
    genClosure_WidgetClassLeaveNotifyEventFieldCallback :: MonadIO m => WidgetClassLeaveNotifyEventFieldCallback -> m (GClosure C_WidgetClassLeaveNotifyEventFieldCallback)
    genClosure_WidgetClassLeaveNotifyEventFieldCallback :: forall (m :: * -> *).
    MonadIO m =>
    WidgetClassLeaveNotifyEventFieldCallback
    -> m (GClosure C_WidgetClassLeaveNotifyEventFieldCallback)
    genClosure_WidgetClassLeaveNotifyEventFieldCallback WidgetClassLeaveNotifyEventFieldCallback
    cb = IO (GClosure C_WidgetClassLeaveNotifyEventFieldCallback)
    -> m (GClosure C_WidgetClassLeaveNotifyEventFieldCallback)
    forall a. IO a -> m a
    forall (m :: * -> *) a. MonadIO m => IO a -> m a
    liftIO (IO (GClosure C_WidgetClassLeaveNotifyEventFieldCallback)
     -> m (GClosure C_WidgetClassLeaveNotifyEventFieldCallback))
    -> IO (GClosure C_WidgetClassLeaveNotifyEventFieldCallback)
    -> m (GClosure C_WidgetClassLeaveNotifyEventFieldCallback)
    forall a b. (a -> b) -> a -> b
    $ do
        let cb' :: C_WidgetClassLeaveNotifyEventFieldCallback
    cb' = Maybe (Ptr (FunPtr C_WidgetClassLeaveNotifyEventFieldCallback))
    -> WidgetClassLeaveNotifyEventFieldCallback
    -> C_WidgetClassLeaveNotifyEventFieldCallback
    wrap_WidgetClassLeaveNotifyEventFieldCallback Maybe (Ptr (FunPtr C_WidgetClassLeaveNotifyEventFieldCallback))
    forall a. Maybe a
    Nothing WidgetClassLeaveNotifyEventFieldCallback
    cb
        C_WidgetClassLeaveNotifyEventFieldCallback
    -> IO (FunPtr C_WidgetClassLeaveNotifyEventFieldCallback)
    mk_WidgetClassLeaveNotifyEventFieldCallback C_WidgetClassLeaveNotifyEventFieldCallback
    cb' IO (FunPtr C_WidgetClassLeaveNotifyEventFieldCallback)
    -> (FunPtr C_WidgetClassLeaveNotifyEventFieldCallback
        -> IO (GClosure C_WidgetClassLeaveNotifyEventFieldCallback))
    -> IO (GClosure C_WidgetClassLeaveNotifyEventFieldCallback)
    forall a b. IO a -> (a -> IO b) -> IO b
    forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
    >>= FunPtr C_WidgetClassLeaveNotifyEventFieldCallback
    -> IO (GClosure C_WidgetClassLeaveNotifyEventFieldCallback)
    forall (m :: * -> *) a. MonadIO m => FunPtr a -> m (GClosure a)
    B.GClosure.newGClosure

    -- | Wrap a `WidgetClassLeaveNotifyEventFieldCallback` into a `C_WidgetClassLeaveNotifyEventFieldCallback`.
    wrap_WidgetClassLeaveNotifyEventFieldCallback ::
        Maybe (Ptr (FunPtr C_WidgetClassLeaveNotifyEventFieldCallback)) ->
        WidgetClassLeaveNotifyEventFieldCallback ->
        C_WidgetClassLeaveNotifyEventFieldCallback
    wrap_WidgetClassLeaveNotifyEventFieldCallback :: Maybe (Ptr (FunPtr C_WidgetClassLeaveNotifyEventFieldCallback))
    -> WidgetClassLeaveNotifyEventFieldCallback
    -> C_WidgetClassLeaveNotifyEventFieldCallback
    wrap_WidgetClassLeaveNotifyEventFieldCallback Maybe (Ptr (FunPtr C_WidgetClassLeaveNotifyEventFieldCallback))
    gi'funptrptr WidgetClassLeaveNotifyEventFieldCallback
    gi'cb Ptr Widget
    widget Ptr EventCrossing
    event = do
        widget' <- ((ManagedPtr Widget -> Widget) -> Ptr Widget -> IO Widget
    forall a b.
    (HasCallStack, GObject a, GObject b) =>
    (ManagedPtr a -> a) -> Ptr b -> IO a
    newObject ManagedPtr Widget -> Widget
    Gtk.Widget.Widget) Ptr Widget
    widget
        event' <- (newPtr Gdk.EventCrossing.EventCrossing) event
        result <- gi'cb  widget' event'
        maybeReleaseFunPtr gi'funptrptr
        let result' = (Int -> CInt
    forall a b. (Integral a, Num b) => a -> b
    P.fromIntegral (Int -> CInt) -> (Bool -> Int) -> Bool -> CInt
    forall b c a. (b -> c) -> (a -> b) -> a -> c
    . Bool -> Int
    forall a. Enum a => a -> Int
    P.fromEnum) Bool
    result
        return result'

    -- callback WidgetClassKeynavFailedFieldCallback
    {- Callable
      { returnType = Just (TBasicType TBoolean)
      , returnMayBeNull = False
      , returnTransfer = TransferNothing
      , returnDocumentation =
          Documentation
            { rawDocText =
                Just
                  "%TRUE if stopping keyboard navigation is fine, %FALSE\n              if the emitting widget should try to handle the keyboard\n              navigation attempt in its parent container(s)."
            , sinceVersion = Nothing
            }
      , args =
          [ Arg
              { argCName = "widget"
              , argType = TInterface Name { namespace = "Gtk" , name = "Widget" }
              , argCType = Just "GtkWidget*"
              , direction = DirectionIn
              , mayBeNull = False
              , argDoc =
                  Documentation
                    { rawDocText = Just "a #GtkWidget" , sinceVersion = Nothing }
              , argScope = ScopeTypeInvalid
              , argClosure = -1
              , argDestroy = -1
              , argCallerAllocates = False
              , argCallbackUserData = False
              , transfer = TransferNothing
              }
          , Arg
              { argCName = "direction"
              , argType =
                  TInterface Name { namespace = "Gtk" , name = "DirectionType" }
              , argCType = Just "GtkDirectionType"
              , direction = DirectionIn
              , mayBeNull = False
              , argDoc =
                  Documentation
                    { rawDocText = Just "direction of focus movement"
                    , sinceVersion = Nothing
                    }
              , argScope = ScopeTypeInvalid
              , argClosure = -1
              , argDestroy = -1
              , argCallerAllocates = False
              , argCallbackUserData = False
              , transfer = TransferNothing
              }
          ]
      , skipReturn = False
      , callableThrows = False
      , callableDeprecated = Nothing
      , callableDocumentation =
          Documentation { rawDocText = Nothing , sinceVersion = Nothing }
      , callableResolvable = Nothing
      }
    -}
    -- | Type for the callback on the (unwrapped) C side.
    type C_WidgetClassKeynavFailedFieldCallback =
        Ptr Gtk.Widget.Widget ->
        CUInt ->
        IO CInt

    -- Args: [ Arg
    --           { argCName = "widget"
    --           , argType = TInterface Name { namespace = "Gtk" , name = "Widget" }
    --           , argCType = Just "GtkWidget*"
    --           , direction = DirectionIn
    --           , mayBeNull = False
    --           , argDoc =
    --               Documentation
    --                 { rawDocText = Just "a #GtkWidget" , sinceVersion = Nothing }
    --           , argScope = ScopeTypeInvalid
    --           , argClosure = -1
    --           , argDestroy = -1
    --           , argCallerAllocates = False
    --           , argCallbackUserData = False
    --           , transfer = TransferNothing
    --           }
    --       , Arg
    --           { argCName = "direction"
    --           , argType =
    --               TInterface Name { namespace = "Gtk" , name = "DirectionType" }
    --           , argCType = Just "GtkDirectionType"
    --           , direction = DirectionIn
    --           , mayBeNull = False
    --           , argDoc =
    --               Documentation
    --                 { rawDocText = Just "direction of focus movement"
    --                 , sinceVersion = Nothing
    --                 }
    --           , argScope = ScopeTypeInvalid
    --           , argClosure = -1
    --           , argDestroy = -1
    --           , argCallerAllocates = False
    --           , argCallbackUserData = False
    --           , transfer = TransferNothing
    --           }
    --       ]
    -- Lengths: []
    -- returnType: Just (TBasicType TBoolean)
    -- throws : False
    -- Skip return : False

    foreign import ccall "dynamic" __dynamic_C_WidgetClassKeynavFailedFieldCallback :: FunPtr C_WidgetClassKeynavFailedFieldCallback -> C_WidgetClassKeynavFailedFieldCallback

    -- | Given a pointer to a foreign C function, wrap it into a function callable from Haskell.
    dynamic_WidgetClassKeynavFailedFieldCallback ::
        (B.CallStack.HasCallStack, MonadIO m, Gtk.Widget.IsWidget a) =>
        FunPtr C_WidgetClassKeynavFailedFieldCallback
        -> a
        -- ^ /@widget@/: a t'GI.Gtk.Objects.Widget.Widget'
        -> Gtk.Enums.DirectionType
        -- ^ /@direction@/: direction of focus movement
        -> m Bool
        -- ^ __Returns:__ 'P.True' if stopping keyboard navigation is fine, 'P.False'
        --               if the emitting widget should try to handle the keyboard
        --               navigation attempt in its parent container(s).
    dynamic_WidgetClassKeynavFailedFieldCallback :: forall (m :: * -> *) a.
    (HasCallStack, MonadIO m, IsWidget a) =>
    FunPtr C_WidgetClassShowHelpFieldCallback
    -> a -> DirectionType -> m Bool
    dynamic_WidgetClassKeynavFailedFieldCallback FunPtr C_WidgetClassShowHelpFieldCallback
    __funPtr a
    widget DirectionType
    direction = IO Bool -> m Bool
    forall a. IO a -> m a
    forall (m :: * -> *) a. MonadIO m => IO a -> m a
    liftIO (IO Bool -> m Bool) -> IO Bool -> m Bool
    forall a b. (a -> b) -> a -> b
    $ do
        widget' <- a -> IO (Ptr Widget)
    forall a b. (HasCallStack, ManagedPtrNewtype a) => a -> IO (Ptr b)
    unsafeManagedPtrCastPtr a
    widget
        let direction' = (Int -> CUInt
    forall a b. (Integral a, Num b) => a -> b
    fromIntegral (Int -> CUInt) -> (DirectionType -> Int) -> DirectionType -> CUInt
    forall b c a. (b -> c) -> (a -> b) -> a -> c
    . DirectionType -> Int
    forall a. Enum a => a -> Int
    fromEnum) DirectionType
    direction
        result <- (__dynamic_C_WidgetClassKeynavFailedFieldCallback __funPtr) widget' direction'
        let result' = (CInt -> CInt -> Bool
    forall a. Eq a => a -> a -> Bool
    /= CInt
    0) CInt
    result
        touchManagedPtr widget
        return result'

    -- | Generate a function pointer callable from C code, from a `C_WidgetClassKeynavFailedFieldCallback`.
    foreign import ccall "wrapper"
        mk_WidgetClassKeynavFailedFieldCallback :: C_WidgetClassKeynavFailedFieldCallback -> IO (FunPtr C_WidgetClassKeynavFailedFieldCallback)

    -- | /No description available in the introspection data./
    type WidgetClassKeynavFailedFieldCallback =
        Gtk.Widget.Widget
        -- ^ /@widget@/: a t'GI.Gtk.Objects.Widget.Widget'
        -> Gtk.Enums.DirectionType
        -- ^ /@direction@/: direction of focus movement
        -> IO Bool
        -- ^ __Returns:__ 'P.True' if stopping keyboard navigation is fine, 'P.False'
        --               if the emitting widget should try to handle the keyboard
        --               navigation attempt in its parent container(s).

    -- | A convenience synonym for @`Nothing` :: `Maybe` `WidgetClassKeynavFailedFieldCallback`@.
    noWidgetClassKeynavFailedFieldCallback :: Maybe WidgetClassKeynavFailedFieldCallback
    noWidgetClassKeynavFailedFieldCallback :: Maybe WidgetClassKeynavFailedFieldCallback
    noWidgetClassKeynavFailedFieldCallback = Maybe WidgetClassKeynavFailedFieldCallback
    forall a. Maybe a
    Nothing

    -- | Wrap the callback into a `GClosure`.
    genClosure_WidgetClassKeynavFailedFieldCallback :: MonadIO m => WidgetClassKeynavFailedFieldCallback -> m (GClosure C_WidgetClassKeynavFailedFieldCallback)
    genClosure_WidgetClassKeynavFailedFieldCallback :: forall (m :: * -> *).
    MonadIO m =>
    WidgetClassKeynavFailedFieldCallback
    -> m (GClosure C_WidgetClassShowHelpFieldCallback)
    genClosure_WidgetClassKeynavFailedFieldCallback WidgetClassKeynavFailedFieldCallback
    cb = IO (GClosure C_WidgetClassShowHelpFieldCallback)
    -> m (GClosure C_WidgetClassShowHelpFieldCallback)
    forall a. IO a -> m a
    forall (m :: * -> *) a. MonadIO m => IO a -> m a
    liftIO (IO (GClosure C_WidgetClassShowHelpFieldCallback)
     -> m (GClosure C_WidgetClassShowHelpFieldCallback))
    -> IO (GClosure C_WidgetClassShowHelpFieldCallback)
    -> m (GClosure C_WidgetClassShowHelpFieldCallback)
    forall a b. (a -> b) -> a -> b
    $ do
        let cb' :: C_WidgetClassShowHelpFieldCallback
    cb' = Maybe (Ptr (FunPtr C_WidgetClassShowHelpFieldCallback))
    -> WidgetClassKeynavFailedFieldCallback
    -> C_WidgetClassShowHelpFieldCallback
    wrap_WidgetClassKeynavFailedFieldCallback Maybe (Ptr (FunPtr C_WidgetClassShowHelpFieldCallback))
    forall a. Maybe a
    Nothing WidgetClassKeynavFailedFieldCallback
    cb
        C_WidgetClassShowHelpFieldCallback
    -> IO (FunPtr C_WidgetClassShowHelpFieldCallback)
    mk_WidgetClassKeynavFailedFieldCallback C_WidgetClassShowHelpFieldCallback
    cb' IO (FunPtr C_WidgetClassShowHelpFieldCallback)
    -> (FunPtr C_WidgetClassShowHelpFieldCallback
        -> IO (GClosure C_WidgetClassShowHelpFieldCallback))
    -> IO (GClosure C_WidgetClassShowHelpFieldCallback)
    forall a b. IO a -> (a -> IO b) -> IO b
    forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
    >>= FunPtr C_WidgetClassShowHelpFieldCallback
    -> IO (GClosure C_WidgetClassShowHelpFieldCallback)
    forall (m :: * -> *) a. MonadIO m => FunPtr a -> m (GClosure a)
    B.GClosure.newGClosure

    -- | Wrap a `WidgetClassKeynavFailedFieldCallback` into a `C_WidgetClassKeynavFailedFieldCallback`.
    wrap_WidgetClassKeynavFailedFieldCallback ::
        Maybe (Ptr (FunPtr C_WidgetClassKeynavFailedFieldCallback)) ->
        WidgetClassKeynavFailedFieldCallback ->
        C_WidgetClassKeynavFailedFieldCallback
    wrap_WidgetClassKeynavFailedFieldCallback :: Maybe (Ptr (FunPtr C_WidgetClassShowHelpFieldCallback))
    -> WidgetClassKeynavFailedFieldCallback
    -> C_WidgetClassShowHelpFieldCallback
    wrap_WidgetClassKeynavFailedFieldCallback Maybe (Ptr (FunPtr C_WidgetClassShowHelpFieldCallback))
    gi'funptrptr WidgetClassKeynavFailedFieldCallback
    gi'cb Ptr Widget
    widget CUInt
    direction = do
        widget' <- ((ManagedPtr Widget -> Widget) -> Ptr Widget -> IO Widget
    forall a b.
    (HasCallStack, GObject a, GObject b) =>
    (ManagedPtr a -> a) -> Ptr b -> IO a
    newObject ManagedPtr Widget -> Widget
    Gtk.Widget.Widget) Ptr Widget
    widget
        let direction' = (Int -> DirectionType
    forall a. Enum a => Int -> a
    toEnum (Int -> DirectionType) -> (CUInt -> Int) -> CUInt -> DirectionType
    forall b c a. (b -> c) -> (a -> b) -> a -> c
    . CUInt -> Int
    forall a b. (Integral a, Num b) => a -> b
    fromIntegral) CUInt
    direction
        result <- gi'cb  widget' direction'
        maybeReleaseFunPtr gi'funptrptr
        let result' = (Int -> CInt
    forall a b. (Integral a, Num b) => a -> b
    P.fromIntegral (Int -> CInt) -> (Bool -> Int) -> Bool -> CInt
    forall b c a. (b -> c) -> (a -> b) -> a -> c
    . Bool -> Int
    forall a. Enum a => a -> Int
    P.fromEnum) Bool
    result
        return result'

    -- callback WidgetClassKeyReleaseEventFieldCallback
    {- Callable
      { returnType = Just (TBasicType TBoolean)
      , returnMayBeNull = False
      , returnTransfer = TransferNothing
      , returnDocumentation =
          Documentation { rawDocText = Nothing , sinceVersion = Nothing }
      , args =
          [ Arg
              { argCName = "widget"
              , argType = TInterface Name { namespace = "Gtk" , name = "Widget" }
              , argCType = Just "GtkWidget*"
              , direction = DirectionIn
              , mayBeNull = False
              , argDoc =
                  Documentation { rawDocText = Nothing , sinceVersion = Nothing }
              , argScope = ScopeTypeInvalid
              , argClosure = -1
              , argDestroy = -1
              , argCallerAllocates = False
              , argCallbackUserData = False
              , transfer = TransferNothing
              }
          , Arg
              { argCName = "event"
              , argType =
                  TInterface Name { namespace = "Gdk" , name = "EventKey" }
              , argCType = Just "GdkEventKey*"
              , direction = DirectionIn
              , mayBeNull = False
              , argDoc =
                  Documentation { rawDocText = Nothing , sinceVersion = Nothing }
              , argScope = ScopeTypeInvalid
              , argClosure = -1
              , argDestroy = -1
              , argCallerAllocates = False
              , argCallbackUserData = False
              , transfer = TransferNothing
              }
          ]
      , skipReturn = False
      , callableThrows = False
      , callableDeprecated = Nothing
      , callableDocumentation =
          Documentation { rawDocText = Nothing , sinceVersion = Nothing }
      , callableResolvable = Nothing
      }
    -}
    -- | Type for the callback on the (unwrapped) C side.
    type C_WidgetClassKeyReleaseEventFieldCallback =
        Ptr Gtk.Widget.Widget ->
        Ptr Gdk.EventKey.EventKey ->
        IO CInt

    -- Args: [ Arg
    --           { argCName = "widget"
    --           , argType = TInterface Name { namespace = "Gtk" , name = "Widget" }
    --           , argCType = Just "GtkWidget*"
    --           , direction = DirectionIn
    --           , mayBeNull = False
    --           , argDoc =
    --               Documentation { rawDocText = Nothing , sinceVersion = Nothing }
    --           , argScope = ScopeTypeInvalid
    --           , argClosure = -1
    --           , argDestroy = -1
    --           , argCallerAllocates = False
    --           , argCallbackUserData = False
    --           , transfer = TransferNothing
    --           }
    --       , Arg
    --           { argCName = "event"
    --           , argType =
    --               TInterface Name { namespace = "Gdk" , name = "EventKey" }
    --           , argCType = Just "GdkEventKey*"
    --           , direction = DirectionIn
    --           , mayBeNull = False
    --           , argDoc =
    --               Documentation { rawDocText = Nothing , sinceVersion = Nothing }
    --           , argScope = ScopeTypeInvalid
    --           , argClosure = -1
    --           , argDestroy = -1
    --           , argCallerAllocates = False
    --           , argCallbackUserData = False
    --           , transfer = TransferNothing
    --           }
    --       ]
    -- Lengths: []
    -- returnType: Just (TBasicType TBoolean)
    -- throws : False
    -- Skip return : False

    foreign import ccall "dynamic" __dynamic_C_WidgetClassKeyReleaseEventFieldCallback :: FunPtr C_WidgetClassKeyReleaseEventFieldCallback -> C_WidgetClassKeyReleaseEventFieldCallback

    -- | Given a pointer to a foreign C function, wrap it into a function callable from Haskell.
    dynamic_WidgetClassKeyReleaseEventFieldCallback ::
        (B.CallStack.HasCallStack, MonadIO m, Gtk.Widget.IsWidget a) =>
        FunPtr C_WidgetClassKeyReleaseEventFieldCallback
        -> a
        -> Gdk.EventKey.EventKey
        -> m Bool
    dynamic_WidgetClassKeyReleaseEventFieldCallback :: forall (m :: * -> *) a.
    (HasCallStack, MonadIO m, IsWidget a) =>
    FunPtr C_WidgetClassKeyReleaseEventFieldCallback
    -> a -> EventKey -> m Bool
    dynamic_WidgetClassKeyReleaseEventFieldCallback FunPtr C_WidgetClassKeyReleaseEventFieldCallback
    __funPtr a
    widget EventKey
    event = IO Bool -> m Bool
    forall a. IO a -> m a
    forall (m :: * -> *) a. MonadIO m => IO a -> m a
    liftIO (IO Bool -> m Bool) -> IO Bool -> m Bool
    forall a b. (a -> b) -> a -> b
    $ do
        widget' <- a -> IO (Ptr Widget)
    forall a b. (HasCallStack, ManagedPtrNewtype a) => a -> IO (Ptr b)
    unsafeManagedPtrCastPtr a
    widget
        event' <- unsafeManagedPtrGetPtr event
        result <- (__dynamic_C_WidgetClassKeyReleaseEventFieldCallback __funPtr) widget' event'
        let result' = (CInt -> CInt -> Bool
    forall a. Eq a => a -> a -> Bool
    /= CInt
    0) CInt
    result
        touchManagedPtr widget
        touchManagedPtr event
        return result'

    -- | Generate a function pointer callable from C code, from a `C_WidgetClassKeyReleaseEventFieldCallback`.
    foreign import ccall "wrapper"
        mk_WidgetClassKeyReleaseEventFieldCallback :: C_WidgetClassKeyReleaseEventFieldCallback -> IO (FunPtr C_WidgetClassKeyReleaseEventFieldCallback)

    -- | /No description available in the introspection data./
    type WidgetClassKeyReleaseEventFieldCallback =
        Gtk.Widget.Widget
        -> Gdk.EventKey.EventKey
        -> IO Bool

    -- | A convenience synonym for @`Nothing` :: `Maybe` `WidgetClassKeyReleaseEventFieldCallback`@.
    noWidgetClassKeyReleaseEventFieldCallback :: Maybe WidgetClassKeyReleaseEventFieldCallback
    noWidgetClassKeyReleaseEventFieldCallback :: Maybe WidgetClassKeyReleaseEventFieldCallback
    noWidgetClassKeyReleaseEventFieldCallback = Maybe WidgetClassKeyReleaseEventFieldCallback
    forall a. Maybe a
    Nothing

    -- | Wrap the callback into a `GClosure`.
    genClosure_WidgetClassKeyReleaseEventFieldCallback :: MonadIO m => WidgetClassKeyReleaseEventFieldCallback -> m (GClosure C_WidgetClassKeyReleaseEventFieldCallback)
    genClosure_WidgetClassKeyReleaseEventFieldCallback :: forall (m :: * -> *).
    MonadIO m =>
    WidgetClassKeyReleaseEventFieldCallback
    -> m (GClosure C_WidgetClassKeyReleaseEventFieldCallback)
    genClosure_WidgetClassKeyReleaseEventFieldCallback WidgetClassKeyReleaseEventFieldCallback
    cb = IO (GClosure C_WidgetClassKeyReleaseEventFieldCallback)
    -> m (GClosure C_WidgetClassKeyReleaseEventFieldCallback)
    forall a. IO a -> m a
    forall (m :: * -> *) a. MonadIO m => IO a -> m a
    liftIO (IO (GClosure C_WidgetClassKeyReleaseEventFieldCallback)
     -> m (GClosure C_WidgetClassKeyReleaseEventFieldCallback))
    -> IO (GClosure C_WidgetClassKeyReleaseEventFieldCallback)
    -> m (GClosure C_WidgetClassKeyReleaseEventFieldCallback)
    forall a b. (a -> b) -> a -> b
    $ do
        let cb' :: C_WidgetClassKeyReleaseEventFieldCallback
    cb' = Maybe (Ptr (FunPtr C_WidgetClassKeyReleaseEventFieldCallback))
    -> WidgetClassKeyReleaseEventFieldCallback
    -> C_WidgetClassKeyReleaseEventFieldCallback
    wrap_WidgetClassKeyReleaseEventFieldCallback Maybe (Ptr (FunPtr C_WidgetClassKeyReleaseEventFieldCallback))
    forall a. Maybe a
    Nothing WidgetClassKeyReleaseEventFieldCallback
    cb
        C_WidgetClassKeyReleaseEventFieldCallback
    -> IO (FunPtr C_WidgetClassKeyReleaseEventFieldCallback)
    mk_WidgetClassKeyReleaseEventFieldCallback C_WidgetClassKeyReleaseEventFieldCallback
    cb' IO (FunPtr C_WidgetClassKeyReleaseEventFieldCallback)
    -> (FunPtr C_WidgetClassKeyReleaseEventFieldCallback
        -> IO (GClosure C_WidgetClassKeyReleaseEventFieldCallback))
    -> IO (GClosure C_WidgetClassKeyReleaseEventFieldCallback)
    forall a b. IO a -> (a -> IO b) -> IO b
    forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
    >>= FunPtr C_WidgetClassKeyReleaseEventFieldCallback
    -> IO (GClosure C_WidgetClassKeyReleaseEventFieldCallback)
    forall (m :: * -> *) a. MonadIO m => FunPtr a -> m (GClosure a)
    B.GClosure.newGClosure

    -- | Wrap a `WidgetClassKeyReleaseEventFieldCallback` into a `C_WidgetClassKeyReleaseEventFieldCallback`.
    wrap_WidgetClassKeyReleaseEventFieldCallback ::
        Maybe (Ptr (FunPtr C_WidgetClassKeyReleaseEventFieldCallback)) ->
        WidgetClassKeyReleaseEventFieldCallback ->
        C_WidgetClassKeyReleaseEventFieldCallback
    wrap_WidgetClassKeyReleaseEventFieldCallback :: Maybe (Ptr (FunPtr C_WidgetClassKeyReleaseEventFieldCallback))
    -> WidgetClassKeyReleaseEventFieldCallback
    -> C_WidgetClassKeyReleaseEventFieldCallback
    wrap_WidgetClassKeyReleaseEventFieldCallback Maybe (Ptr (FunPtr C_WidgetClassKeyReleaseEventFieldCallback))
    gi'funptrptr WidgetClassKeyReleaseEventFieldCallback
    gi'cb Ptr Widget
    widget Ptr EventKey
    event = do
        widget' <- ((ManagedPtr Widget -> Widget) -> Ptr Widget -> IO Widget
    forall a b.
    (HasCallStack, GObject a, GObject b) =>
    (ManagedPtr a -> a) -> Ptr b -> IO a
    newObject ManagedPtr Widget -> Widget
    Gtk.Widget.Widget) Ptr Widget
    widget
        event' <- (newPtr Gdk.EventKey.EventKey) event
        result <- gi'cb  widget' event'
        maybeReleaseFunPtr gi'funptrptr
        let result' = (Int -> CInt
    forall a b. (Integral a, Num b) => a -> b
    P.fromIntegral (Int -> CInt) -> (Bool -> Int) -> Bool -> CInt
    forall b c a. (b -> c) -> (a -> b) -> a -> c
    . Bool -> Int
    forall a. Enum a => a -> Int
    P.fromEnum) Bool
    result
        return result'

    -- callback WidgetClassKeyPressEventFieldCallback
    {- Callable
      { returnType = Just (TBasicType TBoolean)
      , returnMayBeNull = False
      , returnTransfer = TransferNothing
      , returnDocumentation =
          Documentation { rawDocText = Nothing , sinceVersion = Nothing }
      , args =
          [ Arg
              { argCName = "widget"
              , argType = TInterface Name { namespace = "Gtk" , name = "Widget" }
              , argCType = Just "GtkWidget*"
              , direction = DirectionIn
              , mayBeNull = False
              , argDoc =
                  Documentation { rawDocText = Nothing , sinceVersion = Nothing }
              , argScope = ScopeTypeInvalid
              , argClosure = -1
              , argDestroy = -1
              , argCallerAllocates = False
              , argCallbackUserData = False
              , transfer = TransferNothing
              }
          , Arg
              { argCName = "event"
              , argType =
                  TInterface Name { namespace = "Gdk" , name = "EventKey" }
              , argCType = Just "GdkEventKey*"
              , direction = DirectionIn
              , mayBeNull = False
              , argDoc =
                  Documentation { rawDocText = Nothing , sinceVersion = Nothing }
              , argScope = ScopeTypeInvalid
              , argClosure = -1
              , argDestroy = -1
              , argCallerAllocates = False
              , argCallbackUserData = False
              , transfer = TransferNothing
              }
          ]
      , skipReturn = False
      , callableThrows = False
      , callableDeprecated = Nothing
      , callableDocumentation =
          Documentation { rawDocText = Nothing , sinceVersion = Nothing }
      , callableResolvable = Nothing
      }
    -}
    -- | Type for the callback on the (unwrapped) C side.
    type C_WidgetClassKeyPressEventFieldCallback =
        Ptr Gtk.Widget.Widget ->
        Ptr Gdk.EventKey.EventKey ->
        IO CInt

    -- Args: [ Arg
    --           { argCName = "widget"
    --           , argType = TInterface Name { namespace = "Gtk" , name = "Widget" }
    --           , argCType = Just "GtkWidget*"
    --           , direction = DirectionIn
    --           , mayBeNull = False
    --           , argDoc =
    --               Documentation { rawDocText = Nothing , sinceVersion = Nothing }
    --           , argScope = ScopeTypeInvalid
    --           , argClosure = -1
    --           , argDestroy = -1
    --           , argCallerAllocates = False
    --           , argCallbackUserData = False
    --           , transfer = TransferNothing
    --           }
    --       , Arg
    --           { argCName = "event"
    --           , argType =
    --               TInterface Name { namespace = "Gdk" , name = "EventKey" }
    --           , argCType = Just "GdkEventKey*"
    --           , direction = DirectionIn
    --           , mayBeNull = False
    --           , argDoc =
    --               Documentation { rawDocText = Nothing , sinceVersion = Nothing }
    --           , argScope = ScopeTypeInvalid
    --           , argClosure = -1
    --           , argDestroy = -1
    --           , argCallerAllocates = False
    --           , argCallbackUserData = False
    --           , transfer = TransferNothing
    --           }
    --       ]
    -- Lengths: []
    -- returnType: Just (TBasicType TBoolean)
    -- throws : False
    -- Skip return : False

    foreign import ccall "dynamic" __dynamic_C_WidgetClassKeyPressEventFieldCallback :: FunPtr C_WidgetClassKeyPressEventFieldCallback -> C_WidgetClassKeyPressEventFieldCallback

    -- | Given a pointer to a foreign C function, wrap it into a function callable from Haskell.
    dynamic_WidgetClassKeyPressEventFieldCallback ::
        (B.CallStack.HasCallStack, MonadIO m, Gtk.Widget.IsWidget a) =>
        FunPtr C_WidgetClassKeyPressEventFieldCallback
        -> a
        -> Gdk.EventKey.EventKey
        -> m Bool
    dynamic_WidgetClassKeyPressEventFieldCallback :: forall (m :: * -> *) a.
    (HasCallStack, MonadIO m, IsWidget a) =>
    FunPtr C_WidgetClassKeyReleaseEventFieldCallback
    -> a -> EventKey -> m Bool
    dynamic_WidgetClassKeyPressEventFieldCallback FunPtr C_WidgetClassKeyReleaseEventFieldCallback
    __funPtr a
    widget EventKey
    event = IO Bool -> m Bool
    forall a. IO a -> m a
    forall (m :: * -> *) a. MonadIO m => IO a -> m a
    liftIO (IO Bool -> m Bool) -> IO Bool -> m Bool
    forall a b. (a -> b) -> a -> b
    $ do
        widget' <- a -> IO (Ptr Widget)
    forall a b. (HasCallStack, ManagedPtrNewtype a) => a -> IO (Ptr b)
    unsafeManagedPtrCastPtr a
    widget
        event' <- unsafeManagedPtrGetPtr event
        result <- (__dynamic_C_WidgetClassKeyPressEventFieldCallback __funPtr) widget' event'
        let result' = (CInt -> CInt -> Bool
    forall a. Eq a => a -> a -> Bool
    /= CInt
    0) CInt
    result
        touchManagedPtr widget
        touchManagedPtr event
        return result'

    -- | Generate a function pointer callable from C code, from a `C_WidgetClassKeyPressEventFieldCallback`.
    foreign import ccall "wrapper"
        mk_WidgetClassKeyPressEventFieldCallback :: C_WidgetClassKeyPressEventFieldCallback -> IO (FunPtr C_WidgetClassKeyPressEventFieldCallback)

    -- | /No description available in the introspection data./
    type WidgetClassKeyPressEventFieldCallback =
        Gtk.Widget.Widget
        -> Gdk.EventKey.EventKey
        -> IO Bool

    -- | A convenience synonym for @`Nothing` :: `Maybe` `WidgetClassKeyPressEventFieldCallback`@.
    noWidgetClassKeyPressEventFieldCallback :: Maybe WidgetClassKeyPressEventFieldCallback
    noWidgetClassKeyPressEventFieldCallback :: Maybe WidgetClassKeyReleaseEventFieldCallback
    noWidgetClassKeyPressEventFieldCallback = Maybe WidgetClassKeyReleaseEventFieldCallback
    forall a. Maybe a
    Nothing

    -- | Wrap the callback into a `GClosure`.
    genClosure_WidgetClassKeyPressEventFieldCallback :: MonadIO m => WidgetClassKeyPressEventFieldCallback -> m (GClosure C_WidgetClassKeyPressEventFieldCallback)
    genClosure_WidgetClassKeyPressEventFieldCallback :: forall (m :: * -> *).
    MonadIO m =>
    WidgetClassKeyReleaseEventFieldCallback
    -> m (GClosure C_WidgetClassKeyReleaseEventFieldCallback)
    genClosure_WidgetClassKeyPressEventFieldCallback WidgetClassKeyReleaseEventFieldCallback
    cb = IO (GClosure C_WidgetClassKeyReleaseEventFieldCallback)
    -> m (GClosure C_WidgetClassKeyReleaseEventFieldCallback)
    forall a. IO a -> m a
    forall (m :: * -> *) a. MonadIO m => IO a -> m a
    liftIO (IO (GClosure C_WidgetClassKeyReleaseEventFieldCallback)
     -> m (GClosure C_WidgetClassKeyReleaseEventFieldCallback))
    -> IO (GClosure C_WidgetClassKeyReleaseEventFieldCallback)
    -> m (GClosure C_WidgetClassKeyReleaseEventFieldCallback)
    forall a b. (a -> b) -> a -> b
    $ do
        let cb' :: C_WidgetClassKeyReleaseEventFieldCallback
    cb' = Maybe (Ptr (FunPtr C_WidgetClassKeyReleaseEventFieldCallback))
    -> WidgetClassKeyReleaseEventFieldCallback
    -> C_WidgetClassKeyReleaseEventFieldCallback
    wrap_WidgetClassKeyPressEventFieldCallback Maybe (Ptr (FunPtr C_WidgetClassKeyReleaseEventFieldCallback))
    forall a. Maybe a
    Nothing WidgetClassKeyReleaseEventFieldCallback
    cb
        C_WidgetClassKeyReleaseEventFieldCallback
    -> IO (FunPtr C_WidgetClassKeyReleaseEventFieldCallback)
    mk_WidgetClassKeyPressEventFieldCallback C_WidgetClassKeyReleaseEventFieldCallback
    cb' IO (FunPtr C_WidgetClassKeyReleaseEventFieldCallback)
    -> (FunPtr C_WidgetClassKeyReleaseEventFieldCallback
        -> IO (GClosure C_WidgetClassKeyReleaseEventFieldCallback))
    -> IO (GClosure C_WidgetClassKeyReleaseEventFieldCallback)
    forall a b. IO a -> (a -> IO b) -> IO b
    forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
    >>= FunPtr C_WidgetClassKeyReleaseEventFieldCallback
    -> IO (GClosure C_WidgetClassKeyReleaseEventFieldCallback)
    forall (m :: * -> *) a. MonadIO m => FunPtr a -> m (GClosure a)
    B.GClosure.newGClosure

    -- | Wrap a `WidgetClassKeyPressEventFieldCallback` into a `C_WidgetClassKeyPressEventFieldCallback`.
    wrap_WidgetClassKeyPressEventFieldCallback ::
        Maybe (Ptr (FunPtr C_WidgetClassKeyPressEventFieldCallback)) ->
        WidgetClassKeyPressEventFieldCallback ->
        C_WidgetClassKeyPressEventFieldCallback
    wrap_WidgetClassKeyPressEventFieldCallback :: Maybe (Ptr (FunPtr C_WidgetClassKeyReleaseEventFieldCallback))
    -> WidgetClassKeyReleaseEventFieldCallback
    -> C_WidgetClassKeyReleaseEventFieldCallback
    wrap_WidgetClassKeyPressEventFieldCallback Maybe (Ptr (FunPtr C_WidgetClassKeyReleaseEventFieldCallback))
    gi'funptrptr WidgetClassKeyReleaseEventFieldCallback
    gi'cb Ptr Widget
    widget Ptr EventKey
    event = do
        widget' <- ((ManagedPtr Widget -> Widget) -> Ptr Widget -> IO Widget
    forall a b.
    (HasCallStack, GObject a, GObject b) =>
    (ManagedPtr a -> a) -> Ptr b -> IO a
    newObject ManagedPtr Widget -> Widget
    Gtk.Widget.Widget) Ptr Widget
    widget
        event' <- (newPtr Gdk.EventKey.EventKey) event
        result <- gi'cb  widget' event'
        maybeReleaseFunPtr gi'funptrptr
        let result' = (Int -> CInt
    forall a b. (Integral a, Num b) => a -> b
    P.fromIntegral (Int -> CInt) -> (Bool -> Int) -> Bool -> CInt
    forall b c a. (b -> c) -> (a -> b) -> a -> c
    . Bool -> Int
    forall a. Enum a => a -> Int
    P.fromEnum) Bool
    result
        return result'

    -- callback WidgetClassHierarchyChangedFieldCallback
    {- Callable
      { returnType = Nothing
      , returnMayBeNull = False
      , returnTransfer = TransferNothing
      , returnDocumentation =
          Documentation { rawDocText = Nothing , sinceVersion = Nothing }
      , args =
          [ Arg
              { argCName = "widget"
              , argType = TInterface Name { namespace = "Gtk" , name = "Widget" }
              , argCType = Just "GtkWidget*"
              , direction = DirectionIn
              , mayBeNull = False
              , argDoc =
                  Documentation { rawDocText = Nothing , sinceVersion = Nothing }
              , argScope = ScopeTypeInvalid
              , argClosure = -1
              , argDestroy = -1
              , argCallerAllocates = False
              , argCallbackUserData = False
              , transfer = TransferNothing
              }
          , Arg
              { argCName = "previous_toplevel"
              , argType = TInterface Name { namespace = "Gtk" , name = "Widget" }
              , argCType = Just "GtkWidget*"
              , direction = DirectionIn
              , mayBeNull = False
              , argDoc =
                  Documentation { rawDocText = Nothing , sinceVersion = Nothing }
              , argScope = ScopeTypeInvalid
              , argClosure = -1
              , argDestroy = -1
              , argCallerAllocates = False
              , argCallbackUserData = False
              , transfer = TransferNothing
              }
          ]
      , skipReturn = False
      , callableThrows = False
      , callableDeprecated = Nothing
      , callableDocumentation =
          Documentation { rawDocText = Nothing , sinceVersion = Nothing }
      , callableResolvable = Nothing
      }
    -}
    -- | Type for the callback on the (unwrapped) C side.
    type C_WidgetClassHierarchyChangedFieldCallback =
        Ptr Gtk.Widget.Widget ->
        Ptr Gtk.Widget.Widget ->
        IO ()

    -- Args: [ Arg
    --           { argCName = "widget"
    --           , argType = TInterface Name { namespace = "Gtk" , name = "Widget" }
    --           , argCType = Just "GtkWidget*"
    --           , direction = DirectionIn
    --           , mayBeNull = False
    --           , argDoc =
    --               Documentation { rawDocText = Nothing , sinceVersion = Nothing }
    --           , argScope = ScopeTypeInvalid
    --           , argClosure = -1
    --           , argDestroy = -1
    --           , argCallerAllocates = False
    --           , argCallbackUserData = False
    --           , transfer = TransferNothing
    --           }
    --       , Arg
    --           { argCName = "previous_toplevel"
    --           , argType = TInterface Name { namespace = "Gtk" , name = "Widget" }
    --           , argCType = Just "GtkWidget*"
    --           , direction = DirectionIn
    --           , mayBeNull = False
    --           , argDoc =
    --               Documentation { rawDocText = Nothing , sinceVersion = Nothing }
    --           , argScope = ScopeTypeInvalid
    --           , argClosure = -1
    --           , argDestroy = -1
    --           , argCallerAllocates = False
    --           , argCallbackUserData = False
    --           , transfer = TransferNothing
    --           }
    --       ]
    -- Lengths: []
    -- returnType: Nothing
    -- throws : False
    -- Skip return : False

    foreign import ccall "dynamic" __dynamic_C_WidgetClassHierarchyChangedFieldCallback :: FunPtr C_WidgetClassHierarchyChangedFieldCallback -> C_WidgetClassHierarchyChangedFieldCallback

    -- | Given a pointer to a foreign C function, wrap it into a function callable from Haskell.
    dynamic_WidgetClassHierarchyChangedFieldCallback ::
        (B.CallStack.HasCallStack, MonadIO m, Gtk.Widget.IsWidget a, Gtk.Widget.IsWidget b) =>
        FunPtr C_WidgetClassHierarchyChangedFieldCallback
        -> a
        -> b
        -> m ()
    dynamic_WidgetClassHierarchyChangedFieldCallback :: forall (m :: * -> *) a b.
    (HasCallStack, MonadIO m, IsWidget a, IsWidget b) =>
    FunPtr C_WidgetClassParentSetFieldCallback -> a -> b -> m ()
    dynamic_WidgetClassHierarchyChangedFieldCallback FunPtr C_WidgetClassParentSetFieldCallback
    __funPtr a
    widget b
    previousToplevel = IO () -> m ()
    forall a. IO a -> m a
    forall (m :: * -> *) a. MonadIO m => IO a -> m a
    liftIO (IO () -> m ()) -> IO () -> m ()
    forall a b. (a -> b) -> a -> b
    $ do
        widget' <- a -> IO (Ptr Widget)
    forall a b. (HasCallStack, ManagedPtrNewtype a) => a -> IO (Ptr b)
    unsafeManagedPtrCastPtr a
    widget
        previousToplevel' <- unsafeManagedPtrCastPtr previousToplevel
        (__dynamic_C_WidgetClassHierarchyChangedFieldCallback __funPtr) widget' previousToplevel'
        touchManagedPtr widget
        touchManagedPtr previousToplevel
        return ()

    -- | Generate a function pointer callable from C code, from a `C_WidgetClassHierarchyChangedFieldCallback`.
    foreign import ccall "wrapper"
        mk_WidgetClassHierarchyChangedFieldCallback :: C_WidgetClassHierarchyChangedFieldCallback -> IO (FunPtr C_WidgetClassHierarchyChangedFieldCallback)

    -- | /No description available in the introspection data./
    type WidgetClassHierarchyChangedFieldCallback =
        Gtk.Widget.Widget
        -> Gtk.Widget.Widget
        -> IO ()

    -- | A convenience synonym for @`Nothing` :: `Maybe` `WidgetClassHierarchyChangedFieldCallback`@.
    noWidgetClassHierarchyChangedFieldCallback :: Maybe WidgetClassHierarchyChangedFieldCallback
    noWidgetClassHierarchyChangedFieldCallback :: Maybe WidgetClassParentSetFieldCallback
    noWidgetClassHierarchyChangedFieldCallback = Maybe WidgetClassParentSetFieldCallback
    forall a. Maybe a
    Nothing

    -- | Wrap the callback into a `GClosure`.
    genClosure_WidgetClassHierarchyChangedFieldCallback :: MonadIO m => WidgetClassHierarchyChangedFieldCallback -> m (GClosure C_WidgetClassHierarchyChangedFieldCallback)
    genClosure_WidgetClassHierarchyChangedFieldCallback :: forall (m :: * -> *).
    MonadIO m =>
    WidgetClassParentSetFieldCallback
    -> m (GClosure C_WidgetClassParentSetFieldCallback)
    genClosure_WidgetClassHierarchyChangedFieldCallback WidgetClassParentSetFieldCallback
    cb = IO (GClosure C_WidgetClassParentSetFieldCallback)
    -> m (GClosure C_WidgetClassParentSetFieldCallback)
    forall a. IO a -> m a
    forall (m :: * -> *) a. MonadIO m => IO a -> m a
    liftIO (IO (GClosure C_WidgetClassParentSetFieldCallback)
     -> m (GClosure C_WidgetClassParentSetFieldCallback))
    -> IO (GClosure C_WidgetClassParentSetFieldCallback)
    -> m (GClosure C_WidgetClassParentSetFieldCallback)
    forall a b. (a -> b) -> a -> b
    $ do
        let cb' :: C_WidgetClassParentSetFieldCallback
    cb' = Maybe (Ptr (FunPtr C_WidgetClassParentSetFieldCallback))
    -> WidgetClassParentSetFieldCallback
    -> C_WidgetClassParentSetFieldCallback
    wrap_WidgetClassHierarchyChangedFieldCallback Maybe (Ptr (FunPtr C_WidgetClassParentSetFieldCallback))
    forall a. Maybe a
    Nothing WidgetClassParentSetFieldCallback
    cb
        C_WidgetClassParentSetFieldCallback
    -> IO (FunPtr C_WidgetClassParentSetFieldCallback)
    mk_WidgetClassHierarchyChangedFieldCallback C_WidgetClassParentSetFieldCallback
    cb' IO (FunPtr C_WidgetClassParentSetFieldCallback)
    -> (FunPtr C_WidgetClassParentSetFieldCallback
        -> IO (GClosure C_WidgetClassParentSetFieldCallback))
    -> IO (GClosure C_WidgetClassParentSetFieldCallback)
    forall a b. IO a -> (a -> IO b) -> IO b
    forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
    >>= FunPtr C_WidgetClassParentSetFieldCallback
    -> IO (GClosure C_WidgetClassParentSetFieldCallback)
    forall (m :: * -> *) a. MonadIO m => FunPtr a -> m (GClosure a)
    B.GClosure.newGClosure

    -- | Wrap a `WidgetClassHierarchyChangedFieldCallback` into a `C_WidgetClassHierarchyChangedFieldCallback`.
    wrap_WidgetClassHierarchyChangedFieldCallback ::
        Maybe (Ptr (FunPtr C_WidgetClassHierarchyChangedFieldCallback)) ->
        WidgetClassHierarchyChangedFieldCallback ->
        C_WidgetClassHierarchyChangedFieldCallback
    wrap_WidgetClassHierarchyChangedFieldCallback :: Maybe (Ptr (FunPtr C_WidgetClassParentSetFieldCallback))
    -> WidgetClassParentSetFieldCallback
    -> C_WidgetClassParentSetFieldCallback
    wrap_WidgetClassHierarchyChangedFieldCallback Maybe (Ptr (FunPtr C_WidgetClassParentSetFieldCallback))
    gi'funptrptr WidgetClassParentSetFieldCallback
    gi'cb Ptr Widget
    widget Ptr Widget
    previousToplevel = do
        widget' <- ((ManagedPtr Widget -> Widget) -> Ptr Widget -> IO Widget
    forall a b.
    (HasCallStack, GObject a, GObject b) =>
    (ManagedPtr a -> a) -> Ptr b -> IO a
    newObject ManagedPtr Widget -> Widget
    Gtk.Widget.Widget) Ptr Widget
    widget
        previousToplevel' <- (newObject Gtk.Widget.Widget) previousToplevel
        gi'cb  widget' previousToplevel'
        maybeReleaseFunPtr gi'funptrptr

    -- callback WidgetClassHideFieldCallback
    {- Callable
      { returnType = Nothing
      , returnMayBeNull = False
      , returnTransfer = TransferNothing
      , returnDocumentation =
          Documentation { rawDocText = Nothing , sinceVersion = Nothing }
      , args =
          [ Arg
              { argCName = "widget"
              , argType = TInterface Name { namespace = "Gtk" , name = "Widget" }
              , argCType = Just "GtkWidget*"
              , direction = DirectionIn
              , mayBeNull = False
              , argDoc =
                  Documentation
                    { rawDocText = Just "a #GtkWidget" , sinceVersion = Nothing }
              , argScope = ScopeTypeInvalid
              , argClosure = -1
              , argDestroy = -1
              , argCallerAllocates = False
              , argCallbackUserData = False
              , transfer = TransferNothing
              }
          ]
      , skipReturn = False
      , callableThrows = False
      , callableDeprecated = Nothing
      , callableDocumentation =
          Documentation { rawDocText = Nothing , sinceVersion = Nothing }
      , callableResolvable = Nothing
      }
    -}
    -- | Type for the callback on the (unwrapped) C side.
    type C_WidgetClassHideFieldCallback =
        Ptr Gtk.Widget.Widget ->
        IO ()

    -- Args: [ Arg
    --           { argCName = "widget"
    --           , argType = TInterface Name { namespace = "Gtk" , name = "Widget" }
    --           , argCType = Just "GtkWidget*"
    --           , direction = DirectionIn
    --           , mayBeNull = False
    --           , argDoc =
    --               Documentation
    --                 { rawDocText = Just "a #GtkWidget" , sinceVersion = Nothing }
    --           , argScope = ScopeTypeInvalid
    --           , argClosure = -1
    --           , argDestroy = -1
    --           , argCallerAllocates = False
    --           , argCallbackUserData = False
    --           , transfer = TransferNothing
    --           }
    --       ]
    -- Lengths: []
    -- returnType: Nothing
    -- throws : False
    -- Skip return : False

    foreign import ccall "dynamic" __dynamic_C_WidgetClassHideFieldCallback :: FunPtr C_WidgetClassHideFieldCallback -> C_WidgetClassHideFieldCallback

    -- | Given a pointer to a foreign C function, wrap it into a function callable from Haskell.
    dynamic_WidgetClassHideFieldCallback ::
        (B.CallStack.HasCallStack, MonadIO m, Gtk.Widget.IsWidget a) =>
        FunPtr C_WidgetClassHideFieldCallback
        -> a
        -- ^ /@widget@/: a t'GI.Gtk.Objects.Widget.Widget'
        -> m ()
    dynamic_WidgetClassHideFieldCallback :: forall (m :: * -> *) a.
    (HasCallStack, MonadIO m, IsWidget a) =>
    FunPtr C_WidgetClassUnrealizeFieldCallback -> a -> m ()
    dynamic_WidgetClassHideFieldCallback FunPtr C_WidgetClassUnrealizeFieldCallback
    __funPtr a
    widget = IO () -> m ()
    forall a. IO a -> m a
    forall (m :: * -> *) a. MonadIO m => IO a -> m a
    liftIO (IO () -> m ()) -> IO () -> m ()
    forall a b. (a -> b) -> a -> b
    $ do
        widget' <- a -> IO (Ptr Widget)
    forall a b. (HasCallStack, ManagedPtrNewtype a) => a -> IO (Ptr b)
    unsafeManagedPtrCastPtr a
    widget
        (__dynamic_C_WidgetClassHideFieldCallback __funPtr) widget'
        touchManagedPtr widget
        return ()

    -- | Generate a function pointer callable from C code, from a `C_WidgetClassHideFieldCallback`.
    foreign import ccall "wrapper"
        mk_WidgetClassHideFieldCallback :: C_WidgetClassHideFieldCallback -> IO (FunPtr C_WidgetClassHideFieldCallback)

    -- | /No description available in the introspection data./
    type WidgetClassHideFieldCallback =
        Gtk.Widget.Widget
        -- ^ /@widget@/: a t'GI.Gtk.Objects.Widget.Widget'
        -> IO ()

    -- | A convenience synonym for @`Nothing` :: `Maybe` `WidgetClassHideFieldCallback`@.
    noWidgetClassHideFieldCallback :: Maybe WidgetClassHideFieldCallback
    noWidgetClassHideFieldCallback :: Maybe WidgetClassUnrealizeFieldCallback
    noWidgetClassHideFieldCallback = Maybe WidgetClassUnrealizeFieldCallback
    forall a. Maybe a
    Nothing

    -- | Wrap the callback into a `GClosure`.
    genClosure_WidgetClassHideFieldCallback :: MonadIO m => WidgetClassHideFieldCallback -> m (GClosure C_WidgetClassHideFieldCallback)
    genClosure_WidgetClassHideFieldCallback :: forall (m :: * -> *).
    MonadIO m =>
    WidgetClassUnrealizeFieldCallback
    -> m (GClosure C_WidgetClassUnrealizeFieldCallback)
    genClosure_WidgetClassHideFieldCallback WidgetClassUnrealizeFieldCallback
    cb = IO (GClosure C_WidgetClassUnrealizeFieldCallback)
    -> m (GClosure C_WidgetClassUnrealizeFieldCallback)
    forall a. IO a -> m a
    forall (m :: * -> *) a. MonadIO m => IO a -> m a
    liftIO (IO (GClosure C_WidgetClassUnrealizeFieldCallback)
     -> m (GClosure C_WidgetClassUnrealizeFieldCallback))
    -> IO (GClosure C_WidgetClassUnrealizeFieldCallback)
    -> m (GClosure C_WidgetClassUnrealizeFieldCallback)
    forall a b. (a -> b) -> a -> b
    $ do
        let cb' :: C_WidgetClassUnrealizeFieldCallback
    cb' = Maybe (Ptr (FunPtr C_WidgetClassUnrealizeFieldCallback))
    -> WidgetClassUnrealizeFieldCallback
    -> C_WidgetClassUnrealizeFieldCallback
    wrap_WidgetClassHideFieldCallback Maybe (Ptr (FunPtr C_WidgetClassUnrealizeFieldCallback))
    forall a. Maybe a
    Nothing WidgetClassUnrealizeFieldCallback
    cb
        C_WidgetClassUnrealizeFieldCallback
    -> IO (FunPtr C_WidgetClassUnrealizeFieldCallback)
    mk_WidgetClassHideFieldCallback C_WidgetClassUnrealizeFieldCallback
    cb' IO (FunPtr C_WidgetClassUnrealizeFieldCallback)
    -> (FunPtr C_WidgetClassUnrealizeFieldCallback
        -> IO (GClosure C_WidgetClassUnrealizeFieldCallback))
    -> IO (GClosure C_WidgetClassUnrealizeFieldCallback)
    forall a b. IO a -> (a -> IO b) -> IO b
    forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
    >>= FunPtr C_WidgetClassUnrealizeFieldCallback
    -> IO (GClosure C_WidgetClassUnrealizeFieldCallback)
    forall (m :: * -> *) a. MonadIO m => FunPtr a -> m (GClosure a)
    B.GClosure.newGClosure

    -- | Wrap a `WidgetClassHideFieldCallback` into a `C_WidgetClassHideFieldCallback`.
    wrap_WidgetClassHideFieldCallback ::
        Maybe (Ptr (FunPtr C_WidgetClassHideFieldCallback)) ->
        WidgetClassHideFieldCallback ->
        C_WidgetClassHideFieldCallback
    wrap_WidgetClassHideFieldCallback :: Maybe (Ptr (FunPtr C_WidgetClassUnrealizeFieldCallback))
    -> WidgetClassUnrealizeFieldCallback
    -> C_WidgetClassUnrealizeFieldCallback
    wrap_WidgetClassHideFieldCallback Maybe (Ptr (FunPtr C_WidgetClassUnrealizeFieldCallback))
    gi'funptrptr WidgetClassUnrealizeFieldCallback
    gi'cb Ptr Widget
    widget = do
        widget' <- ((ManagedPtr Widget -> Widget) -> Ptr Widget -> IO Widget
    forall a b.
    (HasCallStack, GObject a, GObject b) =>
    (ManagedPtr a -> a) -> Ptr b -> IO a
    newObject ManagedPtr Widget -> Widget
    Gtk.Widget.Widget) Ptr Widget
    widget
        gi'cb  widget'
        maybeReleaseFunPtr gi'funptrptr

    -- callback WidgetClassGrabNotifyFieldCallback
    {- Callable
      { returnType = Nothing
      , returnMayBeNull = False
      , returnTransfer = TransferNothing
      , returnDocumentation =
          Documentation { rawDocText = Nothing , sinceVersion = Nothing }
      , args =
          [ Arg
              { argCName = "widget"
              , argType = TInterface Name { namespace = "Gtk" , name = "Widget" }
              , argCType = Just "GtkWidget*"
              , direction = DirectionIn
              , mayBeNull = False
              , argDoc =
                  Documentation { rawDocText = Nothing , sinceVersion = Nothing }
              , argScope = ScopeTypeInvalid
              , argClosure = -1
              , argDestroy = -1
              , argCallerAllocates = False
              , argCallbackUserData = False
              , transfer = TransferNothing
              }
          , Arg
              { argCName = "was_grabbed"
              , argType = TBasicType TBoolean
              , argCType = Just "gboolean"
              , direction = DirectionIn
              , mayBeNull = False
              , argDoc =
                  Documentation { rawDocText = Nothing , sinceVersion = Nothing }
              , argScope = ScopeTypeInvalid
              , argClosure = -1
              , argDestroy = -1
              , argCallerAllocates = False
              , argCallbackUserData = False
              , transfer = TransferNothing
              }
          ]
      , skipReturn = False
      , callableThrows = False
      , callableDeprecated = Nothing
      , callableDocumentation =
          Documentation { rawDocText = Nothing , sinceVersion = Nothing }
      , callableResolvable = Nothing
      }
    -}
    -- | Type for the callback on the (unwrapped) C side.
    type C_WidgetClassGrabNotifyFieldCallback =
        Ptr Gtk.Widget.Widget ->
        CInt ->
        IO ()

    -- Args: [ Arg
    --           { argCName = "widget"
    --           , argType = TInterface Name { namespace = "Gtk" , name = "Widget" }
    --           , argCType = Just "GtkWidget*"
    --           , direction = DirectionIn
    --           , mayBeNull = False
    --           , argDoc =
    --               Documentation { rawDocText = Nothing , sinceVersion = Nothing }
    --           , argScope = ScopeTypeInvalid
    --           , argClosure = -1
    --           , argDestroy = -1
    --           , argCallerAllocates = False
    --           , argCallbackUserData = False
    --           , transfer = TransferNothing
    --           }
    --       , Arg
    --           { argCName = "was_grabbed"
    --           , argType = TBasicType TBoolean
    --           , argCType = Just "gboolean"
    --           , direction = DirectionIn
    --           , mayBeNull = False
    --           , argDoc =
    --               Documentation { rawDocText = Nothing , sinceVersion = Nothing }
    --           , argScope = ScopeTypeInvalid
    --           , argClosure = -1
    --           , argDestroy = -1
    --           , argCallerAllocates = False
    --           , argCallbackUserData = False
    --           , transfer = TransferNothing
    --           }
    --       ]
    -- Lengths: []
    -- returnType: Nothing
    -- throws : False
    -- Skip return : False

    foreign import ccall "dynamic" __dynamic_C_WidgetClassGrabNotifyFieldCallback :: FunPtr C_WidgetClassGrabNotifyFieldCallback -> C_WidgetClassGrabNotifyFieldCallback

    -- | Given a pointer to a foreign C function, wrap it into a function callable from Haskell.
    dynamic_WidgetClassGrabNotifyFieldCallback ::
        (B.CallStack.HasCallStack, MonadIO m, Gtk.Widget.IsWidget a) =>
        FunPtr C_WidgetClassGrabNotifyFieldCallback
        -> a
        -> Bool
        -> m ()
    dynamic_WidgetClassGrabNotifyFieldCallback :: forall (m :: * -> *) a.
    (HasCallStack, MonadIO m, IsWidget a) =>
    FunPtr C_WidgetClassGrabNotifyFieldCallback -> a -> Bool -> m ()
    dynamic_WidgetClassGrabNotifyFieldCallback FunPtr C_WidgetClassGrabNotifyFieldCallback
    __funPtr a
    widget Bool
    wasGrabbed = IO () -> m ()
    forall a. IO a -> m a
    forall (m :: * -> *) a. MonadIO m => IO a -> m a
    liftIO (IO () -> m ()) -> IO () -> m ()
    forall a b. (a -> b) -> a -> b
    $ do
        widget' <- a -> IO (Ptr Widget)
    forall a b. (HasCallStack, ManagedPtrNewtype a) => a -> IO (Ptr b)
    unsafeManagedPtrCastPtr a
    widget
        let wasGrabbed' = (Int -> CInt
    forall a b. (Integral a, Num b) => a -> b
    P.fromIntegral (Int -> CInt) -> (Bool -> Int) -> Bool -> CInt
    forall b c a. (b -> c) -> (a -> b) -> a -> c
    . Bool -> Int
    forall a. Enum a => a -> Int
    P.fromEnum) Bool
    wasGrabbed
        (__dynamic_C_WidgetClassGrabNotifyFieldCallback __funPtr) widget' wasGrabbed'
        touchManagedPtr widget
        return ()

    -- | Generate a function pointer callable from C code, from a `C_WidgetClassGrabNotifyFieldCallback`.
    foreign import ccall "wrapper"
        mk_WidgetClassGrabNotifyFieldCallback :: C_WidgetClassGrabNotifyFieldCallback -> IO (FunPtr C_WidgetClassGrabNotifyFieldCallback)

    -- | /No description available in the introspection data./
    type WidgetClassGrabNotifyFieldCallback =
        Gtk.Widget.Widget
        -> Bool
        -> IO ()

    -- | A convenience synonym for @`Nothing` :: `Maybe` `WidgetClassGrabNotifyFieldCallback`@.
    noWidgetClassGrabNotifyFieldCallback :: Maybe WidgetClassGrabNotifyFieldCallback
    noWidgetClassGrabNotifyFieldCallback :: Maybe WidgetClassGrabNotifyFieldCallback
    noWidgetClassGrabNotifyFieldCallback = Maybe WidgetClassGrabNotifyFieldCallback
    forall a. Maybe a
    Nothing

    -- | Wrap the callback into a `GClosure`.
    genClosure_WidgetClassGrabNotifyFieldCallback :: MonadIO m => WidgetClassGrabNotifyFieldCallback -> m (GClosure C_WidgetClassGrabNotifyFieldCallback)
    genClosure_WidgetClassGrabNotifyFieldCallback :: forall (m :: * -> *).
    MonadIO m =>
    WidgetClassGrabNotifyFieldCallback
    -> m (GClosure C_WidgetClassGrabNotifyFieldCallback)
    genClosure_WidgetClassGrabNotifyFieldCallback WidgetClassGrabNotifyFieldCallback
    cb = IO (GClosure C_WidgetClassGrabNotifyFieldCallback)
    -> m (GClosure C_WidgetClassGrabNotifyFieldCallback)
    forall a. IO a -> m a
    forall (m :: * -> *) a. MonadIO m => IO a -> m a
    liftIO (IO (GClosure C_WidgetClassGrabNotifyFieldCallback)
     -> m (GClosure C_WidgetClassGrabNotifyFieldCallback))
    -> IO (GClosure C_WidgetClassGrabNotifyFieldCallback)
    -> m (GClosure C_WidgetClassGrabNotifyFieldCallback)
    forall a b. (a -> b) -> a -> b
    $ do
        let cb' :: C_WidgetClassGrabNotifyFieldCallback
    cb' = Maybe (Ptr (FunPtr C_WidgetClassGrabNotifyFieldCallback))
    -> WidgetClassGrabNotifyFieldCallback
    -> C_WidgetClassGrabNotifyFieldCallback
    wrap_WidgetClassGrabNotifyFieldCallback Maybe (Ptr (FunPtr C_WidgetClassGrabNotifyFieldCallback))
    forall a. Maybe a
    Nothing WidgetClassGrabNotifyFieldCallback
    cb
        C_WidgetClassGrabNotifyFieldCallback
    -> IO (FunPtr C_WidgetClassGrabNotifyFieldCallback)
    mk_WidgetClassGrabNotifyFieldCallback C_WidgetClassGrabNotifyFieldCallback
    cb' IO (FunPtr C_WidgetClassGrabNotifyFieldCallback)
    -> (FunPtr C_WidgetClassGrabNotifyFieldCallback
        -> IO (GClosure C_WidgetClassGrabNotifyFieldCallback))
    -> IO (GClosure C_WidgetClassGrabNotifyFieldCallback)
    forall a b. IO a -> (a -> IO b) -> IO b
    forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
    >>= FunPtr C_WidgetClassGrabNotifyFieldCallback
    -> IO (GClosure C_WidgetClassGrabNotifyFieldCallback)
    forall (m :: * -> *) a. MonadIO m => FunPtr a -> m (GClosure a)
    B.GClosure.newGClosure

    -- | Wrap a `WidgetClassGrabNotifyFieldCallback` into a `C_WidgetClassGrabNotifyFieldCallback`.
    wrap_WidgetClassGrabNotifyFieldCallback ::
        Maybe (Ptr (FunPtr C_WidgetClassGrabNotifyFieldCallback)) ->
        WidgetClassGrabNotifyFieldCallback ->
        C_WidgetClassGrabNotifyFieldCallback
    wrap_WidgetClassGrabNotifyFieldCallback :: Maybe (Ptr (FunPtr C_WidgetClassGrabNotifyFieldCallback))
    -> WidgetClassGrabNotifyFieldCallback
    -> C_WidgetClassGrabNotifyFieldCallback
    wrap_WidgetClassGrabNotifyFieldCallback Maybe (Ptr (FunPtr C_WidgetClassGrabNotifyFieldCallback))
    gi'funptrptr WidgetClassGrabNotifyFieldCallback
    gi'cb Ptr Widget
    widget CInt
    wasGrabbed = do
        widget' <- ((ManagedPtr Widget -> Widget) -> Ptr Widget -> IO Widget
    forall a b.
    (HasCallStack, GObject a, GObject b) =>
    (ManagedPtr a -> a) -> Ptr b -> IO a
    newObject ManagedPtr Widget -> Widget
    Gtk.Widget.Widget) Ptr Widget
    widget
        let wasGrabbed' = (CInt -> CInt -> Bool
    forall a. Eq a => a -> a -> Bool
    /= CInt
    0) CInt
    wasGrabbed
        gi'cb  widget' wasGrabbed'
        maybeReleaseFunPtr gi'funptrptr

    -- callback WidgetClassGrabFocusFieldCallback
    {- Callable
      { returnType = Nothing
      , returnMayBeNull = False
      , returnTransfer = TransferNothing
      , returnDocumentation =
          Documentation { rawDocText = Nothing , sinceVersion = Nothing }
      , args =
          [ Arg
              { argCName = "widget"
              , argType = TInterface Name { namespace = "Gtk" , name = "Widget" }
              , argCType = Just "GtkWidget*"
              , direction = DirectionIn
              , mayBeNull = False
              , argDoc =
                  Documentation
                    { rawDocText = Just "a #GtkWidget" , sinceVersion = Nothing }
              , argScope = ScopeTypeInvalid
              , argClosure = -1
              , argDestroy = -1
              , argCallerAllocates = False
              , argCallbackUserData = False
              , transfer = TransferNothing
              }
          ]
      , skipReturn = False
      , callableThrows = False
      , callableDeprecated = Nothing
      , callableDocumentation =
          Documentation { rawDocText = Nothing , sinceVersion = Nothing }
      , callableResolvable = Nothing
      }
    -}
    -- | Type for the callback on the (unwrapped) C side.
    type C_WidgetClassGrabFocusFieldCallback =
        Ptr Gtk.Widget.Widget ->
        IO ()

    -- Args: [ Arg
    --           { argCName = "widget"
    --           , argType = TInterface Name { namespace = "Gtk" , name = "Widget" }
    --           , argCType = Just "GtkWidget*"
    --           , direction = DirectionIn
    --           , mayBeNull = False
    --           , argDoc =
    --               Documentation
    --                 { rawDocText = Just "a #GtkWidget" , sinceVersion = Nothing }
    --           , argScope = ScopeTypeInvalid
    --           , argClosure = -1
    --           , argDestroy = -1
    --           , argCallerAllocates = False
    --           , argCallbackUserData = False
    --           , transfer = TransferNothing
    --           }
    --       ]
    -- Lengths: []
    -- returnType: Nothing
    -- throws : False
    -- Skip return : False

    foreign import ccall "dynamic" __dynamic_C_WidgetClassGrabFocusFieldCallback :: FunPtr C_WidgetClassGrabFocusFieldCallback -> C_WidgetClassGrabFocusFieldCallback

    -- | Given a pointer to a foreign C function, wrap it into a function callable from Haskell.
    dynamic_WidgetClassGrabFocusFieldCallback ::
        (B.CallStack.HasCallStack, MonadIO m, Gtk.Widget.IsWidget a) =>
        FunPtr C_WidgetClassGrabFocusFieldCallback
        -> a
        -- ^ /@widget@/: a t'GI.Gtk.Objects.Widget.Widget'
        -> m ()
    dynamic_WidgetClassGrabFocusFieldCallback :: forall (m :: * -> *) a.
    (HasCallStack, MonadIO m, IsWidget a) =>
    FunPtr C_WidgetClassUnrealizeFieldCallback -> a -> m ()
    dynamic_WidgetClassGrabFocusFieldCallback FunPtr C_WidgetClassUnrealizeFieldCallback
    __funPtr a
    widget = IO () -> m ()
    forall a. IO a -> m a
    forall (m :: * -> *) a. MonadIO m => IO a -> m a
    liftIO (IO () -> m ()) -> IO () -> m ()
    forall a b. (a -> b) -> a -> b
    $ do
        widget' <- a -> IO (Ptr Widget)
    forall a b. (HasCallStack, ManagedPtrNewtype a) => a -> IO (Ptr b)
    unsafeManagedPtrCastPtr a
    widget
        (__dynamic_C_WidgetClassGrabFocusFieldCallback __funPtr) widget'
        touchManagedPtr widget
        return ()

    -- | Generate a function pointer callable from C code, from a `C_WidgetClassGrabFocusFieldCallback`.
    foreign import ccall "wrapper"
        mk_WidgetClassGrabFocusFieldCallback :: C_WidgetClassGrabFocusFieldCallback -> IO (FunPtr C_WidgetClassGrabFocusFieldCallback)

    -- | /No description available in the introspection data./
    type WidgetClassGrabFocusFieldCallback =
        Gtk.Widget.Widget
        -- ^ /@widget@/: a t'GI.Gtk.Objects.Widget.Widget'
        -> IO ()

    -- | A convenience synonym for @`Nothing` :: `Maybe` `WidgetClassGrabFocusFieldCallback`@.
    noWidgetClassGrabFocusFieldCallback :: Maybe WidgetClassGrabFocusFieldCallback
    noWidgetClassGrabFocusFieldCallback :: Maybe WidgetClassUnrealizeFieldCallback
    noWidgetClassGrabFocusFieldCallback = Maybe WidgetClassUnrealizeFieldCallback
    forall a. Maybe a
    Nothing

    -- | Wrap the callback into a `GClosure`.
    genClosure_WidgetClassGrabFocusFieldCallback :: MonadIO m => WidgetClassGrabFocusFieldCallback -> m (GClosure C_WidgetClassGrabFocusFieldCallback)
    genClosure_WidgetClassGrabFocusFieldCallback :: forall (m :: * -> *).
    MonadIO m =>
    WidgetClassUnrealizeFieldCallback
    -> m (GClosure C_WidgetClassUnrealizeFieldCallback)
    genClosure_WidgetClassGrabFocusFieldCallback WidgetClassUnrealizeFieldCallback
    cb = IO (GClosure C_WidgetClassUnrealizeFieldCallback)
    -> m (GClosure C_WidgetClassUnrealizeFieldCallback)
    forall a. IO a -> m a
    forall (m :: * -> *) a. MonadIO m => IO a -> m a
    liftIO (IO (GClosure C_WidgetClassUnrealizeFieldCallback)
     -> m (GClosure C_WidgetClassUnrealizeFieldCallback))
    -> IO (GClosure C_WidgetClassUnrealizeFieldCallback)
    -> m (GClosure C_WidgetClassUnrealizeFieldCallback)
    forall a b. (a -> b) -> a -> b
    $ do
        let cb' :: C_WidgetClassUnrealizeFieldCallback
    cb' = Maybe (Ptr (FunPtr C_WidgetClassUnrealizeFieldCallback))
    -> WidgetClassUnrealizeFieldCallback
    -> C_WidgetClassUnrealizeFieldCallback
    wrap_WidgetClassGrabFocusFieldCallback Maybe (Ptr (FunPtr C_WidgetClassUnrealizeFieldCallback))
    forall a. Maybe a
    Nothing WidgetClassUnrealizeFieldCallback
    cb
        C_WidgetClassUnrealizeFieldCallback
    -> IO (FunPtr C_WidgetClassUnrealizeFieldCallback)
    mk_WidgetClassGrabFocusFieldCallback C_WidgetClassUnrealizeFieldCallback
    cb' IO (FunPtr C_WidgetClassUnrealizeFieldCallback)
    -> (FunPtr C_WidgetClassUnrealizeFieldCallback
        -> IO (GClosure C_WidgetClassUnrealizeFieldCallback))
    -> IO (GClosure C_WidgetClassUnrealizeFieldCallback)
    forall a b. IO a -> (a -> IO b) -> IO b
    forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
    >>= FunPtr C_WidgetClassUnrealizeFieldCallback
    -> IO (GClosure C_WidgetClassUnrealizeFieldCallback)
    forall (m :: * -> *) a. MonadIO m => FunPtr a -> m (GClosure a)
    B.GClosure.newGClosure

    -- | Wrap a `WidgetClassGrabFocusFieldCallback` into a `C_WidgetClassGrabFocusFieldCallback`.
    wrap_WidgetClassGrabFocusFieldCallback ::
        Maybe (Ptr (FunPtr C_WidgetClassGrabFocusFieldCallback)) ->
        WidgetClassGrabFocusFieldCallback ->
        C_WidgetClassGrabFocusFieldCallback
    wrap_WidgetClassGrabFocusFieldCallback :: Maybe (Ptr (FunPtr C_WidgetClassUnrealizeFieldCallback))
    -> WidgetClassUnrealizeFieldCallback
    -> C_WidgetClassUnrealizeFieldCallback
    wrap_WidgetClassGrabFocusFieldCallback Maybe (Ptr (FunPtr C_WidgetClassUnrealizeFieldCallback))
    gi'funptrptr WidgetClassUnrealizeFieldCallback
    gi'cb Ptr Widget
    widget = do
        widget' <- ((ManagedPtr Widget -> Widget) -> Ptr Widget -> IO Widget
    forall a b.
    (HasCallStack, GObject a, GObject b) =>
    (ManagedPtr a -> a) -> Ptr b -> IO a
    newObject ManagedPtr Widget -> Widget
    Gtk.Widget.Widget) Ptr Widget
    widget
        gi'cb  widget'
        maybeReleaseFunPtr gi'funptrptr

    -- callback WidgetClassGrabBrokenEventFieldCallback
    {- Callable
      { returnType = Just (TBasicType TBoolean)
      , returnMayBeNull = False
      , returnTransfer = TransferNothing
      , returnDocumentation =
          Documentation { rawDocText = Nothing , sinceVersion = Nothing }
      , args =
          [ Arg
              { argCName = "widget"
              , argType = TInterface Name { namespace = "Gtk" , name = "Widget" }
              , argCType = Just "GtkWidget*"
              , direction = DirectionIn
              , mayBeNull = False
              , argDoc =
                  Documentation { rawDocText = Nothing , sinceVersion = Nothing }
              , argScope = ScopeTypeInvalid
              , argClosure = -1
              , argDestroy = -1
              , argCallerAllocates = False
              , argCallbackUserData = False
              , transfer = TransferNothing
              }
          , Arg
              { argCName = "event"
              , argType =
                  TInterface Name { namespace = "Gdk" , name = "EventGrabBroken" }
              , argCType = Just "GdkEventGrabBroken*"
              , direction = DirectionIn
              , mayBeNull = False
              , argDoc =
                  Documentation { rawDocText = Nothing , sinceVersion = Nothing }
              , argScope = ScopeTypeInvalid
              , argClosure = -1
              , argDestroy = -1
              , argCallerAllocates = False
              , argCallbackUserData = False
              , transfer = TransferNothing
              }
          ]
      , skipReturn = False
      , callableThrows = False
      , callableDeprecated = Nothing
      , callableDocumentation =
          Documentation { rawDocText = Nothing , sinceVersion = Nothing }
      , callableResolvable = Nothing
      }
    -}
    -- | Type for the callback on the (unwrapped) C side.
    type C_WidgetClassGrabBrokenEventFieldCallback =
        Ptr Gtk.Widget.Widget ->
        Ptr Gdk.EventGrabBroken.EventGrabBroken ->
        IO CInt

    -- Args: [ Arg
    --           { argCName = "widget"
    --           , argType = TInterface Name { namespace = "Gtk" , name = "Widget" }
    --           , argCType = Just "GtkWidget*"
    --           , direction = DirectionIn
    --           , mayBeNull = False
    --           , argDoc =
    --               Documentation { rawDocText = Nothing , sinceVersion = Nothing }
    --           , argScope = ScopeTypeInvalid
    --           , argClosure = -1
    --           , argDestroy = -1
    --           , argCallerAllocates = False
    --           , argCallbackUserData = False
    --           , transfer = TransferNothing
    --           }
    --       , Arg
    --           { argCName = "event"
    --           , argType =
    --               TInterface Name { namespace = "Gdk" , name = "EventGrabBroken" }
    --           , argCType = Just "GdkEventGrabBroken*"
    --           , direction = DirectionIn
    --           , mayBeNull = False
    --           , argDoc =
    --               Documentation { rawDocText = Nothing , sinceVersion = Nothing }
    --           , argScope = ScopeTypeInvalid
    --           , argClosure = -1
    --           , argDestroy = -1
    --           , argCallerAllocates = False
    --           , argCallbackUserData = False
    --           , transfer = TransferNothing
    --           }
    --       ]
    -- Lengths: []
    -- returnType: Just (TBasicType TBoolean)
    -- throws : False
    -- Skip return : False

    foreign import ccall "dynamic" __dynamic_C_WidgetClassGrabBrokenEventFieldCallback :: FunPtr C_WidgetClassGrabBrokenEventFieldCallback -> C_WidgetClassGrabBrokenEventFieldCallback

    -- | Given a pointer to a foreign C function, wrap it into a function callable from Haskell.
    dynamic_WidgetClassGrabBrokenEventFieldCallback ::
        (B.CallStack.HasCallStack, MonadIO m, Gtk.Widget.IsWidget a) =>
        FunPtr C_WidgetClassGrabBrokenEventFieldCallback
        -> a
        -> Gdk.EventGrabBroken.EventGrabBroken
        -> m Bool
    dynamic_WidgetClassGrabBrokenEventFieldCallback :: forall (m :: * -> *) a.
    (HasCallStack, MonadIO m, IsWidget a) =>
    FunPtr C_WidgetClassGrabBrokenEventFieldCallback
    -> a -> EventGrabBroken -> m Bool
    dynamic_WidgetClassGrabBrokenEventFieldCallback FunPtr C_WidgetClassGrabBrokenEventFieldCallback
    __funPtr a
    widget EventGrabBroken
    event = IO Bool -> m Bool
    forall a. IO a -> m a
    forall (m :: * -> *) a. MonadIO m => IO a -> m a
    liftIO (IO Bool -> m Bool) -> IO Bool -> m Bool
    forall a b. (a -> b) -> a -> b
    $ do
        widget' <- a -> IO (Ptr Widget)
    forall a b. (HasCallStack, ManagedPtrNewtype a) => a -> IO (Ptr b)
    unsafeManagedPtrCastPtr a
    widget
        event' <- unsafeManagedPtrGetPtr event
        result <- (__dynamic_C_WidgetClassGrabBrokenEventFieldCallback __funPtr) widget' event'
        let result' = (CInt -> CInt -> Bool
    forall a. Eq a => a -> a -> Bool
    /= CInt
    0) CInt
    result
        touchManagedPtr widget
        touchManagedPtr event
        return result'

    -- | Generate a function pointer callable from C code, from a `C_WidgetClassGrabBrokenEventFieldCallback`.
    foreign import ccall "wrapper"
        mk_WidgetClassGrabBrokenEventFieldCallback :: C_WidgetClassGrabBrokenEventFieldCallback -> IO (FunPtr C_WidgetClassGrabBrokenEventFieldCallback)

    -- | /No description available in the introspection data./
    type WidgetClassGrabBrokenEventFieldCallback =
        Gtk.Widget.Widget
        -> Gdk.EventGrabBroken.EventGrabBroken
        -> IO Bool

    -- | A convenience synonym for @`Nothing` :: `Maybe` `WidgetClassGrabBrokenEventFieldCallback`@.
    noWidgetClassGrabBrokenEventFieldCallback :: Maybe WidgetClassGrabBrokenEventFieldCallback
    noWidgetClassGrabBrokenEventFieldCallback :: Maybe WidgetClassGrabBrokenEventFieldCallback
    noWidgetClassGrabBrokenEventFieldCallback = Maybe WidgetClassGrabBrokenEventFieldCallback
    forall a. Maybe a
    Nothing

    -- | Wrap the callback into a `GClosure`.
    genClosure_WidgetClassGrabBrokenEventFieldCallback :: MonadIO m => WidgetClassGrabBrokenEventFieldCallback -> m (GClosure C_WidgetClassGrabBrokenEventFieldCallback)
    genClosure_WidgetClassGrabBrokenEventFieldCallback :: forall (m :: * -> *).
    MonadIO m =>
    WidgetClassGrabBrokenEventFieldCallback
    -> m (GClosure C_WidgetClassGrabBrokenEventFieldCallback)
    genClosure_WidgetClassGrabBrokenEventFieldCallback WidgetClassGrabBrokenEventFieldCallback
    cb = IO (GClosure C_WidgetClassGrabBrokenEventFieldCallback)
    -> m (GClosure C_WidgetClassGrabBrokenEventFieldCallback)
    forall a. IO a -> m a
    forall (m :: * -> *) a. MonadIO m => IO a -> m a
    liftIO (IO (GClosure C_WidgetClassGrabBrokenEventFieldCallback)
     -> m (GClosure C_WidgetClassGrabBrokenEventFieldCallback))
    -> IO (GClosure C_WidgetClassGrabBrokenEventFieldCallback)
    -> m (GClosure C_WidgetClassGrabBrokenEventFieldCallback)
    forall a b. (a -> b) -> a -> b
    $ do
        let cb' :: C_WidgetClassGrabBrokenEventFieldCallback
    cb' = Maybe (Ptr (FunPtr C_WidgetClassGrabBrokenEventFieldCallback))
    -> WidgetClassGrabBrokenEventFieldCallback
    -> C_WidgetClassGrabBrokenEventFieldCallback
    wrap_WidgetClassGrabBrokenEventFieldCallback Maybe (Ptr (FunPtr C_WidgetClassGrabBrokenEventFieldCallback))
    forall a. Maybe a
    Nothing WidgetClassGrabBrokenEventFieldCallback
    cb
        C_WidgetClassGrabBrokenEventFieldCallback
    -> IO (FunPtr C_WidgetClassGrabBrokenEventFieldCallback)
    mk_WidgetClassGrabBrokenEventFieldCallback C_WidgetClassGrabBrokenEventFieldCallback
    cb' IO (FunPtr C_WidgetClassGrabBrokenEventFieldCallback)
    -> (FunPtr C_WidgetClassGrabBrokenEventFieldCallback
        -> IO (GClosure C_WidgetClassGrabBrokenEventFieldCallback))
    -> IO (GClosure C_WidgetClassGrabBrokenEventFieldCallback)
    forall a b. IO a -> (a -> IO b) -> IO b
    forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
    >>= FunPtr C_WidgetClassGrabBrokenEventFieldCallback
    -> IO (GClosure C_WidgetClassGrabBrokenEventFieldCallback)
    forall (m :: * -> *) a. MonadIO m => FunPtr a -> m (GClosure a)
    B.GClosure.newGClosure

    -- | Wrap a `WidgetClassGrabBrokenEventFieldCallback` into a `C_WidgetClassGrabBrokenEventFieldCallback`.
    wrap_WidgetClassGrabBrokenEventFieldCallback ::
        Maybe (Ptr (FunPtr C_WidgetClassGrabBrokenEventFieldCallback)) ->
        WidgetClassGrabBrokenEventFieldCallback ->
        C_WidgetClassGrabBrokenEventFieldCallback
    wrap_WidgetClassGrabBrokenEventFieldCallback :: Maybe (Ptr (FunPtr C_WidgetClassGrabBrokenEventFieldCallback))
    -> WidgetClassGrabBrokenEventFieldCallback
    -> C_WidgetClassGrabBrokenEventFieldCallback
    wrap_WidgetClassGrabBrokenEventFieldCallback Maybe (Ptr (FunPtr C_WidgetClassGrabBrokenEventFieldCallback))
    gi'funptrptr WidgetClassGrabBrokenEventFieldCallback
    gi'cb Ptr Widget
    widget Ptr EventGrabBroken
    event = do
        widget' <- ((ManagedPtr Widget -> Widget) -> Ptr Widget -> IO Widget
    forall a b.
    (HasCallStack, GObject a, GObject b) =>
    (ManagedPtr a -> a) -> Ptr b -> IO a
    newObject ManagedPtr Widget -> Widget
    Gtk.Widget.Widget) Ptr Widget
    widget
        event' <- (newPtr Gdk.EventGrabBroken.EventGrabBroken) event
        result <- gi'cb  widget' event'
        maybeReleaseFunPtr gi'funptrptr
        let result' = (Int -> CInt
    forall a b. (Integral a, Num b) => a -> b
    P.fromIntegral (Int -> CInt) -> (Bool -> Int) -> Bool -> CInt
    forall b c a. (b -> c) -> (a -> b) -> a -> c
    . Bool -> Int
    forall a. Enum a => a -> Int
    P.fromEnum) Bool
    result
        return result'

    -- callback WidgetClassGetRequestModeFieldCallback
    {- Callable
      { returnType =
          Just
            (TInterface Name { namespace = "Gtk" , name = "SizeRequestMode" })
      , returnMayBeNull = False
      , returnTransfer = TransferNothing
      , returnDocumentation =
          Documentation
            { rawDocText = Just "The #GtkSizeRequestMode preferred by @widget."
            , sinceVersion = Nothing
            }
      , args =
          [ Arg
              { argCName = "widget"
              , argType = TInterface Name { namespace = "Gtk" , name = "Widget" }
              , argCType = Just "GtkWidget*"
              , direction = DirectionIn
              , mayBeNull = False
              , argDoc =
                  Documentation
                    { rawDocText = Just "a #GtkWidget instance"
                    , sinceVersion = Nothing
                    }
              , argScope = ScopeTypeInvalid
              , argClosure = -1
              , argDestroy = -1
              , argCallerAllocates = False
              , argCallbackUserData = False
              , transfer = TransferNothing
              }
          ]
      , skipReturn = False
      , callableThrows = False
      , callableDeprecated = Nothing
      , callableDocumentation =
          Documentation { rawDocText = Nothing , sinceVersion = Nothing }
      , callableResolvable = Nothing
      }
    -}
    -- | Type for the callback on the (unwrapped) C side.
    type C_WidgetClassGetRequestModeFieldCallback =
        Ptr Gtk.Widget.Widget ->
        IO CUInt

    -- Args: [ Arg
    --           { argCName = "widget"
    --           , argType = TInterface Name { namespace = "Gtk" , name = "Widget" }
    --           , argCType = Just "GtkWidget*"
    --           , direction = DirectionIn
    --           , mayBeNull = False
    --           , argDoc =
    --               Documentation
    --                 { rawDocText = Just "a #GtkWidget instance"
    --                 , sinceVersion = Nothing
    --                 }
    --           , argScope = ScopeTypeInvalid
    --           , argClosure = -1
    --           , argDestroy = -1
    --           , argCallerAllocates = False
    --           , argCallbackUserData = False
    --           , transfer = TransferNothing
    --           }
    --       ]
    -- Lengths: []
    -- returnType: Just
    --               (TInterface Name { namespace = "Gtk" , name = "SizeRequestMode" })
    -- throws : False
    -- Skip return : False

    foreign import ccall "dynamic" __dynamic_C_WidgetClassGetRequestModeFieldCallback :: FunPtr C_WidgetClassGetRequestModeFieldCallback -> C_WidgetClassGetRequestModeFieldCallback

    -- | Given a pointer to a foreign C function, wrap it into a function callable from Haskell.
    dynamic_WidgetClassGetRequestModeFieldCallback ::
        (B.CallStack.HasCallStack, MonadIO m, Gtk.Widget.IsWidget a) =>
        FunPtr C_WidgetClassGetRequestModeFieldCallback
        -> a
        -- ^ /@widget@/: a t'GI.Gtk.Objects.Widget.Widget' instance
        -> m Gtk.Enums.SizeRequestMode
        -- ^ __Returns:__ The t'GI.Gtk.Enums.SizeRequestMode' preferred by /@widget@/.
    dynamic_WidgetClassGetRequestModeFieldCallback :: forall (m :: * -> *) a.
    (HasCallStack, MonadIO m, IsWidget a) =>
    FunPtr C_WidgetClassGetRequestModeFieldCallback
    -> a -> m SizeRequestMode
    dynamic_WidgetClassGetRequestModeFieldCallback FunPtr C_WidgetClassGetRequestModeFieldCallback
    __funPtr a
    widget = IO SizeRequestMode -> m SizeRequestMode
    forall a. IO a -> m a
    forall (m :: * -> *) a. MonadIO m => IO a -> m a
    liftIO (IO SizeRequestMode -> m SizeRequestMode)
    -> IO SizeRequestMode -> m SizeRequestMode
    forall a b. (a -> b) -> a -> b
    $ do
        widget' <- a -> IO (Ptr Widget)
    forall a b. (HasCallStack, ManagedPtrNewtype a) => a -> IO (Ptr b)
    unsafeManagedPtrCastPtr a
    widget
        result <- (__dynamic_C_WidgetClassGetRequestModeFieldCallback __funPtr) widget'
        let result' = (Int -> SizeRequestMode
    forall a. Enum a => Int -> a
    toEnum (Int -> SizeRequestMode)
    -> (CUInt -> Int) -> CUInt -> SizeRequestMode
    forall b c a. (b -> c) -> (a -> b) -> a -> c
    . CUInt -> Int
    forall a b. (Integral a, Num b) => a -> b
    fromIntegral) CUInt
    result
        touchManagedPtr widget
        return result'

    -- | Generate a function pointer callable from C code, from a `C_WidgetClassGetRequestModeFieldCallback`.
    foreign import ccall "wrapper"
        mk_WidgetClassGetRequestModeFieldCallback :: C_WidgetClassGetRequestModeFieldCallback -> IO (FunPtr C_WidgetClassGetRequestModeFieldCallback)

    -- | /No description available in the introspection data./
    type WidgetClassGetRequestModeFieldCallback =
        Gtk.Widget.Widget
        -- ^ /@widget@/: a t'GI.Gtk.Objects.Widget.Widget' instance
        -> IO Gtk.Enums.SizeRequestMode
        -- ^ __Returns:__ The t'GI.Gtk.Enums.SizeRequestMode' preferred by /@widget@/.

    -- | A convenience synonym for @`Nothing` :: `Maybe` `WidgetClassGetRequestModeFieldCallback`@.
    noWidgetClassGetRequestModeFieldCallback :: Maybe WidgetClassGetRequestModeFieldCallback
    noWidgetClassGetRequestModeFieldCallback :: Maybe WidgetClassGetRequestModeFieldCallback
    noWidgetClassGetRequestModeFieldCallback = Maybe WidgetClassGetRequestModeFieldCallback
    forall a. Maybe a
    Nothing

    -- | Wrap the callback into a `GClosure`.
    genClosure_WidgetClassGetRequestModeFieldCallback :: MonadIO m => WidgetClassGetRequestModeFieldCallback -> m (GClosure C_WidgetClassGetRequestModeFieldCallback)
    genClosure_WidgetClassGetRequestModeFieldCallback :: forall (m :: * -> *).
    MonadIO m =>
    WidgetClassGetRequestModeFieldCallback
    -> m (GClosure C_WidgetClassGetRequestModeFieldCallback)
    genClosure_WidgetClassGetRequestModeFieldCallback WidgetClassGetRequestModeFieldCallback
    cb = IO (GClosure C_WidgetClassGetRequestModeFieldCallback)
    -> m (GClosure C_WidgetClassGetRequestModeFieldCallback)
    forall a. IO a -> m a
    forall (m :: * -> *) a. MonadIO m => IO a -> m a
    liftIO (IO (GClosure C_WidgetClassGetRequestModeFieldCallback)
     -> m (GClosure C_WidgetClassGetRequestModeFieldCallback))
    -> IO (GClosure C_WidgetClassGetRequestModeFieldCallback)
    -> m (GClosure C_WidgetClassGetRequestModeFieldCallback)
    forall a b. (a -> b) -> a -> b
    $ do
        let cb' :: C_WidgetClassGetRequestModeFieldCallback
    cb' = Maybe (Ptr (FunPtr C_WidgetClassGetRequestModeFieldCallback))
    -> WidgetClassGetRequestModeFieldCallback
    -> C_WidgetClassGetRequestModeFieldCallback
    wrap_WidgetClassGetRequestModeFieldCallback Maybe (Ptr (FunPtr C_WidgetClassGetRequestModeFieldCallback))
    forall a. Maybe a
    Nothing WidgetClassGetRequestModeFieldCallback
    cb
        C_WidgetClassGetRequestModeFieldCallback
    -> IO (FunPtr C_WidgetClassGetRequestModeFieldCallback)
    mk_WidgetClassGetRequestModeFieldCallback C_WidgetClassGetRequestModeFieldCallback
    cb' IO (FunPtr C_WidgetClassGetRequestModeFieldCallback)
    -> (FunPtr C_WidgetClassGetRequestModeFieldCallback
        -> IO (GClosure C_WidgetClassGetRequestModeFieldCallback))
    -> IO (GClosure C_WidgetClassGetRequestModeFieldCallback)
    forall a b. IO a -> (a -> IO b) -> IO b
    forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
    >>= FunPtr C_WidgetClassGetRequestModeFieldCallback
    -> IO (GClosure C_WidgetClassGetRequestModeFieldCallback)
    forall (m :: * -> *) a. MonadIO m => FunPtr a -> m (GClosure a)
    B.GClosure.newGClosure

    -- | Wrap a `WidgetClassGetRequestModeFieldCallback` into a `C_WidgetClassGetRequestModeFieldCallback`.
    wrap_WidgetClassGetRequestModeFieldCallback ::
        Maybe (Ptr (FunPtr C_WidgetClassGetRequestModeFieldCallback)) ->
        WidgetClassGetRequestModeFieldCallback ->
        C_WidgetClassGetRequestModeFieldCallback
    wrap_WidgetClassGetRequestModeFieldCallback :: Maybe (Ptr (FunPtr C_WidgetClassGetRequestModeFieldCallback))
    -> WidgetClassGetRequestModeFieldCallback
    -> C_WidgetClassGetRequestModeFieldCallback
    wrap_WidgetClassGetRequestModeFieldCallback Maybe (Ptr (FunPtr C_WidgetClassGetRequestModeFieldCallback))
    gi'funptrptr WidgetClassGetRequestModeFieldCallback
    gi'cb Ptr Widget
    widget = do
        widget' <- ((ManagedPtr Widget -> Widget) -> Ptr Widget -> IO Widget
    forall a b.
    (HasCallStack, GObject a, GObject b) =>
    (ManagedPtr a -> a) -> Ptr b -> IO a
    newObject ManagedPtr Widget -> Widget
    Gtk.Widget.Widget) Ptr Widget
    widget
        result <- gi'cb  widget'
        maybeReleaseFunPtr gi'funptrptr
        let result' = (Int -> CUInt
    forall a b. (Integral a, Num b) => a -> b
    fromIntegral (Int -> CUInt)
    -> (SizeRequestMode -> Int) -> SizeRequestMode -> CUInt
    forall b c a. (b -> c) -> (a -> b) -> a -> c
    . SizeRequestMode -> Int
    forall a. Enum a => a -> Int
    fromEnum) SizeRequestMode
    result
        return result'

    -- callback WidgetClassGetPreferredWidthForHeightFieldCallback
    {- Callable
      { returnType = Nothing
      , returnMayBeNull = False
      , returnTransfer = TransferNothing
      , returnDocumentation =
          Documentation { rawDocText = Nothing , sinceVersion = Nothing }
      , args =
          [ Arg
              { argCName = "widget"
              , argType = TInterface Name { namespace = "Gtk" , name = "Widget" }
              , argCType = Just "GtkWidget*"
              , direction = DirectionIn
              , mayBeNull = False
              , argDoc =
                  Documentation
                    { rawDocText = Just "a #GtkWidget instance"
                    , sinceVersion = Nothing
                    }
              , argScope = ScopeTypeInvalid
              , argClosure = -1
              , argDestroy = -1
              , argCallerAllocates = False
              , argCallbackUserData = False
              , transfer = TransferNothing
              }
          , Arg
              { argCName = "height"
              , argType = TBasicType TInt
              , argCType = Just "gint"
              , direction = DirectionIn
              , mayBeNull = False
              , argDoc =
                  Documentation
                    { rawDocText = Just "the height which is available for allocation"
                    , sinceVersion = Nothing
                    }
              , argScope = ScopeTypeInvalid
              , argClosure = -1
              , argDestroy = -1
              , argCallerAllocates = False
              , argCallbackUserData = False
              , transfer = TransferNothing
              }
          , Arg
              { argCName = "minimum_width"
              , argType = TBasicType TInt
              , argCType = Just "gint*"
              , direction = DirectionOut
              , mayBeNull = False
              , argDoc =
                  Documentation
                    { rawDocText =
                        Just "location for storing the minimum width, or %NULL"
                    , sinceVersion = Nothing
                    }
              , argScope = ScopeTypeInvalid
              , argClosure = -1
              , argDestroy = -1
              , argCallerAllocates = False
              , argCallbackUserData = False
              , transfer = TransferEverything
              }
          , Arg
              { argCName = "natural_width"
              , argType = TBasicType TInt
              , argCType = Just "gint*"
              , direction = DirectionOut
              , mayBeNull = False
              , argDoc =
                  Documentation
                    { rawDocText =
                        Just "location for storing the natural width, or %NULL"
                    , sinceVersion = Nothing
                    }
              , argScope = ScopeTypeInvalid
              , argClosure = -1
              , argDestroy = -1
              , argCallerAllocates = False
              , argCallbackUserData = False
              , transfer = TransferEverything
              }
          ]
      , skipReturn = False
      , callableThrows = False
      , callableDeprecated = Nothing
      , callableDocumentation =
          Documentation { rawDocText = Nothing , sinceVersion = Nothing }
      , callableResolvable = Nothing
      }
    -}
    -- | Type for the callback on the (unwrapped) C side.
    type C_WidgetClassGetPreferredWidthForHeightFieldCallback =
        Ptr Gtk.Widget.Widget ->
        Int32 ->
        Ptr Int32 ->
        Ptr Int32 ->
        IO ()

    -- Args: [ Arg
    --           { argCName = "widget"
    --           , argType = TInterface Name { namespace = "Gtk" , name = "Widget" }
    --           , argCType = Just "GtkWidget*"
    --           , direction = DirectionIn
    --           , mayBeNull = False
    --           , argDoc =
    --               Documentation
    --                 { rawDocText = Just "a #GtkWidget instance"
    --                 , sinceVersion = Nothing
    --                 }
    --           , argScope = ScopeTypeInvalid
    --           , argClosure = -1
    --           , argDestroy = -1
    --           , argCallerAllocates = False
    --           , argCallbackUserData = False
    --           , transfer = TransferNothing
    --           }
    --       , Arg
    --           { argCName = "height"
    --           , argType = TBasicType TInt
    --           , argCType = Just "gint"
    --           , direction = DirectionIn
    --           , mayBeNull = False
    --           , argDoc =
    --               Documentation
    --                 { rawDocText = Just "the height which is available for allocation"
    --                 , sinceVersion = Nothing
    --                 }
    --           , argScope = ScopeTypeInvalid
    --           , argClosure = -1
    --           , argDestroy = -1
    --           , argCallerAllocates = False
    --           , argCallbackUserData = False
    --           , transfer = TransferNothing
    --           }
    --       , Arg
    --           { argCName = "minimum_width"
    --           , argType = TBasicType TInt
    --           , argCType = Just "gint*"
    --           , direction = DirectionOut
    --           , mayBeNull = False
    --           , argDoc =
    --               Documentation
    --                 { rawDocText =
    --                     Just "location for storing the minimum width, or %NULL"
    --                 , sinceVersion = Nothing
    --                 }
    --           , argScope = ScopeTypeInvalid
    --           , argClosure = -1
    --           , argDestroy = -1
    --           , argCallerAllocates = False
    --           , argCallbackUserData = False
    --           , transfer = TransferEverything
    --           }
    --       , Arg
    --           { argCName = "natural_width"
    --           , argType = TBasicType TInt
    --           , argCType = Just "gint*"
    --           , direction = DirectionOut
    --           , mayBeNull = False
    --           , argDoc =
    --               Documentation
    --                 { rawDocText =
    --                     Just "location for storing the natural width, or %NULL"
    --                 , sinceVersion = Nothing
    --                 }
    --           , argScope = ScopeTypeInvalid
    --           , argClosure = -1
    --           , argDestroy = -1
    --           , argCallerAllocates = False
    --           , argCallbackUserData = False
    --           , transfer = TransferEverything
    --           }
    --       ]
    -- Lengths: []
    -- returnType: Nothing
    -- throws : False
    -- Skip return : False

    foreign import ccall "dynamic" __dynamic_C_WidgetClassGetPreferredWidthForHeightFieldCallback :: FunPtr C_WidgetClassGetPreferredWidthForHeightFieldCallback -> C_WidgetClassGetPreferredWidthForHeightFieldCallback

    -- | Given a pointer to a foreign C function, wrap it into a function callable from Haskell.
    dynamic_WidgetClassGetPreferredWidthForHeightFieldCallback ::
        (B.CallStack.HasCallStack, MonadIO m, Gtk.Widget.IsWidget a) =>
        FunPtr C_WidgetClassGetPreferredWidthForHeightFieldCallback
        -> a
        -- ^ /@widget@/: a t'GI.Gtk.Objects.Widget.Widget' instance
        -> Int32
        -- ^ /@height@/: the height which is available for allocation
        -> m ((Int32, Int32))
    dynamic_WidgetClassGetPreferredWidthForHeightFieldCallback :: forall (m :: * -> *) a.
    (HasCallStack, MonadIO m, IsWidget a) =>
    FunPtr C_WidgetClassGetPreferredWidthForHeightFieldCallback
    -> a -> Int32 -> m (Int32, Int32)
    dynamic_WidgetClassGetPreferredWidthForHeightFieldCallback FunPtr C_WidgetClassGetPreferredWidthForHeightFieldCallback
    __funPtr a
    widget Int32
    height = IO (Int32, Int32) -> m (Int32, Int32)
    forall a. IO a -> m a
    forall (m :: * -> *) a. MonadIO m => IO a -> m a
    liftIO (IO (Int32, Int32) -> m (Int32, Int32))
    -> IO (Int32, Int32) -> m (Int32, Int32)
    forall a b. (a -> b) -> a -> b
    $ do
        widget' <- a -> IO (Ptr Widget)
    forall a b. (HasCallStack, ManagedPtrNewtype a) => a -> IO (Ptr b)
    unsafeManagedPtrCastPtr a
    widget
        minimumWidth <- allocMem :: IO (Ptr Int32)
        naturalWidth <- allocMem :: IO (Ptr Int32)
        (__dynamic_C_WidgetClassGetPreferredWidthForHeightFieldCallback __funPtr) widget' height minimumWidth naturalWidth
        minimumWidth' <- peek minimumWidth
        naturalWidth' <- peek naturalWidth
        touchManagedPtr widget
        freeMem minimumWidth
        freeMem naturalWidth
        return (minimumWidth', naturalWidth')

    -- | Generate a function pointer callable from C code, from a `C_WidgetClassGetPreferredWidthForHeightFieldCallback`.
    foreign import ccall "wrapper"
        mk_WidgetClassGetPreferredWidthForHeightFieldCallback :: C_WidgetClassGetPreferredWidthForHeightFieldCallback -> IO (FunPtr C_WidgetClassGetPreferredWidthForHeightFieldCallback)

    -- | /No description available in the introspection data./
    type WidgetClassGetPreferredWidthForHeightFieldCallback =
        Gtk.Widget.Widget
        -- ^ /@widget@/: a t'GI.Gtk.Objects.Widget.Widget' instance
        -> Int32
        -- ^ /@height@/: the height which is available for allocation
        -> IO ((Int32, Int32))

    -- | A convenience synonym for @`Nothing` :: `Maybe` `WidgetClassGetPreferredWidthForHeightFieldCallback`@.
    noWidgetClassGetPreferredWidthForHeightFieldCallback :: Maybe WidgetClassGetPreferredWidthForHeightFieldCallback
    noWidgetClassGetPreferredWidthForHeightFieldCallback :: Maybe WidgetClassGetPreferredWidthForHeightFieldCallback
    noWidgetClassGetPreferredWidthForHeightFieldCallback = Maybe WidgetClassGetPreferredWidthForHeightFieldCallback
    forall a. Maybe a
    Nothing

    -- | Wrap the callback into a `GClosure`.
    genClosure_WidgetClassGetPreferredWidthForHeightFieldCallback :: MonadIO m => WidgetClassGetPreferredWidthForHeightFieldCallback -> m (GClosure C_WidgetClassGetPreferredWidthForHeightFieldCallback)
    genClosure_WidgetClassGetPreferredWidthForHeightFieldCallback :: forall (m :: * -> *).
    MonadIO m =>
    WidgetClassGetPreferredWidthForHeightFieldCallback
    -> m (GClosure
            C_WidgetClassGetPreferredWidthForHeightFieldCallback)
    genClosure_WidgetClassGetPreferredWidthForHeightFieldCallback WidgetClassGetPreferredWidthForHeightFieldCallback
    cb = IO (GClosure C_WidgetClassGetPreferredWidthForHeightFieldCallback)
    -> m (GClosure
            C_WidgetClassGetPreferredWidthForHeightFieldCallback)
    forall a. IO a -> m a
    forall (m :: * -> *) a. MonadIO m => IO a -> m a
    liftIO (IO (GClosure C_WidgetClassGetPreferredWidthForHeightFieldCallback)
     -> m (GClosure
             C_WidgetClassGetPreferredWidthForHeightFieldCallback))
    -> IO
         (GClosure C_WidgetClassGetPreferredWidthForHeightFieldCallback)
    -> m (GClosure
            C_WidgetClassGetPreferredWidthForHeightFieldCallback)
    forall a b. (a -> b) -> a -> b
    $ do
        let cb' :: C_WidgetClassGetPreferredWidthForHeightFieldCallback
    cb' = Maybe
      (Ptr (FunPtr C_WidgetClassGetPreferredWidthForHeightFieldCallback))
    -> WidgetClassGetPreferredWidthForHeightFieldCallback
    -> C_WidgetClassGetPreferredWidthForHeightFieldCallback
    wrap_WidgetClassGetPreferredWidthForHeightFieldCallback Maybe
      (Ptr (FunPtr C_WidgetClassGetPreferredWidthForHeightFieldCallback))
    forall a. Maybe a
    Nothing WidgetClassGetPreferredWidthForHeightFieldCallback
    cb
        C_WidgetClassGetPreferredWidthForHeightFieldCallback
    -> IO (FunPtr C_WidgetClassGetPreferredWidthForHeightFieldCallback)
    mk_WidgetClassGetPreferredWidthForHeightFieldCallback C_WidgetClassGetPreferredWidthForHeightFieldCallback
    cb' IO (FunPtr C_WidgetClassGetPreferredWidthForHeightFieldCallback)
    -> (FunPtr C_WidgetClassGetPreferredWidthForHeightFieldCallback
        -> IO
             (GClosure C_WidgetClassGetPreferredWidthForHeightFieldCallback))
    -> IO
         (GClosure C_WidgetClassGetPreferredWidthForHeightFieldCallback)
    forall a b. IO a -> (a -> IO b) -> IO b
    forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
    >>= FunPtr C_WidgetClassGetPreferredWidthForHeightFieldCallback
    -> IO
         (GClosure C_WidgetClassGetPreferredWidthForHeightFieldCallback)
    forall (m :: * -> *) a. MonadIO m => FunPtr a -> m (GClosure a)
    B.GClosure.newGClosure

    -- | Wrap a `WidgetClassGetPreferredWidthForHeightFieldCallback` into a `C_WidgetClassGetPreferredWidthForHeightFieldCallback`.
    wrap_WidgetClassGetPreferredWidthForHeightFieldCallback ::
        Maybe (Ptr (FunPtr C_WidgetClassGetPreferredWidthForHeightFieldCallback)) ->
        WidgetClassGetPreferredWidthForHeightFieldCallback ->
        C_WidgetClassGetPreferredWidthForHeightFieldCallback
    wrap_WidgetClassGetPreferredWidthForHeightFieldCallback :: Maybe
      (Ptr (FunPtr C_WidgetClassGetPreferredWidthForHeightFieldCallback))
    -> WidgetClassGetPreferredWidthForHeightFieldCallback
    -> C_WidgetClassGetPreferredWidthForHeightFieldCallback
    wrap_WidgetClassGetPreferredWidthForHeightFieldCallback Maybe
      (Ptr (FunPtr C_WidgetClassGetPreferredWidthForHeightFieldCallback))
    gi'funptrptr WidgetClassGetPreferredWidthForHeightFieldCallback
    gi'cb Ptr Widget
    widget Int32
    height Ptr Int32
    minimumWidth Ptr Int32
    naturalWidth = do
        widget' <- ((ManagedPtr Widget -> Widget) -> Ptr Widget -> IO Widget
    forall a b.
    (HasCallStack, GObject a, GObject b) =>
    (ManagedPtr a -> a) -> Ptr b -> IO a
    newObject ManagedPtr Widget -> Widget
    Gtk.Widget.Widget) Ptr Widget
    widget
        (outminimumWidth, outnaturalWidth) <- gi'cb  widget' height
        poke minimumWidth outminimumWidth
        poke naturalWidth outnaturalWidth
        maybeReleaseFunPtr gi'funptrptr

    -- callback WidgetClassGetPreferredWidthFieldCallback
    {- Callable
      { returnType = Nothing
      , returnMayBeNull = False
      , returnTransfer = TransferNothing
      , returnDocumentation =
          Documentation { rawDocText = Nothing , sinceVersion = Nothing }
      , args =
          [ Arg
              { argCName = "widget"
              , argType = TInterface Name { namespace = "Gtk" , name = "Widget" }
              , argCType = Just "GtkWidget*"
              , direction = DirectionIn
              , mayBeNull = False
              , argDoc =
                  Documentation
                    { rawDocText = Just "a #GtkWidget instance"
                    , sinceVersion = Nothing
                    }
              , argScope = ScopeTypeInvalid
              , argClosure = -1
              , argDestroy = -1
              , argCallerAllocates = False
              , argCallbackUserData = False
              , transfer = TransferNothing
              }
          , Arg
              { argCName = "minimum_width"
              , argType = TBasicType TInt
              , argCType = Just "gint*"
              , direction = DirectionOut
              , mayBeNull = False
              , argDoc =
                  Documentation
                    { rawDocText = Just "location to store the minimum width, or %NULL"
                    , sinceVersion = Nothing
                    }
              , argScope = ScopeTypeInvalid
              , argClosure = -1
              , argDestroy = -1
              , argCallerAllocates = False
              , argCallbackUserData = False
              , transfer = TransferEverything
              }
          , Arg
              { argCName = "natural_width"
              , argType = TBasicType TInt
              , argCType = Just "gint*"
              , direction = DirectionOut
              , mayBeNull = False
              , argDoc =
                  Documentation
                    { rawDocText = Just "location to store the natural width, or %NULL"
                    , sinceVersion = Nothing
                    }
              , argScope = ScopeTypeInvalid
              , argClosure = -1
              , argDestroy = -1
              , argCallerAllocates = False
              , argCallbackUserData = False
              , transfer = TransferEverything
              }
          ]
      , skipReturn = False
      , callableThrows = False
      , callableDeprecated = Nothing
      , callableDocumentation =
          Documentation { rawDocText = Nothing , sinceVersion = Nothing }
      , callableResolvable = Nothing
      }
    -}
    -- | Type for the callback on the (unwrapped) C side.
    type C_WidgetClassGetPreferredWidthFieldCallback =
        Ptr Gtk.Widget.Widget ->
        Ptr Int32 ->
        Ptr Int32 ->
        IO ()

    -- Args: [ Arg
    --           { argCName = "widget"
    --           , argType = TInterface Name { namespace = "Gtk" , name = "Widget" }
    --           , argCType = Just "GtkWidget*"
    --           , direction = DirectionIn
    --           , mayBeNull = False
    --           , argDoc =
    --               Documentation
    --                 { rawDocText = Just "a #GtkWidget instance"
    --                 , sinceVersion = Nothing
    --                 }
    --           , argScope = ScopeTypeInvalid
    --           , argClosure = -1
    --           , argDestroy = -1
    --           , argCallerAllocates = False
    --           , argCallbackUserData = False
    --           , transfer = TransferNothing
    --           }
    --       , Arg
    --           { argCName = "minimum_width"
    --           , argType = TBasicType TInt
    --           , argCType = Just "gint*"
    --           , direction = DirectionOut
    --           , mayBeNull = False
    --           , argDoc =
    --               Documentation
    --                 { rawDocText = Just "location to store the minimum width, or %NULL"
    --                 , sinceVersion = Nothing
    --                 }
    --           , argScope = ScopeTypeInvalid
    --           , argClosure = -1
    --           , argDestroy = -1
    --           , argCallerAllocates = False
    --           , argCallbackUserData = False
    --           , transfer = TransferEverything
    --           }
    --       , Arg
    --           { argCName = "natural_width"
    --           , argType = TBasicType TInt
    --           , argCType = Just "gint*"
    --           , direction = DirectionOut
    --           , mayBeNull = False
    --           , argDoc =
    --               Documentation
    --                 { rawDocText = Just "location to store the natural width, or %NULL"
    --                 , sinceVersion = Nothing
    --                 }
    --           , argScope = ScopeTypeInvalid
    --           , argClosure = -1
    --           , argDestroy = -1
    --           , argCallerAllocates = False
    --           , argCallbackUserData = False
    --           , transfer = TransferEverything
    --           }
    --       ]
    -- Lengths: []
    -- returnType: Nothing
    -- throws : False
    -- Skip return : False

    foreign import ccall "dynamic" __dynamic_C_WidgetClassGetPreferredWidthFieldCallback :: FunPtr C_WidgetClassGetPreferredWidthFieldCallback -> C_WidgetClassGetPreferredWidthFieldCallback

    -- | Given a pointer to a foreign C function, wrap it into a function callable from Haskell.
    dynamic_WidgetClassGetPreferredWidthFieldCallback ::
        (B.CallStack.HasCallStack, MonadIO m, Gtk.Widget.IsWidget a) =>
        FunPtr C_WidgetClassGetPreferredWidthFieldCallback
        -> a
        -- ^ /@widget@/: a t'GI.Gtk.Objects.Widget.Widget' instance
        -> m ((Int32, Int32))
    dynamic_WidgetClassGetPreferredWidthFieldCallback :: forall (m :: * -> *) a.
    (HasCallStack, MonadIO m, IsWidget a) =>
    FunPtr C_WidgetClassGetPreferredWidthFieldCallback
    -> a -> m (Int32, Int32)
    dynamic_WidgetClassGetPreferredWidthFieldCallback FunPtr C_WidgetClassGetPreferredWidthFieldCallback
    __funPtr a
    widget = IO (Int32, Int32) -> m (Int32, Int32)
    forall a. IO a -> m a
    forall (m :: * -> *) a. MonadIO m => IO a -> m a
    liftIO (IO (Int32, Int32) -> m (Int32, Int32))
    -> IO (Int32, Int32) -> m (Int32, Int32)
    forall a b. (a -> b) -> a -> b
    $ do
        widget' <- a -> IO (Ptr Widget)
    forall a b. (HasCallStack, ManagedPtrNewtype a) => a -> IO (Ptr b)
    unsafeManagedPtrCastPtr a
    widget
        minimumWidth <- allocMem :: IO (Ptr Int32)
        naturalWidth <- allocMem :: IO (Ptr Int32)
        (__dynamic_C_WidgetClassGetPreferredWidthFieldCallback __funPtr) widget' minimumWidth naturalWidth
        minimumWidth' <- peek minimumWidth
        naturalWidth' <- peek naturalWidth
        touchManagedPtr widget
        freeMem minimumWidth
        freeMem naturalWidth
        return (minimumWidth', naturalWidth')

    -- | Generate a function pointer callable from C code, from a `C_WidgetClassGetPreferredWidthFieldCallback`.
    foreign import ccall "wrapper"
        mk_WidgetClassGetPreferredWidthFieldCallback :: C_WidgetClassGetPreferredWidthFieldCallback -> IO (FunPtr C_WidgetClassGetPreferredWidthFieldCallback)

    -- | /No description available in the introspection data./
    type WidgetClassGetPreferredWidthFieldCallback =
        Gtk.Widget.Widget
        -- ^ /@widget@/: a t'GI.Gtk.Objects.Widget.Widget' instance
        -> IO ((Int32, Int32))

    -- | A convenience synonym for @`Nothing` :: `Maybe` `WidgetClassGetPreferredWidthFieldCallback`@.
    noWidgetClassGetPreferredWidthFieldCallback :: Maybe WidgetClassGetPreferredWidthFieldCallback
    noWidgetClassGetPreferredWidthFieldCallback :: Maybe WidgetClassGetPreferredWidthFieldCallback
    noWidgetClassGetPreferredWidthFieldCallback = Maybe WidgetClassGetPreferredWidthFieldCallback
    forall a. Maybe a
    Nothing

    -- | Wrap the callback into a `GClosure`.
    genClosure_WidgetClassGetPreferredWidthFieldCallback :: MonadIO m => WidgetClassGetPreferredWidthFieldCallback -> m (GClosure C_WidgetClassGetPreferredWidthFieldCallback)
    genClosure_WidgetClassGetPreferredWidthFieldCallback :: forall (m :: * -> *).
    MonadIO m =>
    WidgetClassGetPreferredWidthFieldCallback
    -> m (GClosure C_WidgetClassGetPreferredWidthFieldCallback)
    genClosure_WidgetClassGetPreferredWidthFieldCallback WidgetClassGetPreferredWidthFieldCallback
    cb = IO (GClosure C_WidgetClassGetPreferredWidthFieldCallback)
    -> m (GClosure C_WidgetClassGetPreferredWidthFieldCallback)
    forall a. IO a -> m a
    forall (m :: * -> *) a. MonadIO m => IO a -> m a
    liftIO (IO (GClosure C_WidgetClassGetPreferredWidthFieldCallback)
     -> m (GClosure C_WidgetClassGetPreferredWidthFieldCallback))
    -> IO (GClosure C_WidgetClassGetPreferredWidthFieldCallback)
    -> m (GClosure C_WidgetClassGetPreferredWidthFieldCallback)
    forall a b. (a -> b) -> a -> b
    $ do
        let cb' :: C_WidgetClassGetPreferredWidthFieldCallback
    cb' = Maybe (Ptr (FunPtr C_WidgetClassGetPreferredWidthFieldCallback))
    -> WidgetClassGetPreferredWidthFieldCallback
    -> C_WidgetClassGetPreferredWidthFieldCallback
    wrap_WidgetClassGetPreferredWidthFieldCallback Maybe (Ptr (FunPtr C_WidgetClassGetPreferredWidthFieldCallback))
    forall a. Maybe a
    Nothing WidgetClassGetPreferredWidthFieldCallback
    cb
        C_WidgetClassGetPreferredWidthFieldCallback
    -> IO (FunPtr C_WidgetClassGetPreferredWidthFieldCallback)
    mk_WidgetClassGetPreferredWidthFieldCallback C_WidgetClassGetPreferredWidthFieldCallback
    cb' IO (FunPtr C_WidgetClassGetPreferredWidthFieldCallback)
    -> (FunPtr C_WidgetClassGetPreferredWidthFieldCallback
        -> IO (GClosure C_WidgetClassGetPreferredWidthFieldCallback))
    -> IO (GClosure C_WidgetClassGetPreferredWidthFieldCallback)
    forall a b. IO a -> (a -> IO b) -> IO b
    forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
    >>= FunPtr C_WidgetClassGetPreferredWidthFieldCallback
    -> IO (GClosure C_WidgetClassGetPreferredWidthFieldCallback)
    forall (m :: * -> *) a. MonadIO m => FunPtr a -> m (GClosure a)
    B.GClosure.newGClosure

    -- | Wrap a `WidgetClassGetPreferredWidthFieldCallback` into a `C_WidgetClassGetPreferredWidthFieldCallback`.
    wrap_WidgetClassGetPreferredWidthFieldCallback ::
        Maybe (Ptr (FunPtr C_WidgetClassGetPreferredWidthFieldCallback)) ->
        WidgetClassGetPreferredWidthFieldCallback ->
        C_WidgetClassGetPreferredWidthFieldCallback
    wrap_WidgetClassGetPreferredWidthFieldCallback :: Maybe (Ptr (FunPtr C_WidgetClassGetPreferredWidthFieldCallback))
    -> WidgetClassGetPreferredWidthFieldCallback
    -> C_WidgetClassGetPreferredWidthFieldCallback
    wrap_WidgetClassGetPreferredWidthFieldCallback Maybe (Ptr (FunPtr C_WidgetClassGetPreferredWidthFieldCallback))
    gi'funptrptr WidgetClassGetPreferredWidthFieldCallback
    gi'cb Ptr Widget
    widget Ptr Int32
    minimumWidth Ptr Int32
    naturalWidth = do
        widget' <- ((ManagedPtr Widget -> Widget) -> Ptr Widget -> IO Widget
    forall a b.
    (HasCallStack, GObject a, GObject b) =>
    (ManagedPtr a -> a) -> Ptr b -> IO a
    newObject ManagedPtr Widget -> Widget
    Gtk.Widget.Widget) Ptr Widget
    widget
        (outminimumWidth, outnaturalWidth) <- gi'cb  widget'
        poke minimumWidth outminimumWidth
        poke naturalWidth outnaturalWidth
        maybeReleaseFunPtr gi'funptrptr

    -- callback WidgetClassGetPreferredHeightForWidthFieldCallback
    {- Callable
      { returnType = Nothing
      , returnMayBeNull = False
      , returnTransfer = TransferNothing
      , returnDocumentation =
          Documentation { rawDocText = Nothing , sinceVersion = Nothing }
      , args =
          [ Arg
              { argCName = "widget"
              , argType = TInterface Name { namespace = "Gtk" , name = "Widget" }
              , argCType = Just "GtkWidget*"
              , direction = DirectionIn
              , mayBeNull = False
              , argDoc =
                  Documentation
                    { rawDocText = Just "a #GtkWidget instance"
                    , sinceVersion = Nothing
                    }
              , argScope = ScopeTypeInvalid
              , argClosure = -1
              , argDestroy = -1
              , argCallerAllocates = False
              , argCallbackUserData = False
              , transfer = TransferNothing
              }
          , Arg
              { argCName = "width"
              , argType = TBasicType TInt
              , argCType = Just "gint"
              , direction = DirectionIn
              , mayBeNull = False
              , argDoc =
                  Documentation
                    { rawDocText = Just "the width which is available for allocation"
                    , sinceVersion = Nothing
                    }
              , argScope = ScopeTypeInvalid
              , argClosure = -1
              , argDestroy = -1
              , argCallerAllocates = False
              , argCallbackUserData = False
              , transfer = TransferNothing
              }
          , Arg
              { argCName = "minimum_height"
              , argType = TBasicType TInt
              , argCType = Just "gint*"
              , direction = DirectionOut
              , mayBeNull = False
              , argDoc =
                  Documentation
                    { rawDocText =
                        Just "location for storing the minimum height, or %NULL"
                    , sinceVersion = Nothing
                    }
              , argScope = ScopeTypeInvalid
              , argClosure = -1
              , argDestroy = -1
              , argCallerAllocates = False
              , argCallbackUserData = False
              , transfer = TransferEverything
              }
          , Arg
              { argCName = "natural_height"
              , argType = TBasicType TInt
              , argCType = Just "gint*"
              , direction = DirectionOut
              , mayBeNull = False
              , argDoc =
                  Documentation
                    { rawDocText =
                        Just "location for storing the natural height, or %NULL"
                    , sinceVersion = Nothing
                    }
              , argScope = ScopeTypeInvalid
              , argClosure = -1
              , argDestroy = -1
              , argCallerAllocates = False
              , argCallbackUserData = False
              , transfer = TransferEverything
              }
          ]
      , skipReturn = False
      , callableThrows = False
      , callableDeprecated = Nothing
      , callableDocumentation =
          Documentation { rawDocText = Nothing , sinceVersion = Nothing }
      , callableResolvable = Nothing
      }
    -}
    -- | Type for the callback on the (unwrapped) C side.
    type C_WidgetClassGetPreferredHeightForWidthFieldCallback =
        Ptr Gtk.Widget.Widget ->
        Int32 ->
        Ptr Int32 ->
        Ptr Int32 ->
        IO ()

    -- Args: [ Arg
    --           { argCName = "widget"
    --           , argType = TInterface Name { namespace = "Gtk" , name = "Widget" }
    --           , argCType = Just "GtkWidget*"
    --           , direction = DirectionIn
    --           , mayBeNull = False
    --           , argDoc =
    --               Documentation
    --                 { rawDocText = Just "a #GtkWidget instance"
    --                 , sinceVersion = Nothing
    --                 }
    --           , argScope = ScopeTypeInvalid
    --           , argClosure = -1
    --           , argDestroy = -1
    --           , argCallerAllocates = False
    --           , argCallbackUserData = False
    --           , transfer = TransferNothing
    --           }
    --       , Arg
    --           { argCName = "width"
    --           , argType = TBasicType TInt
    --           , argCType = Just "gint"
    --           , direction = DirectionIn
    --           , mayBeNull = False
    --           , argDoc =
    --               Documentation
    --                 { rawDocText = Just "the width which is available for allocation"
    --                 , sinceVersion = Nothing
    --                 }
    --           , argScope = ScopeTypeInvalid
    --           , argClosure = -1
    --           , argDestroy = -1
    --           , argCallerAllocates = False
    --           , argCallbackUserData = False
    --           , transfer = TransferNothing
    --           }
    --       , Arg
    --           { argCName = "minimum_height"
    --           , argType = TBasicType TInt
    --           , argCType = Just "gint*"
    --           , direction = DirectionOut
    --           , mayBeNull = False
    --           , argDoc =
    --               Documentation
    --                 { rawDocText =
    --                     Just "location for storing the minimum height, or %NULL"
    --                 , sinceVersion = Nothing
    --                 }
    --           , argScope = ScopeTypeInvalid
    --           , argClosure = -1
    --           , argDestroy = -1
    --           , argCallerAllocates = False
    --           , argCallbackUserData = False
    --           , transfer = TransferEverything
    --           }
    --       , Arg
    --           { argCName = "natural_height"
    --           , argType = TBasicType TInt
    --           , argCType = Just "gint*"
    --           , direction = DirectionOut
    --           , mayBeNull = False
    --           , argDoc =
    --               Documentation
    --                 { rawDocText =
    --                     Just "location for storing the natural height, or %NULL"
    --                 , sinceVersion = Nothing
    --                 }
    --           , argScope = ScopeTypeInvalid
    --           , argClosure = -1
    --           , argDestroy = -1
    --           , argCallerAllocates = False
    --           , argCallbackUserData = False
    --           , transfer = TransferEverything
    --           }
    --       ]
    -- Lengths: []
    -- returnType: Nothing
    -- throws : False
    -- Skip return : False

    foreign import ccall "dynamic" __dynamic_C_WidgetClassGetPreferredHeightForWidthFieldCallback :: FunPtr C_WidgetClassGetPreferredHeightForWidthFieldCallback -> C_WidgetClassGetPreferredHeightForWidthFieldCallback

    -- | Given a pointer to a foreign C function, wrap it into a function callable from Haskell.
    dynamic_WidgetClassGetPreferredHeightForWidthFieldCallback ::
        (B.CallStack.HasCallStack, MonadIO m, Gtk.Widget.IsWidget a) =>
        FunPtr C_WidgetClassGetPreferredHeightForWidthFieldCallback
        -> a
        -- ^ /@widget@/: a t'GI.Gtk.Objects.Widget.Widget' instance
        -> Int32
        -- ^ /@width@/: the width which is available for allocation
        -> m ((Int32, Int32))
    dynamic_WidgetClassGetPreferredHeightForWidthFieldCallback :: forall (m :: * -> *) a.
    (HasCallStack, MonadIO m, IsWidget a) =>
    FunPtr C_WidgetClassGetPreferredWidthForHeightFieldCallback
    -> a -> Int32 -> m (Int32, Int32)
    dynamic_WidgetClassGetPreferredHeightForWidthFieldCallback FunPtr C_WidgetClassGetPreferredWidthForHeightFieldCallback
    __funPtr a
    widget Int32
    width = IO (Int32, Int32) -> m (Int32, Int32)
    forall a. IO a -> m a
    forall (m :: * -> *) a. MonadIO m => IO a -> m a
    liftIO (IO (Int32, Int32) -> m (Int32, Int32))
    -> IO (Int32, Int32) -> m (Int32, Int32)
    forall a b. (a -> b) -> a -> b
    $ do
        widget' <- a -> IO (Ptr Widget)
    forall a b. (HasCallStack, ManagedPtrNewtype a) => a -> IO (Ptr b)
    unsafeManagedPtrCastPtr a
    widget
        minimumHeight <- allocMem :: IO (Ptr Int32)
        naturalHeight <- allocMem :: IO (Ptr Int32)
        (__dynamic_C_WidgetClassGetPreferredHeightForWidthFieldCallback __funPtr) widget' width minimumHeight naturalHeight
        minimumHeight' <- peek minimumHeight
        naturalHeight' <- peek naturalHeight
        touchManagedPtr widget
        freeMem minimumHeight
        freeMem naturalHeight
        return (minimumHeight', naturalHeight')

    -- | Generate a function pointer callable from C code, from a `C_WidgetClassGetPreferredHeightForWidthFieldCallback`.
    foreign import ccall "wrapper"
        mk_WidgetClassGetPreferredHeightForWidthFieldCallback :: C_WidgetClassGetPreferredHeightForWidthFieldCallback -> IO (FunPtr C_WidgetClassGetPreferredHeightForWidthFieldCallback)

    -- | /No description available in the introspection data./
    type WidgetClassGetPreferredHeightForWidthFieldCallback =
        Gtk.Widget.Widget
        -- ^ /@widget@/: a t'GI.Gtk.Objects.Widget.Widget' instance
        -> Int32
        -- ^ /@width@/: the width which is available for allocation
        -> IO ((Int32, Int32))

    -- | A convenience synonym for @`Nothing` :: `Maybe` `WidgetClassGetPreferredHeightForWidthFieldCallback`@.
    noWidgetClassGetPreferredHeightForWidthFieldCallback :: Maybe WidgetClassGetPreferredHeightForWidthFieldCallback
    noWidgetClassGetPreferredHeightForWidthFieldCallback :: Maybe WidgetClassGetPreferredWidthForHeightFieldCallback
    noWidgetClassGetPreferredHeightForWidthFieldCallback = Maybe WidgetClassGetPreferredWidthForHeightFieldCallback
    forall a. Maybe a
    Nothing

    -- | Wrap the callback into a `GClosure`.
    genClosure_WidgetClassGetPreferredHeightForWidthFieldCallback :: MonadIO m => WidgetClassGetPreferredHeightForWidthFieldCallback -> m (GClosure C_WidgetClassGetPreferredHeightForWidthFieldCallback)
    genClosure_WidgetClassGetPreferredHeightForWidthFieldCallback :: forall (m :: * -> *).
    MonadIO m =>
    WidgetClassGetPreferredWidthForHeightFieldCallback
    -> m (GClosure
            C_WidgetClassGetPreferredWidthForHeightFieldCallback)
    genClosure_WidgetClassGetPreferredHeightForWidthFieldCallback WidgetClassGetPreferredWidthForHeightFieldCallback
    cb = IO (GClosure C_WidgetClassGetPreferredWidthForHeightFieldCallback)
    -> m (GClosure
            C_WidgetClassGetPreferredWidthForHeightFieldCallback)
    forall a. IO a -> m a
    forall (m :: * -> *) a. MonadIO m => IO a -> m a
    liftIO (IO (GClosure C_WidgetClassGetPreferredWidthForHeightFieldCallback)
     -> m (GClosure
             C_WidgetClassGetPreferredWidthForHeightFieldCallback))
    -> IO
         (GClosure C_WidgetClassGetPreferredWidthForHeightFieldCallback)
    -> m (GClosure
            C_WidgetClassGetPreferredWidthForHeightFieldCallback)
    forall a b. (a -> b) -> a -> b
    $ do
        let cb' :: C_WidgetClassGetPreferredWidthForHeightFieldCallback
    cb' = Maybe
      (Ptr (FunPtr C_WidgetClassGetPreferredWidthForHeightFieldCallback))
    -> WidgetClassGetPreferredWidthForHeightFieldCallback
    -> C_WidgetClassGetPreferredWidthForHeightFieldCallback
    wrap_WidgetClassGetPreferredHeightForWidthFieldCallback Maybe
      (Ptr (FunPtr C_WidgetClassGetPreferredWidthForHeightFieldCallback))
    forall a. Maybe a
    Nothing WidgetClassGetPreferredWidthForHeightFieldCallback
    cb
        C_WidgetClassGetPreferredWidthForHeightFieldCallback
    -> IO (FunPtr C_WidgetClassGetPreferredWidthForHeightFieldCallback)
    mk_WidgetClassGetPreferredHeightForWidthFieldCallback C_WidgetClassGetPreferredWidthForHeightFieldCallback
    cb' IO (FunPtr C_WidgetClassGetPreferredWidthForHeightFieldCallback)
    -> (FunPtr C_WidgetClassGetPreferredWidthForHeightFieldCallback
        -> IO
             (GClosure C_WidgetClassGetPreferredWidthForHeightFieldCallback))
    -> IO
         (GClosure C_WidgetClassGetPreferredWidthForHeightFieldCallback)
    forall a b. IO a -> (a -> IO b) -> IO b
    forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
    >>= FunPtr C_WidgetClassGetPreferredWidthForHeightFieldCallback
    -> IO
         (GClosure C_WidgetClassGetPreferredWidthForHeightFieldCallback)
    forall (m :: * -> *) a. MonadIO m => FunPtr a -> m (GClosure a)
    B.GClosure.newGClosure

    -- | Wrap a `WidgetClassGetPreferredHeightForWidthFieldCallback` into a `C_WidgetClassGetPreferredHeightForWidthFieldCallback`.
    wrap_WidgetClassGetPreferredHeightForWidthFieldCallback ::
        Maybe (Ptr (FunPtr C_WidgetClassGetPreferredHeightForWidthFieldCallback)) ->
        WidgetClassGetPreferredHeightForWidthFieldCallback ->
        C_WidgetClassGetPreferredHeightForWidthFieldCallback
    wrap_WidgetClassGetPreferredHeightForWidthFieldCallback :: Maybe
      (Ptr (FunPtr C_WidgetClassGetPreferredWidthForHeightFieldCallback))
    -> WidgetClassGetPreferredWidthForHeightFieldCallback
    -> C_WidgetClassGetPreferredWidthForHeightFieldCallback
    wrap_WidgetClassGetPreferredHeightForWidthFieldCallback Maybe
      (Ptr (FunPtr C_WidgetClassGetPreferredWidthForHeightFieldCallback))
    gi'funptrptr WidgetClassGetPreferredWidthForHeightFieldCallback
    gi'cb Ptr Widget
    widget Int32
    width Ptr Int32
    minimumHeight Ptr Int32
    naturalHeight = do
        widget' <- ((ManagedPtr Widget -> Widget) -> Ptr Widget -> IO Widget
    forall a b.
    (HasCallStack, GObject a, GObject b) =>
    (ManagedPtr a -> a) -> Ptr b -> IO a
    newObject ManagedPtr Widget -> Widget
    Gtk.Widget.Widget) Ptr Widget
    widget
        (outminimumHeight, outnaturalHeight) <- gi'cb  widget' width
        poke minimumHeight outminimumHeight
        poke naturalHeight outnaturalHeight
        maybeReleaseFunPtr gi'funptrptr

    -- callback WidgetClassGetPreferredHeightFieldCallback
    {- Callable
      { returnType = Nothing
      , returnMayBeNull = False
      , returnTransfer = TransferNothing
      , returnDocumentation =
          Documentation { rawDocText = Nothing , sinceVersion = Nothing }
      , args =
          [ Arg
              { argCName = "widget"
              , argType = TInterface Name { namespace = "Gtk" , name = "Widget" }
              , argCType = Just "GtkWidget*"
              , direction = DirectionIn
              , mayBeNull = False
              , argDoc =
                  Documentation
                    { rawDocText = Just "a #GtkWidget instance"
                    , sinceVersion = Nothing
                    }
              , argScope = ScopeTypeInvalid
              , argClosure = -1
              , argDestroy = -1
              , argCallerAllocates = False
              , argCallbackUserData = False
              , transfer = TransferNothing
              }
          , Arg
              { argCName = "minimum_height"
              , argType = TBasicType TInt
              , argCType = Just "gint*"
              , direction = DirectionOut
              , mayBeNull = False
              , argDoc =
                  Documentation
                    { rawDocText =
                        Just "location to store the minimum height, or %NULL"
                    , sinceVersion = Nothing
                    }
              , argScope = ScopeTypeInvalid
              , argClosure = -1
              , argDestroy = -1
              , argCallerAllocates = False
              , argCallbackUserData = False
              , transfer = TransferEverything
              }
          , Arg
              { argCName = "natural_height"
              , argType = TBasicType TInt
              , argCType = Just "gint*"
              , direction = DirectionOut
              , mayBeNull = False
              , argDoc =
                  Documentation
                    { rawDocText =
                        Just "location to store the natural height, or %NULL"
                    , sinceVersion = Nothing
                    }
              , argScope = ScopeTypeInvalid
              , argClosure = -1
              , argDestroy = -1
              , argCallerAllocates = False
              , argCallbackUserData = False
              , transfer = TransferEverything
              }
          ]
      , skipReturn = False
      , callableThrows = False
      , callableDeprecated = Nothing
      , callableDocumentation =
          Documentation { rawDocText = Nothing , sinceVersion = Nothing }
      , callableResolvable = Nothing
      }
    -}
    -- | Type for the callback on the (unwrapped) C side.
    type C_WidgetClassGetPreferredHeightFieldCallback =
        Ptr Gtk.Widget.Widget ->
        Ptr Int32 ->
        Ptr Int32 ->
        IO ()

    -- Args: [ Arg
    --           { argCName = "widget"
    --           , argType = TInterface Name { namespace = "Gtk" , name = "Widget" }
    --           , argCType = Just "GtkWidget*"
    --           , direction = DirectionIn
    --           , mayBeNull = False
    --           , argDoc =
    --               Documentation
    --                 { rawDocText = Just "a #GtkWidget instance"
    --                 , sinceVersion = Nothing
    --                 }
    --           , argScope = ScopeTypeInvalid
    --           , argClosure = -1
    --           , argDestroy = -1
    --           , argCallerAllocates = False
    --           , argCallbackUserData = False
    --           , transfer = TransferNothing
    --           }
    --       , Arg
    --           { argCName = "minimum_height"
    --           , argType = TBasicType TInt
    --           , argCType = Just "gint*"
    --           , direction = DirectionOut
    --           , mayBeNull = False
    --           , argDoc =
    --               Documentation
    --                 { rawDocText =
    --                     Just "location to store the minimum height, or %NULL"
    --                 , sinceVersion = Nothing
    --                 }
    --           , argScope = ScopeTypeInvalid
    --           , argClosure = -1
    --           , argDestroy = -1
    --           , argCallerAllocates = False
    --           , argCallbackUserData = False
    --           , transfer = TransferEverything
    --           }
    --       , Arg
    --           { argCName = "natural_height"
    --           , argType = TBasicType TInt
    --           , argCType = Just "gint*"
    --           , direction = DirectionOut
    --           , mayBeNull = False
    --           , argDoc =
    --               Documentation
    --                 { rawDocText =
    --                     Just "location to store the natural height, or %NULL"
    --                 , sinceVersion = Nothing
    --                 }
    --           , argScope = ScopeTypeInvalid
    --           , argClosure = -1
    --           , argDestroy = -1
    --           , argCallerAllocates = False
    --           , argCallbackUserData = False
    --           , transfer = TransferEverything
    --           }
    --       ]
    -- Lengths: []
    -- returnType: Nothing
    -- throws : False
    -- Skip return : False

    foreign import ccall "dynamic" __dynamic_C_WidgetClassGetPreferredHeightFieldCallback :: FunPtr C_WidgetClassGetPreferredHeightFieldCallback -> C_WidgetClassGetPreferredHeightFieldCallback

    -- | Given a pointer to a foreign C function, wrap it into a function callable from Haskell.
    dynamic_WidgetClassGetPreferredHeightFieldCallback ::
        (B.CallStack.HasCallStack, MonadIO m, Gtk.Widget.IsWidget a) =>
        FunPtr C_WidgetClassGetPreferredHeightFieldCallback
        -> a
        -- ^ /@widget@/: a t'GI.Gtk.Objects.Widget.Widget' instance
        -> m ((Int32, Int32))
    dynamic_WidgetClassGetPreferredHeightFieldCallback :: forall (m :: * -> *) a.
    (HasCallStack, MonadIO m, IsWidget a) =>
    FunPtr C_WidgetClassGetPreferredWidthFieldCallback
    -> a -> m (Int32, Int32)
    dynamic_WidgetClassGetPreferredHeightFieldCallback FunPtr C_WidgetClassGetPreferredWidthFieldCallback
    __funPtr a
    widget = IO (Int32, Int32) -> m (Int32, Int32)
    forall a. IO a -> m a
    forall (m :: * -> *) a. MonadIO m => IO a -> m a
    liftIO (IO (Int32, Int32) -> m (Int32, Int32))
    -> IO (Int32, Int32) -> m (Int32, Int32)
    forall a b. (a -> b) -> a -> b
    $ do
        widget' <- a -> IO (Ptr Widget)
    forall a b. (HasCallStack, ManagedPtrNewtype a) => a -> IO (Ptr b)
    unsafeManagedPtrCastPtr a
    widget
        minimumHeight <- allocMem :: IO (Ptr Int32)
        naturalHeight <- allocMem :: IO (Ptr Int32)
        (__dynamic_C_WidgetClassGetPreferredHeightFieldCallback __funPtr) widget' minimumHeight naturalHeight
        minimumHeight' <- peek minimumHeight
        naturalHeight' <- peek naturalHeight
        touchManagedPtr widget
        freeMem minimumHeight
        freeMem naturalHeight
        return (minimumHeight', naturalHeight')

    -- | Generate a function pointer callable from C code, from a `C_WidgetClassGetPreferredHeightFieldCallback`.
    foreign import ccall "wrapper"
        mk_WidgetClassGetPreferredHeightFieldCallback :: C_WidgetClassGetPreferredHeightFieldCallback -> IO (FunPtr C_WidgetClassGetPreferredHeightFieldCallback)

    -- | /No description available in the introspection data./
    type WidgetClassGetPreferredHeightFieldCallback =
        Gtk.Widget.Widget
        -- ^ /@widget@/: a t'GI.Gtk.Objects.Widget.Widget' instance
        -> IO ((Int32, Int32))

    -- | A convenience synonym for @`Nothing` :: `Maybe` `WidgetClassGetPreferredHeightFieldCallback`@.
    noWidgetClassGetPreferredHeightFieldCallback :: Maybe WidgetClassGetPreferredHeightFieldCallback
    noWidgetClassGetPreferredHeightFieldCallback :: Maybe WidgetClassGetPreferredWidthFieldCallback
    noWidgetClassGetPreferredHeightFieldCallback = Maybe WidgetClassGetPreferredWidthFieldCallback
    forall a. Maybe a
    Nothing

    -- | Wrap the callback into a `GClosure`.
    genClosure_WidgetClassGetPreferredHeightFieldCallback :: MonadIO m => WidgetClassGetPreferredHeightFieldCallback -> m (GClosure C_WidgetClassGetPreferredHeightFieldCallback)
    genClosure_WidgetClassGetPreferredHeightFieldCallback :: forall (m :: * -> *).
    MonadIO m =>
    WidgetClassGetPreferredWidthFieldCallback
    -> m (GClosure C_WidgetClassGetPreferredWidthFieldCallback)
    genClosure_WidgetClassGetPreferredHeightFieldCallback WidgetClassGetPreferredWidthFieldCallback
    cb = IO (GClosure C_WidgetClassGetPreferredWidthFieldCallback)
    -> m (GClosure C_WidgetClassGetPreferredWidthFieldCallback)
    forall a. IO a -> m a
    forall (m :: * -> *) a. MonadIO m => IO a -> m a
    liftIO (IO (GClosure C_WidgetClassGetPreferredWidthFieldCallback)
     -> m (GClosure C_WidgetClassGetPreferredWidthFieldCallback))
    -> IO (GClosure C_WidgetClassGetPreferredWidthFieldCallback)
    -> m (GClosure C_WidgetClassGetPreferredWidthFieldCallback)
    forall a b. (a -> b) -> a -> b
    $ do
        let cb' :: C_WidgetClassGetPreferredWidthFieldCallback
    cb' = Maybe (Ptr (FunPtr C_WidgetClassGetPreferredWidthFieldCallback))
    -> WidgetClassGetPreferredWidthFieldCallback
    -> C_WidgetClassGetPreferredWidthFieldCallback
    wrap_WidgetClassGetPreferredHeightFieldCallback Maybe (Ptr (FunPtr C_WidgetClassGetPreferredWidthFieldCallback))
    forall a. Maybe a
    Nothing WidgetClassGetPreferredWidthFieldCallback
    cb
        C_WidgetClassGetPreferredWidthFieldCallback
    -> IO (FunPtr C_WidgetClassGetPreferredWidthFieldCallback)
    mk_WidgetClassGetPreferredHeightFieldCallback C_WidgetClassGetPreferredWidthFieldCallback
    cb' IO (FunPtr C_WidgetClassGetPreferredWidthFieldCallback)
    -> (FunPtr C_WidgetClassGetPreferredWidthFieldCallback
        -> IO (GClosure C_WidgetClassGetPreferredWidthFieldCallback))
    -> IO (GClosure C_WidgetClassGetPreferredWidthFieldCallback)
    forall a b. IO a -> (a -> IO b) -> IO b
    forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
    >>= FunPtr C_WidgetClassGetPreferredWidthFieldCallback
    -> IO (GClosure C_WidgetClassGetPreferredWidthFieldCallback)
    forall (m :: * -> *) a. MonadIO m => FunPtr a -> m (GClosure a)
    B.GClosure.newGClosure

    -- | Wrap a `WidgetClassGetPreferredHeightFieldCallback` into a `C_WidgetClassGetPreferredHeightFieldCallback`.
    wrap_WidgetClassGetPreferredHeightFieldCallback ::
        Maybe (Ptr (FunPtr C_WidgetClassGetPreferredHeightFieldCallback)) ->
        WidgetClassGetPreferredHeightFieldCallback ->
        C_WidgetClassGetPreferredHeightFieldCallback
    wrap_WidgetClassGetPreferredHeightFieldCallback :: Maybe (Ptr (FunPtr C_WidgetClassGetPreferredWidthFieldCallback))
    -> WidgetClassGetPreferredWidthFieldCallback
    -> C_WidgetClassGetPreferredWidthFieldCallback
    wrap_WidgetClassGetPreferredHeightFieldCallback Maybe (Ptr (FunPtr C_WidgetClassGetPreferredWidthFieldCallback))
    gi'funptrptr WidgetClassGetPreferredWidthFieldCallback
    gi'cb Ptr Widget
    widget Ptr Int32
    minimumHeight Ptr Int32
    naturalHeight = do
        widget' <- ((ManagedPtr Widget -> Widget) -> Ptr Widget -> IO Widget
    forall a b.
    (HasCallStack, GObject a, GObject b) =>
    (ManagedPtr a -> a) -> Ptr b -> IO a
    newObject ManagedPtr Widget -> Widget
    Gtk.Widget.Widget) Ptr Widget
    widget
        (outminimumHeight, outnaturalHeight) <- gi'cb  widget'
        poke minimumHeight outminimumHeight
        poke naturalHeight outnaturalHeight
        maybeReleaseFunPtr gi'funptrptr

    -- callback WidgetClassGetPreferredHeightAndBaselineForWidthFieldCallback
    {- Callable
      { returnType = Nothing
      , returnMayBeNull = False
      , returnTransfer = TransferNothing
      , returnDocumentation =
          Documentation { rawDocText = Nothing , sinceVersion = Nothing }
      , args =
          [ Arg
              { argCName = "widget"
              , argType = TInterface Name { namespace = "Gtk" , name = "Widget" }
              , argCType = Just "GtkWidget*"
              , direction = DirectionIn
              , mayBeNull = False
              , argDoc =
                  Documentation
                    { rawDocText = Just "a #GtkWidget instance"
                    , sinceVersion = Nothing
                    }
              , argScope = ScopeTypeInvalid
              , argClosure = -1
              , argDestroy = -1
              , argCallerAllocates = False
              , argCallbackUserData = False
              , transfer = TransferNothing
              }
          , Arg
              { argCName = "width"
              , argType = TBasicType TInt
              , argCType = Just "gint"
              , direction = DirectionIn
              , mayBeNull = False
              , argDoc =
                  Documentation
                    { rawDocText =
                        Just "the width which is available for allocation, or -1 if none"
                    , sinceVersion = Nothing
                    }
              , argScope = ScopeTypeInvalid
              , argClosure = -1
              , argDestroy = -1
              , argCallerAllocates = False
              , argCallbackUserData = False
              , transfer = TransferNothing
              }
          , Arg
              { argCName = "minimum_height"
              , argType = TBasicType TInt
              , argCType = Just "gint*"
              , direction = DirectionOut
              , mayBeNull = False
              , argDoc =
                  Documentation
                    { rawDocText =
                        Just "location for storing the minimum height, or %NULL"
                    , sinceVersion = Nothing
                    }
              , argScope = ScopeTypeInvalid
              , argClosure = -1
              , argDestroy = -1
              , argCallerAllocates = False
              , argCallbackUserData = False
              , transfer = TransferEverything
              }
          , Arg
              { argCName = "natural_height"
              , argType = TBasicType TInt
              , argCType = Just "gint*"
              , direction = DirectionOut
              , mayBeNull = False
              , argDoc =
                  Documentation
                    { rawDocText =
                        Just "location for storing the natural height, or %NULL"
                    , sinceVersion = Nothing
                    }
              , argScope = ScopeTypeInvalid
              , argClosure = -1
              , argDestroy = -1
              , argCallerAllocates = False
              , argCallbackUserData = False
              , transfer = TransferEverything
              }
          , Arg
              { argCName = "minimum_baseline"
              , argType = TBasicType TInt
              , argCType = Just "gint*"
              , direction = DirectionOut
              , mayBeNull = False
              , argDoc =
                  Documentation
                    { rawDocText =
                        Just
                          "location for storing the baseline for the minimum height, or %NULL"
                    , sinceVersion = Nothing
                    }
              , argScope = ScopeTypeInvalid
              , argClosure = -1
              , argDestroy = -1
              , argCallerAllocates = False
              , argCallbackUserData = False
              , transfer = TransferEverything
              }
          , Arg
              { argCName = "natural_baseline"
              , argType = TBasicType TInt
              , argCType = Just "gint*"
              , direction = DirectionOut
              , mayBeNull = False
              , argDoc =
                  Documentation
                    { rawDocText =
                        Just
                          "location for storing the baseline for the natural height, or %NULL"
                    , sinceVersion = Nothing
                    }
              , argScope = ScopeTypeInvalid
              , argClosure = -1
              , argDestroy = -1
              , argCallerAllocates = False
              , argCallbackUserData = False
              , transfer = TransferEverything
              }
          ]
      , skipReturn = False
      , callableThrows = False
      , callableDeprecated = Nothing
      , callableDocumentation =
          Documentation { rawDocText = Nothing , sinceVersion = Nothing }
      , callableResolvable = Nothing
      }
    -}
    -- | Type for the callback on the (unwrapped) C side.
    type C_WidgetClassGetPreferredHeightAndBaselineForWidthFieldCallback =
        Ptr Gtk.Widget.Widget ->
        Int32 ->
        Ptr Int32 ->
        Ptr Int32 ->
        Ptr Int32 ->
        Ptr Int32 ->
        IO ()

    -- Args: [ Arg
    --           { argCName = "widget"
    --           , argType = TInterface Name { namespace = "Gtk" , name = "Widget" }
    --           , argCType = Just "GtkWidget*"
    --           , direction = DirectionIn
    --           , mayBeNull = False
    --           , argDoc =
    --               Documentation
    --                 { rawDocText = Just "a #GtkWidget instance"
    --                 , sinceVersion = Nothing
    --                 }
    --           , argScope = ScopeTypeInvalid
    --           , argClosure = -1
    --           , argDestroy = -1
    --           , argCallerAllocates = False
    --           , argCallbackUserData = False
    --           , transfer = TransferNothing
    --           }
    --       , Arg
    --           { argCName = "width"
    --           , argType = TBasicType TInt
    --           , argCType = Just "gint"
    --           , direction = DirectionIn
    --           , mayBeNull = False
    --           , argDoc =
    --               Documentation
    --                 { rawDocText =
    --                     Just "the width which is available for allocation, or -1 if none"
    --                 , sinceVersion = Nothing
    --                 }
    --           , argScope = ScopeTypeInvalid
    --           , argClosure = -1
    --           , argDestroy = -1
    --           , argCallerAllocates = False
    --           , argCallbackUserData = False
    --           , transfer = TransferNothing
    --           }
    --       , Arg
    --           { argCName = "minimum_height"
    --           , argType = TBasicType TInt
    --           , argCType = Just "gint*"
    --           , direction = DirectionOut
    --           , mayBeNull = False
    --           , argDoc =
    --               Documentation
    --                 { rawDocText =
    --                     Just "location for storing the minimum height, or %NULL"
    --                 , sinceVersion = Nothing
    --                 }
    --           , argScope = ScopeTypeInvalid
    --           , argClosure = -1
    --           , argDestroy = -1
    --           , argCallerAllocates = False
    --           , argCallbackUserData = False
    --           , transfer = TransferEverything
    --           }
    --       , Arg
    --           { argCName = "natural_height"
    --           , argType = TBasicType TInt
    --           , argCType = Just "gint*"
    --           , direction = DirectionOut
    --           , mayBeNull = False
    --           , argDoc =
    --               Documentation
    --                 { rawDocText =
    --                     Just "location for storing the natural height, or %NULL"
    --                 , sinceVersion = Nothing
    --                 }
    --           , argScope = ScopeTypeInvalid
    --           , argClosure = -1
    --           , argDestroy = -1
    --           , argCallerAllocates = False
    --           , argCallbackUserData = False
    --           , transfer = TransferEverything
    --           }
    --       , Arg
    --           { argCName = "minimum_baseline"
    --           , argType = TBasicType TInt
    --           , argCType = Just "gint*"
    --           , direction = DirectionOut
    --           , mayBeNull = False
    --           , argDoc =
    --               Documentation
    --                 { rawDocText =
    --                     Just
    --                       "location for storing the baseline for the minimum height, or %NULL"
    --                 , sinceVersion = Nothing
    --                 }
    --           , argScope = ScopeTypeInvalid
    --           , argClosure = -1
    --           , argDestroy = -1
    --           , argCallerAllocates = False
    --           , argCallbackUserData = False
    --           , transfer = TransferEverything
    --           }
    --       , Arg
    --           { argCName = "natural_baseline"
    --           , argType = TBasicType TInt
    --           , argCType = Just "gint*"
    --           , direction = DirectionOut
    --           , mayBeNull = False
    --           , argDoc =
    --               Documentation
    --                 { rawDocText =
    --                     Just
    --                       "location for storing the baseline for the natural height, or %NULL"
    --                 , sinceVersion = Nothing
    --                 }
    --           , argScope = ScopeTypeInvalid
    --           , argClosure = -1
    --           , argDestroy = -1
    --           , argCallerAllocates = False
    --           , argCallbackUserData = False
    --           , transfer = TransferEverything
    --           }
    --       ]
    -- Lengths: []
    -- returnType: Nothing
    -- throws : False
    -- Skip return : False

    foreign import ccall "dynamic" __dynamic_C_WidgetClassGetPreferredHeightAndBaselineForWidthFieldCallback :: FunPtr C_WidgetClassGetPreferredHeightAndBaselineForWidthFieldCallback -> C_WidgetClassGetPreferredHeightAndBaselineForWidthFieldCallback

    -- | Given a pointer to a foreign C function, wrap it into a function callable from Haskell.
    dynamic_WidgetClassGetPreferredHeightAndBaselineForWidthFieldCallback ::
        (B.CallStack.HasCallStack, MonadIO m, Gtk.Widget.IsWidget a) =>
        FunPtr C_WidgetClassGetPreferredHeightAndBaselineForWidthFieldCallback
        -> a
        -- ^ /@widget@/: a t'GI.Gtk.Objects.Widget.Widget' instance
        -> Int32
        -- ^ /@width@/: the width which is available for allocation, or -1 if none
        -> m ((Int32, Int32, Int32, Int32))
    dynamic_WidgetClassGetPreferredHeightAndBaselineForWidthFieldCallback :: forall (m :: * -> *) a.
    (HasCallStack, MonadIO m, IsWidget a) =>
    FunPtr
      C_WidgetClassGetPreferredHeightAndBaselineForWidthFieldCallback
    -> a -> Int32 -> m (Int32, Int32, Int32, Int32)
    dynamic_WidgetClassGetPreferredHeightAndBaselineForWidthFieldCallback FunPtr
      C_WidgetClassGetPreferredHeightAndBaselineForWidthFieldCallback
    __funPtr a
    widget Int32
    width = IO (Int32, Int32, Int32, Int32) -> m (Int32, Int32, Int32, Int32)
    forall a. IO a -> m a
    forall (m :: * -> *) a. MonadIO m => IO a -> m a
    liftIO (IO (Int32, Int32, Int32, Int32) -> m (Int32, Int32, Int32, Int32))
    -> IO (Int32, Int32, Int32, Int32)
    -> m (Int32, Int32, Int32, Int32)
    forall a b. (a -> b) -> a -> b
    $ do
        widget' <- a -> IO (Ptr Widget)
    forall a b. (HasCallStack, ManagedPtrNewtype a) => a -> IO (Ptr b)
    unsafeManagedPtrCastPtr a
    widget
        minimumHeight <- allocMem :: IO (Ptr Int32)
        naturalHeight <- allocMem :: IO (Ptr Int32)
        minimumBaseline <- allocMem :: IO (Ptr Int32)
        naturalBaseline <- allocMem :: IO (Ptr Int32)
        (__dynamic_C_WidgetClassGetPreferredHeightAndBaselineForWidthFieldCallback __funPtr) widget' width minimumHeight naturalHeight minimumBaseline naturalBaseline
        minimumHeight' <- peek minimumHeight
        naturalHeight' <- peek naturalHeight
        minimumBaseline' <- peek minimumBaseline
        naturalBaseline' <- peek naturalBaseline
        touchManagedPtr widget
        freeMem minimumHeight
        freeMem naturalHeight
        freeMem minimumBaseline
        freeMem naturalBaseline
        return (minimumHeight', naturalHeight', minimumBaseline', naturalBaseline')

    -- | Generate a function pointer callable from C code, from a `C_WidgetClassGetPreferredHeightAndBaselineForWidthFieldCallback`.
    foreign import ccall "wrapper"
        mk_WidgetClassGetPreferredHeightAndBaselineForWidthFieldCallback :: C_WidgetClassGetPreferredHeightAndBaselineForWidthFieldCallback -> IO (FunPtr C_WidgetClassGetPreferredHeightAndBaselineForWidthFieldCallback)

    -- | /No description available in the introspection data./
    type WidgetClassGetPreferredHeightAndBaselineForWidthFieldCallback =
        Gtk.Widget.Widget
        -- ^ /@widget@/: a t'GI.Gtk.Objects.Widget.Widget' instance
        -> Int32
        -- ^ /@width@/: the width which is available for allocation, or -1 if none
        -> IO ((Int32, Int32, Int32, Int32))

    -- | A convenience synonym for @`Nothing` :: `Maybe` `WidgetClassGetPreferredHeightAndBaselineForWidthFieldCallback`@.
    noWidgetClassGetPreferredHeightAndBaselineForWidthFieldCallback :: Maybe WidgetClassGetPreferredHeightAndBaselineForWidthFieldCallback
    noWidgetClassGetPreferredHeightAndBaselineForWidthFieldCallback :: Maybe WidgetClassGetPreferredHeightAndBaselineForWidthFieldCallback
    noWidgetClassGetPreferredHeightAndBaselineForWidthFieldCallback = Maybe WidgetClassGetPreferredHeightAndBaselineForWidthFieldCallback
    forall a. Maybe a
    Nothing

    -- | Wrap the callback into a `GClosure`.
    genClosure_WidgetClassGetPreferredHeightAndBaselineForWidthFieldCallback :: MonadIO m => WidgetClassGetPreferredHeightAndBaselineForWidthFieldCallback -> m (GClosure C_WidgetClassGetPreferredHeightAndBaselineForWidthFieldCallback)
    genClosure_WidgetClassGetPreferredHeightAndBaselineForWidthFieldCallback :: forall (m :: * -> *).
    MonadIO m =>
    WidgetClassGetPreferredHeightAndBaselineForWidthFieldCallback
    -> m (GClosure
            C_WidgetClassGetPreferredHeightAndBaselineForWidthFieldCallback)
    genClosure_WidgetClassGetPreferredHeightAndBaselineForWidthFieldCallback WidgetClassGetPreferredHeightAndBaselineForWidthFieldCallback
    cb = IO
      (GClosure
         C_WidgetClassGetPreferredHeightAndBaselineForWidthFieldCallback)
    -> m (GClosure
            C_WidgetClassGetPreferredHeightAndBaselineForWidthFieldCallback)
    forall a. IO a -> m a
    forall (m :: * -> *) a. MonadIO m => IO a -> m a
    liftIO (IO
       (GClosure
          C_WidgetClassGetPreferredHeightAndBaselineForWidthFieldCallback)
     -> m (GClosure
             C_WidgetClassGetPreferredHeightAndBaselineForWidthFieldCallback))
    -> IO
         (GClosure
            C_WidgetClassGetPreferredHeightAndBaselineForWidthFieldCallback)
    -> m (GClosure
            C_WidgetClassGetPreferredHeightAndBaselineForWidthFieldCallback)
    forall a b. (a -> b) -> a -> b
    $ do
        let cb' :: C_WidgetClassGetPreferredHeightAndBaselineForWidthFieldCallback
    cb' = Maybe
      (Ptr
         (FunPtr
            C_WidgetClassGetPreferredHeightAndBaselineForWidthFieldCallback))
    -> WidgetClassGetPreferredHeightAndBaselineForWidthFieldCallback
    -> C_WidgetClassGetPreferredHeightAndBaselineForWidthFieldCallback
    wrap_WidgetClassGetPreferredHeightAndBaselineForWidthFieldCallback Maybe
      (Ptr
         (FunPtr
            C_WidgetClassGetPreferredHeightAndBaselineForWidthFieldCallback))
    forall a. Maybe a
    Nothing WidgetClassGetPreferredHeightAndBaselineForWidthFieldCallback
    cb
        C_WidgetClassGetPreferredHeightAndBaselineForWidthFieldCallback
    -> IO
         (FunPtr
            C_WidgetClassGetPreferredHeightAndBaselineForWidthFieldCallback)
    mk_WidgetClassGetPreferredHeightAndBaselineForWidthFieldCallback C_WidgetClassGetPreferredHeightAndBaselineForWidthFieldCallback
    cb' IO
      (FunPtr
         C_WidgetClassGetPreferredHeightAndBaselineForWidthFieldCallback)
    -> (FunPtr
          C_WidgetClassGetPreferredHeightAndBaselineForWidthFieldCallback
        -> IO
             (GClosure
                C_WidgetClassGetPreferredHeightAndBaselineForWidthFieldCallback))
    -> IO
         (GClosure
            C_WidgetClassGetPreferredHeightAndBaselineForWidthFieldCallback)
    forall a b. IO a -> (a -> IO b) -> IO b
    forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
    >>= FunPtr
      C_WidgetClassGetPreferredHeightAndBaselineForWidthFieldCallback
    -> IO
         (GClosure
            C_WidgetClassGetPreferredHeightAndBaselineForWidthFieldCallback)
    forall (m :: * -> *) a. MonadIO m => FunPtr a -> m (GClosure a)
    B.GClosure.newGClosure

    -- | Wrap a `WidgetClassGetPreferredHeightAndBaselineForWidthFieldCallback` into a `C_WidgetClassGetPreferredHeightAndBaselineForWidthFieldCallback`.
    wrap_WidgetClassGetPreferredHeightAndBaselineForWidthFieldCallback ::
        Maybe (Ptr (FunPtr C_WidgetClassGetPreferredHeightAndBaselineForWidthFieldCallback)) ->
        WidgetClassGetPreferredHeightAndBaselineForWidthFieldCallback ->
        C_WidgetClassGetPreferredHeightAndBaselineForWidthFieldCallback
    wrap_WidgetClassGetPreferredHeightAndBaselineForWidthFieldCallback :: Maybe
      (Ptr
         (FunPtr
            C_WidgetClassGetPreferredHeightAndBaselineForWidthFieldCallback))
    -> WidgetClassGetPreferredHeightAndBaselineForWidthFieldCallback
    -> C_WidgetClassGetPreferredHeightAndBaselineForWidthFieldCallback
    wrap_WidgetClassGetPreferredHeightAndBaselineForWidthFieldCallback Maybe
      (Ptr
         (FunPtr
            C_WidgetClassGetPreferredHeightAndBaselineForWidthFieldCallback))
    gi'funptrptr WidgetClassGetPreferredHeightAndBaselineForWidthFieldCallback
    gi'cb Ptr Widget
    widget Int32
    width Ptr Int32
    minimumHeight Ptr Int32
    naturalHeight Ptr Int32
    minimumBaseline Ptr Int32
    naturalBaseline = do
        widget' <- ((ManagedPtr Widget -> Widget) -> Ptr Widget -> IO Widget
    forall a b.
    (HasCallStack, GObject a, GObject b) =>
    (ManagedPtr a -> a) -> Ptr b -> IO a
    newObject ManagedPtr Widget -> Widget
    Gtk.Widget.Widget) Ptr Widget
    widget
        (outminimumHeight, outnaturalHeight, outminimumBaseline, outnaturalBaseline) <- gi'cb  widget' width
        poke minimumHeight outminimumHeight
        poke naturalHeight outnaturalHeight
        poke minimumBaseline outminimumBaseline
        poke naturalBaseline outnaturalBaseline
        maybeReleaseFunPtr gi'funptrptr

    -- callback WidgetClassGetAccessibleFieldCallback
    {- Callable
      { returnType =
          Just (TInterface Name { namespace = "Atk" , name = "Object" })
      , returnMayBeNull = False
      , returnTransfer = TransferNothing
      , returnDocumentation =
          Documentation
            { rawDocText = Just "the #AtkObject associated with @widget"
            , sinceVersion = Nothing
            }
      , args =
          [ Arg
              { argCName = "widget"
              , argType = TInterface Name { namespace = "Gtk" , name = "Widget" }
              , argCType = Just "GtkWidget*"
              , direction = DirectionIn
              , mayBeNull = False
              , argDoc =
                  Documentation
                    { rawDocText = Just "a #GtkWidget" , sinceVersion = Nothing }
              , argScope = ScopeTypeInvalid
              , argClosure = -1
              , argDestroy = -1
              , argCallerAllocates = False
              , argCallbackUserData = False
              , transfer = TransferNothing
              }
          ]
      , skipReturn = False
      , callableThrows = False
      , callableDeprecated = Nothing
      , callableDocumentation =
          Documentation { rawDocText = Nothing , sinceVersion = Nothing }
      , callableResolvable = Nothing
      }
    -}
    -- | Type for the callback on the (unwrapped) C side.
    type C_WidgetClassGetAccessibleFieldCallback =
        Ptr Gtk.Widget.Widget ->
        IO (Ptr Atk.Object.Object)

    -- Args: [ Arg
    --           { argCName = "widget"
    --           , argType = TInterface Name { namespace = "Gtk" , name = "Widget" }
    --           , argCType = Just "GtkWidget*"
    --           , direction = DirectionIn
    --           , mayBeNull = False
    --           , argDoc =
    --               Documentation
    --                 { rawDocText = Just "a #GtkWidget" , sinceVersion = Nothing }
    --           , argScope = ScopeTypeInvalid
    --           , argClosure = -1
    --           , argDestroy = -1
    --           , argCallerAllocates = False
    --           , argCallbackUserData = False
    --           , transfer = TransferNothing
    --           }
    --       ]
    -- Lengths: []
    -- returnType: Just (TInterface Name { namespace = "Atk" , name = "Object" })
    -- throws : False
    -- Skip return : False

    foreign import ccall "dynamic" __dynamic_C_WidgetClassGetAccessibleFieldCallback :: FunPtr C_WidgetClassGetAccessibleFieldCallback -> C_WidgetClassGetAccessibleFieldCallback

    -- | Given a pointer to a foreign C function, wrap it into a function callable from Haskell.
    dynamic_WidgetClassGetAccessibleFieldCallback ::
        (B.CallStack.HasCallStack, MonadIO m, Gtk.Widget.IsWidget a) =>
        FunPtr C_WidgetClassGetAccessibleFieldCallback
        -> a
        -- ^ /@widget@/: a t'GI.Gtk.Objects.Widget.Widget'
        -> m Atk.Object.Object
        -- ^ __Returns:__ the t'GI.Atk.Objects.Object.Object' associated with /@widget@/
    dynamic_WidgetClassGetAccessibleFieldCallback :: forall (m :: * -> *) a.
    (HasCallStack, MonadIO m, IsWidget a) =>
    FunPtr C_WidgetClassGetAccessibleFieldCallback -> a -> m Object
    dynamic_WidgetClassGetAccessibleFieldCallback FunPtr C_WidgetClassGetAccessibleFieldCallback
    __funPtr a
    widget = IO Object -> m Object
    forall a. IO a -> m a
    forall (m :: * -> *) a. MonadIO m => IO a -> m a
    liftIO (IO Object -> m Object) -> IO Object -> m Object
    forall a b. (a -> b) -> a -> b
    $ do
        widget' <- a -> IO (Ptr Widget)
    forall a b. (HasCallStack, ManagedPtrNewtype a) => a -> IO (Ptr b)
    unsafeManagedPtrCastPtr a
    widget
        result <- (__dynamic_C_WidgetClassGetAccessibleFieldCallback __funPtr) widget'
        checkUnexpectedReturnNULL "widgetClassGetAccessibleFieldCallback" result
        result' <- (newObject Atk.Object.Object) result
        touchManagedPtr widget
        return result'

    -- | Generate a function pointer callable from C code, from a `C_WidgetClassGetAccessibleFieldCallback`.
    foreign import ccall "wrapper"
        mk_WidgetClassGetAccessibleFieldCallback :: C_WidgetClassGetAccessibleFieldCallback -> IO (FunPtr C_WidgetClassGetAccessibleFieldCallback)

    -- | /No description available in the introspection data./
    type WidgetClassGetAccessibleFieldCallback =
        Gtk.Widget.Widget
        -- ^ /@widget@/: a t'GI.Gtk.Objects.Widget.Widget'
        -> IO Atk.Object.Object
        -- ^ __Returns:__ the t'GI.Atk.Objects.Object.Object' associated with /@widget@/

    -- | A convenience synonym for @`Nothing` :: `Maybe` `WidgetClassGetAccessibleFieldCallback`@.
    noWidgetClassGetAccessibleFieldCallback :: Maybe WidgetClassGetAccessibleFieldCallback
    noWidgetClassGetAccessibleFieldCallback :: Maybe WidgetClassGetAccessibleFieldCallback
    noWidgetClassGetAccessibleFieldCallback = Maybe WidgetClassGetAccessibleFieldCallback
    forall a. Maybe a
    Nothing

    -- | Wrap the callback into a `GClosure`.
    genClosure_WidgetClassGetAccessibleFieldCallback :: MonadIO m => WidgetClassGetAccessibleFieldCallback -> m (GClosure C_WidgetClassGetAccessibleFieldCallback)
    genClosure_WidgetClassGetAccessibleFieldCallback :: forall (m :: * -> *).
    MonadIO m =>
    WidgetClassGetAccessibleFieldCallback
    -> m (GClosure C_WidgetClassGetAccessibleFieldCallback)
    genClosure_WidgetClassGetAccessibleFieldCallback WidgetClassGetAccessibleFieldCallback
    cb = IO (GClosure C_WidgetClassGetAccessibleFieldCallback)
    -> m (GClosure C_WidgetClassGetAccessibleFieldCallback)
    forall a. IO a -> m a
    forall (m :: * -> *) a. MonadIO m => IO a -> m a
    liftIO (IO (GClosure C_WidgetClassGetAccessibleFieldCallback)
     -> m (GClosure C_WidgetClassGetAccessibleFieldCallback))
    -> IO (GClosure C_WidgetClassGetAccessibleFieldCallback)
    -> m (GClosure C_WidgetClassGetAccessibleFieldCallback)
    forall a b. (a -> b) -> a -> b
    $ do
        let cb' :: C_WidgetClassGetAccessibleFieldCallback
    cb' = Maybe (Ptr (FunPtr C_WidgetClassGetAccessibleFieldCallback))
    -> WidgetClassGetAccessibleFieldCallback
    -> C_WidgetClassGetAccessibleFieldCallback
    wrap_WidgetClassGetAccessibleFieldCallback Maybe (Ptr (FunPtr C_WidgetClassGetAccessibleFieldCallback))
    forall a. Maybe a
    Nothing WidgetClassGetAccessibleFieldCallback
    cb
        C_WidgetClassGetAccessibleFieldCallback
    -> IO (FunPtr C_WidgetClassGetAccessibleFieldCallback)
    mk_WidgetClassGetAccessibleFieldCallback C_WidgetClassGetAccessibleFieldCallback
    cb' IO (FunPtr C_WidgetClassGetAccessibleFieldCallback)
    -> (FunPtr C_WidgetClassGetAccessibleFieldCallback
        -> IO (GClosure C_WidgetClassGetAccessibleFieldCallback))
    -> IO (GClosure C_WidgetClassGetAccessibleFieldCallback)
    forall a b. IO a -> (a -> IO b) -> IO b
    forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
    >>= FunPtr C_WidgetClassGetAccessibleFieldCallback
    -> IO (GClosure C_WidgetClassGetAccessibleFieldCallback)
    forall (m :: * -> *) a. MonadIO m => FunPtr a -> m (GClosure a)
    B.GClosure.newGClosure

    -- | Wrap a `WidgetClassGetAccessibleFieldCallback` into a `C_WidgetClassGetAccessibleFieldCallback`.
    wrap_WidgetClassGetAccessibleFieldCallback ::
        Maybe (Ptr (FunPtr C_WidgetClassGetAccessibleFieldCallback)) ->
        WidgetClassGetAccessibleFieldCallback ->
        C_WidgetClassGetAccessibleFieldCallback
    wrap_WidgetClassGetAccessibleFieldCallback :: Maybe (Ptr (FunPtr C_WidgetClassGetAccessibleFieldCallback))
    -> WidgetClassGetAccessibleFieldCallback
    -> C_WidgetClassGetAccessibleFieldCallback
    wrap_WidgetClassGetAccessibleFieldCallback Maybe (Ptr (FunPtr C_WidgetClassGetAccessibleFieldCallback))
    gi'funptrptr WidgetClassGetAccessibleFieldCallback
    gi'cb Ptr Widget
    widget = do
        widget' <- ((ManagedPtr Widget -> Widget) -> Ptr Widget -> IO Widget
    forall a b.
    (HasCallStack, GObject a, GObject b) =>
    (ManagedPtr a -> a) -> Ptr b -> IO a
    newObject ManagedPtr Widget -> Widget
    Gtk.Widget.Widget) Ptr Widget
    widget
        result <- gi'cb  widget'
        maybeReleaseFunPtr gi'funptrptr
        result' <- unsafeManagedPtrCastPtr result
        return result'

    -- callback WidgetClassFocusOutEventFieldCallback
    {- Callable
      { returnType = Just (TBasicType TBoolean)
      , returnMayBeNull = False
      , returnTransfer = TransferNothing
      , returnDocumentation =
          Documentation { rawDocText = Nothing , sinceVersion = Nothing }
      , args =
          [ Arg
              { argCName = "widget"
              , argType = TInterface Name { namespace = "Gtk" , name = "Widget" }
              , argCType = Just "GtkWidget*"
              , direction = DirectionIn
              , mayBeNull = False
              , argDoc =
                  Documentation { rawDocText = Nothing , sinceVersion = Nothing }
              , argScope = ScopeTypeInvalid
              , argClosure = -1
              , argDestroy = -1
              , argCallerAllocates = False
              , argCallbackUserData = False
              , transfer = TransferNothing
              }
          , Arg
              { argCName = "event"
              , argType =
                  TInterface Name { namespace = "Gdk" , name = "EventFocus" }
              , argCType = Just "GdkEventFocus*"
              , direction = DirectionIn
              , mayBeNull = False
              , argDoc =
                  Documentation { rawDocText = Nothing , sinceVersion = Nothing }
              , argScope = ScopeTypeInvalid
              , argClosure = -1
              , argDestroy = -1
              , argCallerAllocates = False
              , argCallbackUserData = False
              , transfer = TransferNothing
              }
          ]
      , skipReturn = False
      , callableThrows = False
      , callableDeprecated = Nothing
      , callableDocumentation =
          Documentation { rawDocText = Nothing , sinceVersion = Nothing }
      , callableResolvable = Nothing
      }
    -}
    -- | Type for the callback on the (unwrapped) C side.
    type C_WidgetClassFocusOutEventFieldCallback =
        Ptr Gtk.Widget.Widget ->
        Ptr Gdk.EventFocus.EventFocus ->
        IO CInt

    -- Args: [ Arg
    --           { argCName = "widget"
    --           , argType = TInterface Name { namespace = "Gtk" , name = "Widget" }
    --           , argCType = Just "GtkWidget*"
    --           , direction = DirectionIn
    --           , mayBeNull = False
    --           , argDoc =
    --               Documentation { rawDocText = Nothing , sinceVersion = Nothing }
    --           , argScope = ScopeTypeInvalid
    --           , argClosure = -1
    --           , argDestroy = -1
    --           , argCallerAllocates = False
    --           , argCallbackUserData = False
    --           , transfer = TransferNothing
    --           }
    --       , Arg
    --           { argCName = "event"
    --           , argType =
    --               TInterface Name { namespace = "Gdk" , name = "EventFocus" }
    --           , argCType = Just "GdkEventFocus*"
    --           , direction = DirectionIn
    --           , mayBeNull = False
    --           , argDoc =
    --               Documentation { rawDocText = Nothing , sinceVersion = Nothing }
    --           , argScope = ScopeTypeInvalid
    --           , argClosure = -1
    --           , argDestroy = -1
    --           , argCallerAllocates = False
    --           , argCallbackUserData = False
    --           , transfer = TransferNothing
    --           }
    --       ]
    -- Lengths: []
    -- returnType: Just (TBasicType TBoolean)
    -- throws : False
    -- Skip return : False

    foreign import ccall "dynamic" __dynamic_C_WidgetClassFocusOutEventFieldCallback :: FunPtr C_WidgetClassFocusOutEventFieldCallback -> C_WidgetClassFocusOutEventFieldCallback

    -- | Given a pointer to a foreign C function, wrap it into a function callable from Haskell.
    dynamic_WidgetClassFocusOutEventFieldCallback ::
        (B.CallStack.HasCallStack, MonadIO m, Gtk.Widget.IsWidget a) =>
        FunPtr C_WidgetClassFocusOutEventFieldCallback
        -> a
        -> Gdk.EventFocus.EventFocus
        -> m Bool
    dynamic_WidgetClassFocusOutEventFieldCallback :: forall (m :: * -> *) a.
    (HasCallStack, MonadIO m, IsWidget a) =>
    FunPtr C_WidgetClassFocusOutEventFieldCallback
    -> a -> EventFocus -> m Bool
    dynamic_WidgetClassFocusOutEventFieldCallback FunPtr C_WidgetClassFocusOutEventFieldCallback
    __funPtr a
    widget EventFocus
    event = IO Bool -> m Bool
    forall a. IO a -> m a
    forall (m :: * -> *) a. MonadIO m => IO a -> m a
    liftIO (IO Bool -> m Bool) -> IO Bool -> m Bool
    forall a b. (a -> b) -> a -> b
    $ do
        widget' <- a -> IO (Ptr Widget)
    forall a b. (HasCallStack, ManagedPtrNewtype a) => a -> IO (Ptr b)
    unsafeManagedPtrCastPtr a
    widget
        event' <- unsafeManagedPtrGetPtr event
        result <- (__dynamic_C_WidgetClassFocusOutEventFieldCallback __funPtr) widget' event'
        let result' = (CInt -> CInt -> Bool
    forall a. Eq a => a -> a -> Bool
    /= CInt
    0) CInt
    result
        touchManagedPtr widget
        touchManagedPtr event
        return result'

    -- | Generate a function pointer callable from C code, from a `C_WidgetClassFocusOutEventFieldCallback`.
    foreign import ccall "wrapper"
        mk_WidgetClassFocusOutEventFieldCallback :: C_WidgetClassFocusOutEventFieldCallback -> IO (FunPtr C_WidgetClassFocusOutEventFieldCallback)

    -- | /No description available in the introspection data./
    type WidgetClassFocusOutEventFieldCallback =
        Gtk.Widget.Widget
        -> Gdk.EventFocus.EventFocus
        -> IO Bool

    -- | A convenience synonym for @`Nothing` :: `Maybe` `WidgetClassFocusOutEventFieldCallback`@.
    noWidgetClassFocusOutEventFieldCallback :: Maybe WidgetClassFocusOutEventFieldCallback
    noWidgetClassFocusOutEventFieldCallback :: Maybe WidgetClassFocusOutEventFieldCallback
    noWidgetClassFocusOutEventFieldCallback = Maybe WidgetClassFocusOutEventFieldCallback
    forall a. Maybe a
    Nothing

    -- | Wrap the callback into a `GClosure`.
    genClosure_WidgetClassFocusOutEventFieldCallback :: MonadIO m => WidgetClassFocusOutEventFieldCallback -> m (GClosure C_WidgetClassFocusOutEventFieldCallback)
    genClosure_WidgetClassFocusOutEventFieldCallback :: forall (m :: * -> *).
    MonadIO m =>
    WidgetClassFocusOutEventFieldCallback
    -> m (GClosure C_WidgetClassFocusOutEventFieldCallback)
    genClosure_WidgetClassFocusOutEventFieldCallback WidgetClassFocusOutEventFieldCallback
    cb = IO (GClosure C_WidgetClassFocusOutEventFieldCallback)
    -> m (GClosure C_WidgetClassFocusOutEventFieldCallback)
    forall a. IO a -> m a
    forall (m :: * -> *) a. MonadIO m => IO a -> m a
    liftIO (IO (GClosure C_WidgetClassFocusOutEventFieldCallback)
     -> m (GClosure C_WidgetClassFocusOutEventFieldCallback))
    -> IO (GClosure C_WidgetClassFocusOutEventFieldCallback)
    -> m (GClosure C_WidgetClassFocusOutEventFieldCallback)
    forall a b. (a -> b) -> a -> b
    $ do
        let cb' :: C_WidgetClassFocusOutEventFieldCallback
    cb' = Maybe (Ptr (FunPtr C_WidgetClassFocusOutEventFieldCallback))
    -> WidgetClassFocusOutEventFieldCallback
    -> C_WidgetClassFocusOutEventFieldCallback
    wrap_WidgetClassFocusOutEventFieldCallback Maybe (Ptr (FunPtr C_WidgetClassFocusOutEventFieldCallback))
    forall a. Maybe a
    Nothing WidgetClassFocusOutEventFieldCallback
    cb
        C_WidgetClassFocusOutEventFieldCallback
    -> IO (FunPtr C_WidgetClassFocusOutEventFieldCallback)
    mk_WidgetClassFocusOutEventFieldCallback C_WidgetClassFocusOutEventFieldCallback
    cb' IO (FunPtr C_WidgetClassFocusOutEventFieldCallback)
    -> (FunPtr C_WidgetClassFocusOutEventFieldCallback
        -> IO (GClosure C_WidgetClassFocusOutEventFieldCallback))
    -> IO (GClosure C_WidgetClassFocusOutEventFieldCallback)
    forall a b. IO a -> (a -> IO b) -> IO b
    forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
    >>= FunPtr C_WidgetClassFocusOutEventFieldCallback
    -> IO (GClosure C_WidgetClassFocusOutEventFieldCallback)
    forall (m :: * -> *) a. MonadIO m => FunPtr a -> m (GClosure a)
    B.GClosure.newGClosure

    -- | Wrap a `WidgetClassFocusOutEventFieldCallback` into a `C_WidgetClassFocusOutEventFieldCallback`.
    wrap_WidgetClassFocusOutEventFieldCallback ::
        Maybe (Ptr (FunPtr C_WidgetClassFocusOutEventFieldCallback)) ->
        WidgetClassFocusOutEventFieldCallback ->
        C_WidgetClassFocusOutEventFieldCallback
    wrap_WidgetClassFocusOutEventFieldCallback :: Maybe (Ptr (FunPtr C_WidgetClassFocusOutEventFieldCallback))
    -> WidgetClassFocusOutEventFieldCallback
    -> C_WidgetClassFocusOutEventFieldCallback
    wrap_WidgetClassFocusOutEventFieldCallback Maybe (Ptr (FunPtr C_WidgetClassFocusOutEventFieldCallback))
    gi'funptrptr WidgetClassFocusOutEventFieldCallback
    gi'cb Ptr Widget
    widget Ptr EventFocus
    event = do
        widget' <- ((ManagedPtr Widget -> Widget) -> Ptr Widget -> IO Widget
    forall a b.
    (HasCallStack, GObject a, GObject b) =>
    (ManagedPtr a -> a) -> Ptr b -> IO a
    newObject ManagedPtr Widget -> Widget
    Gtk.Widget.Widget) Ptr Widget
    widget
        event' <- (newPtr Gdk.EventFocus.EventFocus) event
        result <- gi'cb  widget' event'
        maybeReleaseFunPtr gi'funptrptr
        let result' = (Int -> CInt
    forall a b. (Integral a, Num b) => a -> b
    P.fromIntegral (Int -> CInt) -> (Bool -> Int) -> Bool -> CInt
    forall b c a. (b -> c) -> (a -> b) -> a -> c
    . Bool -> Int
    forall a. Enum a => a -> Int
    P.fromEnum) Bool
    result
        return result'

    -- callback WidgetClassFocusInEventFieldCallback
    {- Callable
      { returnType = Just (TBasicType TBoolean)
      , returnMayBeNull = False
      , returnTransfer = TransferNothing
      , returnDocumentation =
          Documentation { rawDocText = Nothing , sinceVersion = Nothing }
      , args =
          [ Arg
              { argCName = "widget"
              , argType = TInterface Name { namespace = "Gtk" , name = "Widget" }
              , argCType = Just "GtkWidget*"
              , direction = DirectionIn
              , mayBeNull = False
              , argDoc =
                  Documentation { rawDocText = Nothing , sinceVersion = Nothing }
              , argScope = ScopeTypeInvalid
              , argClosure = -1
              , argDestroy = -1
              , argCallerAllocates = False
              , argCallbackUserData = False
              , transfer = TransferNothing
              }
          , Arg
              { argCName = "event"
              , argType =
                  TInterface Name { namespace = "Gdk" , name = "EventFocus" }
              , argCType = Just "GdkEventFocus*"
              , direction = DirectionIn
              , mayBeNull = False
              , argDoc =
                  Documentation { rawDocText = Nothing , sinceVersion = Nothing }
              , argScope = ScopeTypeInvalid
              , argClosure = -1
              , argDestroy = -1
              , argCallerAllocates = False
              , argCallbackUserData = False
              , transfer = TransferNothing
              }
          ]
      , skipReturn = False
      , callableThrows = False
      , callableDeprecated = Nothing
      , callableDocumentation =
          Documentation { rawDocText = Nothing , sinceVersion = Nothing }
      , callableResolvable = Nothing
      }
    -}
    -- | Type for the callback on the (unwrapped) C side.
    type C_WidgetClassFocusInEventFieldCallback =
        Ptr Gtk.Widget.Widget ->
        Ptr Gdk.EventFocus.EventFocus ->
        IO CInt

    -- Args: [ Arg
    --           { argCName = "widget"
    --           , argType = TInterface Name { namespace = "Gtk" , name = "Widget" }
    --           , argCType = Just "GtkWidget*"
    --           , direction = DirectionIn
    --           , mayBeNull = False
    --           , argDoc =
    --               Documentation { rawDocText = Nothing , sinceVersion = Nothing }
    --           , argScope = ScopeTypeInvalid
    --           , argClosure = -1
    --           , argDestroy = -1
    --           , argCallerAllocates = False
    --           , argCallbackUserData = False
    --           , transfer = TransferNothing
    --           }
    --       , Arg
    --           { argCName = "event"
    --           , argType =
    --               TInterface Name { namespace = "Gdk" , name = "EventFocus" }
    --           , argCType = Just "GdkEventFocus*"
    --           , direction = DirectionIn
    --           , mayBeNull = False
    --           , argDoc =
    --               Documentation { rawDocText = Nothing , sinceVersion = Nothing }
    --           , argScope = ScopeTypeInvalid
    --           , argClosure = -1
    --           , argDestroy = -1
    --           , argCallerAllocates = False
    --           , argCallbackUserData = False
    --           , transfer = TransferNothing
    --           }
    --       ]
    -- Lengths: []
    -- returnType: Just (TBasicType TBoolean)
    -- throws : False
    -- Skip return : False

    foreign import ccall "dynamic" __dynamic_C_WidgetClassFocusInEventFieldCallback :: FunPtr C_WidgetClassFocusInEventFieldCallback -> C_WidgetClassFocusInEventFieldCallback

    -- | Given a pointer to a foreign C function, wrap it into a function callable from Haskell.
    dynamic_WidgetClassFocusInEventFieldCallback ::
        (B.CallStack.HasCallStack, MonadIO m, Gtk.Widget.IsWidget a) =>
        FunPtr C_WidgetClassFocusInEventFieldCallback
        -> a
        -> Gdk.EventFocus.EventFocus
        -> m Bool
    dynamic_WidgetClassFocusInEventFieldCallback :: forall (m :: * -> *) a.
    (HasCallStack, MonadIO m, IsWidget a) =>
    FunPtr C_WidgetClassFocusOutEventFieldCallback
    -> a -> EventFocus -> m Bool
    dynamic_WidgetClassFocusInEventFieldCallback FunPtr C_WidgetClassFocusOutEventFieldCallback
    __funPtr a
    widget EventFocus
    event = IO Bool -> m Bool
    forall a. IO a -> m a
    forall (m :: * -> *) a. MonadIO m => IO a -> m a
    liftIO (IO Bool -> m Bool) -> IO Bool -> m Bool
    forall a b. (a -> b) -> a -> b
    $ do
        widget' <- a -> IO (Ptr Widget)
    forall a b. (HasCallStack, ManagedPtrNewtype a) => a -> IO (Ptr b)
    unsafeManagedPtrCastPtr a
    widget
        event' <- unsafeManagedPtrGetPtr event
        result <- (__dynamic_C_WidgetClassFocusInEventFieldCallback __funPtr) widget' event'
        let result' = (CInt -> CInt -> Bool
    forall a. Eq a => a -> a -> Bool
    /= CInt
    0) CInt
    result
        touchManagedPtr widget
        touchManagedPtr event
        return result'

    -- | Generate a function pointer callable from C code, from a `C_WidgetClassFocusInEventFieldCallback`.
    foreign import ccall "wrapper"
        mk_WidgetClassFocusInEventFieldCallback :: C_WidgetClassFocusInEventFieldCallback -> IO (FunPtr C_WidgetClassFocusInEventFieldCallback)

    -- | /No description available in the introspection data./
    type WidgetClassFocusInEventFieldCallback =
        Gtk.Widget.Widget
        -> Gdk.EventFocus.EventFocus
        -> IO Bool

    -- | A convenience synonym for @`Nothing` :: `Maybe` `WidgetClassFocusInEventFieldCallback`@.
    noWidgetClassFocusInEventFieldCallback :: Maybe WidgetClassFocusInEventFieldCallback
    noWidgetClassFocusInEventFieldCallback :: Maybe WidgetClassFocusOutEventFieldCallback
    noWidgetClassFocusInEventFieldCallback = Maybe WidgetClassFocusOutEventFieldCallback
    forall a. Maybe a
    Nothing

    -- | Wrap the callback into a `GClosure`.
    genClosure_WidgetClassFocusInEventFieldCallback :: MonadIO m => WidgetClassFocusInEventFieldCallback -> m (GClosure C_WidgetClassFocusInEventFieldCallback)
    genClosure_WidgetClassFocusInEventFieldCallback :: forall (m :: * -> *).
    MonadIO m =>
    WidgetClassFocusOutEventFieldCallback
    -> m (GClosure C_WidgetClassFocusOutEventFieldCallback)
    genClosure_WidgetClassFocusInEventFieldCallback WidgetClassFocusOutEventFieldCallback
    cb = IO (GClosure C_WidgetClassFocusOutEventFieldCallback)
    -> m (GClosure C_WidgetClassFocusOutEventFieldCallback)
    forall a. IO a -> m a
    forall (m :: * -> *) a. MonadIO m => IO a -> m a
    liftIO (IO (GClosure C_WidgetClassFocusOutEventFieldCallback)
     -> m (GClosure C_WidgetClassFocusOutEventFieldCallback))
    -> IO (GClosure C_WidgetClassFocusOutEventFieldCallback)
    -> m (GClosure C_WidgetClassFocusOutEventFieldCallback)
    forall a b. (a -> b) -> a -> b
    $ do
        let cb' :: C_WidgetClassFocusOutEventFieldCallback
    cb' = Maybe (Ptr (FunPtr C_WidgetClassFocusOutEventFieldCallback))
    -> WidgetClassFocusOutEventFieldCallback
    -> C_WidgetClassFocusOutEventFieldCallback
    wrap_WidgetClassFocusInEventFieldCallback Maybe (Ptr (FunPtr C_WidgetClassFocusOutEventFieldCallback))
    forall a. Maybe a
    Nothing WidgetClassFocusOutEventFieldCallback
    cb
        C_WidgetClassFocusOutEventFieldCallback
    -> IO (FunPtr C_WidgetClassFocusOutEventFieldCallback)
    mk_WidgetClassFocusInEventFieldCallback C_WidgetClassFocusOutEventFieldCallback
    cb' IO (FunPtr C_WidgetClassFocusOutEventFieldCallback)
    -> (FunPtr C_WidgetClassFocusOutEventFieldCallback
        -> IO (GClosure C_WidgetClassFocusOutEventFieldCallback))
    -> IO (GClosure C_WidgetClassFocusOutEventFieldCallback)
    forall a b. IO a -> (a -> IO b) -> IO b
    forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
    >>= FunPtr C_WidgetClassFocusOutEventFieldCallback
    -> IO (GClosure C_WidgetClassFocusOutEventFieldCallback)
    forall (m :: * -> *) a. MonadIO m => FunPtr a -> m (GClosure a)
    B.GClosure.newGClosure

    -- | Wrap a `WidgetClassFocusInEventFieldCallback` into a `C_WidgetClassFocusInEventFieldCallback`.
    wrap_WidgetClassFocusInEventFieldCallback ::
        Maybe (Ptr (FunPtr C_WidgetClassFocusInEventFieldCallback)) ->
        WidgetClassFocusInEventFieldCallback ->
        C_WidgetClassFocusInEventFieldCallback
    wrap_WidgetClassFocusInEventFieldCallback :: Maybe (Ptr (FunPtr C_WidgetClassFocusOutEventFieldCallback))
    -> WidgetClassFocusOutEventFieldCallback
    -> C_WidgetClassFocusOutEventFieldCallback
    wrap_WidgetClassFocusInEventFieldCallback Maybe (Ptr (FunPtr C_WidgetClassFocusOutEventFieldCallback))
    gi'funptrptr WidgetClassFocusOutEventFieldCallback
    gi'cb Ptr Widget
    widget Ptr EventFocus
    event = do
        widget' <- ((ManagedPtr Widget -> Widget) -> Ptr Widget -> IO Widget
    forall a b.
    (HasCallStack, GObject a, GObject b) =>
    (ManagedPtr a -> a) -> Ptr b -> IO a
    newObject ManagedPtr Widget -> Widget
    Gtk.Widget.Widget) Ptr Widget
    widget
        event' <- (newPtr Gdk.EventFocus.EventFocus) event
        result <- gi'cb  widget' event'
        maybeReleaseFunPtr gi'funptrptr
        let result' = (Int -> CInt
    forall a b. (Integral a, Num b) => a -> b
    P.fromIntegral (Int -> CInt) -> (Bool -> Int) -> Bool -> CInt
    forall b c a. (b -> c) -> (a -> b) -> a -> c
    . Bool -> Int
    forall a. Enum a => a -> Int
    P.fromEnum) Bool
    result
        return result'

    -- callback WidgetClassFocusFieldCallback
    {- Callable
      { returnType = Just (TBasicType TBoolean)
      , returnMayBeNull = False
      , returnTransfer = TransferNothing
      , returnDocumentation =
          Documentation { rawDocText = Nothing , sinceVersion = Nothing }
      , args =
          [ Arg
              { argCName = "widget"
              , argType = TInterface Name { namespace = "Gtk" , name = "Widget" }
              , argCType = Just "GtkWidget*"
              , direction = DirectionIn
              , mayBeNull = False
              , argDoc =
                  Documentation { rawDocText = Nothing , sinceVersion = Nothing }
              , argScope = ScopeTypeInvalid
              , argClosure = -1
              , argDestroy = -1
              , argCallerAllocates = False
              , argCallbackUserData = False
              , transfer = TransferNothing
              }
          , Arg
              { argCName = "direction"
              , argType =
                  TInterface Name { namespace = "Gtk" , name = "DirectionType" }
              , argCType = Just "GtkDirectionType"
              , direction = DirectionIn
              , mayBeNull = False
              , argDoc =
                  Documentation { rawDocText = Nothing , sinceVersion = Nothing }
              , argScope = ScopeTypeInvalid
              , argClosure = -1
              , argDestroy = -1
              , argCallerAllocates = False
              , argCallbackUserData = False
              , transfer = TransferNothing
              }
          ]
      , skipReturn = False
      , callableThrows = False
      , callableDeprecated = Nothing
      , callableDocumentation =
          Documentation { rawDocText = Nothing , sinceVersion = Nothing }
      , callableResolvable = Nothing
      }
    -}
    -- | Type for the callback on the (unwrapped) C side.
    type C_WidgetClassFocusFieldCallback =
        Ptr Gtk.Widget.Widget ->
        CUInt ->
        IO CInt

    -- Args: [ Arg
    --           { argCName = "widget"
    --           , argType = TInterface Name { namespace = "Gtk" , name = "Widget" }
    --           , argCType = Just "GtkWidget*"
    --           , direction = DirectionIn
    --           , mayBeNull = False
    --           , argDoc =
    --               Documentation { rawDocText = Nothing , sinceVersion = Nothing }
    --           , argScope = ScopeTypeInvalid
    --           , argClosure = -1
    --           , argDestroy = -1
    --           , argCallerAllocates = False
    --           , argCallbackUserData = False
    --           , transfer = TransferNothing
    --           }
    --       , Arg
    --           { argCName = "direction"
    --           , argType =
    --               TInterface Name { namespace = "Gtk" , name = "DirectionType" }
    --           , argCType = Just "GtkDirectionType"
    --           , direction = DirectionIn
    --           , mayBeNull = False
    --           , argDoc =
    --               Documentation { rawDocText = Nothing , sinceVersion = Nothing }
    --           , argScope = ScopeTypeInvalid
    --           , argClosure = -1
    --           , argDestroy = -1
    --           , argCallerAllocates = False
    --           , argCallbackUserData = False
    --           , transfer = TransferNothing
    --           }
    --       ]
    -- Lengths: []
    -- returnType: Just (TBasicType TBoolean)
    -- throws : False
    -- Skip return : False

    foreign import ccall "dynamic" __dynamic_C_WidgetClassFocusFieldCallback :: FunPtr C_WidgetClassFocusFieldCallback -> C_WidgetClassFocusFieldCallback

    -- | Given a pointer to a foreign C function, wrap it into a function callable from Haskell.
    dynamic_WidgetClassFocusFieldCallback ::
        (B.CallStack.HasCallStack, MonadIO m, Gtk.Widget.IsWidget a) =>
        FunPtr C_WidgetClassFocusFieldCallback
        -> a
        -> Gtk.Enums.DirectionType
        -> m Bool
    dynamic_WidgetClassFocusFieldCallback :: forall (m :: * -> *) a.
    (HasCallStack, MonadIO m, IsWidget a) =>
    FunPtr C_WidgetClassShowHelpFieldCallback
    -> a -> DirectionType -> m Bool
    dynamic_WidgetClassFocusFieldCallback FunPtr C_WidgetClassShowHelpFieldCallback
    __funPtr a
    widget DirectionType
    direction = IO Bool -> m Bool
    forall a. IO a -> m a
    forall (m :: * -> *) a. MonadIO m => IO a -> m a
    liftIO (IO Bool -> m Bool) -> IO Bool -> m Bool
    forall a b. (a -> b) -> a -> b
    $ do
        widget' <- a -> IO (Ptr Widget)
    forall a b. (HasCallStack, ManagedPtrNewtype a) => a -> IO (Ptr b)
    unsafeManagedPtrCastPtr a
    widget
        let direction' = (Int -> CUInt
    forall a b. (Integral a, Num b) => a -> b
    fromIntegral (Int -> CUInt) -> (DirectionType -> Int) -> DirectionType -> CUInt
    forall b c a. (b -> c) -> (a -> b) -> a -> c
    . DirectionType -> Int
    forall a. Enum a => a -> Int
    fromEnum) DirectionType
    direction
        result <- (__dynamic_C_WidgetClassFocusFieldCallback __funPtr) widget' direction'
        let result' = (CInt -> CInt -> Bool
    forall a. Eq a => a -> a -> Bool
    /= CInt
    0) CInt
    result
        touchManagedPtr widget
        return result'

    -- | Generate a function pointer callable from C code, from a `C_WidgetClassFocusFieldCallback`.
    foreign import ccall "wrapper"
        mk_WidgetClassFocusFieldCallback :: C_WidgetClassFocusFieldCallback -> IO (FunPtr C_WidgetClassFocusFieldCallback)

    -- | /No description available in the introspection data./
    type WidgetClassFocusFieldCallback =
        Gtk.Widget.Widget
        -> Gtk.Enums.DirectionType
        -> IO Bool

    -- | A convenience synonym for @`Nothing` :: `Maybe` `WidgetClassFocusFieldCallback`@.
    noWidgetClassFocusFieldCallback :: Maybe WidgetClassFocusFieldCallback
    noWidgetClassFocusFieldCallback :: Maybe WidgetClassKeynavFailedFieldCallback
    noWidgetClassFocusFieldCallback = Maybe WidgetClassKeynavFailedFieldCallback
    forall a. Maybe a
    Nothing

    -- | Wrap the callback into a `GClosure`.
    genClosure_WidgetClassFocusFieldCallback :: MonadIO m => WidgetClassFocusFieldCallback -> m (GClosure C_WidgetClassFocusFieldCallback)
    genClosure_WidgetClassFocusFieldCallback :: forall (m :: * -> *).
    MonadIO m =>
    WidgetClassKeynavFailedFieldCallback
    -> m (GClosure C_WidgetClassShowHelpFieldCallback)
    genClosure_WidgetClassFocusFieldCallback WidgetClassKeynavFailedFieldCallback
    cb = IO (GClosure C_WidgetClassShowHelpFieldCallback)
    -> m (GClosure C_WidgetClassShowHelpFieldCallback)
    forall a. IO a -> m a
    forall (m :: * -> *) a. MonadIO m => IO a -> m a
    liftIO (IO (GClosure C_WidgetClassShowHelpFieldCallback)
     -> m (GClosure C_WidgetClassShowHelpFieldCallback))
    -> IO (GClosure C_WidgetClassShowHelpFieldCallback)
    -> m (GClosure C_WidgetClassShowHelpFieldCallback)
    forall a b. (a -> b) -> a -> b
    $ do
        let cb' :: C_WidgetClassShowHelpFieldCallback
    cb' = Maybe (Ptr (FunPtr C_WidgetClassShowHelpFieldCallback))
    -> WidgetClassKeynavFailedFieldCallback
    -> C_WidgetClassShowHelpFieldCallback
    wrap_WidgetClassFocusFieldCallback Maybe (Ptr (FunPtr C_WidgetClassShowHelpFieldCallback))
    forall a. Maybe a
    Nothing WidgetClassKeynavFailedFieldCallback
    cb
        C_WidgetClassShowHelpFieldCallback
    -> IO (FunPtr C_WidgetClassShowHelpFieldCallback)
    mk_WidgetClassFocusFieldCallback C_WidgetClassShowHelpFieldCallback
    cb' IO (FunPtr C_WidgetClassShowHelpFieldCallback)
    -> (FunPtr C_WidgetClassShowHelpFieldCallback
        -> IO (GClosure C_WidgetClassShowHelpFieldCallback))
    -> IO (GClosure C_WidgetClassShowHelpFieldCallback)
    forall a b. IO a -> (a -> IO b) -> IO b
    forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
    >>= FunPtr C_WidgetClassShowHelpFieldCallback
    -> IO (GClosure C_WidgetClassShowHelpFieldCallback)
    forall (m :: * -> *) a. MonadIO m => FunPtr a -> m (GClosure a)
    B.GClosure.newGClosure

    -- | Wrap a `WidgetClassFocusFieldCallback` into a `C_WidgetClassFocusFieldCallback`.
    wrap_WidgetClassFocusFieldCallback ::
        Maybe (Ptr (FunPtr C_WidgetClassFocusFieldCallback)) ->
        WidgetClassFocusFieldCallback ->
        C_WidgetClassFocusFieldCallback
    wrap_WidgetClassFocusFieldCallback :: Maybe (Ptr (FunPtr C_WidgetClassShowHelpFieldCallback))
    -> WidgetClassKeynavFailedFieldCallback
    -> C_WidgetClassShowHelpFieldCallback
    wrap_WidgetClassFocusFieldCallback Maybe (Ptr (FunPtr C_WidgetClassShowHelpFieldCallback))
    gi'funptrptr WidgetClassKeynavFailedFieldCallback
    gi'cb Ptr Widget
    widget CUInt
    direction = do
        widget' <- ((ManagedPtr Widget -> Widget) -> Ptr Widget -> IO Widget
    forall a b.
    (HasCallStack, GObject a, GObject b) =>
    (ManagedPtr a -> a) -> Ptr b -> IO a
    newObject ManagedPtr Widget -> Widget
    Gtk.Widget.Widget) Ptr Widget
    widget
        let direction' = (Int -> DirectionType
    forall a. Enum a => Int -> a
    toEnum (Int -> DirectionType) -> (CUInt -> Int) -> CUInt -> DirectionType
    forall b c a. (b -> c) -> (a -> b) -> a -> c
    . CUInt -> Int
    forall a b. (Integral a, Num b) => a -> b
    fromIntegral) CUInt
    direction
        result <- gi'cb  widget' direction'
        maybeReleaseFunPtr gi'funptrptr
        let result' = (Int -> CInt
    forall a b. (Integral a, Num b) => a -> b
    P.fromIntegral (Int -> CInt) -> (Bool -> Int) -> Bool -> CInt
    forall b c a. (b -> c) -> (a -> b) -> a -> c
    . Bool -> Int
    forall a. Enum a => a -> Int
    P.fromEnum) Bool
    result
        return result'

    -- callback WidgetClassEventFieldCallback
    {- Callable
      { returnType = Just (TBasicType TBoolean)
      , returnMayBeNull = False
      , returnTransfer = TransferNothing
      , returnDocumentation =
          Documentation
            { rawDocText =
                Just
                  "return from the event signal emission (%TRUE if\n              the event was handled)"
            , sinceVersion = Nothing
            }
      , args =
          [ Arg
              { argCName = "widget"
              , argType = TInterface Name { namespace = "Gtk" , name = "Widget" }
              , argCType = Just "GtkWidget*"
              , direction = DirectionIn
              , mayBeNull = False
              , argDoc =
                  Documentation
                    { rawDocText = Just "a #GtkWidget" , sinceVersion = Nothing }
              , argScope = ScopeTypeInvalid
              , argClosure = -1
              , argDestroy = -1
              , argCallerAllocates = False
              , argCallbackUserData = False
              , transfer = TransferNothing
              }
          , Arg
              { argCName = "event"
              , argType = TInterface Name { namespace = "Gdk" , name = "Event" }
              , argCType = Just "GdkEvent*"
              , direction = DirectionIn
              , mayBeNull = False
              , argDoc =
                  Documentation
                    { rawDocText = Just "a #GdkEvent" , sinceVersion = Nothing }
              , argScope = ScopeTypeInvalid
              , argClosure = -1
              , argDestroy = -1
              , argCallerAllocates = False
              , argCallbackUserData = False
              , transfer = TransferNothing
              }
          ]
      , skipReturn = False
      , callableThrows = False
      , callableDeprecated = Nothing
      , callableDocumentation =
          Documentation { rawDocText = Nothing , sinceVersion = Nothing }
      , callableResolvable = Nothing
      }
    -}
    -- | Type for the callback on the (unwrapped) C side.
    type C_WidgetClassEventFieldCallback =
        Ptr Gtk.Widget.Widget ->
        Ptr Gdk.Event.Event ->
        IO CInt

    -- Args: [ Arg
    --           { argCName = "widget"
    --           , argType = TInterface Name { namespace = "Gtk" , name = "Widget" }
    --           , argCType = Just "GtkWidget*"
    --           , direction = DirectionIn
    --           , mayBeNull = False
    --           , argDoc =
    --               Documentation
    --                 { rawDocText = Just "a #GtkWidget" , sinceVersion = Nothing }
    --           , argScope = ScopeTypeInvalid
    --           , argClosure = -1
    --           , argDestroy = -1
    --           , argCallerAllocates = False
    --           , argCallbackUserData = False
    --           , transfer = TransferNothing
    --           }
    --       , Arg
    --           { argCName = "event"
    --           , argType = TInterface Name { namespace = "Gdk" , name = "Event" }
    --           , argCType = Just "GdkEvent*"
    --           , direction = DirectionIn
    --           , mayBeNull = False
    --           , argDoc =
    --               Documentation
    --                 { rawDocText = Just "a #GdkEvent" , sinceVersion = Nothing }
    --           , argScope = ScopeTypeInvalid
    --           , argClosure = -1
    --           , argDestroy = -1
    --           , argCallerAllocates = False
    --           , argCallbackUserData = False
    --           , transfer = TransferNothing
    --           }
    --       ]
    -- Lengths: []
    -- returnType: Just (TBasicType TBoolean)
    -- throws : False
    -- Skip return : False

    foreign import ccall "dynamic" __dynamic_C_WidgetClassEventFieldCallback :: FunPtr C_WidgetClassEventFieldCallback -> C_WidgetClassEventFieldCallback

    -- | Given a pointer to a foreign C function, wrap it into a function callable from Haskell.
    dynamic_WidgetClassEventFieldCallback ::
        (B.CallStack.HasCallStack, MonadIO m, Gtk.Widget.IsWidget a) =>
        FunPtr C_WidgetClassEventFieldCallback
        -> a
        -- ^ /@widget@/: a t'GI.Gtk.Objects.Widget.Widget'
        -> Gdk.Event.Event
        -- ^ /@event@/: a t'GI.Gdk.Unions.Event.Event'
        -> m Bool
        -- ^ __Returns:__ return from the event signal emission ('P.True' if
        --               the event was handled)
    dynamic_WidgetClassEventFieldCallback :: forall (m :: * -> *) a.
    (HasCallStack, MonadIO m, IsWidget a) =>
    FunPtr C_WidgetClassEventFieldCallback -> a -> Event -> m Bool
    dynamic_WidgetClassEventFieldCallback FunPtr C_WidgetClassEventFieldCallback
    __funPtr a
    widget Event
    event = IO Bool -> m Bool
    forall a. IO a -> m a
    forall (m :: * -> *) a. MonadIO m => IO a -> m a
    liftIO (IO Bool -> m Bool) -> IO Bool -> m Bool
    forall a b. (a -> b) -> a -> b
    $ do
        widget' <- a -> IO (Ptr Widget)
    forall a b. (HasCallStack, ManagedPtrNewtype a) => a -> IO (Ptr b)
    unsafeManagedPtrCastPtr a
    widget
        event' <- unsafeManagedPtrGetPtr event
        result <- (__dynamic_C_WidgetClassEventFieldCallback __funPtr) widget' event'
        let result' = (CInt -> CInt -> Bool
    forall a. Eq a => a -> a -> Bool
    /= CInt
    0) CInt
    result
        touchManagedPtr widget
        touchManagedPtr event
        return result'

    -- | Generate a function pointer callable from C code, from a `C_WidgetClassEventFieldCallback`.
    foreign import ccall "wrapper"
        mk_WidgetClassEventFieldCallback :: C_WidgetClassEventFieldCallback -> IO (FunPtr C_WidgetClassEventFieldCallback)

    -- | /No description available in the introspection data./
    type WidgetClassEventFieldCallback =
        Gtk.Widget.Widget
        -- ^ /@widget@/: a t'GI.Gtk.Objects.Widget.Widget'
        -> Gdk.Event.Event
        -- ^ /@event@/: a t'GI.Gdk.Unions.Event.Event'
        -> IO Bool
        -- ^ __Returns:__ return from the event signal emission ('P.True' if
        --               the event was handled)

    -- | A convenience synonym for @`Nothing` :: `Maybe` `WidgetClassEventFieldCallback`@.
    noWidgetClassEventFieldCallback :: Maybe WidgetClassEventFieldCallback
    noWidgetClassEventFieldCallback :: Maybe WidgetClassEventFieldCallback
    noWidgetClassEventFieldCallback = Maybe WidgetClassEventFieldCallback
    forall a. Maybe a
    Nothing

    -- | Wrap the callback into a `GClosure`.
    genClosure_WidgetClassEventFieldCallback :: MonadIO m => WidgetClassEventFieldCallback -> m (GClosure C_WidgetClassEventFieldCallback)
    genClosure_WidgetClassEventFieldCallback :: forall (m :: * -> *).
    MonadIO m =>
    WidgetClassEventFieldCallback
    -> m (GClosure C_WidgetClassEventFieldCallback)
    genClosure_WidgetClassEventFieldCallback WidgetClassEventFieldCallback
    cb = IO (GClosure C_WidgetClassEventFieldCallback)
    -> m (GClosure C_WidgetClassEventFieldCallback)
    forall a. IO a -> m a
    forall (m :: * -> *) a. MonadIO m => IO a -> m a
    liftIO (IO (GClosure C_WidgetClassEventFieldCallback)
     -> m (GClosure C_WidgetClassEventFieldCallback))
    -> IO (GClosure C_WidgetClassEventFieldCallback)
    -> m (GClosure C_WidgetClassEventFieldCallback)
    forall a b. (a -> b) -> a -> b
    $ do
        let cb' :: C_WidgetClassEventFieldCallback
    cb' = Maybe (Ptr (FunPtr C_WidgetClassEventFieldCallback))
    -> WidgetClassEventFieldCallback -> C_WidgetClassEventFieldCallback
    wrap_WidgetClassEventFieldCallback Maybe (Ptr (FunPtr C_WidgetClassEventFieldCallback))
    forall a. Maybe a
    Nothing WidgetClassEventFieldCallback
    cb
        C_WidgetClassEventFieldCallback
    -> IO (FunPtr C_WidgetClassEventFieldCallback)
    mk_WidgetClassEventFieldCallback C_WidgetClassEventFieldCallback
    cb' IO (FunPtr C_WidgetClassEventFieldCallback)
    -> (FunPtr C_WidgetClassEventFieldCallback
        -> IO (GClosure C_WidgetClassEventFieldCallback))
    -> IO (GClosure C_WidgetClassEventFieldCallback)
    forall a b. IO a -> (a -> IO b) -> IO b
    forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
    >>= FunPtr C_WidgetClassEventFieldCallback
    -> IO (GClosure C_WidgetClassEventFieldCallback)
    forall (m :: * -> *) a. MonadIO m => FunPtr a -> m (GClosure a)
    B.GClosure.newGClosure

    -- | Wrap a `WidgetClassEventFieldCallback` into a `C_WidgetClassEventFieldCallback`.
    wrap_WidgetClassEventFieldCallback ::
        Maybe (Ptr (FunPtr C_WidgetClassEventFieldCallback)) ->
        WidgetClassEventFieldCallback ->
        C_WidgetClassEventFieldCallback
    wrap_WidgetClassEventFieldCallback :: Maybe (Ptr (FunPtr C_WidgetClassEventFieldCallback))
    -> WidgetClassEventFieldCallback -> C_WidgetClassEventFieldCallback
    wrap_WidgetClassEventFieldCallback Maybe (Ptr (FunPtr C_WidgetClassEventFieldCallback))
    gi'funptrptr WidgetClassEventFieldCallback
    gi'cb Ptr Widget
    widget Ptr Event
    event = do
        widget' <- ((ManagedPtr Widget -> Widget) -> Ptr Widget -> IO Widget
    forall a b.
    (HasCallStack, GObject a, GObject b) =>
    (ManagedPtr a -> a) -> Ptr b -> IO a
    newObject ManagedPtr Widget -> Widget
    Gtk.Widget.Widget) Ptr Widget
    widget
        B.ManagedPtr.withTransient  event $ \Event
    event' -> do
            result <- WidgetClassEventFieldCallback
    gi'cb  Widget
    widget' Event
    event'
            maybeReleaseFunPtr gi'funptrptr
            let result' = (Int -> CInt
    forall a b. (Integral a, Num b) => a -> b
    P.fromIntegral (Int -> CInt) -> (Bool -> Int) -> Bool -> CInt
    forall b c a. (b -> c) -> (a -> b) -> a -> c
    . Bool -> Int
    forall a. Enum a => a -> Int
    P.fromEnum) Bool
    result
            return result'

    -- callback WidgetClassEnterNotifyEventFieldCallback
    {- Callable
      { returnType = Just (TBasicType TBoolean)
      , returnMayBeNull = False
      , returnTransfer = TransferNothing
      , returnDocumentation =
          Documentation { rawDocText = Nothing , sinceVersion = Nothing }
      , args =
          [ Arg
              { argCName = "widget"
              , argType = TInterface Name { namespace = "Gtk" , name = "Widget" }
              , argCType = Just "GtkWidget*"
              , direction = DirectionIn
              , mayBeNull = False
              , argDoc =
                  Documentation { rawDocText = Nothing , sinceVersion = Nothing }
              , argScope = ScopeTypeInvalid
              , argClosure = -1
              , argDestroy = -1
              , argCallerAllocates = False
              , argCallbackUserData = False
              , transfer = TransferNothing
              }
          , Arg
              { argCName = "event"
              , argType =
                  TInterface Name { namespace = "Gdk" , name = "EventCrossing" }
              , argCType = Just "GdkEventCrossing*"
              , direction = DirectionIn
              , mayBeNull = False
              , argDoc =
                  Documentation { rawDocText = Nothing , sinceVersion = Nothing }
              , argScope = ScopeTypeInvalid
              , argClosure = -1
              , argDestroy = -1
              , argCallerAllocates = False
              , argCallbackUserData = False
              , transfer = TransferNothing
              }
          ]
      , skipReturn = False
      , callableThrows = False
      , callableDeprecated = Nothing
      , callableDocumentation =
          Documentation { rawDocText = Nothing , sinceVersion = Nothing }
      , callableResolvable = Nothing
      }
    -}
    -- | Type for the callback on the (unwrapped) C side.
    type C_WidgetClassEnterNotifyEventFieldCallback =
        Ptr Gtk.Widget.Widget ->
        Ptr Gdk.EventCrossing.EventCrossing ->
        IO CInt

    -- Args: [ Arg
    --           { argCName = "widget"
    --           , argType = TInterface Name { namespace = "Gtk" , name = "Widget" }
    --           , argCType = Just "GtkWidget*"
    --           , direction = DirectionIn
    --           , mayBeNull = False
    --           , argDoc =
    --               Documentation { rawDocText = Nothing , sinceVersion = Nothing }
    --           , argScope = ScopeTypeInvalid
    --           , argClosure = -1
    --           , argDestroy = -1
    --           , argCallerAllocates = False
    --           , argCallbackUserData = False
    --           , transfer = TransferNothing
    --           }
    --       , Arg
    --           { argCName = "event"
    --           , argType =
    --               TInterface Name { namespace = "Gdk" , name = "EventCrossing" }
    --           , argCType = Just "GdkEventCrossing*"
    --           , direction = DirectionIn
    --           , mayBeNull = False
    --           , argDoc =
    --               Documentation { rawDocText = Nothing , sinceVersion = Nothing }
    --           , argScope = ScopeTypeInvalid
    --           , argClosure = -1
    --           , argDestroy = -1
    --           , argCallerAllocates = False
    --           , argCallbackUserData = False
    --           , transfer = TransferNothing
    --           }
    --       ]
    -- Lengths: []
    -- returnType: Just (TBasicType TBoolean)
    -- throws : False
    -- Skip return : False

    foreign import ccall "dynamic" __dynamic_C_WidgetClassEnterNotifyEventFieldCallback :: FunPtr C_WidgetClassEnterNotifyEventFieldCallback -> C_WidgetClassEnterNotifyEventFieldCallback

    -- | Given a pointer to a foreign C function, wrap it into a function callable from Haskell.
    dynamic_WidgetClassEnterNotifyEventFieldCallback ::
        (B.CallStack.HasCallStack, MonadIO m, Gtk.Widget.IsWidget a) =>
        FunPtr C_WidgetClassEnterNotifyEventFieldCallback
        -> a
        -> Gdk.EventCrossing.EventCrossing
        -> m Bool
    dynamic_WidgetClassEnterNotifyEventFieldCallback :: forall (m :: * -> *) a.
    (HasCallStack, MonadIO m, IsWidget a) =>
    FunPtr C_WidgetClassLeaveNotifyEventFieldCallback
    -> a -> EventCrossing -> m Bool
    dynamic_WidgetClassEnterNotifyEventFieldCallback FunPtr C_WidgetClassLeaveNotifyEventFieldCallback
    __funPtr a
    widget EventCrossing
    event = IO Bool -> m Bool
    forall a. IO a -> m a
    forall (m :: * -> *) a. MonadIO m => IO a -> m a
    liftIO (IO Bool -> m Bool) -> IO Bool -> m Bool
    forall a b. (a -> b) -> a -> b
    $ do
        widget' <- a -> IO (Ptr Widget)
    forall a b. (HasCallStack, ManagedPtrNewtype a) => a -> IO (Ptr b)
    unsafeManagedPtrCastPtr a
    widget
        event' <- unsafeManagedPtrGetPtr event
        result <- (__dynamic_C_WidgetClassEnterNotifyEventFieldCallback __funPtr) widget' event'
        let result' = (CInt -> CInt -> Bool
    forall a. Eq a => a -> a -> Bool
    /= CInt
    0) CInt
    result
        touchManagedPtr widget
        touchManagedPtr event
        return result'

    -- | Generate a function pointer callable from C code, from a `C_WidgetClassEnterNotifyEventFieldCallback`.
    foreign import ccall "wrapper"
        mk_WidgetClassEnterNotifyEventFieldCallback :: C_WidgetClassEnterNotifyEventFieldCallback -> IO (FunPtr C_WidgetClassEnterNotifyEventFieldCallback)

    -- | /No description available in the introspection data./
    type WidgetClassEnterNotifyEventFieldCallback =
        Gtk.Widget.Widget
        -> Gdk.EventCrossing.EventCrossing
        -> IO Bool

    -- | A convenience synonym for @`Nothing` :: `Maybe` `WidgetClassEnterNotifyEventFieldCallback`@.
    noWidgetClassEnterNotifyEventFieldCallback :: Maybe WidgetClassEnterNotifyEventFieldCallback
    noWidgetClassEnterNotifyEventFieldCallback :: Maybe WidgetClassLeaveNotifyEventFieldCallback
    noWidgetClassEnterNotifyEventFieldCallback = Maybe WidgetClassLeaveNotifyEventFieldCallback
    forall a. Maybe a
    Nothing

    -- | Wrap the callback into a `GClosure`.
    genClosure_WidgetClassEnterNotifyEventFieldCallback :: MonadIO m => WidgetClassEnterNotifyEventFieldCallback -> m (GClosure C_WidgetClassEnterNotifyEventFieldCallback)
    genClosure_WidgetClassEnterNotifyEventFieldCallback :: forall (m :: * -> *).
    MonadIO m =>
    WidgetClassLeaveNotifyEventFieldCallback
    -> m (GClosure C_WidgetClassLeaveNotifyEventFieldCallback)
    genClosure_WidgetClassEnterNotifyEventFieldCallback WidgetClassLeaveNotifyEventFieldCallback
    cb = IO (GClosure C_WidgetClassLeaveNotifyEventFieldCallback)
    -> m (GClosure C_WidgetClassLeaveNotifyEventFieldCallback)
    forall a. IO a -> m a
    forall (m :: * -> *) a. MonadIO m => IO a -> m a
    liftIO (IO (GClosure C_WidgetClassLeaveNotifyEventFieldCallback)
     -> m (GClosure C_WidgetClassLeaveNotifyEventFieldCallback))
    -> IO (GClosure C_WidgetClassLeaveNotifyEventFieldCallback)
    -> m (GClosure C_WidgetClassLeaveNotifyEventFieldCallback)
    forall a b. (a -> b) -> a -> b
    $ do
        let cb' :: C_WidgetClassLeaveNotifyEventFieldCallback
    cb' = Maybe (Ptr (FunPtr C_WidgetClassLeaveNotifyEventFieldCallback))
    -> WidgetClassLeaveNotifyEventFieldCallback
    -> C_WidgetClassLeaveNotifyEventFieldCallback
    wrap_WidgetClassEnterNotifyEventFieldCallback Maybe (Ptr (FunPtr C_WidgetClassLeaveNotifyEventFieldCallback))
    forall a. Maybe a
    Nothing WidgetClassLeaveNotifyEventFieldCallback
    cb
        C_WidgetClassLeaveNotifyEventFieldCallback
    -> IO (FunPtr C_WidgetClassLeaveNotifyEventFieldCallback)
    mk_WidgetClassEnterNotifyEventFieldCallback C_WidgetClassLeaveNotifyEventFieldCallback
    cb' IO (FunPtr C_WidgetClassLeaveNotifyEventFieldCallback)
    -> (FunPtr C_WidgetClassLeaveNotifyEventFieldCallback
        -> IO (GClosure C_WidgetClassLeaveNotifyEventFieldCallback))
    -> IO (GClosure C_WidgetClassLeaveNotifyEventFieldCallback)
    forall a b. IO a -> (a -> IO b) -> IO b
    forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
    >>= FunPtr C_WidgetClassLeaveNotifyEventFieldCallback
    -> IO (GClosure C_WidgetClassLeaveNotifyEventFieldCallback)
    forall (m :: * -> *) a. MonadIO m => FunPtr a -> m (GClosure a)
    B.GClosure.newGClosure

    -- | Wrap a `WidgetClassEnterNotifyEventFieldCallback` into a `C_WidgetClassEnterNotifyEventFieldCallback`.
    wrap_WidgetClassEnterNotifyEventFieldCallback ::
        Maybe (Ptr (FunPtr C_WidgetClassEnterNotifyEventFieldCallback)) ->
        WidgetClassEnterNotifyEventFieldCallback ->
        C_WidgetClassEnterNotifyEventFieldCallback
    wrap_WidgetClassEnterNotifyEventFieldCallback :: Maybe (Ptr (FunPtr C_WidgetClassLeaveNotifyEventFieldCallback))
    -> WidgetClassLeaveNotifyEventFieldCallback
    -> C_WidgetClassLeaveNotifyEventFieldCallback
    wrap_WidgetClassEnterNotifyEventFieldCallback Maybe (Ptr (FunPtr C_WidgetClassLeaveNotifyEventFieldCallback))
    gi'funptrptr WidgetClassLeaveNotifyEventFieldCallback
    gi'cb Ptr Widget
    widget Ptr EventCrossing
    event = do
        widget' <- ((ManagedPtr Widget -> Widget) -> Ptr Widget -> IO Widget
    forall a b.
    (HasCallStack, GObject a, GObject b) =>
    (ManagedPtr a -> a) -> Ptr b -> IO a
    newObject ManagedPtr Widget -> Widget
    Gtk.Widget.Widget) Ptr Widget
    widget
        event' <- (newPtr Gdk.EventCrossing.EventCrossing) event
        result <- gi'cb  widget' event'
        maybeReleaseFunPtr gi'funptrptr
        let result' = (Int -> CInt
    forall a b. (Integral a, Num b) => a -> b
    P.fromIntegral (Int -> CInt) -> (Bool -> Int) -> Bool -> CInt
    forall b c a. (b -> c) -> (a -> b) -> a -> c
    . Bool -> Int
    forall a. Enum a => a -> Int
    P.fromEnum) Bool
    result
        return result'

    -- callback WidgetClassDrawFieldCallback
    {- Callable
      { returnType = Just (TBasicType TBoolean)
      , returnMayBeNull = False
      , returnTransfer = TransferNothing
      , returnDocumentation =
          Documentation { rawDocText = Nothing , sinceVersion = Nothing }
      , args =
          [ Arg
              { argCName = "widget"
              , argType = TInterface Name { namespace = "Gtk" , name = "Widget" }
              , argCType = Just "GtkWidget*"
              , direction = DirectionIn
              , mayBeNull = False
              , argDoc =
                  Documentation { rawDocText = Nothing , sinceVersion = Nothing }
              , argScope = ScopeTypeInvalid
              , argClosure = -1
              , argDestroy = -1
              , argCallerAllocates = False
              , argCallbackUserData = False
              , transfer = TransferNothing
              }
          , Arg
              { argCName = "cr"
              , argType =
                  TInterface Name { namespace = "cairo" , name = "Context" }
              , argCType = Just "cairo_t*"
              , direction = DirectionIn
              , mayBeNull = False
              , argDoc =
                  Documentation { rawDocText = Nothing , sinceVersion = Nothing }
              , argScope = ScopeTypeInvalid
              , argClosure = -1
              , argDestroy = -1
              , argCallerAllocates = False
              , argCallbackUserData = False
              , transfer = TransferNothing
              }
          ]
      , skipReturn = False
      , callableThrows = False
      , callableDeprecated = Nothing
      , callableDocumentation =
          Documentation { rawDocText = Nothing , sinceVersion = Nothing }
      , callableResolvable = Nothing
      }
    -}
    -- | Type for the callback on the (unwrapped) C side.
    type C_WidgetClassDrawFieldCallback =
        Ptr Gtk.Widget.Widget ->
        Ptr Cairo.Context.Context ->
        IO CInt

    -- Args: [ Arg
    --           { argCName = "widget"
    --           , argType = TInterface Name { namespace = "Gtk" , name = "Widget" }
    --           , argCType = Just "GtkWidget*"
    --           , direction = DirectionIn
    --           , mayBeNull = False
    --           , argDoc =
    --               Documentation { rawDocText = Nothing , sinceVersion = Nothing }
    --           , argScope = ScopeTypeInvalid
    --           , argClosure = -1
    --           , argDestroy = -1
    --           , argCallerAllocates = False
    --           , argCallbackUserData = False
    --           , transfer = TransferNothing
    --           }
    --       , Arg
    --           { argCName = "cr"
    --           , argType =
    --               TInterface Name { namespace = "cairo" , name = "Context" }
    --           , argCType = Just "cairo_t*"
    --           , direction = DirectionIn
    --           , mayBeNull = False
    --           , argDoc =
    --               Documentation { rawDocText = Nothing , sinceVersion = Nothing }
    --           , argScope = ScopeTypeInvalid
    --           , argClosure = -1
    --           , argDestroy = -1
    --           , argCallerAllocates = False
    --           , argCallbackUserData = False
    --           , transfer = TransferNothing
    --           }
    --       ]
    -- Lengths: []
    -- returnType: Just (TBasicType TBoolean)
    -- throws : False
    -- Skip return : False

    foreign import ccall "dynamic" __dynamic_C_WidgetClassDrawFieldCallback :: FunPtr C_WidgetClassDrawFieldCallback -> C_WidgetClassDrawFieldCallback

    -- | Given a pointer to a foreign C function, wrap it into a function callable from Haskell.
    dynamic_WidgetClassDrawFieldCallback ::
        (B.CallStack.HasCallStack, MonadIO m, Gtk.Widget.IsWidget a) =>
        FunPtr C_WidgetClassDrawFieldCallback
        -> a
        -> Cairo.Context.Context
        -> m Bool
    dynamic_WidgetClassDrawFieldCallback :: forall (m :: * -> *) a.
    (HasCallStack, MonadIO m, IsWidget a) =>
    FunPtr C_WidgetClassDrawFieldCallback -> a -> Context -> m Bool
    dynamic_WidgetClassDrawFieldCallback FunPtr C_WidgetClassDrawFieldCallback
    __funPtr a
    widget Context
    cr = IO Bool -> m Bool
    forall a. IO a -> m a
    forall (m :: * -> *) a. MonadIO m => IO a -> m a
    liftIO (IO Bool -> m Bool) -> IO Bool -> m Bool
    forall a b. (a -> b) -> a -> b
    $ do
        widget' <- a -> IO (Ptr Widget)
    forall a b. (HasCallStack, ManagedPtrNewtype a) => a -> IO (Ptr b)
    unsafeManagedPtrCastPtr a
    widget
        cr' <- unsafeManagedPtrGetPtr cr
        result <- (__dynamic_C_WidgetClassDrawFieldCallback __funPtr) widget' cr'
        let result' = (CInt -> CInt -> Bool
    forall a. Eq a => a -> a -> Bool
    /= CInt
    0) CInt
    result
        touchManagedPtr widget
        touchManagedPtr cr
        return result'

    -- | Generate a function pointer callable from C code, from a `C_WidgetClassDrawFieldCallback`.
    foreign import ccall "wrapper"
        mk_WidgetClassDrawFieldCallback :: C_WidgetClassDrawFieldCallback -> IO (FunPtr C_WidgetClassDrawFieldCallback)

    -- | /No description available in the introspection data./
    type WidgetClassDrawFieldCallback =
        Gtk.Widget.Widget
        -> Cairo.Context.Context
        -> IO Bool

    -- | A convenience synonym for @`Nothing` :: `Maybe` `WidgetClassDrawFieldCallback`@.
    noWidgetClassDrawFieldCallback :: Maybe WidgetClassDrawFieldCallback
    noWidgetClassDrawFieldCallback :: Maybe WidgetClassDrawFieldCallback
    noWidgetClassDrawFieldCallback = Maybe WidgetClassDrawFieldCallback
    forall a. Maybe a
    Nothing

    -- | Wrap the callback into a `GClosure`.
    genClosure_WidgetClassDrawFieldCallback :: MonadIO m => WidgetClassDrawFieldCallback -> m (GClosure C_WidgetClassDrawFieldCallback)
    genClosure_WidgetClassDrawFieldCallback :: forall (m :: * -> *).
    MonadIO m =>
    WidgetClassDrawFieldCallback
    -> m (GClosure C_WidgetClassDrawFieldCallback)
    genClosure_WidgetClassDrawFieldCallback WidgetClassDrawFieldCallback
    cb = IO (GClosure C_WidgetClassDrawFieldCallback)
    -> m (GClosure C_WidgetClassDrawFieldCallback)
    forall a. IO a -> m a
    forall (m :: * -> *) a. MonadIO m => IO a -> m a
    liftIO (IO (GClosure C_WidgetClassDrawFieldCallback)
     -> m (GClosure C_WidgetClassDrawFieldCallback))
    -> IO (GClosure C_WidgetClassDrawFieldCallback)
    -> m (GClosure C_WidgetClassDrawFieldCallback)
    forall a b. (a -> b) -> a -> b
    $ do
        let cb' :: C_WidgetClassDrawFieldCallback
    cb' = Maybe (Ptr (FunPtr C_WidgetClassDrawFieldCallback))
    -> WidgetClassDrawFieldCallback -> C_WidgetClassDrawFieldCallback
    wrap_WidgetClassDrawFieldCallback Maybe (Ptr (FunPtr C_WidgetClassDrawFieldCallback))
    forall a. Maybe a
    Nothing WidgetClassDrawFieldCallback
    cb
        C_WidgetClassDrawFieldCallback
    -> IO (FunPtr C_WidgetClassDrawFieldCallback)
    mk_WidgetClassDrawFieldCallback C_WidgetClassDrawFieldCallback
    cb' IO (FunPtr C_WidgetClassDrawFieldCallback)
    -> (FunPtr C_WidgetClassDrawFieldCallback
        -> IO (GClosure C_WidgetClassDrawFieldCallback))
    -> IO (GClosure C_WidgetClassDrawFieldCallback)
    forall a b. IO a -> (a -> IO b) -> IO b
    forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
    >>= FunPtr C_WidgetClassDrawFieldCallback
    -> IO (GClosure C_WidgetClassDrawFieldCallback)
    forall (m :: * -> *) a. MonadIO m => FunPtr a -> m (GClosure a)
    B.GClosure.newGClosure

    -- | Wrap a `WidgetClassDrawFieldCallback` into a `C_WidgetClassDrawFieldCallback`.
    wrap_WidgetClassDrawFieldCallback ::
        Maybe (Ptr (FunPtr C_WidgetClassDrawFieldCallback)) ->
        WidgetClassDrawFieldCallback ->
        C_WidgetClassDrawFieldCallback
    wrap_WidgetClassDrawFieldCallback :: Maybe (Ptr (FunPtr C_WidgetClassDrawFieldCallback))
    -> WidgetClassDrawFieldCallback -> C_WidgetClassDrawFieldCallback
    wrap_WidgetClassDrawFieldCallback Maybe (Ptr (FunPtr C_WidgetClassDrawFieldCallback))
    gi'funptrptr WidgetClassDrawFieldCallback
    gi'cb Ptr Widget
    widget Ptr Context
    cr = do
        widget' <- ((ManagedPtr Widget -> Widget) -> Ptr Widget -> IO Widget
    forall a b.
    (HasCallStack, GObject a, GObject b) =>
    (ManagedPtr a -> a) -> Ptr b -> IO a
    newObject ManagedPtr Widget -> Widget
    Gtk.Widget.Widget) Ptr Widget
    widget
        B.ManagedPtr.withTransient  cr $ \Context
    cr' -> do
            result <- WidgetClassDrawFieldCallback
    gi'cb  Widget
    widget' Context
    cr'
            maybeReleaseFunPtr gi'funptrptr
            let result' = (Int -> CInt
    forall a b. (Integral a, Num b) => a -> b
    P.fromIntegral (Int -> CInt) -> (Bool -> Int) -> Bool -> CInt
    forall b c a. (b -> c) -> (a -> b) -> a -> c
    . Bool -> Int
    forall a. Enum a => a -> Int
    P.fromEnum) Bool
    result
            return result'

    -- callback WidgetClassDragMotionFieldCallback
    {- Callable
      { returnType = Just (TBasicType TBoolean)
      , returnMayBeNull = False
      , returnTransfer = TransferNothing
      , returnDocumentation =
          Documentation { rawDocText = Nothing , sinceVersion = Nothing }
      , args =
          [ Arg
              { argCName = "widget"
              , argType = TInterface Name { namespace = "Gtk" , name = "Widget" }
              , argCType = Just "GtkWidget*"
              , direction = DirectionIn
              , mayBeNull = False
              , argDoc =
                  Documentation { rawDocText = Nothing , sinceVersion = Nothing }
              , argScope = ScopeTypeInvalid
              , argClosure = -1
              , argDestroy = -1
              , argCallerAllocates = False
              , argCallbackUserData = False
              , transfer = TransferNothing
              }
          , Arg
              { argCName = "context"
              , argType =
                  TInterface Name { namespace = "Gdk" , name = "DragContext" }
              , argCType = Just "GdkDragContext*"
              , direction = DirectionIn
              , mayBeNull = False
              , argDoc =
                  Documentation { rawDocText = Nothing , sinceVersion = Nothing }
              , argScope = ScopeTypeInvalid
              , argClosure = -1
              , argDestroy = -1
              , argCallerAllocates = False
              , argCallbackUserData = False
              , transfer = TransferNothing
              }
          , Arg
              { argCName = "x"
              , argType = TBasicType TInt
              , argCType = Just "gint"
              , direction = DirectionIn
              , mayBeNull = False
              , argDoc =
                  Documentation { rawDocText = Nothing , sinceVersion = Nothing }
              , argScope = ScopeTypeInvalid
              , argClosure = -1
              , argDestroy = -1
              , argCallerAllocates = False
              , argCallbackUserData = False
              , transfer = TransferNothing
              }
          , Arg
              { argCName = "y"
              , argType = TBasicType TInt
              , argCType = Just "gint"
              , direction = DirectionIn
              , mayBeNull = False
              , argDoc =
                  Documentation { rawDocText = Nothing , sinceVersion = Nothing }
              , argScope = ScopeTypeInvalid
              , argClosure = -1
              , argDestroy = -1
              , argCallerAllocates = False
              , argCallbackUserData = False
              , transfer = TransferNothing
              }
          , Arg
              { argCName = "time_"
              , argType = TBasicType TUInt
              , argCType = Just "guint"
              , direction = DirectionIn
              , mayBeNull = False
              , argDoc =
                  Documentation { rawDocText = Nothing , sinceVersion = Nothing }
              , argScope = ScopeTypeInvalid
              , argClosure = -1
              , argDestroy = -1
              , argCallerAllocates = False
              , argCallbackUserData = False
              , transfer = TransferNothing
              }
          ]
      , skipReturn = False
      , callableThrows = False
      , callableDeprecated = Nothing
      , callableDocumentation =
          Documentation { rawDocText = Nothing , sinceVersion = Nothing }
      , callableResolvable = Nothing
      }
    -}
    -- | Type for the callback on the (unwrapped) C side.
    type C_WidgetClassDragMotionFieldCallback =
        Ptr Gtk.Widget.Widget ->
        Ptr Gdk.DragContext.DragContext ->
        Int32 ->
        Int32 ->
        Word32 ->
        IO CInt

    -- Args: [ Arg
    --           { argCName = "widget"
    --           , argType = TInterface Name { namespace = "Gtk" , name = "Widget" }
    --           , argCType = Just "GtkWidget*"
    --           , direction = DirectionIn
    --           , mayBeNull = False
    --           , argDoc =
    --               Documentation { rawDocText = Nothing , sinceVersion = Nothing }
    --           , argScope = ScopeTypeInvalid
    --           , argClosure = -1
    --           , argDestroy = -1
    --           , argCallerAllocates = False
    --           , argCallbackUserData = False
    --           , transfer = TransferNothing
    --           }
    --       , Arg
    --           { argCName = "context"
    --           , argType =
    --               TInterface Name { namespace = "Gdk" , name = "DragContext" }
    --           , argCType = Just "GdkDragContext*"
    --           , direction = DirectionIn
    --           , mayBeNull = False
    --           , argDoc =
    --               Documentation { rawDocText = Nothing , sinceVersion = Nothing }
    --           , argScope = ScopeTypeInvalid
    --           , argClosure = -1
    --           , argDestroy = -1
    --           , argCallerAllocates = False
    --           , argCallbackUserData = False
    --           , transfer = TransferNothing
    --           }
    --       , Arg
    --           { argCName = "x"
    --           , argType = TBasicType TInt
    --           , argCType = Just "gint"
    --           , direction = DirectionIn
    --           , mayBeNull = False
    --           , argDoc =
    --               Documentation { rawDocText = Nothing , sinceVersion = Nothing }
    --           , argScope = ScopeTypeInvalid
    --           , argClosure = -1
    --           , argDestroy = -1
    --           , argCallerAllocates = False
    --           , argCallbackUserData = False
    --           , transfer = TransferNothing
    --           }
    --       , Arg
    --           { argCName = "y"
    --           , argType = TBasicType TInt
    --           , argCType = Just "gint"
    --           , direction = DirectionIn
    --           , mayBeNull = False
    --           , argDoc =
    --               Documentation { rawDocText = Nothing , sinceVersion = Nothing }
    --           , argScope = ScopeTypeInvalid
    --           , argClosure = -1
    --           , argDestroy = -1
    --           , argCallerAllocates = False
    --           , argCallbackUserData = False
    --           , transfer = TransferNothing
    --           }
    --       , Arg
    --           { argCName = "time_"
    --           , argType = TBasicType TUInt
    --           , argCType = Just "guint"
    --           , direction = DirectionIn
    --           , mayBeNull = False
    --           , argDoc =
    --               Documentation { rawDocText = Nothing , sinceVersion = Nothing }
    --           , argScope = ScopeTypeInvalid
    --           , argClosure = -1
    --           , argDestroy = -1
    --           , argCallerAllocates = False
    --           , argCallbackUserData = False
    --           , transfer = TransferNothing
    --           }
    --       ]
    -- Lengths: []
    -- returnType: Just (TBasicType TBoolean)
    -- throws : False
    -- Skip return : False

    foreign import ccall "dynamic" __dynamic_C_WidgetClassDragMotionFieldCallback :: FunPtr C_WidgetClassDragMotionFieldCallback -> C_WidgetClassDragMotionFieldCallback

    -- | Given a pointer to a foreign C function, wrap it into a function callable from Haskell.
    dynamic_WidgetClassDragMotionFieldCallback ::
        (B.CallStack.HasCallStack, MonadIO m, Gtk.Widget.IsWidget a, Gdk.DragContext.IsDragContext b) =>
        FunPtr C_WidgetClassDragMotionFieldCallback
        -> a
        -> b
        -> Int32
        -> Int32
        -> Word32
        -> m Bool
    dynamic_WidgetClassDragMotionFieldCallback :: forall (m :: * -> *) a b.
    (HasCallStack, MonadIO m, IsWidget a, IsDragContext b) =>
    FunPtr C_WidgetClassDragMotionFieldCallback
    -> a -> b -> Int32 -> Int32 -> Word32 -> m Bool
    dynamic_WidgetClassDragMotionFieldCallback FunPtr C_WidgetClassDragMotionFieldCallback
    __funPtr a
    widget b
    context Int32
    x Int32
    y Word32
    time_ = IO Bool -> m Bool
    forall a. IO a -> m a
    forall (m :: * -> *) a. MonadIO m => IO a -> m a
    liftIO (IO Bool -> m Bool) -> IO Bool -> m Bool
    forall a b. (a -> b) -> a -> b
    $ do
        widget' <- a -> IO (Ptr Widget)
    forall a b. (HasCallStack, ManagedPtrNewtype a) => a -> IO (Ptr b)
    unsafeManagedPtrCastPtr a
    widget
        context' <- unsafeManagedPtrCastPtr context
        result <- (__dynamic_C_WidgetClassDragMotionFieldCallback __funPtr) widget' context' x y time_
        let result' = (CInt -> CInt -> Bool
    forall a. Eq a => a -> a -> Bool
    /= CInt
    0) CInt
    result
        touchManagedPtr widget
        touchManagedPtr context
        return result'

    -- | Generate a function pointer callable from C code, from a `C_WidgetClassDragMotionFieldCallback`.
    foreign import ccall "wrapper"
        mk_WidgetClassDragMotionFieldCallback :: C_WidgetClassDragMotionFieldCallback -> IO (FunPtr C_WidgetClassDragMotionFieldCallback)

    -- | /No description available in the introspection data./
    type WidgetClassDragMotionFieldCallback =
        Gtk.Widget.Widget
        -> Gdk.DragContext.DragContext
        -> Int32
        -> Int32
        -> Word32
        -> IO Bool

    -- | A convenience synonym for @`Nothing` :: `Maybe` `WidgetClassDragMotionFieldCallback`@.
    noWidgetClassDragMotionFieldCallback :: Maybe WidgetClassDragMotionFieldCallback
    noWidgetClassDragMotionFieldCallback :: Maybe WidgetClassDragMotionFieldCallback
    noWidgetClassDragMotionFieldCallback = Maybe WidgetClassDragMotionFieldCallback
    forall a. Maybe a
    Nothing

    -- | Wrap the callback into a `GClosure`.
    genClosure_WidgetClassDragMotionFieldCallback :: MonadIO m => WidgetClassDragMotionFieldCallback -> m (GClosure C_WidgetClassDragMotionFieldCallback)
    genClosure_WidgetClassDragMotionFieldCallback :: forall (m :: * -> *).
    MonadIO m =>
    WidgetClassDragMotionFieldCallback
    -> m (GClosure C_WidgetClassDragMotionFieldCallback)
    genClosure_WidgetClassDragMotionFieldCallback WidgetClassDragMotionFieldCallback
    cb = IO (GClosure C_WidgetClassDragMotionFieldCallback)
    -> m (GClosure C_WidgetClassDragMotionFieldCallback)
    forall a. IO a -> m a
    forall (m :: * -> *) a. MonadIO m => IO a -> m a
    liftIO (IO (GClosure C_WidgetClassDragMotionFieldCallback)
     -> m (GClosure C_WidgetClassDragMotionFieldCallback))
    -> IO (GClosure C_WidgetClassDragMotionFieldCallback)
    -> m (GClosure C_WidgetClassDragMotionFieldCallback)
    forall a b. (a -> b) -> a -> b
    $ do
        let cb' :: C_WidgetClassDragMotionFieldCallback
    cb' = Maybe (Ptr (FunPtr C_WidgetClassDragMotionFieldCallback))
    -> WidgetClassDragMotionFieldCallback
    -> C_WidgetClassDragMotionFieldCallback
    wrap_WidgetClassDragMotionFieldCallback Maybe (Ptr (FunPtr C_WidgetClassDragMotionFieldCallback))
    forall a. Maybe a
    Nothing WidgetClassDragMotionFieldCallback
    cb
        C_WidgetClassDragMotionFieldCallback
    -> IO (FunPtr C_WidgetClassDragMotionFieldCallback)
    mk_WidgetClassDragMotionFieldCallback C_WidgetClassDragMotionFieldCallback
    cb' IO (FunPtr C_WidgetClassDragMotionFieldCallback)
    -> (FunPtr C_WidgetClassDragMotionFieldCallback
        -> IO (GClosure C_WidgetClassDragMotionFieldCallback))
    -> IO (GClosure C_WidgetClassDragMotionFieldCallback)
    forall a b. IO a -> (a -> IO b) -> IO b
    forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
    >>= FunPtr C_WidgetClassDragMotionFieldCallback
    -> IO (GClosure C_WidgetClassDragMotionFieldCallback)
    forall (m :: * -> *) a. MonadIO m => FunPtr a -> m (GClosure a)
    B.GClosure.newGClosure

    -- | Wrap a `WidgetClassDragMotionFieldCallback` into a `C_WidgetClassDragMotionFieldCallback`.
    wrap_WidgetClassDragMotionFieldCallback ::
        Maybe (Ptr (FunPtr C_WidgetClassDragMotionFieldCallback)) ->
        WidgetClassDragMotionFieldCallback ->
        C_WidgetClassDragMotionFieldCallback
    wrap_WidgetClassDragMotionFieldCallback :: Maybe (Ptr (FunPtr C_WidgetClassDragMotionFieldCallback))
    -> WidgetClassDragMotionFieldCallback
    -> C_WidgetClassDragMotionFieldCallback
    wrap_WidgetClassDragMotionFieldCallback Maybe (Ptr (FunPtr C_WidgetClassDragMotionFieldCallback))
    gi'funptrptr WidgetClassDragMotionFieldCallback
    gi'cb Ptr Widget
    widget Ptr DragContext
    context Int32
    x Int32
    y Word32
    time_ = do
        widget' <- ((ManagedPtr Widget -> Widget) -> Ptr Widget -> IO Widget
    forall a b.
    (HasCallStack, GObject a, GObject b) =>
    (ManagedPtr a -> a) -> Ptr b -> IO a
    newObject ManagedPtr Widget -> Widget
    Gtk.Widget.Widget) Ptr Widget
    widget
        context' <- (newObject Gdk.DragContext.DragContext) context
        result <- gi'cb  widget' context' x y time_
        maybeReleaseFunPtr gi'funptrptr
        let result' = (Int -> CInt
    forall a b. (Integral a, Num b) => a -> b
    P.fromIntegral (Int -> CInt) -> (Bool -> Int) -> Bool -> CInt
    forall b c a. (b -> c) -> (a -> b) -> a -> c
    . Bool -> Int
    forall a. Enum a => a -> Int
    P.fromEnum) Bool
    result
        return result'

    -- callback WidgetClassDragLeaveFieldCallback
    {- Callable
      { returnType = Nothing
      , returnMayBeNull = False
      , returnTransfer = TransferNothing
      , returnDocumentation =
          Documentation { rawDocText = Nothing , sinceVersion = Nothing }
      , args =
          [ Arg
              { argCName = "widget"
              , argType = TInterface Name { namespace = "Gtk" , name = "Widget" }
              , argCType = Just "GtkWidget*"
              , direction = DirectionIn
              , mayBeNull = False
              , argDoc =
                  Documentation { rawDocText = Nothing , sinceVersion = Nothing }
              , argScope = ScopeTypeInvalid
              , argClosure = -1
              , argDestroy = -1
              , argCallerAllocates = False
              , argCallbackUserData = False
              , transfer = TransferNothing
              }
          , Arg
              { argCName = "context"
              , argType =
                  TInterface Name { namespace = "Gdk" , name = "DragContext" }
              , argCType = Just "GdkDragContext*"
              , direction = DirectionIn
              , mayBeNull = False
              , argDoc =
                  Documentation { rawDocText = Nothing , sinceVersion = Nothing }
              , argScope = ScopeTypeInvalid
              , argClosure = -1
              , argDestroy = -1
              , argCallerAllocates = False
              , argCallbackUserData = False
              , transfer = TransferNothing
              }
          , Arg
              { argCName = "time_"
              , argType = TBasicType TUInt
              , argCType = Just "guint"
              , direction = DirectionIn
              , mayBeNull = False
              , argDoc =
                  Documentation { rawDocText = Nothing , sinceVersion = Nothing }
              , argScope = ScopeTypeInvalid
              , argClosure = -1
              , argDestroy = -1
              , argCallerAllocates = False
              , argCallbackUserData = False
              , transfer = TransferNothing
              }
          ]
      , skipReturn = False
      , callableThrows = False
      , callableDeprecated = Nothing
      , callableDocumentation =
          Documentation { rawDocText = Nothing , sinceVersion = Nothing }
      , callableResolvable = Nothing
      }
    -}
    -- | Type for the callback on the (unwrapped) C side.
    type C_WidgetClassDragLeaveFieldCallback =
        Ptr Gtk.Widget.Widget ->
        Ptr Gdk.DragContext.DragContext ->
        Word32 ->
        IO ()

    -- Args: [ Arg
    --           { argCName = "widget"
    --           , argType = TInterface Name { namespace = "Gtk" , name = "Widget" }
    --           , argCType = Just "GtkWidget*"
    --           , direction = DirectionIn
    --           , mayBeNull = False
    --           , argDoc =
    --               Documentation { rawDocText = Nothing , sinceVersion = Nothing }
    --           , argScope = ScopeTypeInvalid
    --           , argClosure = -1
    --           , argDestroy = -1
    --           , argCallerAllocates = False
    --           , argCallbackUserData = False
    --           , transfer = TransferNothing
    --           }
    --       , Arg
    --           { argCName = "context"
    --           , argType =
    --               TInterface Name { namespace = "Gdk" , name = "DragContext" }
    --           , argCType = Just "GdkDragContext*"
    --           , direction = DirectionIn
    --           , mayBeNull = False
    --           , argDoc =
    --               Documentation { rawDocText = Nothing , sinceVersion = Nothing }
    --           , argScope = ScopeTypeInvalid
    --           , argClosure = -1
    --           , argDestroy = -1
    --           , argCallerAllocates = False
    --           , argCallbackUserData = False
    --           , transfer = TransferNothing
    --           }
    --       , Arg
    --           { argCName = "time_"
    --           , argType = TBasicType TUInt
    --           , argCType = Just "guint"
    --           , direction = DirectionIn
    --           , mayBeNull = False
    --           , argDoc =
    --               Documentation { rawDocText = Nothing , sinceVersion = Nothing }
    --           , argScope = ScopeTypeInvalid
    --           , argClosure = -1
    --           , argDestroy = -1
    --           , argCallerAllocates = False
    --           , argCallbackUserData = False
    --           , transfer = TransferNothing
    --           }
    --       ]
    -- Lengths: []
    -- returnType: Nothing
    -- throws : False
    -- Skip return : False

    foreign import ccall "dynamic" __dynamic_C_WidgetClassDragLeaveFieldCallback :: FunPtr C_WidgetClassDragLeaveFieldCallback -> C_WidgetClassDragLeaveFieldCallback

    -- | Given a pointer to a foreign C function, wrap it into a function callable from Haskell.
    dynamic_WidgetClassDragLeaveFieldCallback ::
        (B.CallStack.HasCallStack, MonadIO m, Gtk.Widget.IsWidget a, Gdk.DragContext.IsDragContext b) =>
        FunPtr C_WidgetClassDragLeaveFieldCallback
        -> a
        -> b
        -> Word32
        -> m ()
    dynamic_WidgetClassDragLeaveFieldCallback :: forall (m :: * -> *) a b.
    (HasCallStack, MonadIO m, IsWidget a, IsDragContext b) =>
    FunPtr C_WidgetClassDragLeaveFieldCallback
    -> a -> b -> Word32 -> m ()
    dynamic_WidgetClassDragLeaveFieldCallback FunPtr C_WidgetClassDragLeaveFieldCallback
    __funPtr a
    widget b
    context Word32
    time_ = IO () -> m ()
    forall a. IO a -> m a
    forall (m :: * -> *) a. MonadIO m => IO a -> m a
    liftIO (IO () -> m ()) -> IO () -> m ()
    forall a b. (a -> b) -> a -> b
    $ do
        widget' <- a -> IO (Ptr Widget)
    forall a b. (HasCallStack, ManagedPtrNewtype a) => a -> IO (Ptr b)
    unsafeManagedPtrCastPtr a
    widget
        context' <- unsafeManagedPtrCastPtr context
        (__dynamic_C_WidgetClassDragLeaveFieldCallback __funPtr) widget' context' time_
        touchManagedPtr widget
        touchManagedPtr context
        return ()

    -- | Generate a function pointer callable from C code, from a `C_WidgetClassDragLeaveFieldCallback`.
    foreign import ccall "wrapper"
        mk_WidgetClassDragLeaveFieldCallback :: C_WidgetClassDragLeaveFieldCallback -> IO (FunPtr C_WidgetClassDragLeaveFieldCallback)

    -- | /No description available in the introspection data./
    type WidgetClassDragLeaveFieldCallback =
        Gtk.Widget.Widget
        -> Gdk.DragContext.DragContext
        -> Word32
        -> IO ()

    -- | A convenience synonym for @`Nothing` :: `Maybe` `WidgetClassDragLeaveFieldCallback`@.
    noWidgetClassDragLeaveFieldCallback :: Maybe WidgetClassDragLeaveFieldCallback
    noWidgetClassDragLeaveFieldCallback :: Maybe WidgetClassDragLeaveFieldCallback
    noWidgetClassDragLeaveFieldCallback = Maybe WidgetClassDragLeaveFieldCallback
    forall a. Maybe a
    Nothing

    -- | Wrap the callback into a `GClosure`.
    genClosure_WidgetClassDragLeaveFieldCallback :: MonadIO m => WidgetClassDragLeaveFieldCallback -> m (GClosure C_WidgetClassDragLeaveFieldCallback)
    genClosure_WidgetClassDragLeaveFieldCallback :: forall (m :: * -> *).
    MonadIO m =>
    WidgetClassDragLeaveFieldCallback
    -> m (GClosure C_WidgetClassDragLeaveFieldCallback)
    genClosure_WidgetClassDragLeaveFieldCallback WidgetClassDragLeaveFieldCallback
    cb = IO (GClosure C_WidgetClassDragLeaveFieldCallback)
    -> m (GClosure C_WidgetClassDragLeaveFieldCallback)
    forall a. IO a -> m a
    forall (m :: * -> *) a. MonadIO m => IO a -> m a
    liftIO (IO (GClosure C_WidgetClassDragLeaveFieldCallback)
     -> m (GClosure C_WidgetClassDragLeaveFieldCallback))
    -> IO (GClosure C_WidgetClassDragLeaveFieldCallback)
    -> m (GClosure C_WidgetClassDragLeaveFieldCallback)
    forall a b. (a -> b) -> a -> b
    $ do
        let cb' :: C_WidgetClassDragLeaveFieldCallback
    cb' = Maybe (Ptr (FunPtr C_WidgetClassDragLeaveFieldCallback))
    -> WidgetClassDragLeaveFieldCallback
    -> C_WidgetClassDragLeaveFieldCallback
    wrap_WidgetClassDragLeaveFieldCallback Maybe (Ptr (FunPtr C_WidgetClassDragLeaveFieldCallback))
    forall a. Maybe a
    Nothing WidgetClassDragLeaveFieldCallback
    cb
        C_WidgetClassDragLeaveFieldCallback
    -> IO (FunPtr C_WidgetClassDragLeaveFieldCallback)
    mk_WidgetClassDragLeaveFieldCallback C_WidgetClassDragLeaveFieldCallback
    cb' IO (FunPtr C_WidgetClassDragLeaveFieldCallback)
    -> (FunPtr C_WidgetClassDragLeaveFieldCallback
        -> IO (GClosure C_WidgetClassDragLeaveFieldCallback))
    -> IO (GClosure C_WidgetClassDragLeaveFieldCallback)
    forall a b. IO a -> (a -> IO b) -> IO b
    forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
    >>= FunPtr C_WidgetClassDragLeaveFieldCallback
    -> IO (GClosure C_WidgetClassDragLeaveFieldCallback)
    forall (m :: * -> *) a. MonadIO m => FunPtr a -> m (GClosure a)
    B.GClosure.newGClosure

    -- | Wrap a `WidgetClassDragLeaveFieldCallback` into a `C_WidgetClassDragLeaveFieldCallback`.
    wrap_WidgetClassDragLeaveFieldCallback ::
        Maybe (Ptr (FunPtr C_WidgetClassDragLeaveFieldCallback)) ->
        WidgetClassDragLeaveFieldCallback ->
        C_WidgetClassDragLeaveFieldCallback
    wrap_WidgetClassDragLeaveFieldCallback :: Maybe (Ptr (FunPtr C_WidgetClassDragLeaveFieldCallback))
    -> WidgetClassDragLeaveFieldCallback
    -> C_WidgetClassDragLeaveFieldCallback
    wrap_WidgetClassDragLeaveFieldCallback Maybe (Ptr (FunPtr C_WidgetClassDragLeaveFieldCallback))
    gi'funptrptr WidgetClassDragLeaveFieldCallback
    gi'cb Ptr Widget
    widget Ptr DragContext
    context Word32
    time_ = do
        widget' <- ((ManagedPtr Widget -> Widget) -> Ptr Widget -> IO Widget
    forall a b.
    (HasCallStack, GObject a, GObject b) =>
    (ManagedPtr a -> a) -> Ptr b -> IO a
    newObject ManagedPtr Widget -> Widget
    Gtk.Widget.Widget) Ptr Widget
    widget
        context' <- (newObject Gdk.DragContext.DragContext) context
        gi'cb  widget' context' time_
        maybeReleaseFunPtr gi'funptrptr

    -- callback WidgetClassDragFailedFieldCallback
    {- Callable
      { returnType = Just (TBasicType TBoolean)
      , returnMayBeNull = False
      , returnTransfer = TransferNothing
      , returnDocumentation =
          Documentation { rawDocText = Nothing , sinceVersion = Nothing }
      , args =
          [ Arg
              { argCName = "widget"
              , argType = TInterface Name { namespace = "Gtk" , name = "Widget" }
              , argCType = Just "GtkWidget*"
              , direction = DirectionIn
              , mayBeNull = False
              , argDoc =
                  Documentation { rawDocText = Nothing , sinceVersion = Nothing }
              , argScope = ScopeTypeInvalid
              , argClosure = -1
              , argDestroy = -1
              , argCallerAllocates = False
              , argCallbackUserData = False
              , transfer = TransferNothing
              }
          , Arg
              { argCName = "context"
              , argType =
                  TInterface Name { namespace = "Gdk" , name = "DragContext" }
              , argCType = Just "GdkDragContext*"
              , direction = DirectionIn
              , mayBeNull = False
              , argDoc =
                  Documentation { rawDocText = Nothing , sinceVersion = Nothing }
              , argScope = ScopeTypeInvalid
              , argClosure = -1
              , argDestroy = -1
              , argCallerAllocates = False
              , argCallbackUserData = False
              , transfer = TransferNothing
              }
          , Arg
              { argCName = "result"
              , argType =
                  TInterface Name { namespace = "Gtk" , name = "DragResult" }
              , argCType = Just "GtkDragResult"
              , direction = DirectionIn
              , mayBeNull = False
              , argDoc =
                  Documentation { rawDocText = Nothing , sinceVersion = Nothing }
              , argScope = ScopeTypeInvalid
              , argClosure = -1
              , argDestroy = -1
              , argCallerAllocates = False
              , argCallbackUserData = False
              , transfer = TransferNothing
              }
          ]
      , skipReturn = False
      , callableThrows = False
      , callableDeprecated = Nothing
      , callableDocumentation =
          Documentation { rawDocText = Nothing , sinceVersion = Nothing }
      , callableResolvable = Nothing
      }
    -}
    -- | Type for the callback on the (unwrapped) C side.
    type C_WidgetClassDragFailedFieldCallback =
        Ptr Gtk.Widget.Widget ->
        Ptr Gdk.DragContext.DragContext ->
        CUInt ->
        IO CInt

    -- Args: [ Arg
    --           { argCName = "widget"
    --           , argType = TInterface Name { namespace = "Gtk" , name = "Widget" }
    --           , argCType = Just "GtkWidget*"
    --           , direction = DirectionIn
    --           , mayBeNull = False
    --           , argDoc =
    --               Documentation { rawDocText = Nothing , sinceVersion = Nothing }
    --           , argScope = ScopeTypeInvalid
    --           , argClosure = -1
    --           , argDestroy = -1
    --           , argCallerAllocates = False
    --           , argCallbackUserData = False
    --           , transfer = TransferNothing
    --           }
    --       , Arg
    --           { argCName = "context"
    --           , argType =
    --               TInterface Name { namespace = "Gdk" , name = "DragContext" }
    --           , argCType = Just "GdkDragContext*"
    --           , direction = DirectionIn
    --           , mayBeNull = False
    --           , argDoc =
    --               Documentation { rawDocText = Nothing , sinceVersion = Nothing }
    --           , argScope = ScopeTypeInvalid
    --           , argClosure = -1
    --           , argDestroy = -1
    --           , argCallerAllocates = False
    --           , argCallbackUserData = False
    --           , transfer = TransferNothing
    --           }
    --       , Arg
    --           { argCName = "result"
    --           , argType =
    --               TInterface Name { namespace = "Gtk" , name = "DragResult" }
    --           , argCType = Just "GtkDragResult"
    --           , direction = DirectionIn
    --           , mayBeNull = False
    --           , argDoc =
    --               Documentation { rawDocText = Nothing , sinceVersion = Nothing }
    --           , argScope = ScopeTypeInvalid
    --           , argClosure = -1
    --           , argDestroy = -1
    --           , argCallerAllocates = False
    --           , argCallbackUserData = False
    --           , transfer = TransferNothing
    --           }
    --       ]
    -- Lengths: []
    -- returnType: Just (TBasicType TBoolean)
    -- throws : False
    -- Skip return : False

    foreign import ccall "dynamic" __dynamic_C_WidgetClassDragFailedFieldCallback :: FunPtr C_WidgetClassDragFailedFieldCallback -> C_WidgetClassDragFailedFieldCallback

    -- | Given a pointer to a foreign C function, wrap it into a function callable from Haskell.
    dynamic_WidgetClassDragFailedFieldCallback ::
        (B.CallStack.HasCallStack, MonadIO m, Gtk.Widget.IsWidget a, Gdk.DragContext.IsDragContext b) =>
        FunPtr C_WidgetClassDragFailedFieldCallback
        -> a
        -> b
        -> Gtk.Enums.DragResult
        -> m Bool
    dynamic_WidgetClassDragFailedFieldCallback :: forall (m :: * -> *) a b.
    (HasCallStack, MonadIO m, IsWidget a, IsDragContext b) =>
    FunPtr C_WidgetClassDragFailedFieldCallback
    -> a -> b -> DragResult -> m Bool
    dynamic_WidgetClassDragFailedFieldCallback FunPtr C_WidgetClassDragFailedFieldCallback
    __funPtr a
    widget b
    context DragResult
    result_ = IO Bool -> m Bool
    forall a. IO a -> m a
    forall (m :: * -> *) a. MonadIO m => IO a -> m a
    liftIO (IO Bool -> m Bool) -> IO Bool -> m Bool
    forall a b. (a -> b) -> a -> b
    $ do
        widget' <- a -> IO (Ptr Widget)
    forall a b. (HasCallStack, ManagedPtrNewtype a) => a -> IO (Ptr b)
    unsafeManagedPtrCastPtr a
    widget
        context' <- unsafeManagedPtrCastPtr context
        let result_' = (Int -> CUInt
    forall a b. (Integral a, Num b) => a -> b
    fromIntegral (Int -> CUInt) -> (DragResult -> Int) -> DragResult -> CUInt
    forall b c a. (b -> c) -> (a -> b) -> a -> c
    . DragResult -> Int
    forall a. Enum a => a -> Int
    fromEnum) DragResult
    result_
        result <- (__dynamic_C_WidgetClassDragFailedFieldCallback __funPtr) widget' context' result_'
        let result' = (CInt -> CInt -> Bool
    forall a. Eq a => a -> a -> Bool
    /= CInt
    0) CInt
    result
        touchManagedPtr widget
        touchManagedPtr context
        return result'

    -- | Generate a function pointer callable from C code, from a `C_WidgetClassDragFailedFieldCallback`.
    foreign import ccall "wrapper"
        mk_WidgetClassDragFailedFieldCallback :: C_WidgetClassDragFailedFieldCallback -> IO (FunPtr C_WidgetClassDragFailedFieldCallback)

    -- | /No description available in the introspection data./
    type WidgetClassDragFailedFieldCallback =
        Gtk.Widget.Widget
        -> Gdk.DragContext.DragContext
        -> Gtk.Enums.DragResult
        -> IO Bool

    -- | A convenience synonym for @`Nothing` :: `Maybe` `WidgetClassDragFailedFieldCallback`@.
    noWidgetClassDragFailedFieldCallback :: Maybe WidgetClassDragFailedFieldCallback
    noWidgetClassDragFailedFieldCallback :: Maybe WidgetClassDragFailedFieldCallback
    noWidgetClassDragFailedFieldCallback = Maybe WidgetClassDragFailedFieldCallback
    forall a. Maybe a
    Nothing

    -- | Wrap the callback into a `GClosure`.
    genClosure_WidgetClassDragFailedFieldCallback :: MonadIO m => WidgetClassDragFailedFieldCallback -> m (GClosure C_WidgetClassDragFailedFieldCallback)
    genClosure_WidgetClassDragFailedFieldCallback :: forall (m :: * -> *).
    MonadIO m =>
    WidgetClassDragFailedFieldCallback
    -> m (GClosure C_WidgetClassDragFailedFieldCallback)
    genClosure_WidgetClassDragFailedFieldCallback WidgetClassDragFailedFieldCallback
    cb = IO (GClosure C_WidgetClassDragFailedFieldCallback)
    -> m (GClosure C_WidgetClassDragFailedFieldCallback)
    forall a. IO a -> m a
    forall (m :: * -> *) a. MonadIO m => IO a -> m a
    liftIO (IO (GClosure C_WidgetClassDragFailedFieldCallback)
     -> m (GClosure C_WidgetClassDragFailedFieldCallback))
    -> IO (GClosure C_WidgetClassDragFailedFieldCallback)
    -> m (GClosure C_WidgetClassDragFailedFieldCallback)
    forall a b. (a -> b) -> a -> b
    $ do
        let cb' :: C_WidgetClassDragFailedFieldCallback
    cb' = Maybe (Ptr (FunPtr C_WidgetClassDragFailedFieldCallback))
    -> WidgetClassDragFailedFieldCallback
    -> C_WidgetClassDragFailedFieldCallback
    wrap_WidgetClassDragFailedFieldCallback Maybe (Ptr (FunPtr C_WidgetClassDragFailedFieldCallback))
    forall a. Maybe a
    Nothing WidgetClassDragFailedFieldCallback
    cb
        C_WidgetClassDragFailedFieldCallback
    -> IO (FunPtr C_WidgetClassDragFailedFieldCallback)
    mk_WidgetClassDragFailedFieldCallback C_WidgetClassDragFailedFieldCallback
    cb' IO (FunPtr C_WidgetClassDragFailedFieldCallback)
    -> (FunPtr C_WidgetClassDragFailedFieldCallback
        -> IO (GClosure C_WidgetClassDragFailedFieldCallback))
    -> IO (GClosure C_WidgetClassDragFailedFieldCallback)
    forall a b. IO a -> (a -> IO b) -> IO b
    forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
    >>= FunPtr C_WidgetClassDragFailedFieldCallback
    -> IO (GClosure C_WidgetClassDragFailedFieldCallback)
    forall (m :: * -> *) a. MonadIO m => FunPtr a -> m (GClosure a)
    B.GClosure.newGClosure

    -- | Wrap a `WidgetClassDragFailedFieldCallback` into a `C_WidgetClassDragFailedFieldCallback`.
    wrap_WidgetClassDragFailedFieldCallback ::
        Maybe (Ptr (FunPtr C_WidgetClassDragFailedFieldCallback)) ->
        WidgetClassDragFailedFieldCallback ->
        C_WidgetClassDragFailedFieldCallback
    wrap_WidgetClassDragFailedFieldCallback :: Maybe (Ptr (FunPtr C_WidgetClassDragFailedFieldCallback))
    -> WidgetClassDragFailedFieldCallback
    -> C_WidgetClassDragFailedFieldCallback
    wrap_WidgetClassDragFailedFieldCallback Maybe (Ptr (FunPtr C_WidgetClassDragFailedFieldCallback))
    gi'funptrptr WidgetClassDragFailedFieldCallback
    gi'cb Ptr Widget
    widget Ptr DragContext
    context CUInt
    result_ = do
        widget' <- ((ManagedPtr Widget -> Widget) -> Ptr Widget -> IO Widget
    forall a b.
    (HasCallStack, GObject a, GObject b) =>
    (ManagedPtr a -> a) -> Ptr b -> IO a
    newObject ManagedPtr Widget -> Widget
    Gtk.Widget.Widget) Ptr Widget
    widget
        context' <- (newObject Gdk.DragContext.DragContext) context
        let result_' = (Int -> DragResult
    forall a. Enum a => Int -> a
    toEnum (Int -> DragResult) -> (CUInt -> Int) -> CUInt -> DragResult
    forall b c a. (b -> c) -> (a -> b) -> a -> c
    . CUInt -> Int
    forall a b. (Integral a, Num b) => a -> b
    fromIntegral) CUInt
    result_
        result <- gi'cb  widget' context' result_'
        maybeReleaseFunPtr gi'funptrptr
        let result' = (Int -> CInt
    forall a b. (Integral a, Num b) => a -> b
    P.fromIntegral (Int -> CInt) -> (Bool -> Int) -> Bool -> CInt
    forall b c a. (b -> c) -> (a -> b) -> a -> c
    . Bool -> Int
    forall a. Enum a => a -> Int
    P.fromEnum) Bool
    result
        return result'

    -- callback WidgetClassDragEndFieldCallback
    {- Callable
      { returnType = Nothing
      , returnMayBeNull = False
      , returnTransfer = TransferNothing
      , returnDocumentation =
          Documentation { rawDocText = Nothing , sinceVersion = Nothing }
      , args =
          [ Arg
              { argCName = "widget"
              , argType = TInterface Name { namespace = "Gtk" , name = "Widget" }
              , argCType = Just "GtkWidget*"
              , direction = DirectionIn
              , mayBeNull = False
              , argDoc =
                  Documentation { rawDocText = Nothing , sinceVersion = Nothing }
              , argScope = ScopeTypeInvalid
              , argClosure = -1
              , argDestroy = -1
              , argCallerAllocates = False
              , argCallbackUserData = False
              , transfer = TransferNothing
              }
          , Arg
              { argCName = "context"
              , argType =
                  TInterface Name { namespace = "Gdk" , name = "DragContext" }
              , argCType = Just "GdkDragContext*"
              , direction = DirectionIn
              , mayBeNull = False
              , argDoc =
                  Documentation { rawDocText = Nothing , sinceVersion = Nothing }
              , argScope = ScopeTypeInvalid
              , argClosure = -1
              , argDestroy = -1
              , argCallerAllocates = False
              , argCallbackUserData = False
              , transfer = TransferNothing
              }
          ]
      , skipReturn = False
      , callableThrows = False
      , callableDeprecated = Nothing
      , callableDocumentation =
          Documentation { rawDocText = Nothing , sinceVersion = Nothing }
      , callableResolvable = Nothing
      }
    -}
    -- | Type for the callback on the (unwrapped) C side.
    type C_WidgetClassDragEndFieldCallback =
        Ptr Gtk.Widget.Widget ->
        Ptr Gdk.DragContext.DragContext ->
        IO ()

    -- Args: [ Arg
    --           { argCName = "widget"
    --           , argType = TInterface Name { namespace = "Gtk" , name = "Widget" }
    --           , argCType = Just "GtkWidget*"
    --           , direction = DirectionIn
    --           , mayBeNull = False
    --           , argDoc =
    --               Documentation { rawDocText = Nothing , sinceVersion = Nothing }
    --           , argScope = ScopeTypeInvalid
    --           , argClosure = -1
    --           , argDestroy = -1
    --           , argCallerAllocates = False
    --           , argCallbackUserData = False
    --           , transfer = TransferNothing
    --           }
    --       , Arg
    --           { argCName = "context"
    --           , argType =
    --               TInterface Name { namespace = "Gdk" , name = "DragContext" }
    --           , argCType = Just "GdkDragContext*"
    --           , direction = DirectionIn
    --           , mayBeNull = False
    --           , argDoc =
    --               Documentation { rawDocText = Nothing , sinceVersion = Nothing }
    --           , argScope = ScopeTypeInvalid
    --           , argClosure = -1
    --           , argDestroy = -1
    --           , argCallerAllocates = False
    --           , argCallbackUserData = False
    --           , transfer = TransferNothing
    --           }
    --       ]
    -- Lengths: []
    -- returnType: Nothing
    -- throws : False
    -- Skip return : False

    foreign import ccall "dynamic" __dynamic_C_WidgetClassDragEndFieldCallback :: FunPtr C_WidgetClassDragEndFieldCallback -> C_WidgetClassDragEndFieldCallback

    -- | Given a pointer to a foreign C function, wrap it into a function callable from Haskell.
    dynamic_WidgetClassDragEndFieldCallback ::
        (B.CallStack.HasCallStack, MonadIO m, Gtk.Widget.IsWidget a, Gdk.DragContext.IsDragContext b) =>
        FunPtr C_WidgetClassDragEndFieldCallback
        -> a
        -> b
        -> m ()
    dynamic_WidgetClassDragEndFieldCallback :: forall (m :: * -> *) a b.
    (HasCallStack, MonadIO m, IsWidget a, IsDragContext b) =>
    FunPtr C_WidgetClassDragEndFieldCallback -> a -> b -> m ()
    dynamic_WidgetClassDragEndFieldCallback FunPtr C_WidgetClassDragEndFieldCallback
    __funPtr a
    widget b
    context = IO () -> m ()
    forall a. IO a -> m a
    forall (m :: * -> *) a. MonadIO m => IO a -> m a
    liftIO (IO () -> m ()) -> IO () -> m ()
    forall a b. (a -> b) -> a -> b
    $ do
        widget' <- a -> IO (Ptr Widget)
    forall a b. (HasCallStack, ManagedPtrNewtype a) => a -> IO (Ptr b)
    unsafeManagedPtrCastPtr a
    widget
        context' <- unsafeManagedPtrCastPtr context
        (__dynamic_C_WidgetClassDragEndFieldCallback __funPtr) widget' context'
        touchManagedPtr widget
        touchManagedPtr context
        return ()

    -- | Generate a function pointer callable from C code, from a `C_WidgetClassDragEndFieldCallback`.
    foreign import ccall "wrapper"
        mk_WidgetClassDragEndFieldCallback :: C_WidgetClassDragEndFieldCallback -> IO (FunPtr C_WidgetClassDragEndFieldCallback)

    -- | /No description available in the introspection data./
    type WidgetClassDragEndFieldCallback =
        Gtk.Widget.Widget
        -> Gdk.DragContext.DragContext
        -> IO ()

    -- | A convenience synonym for @`Nothing` :: `Maybe` `WidgetClassDragEndFieldCallback`@.
    noWidgetClassDragEndFieldCallback :: Maybe WidgetClassDragEndFieldCallback
    noWidgetClassDragEndFieldCallback :: Maybe WidgetClassDragEndFieldCallback
    noWidgetClassDragEndFieldCallback = Maybe WidgetClassDragEndFieldCallback
    forall a. Maybe a
    Nothing

    -- | Wrap the callback into a `GClosure`.
    genClosure_WidgetClassDragEndFieldCallback :: MonadIO m => WidgetClassDragEndFieldCallback -> m (GClosure C_WidgetClassDragEndFieldCallback)
    genClosure_WidgetClassDragEndFieldCallback :: forall (m :: * -> *).
    MonadIO m =>
    WidgetClassDragEndFieldCallback
    -> m (GClosure C_WidgetClassDragEndFieldCallback)
    genClosure_WidgetClassDragEndFieldCallback WidgetClassDragEndFieldCallback
    cb = IO (GClosure C_WidgetClassDragEndFieldCallback)
    -> m (GClosure C_WidgetClassDragEndFieldCallback)
    forall a. IO a -> m a
    forall (m :: * -> *) a. MonadIO m => IO a -> m a
    liftIO (IO (GClosure C_WidgetClassDragEndFieldCallback)
     -> m (GClosure C_WidgetClassDragEndFieldCallback))
    -> IO (GClosure C_WidgetClassDragEndFieldCallback)
    -> m (GClosure C_WidgetClassDragEndFieldCallback)
    forall a b. (a -> b) -> a -> b
    $ do
        let cb' :: C_WidgetClassDragEndFieldCallback
    cb' = Maybe (Ptr (FunPtr C_WidgetClassDragEndFieldCallback))
    -> WidgetClassDragEndFieldCallback
    -> C_WidgetClassDragEndFieldCallback
    wrap_WidgetClassDragEndFieldCallback Maybe (Ptr (FunPtr C_WidgetClassDragEndFieldCallback))
    forall a. Maybe a
    Nothing WidgetClassDragEndFieldCallback
    cb
        C_WidgetClassDragEndFieldCallback
    -> IO (FunPtr C_WidgetClassDragEndFieldCallback)
    mk_WidgetClassDragEndFieldCallback C_WidgetClassDragEndFieldCallback
    cb' IO (FunPtr C_WidgetClassDragEndFieldCallback)
    -> (FunPtr C_WidgetClassDragEndFieldCallback
        -> IO (GClosure C_WidgetClassDragEndFieldCallback))
    -> IO (GClosure C_WidgetClassDragEndFieldCallback)
    forall a b. IO a -> (a -> IO b) -> IO b
    forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
    >>= FunPtr C_WidgetClassDragEndFieldCallback
    -> IO (GClosure C_WidgetClassDragEndFieldCallback)
    forall (m :: * -> *) a. MonadIO m => FunPtr a -> m (GClosure a)
    B.GClosure.newGClosure

    -- | Wrap a `WidgetClassDragEndFieldCallback` into a `C_WidgetClassDragEndFieldCallback`.
    wrap_WidgetClassDragEndFieldCallback ::
        Maybe (Ptr (FunPtr C_WidgetClassDragEndFieldCallback)) ->
        WidgetClassDragEndFieldCallback ->
        C_WidgetClassDragEndFieldCallback
    wrap_WidgetClassDragEndFieldCallback :: Maybe (Ptr (FunPtr C_WidgetClassDragEndFieldCallback))
    -> WidgetClassDragEndFieldCallback
    -> C_WidgetClassDragEndFieldCallback
    wrap_WidgetClassDragEndFieldCallback Maybe (Ptr (FunPtr C_WidgetClassDragEndFieldCallback))
    gi'funptrptr WidgetClassDragEndFieldCallback
    gi'cb Ptr Widget
    widget Ptr DragContext
    context = do
        widget' <- ((ManagedPtr Widget -> Widget) -> Ptr Widget -> IO Widget
    forall a b.
    (HasCallStack, GObject a, GObject b) =>
    (ManagedPtr a -> a) -> Ptr b -> IO a
    newObject ManagedPtr Widget -> Widget
    Gtk.Widget.Widget) Ptr Widget
    widget
        context' <- (newObject Gdk.DragContext.DragContext) context
        gi'cb  widget' context'
        maybeReleaseFunPtr gi'funptrptr

    -- callback WidgetClassDragDropFieldCallback
    {- Callable
      { returnType = Just (TBasicType TBoolean)
      , returnMayBeNull = False
      , returnTransfer = TransferNothing
      , returnDocumentation =
          Documentation { rawDocText = Nothing , sinceVersion = Nothing }
      , args =
          [ Arg
              { argCName = "widget"
              , argType = TInterface Name { namespace = "Gtk" , name = "Widget" }
              , argCType = Just "GtkWidget*"
              , direction = DirectionIn
              , mayBeNull = False
              , argDoc =
                  Documentation { rawDocText = Nothing , sinceVersion = Nothing }
              , argScope = ScopeTypeInvalid
              , argClosure = -1
              , argDestroy = -1
              , argCallerAllocates = False
              , argCallbackUserData = False
              , transfer = TransferNothing
              }
          , Arg
              { argCName = "context"
              , argType =
                  TInterface Name { namespace = "Gdk" , name = "DragContext" }
              , argCType = Just "GdkDragContext*"
              , direction = DirectionIn
              , mayBeNull = False
              , argDoc =
                  Documentation { rawDocText = Nothing , sinceVersion = Nothing }
              , argScope = ScopeTypeInvalid
              , argClosure = -1
              , argDestroy = -1
              , argCallerAllocates = False
              , argCallbackUserData = False
              , transfer = TransferNothing
              }
          , Arg
              { argCName = "x"
              , argType = TBasicType TInt
              , argCType = Just "gint"
              , direction = DirectionIn
              , mayBeNull = False
              , argDoc =
                  Documentation { rawDocText = Nothing , sinceVersion = Nothing }
              , argScope = ScopeTypeInvalid
              , argClosure = -1
              , argDestroy = -1
              , argCallerAllocates = False
              , argCallbackUserData = False
              , transfer = TransferNothing
              }
          , Arg
              { argCName = "y"
              , argType = TBasicType TInt
              , argCType = Just "gint"
              , direction = DirectionIn
              , mayBeNull = False
              , argDoc =
                  Documentation { rawDocText = Nothing , sinceVersion = Nothing }
              , argScope = ScopeTypeInvalid
              , argClosure = -1
              , argDestroy = -1
              , argCallerAllocates = False
              , argCallbackUserData = False
              , transfer = TransferNothing
              }
          , Arg
              { argCName = "time_"
              , argType = TBasicType TUInt
              , argCType = Just "guint"
              , direction = DirectionIn
              , mayBeNull = False
              , argDoc =
                  Documentation { rawDocText = Nothing , sinceVersion = Nothing }
              , argScope = ScopeTypeInvalid
              , argClosure = -1
              , argDestroy = -1
              , argCallerAllocates = False
              , argCallbackUserData = False
              , transfer = TransferNothing
              }
          ]
      , skipReturn = False
      , callableThrows = False
      , callableDeprecated = Nothing
      , callableDocumentation =
          Documentation { rawDocText = Nothing , sinceVersion = Nothing }
      , callableResolvable = Nothing
      }
    -}
    -- | Type for the callback on the (unwrapped) C side.
    type C_WidgetClassDragDropFieldCallback =
        Ptr Gtk.Widget.Widget ->
        Ptr Gdk.DragContext.DragContext ->
        Int32 ->
        Int32 ->
        Word32 ->
        IO CInt

    -- Args: [ Arg
    --           { argCName = "widget"
    --           , argType = TInterface Name { namespace = "Gtk" , name = "Widget" }
    --           , argCType = Just "GtkWidget*"
    --           , direction = DirectionIn
    --           , mayBeNull = False
    --           , argDoc =
    --               Documentation { rawDocText = Nothing , sinceVersion = Nothing }
    --           , argScope = ScopeTypeInvalid
    --           , argClosure = -1
    --           , argDestroy = -1
    --           , argCallerAllocates = False
    --           , argCallbackUserData = False
    --           , transfer = TransferNothing
    --           }
    --       , Arg
    --           { argCName = "context"
    --           , argType =
    --               TInterface Name { namespace = "Gdk" , name = "DragContext" }
    --           , argCType = Just "GdkDragContext*"
    --           , direction = DirectionIn
    --           , mayBeNull = False
    --           , argDoc =
    --               Documentation { rawDocText = Nothing , sinceVersion = Nothing }
    --           , argScope = ScopeTypeInvalid
    --           , argClosure = -1
    --           , argDestroy = -1
    --           , argCallerAllocates = False
    --           , argCallbackUserData = False
    --           , transfer = TransferNothing
    --           }
    --       , Arg
    --           { argCName = "x"
    --           , argType = TBasicType TInt
    --           , argCType = Just "gint"
    --           , direction = DirectionIn
    --           , mayBeNull = False
    --           , argDoc =
    --               Documentation { rawDocText = Nothing , sinceVersion = Nothing }
    --           , argScope = ScopeTypeInvalid
    --           , argClosure = -1
    --           , argDestroy = -1
    --           , argCallerAllocates = False
    --           , argCallbackUserData = False
    --           , transfer = TransferNothing
    --           }
    --       , Arg
    --           { argCName = "y"
    --           , argType = TBasicType TInt
    --           , argCType = Just "gint"
    --           , direction = DirectionIn
    --           , mayBeNull = False
    --           , argDoc =
    --               Documentation { rawDocText = Nothing , sinceVersion = Nothing }
    --           , argScope = ScopeTypeInvalid
    --           , argClosure = -1
    --           , argDestroy = -1
    --           , argCallerAllocates = False
    --           , argCallbackUserData = False
    --           , transfer = TransferNothing
    --           }
    --       , Arg
    --           { argCName = "time_"
    --           , argType = TBasicType TUInt
    --           , argCType = Just "guint"
    --           , direction = DirectionIn
    --           , mayBeNull = False
    --           , argDoc =
    --               Documentation { rawDocText = Nothing , sinceVersion = Nothing }
    --           , argScope = ScopeTypeInvalid
    --           , argClosure = -1
    --           , argDestroy = -1
    --           , argCallerAllocates = False
    --           , argCallbackUserData = False
    --           , transfer = TransferNothing
    --           }
    --       ]
    -- Lengths: []
    -- returnType: Just (TBasicType TBoolean)
    -- throws : False
    -- Skip return : False

    foreign import ccall "dynamic" __dynamic_C_WidgetClassDragDropFieldCallback :: FunPtr C_WidgetClassDragDropFieldCallback -> C_WidgetClassDragDropFieldCallback

    -- | Given a pointer to a foreign C function, wrap it into a function callable from Haskell.
    dynamic_WidgetClassDragDropFieldCallback ::
        (B.CallStack.HasCallStack, MonadIO m, Gtk.Widget.IsWidget a, Gdk.DragContext.IsDragContext b) =>
        FunPtr C_WidgetClassDragDropFieldCallback
        -> a
        -> b
        -> Int32
        -> Int32
        -> Word32
        -> m Bool
    dynamic_WidgetClassDragDropFieldCallback :: forall (m :: * -> *) a b.
    (HasCallStack, MonadIO m, IsWidget a, IsDragContext b) =>
    FunPtr C_WidgetClassDragMotionFieldCallback
    -> a -> b -> Int32 -> Int32 -> Word32 -> m Bool
    dynamic_WidgetClassDragDropFieldCallback FunPtr C_WidgetClassDragMotionFieldCallback
    __funPtr a
    widget b
    context Int32
    x Int32
    y Word32
    time_ = IO Bool -> m Bool
    forall a. IO a -> m a
    forall (m :: * -> *) a. MonadIO m => IO a -> m a
    liftIO (IO Bool -> m Bool) -> IO Bool -> m Bool
    forall a b. (a -> b) -> a -> b
    $ do
        widget' <- a -> IO (Ptr Widget)
    forall a b. (HasCallStack, ManagedPtrNewtype a) => a -> IO (Ptr b)
    unsafeManagedPtrCastPtr a
    widget
        context' <- unsafeManagedPtrCastPtr context
        result <- (__dynamic_C_WidgetClassDragDropFieldCallback __funPtr) widget' context' x y time_
        let result' = (CInt -> CInt -> Bool
    forall a. Eq a => a -> a -> Bool
    /= CInt
    0) CInt
    result
        touchManagedPtr widget
        touchManagedPtr context
        return result'

    -- | Generate a function pointer callable from C code, from a `C_WidgetClassDragDropFieldCallback`.
    foreign import ccall "wrapper"
        mk_WidgetClassDragDropFieldCallback :: C_WidgetClassDragDropFieldCallback -> IO (FunPtr C_WidgetClassDragDropFieldCallback)

    -- | /No description available in the introspection data./
    type WidgetClassDragDropFieldCallback =
        Gtk.Widget.Widget
        -> Gdk.DragContext.DragContext
        -> Int32
        -> Int32
        -> Word32
        -> IO Bool

    -- | A convenience synonym for @`Nothing` :: `Maybe` `WidgetClassDragDropFieldCallback`@.
    noWidgetClassDragDropFieldCallback :: Maybe WidgetClassDragDropFieldCallback
    noWidgetClassDragDropFieldCallback :: Maybe WidgetClassDragMotionFieldCallback
    noWidgetClassDragDropFieldCallback = Maybe WidgetClassDragMotionFieldCallback
    forall a. Maybe a
    Nothing

    -- | Wrap the callback into a `GClosure`.
    genClosure_WidgetClassDragDropFieldCallback :: MonadIO m => WidgetClassDragDropFieldCallback -> m (GClosure C_WidgetClassDragDropFieldCallback)
    genClosure_WidgetClassDragDropFieldCallback :: forall (m :: * -> *).
    MonadIO m =>
    WidgetClassDragMotionFieldCallback
    -> m (GClosure C_WidgetClassDragMotionFieldCallback)
    genClosure_WidgetClassDragDropFieldCallback WidgetClassDragMotionFieldCallback
    cb = IO (GClosure C_WidgetClassDragMotionFieldCallback)
    -> m (GClosure C_WidgetClassDragMotionFieldCallback)
    forall a. IO a -> m a
    forall (m :: * -> *) a. MonadIO m => IO a -> m a
    liftIO (IO (GClosure C_WidgetClassDragMotionFieldCallback)
     -> m (GClosure C_WidgetClassDragMotionFieldCallback))
    -> IO (GClosure C_WidgetClassDragMotionFieldCallback)
    -> m (GClosure C_WidgetClassDragMotionFieldCallback)
    forall a b. (a -> b) -> a -> b
    $ do
        let cb' :: C_WidgetClassDragMotionFieldCallback
    cb' = Maybe (Ptr (FunPtr C_WidgetClassDragMotionFieldCallback))
    -> WidgetClassDragMotionFieldCallback
    -> C_WidgetClassDragMotionFieldCallback
    wrap_WidgetClassDragDropFieldCallback Maybe (Ptr (FunPtr C_WidgetClassDragMotionFieldCallback))
    forall a. Maybe a
    Nothing WidgetClassDragMotionFieldCallback
    cb
        C_WidgetClassDragMotionFieldCallback
    -> IO (FunPtr C_WidgetClassDragMotionFieldCallback)
    mk_WidgetClassDragDropFieldCallback C_WidgetClassDragMotionFieldCallback
    cb' IO (FunPtr C_WidgetClassDragMotionFieldCallback)
    -> (FunPtr C_WidgetClassDragMotionFieldCallback
        -> IO (GClosure C_WidgetClassDragMotionFieldCallback))
    -> IO (GClosure C_WidgetClassDragMotionFieldCallback)
    forall a b. IO a -> (a -> IO b) -> IO b
    forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
    >>= FunPtr C_WidgetClassDragMotionFieldCallback
    -> IO (GClosure C_WidgetClassDragMotionFieldCallback)
    forall (m :: * -> *) a. MonadIO m => FunPtr a -> m (GClosure a)
    B.GClosure.newGClosure

    -- | Wrap a `WidgetClassDragDropFieldCallback` into a `C_WidgetClassDragDropFieldCallback`.
    wrap_WidgetClassDragDropFieldCallback ::
        Maybe (Ptr (FunPtr C_WidgetClassDragDropFieldCallback)) ->
        WidgetClassDragDropFieldCallback ->
        C_WidgetClassDragDropFieldCallback
    wrap_WidgetClassDragDropFieldCallback :: Maybe (Ptr (FunPtr C_WidgetClassDragMotionFieldCallback))
    -> WidgetClassDragMotionFieldCallback
    -> C_WidgetClassDragMotionFieldCallback
    wrap_WidgetClassDragDropFieldCallback Maybe (Ptr (FunPtr C_WidgetClassDragMotionFieldCallback))
    gi'funptrptr WidgetClassDragMotionFieldCallback
    gi'cb Ptr Widget
    widget Ptr DragContext
    context Int32
    x Int32
    y Word32
    time_ = do
        widget' <- ((ManagedPtr Widget -> Widget) -> Ptr Widget -> IO Widget
    forall a b.
    (HasCallStack, GObject a, GObject b) =>
    (ManagedPtr a -> a) -> Ptr b -> IO a
    newObject ManagedPtr Widget -> Widget
    Gtk.Widget.Widget) Ptr Widget
    widget
        context' <- (newObject Gdk.DragContext.DragContext) context
        result <- gi'cb  widget' context' x y time_
        maybeReleaseFunPtr gi'funptrptr
        let result' = (Int -> CInt
    forall a b. (Integral a, Num b) => a -> b
    P.fromIntegral (Int -> CInt) -> (Bool -> Int) -> Bool -> CInt
    forall b c a. (b -> c) -> (a -> b) -> a -> c
    . Bool -> Int
    forall a. Enum a => a -> Int
    P.fromEnum) Bool
    result
        return result'

    -- callback WidgetClassDragDataReceivedFieldCallback
    {- Callable
      { returnType = Nothing
      , returnMayBeNull = False
      , returnTransfer = TransferNothing
      , returnDocumentation =
          Documentation { rawDocText = Nothing , sinceVersion = Nothing }
      , args =
          [ Arg
              { argCName = "widget"
              , argType = TInterface Name { namespace = "Gtk" , name = "Widget" }
              , argCType = Just "GtkWidget*"
              , direction = DirectionIn
              , mayBeNull = False
              , argDoc =
                  Documentation { rawDocText = Nothing , sinceVersion = Nothing }
              , argScope = ScopeTypeInvalid
              , argClosure = -1
              , argDestroy = -1
              , argCallerAllocates = False
              , argCallbackUserData = False
              , transfer = TransferNothing
              }
          , Arg
              { argCName = "context"
              , argType =
                  TInterface Name { namespace = "Gdk" , name = "DragContext" }
              , argCType = Just "GdkDragContext*"
              , direction = DirectionIn
              , mayBeNull = False
              , argDoc =
                  Documentation { rawDocText = Nothing , sinceVersion = Nothing }
              , argScope = ScopeTypeInvalid
              , argClosure = -1
              , argDestroy = -1
              , argCallerAllocates = False
              , argCallbackUserData = False
              , transfer = TransferNothing
              }
          , Arg
              { argCName = "x"
              , argType = TBasicType TInt
              , argCType = Just "gint"
              , direction = DirectionIn
              , mayBeNull = False
              , argDoc =
                  Documentation { rawDocText = Nothing , sinceVersion = Nothing }
              , argScope = ScopeTypeInvalid
              , argClosure = -1
              , argDestroy = -1
              , argCallerAllocates = False
              , argCallbackUserData = False
              , transfer = TransferNothing
              }
          , Arg
              { argCName = "y"
              , argType = TBasicType TInt
              , argCType = Just "gint"
              , direction = DirectionIn
              , mayBeNull = False
              , argDoc =
                  Documentation { rawDocText = Nothing , sinceVersion = Nothing }
              , argScope = ScopeTypeInvalid
              , argClosure = -1
              , argDestroy = -1
              , argCallerAllocates = False
              , argCallbackUserData = False
              , transfer = TransferNothing
              }
          , Arg
              { argCName = "selection_data"
              , argType =
                  TInterface Name { namespace = "Gtk" , name = "SelectionData" }
              , argCType = Just "GtkSelectionData*"
              , direction = DirectionIn
              , mayBeNull = False
              , argDoc =
                  Documentation { rawDocText = Nothing , sinceVersion = Nothing }
              , argScope = ScopeTypeInvalid
              , argClosure = -1
              , argDestroy = -1
              , argCallerAllocates = False
              , argCallbackUserData = False
              , transfer = TransferNothing
              }
          , Arg
              { argCName = "info"
              , argType = TBasicType TUInt
              , argCType = Just "guint"
              , direction = DirectionIn
              , mayBeNull = False
              , argDoc =
                  Documentation { rawDocText = Nothing , sinceVersion = Nothing }
              , argScope = ScopeTypeInvalid
              , argClosure = -1
              , argDestroy = -1
              , argCallerAllocates = False
              , argCallbackUserData = False
              , transfer = TransferNothing
              }
          , Arg
              { argCName = "time_"
              , argType = TBasicType TUInt
              , argCType = Just "guint"
              , direction = DirectionIn
              , mayBeNull = False
              , argDoc =
                  Documentation { rawDocText = Nothing , sinceVersion = Nothing }
              , argScope = ScopeTypeInvalid
              , argClosure = -1
              , argDestroy = -1
              , argCallerAllocates = False
              , argCallbackUserData = False
              , transfer = TransferNothing
              }
          ]
      , skipReturn = False
      , callableThrows = False
      , callableDeprecated = Nothing
      , callableDocumentation =
          Documentation { rawDocText = Nothing , sinceVersion = Nothing }
      , callableResolvable = Nothing
      }
    -}
    -- | Type for the callback on the (unwrapped) C side.
    type C_WidgetClassDragDataReceivedFieldCallback =
        Ptr Gtk.Widget.Widget ->
        Ptr Gdk.DragContext.DragContext ->
        Int32 ->
        Int32 ->
        Ptr Gtk.SelectionData.SelectionData ->
        Word32 ->
        Word32 ->
        IO ()

    -- Args: [ Arg
    --           { argCName = "widget"
    --           , argType = TInterface Name { namespace = "Gtk" , name = "Widget" }
    --           , argCType = Just "GtkWidget*"
    --           , direction = DirectionIn
    --           , mayBeNull = False
    --           , argDoc =
    --               Documentation { rawDocText = Nothing , sinceVersion = Nothing }
    --           , argScope = ScopeTypeInvalid
    --           , argClosure = -1
    --           , argDestroy = -1
    --           , argCallerAllocates = False
    --           , argCallbackUserData = False
    --           , transfer = TransferNothing
    --           }
    --       , Arg
    --           { argCName = "context"
    --           , argType =
    --               TInterface Name { namespace = "Gdk" , name = "DragContext" }
    --           , argCType = Just "GdkDragContext*"
    --           , direction = DirectionIn
    --           , mayBeNull = False
    --           , argDoc =
    --               Documentation { rawDocText = Nothing , sinceVersion = Nothing }
    --           , argScope = ScopeTypeInvalid
    --           , argClosure = -1
    --           , argDestroy = -1
    --           , argCallerAllocates = False
    --           , argCallbackUserData = False
    --           , transfer = TransferNothing
    --           }
    --       , Arg
    --           { argCName = "x"
    --           , argType = TBasicType TInt
    --           , argCType = Just "gint"
    --           , direction = DirectionIn
    --           , mayBeNull = False
    --           , argDoc =
    --               Documentation { rawDocText = Nothing , sinceVersion = Nothing }
    --           , argScope = ScopeTypeInvalid
    --           , argClosure = -1
    --           , argDestroy = -1
    --           , argCallerAllocates = False
    --           , argCallbackUserData = False
    --           , transfer = TransferNothing
    --           }
    --       , Arg
    --           { argCName = "y"
    --           , argType = TBasicType TInt
    --           , argCType = Just "gint"
    --           , direction = DirectionIn
    --           , mayBeNull = False
    --           , argDoc =
    --               Documentation { rawDocText = Nothing , sinceVersion = Nothing }
    --           , argScope = ScopeTypeInvalid
    --           , argClosure = -1
    --           , argDestroy = -1
    --           , argCallerAllocates = False
    --           , argCallbackUserData = False
    --           , transfer = TransferNothing
    --           }
    --       , Arg
    --           { argCName = "selection_data"
    --           , argType =
    --               TInterface Name { namespace = "Gtk" , name = "SelectionData" }
    --           , argCType = Just "GtkSelectionData*"
    --           , direction = DirectionIn
    --           , mayBeNull = False
    --           , argDoc =
    --               Documentation { rawDocText = Nothing , sinceVersion = Nothing }
    --           , argScope = ScopeTypeInvalid
    --           , argClosure = -1
    --           , argDestroy = -1
    --           , argCallerAllocates = False
    --           , argCallbackUserData = False
    --           , transfer = TransferNothing
    --           }
    --       , Arg
    --           { argCName = "info"
    --           , argType = TBasicType TUInt
    --           , argCType = Just "guint"
    --           , direction = DirectionIn
    --           , mayBeNull = False
    --           , argDoc =
    --               Documentation { rawDocText = Nothing , sinceVersion = Nothing }
    --           , argScope = ScopeTypeInvalid
    --           , argClosure = -1
    --           , argDestroy = -1
    --           , argCallerAllocates = False
    --           , argCallbackUserData = False
    --           , transfer = TransferNothing
    --           }
    --       , Arg
    --           { argCName = "time_"
    --           , argType = TBasicType TUInt
    --           , argCType = Just "guint"
    --           , direction = DirectionIn
    --           , mayBeNull = False
    --           , argDoc =
    --               Documentation { rawDocText = Nothing , sinceVersion = Nothing }
    --           , argScope = ScopeTypeInvalid
    --           , argClosure = -1
    --           , argDestroy = -1
    --           , argCallerAllocates = False
    --           , argCallbackUserData = False
    --           , transfer = TransferNothing
    --           }
    --       ]
    -- Lengths: []
    -- returnType: Nothing
    -- throws : False
    -- Skip return : False

    foreign import ccall "dynamic" __dynamic_C_WidgetClassDragDataReceivedFieldCallback :: FunPtr C_WidgetClassDragDataReceivedFieldCallback -> C_WidgetClassDragDataReceivedFieldCallback

    -- | Given a pointer to a foreign C function, wrap it into a function callable from Haskell.
    dynamic_WidgetClassDragDataReceivedFieldCallback ::
        (B.CallStack.HasCallStack, MonadIO m, Gtk.Widget.IsWidget a, Gdk.DragContext.IsDragContext b) =>
        FunPtr C_WidgetClassDragDataReceivedFieldCallback
        -> a
        -> b
        -> Int32
        -> Int32
        -> Gtk.SelectionData.SelectionData
        -> Word32
        -> Word32
        -> m ()
    dynamic_WidgetClassDragDataReceivedFieldCallback :: forall (m :: * -> *) a b.
    (HasCallStack, MonadIO m, IsWidget a, IsDragContext b) =>
    FunPtr C_WidgetClassDragDataReceivedFieldCallback
    -> a
    -> b
    -> Int32
    -> Int32
    -> SelectionData
    -> Word32
    -> Word32
    -> m ()
    dynamic_WidgetClassDragDataReceivedFieldCallback FunPtr C_WidgetClassDragDataReceivedFieldCallback
    __funPtr a
    widget b
    context Int32
    x Int32
    y SelectionData
    selectionData Word32
    info Word32
    time_ = IO () -> m ()
    forall a. IO a -> m a
    forall (m :: * -> *) a. MonadIO m => IO a -> m a
    liftIO (IO () -> m ()) -> IO () -> m ()
    forall a b. (a -> b) -> a -> b
    $ do
        widget' <- a -> IO (Ptr Widget)
    forall a b. (HasCallStack, ManagedPtrNewtype a) => a -> IO (Ptr b)
    unsafeManagedPtrCastPtr a
    widget
        context' <- unsafeManagedPtrCastPtr context
        selectionData' <- unsafeManagedPtrGetPtr selectionData
        (__dynamic_C_WidgetClassDragDataReceivedFieldCallback __funPtr) widget' context' x y selectionData' info time_
        touchManagedPtr widget
        touchManagedPtr context
        touchManagedPtr selectionData
        return ()

    -- | Generate a function pointer callable from C code, from a `C_WidgetClassDragDataReceivedFieldCallback`.
    foreign import ccall "wrapper"
        mk_WidgetClassDragDataReceivedFieldCallback :: C_WidgetClassDragDataReceivedFieldCallback -> IO (FunPtr C_WidgetClassDragDataReceivedFieldCallback)

    -- | /No description available in the introspection data./
    type WidgetClassDragDataReceivedFieldCallback =
        Gtk.Widget.Widget
        -> Gdk.DragContext.DragContext
        -> Int32
        -> Int32
        -> Gtk.SelectionData.SelectionData
        -> Word32
        -> Word32
        -> IO ()

    -- | A convenience synonym for @`Nothing` :: `Maybe` `WidgetClassDragDataReceivedFieldCallback`@.
    noWidgetClassDragDataReceivedFieldCallback :: Maybe WidgetClassDragDataReceivedFieldCallback
    noWidgetClassDragDataReceivedFieldCallback :: Maybe WidgetClassDragDataReceivedFieldCallback
    noWidgetClassDragDataReceivedFieldCallback = Maybe WidgetClassDragDataReceivedFieldCallback
    forall a. Maybe a
    Nothing

    -- | Wrap the callback into a `GClosure`.
    genClosure_WidgetClassDragDataReceivedFieldCallback :: MonadIO m => WidgetClassDragDataReceivedFieldCallback -> m (GClosure C_WidgetClassDragDataReceivedFieldCallback)
    genClosure_WidgetClassDragDataReceivedFieldCallback :: forall (m :: * -> *).
    MonadIO m =>
    WidgetClassDragDataReceivedFieldCallback
    -> m (GClosure C_WidgetClassDragDataReceivedFieldCallback)
    genClosure_WidgetClassDragDataReceivedFieldCallback WidgetClassDragDataReceivedFieldCallback
    cb = IO (GClosure C_WidgetClassDragDataReceivedFieldCallback)
    -> m (GClosure C_WidgetClassDragDataReceivedFieldCallback)
    forall a. IO a -> m a
    forall (m :: * -> *) a. MonadIO m => IO a -> m a
    liftIO (IO (GClosure C_WidgetClassDragDataReceivedFieldCallback)
     -> m (GClosure C_WidgetClassDragDataReceivedFieldCallback))
    -> IO (GClosure C_WidgetClassDragDataReceivedFieldCallback)
    -> m (GClosure C_WidgetClassDragDataReceivedFieldCallback)
    forall a b. (a -> b) -> a -> b
    $ do
        let cb' :: C_WidgetClassDragDataReceivedFieldCallback
    cb' = Maybe (Ptr (FunPtr C_WidgetClassDragDataReceivedFieldCallback))
    -> WidgetClassDragDataReceivedFieldCallback
    -> C_WidgetClassDragDataReceivedFieldCallback
    wrap_WidgetClassDragDataReceivedFieldCallback Maybe (Ptr (FunPtr C_WidgetClassDragDataReceivedFieldCallback))
    forall a. Maybe a
    Nothing WidgetClassDragDataReceivedFieldCallback
    cb
        C_WidgetClassDragDataReceivedFieldCallback
    -> IO (FunPtr C_WidgetClassDragDataReceivedFieldCallback)
    mk_WidgetClassDragDataReceivedFieldCallback C_WidgetClassDragDataReceivedFieldCallback
    cb' IO (FunPtr C_WidgetClassDragDataReceivedFieldCallback)
    -> (FunPtr C_WidgetClassDragDataReceivedFieldCallback
        -> IO (GClosure C_WidgetClassDragDataReceivedFieldCallback))
    -> IO (GClosure C_WidgetClassDragDataReceivedFieldCallback)
    forall a b. IO a -> (a -> IO b) -> IO b
    forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
    >>= FunPtr C_WidgetClassDragDataReceivedFieldCallback
    -> IO (GClosure C_WidgetClassDragDataReceivedFieldCallback)
    forall (m :: * -> *) a. MonadIO m => FunPtr a -> m (GClosure a)
    B.GClosure.newGClosure

    -- | Wrap a `WidgetClassDragDataReceivedFieldCallback` into a `C_WidgetClassDragDataReceivedFieldCallback`.
    wrap_WidgetClassDragDataReceivedFieldCallback ::
        Maybe (Ptr (FunPtr C_WidgetClassDragDataReceivedFieldCallback)) ->
        WidgetClassDragDataReceivedFieldCallback ->
        C_WidgetClassDragDataReceivedFieldCallback
    wrap_WidgetClassDragDataReceivedFieldCallback :: Maybe (Ptr (FunPtr C_WidgetClassDragDataReceivedFieldCallback))
    -> WidgetClassDragDataReceivedFieldCallback
    -> C_WidgetClassDragDataReceivedFieldCallback
    wrap_WidgetClassDragDataReceivedFieldCallback Maybe (Ptr (FunPtr C_WidgetClassDragDataReceivedFieldCallback))
    gi'funptrptr WidgetClassDragDataReceivedFieldCallback
    gi'cb Ptr Widget
    widget Ptr DragContext
    context Int32
    x Int32
    y Ptr SelectionData
    selectionData Word32
    info Word32
    time_ = do
        widget' <- ((ManagedPtr Widget -> Widget) -> Ptr Widget -> IO Widget
    forall a b.
    (HasCallStack, GObject a, GObject b) =>
    (ManagedPtr a -> a) -> Ptr b -> IO a
    newObject ManagedPtr Widget -> Widget
    Gtk.Widget.Widget) Ptr Widget
    widget
        context' <- (newObject Gdk.DragContext.DragContext) context
        B.ManagedPtr.withTransient  selectionData $ \SelectionData
    selectionData' -> do
            WidgetClassDragDataReceivedFieldCallback
    gi'cb  Widget
    widget' DragContext
    context' Int32
    x Int32
    y SelectionData
    selectionData' Word32
    info Word32
    time_
            Maybe (Ptr (FunPtr C_WidgetClassDragDataReceivedFieldCallback))
    -> IO ()
    forall a. Maybe (Ptr (FunPtr a)) -> IO ()
    maybeReleaseFunPtr Maybe (Ptr (FunPtr C_WidgetClassDragDataReceivedFieldCallback))
    gi'funptrptr

    -- callback WidgetClassDragDataGetFieldCallback
    {- Callable
      { returnType = Nothing
      , returnMayBeNull = False
      , returnTransfer = TransferNothing
      , returnDocumentation =
          Documentation { rawDocText = Nothing , sinceVersion = Nothing }
      , args =
          [ Arg
              { argCName = "widget"
              , argType = TInterface Name { namespace = "Gtk" , name = "Widget" }
              , argCType = Just "GtkWidget*"
              , direction = DirectionIn
              , mayBeNull = False
              , argDoc =
                  Documentation { rawDocText = Nothing , sinceVersion = Nothing }
              , argScope = ScopeTypeInvalid
              , argClosure = -1
              , argDestroy = -1
              , argCallerAllocates = False
              , argCallbackUserData = False
              , transfer = TransferNothing
              }
          , Arg
              { argCName = "context"
              , argType =
                  TInterface Name { namespace = "Gdk" , name = "DragContext" }
              , argCType = Just "GdkDragContext*"
              , direction = DirectionIn
              , mayBeNull = False
              , argDoc =
                  Documentation { rawDocText = Nothing , sinceVersion = Nothing }
              , argScope = ScopeTypeInvalid
              , argClosure = -1
              , argDestroy = -1
              , argCallerAllocates = False
              , argCallbackUserData = False
              , transfer = TransferNothing
              }
          , Arg
              { argCName = "selection_data"
              , argType =
                  TInterface Name { namespace = "Gtk" , name = "SelectionData" }
              , argCType = Just "GtkSelectionData*"
              , direction = DirectionIn
              , mayBeNull = False
              , argDoc =
                  Documentation { rawDocText = Nothing , sinceVersion = Nothing }
              , argScope = ScopeTypeInvalid
              , argClosure = -1
              , argDestroy = -1
              , argCallerAllocates = False
              , argCallbackUserData = False
              , transfer = TransferNothing
              }
          , Arg
              { argCName = "info"
              , argType = TBasicType TUInt
              , argCType = Just "guint"
              , direction = DirectionIn
              , mayBeNull = False
              , argDoc =
                  Documentation { rawDocText = Nothing , sinceVersion = Nothing }
              , argScope = ScopeTypeInvalid
              , argClosure = -1
              , argDestroy = -1
              , argCallerAllocates = False
              , argCallbackUserData = False
              , transfer = TransferNothing
              }
          , Arg
              { argCName = "time_"
              , argType = TBasicType TUInt
              , argCType = Just "guint"
              , direction = DirectionIn
              , mayBeNull = False
              , argDoc =
                  Documentation { rawDocText = Nothing , sinceVersion = Nothing }
              , argScope = ScopeTypeInvalid
              , argClosure = -1
              , argDestroy = -1
              , argCallerAllocates = False
              , argCallbackUserData = False
              , transfer = TransferNothing
              }
          ]
      , skipReturn = False
      , callableThrows = False
      , callableDeprecated = Nothing
      , callableDocumentation =
          Documentation { rawDocText = Nothing , sinceVersion = Nothing }
      , callableResolvable = Nothing
      }
    -}
    -- | Type for the callback on the (unwrapped) C side.
    type C_WidgetClassDragDataGetFieldCallback =
        Ptr Gtk.Widget.Widget ->
        Ptr Gdk.DragContext.DragContext ->
        Ptr Gtk.SelectionData.SelectionData ->
        Word32 ->
        Word32 ->
        IO ()

    -- Args: [ Arg
    --           { argCName = "widget"
    --           , argType = TInterface Name { namespace = "Gtk" , name = "Widget" }
    --           , argCType = Just "GtkWidget*"
    --           , direction = DirectionIn
    --           , mayBeNull = False
    --           , argDoc =
    --               Documentation { rawDocText = Nothing , sinceVersion = Nothing }
    --           , argScope = ScopeTypeInvalid
    --           , argClosure = -1
    --           , argDestroy = -1
    --           , argCallerAllocates = False
    --           , argCallbackUserData = False
    --           , transfer = TransferNothing
    --           }
    --       , Arg
    --           { argCName = "context"
    --           , argType =
    --               TInterface Name { namespace = "Gdk" , name = "DragContext" }
    --           , argCType = Just "GdkDragContext*"
    --           , direction = DirectionIn
    --           , mayBeNull = False
    --           , argDoc =
    --               Documentation { rawDocText = Nothing , sinceVersion = Nothing }
    --           , argScope = ScopeTypeInvalid
    --           , argClosure = -1
    --           , argDestroy = -1
    --           , argCallerAllocates = False
    --           , argCallbackUserData = False
    --           , transfer = TransferNothing
    --           }
    --       , Arg
    --           { argCName = "selection_data"
    --           , argType =
    --               TInterface Name { namespace = "Gtk" , name = "SelectionData" }
    --           , argCType = Just "GtkSelectionData*"
    --           , direction = DirectionIn
    --           , mayBeNull = False
    --           , argDoc =
    --               Documentation { rawDocText = Nothing , sinceVersion = Nothing }
    --           , argScope = ScopeTypeInvalid
    --           , argClosure = -1
    --           , argDestroy = -1
    --           , argCallerAllocates = False
    --           , argCallbackUserData = False
    --           , transfer = TransferNothing
    --           }
    --       , Arg
    --           { argCName = "info"
    --           , argType = TBasicType TUInt
    --           , argCType = Just "guint"
    --           , direction = DirectionIn
    --           , mayBeNull = False
    --           , argDoc =
    --               Documentation { rawDocText = Nothing , sinceVersion = Nothing }
    --           , argScope = ScopeTypeInvalid
    --           , argClosure = -1
    --           , argDestroy = -1
    --           , argCallerAllocates = False
    --           , argCallbackUserData = False
    --           , transfer = TransferNothing
    --           }
    --       , Arg
    --           { argCName = "time_"
    --           , argType = TBasicType TUInt
    --           , argCType = Just "guint"
    --           , direction = DirectionIn
    --           , mayBeNull = False
    --           , argDoc =
    --               Documentation { rawDocText = Nothing , sinceVersion = Nothing }
    --           , argScope = ScopeTypeInvalid
    --           , argClosure = -1
    --           , argDestroy = -1
    --           , argCallerAllocates = False
    --           , argCallbackUserData = False
    --           , transfer = TransferNothing
    --           }
    --       ]
    -- Lengths: []
    -- returnType: Nothing
    -- throws : False
    -- Skip return : False

    foreign import ccall "dynamic" __dynamic_C_WidgetClassDragDataGetFieldCallback :: FunPtr C_WidgetClassDragDataGetFieldCallback -> C_WidgetClassDragDataGetFieldCallback

    -- | Given a pointer to a foreign C function, wrap it into a function callable from Haskell.
    dynamic_WidgetClassDragDataGetFieldCallback ::
        (B.CallStack.HasCallStack, MonadIO m, Gtk.Widget.IsWidget a, Gdk.DragContext.IsDragContext b) =>
        FunPtr C_WidgetClassDragDataGetFieldCallback
        -> a
        -> b
        -> Gtk.SelectionData.SelectionData
        -> Word32
        -> Word32
        -> m ()
    dynamic_WidgetClassDragDataGetFieldCallback :: forall (m :: * -> *) a b.
    (HasCallStack, MonadIO m, IsWidget a, IsDragContext b) =>
    FunPtr C_WidgetClassDragDataGetFieldCallback
    -> a -> b -> SelectionData -> Word32 -> Word32 -> m ()
    dynamic_WidgetClassDragDataGetFieldCallback FunPtr C_WidgetClassDragDataGetFieldCallback
    __funPtr a
    widget b
    context SelectionData
    selectionData Word32
    info Word32
    time_ = IO () -> m ()
    forall a. IO a -> m a
    forall (m :: * -> *) a. MonadIO m => IO a -> m a
    liftIO (IO () -> m ()) -> IO () -> m ()
    forall a b. (a -> b) -> a -> b
    $ do
        widget' <- a -> IO (Ptr Widget)
    forall a b. (HasCallStack, ManagedPtrNewtype a) => a -> IO (Ptr b)
    unsafeManagedPtrCastPtr a
    widget
        context' <- unsafeManagedPtrCastPtr context
        selectionData' <- unsafeManagedPtrGetPtr selectionData
        (__dynamic_C_WidgetClassDragDataGetFieldCallback __funPtr) widget' context' selectionData' info time_
        touchManagedPtr widget
        touchManagedPtr context
        touchManagedPtr selectionData
        return ()

    -- | Generate a function pointer callable from C code, from a `C_WidgetClassDragDataGetFieldCallback`.
    foreign import ccall "wrapper"
        mk_WidgetClassDragDataGetFieldCallback :: C_WidgetClassDragDataGetFieldCallback -> IO (FunPtr C_WidgetClassDragDataGetFieldCallback)

    -- | /No description available in the introspection data./
    type WidgetClassDragDataGetFieldCallback =
        Gtk.Widget.Widget
        -> Gdk.DragContext.DragContext
        -> Gtk.SelectionData.SelectionData
        -> Word32
        -> Word32
        -> IO ()

    -- | A convenience synonym for @`Nothing` :: `Maybe` `WidgetClassDragDataGetFieldCallback`@.
    noWidgetClassDragDataGetFieldCallback :: Maybe WidgetClassDragDataGetFieldCallback
    noWidgetClassDragDataGetFieldCallback :: Maybe WidgetClassDragDataGetFieldCallback
    noWidgetClassDragDataGetFieldCallback = Maybe WidgetClassDragDataGetFieldCallback
    forall a. Maybe a
    Nothing

    -- | Wrap the callback into a `GClosure`.
    genClosure_WidgetClassDragDataGetFieldCallback :: MonadIO m => WidgetClassDragDataGetFieldCallback -> m (GClosure C_WidgetClassDragDataGetFieldCallback)
    genClosure_WidgetClassDragDataGetFieldCallback :: forall (m :: * -> *).
    MonadIO m =>
    WidgetClassDragDataGetFieldCallback
    -> m (GClosure C_WidgetClassDragDataGetFieldCallback)
    genClosure_WidgetClassDragDataGetFieldCallback WidgetClassDragDataGetFieldCallback
    cb = IO (GClosure C_WidgetClassDragDataGetFieldCallback)
    -> m (GClosure C_WidgetClassDragDataGetFieldCallback)
    forall a. IO a -> m a
    forall (m :: * -> *) a. MonadIO m => IO a -> m a
    liftIO (IO (GClosure C_WidgetClassDragDataGetFieldCallback)
     -> m (GClosure C_WidgetClassDragDataGetFieldCallback))
    -> IO (GClosure C_WidgetClassDragDataGetFieldCallback)
    -> m (GClosure C_WidgetClassDragDataGetFieldCallback)
    forall a b. (a -> b) -> a -> b
    $ do
        let cb' :: C_WidgetClassDragDataGetFieldCallback
    cb' = Maybe (Ptr (FunPtr C_WidgetClassDragDataGetFieldCallback))
    -> WidgetClassDragDataGetFieldCallback
    -> C_WidgetClassDragDataGetFieldCallback
    wrap_WidgetClassDragDataGetFieldCallback Maybe (Ptr (FunPtr C_WidgetClassDragDataGetFieldCallback))
    forall a. Maybe a
    Nothing WidgetClassDragDataGetFieldCallback
    cb
        C_WidgetClassDragDataGetFieldCallback
    -> IO (FunPtr C_WidgetClassDragDataGetFieldCallback)
    mk_WidgetClassDragDataGetFieldCallback C_WidgetClassDragDataGetFieldCallback
    cb' IO (FunPtr C_WidgetClassDragDataGetFieldCallback)
    -> (FunPtr C_WidgetClassDragDataGetFieldCallback
        -> IO (GClosure C_WidgetClassDragDataGetFieldCallback))
    -> IO (GClosure C_WidgetClassDragDataGetFieldCallback)
    forall a b. IO a -> (a -> IO b) -> IO b
    forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
    >>= FunPtr C_WidgetClassDragDataGetFieldCallback
    -> IO (GClosure C_WidgetClassDragDataGetFieldCallback)
    forall (m :: * -> *) a. MonadIO m => FunPtr a -> m (GClosure a)
    B.GClosure.newGClosure

    -- | Wrap a `WidgetClassDragDataGetFieldCallback` into a `C_WidgetClassDragDataGetFieldCallback`.
    wrap_WidgetClassDragDataGetFieldCallback ::
        Maybe (Ptr (FunPtr C_WidgetClassDragDataGetFieldCallback)) ->
        WidgetClassDragDataGetFieldCallback ->
        C_WidgetClassDragDataGetFieldCallback
    wrap_WidgetClassDragDataGetFieldCallback :: Maybe (Ptr (FunPtr C_WidgetClassDragDataGetFieldCallback))
    -> WidgetClassDragDataGetFieldCallback
    -> C_WidgetClassDragDataGetFieldCallback
    wrap_WidgetClassDragDataGetFieldCallback Maybe (Ptr (FunPtr C_WidgetClassDragDataGetFieldCallback))
    gi'funptrptr WidgetClassDragDataGetFieldCallback
    gi'cb Ptr Widget
    widget Ptr DragContext
    context Ptr SelectionData
    selectionData Word32
    info Word32
    time_ = do
        widget' <- ((ManagedPtr Widget -> Widget) -> Ptr Widget -> IO Widget
    forall a b.
    (HasCallStack, GObject a, GObject b) =>
    (ManagedPtr a -> a) -> Ptr b -> IO a
    newObject ManagedPtr Widget -> Widget
    Gtk.Widget.Widget) Ptr Widget
    widget
        context' <- (newObject Gdk.DragContext.DragContext) context
        B.ManagedPtr.withTransient  selectionData $ \SelectionData
    selectionData' -> do
            WidgetClassDragDataGetFieldCallback
    gi'cb  Widget
    widget' DragContext
    context' SelectionData
    selectionData' Word32
    info Word32
    time_
            Maybe (Ptr (FunPtr C_WidgetClassDragDataGetFieldCallback)) -> IO ()
    forall a. Maybe (Ptr (FunPtr a)) -> IO ()
    maybeReleaseFunPtr Maybe (Ptr (FunPtr C_WidgetClassDragDataGetFieldCallback))
    gi'funptrptr

    -- callback WidgetClassDragDataDeleteFieldCallback
    {- Callable
      { returnType = Nothing
      , returnMayBeNull = False
      , returnTransfer = TransferNothing
      , returnDocumentation =
          Documentation { rawDocText = Nothing , sinceVersion = Nothing }
      , args =
          [ Arg
              { argCName = "widget"
              , argType = TInterface Name { namespace = "Gtk" , name = "Widget" }
              , argCType = Just "GtkWidget*"
              , direction = DirectionIn
              , mayBeNull = False
              , argDoc =
                  Documentation { rawDocText = Nothing , sinceVersion = Nothing }
              , argScope = ScopeTypeInvalid
              , argClosure = -1
              , argDestroy = -1
              , argCallerAllocates = False
              , argCallbackUserData = False
              , transfer = TransferNothing
              }
          , Arg
              { argCName = "context"
              , argType =
                  TInterface Name { namespace = "Gdk" , name = "DragContext" }
              , argCType = Just "GdkDragContext*"
              , direction = DirectionIn
              , mayBeNull = False
              , argDoc =
                  Documentation { rawDocText = Nothing , sinceVersion = Nothing }
              , argScope = ScopeTypeInvalid
              , argClosure = -1
              , argDestroy = -1
              , argCallerAllocates = False
              , argCallbackUserData = False
              , transfer = TransferNothing
              }
          ]
      , skipReturn = False
      , callableThrows = False
      , callableDeprecated = Nothing
      , callableDocumentation =
          Documentation { rawDocText = Nothing , sinceVersion = Nothing }
      , callableResolvable = Nothing
      }
    -}
    -- | Type for the callback on the (unwrapped) C side.
    type C_WidgetClassDragDataDeleteFieldCallback =
        Ptr Gtk.Widget.Widget ->
        Ptr Gdk.DragContext.DragContext ->
        IO ()

    -- Args: [ Arg
    --           { argCName = "widget"
    --           , argType = TInterface Name { namespace = "Gtk" , name = "Widget" }
    --           , argCType = Just "GtkWidget*"
    --           , direction = DirectionIn
    --           , mayBeNull = False
    --           , argDoc =
    --               Documentation { rawDocText = Nothing , sinceVersion = Nothing }
    --           , argScope = ScopeTypeInvalid
    --           , argClosure = -1
    --           , argDestroy = -1
    --           , argCallerAllocates = False
    --           , argCallbackUserData = False
    --           , transfer = TransferNothing
    --           }
    --       , Arg
    --           { argCName = "context"
    --           , argType =
    --               TInterface Name { namespace = "Gdk" , name = "DragContext" }
    --           , argCType = Just "GdkDragContext*"
    --           , direction = DirectionIn
    --           , mayBeNull = False
    --           , argDoc =
    --               Documentation { rawDocText = Nothing , sinceVersion = Nothing }
    --           , argScope = ScopeTypeInvalid
    --           , argClosure = -1
    --           , argDestroy = -1
    --           , argCallerAllocates = False
    --           , argCallbackUserData = False
    --           , transfer = TransferNothing
    --           }
    --       ]
    -- Lengths: []
    -- returnType: Nothing
    -- throws : False
    -- Skip return : False

    foreign import ccall "dynamic" __dynamic_C_WidgetClassDragDataDeleteFieldCallback :: FunPtr C_WidgetClassDragDataDeleteFieldCallback -> C_WidgetClassDragDataDeleteFieldCallback

    -- | Given a pointer to a foreign C function, wrap it into a function callable from Haskell.
    dynamic_WidgetClassDragDataDeleteFieldCallback ::
        (B.CallStack.HasCallStack, MonadIO m, Gtk.Widget.IsWidget a, Gdk.DragContext.IsDragContext b) =>
        FunPtr C_WidgetClassDragDataDeleteFieldCallback
        -> a
        -> b
        -> m ()
    dynamic_WidgetClassDragDataDeleteFieldCallback :: forall (m :: * -> *) a b.
    (HasCallStack, MonadIO m, IsWidget a, IsDragContext b) =>
    FunPtr C_WidgetClassDragEndFieldCallback -> a -> b -> m ()
    dynamic_WidgetClassDragDataDeleteFieldCallback FunPtr C_WidgetClassDragEndFieldCallback
    __funPtr a
    widget b
    context = IO () -> m ()
    forall a. IO a -> m a
    forall (m :: * -> *) a. MonadIO m => IO a -> m a
    liftIO (IO () -> m ()) -> IO () -> m ()
    forall a b. (a -> b) -> a -> b
    $ do
        widget' <- a -> IO (Ptr Widget)
    forall a b. (HasCallStack, ManagedPtrNewtype a) => a -> IO (Ptr b)
    unsafeManagedPtrCastPtr a
    widget
        context' <- unsafeManagedPtrCastPtr context
        (__dynamic_C_WidgetClassDragDataDeleteFieldCallback __funPtr) widget' context'
        touchManagedPtr widget
        touchManagedPtr context
        return ()

    -- | Generate a function pointer callable from C code, from a `C_WidgetClassDragDataDeleteFieldCallback`.
    foreign import ccall "wrapper"
        mk_WidgetClassDragDataDeleteFieldCallback :: C_WidgetClassDragDataDeleteFieldCallback -> IO (FunPtr C_WidgetClassDragDataDeleteFieldCallback)

    -- | /No description available in the introspection data./
    type WidgetClassDragDataDeleteFieldCallback =
        Gtk.Widget.Widget
        -> Gdk.DragContext.DragContext
        -> IO ()

    -- | A convenience synonym for @`Nothing` :: `Maybe` `WidgetClassDragDataDeleteFieldCallback`@.
    noWidgetClassDragDataDeleteFieldCallback :: Maybe WidgetClassDragDataDeleteFieldCallback
    noWidgetClassDragDataDeleteFieldCallback :: Maybe WidgetClassDragEndFieldCallback
    noWidgetClassDragDataDeleteFieldCallback = Maybe WidgetClassDragEndFieldCallback
    forall a. Maybe a
    Nothing

    -- | Wrap the callback into a `GClosure`.
    genClosure_WidgetClassDragDataDeleteFieldCallback :: MonadIO m => WidgetClassDragDataDeleteFieldCallback -> m (GClosure C_WidgetClassDragDataDeleteFieldCallback)
    genClosure_WidgetClassDragDataDeleteFieldCallback :: forall (m :: * -> *).
    MonadIO m =>
    WidgetClassDragEndFieldCallback
    -> m (GClosure C_WidgetClassDragEndFieldCallback)
    genClosure_WidgetClassDragDataDeleteFieldCallback WidgetClassDragEndFieldCallback
    cb = IO (GClosure C_WidgetClassDragEndFieldCallback)
    -> m (GClosure C_WidgetClassDragEndFieldCallback)
    forall a. IO a -> m a
    forall (m :: * -> *) a. MonadIO m => IO a -> m a
    liftIO (IO (GClosure C_WidgetClassDragEndFieldCallback)
     -> m (GClosure C_WidgetClassDragEndFieldCallback))
    -> IO (GClosure C_WidgetClassDragEndFieldCallback)
    -> m (GClosure C_WidgetClassDragEndFieldCallback)
    forall a b. (a -> b) -> a -> b
    $ do
        let cb' :: C_WidgetClassDragEndFieldCallback
    cb' = Maybe (Ptr (FunPtr C_WidgetClassDragEndFieldCallback))
    -> WidgetClassDragEndFieldCallback
    -> C_WidgetClassDragEndFieldCallback
    wrap_WidgetClassDragDataDeleteFieldCallback Maybe (Ptr (FunPtr C_WidgetClassDragEndFieldCallback))
    forall a. Maybe a
    Nothing WidgetClassDragEndFieldCallback
    cb
        C_WidgetClassDragEndFieldCallback
    -> IO (FunPtr C_WidgetClassDragEndFieldCallback)
    mk_WidgetClassDragDataDeleteFieldCallback C_WidgetClassDragEndFieldCallback
    cb' IO (FunPtr C_WidgetClassDragEndFieldCallback)
    -> (FunPtr C_WidgetClassDragEndFieldCallback
        -> IO (GClosure C_WidgetClassDragEndFieldCallback))
    -> IO (GClosure C_WidgetClassDragEndFieldCallback)
    forall a b. IO a -> (a -> IO b) -> IO b
    forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
    >>= FunPtr C_WidgetClassDragEndFieldCallback
    -> IO (GClosure C_WidgetClassDragEndFieldCallback)
    forall (m :: * -> *) a. MonadIO m => FunPtr a -> m (GClosure a)
    B.GClosure.newGClosure

    -- | Wrap a `WidgetClassDragDataDeleteFieldCallback` into a `C_WidgetClassDragDataDeleteFieldCallback`.
    wrap_WidgetClassDragDataDeleteFieldCallback ::
        Maybe (Ptr (FunPtr C_WidgetClassDragDataDeleteFieldCallback)) ->
        WidgetClassDragDataDeleteFieldCallback ->
        C_WidgetClassDragDataDeleteFieldCallback
    wrap_WidgetClassDragDataDeleteFieldCallback :: Maybe (Ptr (FunPtr C_WidgetClassDragEndFieldCallback))
    -> WidgetClassDragEndFieldCallback
    -> C_WidgetClassDragEndFieldCallback
    wrap_WidgetClassDragDataDeleteFieldCallback Maybe (Ptr (FunPtr C_WidgetClassDragEndFieldCallback))
    gi'funptrptr WidgetClassDragEndFieldCallback
    gi'cb Ptr Widget
    widget Ptr DragContext
    context = do
        widget' <- ((ManagedPtr Widget -> Widget) -> Ptr Widget -> IO Widget
    forall a b.
    (HasCallStack, GObject a, GObject b) =>
    (ManagedPtr a -> a) -> Ptr b -> IO a
    newObject ManagedPtr Widget -> Widget
    Gtk.Widget.Widget) Ptr Widget
    widget
        context' <- (newObject Gdk.DragContext.DragContext) context
        gi'cb  widget' context'
        maybeReleaseFunPtr gi'funptrptr

    -- callback WidgetClassDragBeginFieldCallback
    {- Callable
      { returnType = Nothing
      , returnMayBeNull = False
      , returnTransfer = TransferNothing
      , returnDocumentation =
          Documentation { rawDocText = Nothing , sinceVersion = Nothing }
      , args =
          [ Arg
              { argCName = "widget"
              , argType = TInterface Name { namespace = "Gtk" , name = "Widget" }
              , argCType = Just "GtkWidget*"
              , direction = DirectionIn
              , mayBeNull = False
              , argDoc =
                  Documentation { rawDocText = Nothing , sinceVersion = Nothing }
              , argScope = ScopeTypeInvalid
              , argClosure = -1
              , argDestroy = -1
              , argCallerAllocates = False
              , argCallbackUserData = False
              , transfer = TransferNothing
              }
          , Arg
              { argCName = "context"
              , argType =
                  TInterface Name { namespace = "Gdk" , name = "DragContext" }
              , argCType = Just "GdkDragContext*"
              , direction = DirectionIn
              , mayBeNull = False
              , argDoc =
                  Documentation { rawDocText = Nothing , sinceVersion = Nothing }
              , argScope = ScopeTypeInvalid
              , argClosure = -1
              , argDestroy = -1
              , argCallerAllocates = False
              , argCallbackUserData = False
              , transfer = TransferNothing
              }
          ]
      , skipReturn = False
      , callableThrows = False
      , callableDeprecated = Nothing
      , callableDocumentation =
          Documentation { rawDocText = Nothing , sinceVersion = Nothing }
      , callableResolvable = Nothing
      }
    -}
    -- | Type for the callback on the (unwrapped) C side.
    type C_WidgetClassDragBeginFieldCallback =
        Ptr Gtk.Widget.Widget ->
        Ptr Gdk.DragContext.DragContext ->
        IO ()

    -- Args: [ Arg
    --           { argCName = "widget"
    --           , argType = TInterface Name { namespace = "Gtk" , name = "Widget" }
    --           , argCType = Just "GtkWidget*"
    --           , direction = DirectionIn
    --           , mayBeNull = False
    --           , argDoc =
    --               Documentation { rawDocText = Nothing , sinceVersion = Nothing }
    --           , argScope = ScopeTypeInvalid
    --           , argClosure = -1
    --           , argDestroy = -1
    --           , argCallerAllocates = False
    --           , argCallbackUserData = False
    --           , transfer = TransferNothing
    --           }
    --       , Arg
    --           { argCName = "context"
    --           , argType =
    --               TInterface Name { namespace = "Gdk" , name = "DragContext" }
    --           , argCType = Just "GdkDragContext*"
    --           , direction = DirectionIn
    --           , mayBeNull = False
    --           , argDoc =
    --               Documentation { rawDocText = Nothing , sinceVersion = Nothing }
    --           , argScope = ScopeTypeInvalid
    --           , argClosure = -1
    --           , argDestroy = -1
    --           , argCallerAllocates = False
    --           , argCallbackUserData = False
    --           , transfer = TransferNothing
    --           }
    --       ]
    -- Lengths: []
    -- returnType: Nothing
    -- throws : False
    -- Skip return : False

    foreign import ccall "dynamic" __dynamic_C_WidgetClassDragBeginFieldCallback :: FunPtr C_WidgetClassDragBeginFieldCallback -> C_WidgetClassDragBeginFieldCallback

    -- | Given a pointer to a foreign C function, wrap it into a function callable from Haskell.
    dynamic_WidgetClassDragBeginFieldCallback ::
        (B.CallStack.HasCallStack, MonadIO m, Gtk.Widget.IsWidget a, Gdk.DragContext.IsDragContext b) =>
        FunPtr C_WidgetClassDragBeginFieldCallback
        -> a
        -> b
        -> m ()
    dynamic_WidgetClassDragBeginFieldCallback :: forall (m :: * -> *) a b.
    (HasCallStack, MonadIO m, IsWidget a, IsDragContext b) =>
    FunPtr C_WidgetClassDragEndFieldCallback -> a -> b -> m ()
    dynamic_WidgetClassDragBeginFieldCallback FunPtr C_WidgetClassDragEndFieldCallback
    __funPtr a
    widget b
    context = IO () -> m ()
    forall a. IO a -> m a
    forall (m :: * -> *) a. MonadIO m => IO a -> m a
    liftIO (IO () -> m ()) -> IO () -> m ()
    forall a b. (a -> b) -> a -> b
    $ do
        widget' <- a -> IO (Ptr Widget)
    forall a b. (HasCallStack, ManagedPtrNewtype a) => a -> IO (Ptr b)
    unsafeManagedPtrCastPtr a
    widget
        context' <- unsafeManagedPtrCastPtr context
        (__dynamic_C_WidgetClassDragBeginFieldCallback __funPtr) widget' context'
        touchManagedPtr widget
        touchManagedPtr context
        return ()

    -- | Generate a function pointer callable from C code, from a `C_WidgetClassDragBeginFieldCallback`.
    foreign import ccall "wrapper"
        mk_WidgetClassDragBeginFieldCallback :: C_WidgetClassDragBeginFieldCallback -> IO (FunPtr C_WidgetClassDragBeginFieldCallback)

    -- | /No description available in the introspection data./
    type WidgetClassDragBeginFieldCallback =
        Gtk.Widget.Widget
        -> Gdk.DragContext.DragContext
        -> IO ()

    -- | A convenience synonym for @`Nothing` :: `Maybe` `WidgetClassDragBeginFieldCallback`@.
    noWidgetClassDragBeginFieldCallback :: Maybe WidgetClassDragBeginFieldCallback
    noWidgetClassDragBeginFieldCallback :: Maybe WidgetClassDragEndFieldCallback
    noWidgetClassDragBeginFieldCallback = Maybe WidgetClassDragEndFieldCallback
    forall a. Maybe a
    Nothing

    -- | Wrap the callback into a `GClosure`.
    genClosure_WidgetClassDragBeginFieldCallback :: MonadIO m => WidgetClassDragBeginFieldCallback -> m (GClosure C_WidgetClassDragBeginFieldCallback)
    genClosure_WidgetClassDragBeginFieldCallback :: forall (m :: * -> *).
    MonadIO m =>
    WidgetClassDragEndFieldCallback
    -> m (GClosure C_WidgetClassDragEndFieldCallback)
    genClosure_WidgetClassDragBeginFieldCallback WidgetClassDragEndFieldCallback
    cb = IO (GClosure C_WidgetClassDragEndFieldCallback)
    -> m (GClosure C_WidgetClassDragEndFieldCallback)
    forall a. IO a -> m a
    forall (m :: * -> *) a. MonadIO m => IO a -> m a
    liftIO (IO (GClosure C_WidgetClassDragEndFieldCallback)
     -> m (GClosure C_WidgetClassDragEndFieldCallback))
    -> IO (GClosure C_WidgetClassDragEndFieldCallback)
    -> m (GClosure C_WidgetClassDragEndFieldCallback)
    forall a b. (a -> b) -> a -> b
    $ do
        let cb' :: C_WidgetClassDragEndFieldCallback
    cb' = Maybe (Ptr (FunPtr C_WidgetClassDragEndFieldCallback))
    -> WidgetClassDragEndFieldCallback
    -> C_WidgetClassDragEndFieldCallback
    wrap_WidgetClassDragBeginFieldCallback Maybe (Ptr (FunPtr C_WidgetClassDragEndFieldCallback))
    forall a. Maybe a
    Nothing WidgetClassDragEndFieldCallback
    cb
        C_WidgetClassDragEndFieldCallback
    -> IO (FunPtr C_WidgetClassDragEndFieldCallback)
    mk_WidgetClassDragBeginFieldCallback C_WidgetClassDragEndFieldCallback
    cb' IO (FunPtr C_WidgetClassDragEndFieldCallback)
    -> (FunPtr C_WidgetClassDragEndFieldCallback
        -> IO (GClosure C_WidgetClassDragEndFieldCallback))
    -> IO (GClosure C_WidgetClassDragEndFieldCallback)
    forall a b. IO a -> (a -> IO b) -> IO b
    forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
    >>= FunPtr C_WidgetClassDragEndFieldCallback
    -> IO (GClosure C_WidgetClassDragEndFieldCallback)
    forall (m :: * -> *) a. MonadIO m => FunPtr a -> m (GClosure a)
    B.GClosure.newGClosure

    -- | Wrap a `WidgetClassDragBeginFieldCallback` into a `C_WidgetClassDragBeginFieldCallback`.
    wrap_WidgetClassDragBeginFieldCallback ::
        Maybe (Ptr (FunPtr C_WidgetClassDragBeginFieldCallback)) ->
        WidgetClassDragBeginFieldCallback ->
        C_WidgetClassDragBeginFieldCallback
    wrap_WidgetClassDragBeginFieldCallback :: Maybe (Ptr (FunPtr C_WidgetClassDragEndFieldCallback))
    -> WidgetClassDragEndFieldCallback
    -> C_WidgetClassDragEndFieldCallback
    wrap_WidgetClassDragBeginFieldCallback Maybe (Ptr (FunPtr C_WidgetClassDragEndFieldCallback))
    gi'funptrptr WidgetClassDragEndFieldCallback
    gi'cb Ptr Widget
    widget Ptr DragContext
    context = do
        widget' <- ((ManagedPtr Widget -> Widget) -> Ptr Widget -> IO Widget
    forall a b.
    (HasCallStack, GObject a, GObject b) =>
    (ManagedPtr a -> a) -> Ptr b -> IO a
    newObject ManagedPtr Widget -> Widget
    Gtk.Widget.Widget) Ptr Widget
    widget
        context' <- (newObject Gdk.DragContext.DragContext) context
        gi'cb  widget' context'
        maybeReleaseFunPtr gi'funptrptr

    -- callback WidgetClassDispatchChildPropertiesChangedFieldCallback
    {- Callable
      { returnType = Nothing
      , returnMayBeNull = False
      , returnTransfer = TransferNothing
      , returnDocumentation =
          Documentation { rawDocText = Nothing , sinceVersion = Nothing }
      , args =
          [ Arg
              { argCName = "widget"
              , argType = TInterface Name { namespace = "Gtk" , name = "Widget" }
              , argCType = Just "GtkWidget*"
              , direction = DirectionIn
              , mayBeNull = False
              , argDoc =
                  Documentation { rawDocText = Nothing , sinceVersion = Nothing }
              , argScope = ScopeTypeInvalid
              , argClosure = -1
              , argDestroy = -1
              , argCallerAllocates = False
              , argCallbackUserData = False
              , transfer = TransferNothing
              }
          , Arg
              { argCName = "n_pspecs"
              , argType = TBasicType TUInt
              , argCType = Just "guint"
              , direction = DirectionIn
              , mayBeNull = False
              , argDoc =
                  Documentation { rawDocText = Nothing , sinceVersion = Nothing }
              , argScope = ScopeTypeInvalid
              , argClosure = -1
              , argDestroy = -1
              , argCallerAllocates = False
              , argCallbackUserData = False
              , transfer = TransferNothing
              }
          , Arg
              { argCName = "pspecs"
              , argType = TParamSpec
              , argCType = Just "GParamSpec**"
              , direction = DirectionIn
              , mayBeNull = False
              , argDoc =
                  Documentation { rawDocText = Nothing , sinceVersion = Nothing }
              , argScope = ScopeTypeInvalid
              , argClosure = -1
              , argDestroy = -1
              , argCallerAllocates = False
              , argCallbackUserData = False
              , transfer = TransferNothing
              }
          ]
      , skipReturn = False
      , callableThrows = False
      , callableDeprecated = Nothing
      , callableDocumentation =
          Documentation { rawDocText = Nothing , sinceVersion = Nothing }
      , callableResolvable = Nothing
      }
    -}
    -- | Type for the callback on the (unwrapped) C side.
    type C_WidgetClassDispatchChildPropertiesChangedFieldCallback =
        Ptr Gtk.Widget.Widget ->
        Word32 ->
        Ptr GParamSpec ->
        IO ()

    -- Args: [ Arg
    --           { argCName = "widget"
    --           , argType = TInterface Name { namespace = "Gtk" , name = "Widget" }
    --           , argCType = Just "GtkWidget*"
    --           , direction = DirectionIn
    --           , mayBeNull = False
    --           , argDoc =
    --               Documentation { rawDocText = Nothing , sinceVersion = Nothing }
    --           , argScope = ScopeTypeInvalid
    --           , argClosure = -1
    --           , argDestroy = -1
    --           , argCallerAllocates = False
    --           , argCallbackUserData = False
    --           , transfer = TransferNothing
    --           }
    --       , Arg
    --           { argCName = "n_pspecs"
    --           , argType = TBasicType TUInt
    --           , argCType = Just "guint"
    --           , direction = DirectionIn
    --           , mayBeNull = False
    --           , argDoc =
    --               Documentation { rawDocText = Nothing , sinceVersion = Nothing }
    --           , argScope = ScopeTypeInvalid
    --           , argClosure = -1
    --           , argDestroy = -1
    --           , argCallerAllocates = False
    --           , argCallbackUserData = False
    --           , transfer = TransferNothing
    --           }
    --       , Arg
    --           { argCName = "pspecs"
    --           , argType = TParamSpec
    --           , argCType = Just "GParamSpec**"
    --           , direction = DirectionIn
    --           , mayBeNull = False
    --           , argDoc =
    --               Documentation { rawDocText = Nothing , sinceVersion = Nothing }
    --           , argScope = ScopeTypeInvalid
    --           , argClosure = -1
    --           , argDestroy = -1
    --           , argCallerAllocates = False
    --           , argCallbackUserData = False
    --           , transfer = TransferNothing
    --           }
    --       ]
    -- Lengths: []
    -- returnType: Nothing
    -- throws : False
    -- Skip return : False

    foreign import ccall "dynamic" __dynamic_C_WidgetClassDispatchChildPropertiesChangedFieldCallback :: FunPtr C_WidgetClassDispatchChildPropertiesChangedFieldCallback -> C_WidgetClassDispatchChildPropertiesChangedFieldCallback

    -- | Given a pointer to a foreign C function, wrap it into a function callable from Haskell.
    dynamic_WidgetClassDispatchChildPropertiesChangedFieldCallback ::
        (B.CallStack.HasCallStack, MonadIO m, Gtk.Widget.IsWidget a) =>
        FunPtr C_WidgetClassDispatchChildPropertiesChangedFieldCallback
        -> a
        -> Word32
        -> GParamSpec
        -> m ()
    dynamic_WidgetClassDispatchChildPropertiesChangedFieldCallback :: forall (m :: * -> *) a.
    (HasCallStack, MonadIO m, IsWidget a) =>
    FunPtr C_WidgetClassDispatchChildPropertiesChangedFieldCallback
    -> a -> Word32 -> GParamSpec -> m ()
    dynamic_WidgetClassDispatchChildPropertiesChangedFieldCallback FunPtr C_WidgetClassDispatchChildPropertiesChangedFieldCallback
    __funPtr a
    widget Word32
    nPspecs GParamSpec
    pspecs = IO () -> m ()
    forall a. IO a -> m a
    forall (m :: * -> *) a. MonadIO m => IO a -> m a
    liftIO (IO () -> m ()) -> IO () -> m ()
    forall a b. (a -> b) -> a -> b
    $ do
        widget' <- a -> IO (Ptr Widget)
    forall a b. (HasCallStack, ManagedPtrNewtype a) => a -> IO (Ptr b)
    unsafeManagedPtrCastPtr a
    widget
        pspecs' <- unsafeManagedPtrGetPtr pspecs
        (__dynamic_C_WidgetClassDispatchChildPropertiesChangedFieldCallback __funPtr) widget' nPspecs pspecs'
        touchManagedPtr widget
        touchManagedPtr pspecs
        return ()

    -- | Generate a function pointer callable from C code, from a `C_WidgetClassDispatchChildPropertiesChangedFieldCallback`.
    foreign import ccall "wrapper"
        mk_WidgetClassDispatchChildPropertiesChangedFieldCallback :: C_WidgetClassDispatchChildPropertiesChangedFieldCallback -> IO (FunPtr C_WidgetClassDispatchChildPropertiesChangedFieldCallback)

    -- | /No description available in the introspection data./
    type WidgetClassDispatchChildPropertiesChangedFieldCallback =
        Gtk.Widget.Widget
        -> Word32
        -> GParamSpec
        -> IO ()

    -- | A convenience synonym for @`Nothing` :: `Maybe` `WidgetClassDispatchChildPropertiesChangedFieldCallback`@.
    noWidgetClassDispatchChildPropertiesChangedFieldCallback :: Maybe WidgetClassDispatchChildPropertiesChangedFieldCallback
    noWidgetClassDispatchChildPropertiesChangedFieldCallback :: Maybe WidgetClassDispatchChildPropertiesChangedFieldCallback
    noWidgetClassDispatchChildPropertiesChangedFieldCallback = Maybe WidgetClassDispatchChildPropertiesChangedFieldCallback
    forall a. Maybe a
    Nothing

    -- | Wrap the callback into a `GClosure`.
    genClosure_WidgetClassDispatchChildPropertiesChangedFieldCallback :: MonadIO m => WidgetClassDispatchChildPropertiesChangedFieldCallback -> m (GClosure C_WidgetClassDispatchChildPropertiesChangedFieldCallback)
    genClosure_WidgetClassDispatchChildPropertiesChangedFieldCallback :: forall (m :: * -> *).
    MonadIO m =>
    WidgetClassDispatchChildPropertiesChangedFieldCallback
    -> m (GClosure
            C_WidgetClassDispatchChildPropertiesChangedFieldCallback)
    genClosure_WidgetClassDispatchChildPropertiesChangedFieldCallback WidgetClassDispatchChildPropertiesChangedFieldCallback
    cb = IO
      (GClosure C_WidgetClassDispatchChildPropertiesChangedFieldCallback)
    -> m (GClosure
            C_WidgetClassDispatchChildPropertiesChangedFieldCallback)
    forall a. IO a -> m a
    forall (m :: * -> *) a. MonadIO m => IO a -> m a
    liftIO (IO
       (GClosure C_WidgetClassDispatchChildPropertiesChangedFieldCallback)
     -> m (GClosure
             C_WidgetClassDispatchChildPropertiesChangedFieldCallback))
    -> IO
         (GClosure C_WidgetClassDispatchChildPropertiesChangedFieldCallback)
    -> m (GClosure
            C_WidgetClassDispatchChildPropertiesChangedFieldCallback)
    forall a b. (a -> b) -> a -> b
    $ do
        let cb' :: C_WidgetClassDispatchChildPropertiesChangedFieldCallback
    cb' = Maybe
      (Ptr
         (FunPtr C_WidgetClassDispatchChildPropertiesChangedFieldCallback))
    -> WidgetClassDispatchChildPropertiesChangedFieldCallback
    -> C_WidgetClassDispatchChildPropertiesChangedFieldCallback
    wrap_WidgetClassDispatchChildPropertiesChangedFieldCallback Maybe
      (Ptr
         (FunPtr C_WidgetClassDispatchChildPropertiesChangedFieldCallback))
    forall a. Maybe a
    Nothing WidgetClassDispatchChildPropertiesChangedFieldCallback
    cb
        C_WidgetClassDispatchChildPropertiesChangedFieldCallback
    -> IO
         (FunPtr C_WidgetClassDispatchChildPropertiesChangedFieldCallback)
    mk_WidgetClassDispatchChildPropertiesChangedFieldCallback C_WidgetClassDispatchChildPropertiesChangedFieldCallback
    cb' IO
      (FunPtr C_WidgetClassDispatchChildPropertiesChangedFieldCallback)
    -> (FunPtr C_WidgetClassDispatchChildPropertiesChangedFieldCallback
        -> IO
             (GClosure
                C_WidgetClassDispatchChildPropertiesChangedFieldCallback))
    -> IO
         (GClosure C_WidgetClassDispatchChildPropertiesChangedFieldCallback)
    forall a b. IO a -> (a -> IO b) -> IO b
    forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
    >>= FunPtr C_WidgetClassDispatchChildPropertiesChangedFieldCallback
    -> IO
         (GClosure C_WidgetClassDispatchChildPropertiesChangedFieldCallback)
    forall (m :: * -> *) a. MonadIO m => FunPtr a -> m (GClosure a)
    B.GClosure.newGClosure

    -- | Wrap a `WidgetClassDispatchChildPropertiesChangedFieldCallback` into a `C_WidgetClassDispatchChildPropertiesChangedFieldCallback`.
    wrap_WidgetClassDispatchChildPropertiesChangedFieldCallback ::
        Maybe (Ptr (FunPtr C_WidgetClassDispatchChildPropertiesChangedFieldCallback)) ->
        WidgetClassDispatchChildPropertiesChangedFieldCallback ->
        C_WidgetClassDispatchChildPropertiesChangedFieldCallback
    wrap_WidgetClassDispatchChildPropertiesChangedFieldCallback :: Maybe
      (Ptr
         (FunPtr C_WidgetClassDispatchChildPropertiesChangedFieldCallback))
    -> WidgetClassDispatchChildPropertiesChangedFieldCallback
    -> C_WidgetClassDispatchChildPropertiesChangedFieldCallback
    wrap_WidgetClassDispatchChildPropertiesChangedFieldCallback Maybe
      (Ptr
         (FunPtr C_WidgetClassDispatchChildPropertiesChangedFieldCallback))
    gi'funptrptr WidgetClassDispatchChildPropertiesChangedFieldCallback
    gi'cb Ptr Widget
    widget Word32
    nPspecs Ptr GParamSpec
    pspecs = do
        widget' <- ((ManagedPtr Widget -> Widget) -> Ptr Widget -> IO Widget
    forall a b.
    (HasCallStack, GObject a, GObject b) =>
    (ManagedPtr a -> a) -> Ptr b -> IO a
    newObject ManagedPtr Widget -> Widget
    Gtk.Widget.Widget) Ptr Widget
    widget
        pspecs' <- B.GParamSpec.newGParamSpecFromPtr pspecs
        gi'cb  widget' nPspecs pspecs'
        maybeReleaseFunPtr gi'funptrptr

    -- callback WidgetClassDirectionChangedFieldCallback
    {- Callable
      { returnType = Nothing
      , returnMayBeNull = False
      , returnTransfer = TransferNothing
      , returnDocumentation =
          Documentation { rawDocText = Nothing , sinceVersion = Nothing }
      , args =
          [ Arg
              { argCName = "widget"
              , argType = TInterface Name { namespace = "Gtk" , name = "Widget" }
              , argCType = Just "GtkWidget*"
              , direction = DirectionIn
              , mayBeNull = False
              , argDoc =
                  Documentation { rawDocText = Nothing , sinceVersion = Nothing }
              , argScope = ScopeTypeInvalid
              , argClosure = -1
              , argDestroy = -1
              , argCallerAllocates = False
              , argCallbackUserData = False
              , transfer = TransferNothing
              }
          , Arg
              { argCName = "previous_direction"
              , argType =
                  TInterface Name { namespace = "Gtk" , name = "TextDirection" }
              , argCType = Just "GtkTextDirection"
              , direction = DirectionIn
              , mayBeNull = False
              , argDoc =
                  Documentation { rawDocText = Nothing , sinceVersion = Nothing }
              , argScope = ScopeTypeInvalid
              , argClosure = -1
              , argDestroy = -1
              , argCallerAllocates = False
              , argCallbackUserData = False
              , transfer = TransferNothing
              }
          ]
      , skipReturn = False
      , callableThrows = False
      , callableDeprecated = Nothing
      , callableDocumentation =
          Documentation { rawDocText = Nothing , sinceVersion = Nothing }
      , callableResolvable = Nothing
      }
    -}
    -- | Type for the callback on the (unwrapped) C side.
    type C_WidgetClassDirectionChangedFieldCallback =
        Ptr Gtk.Widget.Widget ->
        CUInt ->
        IO ()

    -- Args: [ Arg
    --           { argCName = "widget"
    --           , argType = TInterface Name { namespace = "Gtk" , name = "Widget" }
    --           , argCType = Just "GtkWidget*"
    --           , direction = DirectionIn
    --           , mayBeNull = False
    --           , argDoc =
    --               Documentation { rawDocText = Nothing , sinceVersion = Nothing }
    --           , argScope = ScopeTypeInvalid
    --           , argClosure = -1
    --           , argDestroy = -1
    --           , argCallerAllocates = False
    --           , argCallbackUserData = False
    --           , transfer = TransferNothing
    --           }
    --       , Arg
    --           { argCName = "previous_direction"
    --           , argType =
    --               TInterface Name { namespace = "Gtk" , name = "TextDirection" }
    --           , argCType = Just "GtkTextDirection"
    --           , direction = DirectionIn
    --           , mayBeNull = False
    --           , argDoc =
    --               Documentation { rawDocText = Nothing , sinceVersion = Nothing }
    --           , argScope = ScopeTypeInvalid
    --           , argClosure = -1
    --           , argDestroy = -1
    --           , argCallerAllocates = False
    --           , argCallbackUserData = False
    --           , transfer = TransferNothing
    --           }
    --       ]
    -- Lengths: []
    -- returnType: Nothing
    -- throws : False
    -- Skip return : False

    foreign import ccall "dynamic" __dynamic_C_WidgetClassDirectionChangedFieldCallback :: FunPtr C_WidgetClassDirectionChangedFieldCallback -> C_WidgetClassDirectionChangedFieldCallback

    -- | Given a pointer to a foreign C function, wrap it into a function callable from Haskell.
    dynamic_WidgetClassDirectionChangedFieldCallback ::
        (B.CallStack.HasCallStack, MonadIO m, Gtk.Widget.IsWidget a) =>
        FunPtr C_WidgetClassDirectionChangedFieldCallback
        -> a
        -> Gtk.Enums.TextDirection
        -> m ()
    dynamic_WidgetClassDirectionChangedFieldCallback :: forall (m :: * -> *) a.
    (HasCallStack, MonadIO m, IsWidget a) =>
    FunPtr C_WidgetClassStateFlagsChangedFieldCallback
    -> a -> TextDirection -> m ()
    dynamic_WidgetClassDirectionChangedFieldCallback FunPtr C_WidgetClassStateFlagsChangedFieldCallback
    __funPtr a
    widget TextDirection
    previousDirection = IO () -> m ()
    forall a. IO a -> m a
    forall (m :: * -> *) a. MonadIO m => IO a -> m a
    liftIO (IO () -> m ()) -> IO () -> m ()
    forall a b. (a -> b) -> a -> b
    $ do
        widget' <- a -> IO (Ptr Widget)
    forall a b. (HasCallStack, ManagedPtrNewtype a) => a -> IO (Ptr b)
    unsafeManagedPtrCastPtr a
    widget
        let previousDirection' = (Int -> CUInt
    forall a b. (Integral a, Num b) => a -> b
    fromIntegral (Int -> CUInt) -> (TextDirection -> Int) -> TextDirection -> CUInt
    forall b c a. (b -> c) -> (a -> b) -> a -> c
    . TextDirection -> Int
    forall a. Enum a => a -> Int
    fromEnum) TextDirection
    previousDirection
        (__dynamic_C_WidgetClassDirectionChangedFieldCallback __funPtr) widget' previousDirection'
        touchManagedPtr widget
        return ()

    -- | Generate a function pointer callable from C code, from a `C_WidgetClassDirectionChangedFieldCallback`.
    foreign import ccall "wrapper"
        mk_WidgetClassDirectionChangedFieldCallback :: C_WidgetClassDirectionChangedFieldCallback -> IO (FunPtr C_WidgetClassDirectionChangedFieldCallback)

    -- | /No description available in the introspection data./
    type WidgetClassDirectionChangedFieldCallback =
        Gtk.Widget.Widget
        -> Gtk.Enums.TextDirection
        -> IO ()

    -- | A convenience synonym for @`Nothing` :: `Maybe` `WidgetClassDirectionChangedFieldCallback`@.
    noWidgetClassDirectionChangedFieldCallback :: Maybe WidgetClassDirectionChangedFieldCallback
    noWidgetClassDirectionChangedFieldCallback :: Maybe WidgetClassDirectionChangedFieldCallback
    noWidgetClassDirectionChangedFieldCallback = Maybe WidgetClassDirectionChangedFieldCallback
    forall a. Maybe a
    Nothing

    -- | Wrap the callback into a `GClosure`.
    genClosure_WidgetClassDirectionChangedFieldCallback :: MonadIO m => WidgetClassDirectionChangedFieldCallback -> m (GClosure C_WidgetClassDirectionChangedFieldCallback)
    genClosure_WidgetClassDirectionChangedFieldCallback :: forall (m :: * -> *).
    MonadIO m =>
    WidgetClassDirectionChangedFieldCallback
    -> m (GClosure C_WidgetClassStateFlagsChangedFieldCallback)
    genClosure_WidgetClassDirectionChangedFieldCallback WidgetClassDirectionChangedFieldCallback
    cb = IO (GClosure C_WidgetClassStateFlagsChangedFieldCallback)
    -> m (GClosure C_WidgetClassStateFlagsChangedFieldCallback)
    forall a. IO a -> m a
    forall (m :: * -> *) a. MonadIO m => IO a -> m a
    liftIO (IO (GClosure C_WidgetClassStateFlagsChangedFieldCallback)
     -> m (GClosure C_WidgetClassStateFlagsChangedFieldCallback))
    -> IO (GClosure C_WidgetClassStateFlagsChangedFieldCallback)
    -> m (GClosure C_WidgetClassStateFlagsChangedFieldCallback)
    forall a b. (a -> b) -> a -> b
    $ do
        let cb' :: C_WidgetClassStateFlagsChangedFieldCallback
    cb' = Maybe (Ptr (FunPtr C_WidgetClassStateFlagsChangedFieldCallback))
    -> WidgetClassDirectionChangedFieldCallback
    -> C_WidgetClassStateFlagsChangedFieldCallback
    wrap_WidgetClassDirectionChangedFieldCallback Maybe (Ptr (FunPtr C_WidgetClassStateFlagsChangedFieldCallback))
    forall a. Maybe a
    Nothing WidgetClassDirectionChangedFieldCallback
    cb
        C_WidgetClassStateFlagsChangedFieldCallback
    -> IO (FunPtr C_WidgetClassStateFlagsChangedFieldCallback)
    mk_WidgetClassDirectionChangedFieldCallback C_WidgetClassStateFlagsChangedFieldCallback
    cb' IO (FunPtr C_WidgetClassStateFlagsChangedFieldCallback)
    -> (FunPtr C_WidgetClassStateFlagsChangedFieldCallback
        -> IO (GClosure C_WidgetClassStateFlagsChangedFieldCallback))
    -> IO (GClosure C_WidgetClassStateFlagsChangedFieldCallback)
    forall a b. IO a -> (a -> IO b) -> IO b
    forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
    >>= FunPtr C_WidgetClassStateFlagsChangedFieldCallback
    -> IO (GClosure C_WidgetClassStateFlagsChangedFieldCallback)
    forall (m :: * -> *) a. MonadIO m => FunPtr a -> m (GClosure a)
    B.GClosure.newGClosure

    -- | Wrap a `WidgetClassDirectionChangedFieldCallback` into a `C_WidgetClassDirectionChangedFieldCallback`.
    wrap_WidgetClassDirectionChangedFieldCallback ::
        Maybe (Ptr (FunPtr C_WidgetClassDirectionChangedFieldCallback)) ->
        WidgetClassDirectionChangedFieldCallback ->
        C_WidgetClassDirectionChangedFieldCallback
    wrap_WidgetClassDirectionChangedFieldCallback :: Maybe (Ptr (FunPtr C_WidgetClassStateFlagsChangedFieldCallback))
    -> WidgetClassDirectionChangedFieldCallback
    -> C_WidgetClassStateFlagsChangedFieldCallback
    wrap_WidgetClassDirectionChangedFieldCallback Maybe (Ptr (FunPtr C_WidgetClassStateFlagsChangedFieldCallback))
    gi'funptrptr WidgetClassDirectionChangedFieldCallback
    gi'cb Ptr Widget
    widget CUInt
    previousDirection = do
        widget' <- ((ManagedPtr Widget -> Widget) -> Ptr Widget -> IO Widget
    forall a b.
    (HasCallStack, GObject a, GObject b) =>
    (ManagedPtr a -> a) -> Ptr b -> IO a
    newObject ManagedPtr Widget -> Widget
    Gtk.Widget.Widget) Ptr Widget
    widget
        let previousDirection' = (Int -> TextDirection
    forall a. Enum a => Int -> a
    toEnum (Int -> TextDirection) -> (CUInt -> Int) -> CUInt -> TextDirection
    forall b c a. (b -> c) -> (a -> b) -> a -> c
    . CUInt -> Int
    forall a b. (Integral a, Num b) => a -> b
    fromIntegral) CUInt
    previousDirection
        gi'cb  widget' previousDirection'
        maybeReleaseFunPtr gi'funptrptr

    -- callback WidgetClassDestroyFieldCallback
    {- Callable
      { returnType = Nothing
      , returnMayBeNull = False
      , returnTransfer = TransferNothing
      , returnDocumentation =
          Documentation { rawDocText = Nothing , sinceVersion = Nothing }
      , args =
          [ Arg
              { argCName = "widget"
              , argType = TInterface Name { namespace = "Gtk" , name = "Widget" }
              , argCType = Just "GtkWidget*"
              , direction = DirectionIn
              , mayBeNull = False
              , argDoc =
                  Documentation
                    { rawDocText = Just "a #GtkWidget" , sinceVersion = Nothing }
              , argScope = ScopeTypeInvalid
              , argClosure = -1
              , argDestroy = -1
              , argCallerAllocates = False
              , argCallbackUserData = False
              , transfer = TransferNothing
              }
          ]
      , skipReturn = False
      , callableThrows = False
      , callableDeprecated = Nothing
      , callableDocumentation =
          Documentation { rawDocText = Nothing , sinceVersion = Nothing }
      , callableResolvable = Nothing
      }
    -}
    -- | Type for the callback on the (unwrapped) C side.
    type C_WidgetClassDestroyFieldCallback =
        Ptr Gtk.Widget.Widget ->
        IO ()

    -- Args: [ Arg
    --           { argCName = "widget"
    --           , argType = TInterface Name { namespace = "Gtk" , name = "Widget" }
    --           , argCType = Just "GtkWidget*"
    --           , direction = DirectionIn
    --           , mayBeNull = False
    --           , argDoc =
    --               Documentation
    --                 { rawDocText = Just "a #GtkWidget" , sinceVersion = Nothing }
    --           , argScope = ScopeTypeInvalid
    --           , argClosure = -1
    --           , argDestroy = -1
    --           , argCallerAllocates = False
    --           , argCallbackUserData = False
    --           , transfer = TransferNothing
    --           }
    --       ]
    -- Lengths: []
    -- returnType: Nothing
    -- throws : False
    -- Skip return : False

    foreign import ccall "dynamic" __dynamic_C_WidgetClassDestroyFieldCallback :: FunPtr C_WidgetClassDestroyFieldCallback -> C_WidgetClassDestroyFieldCallback

    -- | Given a pointer to a foreign C function, wrap it into a function callable from Haskell.
    dynamic_WidgetClassDestroyFieldCallback ::
        (B.CallStack.HasCallStack, MonadIO m, Gtk.Widget.IsWidget a) =>
        FunPtr C_WidgetClassDestroyFieldCallback
        -> a
        -- ^ /@widget@/: a t'GI.Gtk.Objects.Widget.Widget'
        -> m ()
    dynamic_WidgetClassDestroyFieldCallback :: forall (m :: * -> *) a.
    (HasCallStack, MonadIO m, IsWidget a) =>
    FunPtr C_WidgetClassUnrealizeFieldCallback -> a -> m ()
    dynamic_WidgetClassDestroyFieldCallback FunPtr C_WidgetClassUnrealizeFieldCallback
    __funPtr a
    widget = IO () -> m ()
    forall a. IO a -> m a
    forall (m :: * -> *) a. MonadIO m => IO a -> m a
    liftIO (IO () -> m ()) -> IO () -> m ()
    forall a b. (a -> b) -> a -> b
    $ do
        widget' <- a -> IO (Ptr Widget)
    forall a b. (HasCallStack, ManagedPtrNewtype a) => a -> IO (Ptr b)
    unsafeManagedPtrCastPtr a
    widget
        (__dynamic_C_WidgetClassDestroyFieldCallback __funPtr) widget'
        touchManagedPtr widget
        return ()

    -- | Generate a function pointer callable from C code, from a `C_WidgetClassDestroyFieldCallback`.
    foreign import ccall "wrapper"
        mk_WidgetClassDestroyFieldCallback :: C_WidgetClassDestroyFieldCallback -> IO (FunPtr C_WidgetClassDestroyFieldCallback)

    -- | /No description available in the introspection data./
    type WidgetClassDestroyFieldCallback =
        Gtk.Widget.Widget
        -- ^ /@widget@/: a t'GI.Gtk.Objects.Widget.Widget'
        -> IO ()

    -- | A convenience synonym for @`Nothing` :: `Maybe` `WidgetClassDestroyFieldCallback`@.
    noWidgetClassDestroyFieldCallback :: Maybe WidgetClassDestroyFieldCallback
    noWidgetClassDestroyFieldCallback :: Maybe WidgetClassUnrealizeFieldCallback
    noWidgetClassDestroyFieldCallback = Maybe WidgetClassUnrealizeFieldCallback
    forall a. Maybe a
    Nothing

    -- | Wrap the callback into a `GClosure`.
    genClosure_WidgetClassDestroyFieldCallback :: MonadIO m => WidgetClassDestroyFieldCallback -> m (GClosure C_WidgetClassDestroyFieldCallback)
    genClosure_WidgetClassDestroyFieldCallback :: forall (m :: * -> *).
    MonadIO m =>
    WidgetClassUnrealizeFieldCallback
    -> m (GClosure C_WidgetClassUnrealizeFieldCallback)
    genClosure_WidgetClassDestroyFieldCallback WidgetClassUnrealizeFieldCallback
    cb = IO (GClosure C_WidgetClassUnrealizeFieldCallback)
    -> m (GClosure C_WidgetClassUnrealizeFieldCallback)
    forall a. IO a -> m a
    forall (m :: * -> *) a. MonadIO m => IO a -> m a
    liftIO (IO (GClosure C_WidgetClassUnrealizeFieldCallback)
     -> m (GClosure C_WidgetClassUnrealizeFieldCallback))
    -> IO (GClosure C_WidgetClassUnrealizeFieldCallback)
    -> m (GClosure C_WidgetClassUnrealizeFieldCallback)
    forall a b. (a -> b) -> a -> b
    $ do
        let cb' :: C_WidgetClassUnrealizeFieldCallback
    cb' = Maybe (Ptr (FunPtr C_WidgetClassUnrealizeFieldCallback))
    -> WidgetClassUnrealizeFieldCallback
    -> C_WidgetClassUnrealizeFieldCallback
    wrap_WidgetClassDestroyFieldCallback Maybe (Ptr (FunPtr C_WidgetClassUnrealizeFieldCallback))
    forall a. Maybe a
    Nothing WidgetClassUnrealizeFieldCallback
    cb
        C_WidgetClassUnrealizeFieldCallback
    -> IO (FunPtr C_WidgetClassUnrealizeFieldCallback)
    mk_WidgetClassDestroyFieldCallback C_WidgetClassUnrealizeFieldCallback
    cb' IO (FunPtr C_WidgetClassUnrealizeFieldCallback)
    -> (FunPtr C_WidgetClassUnrealizeFieldCallback
        -> IO (GClosure C_WidgetClassUnrealizeFieldCallback))
    -> IO (GClosure C_WidgetClassUnrealizeFieldCallback)
    forall a b. IO a -> (a -> IO b) -> IO b
    forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
    >>= FunPtr C_WidgetClassUnrealizeFieldCallback
    -> IO (GClosure C_WidgetClassUnrealizeFieldCallback)
    forall (m :: * -> *) a. MonadIO m => FunPtr a -> m (GClosure a)
    B.GClosure.newGClosure

    -- | Wrap a `WidgetClassDestroyFieldCallback` into a `C_WidgetClassDestroyFieldCallback`.
    wrap_WidgetClassDestroyFieldCallback ::
        Maybe (Ptr (FunPtr C_WidgetClassDestroyFieldCallback)) ->
        WidgetClassDestroyFieldCallback ->
        C_WidgetClassDestroyFieldCallback
    wrap_WidgetClassDestroyFieldCallback :: Maybe (Ptr (FunPtr C_WidgetClassUnrealizeFieldCallback))
    -> WidgetClassUnrealizeFieldCallback
    -> C_WidgetClassUnrealizeFieldCallback
    wrap_WidgetClassDestroyFieldCallback Maybe (Ptr (FunPtr C_WidgetClassUnrealizeFieldCallback))
    gi'funptrptr WidgetClassUnrealizeFieldCallback
    gi'cb Ptr Widget
    widget = do
        widget' <- ((ManagedPtr Widget -> Widget) -> Ptr Widget -> IO Widget
    forall a b.
    (HasCallStack, GObject a, GObject b) =>
    (ManagedPtr a -> a) -> Ptr b -> IO a
    newObject ManagedPtr Widget -> Widget
    Gtk.Widget.Widget) Ptr Widget
    widget
        gi'cb  widget'
        maybeReleaseFunPtr gi'funptrptr

    -- callback WidgetClassDestroyEventFieldCallback
    {- Callable
      { returnType = Just (TBasicType TBoolean)
      , returnMayBeNull = False
      , returnTransfer = TransferNothing
      , returnDocumentation =
          Documentation { rawDocText = Nothing , sinceVersion = Nothing }
      , args =
          [ Arg
              { argCName = "widget"
              , argType = TInterface Name { namespace = "Gtk" , name = "Widget" }
              , argCType = Just "GtkWidget*"
              , direction = DirectionIn
              , mayBeNull = False
              , argDoc =
                  Documentation { rawDocText = Nothing , sinceVersion = Nothing }
              , argScope = ScopeTypeInvalid
              , argClosure = -1
              , argDestroy = -1
              , argCallerAllocates = False
              , argCallbackUserData = False
              , transfer = TransferNothing
              }
          , Arg
              { argCName = "event"
              , argType =
                  TInterface Name { namespace = "Gdk" , name = "EventAny" }
              , argCType = Just "GdkEventAny*"
              , direction = DirectionIn
              , mayBeNull = False
              , argDoc =
                  Documentation { rawDocText = Nothing , sinceVersion = Nothing }
              , argScope = ScopeTypeInvalid
              , argClosure = -1
              , argDestroy = -1
              , argCallerAllocates = False
              , argCallbackUserData = False
              , transfer = TransferNothing
              }
          ]
      , skipReturn = False
      , callableThrows = False
      , callableDeprecated = Nothing
      , callableDocumentation =
          Documentation { rawDocText = Nothing , sinceVersion = Nothing }
      , callableResolvable = Nothing
      }
    -}
    -- | Type for the callback on the (unwrapped) C side.
    type C_WidgetClassDestroyEventFieldCallback =
        Ptr Gtk.Widget.Widget ->
        Ptr Gdk.EventAny.EventAny ->
        IO CInt

    -- Args: [ Arg
    --           { argCName = "widget"
    --           , argType = TInterface Name { namespace = "Gtk" , name = "Widget" }
    --           , argCType = Just "GtkWidget*"
    --           , direction = DirectionIn
    --           , mayBeNull = False
    --           , argDoc =
    --               Documentation { rawDocText = Nothing , sinceVersion = Nothing }
    --           , argScope = ScopeTypeInvalid
    --           , argClosure = -1
    --           , argDestroy = -1
    --           , argCallerAllocates = False
    --           , argCallbackUserData = False
    --           , transfer = TransferNothing
    --           }
    --       , Arg
    --           { argCName = "event"
    --           , argType =
    --               TInterface Name { namespace = "Gdk" , name = "EventAny" }
    --           , argCType = Just "GdkEventAny*"
    --           , direction = DirectionIn
    --           , mayBeNull = False
    --           , argDoc =
    --               Documentation { rawDocText = Nothing , sinceVersion = Nothing }
    --           , argScope = ScopeTypeInvalid
    --           , argClosure = -1
    --           , argDestroy = -1
    --           , argCallerAllocates = False
    --           , argCallbackUserData = False
    --           , transfer = TransferNothing
    --           }
    --       ]
    -- Lengths: []
    -- returnType: Just (TBasicType TBoolean)
    -- throws : False
    -- Skip return : False

    foreign import ccall "dynamic" __dynamic_C_WidgetClassDestroyEventFieldCallback :: FunPtr C_WidgetClassDestroyEventFieldCallback -> C_WidgetClassDestroyEventFieldCallback

    -- | Given a pointer to a foreign C function, wrap it into a function callable from Haskell.
    dynamic_WidgetClassDestroyEventFieldCallback ::
        (B.CallStack.HasCallStack, MonadIO m, Gtk.Widget.IsWidget a) =>
        FunPtr C_WidgetClassDestroyEventFieldCallback
        -> a
        -> Gdk.EventAny.EventAny
        -> m Bool
    dynamic_WidgetClassDestroyEventFieldCallback :: forall (m :: * -> *) a.
    (HasCallStack, MonadIO m, IsWidget a) =>
    FunPtr C_WidgetClassUnmapEventFieldCallback
    -> a -> EventAny -> m Bool
    dynamic_WidgetClassDestroyEventFieldCallback FunPtr C_WidgetClassUnmapEventFieldCallback
    __funPtr a
    widget EventAny
    event = IO Bool -> m Bool
    forall a. IO a -> m a
    forall (m :: * -> *) a. MonadIO m => IO a -> m a
    liftIO (IO Bool -> m Bool) -> IO Bool -> m Bool
    forall a b. (a -> b) -> a -> b
    $ do
        widget' <- a -> IO (Ptr Widget)
    forall a b. (HasCallStack, ManagedPtrNewtype a) => a -> IO (Ptr b)
    unsafeManagedPtrCastPtr a
    widget
        event' <- unsafeManagedPtrGetPtr event
        result <- (__dynamic_C_WidgetClassDestroyEventFieldCallback __funPtr) widget' event'
        let result' = (CInt -> CInt -> Bool
    forall a. Eq a => a -> a -> Bool
    /= CInt
    0) CInt
    result
        touchManagedPtr widget
        touchManagedPtr event
        return result'

    -- | Generate a function pointer callable from C code, from a `C_WidgetClassDestroyEventFieldCallback`.
    foreign import ccall "wrapper"
        mk_WidgetClassDestroyEventFieldCallback :: C_WidgetClassDestroyEventFieldCallback -> IO (FunPtr C_WidgetClassDestroyEventFieldCallback)

    -- | /No description available in the introspection data./
    type WidgetClassDestroyEventFieldCallback =
        Gtk.Widget.Widget
        -> Gdk.EventAny.EventAny
        -> IO Bool

    -- | A convenience synonym for @`Nothing` :: `Maybe` `WidgetClassDestroyEventFieldCallback`@.
    noWidgetClassDestroyEventFieldCallback :: Maybe WidgetClassDestroyEventFieldCallback
    noWidgetClassDestroyEventFieldCallback :: Maybe WidgetClassUnmapEventFieldCallback
    noWidgetClassDestroyEventFieldCallback = Maybe WidgetClassUnmapEventFieldCallback
    forall a. Maybe a
    Nothing

    -- | Wrap the callback into a `GClosure`.
    genClosure_WidgetClassDestroyEventFieldCallback :: MonadIO m => WidgetClassDestroyEventFieldCallback -> m (GClosure C_WidgetClassDestroyEventFieldCallback)
    genClosure_WidgetClassDestroyEventFieldCallback :: forall (m :: * -> *).
    MonadIO m =>
    WidgetClassUnmapEventFieldCallback
    -> m (GClosure C_WidgetClassUnmapEventFieldCallback)
    genClosure_WidgetClassDestroyEventFieldCallback WidgetClassUnmapEventFieldCallback
    cb = IO (GClosure C_WidgetClassUnmapEventFieldCallback)
    -> m (GClosure C_WidgetClassUnmapEventFieldCallback)
    forall a. IO a -> m a
    forall (m :: * -> *) a. MonadIO m => IO a -> m a
    liftIO (IO (GClosure C_WidgetClassUnmapEventFieldCallback)
     -> m (GClosure C_WidgetClassUnmapEventFieldCallback))
    -> IO (GClosure C_WidgetClassUnmapEventFieldCallback)
    -> m (GClosure C_WidgetClassUnmapEventFieldCallback)
    forall a b. (a -> b) -> a -> b
    $ do
        let cb' :: C_WidgetClassUnmapEventFieldCallback
    cb' = Maybe (Ptr (FunPtr C_WidgetClassUnmapEventFieldCallback))
    -> WidgetClassUnmapEventFieldCallback
    -> C_WidgetClassUnmapEventFieldCallback
    wrap_WidgetClassDestroyEventFieldCallback Maybe (Ptr (FunPtr C_WidgetClassUnmapEventFieldCallback))
    forall a. Maybe a
    Nothing WidgetClassUnmapEventFieldCallback
    cb
        C_WidgetClassUnmapEventFieldCallback
    -> IO (FunPtr C_WidgetClassUnmapEventFieldCallback)
    mk_WidgetClassDestroyEventFieldCallback C_WidgetClassUnmapEventFieldCallback
    cb' IO (FunPtr C_WidgetClassUnmapEventFieldCallback)
    -> (FunPtr C_WidgetClassUnmapEventFieldCallback
        -> IO (GClosure C_WidgetClassUnmapEventFieldCallback))
    -> IO (GClosure C_WidgetClassUnmapEventFieldCallback)
    forall a b. IO a -> (a -> IO b) -> IO b
    forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
    >>= FunPtr C_WidgetClassUnmapEventFieldCallback
    -> IO (GClosure C_WidgetClassUnmapEventFieldCallback)
    forall (m :: * -> *) a. MonadIO m => FunPtr a -> m (GClosure a)
    B.GClosure.newGClosure

    -- | Wrap a `WidgetClassDestroyEventFieldCallback` into a `C_WidgetClassDestroyEventFieldCallback`.
    wrap_WidgetClassDestroyEventFieldCallback ::
        Maybe (Ptr (FunPtr C_WidgetClassDestroyEventFieldCallback)) ->
        WidgetClassDestroyEventFieldCallback ->
        C_WidgetClassDestroyEventFieldCallback
    wrap_WidgetClassDestroyEventFieldCallback :: Maybe (Ptr (FunPtr C_WidgetClassUnmapEventFieldCallback))
    -> WidgetClassUnmapEventFieldCallback
    -> C_WidgetClassUnmapEventFieldCallback
    wrap_WidgetClassDestroyEventFieldCallback Maybe (Ptr (FunPtr C_WidgetClassUnmapEventFieldCallback))
    gi'funptrptr WidgetClassUnmapEventFieldCallback
    gi'cb Ptr Widget
    widget Ptr EventAny
    event = do
        widget' <- ((ManagedPtr Widget -> Widget) -> Ptr Widget -> IO Widget
    forall a b.
    (HasCallStack, GObject a, GObject b) =>
    (ManagedPtr a -> a) -> Ptr b -> IO a
    newObject ManagedPtr Widget -> Widget
    Gtk.Widget.Widget) Ptr Widget
    widget
        event' <- (newPtr Gdk.EventAny.EventAny) event
        result <- gi'cb  widget' event'
        maybeReleaseFunPtr gi'funptrptr
        let result' = (Int -> CInt
    forall a b. (Integral a, Num b) => a -> b
    P.fromIntegral (Int -> CInt) -> (Bool -> Int) -> Bool -> CInt
    forall b c a. (b -> c) -> (a -> b) -> a -> c
    . Bool -> Int
    forall a. Enum a => a -> Int
    P.fromEnum) Bool
    result
        return result'

    -- callback WidgetClassDeleteEventFieldCallback
    {- Callable
      { returnType = Just (TBasicType TBoolean)
      , returnMayBeNull = False
      , returnTransfer = TransferNothing
      , returnDocumentation =
          Documentation { rawDocText = Nothing , sinceVersion = Nothing }
      , args =
          [ Arg
              { argCName = "widget"
              , argType = TInterface Name { namespace = "Gtk" , name = "Widget" }
              , argCType = Just "GtkWidget*"
              , direction = DirectionIn
              , mayBeNull = False
              , argDoc =
                  Documentation { rawDocText = Nothing , sinceVersion = Nothing }
              , argScope = ScopeTypeInvalid
              , argClosure = -1
              , argDestroy = -1
              , argCallerAllocates = False
              , argCallbackUserData = False
              , transfer = TransferNothing
              }
          , Arg
              { argCName = "event"
              , argType =
                  TInterface Name { namespace = "Gdk" , name = "EventAny" }
              , argCType = Just "GdkEventAny*"
              , direction = DirectionIn
              , mayBeNull = False
              , argDoc =
                  Documentation { rawDocText = Nothing , sinceVersion = Nothing }
              , argScope = ScopeTypeInvalid
              , argClosure = -1
              , argDestroy = -1
              , argCallerAllocates = False
              , argCallbackUserData = False
              , transfer = TransferNothing
              }
          ]
      , skipReturn = False
      , callableThrows = False
      , callableDeprecated = Nothing
      , callableDocumentation =
          Documentation { rawDocText = Nothing , sinceVersion = Nothing }
      , callableResolvable = Nothing
      }
    -}
    -- | Type for the callback on the (unwrapped) C side.
    type C_WidgetClassDeleteEventFieldCallback =
        Ptr Gtk.Widget.Widget ->
        Ptr Gdk.EventAny.EventAny ->
        IO CInt

    -- Args: [ Arg
    --           { argCName = "widget"
    --           , argType = TInterface Name { namespace = "Gtk" , name = "Widget" }
    --           , argCType = Just "GtkWidget*"
    --           , direction = DirectionIn
    --           , mayBeNull = False
    --           , argDoc =
    --               Documentation { rawDocText = Nothing , sinceVersion = Nothing }
    --           , argScope = ScopeTypeInvalid
    --           , argClosure = -1
    --           , argDestroy = -1
    --           , argCallerAllocates = False
    --           , argCallbackUserData = False
    --           , transfer = TransferNothing
    --           }
    --       , Arg
    --           { argCName = "event"
    --           , argType =
    --               TInterface Name { namespace = "Gdk" , name = "EventAny" }
    --           , argCType = Just "GdkEventAny*"
    --           , direction = DirectionIn
    --           , mayBeNull = False
    --           , argDoc =
    --               Documentation { rawDocText = Nothing , sinceVersion = Nothing }
    --           , argScope = ScopeTypeInvalid
    --           , argClosure = -1
    --           , argDestroy = -1
    --           , argCallerAllocates = False
    --           , argCallbackUserData = False
    --           , transfer = TransferNothing
    --           }
    --       ]
    -- Lengths: []
    -- returnType: Just (TBasicType TBoolean)
    -- throws : False
    -- Skip return : False

    foreign import ccall "dynamic" __dynamic_C_WidgetClassDeleteEventFieldCallback :: FunPtr C_WidgetClassDeleteEventFieldCallback -> C_WidgetClassDeleteEventFieldCallback

    -- | Given a pointer to a foreign C function, wrap it into a function callable from Haskell.
    dynamic_WidgetClassDeleteEventFieldCallback ::
        (B.CallStack.HasCallStack, MonadIO m, Gtk.Widget.IsWidget a) =>
        FunPtr C_WidgetClassDeleteEventFieldCallback
        -> a
        -> Gdk.EventAny.EventAny
        -> m Bool
    dynamic_WidgetClassDeleteEventFieldCallback :: forall (m :: * -> *) a.
    (HasCallStack, MonadIO m, IsWidget a) =>
    FunPtr C_WidgetClassUnmapEventFieldCallback
    -> a -> EventAny -> m Bool
    dynamic_WidgetClassDeleteEventFieldCallback FunPtr C_WidgetClassUnmapEventFieldCallback
    __funPtr a
    widget EventAny
    event = IO Bool -> m Bool
    forall a. IO a -> m a
    forall (m :: * -> *) a. MonadIO m => IO a -> m a
    liftIO (IO Bool -> m Bool) -> IO Bool -> m Bool
    forall a b. (a -> b) -> a -> b
    $ do
        widget' <- a -> IO (Ptr Widget)
    forall a b. (HasCallStack, ManagedPtrNewtype a) => a -> IO (Ptr b)
    unsafeManagedPtrCastPtr a
    widget
        event' <- unsafeManagedPtrGetPtr event
        result <- (__dynamic_C_WidgetClassDeleteEventFieldCallback __funPtr) widget' event'
        let result' = (CInt -> CInt -> Bool
    forall a. Eq a => a -> a -> Bool
    /= CInt
    0) CInt
    result
        touchManagedPtr widget
        touchManagedPtr event
        return result'

    -- | Generate a function pointer callable from C code, from a `C_WidgetClassDeleteEventFieldCallback`.
    foreign import ccall "wrapper"
        mk_WidgetClassDeleteEventFieldCallback :: C_WidgetClassDeleteEventFieldCallback -> IO (FunPtr C_WidgetClassDeleteEventFieldCallback)

    -- | /No description available in the introspection data./
    type WidgetClassDeleteEventFieldCallback =
        Gtk.Widget.Widget
        -> Gdk.EventAny.EventAny
        -> IO Bool

    -- | A convenience synonym for @`Nothing` :: `Maybe` `WidgetClassDeleteEventFieldCallback`@.
    noWidgetClassDeleteEventFieldCallback :: Maybe WidgetClassDeleteEventFieldCallback
    noWidgetClassDeleteEventFieldCallback :: Maybe WidgetClassUnmapEventFieldCallback
    noWidgetClassDeleteEventFieldCallback = Maybe WidgetClassUnmapEventFieldCallback
    forall a. Maybe a
    Nothing

    -- | Wrap the callback into a `GClosure`.
    genClosure_WidgetClassDeleteEventFieldCallback :: MonadIO m => WidgetClassDeleteEventFieldCallback -> m (GClosure C_WidgetClassDeleteEventFieldCallback)
    genClosure_WidgetClassDeleteEventFieldCallback :: forall (m :: * -> *).
    MonadIO m =>
    WidgetClassUnmapEventFieldCallback
    -> m (GClosure C_WidgetClassUnmapEventFieldCallback)
    genClosure_WidgetClassDeleteEventFieldCallback WidgetClassUnmapEventFieldCallback
    cb = IO (GClosure C_WidgetClassUnmapEventFieldCallback)
    -> m (GClosure C_WidgetClassUnmapEventFieldCallback)
    forall a. IO a -> m a
    forall (m :: * -> *) a. MonadIO m => IO a -> m a
    liftIO (IO (GClosure C_WidgetClassUnmapEventFieldCallback)
     -> m (GClosure C_WidgetClassUnmapEventFieldCallback))
    -> IO (GClosure C_WidgetClassUnmapEventFieldCallback)
    -> m (GClosure C_WidgetClassUnmapEventFieldCallback)
    forall a b. (a -> b) -> a -> b
    $ do
        let cb' :: C_WidgetClassUnmapEventFieldCallback
    cb' = Maybe (Ptr (FunPtr C_WidgetClassUnmapEventFieldCallback))
    -> WidgetClassUnmapEventFieldCallback
    -> C_WidgetClassUnmapEventFieldCallback
    wrap_WidgetClassDeleteEventFieldCallback Maybe (Ptr (FunPtr C_WidgetClassUnmapEventFieldCallback))
    forall a. Maybe a
    Nothing WidgetClassUnmapEventFieldCallback
    cb
        C_WidgetClassUnmapEventFieldCallback
    -> IO (FunPtr C_WidgetClassUnmapEventFieldCallback)
    mk_WidgetClassDeleteEventFieldCallback C_WidgetClassUnmapEventFieldCallback
    cb' IO (FunPtr C_WidgetClassUnmapEventFieldCallback)
    -> (FunPtr C_WidgetClassUnmapEventFieldCallback
        -> IO (GClosure C_WidgetClassUnmapEventFieldCallback))
    -> IO (GClosure C_WidgetClassUnmapEventFieldCallback)
    forall a b. IO a -> (a -> IO b) -> IO b
    forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
    >>= FunPtr C_WidgetClassUnmapEventFieldCallback
    -> IO (GClosure C_WidgetClassUnmapEventFieldCallback)
    forall (m :: * -> *) a. MonadIO m => FunPtr a -> m (GClosure a)
    B.GClosure.newGClosure

    -- | Wrap a `WidgetClassDeleteEventFieldCallback` into a `C_WidgetClassDeleteEventFieldCallback`.
    wrap_WidgetClassDeleteEventFieldCallback ::
        Maybe (Ptr (FunPtr C_WidgetClassDeleteEventFieldCallback)) ->
        WidgetClassDeleteEventFieldCallback ->
        C_WidgetClassDeleteEventFieldCallback
    wrap_WidgetClassDeleteEventFieldCallback :: Maybe (Ptr (FunPtr C_WidgetClassUnmapEventFieldCallback))
    -> WidgetClassUnmapEventFieldCallback
    -> C_WidgetClassUnmapEventFieldCallback
    wrap_WidgetClassDeleteEventFieldCallback Maybe (Ptr (FunPtr C_WidgetClassUnmapEventFieldCallback))
    gi'funptrptr WidgetClassUnmapEventFieldCallback
    gi'cb Ptr Widget
    widget Ptr EventAny
    event = do
        widget' <- ((ManagedPtr Widget -> Widget) -> Ptr Widget -> IO Widget
    forall a b.
    (HasCallStack, GObject a, GObject b) =>
    (ManagedPtr a -> a) -> Ptr b -> IO a
    newObject ManagedPtr Widget -> Widget
    Gtk.Widget.Widget) Ptr Widget
    widget
        event' <- (newPtr Gdk.EventAny.EventAny) event
        result <- gi'cb  widget' event'
        maybeReleaseFunPtr gi'funptrptr
        let result' = (Int -> CInt
    forall a b. (Integral a, Num b) => a -> b
    P.fromIntegral (Int -> CInt) -> (Bool -> Int) -> Bool -> CInt
    forall b c a. (b -> c) -> (a -> b) -> a -> c
    . Bool -> Int
    forall a. Enum a => a -> Int
    P.fromEnum) Bool
    result
        return result'

    -- callback WidgetClassDamageEventFieldCallback
    {- Callable
      { returnType = Just (TBasicType TBoolean)
      , returnMayBeNull = False
      , returnTransfer = TransferNothing
      , returnDocumentation =
          Documentation { rawDocText = Nothing , sinceVersion = Nothing }
      , args =
          [ Arg
              { argCName = "widget"
              , argType = TInterface Name { namespace = "Gtk" , name = "Widget" }
              , argCType = Just "GtkWidget*"
              , direction = DirectionIn
              , mayBeNull = False
              , argDoc =
                  Documentation { rawDocText = Nothing , sinceVersion = Nothing }
              , argScope = ScopeTypeInvalid
              , argClosure = -1
              , argDestroy = -1
              , argCallerAllocates = False
              , argCallbackUserData = False
              , transfer = TransferNothing
              }
          , Arg
              { argCName = "event"
              , argType =
                  TInterface Name { namespace = "Gdk" , name = "EventExpose" }
              , argCType = Just "GdkEventExpose*"
              , direction = DirectionIn
              , mayBeNull = False
              , argDoc =
                  Documentation { rawDocText = Nothing , sinceVersion = Nothing }
              , argScope = ScopeTypeInvalid
              , argClosure = -1
              , argDestroy = -1
              , argCallerAllocates = False
              , argCallbackUserData = False
              , transfer = TransferNothing
              }
          ]
      , skipReturn = False
      , callableThrows = False
      , callableDeprecated = Nothing
      , callableDocumentation =
          Documentation { rawDocText = Nothing , sinceVersion = Nothing }
      , callableResolvable = Nothing
      }
    -}
    -- | Type for the callback on the (unwrapped) C side.
    type C_WidgetClassDamageEventFieldCallback =
        Ptr Gtk.Widget.Widget ->
        Ptr Gdk.EventExpose.EventExpose ->
        IO CInt

    -- Args: [ Arg
    --           { argCName = "widget"
    --           , argType = TInterface Name { namespace = "Gtk" , name = "Widget" }
    --           , argCType = Just "GtkWidget*"
    --           , direction = DirectionIn
    --           , mayBeNull = False
    --           , argDoc =
    --               Documentation { rawDocText = Nothing , sinceVersion = Nothing }
    --           , argScope = ScopeTypeInvalid
    --           , argClosure = -1
    --           , argDestroy = -1
    --           , argCallerAllocates = False
    --           , argCallbackUserData = False
    --           , transfer = TransferNothing
    --           }
    --       , Arg
    --           { argCName = "event"
    --           , argType =
    --               TInterface Name { namespace = "Gdk" , name = "EventExpose" }
    --           , argCType = Just "GdkEventExpose*"
    --           , direction = DirectionIn
    --           , mayBeNull = False
    --           , argDoc =
    --               Documentation { rawDocText = Nothing , sinceVersion = Nothing }
    --           , argScope = ScopeTypeInvalid
    --           , argClosure = -1
    --           , argDestroy = -1
    --           , argCallerAllocates = False
    --           , argCallbackUserData = False
    --           , transfer = TransferNothing
    --           }
    --       ]
    -- Lengths: []
    -- returnType: Just (TBasicType TBoolean)
    -- throws : False
    -- Skip return : False

    foreign import ccall "dynamic" __dynamic_C_WidgetClassDamageEventFieldCallback :: FunPtr C_WidgetClassDamageEventFieldCallback -> C_WidgetClassDamageEventFieldCallback

    -- | Given a pointer to a foreign C function, wrap it into a function callable from Haskell.
    dynamic_WidgetClassDamageEventFieldCallback ::
        (B.CallStack.HasCallStack, MonadIO m, Gtk.Widget.IsWidget a) =>
        FunPtr C_WidgetClassDamageEventFieldCallback
        -> a
        -> Gdk.EventExpose.EventExpose
        -> m Bool
    dynamic_WidgetClassDamageEventFieldCallback :: forall (m :: * -> *) a.
    (HasCallStack, MonadIO m, IsWidget a) =>
    FunPtr C_WidgetClassDamageEventFieldCallback
    -> a -> EventExpose -> m Bool
    dynamic_WidgetClassDamageEventFieldCallback FunPtr C_WidgetClassDamageEventFieldCallback
    __funPtr a
    widget EventExpose
    event = IO Bool -> m Bool
    forall a. IO a -> m a
    forall (m :: * -> *) a. MonadIO m => IO a -> m a
    liftIO (IO Bool -> m Bool) -> IO Bool -> m Bool
    forall a b. (a -> b) -> a -> b
    $ do
        widget' <- a -> IO (Ptr Widget)
    forall a b. (HasCallStack, ManagedPtrNewtype a) => a -> IO (Ptr b)
    unsafeManagedPtrCastPtr a
    widget
        event' <- unsafeManagedPtrGetPtr event
        result <- (__dynamic_C_WidgetClassDamageEventFieldCallback __funPtr) widget' event'
        let result' = (CInt -> CInt -> Bool
    forall a. Eq a => a -> a -> Bool
    /= CInt
    0) CInt
    result
        touchManagedPtr widget
        touchManagedPtr event
        return result'

    -- | Generate a function pointer callable from C code, from a `C_WidgetClassDamageEventFieldCallback`.
    foreign import ccall "wrapper"
        mk_WidgetClassDamageEventFieldCallback :: C_WidgetClassDamageEventFieldCallback -> IO (FunPtr C_WidgetClassDamageEventFieldCallback)

    -- | /No description available in the introspection data./
    type WidgetClassDamageEventFieldCallback =
        Gtk.Widget.Widget
        -> Gdk.EventExpose.EventExpose
        -> IO Bool

    -- | A convenience synonym for @`Nothing` :: `Maybe` `WidgetClassDamageEventFieldCallback`@.
    noWidgetClassDamageEventFieldCallback :: Maybe WidgetClassDamageEventFieldCallback
    noWidgetClassDamageEventFieldCallback :: Maybe WidgetClassDamageEventFieldCallback
    noWidgetClassDamageEventFieldCallback = Maybe WidgetClassDamageEventFieldCallback
    forall a. Maybe a
    Nothing

    -- | Wrap the callback into a `GClosure`.
    genClosure_WidgetClassDamageEventFieldCallback :: MonadIO m => WidgetClassDamageEventFieldCallback -> m (GClosure C_WidgetClassDamageEventFieldCallback)
    genClosure_WidgetClassDamageEventFieldCallback :: forall (m :: * -> *).
    MonadIO m =>
    WidgetClassDamageEventFieldCallback
    -> m (GClosure C_WidgetClassDamageEventFieldCallback)
    genClosure_WidgetClassDamageEventFieldCallback WidgetClassDamageEventFieldCallback
    cb = IO (GClosure C_WidgetClassDamageEventFieldCallback)
    -> m (GClosure C_WidgetClassDamageEventFieldCallback)
    forall a. IO a -> m a
    forall (m :: * -> *) a. MonadIO m => IO a -> m a
    liftIO (IO (GClosure C_WidgetClassDamageEventFieldCallback)
     -> m (GClosure C_WidgetClassDamageEventFieldCallback))
    -> IO (GClosure C_WidgetClassDamageEventFieldCallback)
    -> m (GClosure C_WidgetClassDamageEventFieldCallback)
    forall a b. (a -> b) -> a -> b
    $ do
        let cb' :: C_WidgetClassDamageEventFieldCallback
    cb' = Maybe (Ptr (FunPtr C_WidgetClassDamageEventFieldCallback))
    -> WidgetClassDamageEventFieldCallback
    -> C_WidgetClassDamageEventFieldCallback
    wrap_WidgetClassDamageEventFieldCallback Maybe (Ptr (FunPtr C_WidgetClassDamageEventFieldCallback))
    forall a. Maybe a
    Nothing WidgetClassDamageEventFieldCallback
    cb
        C_WidgetClassDamageEventFieldCallback
    -> IO (FunPtr C_WidgetClassDamageEventFieldCallback)
    mk_WidgetClassDamageEventFieldCallback C_WidgetClassDamageEventFieldCallback
    cb' IO (FunPtr C_WidgetClassDamageEventFieldCallback)
    -> (FunPtr C_WidgetClassDamageEventFieldCallback
        -> IO (GClosure C_WidgetClassDamageEventFieldCallback))
    -> IO (GClosure C_WidgetClassDamageEventFieldCallback)
    forall a b. IO a -> (a -> IO b) -> IO b
    forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
    >>= FunPtr C_WidgetClassDamageEventFieldCallback
    -> IO (GClosure C_WidgetClassDamageEventFieldCallback)
    forall (m :: * -> *) a. MonadIO m => FunPtr a -> m (GClosure a)
    B.GClosure.newGClosure

    -- | Wrap a `WidgetClassDamageEventFieldCallback` into a `C_WidgetClassDamageEventFieldCallback`.
    wrap_WidgetClassDamageEventFieldCallback ::
        Maybe (Ptr (FunPtr C_WidgetClassDamageEventFieldCallback)) ->
        WidgetClassDamageEventFieldCallback ->
        C_WidgetClassDamageEventFieldCallback
    wrap_WidgetClassDamageEventFieldCallback :: Maybe (Ptr (FunPtr C_WidgetClassDamageEventFieldCallback))
    -> WidgetClassDamageEventFieldCallback
    -> C_WidgetClassDamageEventFieldCallback
    wrap_WidgetClassDamageEventFieldCallback Maybe (Ptr (FunPtr C_WidgetClassDamageEventFieldCallback))
    gi'funptrptr WidgetClassDamageEventFieldCallback
    gi'cb Ptr Widget
    widget Ptr EventExpose
    event = do
        widget' <- ((ManagedPtr Widget -> Widget) -> Ptr Widget -> IO Widget
    forall a b.
    (HasCallStack, GObject a, GObject b) =>
    (ManagedPtr a -> a) -> Ptr b -> IO a
    newObject ManagedPtr Widget -> Widget
    Gtk.Widget.Widget) Ptr Widget
    widget
        event' <- (newPtr Gdk.EventExpose.EventExpose) event
        result <- gi'cb  widget' event'
        maybeReleaseFunPtr gi'funptrptr
        let result' = (Int -> CInt
    forall a b. (Integral a, Num b) => a -> b
    P.fromIntegral (Int -> CInt) -> (Bool -> Int) -> Bool -> CInt
    forall b c a. (b -> c) -> (a -> b) -> a -> c
    . Bool -> Int
    forall a. Enum a => a -> Int
    P.fromEnum) Bool
    result
        return result'

    -- callback WidgetClassConfigureEventFieldCallback
    {- Callable
      { returnType = Just (TBasicType TBoolean)
      , returnMayBeNull = False
      , returnTransfer = TransferNothing
      , returnDocumentation =
          Documentation { rawDocText = Nothing , sinceVersion = Nothing }
      , args =
          [ Arg
              { argCName = "widget"
              , argType = TInterface Name { namespace = "Gtk" , name = "Widget" }
              , argCType = Just "GtkWidget*"
              , direction = DirectionIn
              , mayBeNull = False
              , argDoc =
                  Documentation { rawDocText = Nothing , sinceVersion = Nothing }
              , argScope = ScopeTypeInvalid
              , argClosure = -1
              , argDestroy = -1
              , argCallerAllocates = False
              , argCallbackUserData = False
              , transfer = TransferNothing
              }
          , Arg
              { argCName = "event"
              , argType =
                  TInterface Name { namespace = "Gdk" , name = "EventConfigure" }
              , argCType = Just "GdkEventConfigure*"
              , direction = DirectionIn
              , mayBeNull = False
              , argDoc =
                  Documentation { rawDocText = Nothing , sinceVersion = Nothing }
              , argScope = ScopeTypeInvalid
              , argClosure = -1
              , argDestroy = -1
              , argCallerAllocates = False
              , argCallbackUserData = False
              , transfer = TransferNothing
              }
          ]
      , skipReturn = False
      , callableThrows = False
      , callableDeprecated = Nothing
      , callableDocumentation =
          Documentation { rawDocText = Nothing , sinceVersion = Nothing }
      , callableResolvable = Nothing
      }
    -}
    -- | Type for the callback on the (unwrapped) C side.
    type C_WidgetClassConfigureEventFieldCallback =
        Ptr Gtk.Widget.Widget ->
        Ptr Gdk.EventConfigure.EventConfigure ->
        IO CInt

    -- Args: [ Arg
    --           { argCName = "widget"
    --           , argType = TInterface Name { namespace = "Gtk" , name = "Widget" }
    --           , argCType = Just "GtkWidget*"
    --           , direction = DirectionIn
    --           , mayBeNull = False
    --           , argDoc =
    --               Documentation { rawDocText = Nothing , sinceVersion = Nothing }
    --           , argScope = ScopeTypeInvalid
    --           , argClosure = -1
    --           , argDestroy = -1
    --           , argCallerAllocates = False
    --           , argCallbackUserData = False
    --           , transfer = TransferNothing
    --           }
    --       , Arg
    --           { argCName = "event"
    --           , argType =
    --               TInterface Name { namespace = "Gdk" , name = "EventConfigure" }
    --           , argCType = Just "GdkEventConfigure*"
    --           , direction = DirectionIn
    --           , mayBeNull = False
    --           , argDoc =
    --               Documentation { rawDocText = Nothing , sinceVersion = Nothing }
    --           , argScope = ScopeTypeInvalid
    --           , argClosure = -1
    --           , argDestroy = -1
    --           , argCallerAllocates = False
    --           , argCallbackUserData = False
    --           , transfer = TransferNothing
    --           }
    --       ]
    -- Lengths: []
    -- returnType: Just (TBasicType TBoolean)
    -- throws : False
    -- Skip return : False

    foreign import ccall "dynamic" __dynamic_C_WidgetClassConfigureEventFieldCallback :: FunPtr C_WidgetClassConfigureEventFieldCallback -> C_WidgetClassConfigureEventFieldCallback

    -- | Given a pointer to a foreign C function, wrap it into a function callable from Haskell.
    dynamic_WidgetClassConfigureEventFieldCallback ::
        (B.CallStack.HasCallStack, MonadIO m, Gtk.Widget.IsWidget a) =>
        FunPtr C_WidgetClassConfigureEventFieldCallback
        -> a
        -> Gdk.EventConfigure.EventConfigure
        -> m Bool
    dynamic_WidgetClassConfigureEventFieldCallback :: forall (m :: * -> *) a.
    (HasCallStack, MonadIO m, IsWidget a) =>
    FunPtr C_WidgetClassConfigureEventFieldCallback
    -> a -> EventConfigure -> m Bool
    dynamic_WidgetClassConfigureEventFieldCallback FunPtr C_WidgetClassConfigureEventFieldCallback
    __funPtr a
    widget EventConfigure
    event = IO Bool -> m Bool
    forall a. IO a -> m a
    forall (m :: * -> *) a. MonadIO m => IO a -> m a
    liftIO (IO Bool -> m Bool) -> IO Bool -> m Bool
    forall a b. (a -> b) -> a -> b
    $ do
        widget' <- a -> IO (Ptr Widget)
    forall a b. (HasCallStack, ManagedPtrNewtype a) => a -> IO (Ptr b)
    unsafeManagedPtrCastPtr a
    widget
        event' <- unsafeManagedPtrGetPtr event
        result <- (__dynamic_C_WidgetClassConfigureEventFieldCallback __funPtr) widget' event'
        let result' = (CInt -> CInt -> Bool
    forall a. Eq a => a -> a -> Bool
    /= CInt
    0) CInt
    result
        touchManagedPtr widget
        touchManagedPtr event
        return result'

    -- | Generate a function pointer callable from C code, from a `C_WidgetClassConfigureEventFieldCallback`.
    foreign import ccall "wrapper"
        mk_WidgetClassConfigureEventFieldCallback :: C_WidgetClassConfigureEventFieldCallback -> IO (FunPtr C_WidgetClassConfigureEventFieldCallback)

    -- | /No description available in the introspection data./
    type WidgetClassConfigureEventFieldCallback =
        Gtk.Widget.Widget
        -> Gdk.EventConfigure.EventConfigure
        -> IO Bool

    -- | A convenience synonym for @`Nothing` :: `Maybe` `WidgetClassConfigureEventFieldCallback`@.
    noWidgetClassConfigureEventFieldCallback :: Maybe WidgetClassConfigureEventFieldCallback
    noWidgetClassConfigureEventFieldCallback :: Maybe WidgetClassConfigureEventFieldCallback
    noWidgetClassConfigureEventFieldCallback = Maybe WidgetClassConfigureEventFieldCallback
    forall a. Maybe a
    Nothing

    -- | Wrap the callback into a `GClosure`.
    genClosure_WidgetClassConfigureEventFieldCallback :: MonadIO m => WidgetClassConfigureEventFieldCallback -> m (GClosure C_WidgetClassConfigureEventFieldCallback)
    genClosure_WidgetClassConfigureEventFieldCallback :: forall (m :: * -> *).
    MonadIO m =>
    WidgetClassConfigureEventFieldCallback
    -> m (GClosure C_WidgetClassConfigureEventFieldCallback)
    genClosure_WidgetClassConfigureEventFieldCallback WidgetClassConfigureEventFieldCallback
    cb = IO (GClosure C_WidgetClassConfigureEventFieldCallback)
    -> m (GClosure C_WidgetClassConfigureEventFieldCallback)
    forall a. IO a -> m a
    forall (m :: * -> *) a. MonadIO m => IO a -> m a
    liftIO (IO (GClosure C_WidgetClassConfigureEventFieldCallback)
     -> m (GClosure C_WidgetClassConfigureEventFieldCallback))
    -> IO (GClosure C_WidgetClassConfigureEventFieldCallback)
    -> m (GClosure C_WidgetClassConfigureEventFieldCallback)
    forall a b. (a -> b) -> a -> b
    $ do
        let cb' :: C_WidgetClassConfigureEventFieldCallback
    cb' = Maybe (Ptr (FunPtr C_WidgetClassConfigureEventFieldCallback))
    -> WidgetClassConfigureEventFieldCallback
    -> C_WidgetClassConfigureEventFieldCallback
    wrap_WidgetClassConfigureEventFieldCallback Maybe (Ptr (FunPtr C_WidgetClassConfigureEventFieldCallback))
    forall a. Maybe a
    Nothing WidgetClassConfigureEventFieldCallback
    cb
        C_WidgetClassConfigureEventFieldCallback
    -> IO (FunPtr C_WidgetClassConfigureEventFieldCallback)
    mk_WidgetClassConfigureEventFieldCallback C_WidgetClassConfigureEventFieldCallback
    cb' IO (FunPtr C_WidgetClassConfigureEventFieldCallback)
    -> (FunPtr C_WidgetClassConfigureEventFieldCallback
        -> IO (GClosure C_WidgetClassConfigureEventFieldCallback))
    -> IO (GClosure C_WidgetClassConfigureEventFieldCallback)
    forall a b. IO a -> (a -> IO b) -> IO b
    forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
    >>= FunPtr C_WidgetClassConfigureEventFieldCallback
    -> IO (GClosure C_WidgetClassConfigureEventFieldCallback)
    forall (m :: * -> *) a. MonadIO m => FunPtr a -> m (GClosure a)
    B.GClosure.newGClosure

    -- | Wrap a `WidgetClassConfigureEventFieldCallback` into a `C_WidgetClassConfigureEventFieldCallback`.
    wrap_WidgetClassConfigureEventFieldCallback ::
        Maybe (Ptr (FunPtr C_WidgetClassConfigureEventFieldCallback)) ->
        WidgetClassConfigureEventFieldCallback ->
        C_WidgetClassConfigureEventFieldCallback
    wrap_WidgetClassConfigureEventFieldCallback :: Maybe (Ptr (FunPtr C_WidgetClassConfigureEventFieldCallback))
    -> WidgetClassConfigureEventFieldCallback
    -> C_WidgetClassConfigureEventFieldCallback
    wrap_WidgetClassConfigureEventFieldCallback Maybe (Ptr (FunPtr C_WidgetClassConfigureEventFieldCallback))
    gi'funptrptr WidgetClassConfigureEventFieldCallback
    gi'cb Ptr Widget
    widget Ptr EventConfigure
    event = do
        widget' <- ((ManagedPtr Widget -> Widget) -> Ptr Widget -> IO Widget
    forall a b.
    (HasCallStack, GObject a, GObject b) =>
    (ManagedPtr a -> a) -> Ptr b -> IO a
    newObject ManagedPtr Widget -> Widget
    Gtk.Widget.Widget) Ptr Widget
    widget
        event' <- (newPtr Gdk.EventConfigure.EventConfigure) event
        result <- gi'cb  widget' event'
        maybeReleaseFunPtr gi'funptrptr
        let result' = (Int -> CInt
    forall a b. (Integral a, Num b) => a -> b
    P.fromIntegral (Int -> CInt) -> (Bool -> Int) -> Bool -> CInt
    forall b c a. (b -> c) -> (a -> b) -> a -> c
    . Bool -> Int
    forall a. Enum a => a -> Int
    P.fromEnum) Bool
    result
        return result'

    -- callback WidgetClassComputeExpandFieldCallback
    {- Callable
      { returnType = Nothing
      , returnMayBeNull = False
      , returnTransfer = TransferNothing
      , returnDocumentation =
          Documentation { rawDocText = Nothing , sinceVersion = Nothing }
      , args =
          [ Arg
              { argCName = "widget"
              , argType = TInterface Name { namespace = "Gtk" , name = "Widget" }
              , argCType = Just "GtkWidget*"
              , direction = DirectionIn
              , mayBeNull = False
              , argDoc =
                  Documentation { rawDocText = Nothing , sinceVersion = Nothing }
              , argScope = ScopeTypeInvalid
              , argClosure = -1
              , argDestroy = -1
              , argCallerAllocates = False
              , argCallbackUserData = False
              , transfer = TransferNothing
              }
          , Arg
              { argCName = "hexpand_p"
              , argType = TBasicType TBoolean
              , argCType = Just "gboolean*"
              , direction = DirectionIn
              , mayBeNull = False
              , argDoc =
                  Documentation { rawDocText = Nothing , sinceVersion = Nothing }
              , argScope = ScopeTypeInvalid
              , argClosure = -1
              , argDestroy = -1
              , argCallerAllocates = False
              , argCallbackUserData = False
              , transfer = TransferNothing
              }
          , Arg
              { argCName = "vexpand_p"
              , argType = TBasicType TBoolean
              , argCType = Just "gboolean*"
              , direction = DirectionIn
              , mayBeNull = False
              , argDoc =
                  Documentation { rawDocText = Nothing , sinceVersion = Nothing }
              , argScope = ScopeTypeInvalid
              , argClosure = -1
              , argDestroy = -1
              , argCallerAllocates = False
              , argCallbackUserData = False
              , transfer = TransferNothing
              }
          ]
      , skipReturn = False
      , callableThrows = False
      , callableDeprecated = Nothing
      , callableDocumentation =
          Documentation { rawDocText = Nothing , sinceVersion = Nothing }
      , callableResolvable = Nothing
      }
    -}
    -- | Type for the callback on the (unwrapped) C side.
    type C_WidgetClassComputeExpandFieldCallback =
        Ptr Gtk.Widget.Widget ->
        CInt ->
        CInt ->
        IO ()

    -- Args: [ Arg
    --           { argCName = "widget"
    --           , argType = TInterface Name { namespace = "Gtk" , name = "Widget" }
    --           , argCType = Just "GtkWidget*"
    --           , direction = DirectionIn
    --           , mayBeNull = False
    --           , argDoc =
    --               Documentation { rawDocText = Nothing , sinceVersion = Nothing }
    --           , argScope = ScopeTypeInvalid
    --           , argClosure = -1
    --           , argDestroy = -1
    --           , argCallerAllocates = False
    --           , argCallbackUserData = False
    --           , transfer = TransferNothing
    --           }
    --       , Arg
    --           { argCName = "hexpand_p"
    --           , argType = TBasicType TBoolean
    --           , argCType = Just "gboolean*"
    --           , direction = DirectionIn
    --           , mayBeNull = False
    --           , argDoc =
    --               Documentation { rawDocText = Nothing , sinceVersion = Nothing }
    --           , argScope = ScopeTypeInvalid
    --           , argClosure = -1
    --           , argDestroy = -1
    --           , argCallerAllocates = False
    --           , argCallbackUserData = False
    --           , transfer = TransferNothing
    --           }
    --       , Arg
    --           { argCName = "vexpand_p"
    --           , argType = TBasicType TBoolean
    --           , argCType = Just "gboolean*"
    --           , direction = DirectionIn
    --           , mayBeNull = False
    --           , argDoc =
    --               Documentation { rawDocText = Nothing , sinceVersion = Nothing }
    --           , argScope = ScopeTypeInvalid
    --           , argClosure = -1
    --           , argDestroy = -1
    --           , argCallerAllocates = False
    --           , argCallbackUserData = False
    --           , transfer = TransferNothing
    --           }
    --       ]
    -- Lengths: []
    -- returnType: Nothing
    -- throws : False
    -- Skip return : False

    foreign import ccall "dynamic" __dynamic_C_WidgetClassComputeExpandFieldCallback :: FunPtr C_WidgetClassComputeExpandFieldCallback -> C_WidgetClassComputeExpandFieldCallback

    -- | Given a pointer to a foreign C function, wrap it into a function callable from Haskell.
    dynamic_WidgetClassComputeExpandFieldCallback ::
        (B.CallStack.HasCallStack, MonadIO m, Gtk.Widget.IsWidget a) =>
        FunPtr C_WidgetClassComputeExpandFieldCallback
        -> a
        -> Bool
        -> Bool
        -> m ()
    dynamic_WidgetClassComputeExpandFieldCallback :: forall (m :: * -> *) a.
    (HasCallStack, MonadIO m, IsWidget a) =>
    FunPtr C_WidgetClassComputeExpandFieldCallback
    -> a -> Bool -> Bool -> m ()
    dynamic_WidgetClassComputeExpandFieldCallback FunPtr C_WidgetClassComputeExpandFieldCallback
    __funPtr a
    widget Bool
    hexpandP Bool
    vexpandP = IO () -> m ()
    forall a. IO a -> m a
    forall (m :: * -> *) a. MonadIO m => IO a -> m a
    liftIO (IO () -> m ()) -> IO () -> m ()
    forall a b. (a -> b) -> a -> b
    $ do
        widget' <- a -> IO (Ptr Widget)
    forall a b. (HasCallStack, ManagedPtrNewtype a) => a -> IO (Ptr b)
    unsafeManagedPtrCastPtr a
    widget
        let hexpandP' = (Int -> CInt
    forall a b. (Integral a, Num b) => a -> b
    P.fromIntegral (Int -> CInt) -> (Bool -> Int) -> Bool -> CInt
    forall b c a. (b -> c) -> (a -> b) -> a -> c
    . Bool -> Int
    forall a. Enum a => a -> Int
    P.fromEnum) Bool
    hexpandP
        let vexpandP' = (Int -> CInt
    forall a b. (Integral a, Num b) => a -> b
    P.fromIntegral (Int -> CInt) -> (Bool -> Int) -> Bool -> CInt
    forall b c a. (b -> c) -> (a -> b) -> a -> c
    . Bool -> Int
    forall a. Enum a => a -> Int
    P.fromEnum) Bool
    vexpandP
        (__dynamic_C_WidgetClassComputeExpandFieldCallback __funPtr) widget' hexpandP' vexpandP'
        touchManagedPtr widget
        return ()

    -- | Generate a function pointer callable from C code, from a `C_WidgetClassComputeExpandFieldCallback`.
    foreign import ccall "wrapper"
        mk_WidgetClassComputeExpandFieldCallback :: C_WidgetClassComputeExpandFieldCallback -> IO (FunPtr C_WidgetClassComputeExpandFieldCallback)

    -- | /No description available in the introspection data./
    type WidgetClassComputeExpandFieldCallback =
        Gtk.Widget.Widget
        -> Bool
        -> Bool
        -> IO ()

    -- | A convenience synonym for @`Nothing` :: `Maybe` `WidgetClassComputeExpandFieldCallback`@.
    noWidgetClassComputeExpandFieldCallback :: Maybe WidgetClassComputeExpandFieldCallback
    noWidgetClassComputeExpandFieldCallback :: Maybe WidgetClassComputeExpandFieldCallback
    noWidgetClassComputeExpandFieldCallback = Maybe WidgetClassComputeExpandFieldCallback
    forall a. Maybe a
    Nothing

    -- | Wrap the callback into a `GClosure`.
    genClosure_WidgetClassComputeExpandFieldCallback :: MonadIO m => WidgetClassComputeExpandFieldCallback -> m (GClosure C_WidgetClassComputeExpandFieldCallback)
    genClosure_WidgetClassComputeExpandFieldCallback :: forall (m :: * -> *).
    MonadIO m =>
    WidgetClassComputeExpandFieldCallback
    -> m (GClosure C_WidgetClassComputeExpandFieldCallback)
    genClosure_WidgetClassComputeExpandFieldCallback WidgetClassComputeExpandFieldCallback
    cb = IO (GClosure C_WidgetClassComputeExpandFieldCallback)
    -> m (GClosure C_WidgetClassComputeExpandFieldCallback)
    forall a. IO a -> m a
    forall (m :: * -> *) a. MonadIO m => IO a -> m a
    liftIO (IO (GClosure C_WidgetClassComputeExpandFieldCallback)
     -> m (GClosure C_WidgetClassComputeExpandFieldCallback))
    -> IO (GClosure C_WidgetClassComputeExpandFieldCallback)
    -> m (GClosure C_WidgetClassComputeExpandFieldCallback)
    forall a b. (a -> b) -> a -> b
    $ do
        let cb' :: C_WidgetClassComputeExpandFieldCallback
    cb' = Maybe (Ptr (FunPtr C_WidgetClassComputeExpandFieldCallback))
    -> WidgetClassComputeExpandFieldCallback
    -> C_WidgetClassComputeExpandFieldCallback
    wrap_WidgetClassComputeExpandFieldCallback Maybe (Ptr (FunPtr C_WidgetClassComputeExpandFieldCallback))
    forall a. Maybe a
    Nothing WidgetClassComputeExpandFieldCallback
    cb
        C_WidgetClassComputeExpandFieldCallback
    -> IO (FunPtr C_WidgetClassComputeExpandFieldCallback)
    mk_WidgetClassComputeExpandFieldCallback C_WidgetClassComputeExpandFieldCallback
    cb' IO (FunPtr C_WidgetClassComputeExpandFieldCallback)
    -> (FunPtr C_WidgetClassComputeExpandFieldCallback
        -> IO (GClosure C_WidgetClassComputeExpandFieldCallback))
    -> IO (GClosure C_WidgetClassComputeExpandFieldCallback)
    forall a b. IO a -> (a -> IO b) -> IO b
    forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
    >>= FunPtr C_WidgetClassComputeExpandFieldCallback
    -> IO (GClosure C_WidgetClassComputeExpandFieldCallback)
    forall (m :: * -> *) a. MonadIO m => FunPtr a -> m (GClosure a)
    B.GClosure.newGClosure

    -- | Wrap a `WidgetClassComputeExpandFieldCallback` into a `C_WidgetClassComputeExpandFieldCallback`.
    wrap_WidgetClassComputeExpandFieldCallback ::
        Maybe (Ptr (FunPtr C_WidgetClassComputeExpandFieldCallback)) ->
        WidgetClassComputeExpandFieldCallback ->
        C_WidgetClassComputeExpandFieldCallback
    wrap_WidgetClassComputeExpandFieldCallback :: Maybe (Ptr (FunPtr C_WidgetClassComputeExpandFieldCallback))
    -> WidgetClassComputeExpandFieldCallback
    -> C_WidgetClassComputeExpandFieldCallback
    wrap_WidgetClassComputeExpandFieldCallback Maybe (Ptr (FunPtr C_WidgetClassComputeExpandFieldCallback))
    gi'funptrptr WidgetClassComputeExpandFieldCallback
    gi'cb Ptr Widget
    widget CInt
    hexpandP CInt
    vexpandP = do
        widget' <- ((ManagedPtr Widget -> Widget) -> Ptr Widget -> IO Widget
    forall a b.
    (HasCallStack, GObject a, GObject b) =>
    (ManagedPtr a -> a) -> Ptr b -> IO a
    newObject ManagedPtr Widget -> Widget
    Gtk.Widget.Widget) Ptr Widget
    widget
        let hexpandP' = (CInt -> CInt -> Bool
    forall a. Eq a => a -> a -> Bool
    /= CInt
    0) CInt
    hexpandP
        let vexpandP' = (CInt -> CInt -> Bool
    forall a. Eq a => a -> a -> Bool
    /= CInt
    0) CInt
    vexpandP
        gi'cb  widget' hexpandP' vexpandP'
        maybeReleaseFunPtr gi'funptrptr

    -- callback WidgetClassCompositedChangedFieldCallback
    {- Callable
      { returnType = Nothing
      , returnMayBeNull = False
      , returnTransfer = TransferNothing
      , returnDocumentation =
          Documentation { rawDocText = Nothing , sinceVersion = Nothing }
      , args =
          [ Arg
              { argCName = "widget"
              , argType = TInterface Name { namespace = "Gtk" , name = "Widget" }
              , argCType = Just "GtkWidget*"
              , direction = DirectionIn
              , mayBeNull = False
              , argDoc =
                  Documentation { rawDocText = Nothing , sinceVersion = Nothing }
              , argScope = ScopeTypeInvalid
              , argClosure = -1
              , argDestroy = -1
              , argCallerAllocates = False
              , argCallbackUserData = False
              , transfer = TransferNothing
              }
          ]
      , skipReturn = False
      , callableThrows = False
      , callableDeprecated = Nothing
      , callableDocumentation =
          Documentation { rawDocText = Nothing , sinceVersion = Nothing }
      , callableResolvable = Nothing
      }
    -}
    -- | Type for the callback on the (unwrapped) C side.
    type C_WidgetClassCompositedChangedFieldCallback =
        Ptr Gtk.Widget.Widget ->
        IO ()

    -- Args: [ Arg
    --           { argCName = "widget"
    --           , argType = TInterface Name { namespace = "Gtk" , name = "Widget" }
    --           , argCType = Just "GtkWidget*"
    --           , direction = DirectionIn
    --           , mayBeNull = False
    --           , argDoc =
    --               Documentation { rawDocText = Nothing , sinceVersion = Nothing }
    --           , argScope = ScopeTypeInvalid
    --           , argClosure = -1
    --           , argDestroy = -1
    --           , argCallerAllocates = False
    --           , argCallbackUserData = False
    --           , transfer = TransferNothing
    --           }
    --       ]
    -- Lengths: []
    -- returnType: Nothing
    -- throws : False
    -- Skip return : False

    foreign import ccall "dynamic" __dynamic_C_WidgetClassCompositedChangedFieldCallback :: FunPtr C_WidgetClassCompositedChangedFieldCallback -> C_WidgetClassCompositedChangedFieldCallback

    -- | Given a pointer to a foreign C function, wrap it into a function callable from Haskell.
    dynamic_WidgetClassCompositedChangedFieldCallback ::
        (B.CallStack.HasCallStack, MonadIO m, Gtk.Widget.IsWidget a) =>
        FunPtr C_WidgetClassCompositedChangedFieldCallback
        -> a
        -> m ()
    dynamic_WidgetClassCompositedChangedFieldCallback :: forall (m :: * -> *) a.
    (HasCallStack, MonadIO m, IsWidget a) =>
    FunPtr C_WidgetClassUnrealizeFieldCallback -> a -> m ()
    dynamic_WidgetClassCompositedChangedFieldCallback FunPtr C_WidgetClassUnrealizeFieldCallback
    __funPtr a
    widget = IO () -> m ()
    forall a. IO a -> m a
    forall (m :: * -> *) a. MonadIO m => IO a -> m a
    liftIO (IO () -> m ()) -> IO () -> m ()
    forall a b. (a -> b) -> a -> b
    $ do
        widget' <- a -> IO (Ptr Widget)
    forall a b. (HasCallStack, ManagedPtrNewtype a) => a -> IO (Ptr b)
    unsafeManagedPtrCastPtr a
    widget
        (__dynamic_C_WidgetClassCompositedChangedFieldCallback __funPtr) widget'
        touchManagedPtr widget
        return ()

    -- | Generate a function pointer callable from C code, from a `C_WidgetClassCompositedChangedFieldCallback`.
    foreign import ccall "wrapper"
        mk_WidgetClassCompositedChangedFieldCallback :: C_WidgetClassCompositedChangedFieldCallback -> IO (FunPtr C_WidgetClassCompositedChangedFieldCallback)

    -- | /No description available in the introspection data./
    type WidgetClassCompositedChangedFieldCallback =
        Gtk.Widget.Widget
        -> IO ()

    -- | A convenience synonym for @`Nothing` :: `Maybe` `WidgetClassCompositedChangedFieldCallback`@.
    noWidgetClassCompositedChangedFieldCallback :: Maybe WidgetClassCompositedChangedFieldCallback
    noWidgetClassCompositedChangedFieldCallback :: Maybe WidgetClassUnrealizeFieldCallback
    noWidgetClassCompositedChangedFieldCallback = Maybe WidgetClassUnrealizeFieldCallback
    forall a. Maybe a
    Nothing

    -- | Wrap the callback into a `GClosure`.
    genClosure_WidgetClassCompositedChangedFieldCallback :: MonadIO m => WidgetClassCompositedChangedFieldCallback -> m (GClosure C_WidgetClassCompositedChangedFieldCallback)
    genClosure_WidgetClassCompositedChangedFieldCallback :: forall (m :: * -> *).
    MonadIO m =>
    WidgetClassUnrealizeFieldCallback
    -> m (GClosure C_WidgetClassUnrealizeFieldCallback)
    genClosure_WidgetClassCompositedChangedFieldCallback WidgetClassUnrealizeFieldCallback
    cb = IO (GClosure C_WidgetClassUnrealizeFieldCallback)
    -> m (GClosure C_WidgetClassUnrealizeFieldCallback)
    forall a. IO a -> m a
    forall (m :: * -> *) a. MonadIO m => IO a -> m a
    liftIO (IO (GClosure C_WidgetClassUnrealizeFieldCallback)
     -> m (GClosure C_WidgetClassUnrealizeFieldCallback))
    -> IO (GClosure C_WidgetClassUnrealizeFieldCallback)
    -> m (GClosure C_WidgetClassUnrealizeFieldCallback)
    forall a b. (a -> b) -> a -> b
    $ do
        let cb' :: C_WidgetClassUnrealizeFieldCallback
    cb' = Maybe (Ptr (FunPtr C_WidgetClassUnrealizeFieldCallback))
    -> WidgetClassUnrealizeFieldCallback
    -> C_WidgetClassUnrealizeFieldCallback
    wrap_WidgetClassCompositedChangedFieldCallback Maybe (Ptr (FunPtr C_WidgetClassUnrealizeFieldCallback))
    forall a. Maybe a
    Nothing WidgetClassUnrealizeFieldCallback
    cb
        C_WidgetClassUnrealizeFieldCallback
    -> IO (FunPtr C_WidgetClassUnrealizeFieldCallback)
    mk_WidgetClassCompositedChangedFieldCallback C_WidgetClassUnrealizeFieldCallback
    cb' IO (FunPtr C_WidgetClassUnrealizeFieldCallback)
    -> (FunPtr C_WidgetClassUnrealizeFieldCallback
        -> IO (GClosure C_WidgetClassUnrealizeFieldCallback))
    -> IO (GClosure C_WidgetClassUnrealizeFieldCallback)
    forall a b. IO a -> (a -> IO b) -> IO b
    forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
    >>= FunPtr C_WidgetClassUnrealizeFieldCallback
    -> IO (GClosure C_WidgetClassUnrealizeFieldCallback)
    forall (m :: * -> *) a. MonadIO m => FunPtr a -> m (GClosure a)
    B.GClosure.newGClosure

    -- | Wrap a `WidgetClassCompositedChangedFieldCallback` into a `C_WidgetClassCompositedChangedFieldCallback`.
    wrap_WidgetClassCompositedChangedFieldCallback ::
        Maybe (Ptr (FunPtr C_WidgetClassCompositedChangedFieldCallback)) ->
        WidgetClassCompositedChangedFieldCallback ->
        C_WidgetClassCompositedChangedFieldCallback
    wrap_WidgetClassCompositedChangedFieldCallback :: Maybe (Ptr (FunPtr C_WidgetClassUnrealizeFieldCallback))
    -> WidgetClassUnrealizeFieldCallback
    -> C_WidgetClassUnrealizeFieldCallback
    wrap_WidgetClassCompositedChangedFieldCallback Maybe (Ptr (FunPtr C_WidgetClassUnrealizeFieldCallback))
    gi'funptrptr WidgetClassUnrealizeFieldCallback
    gi'cb Ptr Widget
    widget = do
        widget' <- ((ManagedPtr Widget -> Widget) -> Ptr Widget -> IO Widget
    forall a b.
    (HasCallStack, GObject a, GObject b) =>
    (ManagedPtr a -> a) -> Ptr b -> IO a
    newObject ManagedPtr Widget -> Widget
    Gtk.Widget.Widget) Ptr Widget
    widget
        gi'cb  widget'
        maybeReleaseFunPtr gi'funptrptr

    -- callback WidgetClassChildNotifyFieldCallback
    {- Callable
      { returnType = Nothing
      , returnMayBeNull = False
      , returnTransfer = TransferNothing
      , returnDocumentation =
          Documentation { rawDocText = Nothing , sinceVersion = Nothing }
      , args =
          [ Arg
              { argCName = "widget"
              , argType = TInterface Name { namespace = "Gtk" , name = "Widget" }
              , argCType = Just "GtkWidget*"
              , direction = DirectionIn
              , mayBeNull = False
              , argDoc =
                  Documentation
                    { rawDocText = Just "a #GtkWidget" , sinceVersion = Nothing }
              , argScope = ScopeTypeInvalid
              , argClosure = -1
              , argDestroy = -1
              , argCallerAllocates = False
              , argCallbackUserData = False
              , transfer = TransferNothing
              }
          , Arg
              { argCName = "child_property"
              , argType = TParamSpec
              , argCType = Just "GParamSpec*"
              , direction = DirectionIn
              , mayBeNull = False
              , argDoc =
                  Documentation
                    { rawDocText =
                        Just
                          "the name of a child property installed on the\n                 class of @widget\8217s parent"
                    , sinceVersion = Nothing
                    }
              , argScope = ScopeTypeInvalid
              , argClosure = -1
              , argDestroy = -1
              , argCallerAllocates = False
              , argCallbackUserData = False
              , transfer = TransferNothing
              }
          ]
      , skipReturn = False
      , callableThrows = False
      , callableDeprecated = Nothing
      , callableDocumentation =
          Documentation { rawDocText = Nothing , sinceVersion = Nothing }
      , callableResolvable = Nothing
      }
    -}
    -- | Type for the callback on the (unwrapped) C side.
    type C_WidgetClassChildNotifyFieldCallback =
        Ptr Gtk.Widget.Widget ->
        Ptr GParamSpec ->
        IO ()

    -- Args: [ Arg
    --           { argCName = "widget"
    --           , argType = TInterface Name { namespace = "Gtk" , name = "Widget" }
    --           , argCType = Just "GtkWidget*"
    --           , direction = DirectionIn
    --           , mayBeNull = False
    --           , argDoc =
    --               Documentation
    --                 { rawDocText = Just "a #GtkWidget" , sinceVersion = Nothing }
    --           , argScope = ScopeTypeInvalid
    --           , argClosure = -1
    --           , argDestroy = -1
    --           , argCallerAllocates = False
    --           , argCallbackUserData = False
    --           , transfer = TransferNothing
    --           }
    --       , Arg
    --           { argCName = "child_property"
    --           , argType = TParamSpec
    --           , argCType = Just "GParamSpec*"
    --           , direction = DirectionIn
    --           , mayBeNull = False
    --           , argDoc =
    --               Documentation
    --                 { rawDocText =
    --                     Just
    --                       "the name of a child property installed on the\n                 class of @widget\8217s parent"
    --                 , sinceVersion = Nothing
    --                 }
    --           , argScope = ScopeTypeInvalid
    --           , argClosure = -1
    --           , argDestroy = -1
    --           , argCallerAllocates = False
    --           , argCallbackUserData = False
    --           , transfer = TransferNothing
    --           }
    --       ]
    -- Lengths: []
    -- returnType: Nothing
    -- throws : False
    -- Skip return : False

    foreign import ccall "dynamic" __dynamic_C_WidgetClassChildNotifyFieldCallback :: FunPtr C_WidgetClassChildNotifyFieldCallback -> C_WidgetClassChildNotifyFieldCallback

    -- | Given a pointer to a foreign C function, wrap it into a function callable from Haskell.
    dynamic_WidgetClassChildNotifyFieldCallback ::
        (B.CallStack.HasCallStack, MonadIO m, Gtk.Widget.IsWidget a) =>
        FunPtr C_WidgetClassChildNotifyFieldCallback
        -> a
        -- ^ /@widget@/: a t'GI.Gtk.Objects.Widget.Widget'
        -> GParamSpec
        -- ^ /@childProperty@/: the name of a child property installed on the
        --                  class of /@widget@/’s parent
        -> m ()
    dynamic_WidgetClassChildNotifyFieldCallback :: forall (m :: * -> *) a.
    (HasCallStack, MonadIO m, IsWidget a) =>
    FunPtr C_WidgetClassChildNotifyFieldCallback
    -> a -> GParamSpec -> m ()
    dynamic_WidgetClassChildNotifyFieldCallback FunPtr C_WidgetClassChildNotifyFieldCallback
    __funPtr a
    widget GParamSpec
    childProperty = IO () -> m ()
    forall a. IO a -> m a
    forall (m :: * -> *) a. MonadIO m => IO a -> m a
    liftIO (IO () -> m ()) -> IO () -> m ()
    forall a b. (a -> b) -> a -> b
    $ do
        widget' <- a -> IO (Ptr Widget)
    forall a b. (HasCallStack, ManagedPtrNewtype a) => a -> IO (Ptr b)
    unsafeManagedPtrCastPtr a
    widget
        childProperty' <- unsafeManagedPtrGetPtr childProperty
        (__dynamic_C_WidgetClassChildNotifyFieldCallback __funPtr) widget' childProperty'
        touchManagedPtr widget
        touchManagedPtr childProperty
        return ()

    -- | Generate a function pointer callable from C code, from a `C_WidgetClassChildNotifyFieldCallback`.
    foreign import ccall "wrapper"
        mk_WidgetClassChildNotifyFieldCallback :: C_WidgetClassChildNotifyFieldCallback -> IO (FunPtr C_WidgetClassChildNotifyFieldCallback)

    -- | /No description available in the introspection data./
    type WidgetClassChildNotifyFieldCallback =
        Gtk.Widget.Widget
        -- ^ /@widget@/: a t'GI.Gtk.Objects.Widget.Widget'
        -> GParamSpec
        -- ^ /@childProperty@/: the name of a child property installed on the
        --                  class of /@widget@/’s parent
        -> IO ()

    -- | A convenience synonym for @`Nothing` :: `Maybe` `WidgetClassChildNotifyFieldCallback`@.
    noWidgetClassChildNotifyFieldCallback :: Maybe WidgetClassChildNotifyFieldCallback
    noWidgetClassChildNotifyFieldCallback :: Maybe WidgetClassChildNotifyFieldCallback
    noWidgetClassChildNotifyFieldCallback = Maybe WidgetClassChildNotifyFieldCallback
    forall a. Maybe a
    Nothing

    -- | Wrap the callback into a `GClosure`.
    genClosure_WidgetClassChildNotifyFieldCallback :: MonadIO m => WidgetClassChildNotifyFieldCallback -> m (GClosure C_WidgetClassChildNotifyFieldCallback)
    genClosure_WidgetClassChildNotifyFieldCallback :: forall (m :: * -> *).
    MonadIO m =>
    WidgetClassChildNotifyFieldCallback
    -> m (GClosure C_WidgetClassChildNotifyFieldCallback)
    genClosure_WidgetClassChildNotifyFieldCallback WidgetClassChildNotifyFieldCallback
    cb = IO (GClosure C_WidgetClassChildNotifyFieldCallback)
    -> m (GClosure C_WidgetClassChildNotifyFieldCallback)
    forall a. IO a -> m a
    forall (m :: * -> *) a. MonadIO m => IO a -> m a
    liftIO (IO (GClosure C_WidgetClassChildNotifyFieldCallback)
     -> m (GClosure C_WidgetClassChildNotifyFieldCallback))
    -> IO (GClosure C_WidgetClassChildNotifyFieldCallback)
    -> m (GClosure C_WidgetClassChildNotifyFieldCallback)
    forall a b. (a -> b) -> a -> b
    $ do
        let cb' :: C_WidgetClassChildNotifyFieldCallback
    cb' = Maybe (Ptr (FunPtr C_WidgetClassChildNotifyFieldCallback))
    -> WidgetClassChildNotifyFieldCallback
    -> C_WidgetClassChildNotifyFieldCallback
    wrap_WidgetClassChildNotifyFieldCallback Maybe (Ptr (FunPtr C_WidgetClassChildNotifyFieldCallback))
    forall a. Maybe a
    Nothing WidgetClassChildNotifyFieldCallback
    cb
        C_WidgetClassChildNotifyFieldCallback
    -> IO (FunPtr C_WidgetClassChildNotifyFieldCallback)
    mk_WidgetClassChildNotifyFieldCallback C_WidgetClassChildNotifyFieldCallback
    cb' IO (FunPtr C_WidgetClassChildNotifyFieldCallback)
    -> (FunPtr C_WidgetClassChildNotifyFieldCallback
        -> IO (GClosure C_WidgetClassChildNotifyFieldCallback))
    -> IO (GClosure C_WidgetClassChildNotifyFieldCallback)
    forall a b. IO a -> (a -> IO b) -> IO b
    forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
    >>= FunPtr C_WidgetClassChildNotifyFieldCallback
    -> IO (GClosure C_WidgetClassChildNotifyFieldCallback)
    forall (m :: * -> *) a. MonadIO m => FunPtr a -> m (GClosure a)
    B.GClosure.newGClosure

    -- | Wrap a `WidgetClassChildNotifyFieldCallback` into a `C_WidgetClassChildNotifyFieldCallback`.
    wrap_WidgetClassChildNotifyFieldCallback ::
        Maybe (Ptr (FunPtr C_WidgetClassChildNotifyFieldCallback)) ->
        WidgetClassChildNotifyFieldCallback ->
        C_WidgetClassChildNotifyFieldCallback
    wrap_WidgetClassChildNotifyFieldCallback :: Maybe (Ptr (FunPtr C_WidgetClassChildNotifyFieldCallback))
    -> WidgetClassChildNotifyFieldCallback
    -> C_WidgetClassChildNotifyFieldCallback
    wrap_WidgetClassChildNotifyFieldCallback Maybe (Ptr (FunPtr C_WidgetClassChildNotifyFieldCallback))
    gi'funptrptr WidgetClassChildNotifyFieldCallback
    gi'cb Ptr Widget
    widget Ptr GParamSpec
    childProperty = do
        widget' <- ((ManagedPtr Widget -> Widget) -> Ptr Widget -> IO Widget
    forall a b.
    (HasCallStack, GObject a, GObject b) =>
    (ManagedPtr a -> a) -> Ptr b -> IO a
    newObject ManagedPtr Widget -> Widget
    Gtk.Widget.Widget) Ptr Widget
    widget
        childProperty' <- B.GParamSpec.newGParamSpecFromPtr childProperty
        gi'cb  widget' childProperty'
        maybeReleaseFunPtr gi'funptrptr

    -- callback WidgetClassCanActivateAccelFieldCallback
    {- Callable
      { returnType = Just (TBasicType TBoolean)
      , returnMayBeNull = False
      , returnTransfer = TransferNothing
      , returnDocumentation =
          Documentation
            { rawDocText = Just "%TRUE if the accelerator can be activated."
            , sinceVersion = Nothing
            }
      , args =
          [ Arg
              { argCName = "widget"
              , argType = TInterface Name { namespace = "Gtk" , name = "Widget" }
              , argCType = Just "GtkWidget*"
              , direction = DirectionIn
              , mayBeNull = False
              , argDoc =
                  Documentation
                    { rawDocText = Just "a #GtkWidget" , sinceVersion = Nothing }
              , argScope = ScopeTypeInvalid
              , argClosure = -1
              , argDestroy = -1
              , argCallerAllocates = False
              , argCallbackUserData = False
              , transfer = TransferNothing
              }
          , Arg
              { argCName = "signal_id"
              , argType = TBasicType TUInt
              , argCType = Just "guint"
              , direction = DirectionIn
              , mayBeNull = False
              , argDoc =
                  Documentation
                    { rawDocText = Just "the ID of a signal installed on @widget"
                    , sinceVersion = Nothing
                    }
              , argScope = ScopeTypeInvalid
              , argClosure = -1
              , argDestroy = -1
              , argCallerAllocates = False
              , argCallbackUserData = False
              , transfer = TransferNothing
              }
          ]
      , skipReturn = False
      , callableThrows = False
      , callableDeprecated = Nothing
      , callableDocumentation =
          Documentation { rawDocText = Nothing , sinceVersion = Nothing }
      , callableResolvable = Nothing
      }
    -}
    -- | Type for the callback on the (unwrapped) C side.
    type C_WidgetClassCanActivateAccelFieldCallback =
        Ptr Gtk.Widget.Widget ->
        Word32 ->
        IO CInt

    -- Args: [ Arg
    --           { argCName = "widget"
    --           , argType = TInterface Name { namespace = "Gtk" , name = "Widget" }
    --           , argCType = Just "GtkWidget*"
    --           , direction = DirectionIn
    --           , mayBeNull = False
    --           , argDoc =
    --               Documentation
    --                 { rawDocText = Just "a #GtkWidget" , sinceVersion = Nothing }
    --           , argScope = ScopeTypeInvalid
    --           , argClosure = -1
    --           , argDestroy = -1
    --           , argCallerAllocates = False
    --           , argCallbackUserData = False
    --           , transfer = TransferNothing
    --           }
    --       , Arg
    --           { argCName = "signal_id"
    --           , argType = TBasicType TUInt
    --           , argCType = Just "guint"
    --           , direction = DirectionIn
    --           , mayBeNull = False
    --           , argDoc =
    --               Documentation
    --                 { rawDocText = Just "the ID of a signal installed on @widget"
    --                 , sinceVersion = Nothing
    --                 }
    --           , argScope = ScopeTypeInvalid
    --           , argClosure = -1
    --           , argDestroy = -1
    --           , argCallerAllocates = False
    --           , argCallbackUserData = False
    --           , transfer = TransferNothing
    --           }
    --       ]
    -- Lengths: []
    -- returnType: Just (TBasicType TBoolean)
    -- throws : False
    -- Skip return : False

    foreign import ccall "dynamic" __dynamic_C_WidgetClassCanActivateAccelFieldCallback :: FunPtr C_WidgetClassCanActivateAccelFieldCallback -> C_WidgetClassCanActivateAccelFieldCallback

    -- | Given a pointer to a foreign C function, wrap it into a function callable from Haskell.
    dynamic_WidgetClassCanActivateAccelFieldCallback ::
        (B.CallStack.HasCallStack, MonadIO m, Gtk.Widget.IsWidget a) =>
        FunPtr C_WidgetClassCanActivateAccelFieldCallback
        -> a
        -- ^ /@widget@/: a t'GI.Gtk.Objects.Widget.Widget'
        -> Word32
        -- ^ /@signalId@/: the ID of a signal installed on /@widget@/
        -> m Bool
        -- ^ __Returns:__ 'P.True' if the accelerator can be activated.
    dynamic_WidgetClassCanActivateAccelFieldCallback :: forall (m :: * -> *) a.
    (HasCallStack, MonadIO m, IsWidget a) =>
    FunPtr C_WidgetClassCanActivateAccelFieldCallback
    -> a -> Word32 -> m Bool
    dynamic_WidgetClassCanActivateAccelFieldCallback FunPtr C_WidgetClassCanActivateAccelFieldCallback
    __funPtr a
    widget Word32
    signalId = IO Bool -> m Bool
    forall a. IO a -> m a
    forall (m :: * -> *) a. MonadIO m => IO a -> m a
    liftIO (IO Bool -> m Bool) -> IO Bool -> m Bool
    forall a b. (a -> b) -> a -> b
    $ do
        widget' <- a -> IO (Ptr Widget)
    forall a b. (HasCallStack, ManagedPtrNewtype a) => a -> IO (Ptr b)
    unsafeManagedPtrCastPtr a
    widget
        result <- (__dynamic_C_WidgetClassCanActivateAccelFieldCallback __funPtr) widget' signalId
        let result' = (CInt -> CInt -> Bool
    forall a. Eq a => a -> a -> Bool
    /= CInt
    0) CInt
    result
        touchManagedPtr widget
        return result'

    -- | Generate a function pointer callable from C code, from a `C_WidgetClassCanActivateAccelFieldCallback`.
    foreign import ccall "wrapper"
        mk_WidgetClassCanActivateAccelFieldCallback :: C_WidgetClassCanActivateAccelFieldCallback -> IO (FunPtr C_WidgetClassCanActivateAccelFieldCallback)

    -- | /No description available in the introspection data./
    type WidgetClassCanActivateAccelFieldCallback =
        Gtk.Widget.Widget
        -- ^ /@widget@/: a t'GI.Gtk.Objects.Widget.Widget'
        -> Word32
        -- ^ /@signalId@/: the ID of a signal installed on /@widget@/
        -> IO Bool
        -- ^ __Returns:__ 'P.True' if the accelerator can be activated.

    -- | A convenience synonym for @`Nothing` :: `Maybe` `WidgetClassCanActivateAccelFieldCallback`@.
    noWidgetClassCanActivateAccelFieldCallback :: Maybe WidgetClassCanActivateAccelFieldCallback
    noWidgetClassCanActivateAccelFieldCallback :: Maybe WidgetClassCanActivateAccelFieldCallback
    noWidgetClassCanActivateAccelFieldCallback = Maybe WidgetClassCanActivateAccelFieldCallback
    forall a. Maybe a
    Nothing

    -- | Wrap the callback into a `GClosure`.
    genClosure_WidgetClassCanActivateAccelFieldCallback :: MonadIO m => WidgetClassCanActivateAccelFieldCallback -> m (GClosure C_WidgetClassCanActivateAccelFieldCallback)
    genClosure_WidgetClassCanActivateAccelFieldCallback :: forall (m :: * -> *).
    MonadIO m =>
    WidgetClassCanActivateAccelFieldCallback
    -> m (GClosure C_WidgetClassCanActivateAccelFieldCallback)
    genClosure_WidgetClassCanActivateAccelFieldCallback WidgetClassCanActivateAccelFieldCallback
    cb = IO (GClosure C_WidgetClassCanActivateAccelFieldCallback)
    -> m (GClosure C_WidgetClassCanActivateAccelFieldCallback)
    forall a. IO a -> m a
    forall (m :: * -> *) a. MonadIO m => IO a -> m a
    liftIO (IO (GClosure C_WidgetClassCanActivateAccelFieldCallback)
     -> m (GClosure C_WidgetClassCanActivateAccelFieldCallback))
    -> IO (GClosure C_WidgetClassCanActivateAccelFieldCallback)
    -> m (GClosure C_WidgetClassCanActivateAccelFieldCallback)
    forall a b. (a -> b) -> a -> b
    $ do
        let cb' :: C_WidgetClassCanActivateAccelFieldCallback
    cb' = Maybe (Ptr (FunPtr C_WidgetClassCanActivateAccelFieldCallback))
    -> WidgetClassCanActivateAccelFieldCallback
    -> C_WidgetClassCanActivateAccelFieldCallback
    wrap_WidgetClassCanActivateAccelFieldCallback Maybe (Ptr (FunPtr C_WidgetClassCanActivateAccelFieldCallback))
    forall a. Maybe a
    Nothing WidgetClassCanActivateAccelFieldCallback
    cb
        C_WidgetClassCanActivateAccelFieldCallback
    -> IO (FunPtr C_WidgetClassCanActivateAccelFieldCallback)
    mk_WidgetClassCanActivateAccelFieldCallback C_WidgetClassCanActivateAccelFieldCallback
    cb' IO (FunPtr C_WidgetClassCanActivateAccelFieldCallback)
    -> (FunPtr C_WidgetClassCanActivateAccelFieldCallback
        -> IO (GClosure C_WidgetClassCanActivateAccelFieldCallback))
    -> IO (GClosure C_WidgetClassCanActivateAccelFieldCallback)
    forall a b. IO a -> (a -> IO b) -> IO b
    forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
    >>= FunPtr C_WidgetClassCanActivateAccelFieldCallback
    -> IO (GClosure C_WidgetClassCanActivateAccelFieldCallback)
    forall (m :: * -> *) a. MonadIO m => FunPtr a -> m (GClosure a)
    B.GClosure.newGClosure

    -- | Wrap a `WidgetClassCanActivateAccelFieldCallback` into a `C_WidgetClassCanActivateAccelFieldCallback`.
    wrap_WidgetClassCanActivateAccelFieldCallback ::
        Maybe (Ptr (FunPtr C_WidgetClassCanActivateAccelFieldCallback)) ->
        WidgetClassCanActivateAccelFieldCallback ->
        C_WidgetClassCanActivateAccelFieldCallback
    wrap_WidgetClassCanActivateAccelFieldCallback :: Maybe (Ptr (FunPtr C_WidgetClassCanActivateAccelFieldCallback))
    -> WidgetClassCanActivateAccelFieldCallback
    -> C_WidgetClassCanActivateAccelFieldCallback
    wrap_WidgetClassCanActivateAccelFieldCallback Maybe (Ptr (FunPtr C_WidgetClassCanActivateAccelFieldCallback))
    gi'funptrptr WidgetClassCanActivateAccelFieldCallback
    gi'cb Ptr Widget
    widget Word32
    signalId = do
        widget' <- ((ManagedPtr Widget -> Widget) -> Ptr Widget -> IO Widget
    forall a b.
    (HasCallStack, GObject a, GObject b) =>
    (ManagedPtr a -> a) -> Ptr b -> IO a
    newObject ManagedPtr Widget -> Widget
    Gtk.Widget.Widget) Ptr Widget
    widget
        result <- gi'cb  widget' signalId
        maybeReleaseFunPtr gi'funptrptr
        let result' = (Int -> CInt
    forall a b. (Integral a, Num b) => a -> b
    P.fromIntegral (Int -> CInt) -> (Bool -> Int) -> Bool -> CInt
    forall b c a. (b -> c) -> (a -> b) -> a -> c
    . Bool -> Int
    forall a. Enum a => a -> Int
    P.fromEnum) Bool
    result
        return result'

    -- callback WidgetClassButtonReleaseEventFieldCallback
    {- Callable
      { returnType = Just (TBasicType TBoolean)
      , returnMayBeNull = False
      , returnTransfer = TransferNothing
      , returnDocumentation =
          Documentation { rawDocText = Nothing , sinceVersion = Nothing }
      , args =
          [ Arg
              { argCName = "widget"
              , argType = TInterface Name { namespace = "Gtk" , name = "Widget" }
              , argCType = Just "GtkWidget*"
              , direction = DirectionIn
              , mayBeNull = False
              , argDoc =
                  Documentation { rawDocText = Nothing , sinceVersion = Nothing }
              , argScope = ScopeTypeInvalid
              , argClosure = -1
              , argDestroy = -1
              , argCallerAllocates = False
              , argCallbackUserData = False
              , transfer = TransferNothing
              }
          , Arg
              { argCName = "event"
              , argType =
                  TInterface Name { namespace = "Gdk" , name = "EventButton" }
              , argCType = Just "GdkEventButton*"
              , direction = DirectionIn
              , mayBeNull = False
              , argDoc =
                  Documentation { rawDocText = Nothing , sinceVersion = Nothing }
              , argScope = ScopeTypeInvalid
              , argClosure = -1
              , argDestroy = -1
              , argCallerAllocates = False
              , argCallbackUserData = False
              , transfer = TransferNothing
              }
          ]
      , skipReturn = False
      , callableThrows = False
      , callableDeprecated = Nothing
      , callableDocumentation =
          Documentation { rawDocText = Nothing , sinceVersion = Nothing }
      , callableResolvable = Nothing
      }
    -}
    -- | Type for the callback on the (unwrapped) C side.
    type C_WidgetClassButtonReleaseEventFieldCallback =
        Ptr Gtk.Widget.Widget ->
        Ptr Gdk.EventButton.EventButton ->
        IO CInt

    -- Args: [ Arg
    --           { argCName = "widget"
    --           , argType = TInterface Name { namespace = "Gtk" , name = "Widget" }
    --           , argCType = Just "GtkWidget*"
    --           , direction = DirectionIn
    --           , mayBeNull = False
    --           , argDoc =
    --               Documentation { rawDocText = Nothing , sinceVersion = Nothing }
    --           , argScope = ScopeTypeInvalid
    --           , argClosure = -1
    --           , argDestroy = -1
    --           , argCallerAllocates = False
    --           , argCallbackUserData = False
    --           , transfer = TransferNothing
    --           }
    --       , Arg
    --           { argCName = "event"
    --           , argType =
    --               TInterface Name { namespace = "Gdk" , name = "EventButton" }
    --           , argCType = Just "GdkEventButton*"
    --           , direction = DirectionIn
    --           , mayBeNull = False
    --           , argDoc =
    --               Documentation { rawDocText = Nothing , sinceVersion = Nothing }
    --           , argScope = ScopeTypeInvalid
    --           , argClosure = -1
    --           , argDestroy = -1
    --           , argCallerAllocates = False
    --           , argCallbackUserData = False
    --           , transfer = TransferNothing
    --           }
    --       ]
    -- Lengths: []
    -- returnType: Just (TBasicType TBoolean)
    -- throws : False
    -- Skip return : False

    foreign import ccall "dynamic" __dynamic_C_WidgetClassButtonReleaseEventFieldCallback :: FunPtr C_WidgetClassButtonReleaseEventFieldCallback -> C_WidgetClassButtonReleaseEventFieldCallback

    -- | Given a pointer to a foreign C function, wrap it into a function callable from Haskell.
    dynamic_WidgetClassButtonReleaseEventFieldCallback ::
        (B.CallStack.HasCallStack, MonadIO m, Gtk.Widget.IsWidget a) =>
        FunPtr C_WidgetClassButtonReleaseEventFieldCallback
        -> a
        -> Gdk.EventButton.EventButton
        -> m Bool
    dynamic_WidgetClassButtonReleaseEventFieldCallback :: forall (m :: * -> *) a.
    (HasCallStack, MonadIO m, IsWidget a) =>
    FunPtr C_WidgetClassButtonReleaseEventFieldCallback
    -> a -> EventButton -> m Bool
    dynamic_WidgetClassButtonReleaseEventFieldCallback FunPtr C_WidgetClassButtonReleaseEventFieldCallback
    __funPtr a
    widget EventButton
    event = IO Bool -> m Bool
    forall a. IO a -> m a
    forall (m :: * -> *) a. MonadIO m => IO a -> m a
    liftIO (IO Bool -> m Bool) -> IO Bool -> m Bool
    forall a b. (a -> b) -> a -> b
    $ do
        widget' <- a -> IO (Ptr Widget)
    forall a b. (HasCallStack, ManagedPtrNewtype a) => a -> IO (Ptr b)
    unsafeManagedPtrCastPtr a
    widget
        event' <- unsafeManagedPtrGetPtr event
        result <- (__dynamic_C_WidgetClassButtonReleaseEventFieldCallback __funPtr) widget' event'
        let result' = (CInt -> CInt -> Bool
    forall a. Eq a => a -> a -> Bool
    /= CInt
    0) CInt
    result
        touchManagedPtr widget
        touchManagedPtr event
        return result'

    -- | Generate a function pointer callable from C code, from a `C_WidgetClassButtonReleaseEventFieldCallback`.
    foreign import ccall "wrapper"
        mk_WidgetClassButtonReleaseEventFieldCallback :: C_WidgetClassButtonReleaseEventFieldCallback -> IO (FunPtr C_WidgetClassButtonReleaseEventFieldCallback)

    -- | /No description available in the introspection data./
    type WidgetClassButtonReleaseEventFieldCallback =
        Gtk.Widget.Widget
        -> Gdk.EventButton.EventButton
        -> IO Bool

    -- | A convenience synonym for @`Nothing` :: `Maybe` `WidgetClassButtonReleaseEventFieldCallback`@.
    noWidgetClassButtonReleaseEventFieldCallback :: Maybe WidgetClassButtonReleaseEventFieldCallback
    noWidgetClassButtonReleaseEventFieldCallback :: Maybe WidgetClassButtonReleaseEventFieldCallback
    noWidgetClassButtonReleaseEventFieldCallback = Maybe WidgetClassButtonReleaseEventFieldCallback
    forall a. Maybe a
    Nothing

    -- | Wrap the callback into a `GClosure`.
    genClosure_WidgetClassButtonReleaseEventFieldCallback :: MonadIO m => WidgetClassButtonReleaseEventFieldCallback -> m (GClosure C_WidgetClassButtonReleaseEventFieldCallback)
    genClosure_WidgetClassButtonReleaseEventFieldCallback :: forall (m :: * -> *).
    MonadIO m =>
    WidgetClassButtonReleaseEventFieldCallback
    -> m (GClosure C_WidgetClassButtonReleaseEventFieldCallback)
    genClosure_WidgetClassButtonReleaseEventFieldCallback WidgetClassButtonReleaseEventFieldCallback
    cb = IO (GClosure C_WidgetClassButtonReleaseEventFieldCallback)
    -> m (GClosure C_WidgetClassButtonReleaseEventFieldCallback)
    forall a. IO a -> m a
    forall (m :: * -> *) a. MonadIO m => IO a -> m a
    liftIO (IO (GClosure C_WidgetClassButtonReleaseEventFieldCallback)
     -> m (GClosure C_WidgetClassButtonReleaseEventFieldCallback))
    -> IO (GClosure C_WidgetClassButtonReleaseEventFieldCallback)
    -> m (GClosure C_WidgetClassButtonReleaseEventFieldCallback)
    forall a b. (a -> b) -> a -> b
    $ do
        let cb' :: C_WidgetClassButtonReleaseEventFieldCallback
    cb' = Maybe (Ptr (FunPtr C_WidgetClassButtonReleaseEventFieldCallback))
    -> WidgetClassButtonReleaseEventFieldCallback
    -> C_WidgetClassButtonReleaseEventFieldCallback
    wrap_WidgetClassButtonReleaseEventFieldCallback Maybe (Ptr (FunPtr C_WidgetClassButtonReleaseEventFieldCallback))
    forall a. Maybe a
    Nothing WidgetClassButtonReleaseEventFieldCallback
    cb
        C_WidgetClassButtonReleaseEventFieldCallback
    -> IO (FunPtr C_WidgetClassButtonReleaseEventFieldCallback)
    mk_WidgetClassButtonReleaseEventFieldCallback C_WidgetClassButtonReleaseEventFieldCallback
    cb' IO (FunPtr C_WidgetClassButtonReleaseEventFieldCallback)
    -> (FunPtr C_WidgetClassButtonReleaseEventFieldCallback
        -> IO (GClosure C_WidgetClassButtonReleaseEventFieldCallback))
    -> IO (GClosure C_WidgetClassButtonReleaseEventFieldCallback)
    forall a b. IO a -> (a -> IO b) -> IO b
    forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
    >>= FunPtr C_WidgetClassButtonReleaseEventFieldCallback
    -> IO (GClosure C_WidgetClassButtonReleaseEventFieldCallback)
    forall (m :: * -> *) a. MonadIO m => FunPtr a -> m (GClosure a)
    B.GClosure.newGClosure

    -- | Wrap a `WidgetClassButtonReleaseEventFieldCallback` into a `C_WidgetClassButtonReleaseEventFieldCallback`.
    wrap_WidgetClassButtonReleaseEventFieldCallback ::
        Maybe (Ptr (FunPtr C_WidgetClassButtonReleaseEventFieldCallback)) ->
        WidgetClassButtonReleaseEventFieldCallback ->
        C_WidgetClassButtonReleaseEventFieldCallback
    wrap_WidgetClassButtonReleaseEventFieldCallback :: Maybe (Ptr (FunPtr C_WidgetClassButtonReleaseEventFieldCallback))
    -> WidgetClassButtonReleaseEventFieldCallback
    -> C_WidgetClassButtonReleaseEventFieldCallback
    wrap_WidgetClassButtonReleaseEventFieldCallback Maybe (Ptr (FunPtr C_WidgetClassButtonReleaseEventFieldCallback))
    gi'funptrptr WidgetClassButtonReleaseEventFieldCallback
    gi'cb Ptr Widget
    widget Ptr EventButton
    event = do
        widget' <- ((ManagedPtr Widget -> Widget) -> Ptr Widget -> IO Widget
    forall a b.
    (HasCallStack, GObject a, GObject b) =>
    (ManagedPtr a -> a) -> Ptr b -> IO a
    newObject ManagedPtr Widget -> Widget
    Gtk.Widget.Widget) Ptr Widget
    widget
        event' <- (newPtr Gdk.EventButton.EventButton) event
        result <- gi'cb  widget' event'
        maybeReleaseFunPtr gi'funptrptr
        let result' = (Int -> CInt
    forall a b. (Integral a, Num b) => a -> b
    P.fromIntegral (Int -> CInt) -> (Bool -> Int) -> Bool -> CInt
    forall b c a. (b -> c) -> (a -> b) -> a -> c
    . Bool -> Int
    forall a. Enum a => a -> Int
    P.fromEnum) Bool
    result
        return result'

    -- callback WidgetClassButtonPressEventFieldCallback
    {- Callable
      { returnType = Just (TBasicType TBoolean)
      , returnMayBeNull = False
      , returnTransfer = TransferNothing
      , returnDocumentation =
          Documentation { rawDocText = Nothing , sinceVersion = Nothing }
      , args =
          [ Arg
              { argCName = "widget"
              , argType = TInterface Name { namespace = "Gtk" , name = "Widget" }
              , argCType = Just "GtkWidget*"
              , direction = DirectionIn
              , mayBeNull = False
              , argDoc =
                  Documentation { rawDocText = Nothing , sinceVersion = Nothing }
              , argScope = ScopeTypeInvalid
              , argClosure = -1
              , argDestroy = -1
              , argCallerAllocates = False
              , argCallbackUserData = False
              , transfer = TransferNothing
              }
          , Arg
              { argCName = "event"
              , argType =
                  TInterface Name { namespace = "Gdk" , name = "EventButton" }
              , argCType = Just "GdkEventButton*"
              , direction = DirectionIn
              , mayBeNull = False
              , argDoc =
                  Documentation { rawDocText = Nothing , sinceVersion = Nothing }
              , argScope = ScopeTypeInvalid
              , argClosure = -1
              , argDestroy = -1
              , argCallerAllocates = False
              , argCallbackUserData = False
              , transfer = TransferNothing
              }
          ]
      , skipReturn = False
      , callableThrows = False
      , callableDeprecated = Nothing
      , callableDocumentation =
          Documentation { rawDocText = Nothing , sinceVersion = Nothing }
      , callableResolvable = Nothing
      }
    -}
    -- | Type for the callback on the (unwrapped) C side.
    type C_WidgetClassButtonPressEventFieldCallback =
        Ptr Gtk.Widget.Widget ->
        Ptr Gdk.EventButton.EventButton ->
        IO CInt

    -- Args: [ Arg
    --           { argCName = "widget"
    --           , argType = TInterface Name { namespace = "Gtk" , name = "Widget" }
    --           , argCType = Just "GtkWidget*"
    --           , direction = DirectionIn
    --           , mayBeNull = False
    --           , argDoc =
    --               Documentation { rawDocText = Nothing , sinceVersion = Nothing }
    --           , argScope = ScopeTypeInvalid
    --           , argClosure = -1
    --           , argDestroy = -1
    --           , argCallerAllocates = False
    --           , argCallbackUserData = False
    --           , transfer = TransferNothing
    --           }
    --       , Arg
    --           { argCName = "event"
    --           , argType =
    --               TInterface Name { namespace = "Gdk" , name = "EventButton" }
    --           , argCType = Just "GdkEventButton*"
    --           , direction = DirectionIn
    --           , mayBeNull = False
    --           , argDoc =
    --               Documentation { rawDocText = Nothing , sinceVersion = Nothing }
    --           , argScope = ScopeTypeInvalid
    --           , argClosure = -1
    --           , argDestroy = -1
    --           , argCallerAllocates = False
    --           , argCallbackUserData = False
    --           , transfer = TransferNothing
    --           }
    --       ]
    -- Lengths: []
    -- returnType: Just (TBasicType TBoolean)
    -- throws : False
    -- Skip return : False

    foreign import ccall "dynamic" __dynamic_C_WidgetClassButtonPressEventFieldCallback :: FunPtr C_WidgetClassButtonPressEventFieldCallback -> C_WidgetClassButtonPressEventFieldCallback

    -- | Given a pointer to a foreign C function, wrap it into a function callable from Haskell.
    dynamic_WidgetClassButtonPressEventFieldCallback ::
        (B.CallStack.HasCallStack, MonadIO m, Gtk.Widget.IsWidget a) =>
        FunPtr C_WidgetClassButtonPressEventFieldCallback
        -> a
        -> Gdk.EventButton.EventButton
        -> m Bool
    dynamic_WidgetClassButtonPressEventFieldCallback :: forall (m :: * -> *) a.
    (HasCallStack, MonadIO m, IsWidget a) =>
    FunPtr C_WidgetClassButtonReleaseEventFieldCallback
    -> a -> EventButton -> m Bool
    dynamic_WidgetClassButtonPressEventFieldCallback FunPtr C_WidgetClassButtonReleaseEventFieldCallback
    __funPtr a
    widget EventButton
    event = IO Bool -> m Bool
    forall a. IO a -> m a
    forall (m :: * -> *) a. MonadIO m => IO a -> m a
    liftIO (IO Bool -> m Bool) -> IO Bool -> m Bool
    forall a b. (a -> b) -> a -> b
    $ do
        widget' <- a -> IO (Ptr Widget)
    forall a b. (HasCallStack, ManagedPtrNewtype a) => a -> IO (Ptr b)
    unsafeManagedPtrCastPtr a
    widget
        event' <- unsafeManagedPtrGetPtr event
        result <- (__dynamic_C_WidgetClassButtonPressEventFieldCallback __funPtr) widget' event'
        let result' = (CInt -> CInt -> Bool
    forall a. Eq a => a -> a -> Bool
    /= CInt
    0) CInt
    result
        touchManagedPtr widget
        touchManagedPtr event
        return result'

    -- | Generate a function pointer callable from C code, from a `C_WidgetClassButtonPressEventFieldCallback`.
    foreign import ccall "wrapper"
        mk_WidgetClassButtonPressEventFieldCallback :: C_WidgetClassButtonPressEventFieldCallback -> IO (FunPtr C_WidgetClassButtonPressEventFieldCallback)

    -- | /No description available in the introspection data./
    type WidgetClassButtonPressEventFieldCallback =
        Gtk.Widget.Widget
        -> Gdk.EventButton.EventButton
        -> IO Bool

    -- | A convenience synonym for @`Nothing` :: `Maybe` `WidgetClassButtonPressEventFieldCallback`@.
    noWidgetClassButtonPressEventFieldCallback :: Maybe WidgetClassButtonPressEventFieldCallback
    noWidgetClassButtonPressEventFieldCallback :: Maybe WidgetClassButtonReleaseEventFieldCallback
    noWidgetClassButtonPressEventFieldCallback = Maybe WidgetClassButtonReleaseEventFieldCallback
    forall a. Maybe a
    Nothing

    -- | Wrap the callback into a `GClosure`.
    genClosure_WidgetClassButtonPressEventFieldCallback :: MonadIO m => WidgetClassButtonPressEventFieldCallback -> m (GClosure C_WidgetClassButtonPressEventFieldCallback)
    genClosure_WidgetClassButtonPressEventFieldCallback :: forall (m :: * -> *).
    MonadIO m =>
    WidgetClassButtonReleaseEventFieldCallback
    -> m (GClosure C_WidgetClassButtonReleaseEventFieldCallback)
    genClosure_WidgetClassButtonPressEventFieldCallback WidgetClassButtonReleaseEventFieldCallback
    cb = IO (GClosure C_WidgetClassButtonReleaseEventFieldCallback)
    -> m (GClosure C_WidgetClassButtonReleaseEventFieldCallback)
    forall a. IO a -> m a
    forall (m :: * -> *) a. MonadIO m => IO a -> m a
    liftIO (IO (GClosure C_WidgetClassButtonReleaseEventFieldCallback)
     -> m (GClosure C_WidgetClassButtonReleaseEventFieldCallback))
    -> IO (GClosure C_WidgetClassButtonReleaseEventFieldCallback)
    -> m (GClosure C_WidgetClassButtonReleaseEventFieldCallback)
    forall a b. (a -> b) -> a -> b
    $ do
        let cb' :: C_WidgetClassButtonReleaseEventFieldCallback
    cb' = Maybe (Ptr (FunPtr C_WidgetClassButtonReleaseEventFieldCallback))
    -> WidgetClassButtonReleaseEventFieldCallback
    -> C_WidgetClassButtonReleaseEventFieldCallback
    wrap_WidgetClassButtonPressEventFieldCallback Maybe (Ptr (FunPtr C_WidgetClassButtonReleaseEventFieldCallback))
    forall a. Maybe a
    Nothing WidgetClassButtonReleaseEventFieldCallback
    cb
        C_WidgetClassButtonReleaseEventFieldCallback
    -> IO (FunPtr C_WidgetClassButtonReleaseEventFieldCallback)
    mk_WidgetClassButtonPressEventFieldCallback C_WidgetClassButtonReleaseEventFieldCallback
    cb' IO (FunPtr C_WidgetClassButtonReleaseEventFieldCallback)
    -> (FunPtr C_WidgetClassButtonReleaseEventFieldCallback
        -> IO (GClosure C_WidgetClassButtonReleaseEventFieldCallback))
    -> IO (GClosure C_WidgetClassButtonReleaseEventFieldCallback)
    forall a b. IO a -> (a -> IO b) -> IO b
    forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
    >>= FunPtr C_WidgetClassButtonReleaseEventFieldCallback
    -> IO (GClosure C_WidgetClassButtonReleaseEventFieldCallback)
    forall (m :: * -> *) a. MonadIO m => FunPtr a -> m (GClosure a)
    B.GClosure.newGClosure

    -- | Wrap a `WidgetClassButtonPressEventFieldCallback` into a `C_WidgetClassButtonPressEventFieldCallback`.
    wrap_WidgetClassButtonPressEventFieldCallback ::
        Maybe (Ptr (FunPtr C_WidgetClassButtonPressEventFieldCallback)) ->
        WidgetClassButtonPressEventFieldCallback ->
        C_WidgetClassButtonPressEventFieldCallback
    wrap_WidgetClassButtonPressEventFieldCallback :: Maybe (Ptr (FunPtr C_WidgetClassButtonReleaseEventFieldCallback))
    -> WidgetClassButtonReleaseEventFieldCallback
    -> C_WidgetClassButtonReleaseEventFieldCallback
    wrap_WidgetClassButtonPressEventFieldCallback Maybe (Ptr (FunPtr C_WidgetClassButtonReleaseEventFieldCallback))
    gi'funptrptr WidgetClassButtonReleaseEventFieldCallback
    gi'cb Ptr Widget
    widget Ptr EventButton
    event = do
        widget' <- ((ManagedPtr Widget -> Widget) -> Ptr Widget -> IO Widget
    forall a b.
    (HasCallStack, GObject a, GObject b) =>
    (ManagedPtr a -> a) -> Ptr b -> IO a
    newObject ManagedPtr Widget -> Widget
    Gtk.Widget.Widget) Ptr Widget
    widget
        event' <- (newPtr Gdk.EventButton.EventButton) event
        result <- gi'cb  widget' event'
        maybeReleaseFunPtr gi'funptrptr
        let result' = (Int -> CInt
    forall a b. (Integral a, Num b) => a -> b
    P.fromIntegral (Int -> CInt) -> (Bool -> Int) -> Bool -> CInt
    forall b c a. (b -> c) -> (a -> b) -> a -> c
    . Bool -> Int
    forall a. Enum a => a -> Int
    P.fromEnum) Bool
    result
        return result'

    -- callback WidgetClassAdjustSizeRequestFieldCallback
    {- Callable
      { returnType = Nothing
      , returnMayBeNull = False
      , returnTransfer = TransferNothing
      , returnDocumentation =
          Documentation { rawDocText = Nothing , sinceVersion = Nothing }
      , args =
          [ Arg
              { argCName = "widget"
              , argType = TInterface Name { namespace = "Gtk" , name = "Widget" }
              , argCType = Just "GtkWidget*"
              , direction = DirectionIn
              , mayBeNull = False
              , argDoc =
                  Documentation { rawDocText = Nothing , sinceVersion = Nothing }
              , argScope = ScopeTypeInvalid
              , argClosure = -1
              , argDestroy = -1
              , argCallerAllocates = False
              , argCallbackUserData = False
              , transfer = TransferNothing
              }
          , Arg
              { argCName = "orientation"
              , argType =
                  TInterface Name { namespace = "Gtk" , name = "Orientation" }
              , argCType = Just "GtkOrientation"
              , direction = DirectionIn
              , mayBeNull = False
              , argDoc =
                  Documentation { rawDocText = Nothing , sinceVersion = Nothing }
              , argScope = ScopeTypeInvalid
              , argClosure = -1
              , argDestroy = -1
              , argCallerAllocates = False
              , argCallbackUserData = False
              , transfer = TransferNothing
              }
          , Arg
              { argCName = "minimum_size"
              , argType = TBasicType TInt
              , argCType = Just "gint*"
              , direction = DirectionIn
              , mayBeNull = False
              , argDoc =
                  Documentation { rawDocText = Nothing , sinceVersion = Nothing }
              , argScope = ScopeTypeInvalid
              , argClosure = -1
              , argDestroy = -1
              , argCallerAllocates = False
              , argCallbackUserData = False
              , transfer = TransferNothing
              }
          , Arg
              { argCName = "natural_size"
              , argType = TBasicType TInt
              , argCType = Just "gint*"
              , direction = DirectionIn
              , mayBeNull = False
              , argDoc =
                  Documentation { rawDocText = Nothing , sinceVersion = Nothing }
              , argScope = ScopeTypeInvalid
              , argClosure = -1
              , argDestroy = -1
              , argCallerAllocates = False
              , argCallbackUserData = False
              , transfer = TransferNothing
              }
          ]
      , skipReturn = False
      , callableThrows = False
      , callableDeprecated = Nothing
      , callableDocumentation =
          Documentation { rawDocText = Nothing , sinceVersion = Nothing }
      , callableResolvable = Nothing
      }
    -}
    -- | Type for the callback on the (unwrapped) C side.
    type C_WidgetClassAdjustSizeRequestFieldCallback =
        Ptr Gtk.Widget.Widget ->
        CUInt ->
        Int32 ->
        Int32 ->
        IO ()

    -- Args: [ Arg
    --           { argCName = "widget"
    --           , argType = TInterface Name { namespace = "Gtk" , name = "Widget" }
    --           , argCType = Just "GtkWidget*"
    --           , direction = DirectionIn
    --           , mayBeNull = False
    --           , argDoc =
    --               Documentation { rawDocText = Nothing , sinceVersion = Nothing }
    --           , argScope = ScopeTypeInvalid
    --           , argClosure = -1
    --           , argDestroy = -1
    --           , argCallerAllocates = False
    --           , argCallbackUserData = False
    --           , transfer = TransferNothing
    --           }
    --       , Arg
    --           { argCName = "orientation"
    --           , argType =
    --               TInterface Name { namespace = "Gtk" , name = "Orientation" }
    --           , argCType = Just "GtkOrientation"
    --           , direction = DirectionIn
    --           , mayBeNull = False
    --           , argDoc =
    --               Documentation { rawDocText = Nothing , sinceVersion = Nothing }
    --           , argScope = ScopeTypeInvalid
    --           , argClosure = -1
    --           , argDestroy = -1
    --           , argCallerAllocates = False
    --           , argCallbackUserData = False
    --           , transfer = TransferNothing
    --           }
    --       , Arg
    --           { argCName = "minimum_size"
    --           , argType = TBasicType TInt
    --           , argCType = Just "gint*"
    --           , direction = DirectionIn
    --           , mayBeNull = False
    --           , argDoc =
    --               Documentation { rawDocText = Nothing , sinceVersion = Nothing }
    --           , argScope = ScopeTypeInvalid
    --           , argClosure = -1
    --           , argDestroy = -1
    --           , argCallerAllocates = False
    --           , argCallbackUserData = False
    --           , transfer = TransferNothing
    --           }
    --       , Arg
    --           { argCName = "natural_size"
    --           , argType = TBasicType TInt
    --           , argCType = Just "gint*"
    --           , direction = DirectionIn
    --           , mayBeNull = False
    --           , argDoc =
    --               Documentation { rawDocText = Nothing , sinceVersion = Nothing }
    --           , argScope = ScopeTypeInvalid
    --           , argClosure = -1
    --           , argDestroy = -1
    --           , argCallerAllocates = False
    --           , argCallbackUserData = False
    --           , transfer = TransferNothing
    --           }
    --       ]
    -- Lengths: []
    -- returnType: Nothing
    -- throws : False
    -- Skip return : False

    foreign import ccall "dynamic" __dynamic_C_WidgetClassAdjustSizeRequestFieldCallback :: FunPtr C_WidgetClassAdjustSizeRequestFieldCallback -> C_WidgetClassAdjustSizeRequestFieldCallback

    -- | Given a pointer to a foreign C function, wrap it into a function callable from Haskell.
    dynamic_WidgetClassAdjustSizeRequestFieldCallback ::
        (B.CallStack.HasCallStack, MonadIO m, Gtk.Widget.IsWidget a) =>
        FunPtr C_WidgetClassAdjustSizeRequestFieldCallback
        -> a
        -> Gtk.Enums.Orientation
        -> Int32
        -> Int32
        -> m ()
    dynamic_WidgetClassAdjustSizeRequestFieldCallback :: forall (m :: * -> *) a.
    (HasCallStack, MonadIO m, IsWidget a) =>
    FunPtr C_WidgetClassAdjustSizeRequestFieldCallback
    -> a -> Orientation -> Int32 -> Int32 -> m ()
    dynamic_WidgetClassAdjustSizeRequestFieldCallback FunPtr C_WidgetClassAdjustSizeRequestFieldCallback
    __funPtr a
    widget Orientation
    orientation Int32
    minimumSize Int32
    naturalSize = IO () -> m ()
    forall a. IO a -> m a
    forall (m :: * -> *) a. MonadIO m => IO a -> m a
    liftIO (IO () -> m ()) -> IO () -> m ()
    forall a b. (a -> b) -> a -> b
    $ do
        widget' <- a -> IO (Ptr Widget)
    forall a b. (HasCallStack, ManagedPtrNewtype a) => a -> IO (Ptr b)
    unsafeManagedPtrCastPtr a
    widget
        let orientation' = (Int -> CUInt
    forall a b. (Integral a, Num b) => a -> b
    fromIntegral (Int -> CUInt) -> (Orientation -> Int) -> Orientation -> CUInt
    forall b c a. (b -> c) -> (a -> b) -> a -> c
    . Orientation -> Int
    forall a. Enum a => a -> Int
    fromEnum) Orientation
    orientation
        (__dynamic_C_WidgetClassAdjustSizeRequestFieldCallback __funPtr) widget' orientation' minimumSize naturalSize
        touchManagedPtr widget
        return ()

    -- | Generate a function pointer callable from C code, from a `C_WidgetClassAdjustSizeRequestFieldCallback`.
    foreign import ccall "wrapper"
        mk_WidgetClassAdjustSizeRequestFieldCallback :: C_WidgetClassAdjustSizeRequestFieldCallback -> IO (FunPtr C_WidgetClassAdjustSizeRequestFieldCallback)

    -- | /No description available in the introspection data./
    type WidgetClassAdjustSizeRequestFieldCallback =
        Gtk.Widget.Widget
        -> Gtk.Enums.Orientation
        -> Int32
        -> Int32
        -> IO ()

    -- | A convenience synonym for @`Nothing` :: `Maybe` `WidgetClassAdjustSizeRequestFieldCallback`@.
    noWidgetClassAdjustSizeRequestFieldCallback :: Maybe WidgetClassAdjustSizeRequestFieldCallback
    noWidgetClassAdjustSizeRequestFieldCallback :: Maybe WidgetClassAdjustSizeRequestFieldCallback
    noWidgetClassAdjustSizeRequestFieldCallback = Maybe WidgetClassAdjustSizeRequestFieldCallback
    forall a. Maybe a
    Nothing

    -- | Wrap the callback into a `GClosure`.
    genClosure_WidgetClassAdjustSizeRequestFieldCallback :: MonadIO m => WidgetClassAdjustSizeRequestFieldCallback -> m (GClosure C_WidgetClassAdjustSizeRequestFieldCallback)
    genClosure_WidgetClassAdjustSizeRequestFieldCallback :: forall (m :: * -> *).
    MonadIO m =>
    WidgetClassAdjustSizeRequestFieldCallback
    -> m (GClosure C_WidgetClassAdjustSizeRequestFieldCallback)
    genClosure_WidgetClassAdjustSizeRequestFieldCallback WidgetClassAdjustSizeRequestFieldCallback
    cb = IO (GClosure C_WidgetClassAdjustSizeRequestFieldCallback)
    -> m (GClosure C_WidgetClassAdjustSizeRequestFieldCallback)
    forall a. IO a -> m a
    forall (m :: * -> *) a. MonadIO m => IO a -> m a
    liftIO (IO (GClosure C_WidgetClassAdjustSizeRequestFieldCallback)
     -> m (GClosure C_WidgetClassAdjustSizeRequestFieldCallback))
    -> IO (GClosure C_WidgetClassAdjustSizeRequestFieldCallback)
    -> m (GClosure C_WidgetClassAdjustSizeRequestFieldCallback)
    forall a b. (a -> b) -> a -> b
    $ do
        let cb' :: C_WidgetClassAdjustSizeRequestFieldCallback
    cb' = Maybe (Ptr (FunPtr C_WidgetClassAdjustSizeRequestFieldCallback))
    -> WidgetClassAdjustSizeRequestFieldCallback
    -> C_WidgetClassAdjustSizeRequestFieldCallback
    wrap_WidgetClassAdjustSizeRequestFieldCallback Maybe (Ptr (FunPtr C_WidgetClassAdjustSizeRequestFieldCallback))
    forall a. Maybe a
    Nothing WidgetClassAdjustSizeRequestFieldCallback
    cb
        C_WidgetClassAdjustSizeRequestFieldCallback
    -> IO (FunPtr C_WidgetClassAdjustSizeRequestFieldCallback)
    mk_WidgetClassAdjustSizeRequestFieldCallback C_WidgetClassAdjustSizeRequestFieldCallback
    cb' IO (FunPtr C_WidgetClassAdjustSizeRequestFieldCallback)
    -> (FunPtr C_WidgetClassAdjustSizeRequestFieldCallback
        -> IO (GClosure C_WidgetClassAdjustSizeRequestFieldCallback))
    -> IO (GClosure C_WidgetClassAdjustSizeRequestFieldCallback)
    forall a b. IO a -> (a -> IO b) -> IO b
    forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
    >>= FunPtr C_WidgetClassAdjustSizeRequestFieldCallback
    -> IO (GClosure C_WidgetClassAdjustSizeRequestFieldCallback)
    forall (m :: * -> *) a. MonadIO m => FunPtr a -> m (GClosure a)
    B.GClosure.newGClosure

    -- | Wrap a `WidgetClassAdjustSizeRequestFieldCallback` into a `C_WidgetClassAdjustSizeRequestFieldCallback`.
    wrap_WidgetClassAdjustSizeRequestFieldCallback ::
        Maybe (Ptr (FunPtr C_WidgetClassAdjustSizeRequestFieldCallback)) ->
        WidgetClassAdjustSizeRequestFieldCallback ->
        C_WidgetClassAdjustSizeRequestFieldCallback
    wrap_WidgetClassAdjustSizeRequestFieldCallback :: Maybe (Ptr (FunPtr C_WidgetClassAdjustSizeRequestFieldCallback))
    -> WidgetClassAdjustSizeRequestFieldCallback
    -> C_WidgetClassAdjustSizeRequestFieldCallback
    wrap_WidgetClassAdjustSizeRequestFieldCallback Maybe (Ptr (FunPtr C_WidgetClassAdjustSizeRequestFieldCallback))
    gi'funptrptr WidgetClassAdjustSizeRequestFieldCallback
    gi'cb Ptr Widget
    widget CUInt
    orientation Int32
    minimumSize Int32
    naturalSize = do
        widget' <- ((ManagedPtr Widget -> Widget) -> Ptr Widget -> IO Widget
    forall a b.
    (HasCallStack, GObject a, GObject b) =>
    (ManagedPtr a -> a) -> Ptr b -> IO a
    newObject ManagedPtr Widget -> Widget
    Gtk.Widget.Widget) Ptr Widget
    widget
        let orientation' = (Int -> Orientation
    forall a. Enum a => Int -> a
    toEnum (Int -> Orientation) -> (CUInt -> Int) -> CUInt -> Orientation
    forall b c a. (b -> c) -> (a -> b) -> a -> c
    . CUInt -> Int
    forall a b. (Integral a, Num b) => a -> b
    fromIntegral) CUInt
    orientation
        gi'cb  widget' orientation' minimumSize naturalSize
        maybeReleaseFunPtr gi'funptrptr

    -- callback WidgetClassAdjustSizeAllocationFieldCallback
    {- Callable
      { returnType = Nothing
      , returnMayBeNull = False
      , returnTransfer = TransferNothing
      , returnDocumentation =
          Documentation { rawDocText = Nothing , sinceVersion = Nothing }
      , args =
          [ Arg
              { argCName = "widget"
              , argType = TInterface Name { namespace = "Gtk" , name = "Widget" }
              , argCType = Just "GtkWidget*"
              , direction = DirectionIn
              , mayBeNull = False
              , argDoc =
                  Documentation { rawDocText = Nothing , sinceVersion = Nothing }
              , argScope = ScopeTypeInvalid
              , argClosure = -1
              , argDestroy = -1
              , argCallerAllocates = False
              , argCallbackUserData = False
              , transfer = TransferNothing
              }
          , Arg
              { argCName = "orientation"
              , argType =
                  TInterface Name { namespace = "Gtk" , name = "Orientation" }
              , argCType = Just "GtkOrientation"
              , direction = DirectionIn
              , mayBeNull = False
              , argDoc =
                  Documentation { rawDocText = Nothing , sinceVersion = Nothing }
              , argScope = ScopeTypeInvalid
              , argClosure = -1
              , argDestroy = -1
              , argCallerAllocates = False
              , argCallbackUserData = False
              , transfer = TransferNothing
              }
          , Arg
              { argCName = "minimum_size"
              , argType = TBasicType TInt
              , argCType = Just "gint*"
              , direction = DirectionIn
              , mayBeNull = False
              , argDoc =
                  Documentation { rawDocText = Nothing , sinceVersion = Nothing }
              , argScope = ScopeTypeInvalid
              , argClosure = -1
              , argDestroy = -1
              , argCallerAllocates = False
              , argCallbackUserData = False
              , transfer = TransferNothing
              }
          , Arg
              { argCName = "natural_size"
              , argType = TBasicType TInt
              , argCType = Just "gint*"
              , direction = DirectionIn
              , mayBeNull = False
              , argDoc =
                  Documentation { rawDocText = Nothing , sinceVersion = Nothing }
              , argScope = ScopeTypeInvalid
              , argClosure = -1
              , argDestroy = -1
              , argCallerAllocates = False
              , argCallbackUserData = False
              , transfer = TransferNothing
              }
          , Arg
              { argCName = "allocated_pos"
              , argType = TBasicType TInt
              , argCType = Just "gint*"
              , direction = DirectionIn
              , mayBeNull = False
              , argDoc =
                  Documentation { rawDocText = Nothing , sinceVersion = Nothing }
              , argScope = ScopeTypeInvalid
              , argClosure = -1
              , argDestroy = -1
              , argCallerAllocates = False
              , argCallbackUserData = False
              , transfer = TransferNothing
              }
          , Arg
              { argCName = "allocated_size"
              , argType = TBasicType TInt
              , argCType = Just "gint*"
              , direction = DirectionIn
              , mayBeNull = False
              , argDoc =
                  Documentation { rawDocText = Nothing , sinceVersion = Nothing }
              , argScope = ScopeTypeInvalid
              , argClosure = -1
              , argDestroy = -1
              , argCallerAllocates = False
              , argCallbackUserData = False
              , transfer = TransferNothing
              }
          ]
      , skipReturn = False
      , callableThrows = False
      , callableDeprecated = Nothing
      , callableDocumentation =
          Documentation { rawDocText = Nothing , sinceVersion = Nothing }
      , callableResolvable = Nothing
      }
    -}
    -- | Type for the callback on the (unwrapped) C side.
    type C_WidgetClassAdjustSizeAllocationFieldCallback =
        Ptr Gtk.Widget.Widget ->
        CUInt ->
        Int32 ->
        Int32 ->
        Int32 ->
        Int32 ->
        IO ()

    -- Args: [ Arg
    --           { argCName = "widget"
    --           , argType = TInterface Name { namespace = "Gtk" , name = "Widget" }
    --           , argCType = Just "GtkWidget*"
    --           , direction = DirectionIn
    --           , mayBeNull = False
    --           , argDoc =
    --               Documentation { rawDocText = Nothing , sinceVersion = Nothing }
    --           , argScope = ScopeTypeInvalid
    --           , argClosure = -1
    --           , argDestroy = -1
    --           , argCallerAllocates = False
    --           , argCallbackUserData = False
    --           , transfer = TransferNothing
    --           }
    --       , Arg
    --           { argCName = "orientation"
    --           , argType =
    --               TInterface Name { namespace = "Gtk" , name = "Orientation" }
    --           , argCType = Just "GtkOrientation"
    --           , direction = DirectionIn
    --           , mayBeNull = False
    --           , argDoc =
    --               Documentation { rawDocText = Nothing , sinceVersion = Nothing }
    --           , argScope = ScopeTypeInvalid
    --           , argClosure = -1
    --           , argDestroy = -1
    --           , argCallerAllocates = False
    --           , argCallbackUserData = False
    --           , transfer = TransferNothing
    --           }
    --       , Arg
    --           { argCName = "minimum_size"
    --           , argType = TBasicType TInt
    --           , argCType = Just "gint*"
    --           , direction = DirectionIn
    --           , mayBeNull = False
    --           , argDoc =
    --               Documentation { rawDocText = Nothing , sinceVersion = Nothing }
    --           , argScope = ScopeTypeInvalid
    --           , argClosure = -1
    --           , argDestroy = -1
    --           , argCallerAllocates = False
    --           , argCallbackUserData = False
    --           , transfer = TransferNothing
    --           }
    --       , Arg
    --           { argCName = "natural_size"
    --           , argType = TBasicType TInt
    --           , argCType = Just "gint*"
    --           , direction = DirectionIn
    --           , mayBeNull = False
    --           , argDoc =
    --               Documentation { rawDocText = Nothing , sinceVersion = Nothing }
    --           , argScope = ScopeTypeInvalid
    --           , argClosure = -1
    --           , argDestroy = -1
    --           , argCallerAllocates = False
    --           , argCallbackUserData = False
    --           , transfer = TransferNothing
    --           }
    --       , Arg
    --           { argCName = "allocated_pos"
    --           , argType = TBasicType TInt
    --           , argCType = Just "gint*"
    --           , direction = DirectionIn
    --           , mayBeNull = False
    --           , argDoc =
    --               Documentation { rawDocText = Nothing , sinceVersion = Nothing }
    --           , argScope = ScopeTypeInvalid
    --           , argClosure = -1
    --           , argDestroy = -1
    --           , argCallerAllocates = False
    --           , argCallbackUserData = False
    --           , transfer = TransferNothing
    --           }
    --       , Arg
    --           { argCName = "allocated_size"
    --           , argType = TBasicType TInt
    --           , argCType = Just "gint*"
    --           , direction = DirectionIn
    --           , mayBeNull = False
    --           , argDoc =
    --               Documentation { rawDocText = Nothing , sinceVersion = Nothing }
    --           , argScope = ScopeTypeInvalid
    --           , argClosure = -1
    --           , argDestroy = -1
    --           , argCallerAllocates = False
    --           , argCallbackUserData = False
    --           , transfer = TransferNothing
    --           }
    --       ]
    -- Lengths: []
    -- returnType: Nothing
    -- throws : False
    -- Skip return : False

    foreign import ccall "dynamic" __dynamic_C_WidgetClassAdjustSizeAllocationFieldCallback :: FunPtr C_WidgetClassAdjustSizeAllocationFieldCallback -> C_WidgetClassAdjustSizeAllocationFieldCallback

    -- | Given a pointer to a foreign C function, wrap it into a function callable from Haskell.
    dynamic_WidgetClassAdjustSizeAllocationFieldCallback ::
        (B.CallStack.HasCallStack, MonadIO m, Gtk.Widget.IsWidget a) =>
        FunPtr C_WidgetClassAdjustSizeAllocationFieldCallback
        -> a
        -> Gtk.Enums.Orientation
        -> Int32
        -> Int32
        -> Int32
        -> Int32
        -> m ()
    dynamic_WidgetClassAdjustSizeAllocationFieldCallback :: forall (m :: * -> *) a.
    (HasCallStack, MonadIO m, IsWidget a) =>
    FunPtr C_WidgetClassAdjustSizeAllocationFieldCallback
    -> a -> Orientation -> Int32 -> Int32 -> Int32 -> Int32 -> m ()
    dynamic_WidgetClassAdjustSizeAllocationFieldCallback FunPtr C_WidgetClassAdjustSizeAllocationFieldCallback
    __funPtr a
    widget Orientation
    orientation Int32
    minimumSize Int32
    naturalSize Int32
    allocatedPos Int32
    allocatedSize = IO () -> m ()
    forall a. IO a -> m a
    forall (m :: * -> *) a. MonadIO m => IO a -> m a
    liftIO (IO () -> m ()) -> IO () -> m ()
    forall a b. (a -> b) -> a -> b
    $ do
        widget' <- a -> IO (Ptr Widget)
    forall a b. (HasCallStack, ManagedPtrNewtype a) => a -> IO (Ptr b)
    unsafeManagedPtrCastPtr a
    widget
        let orientation' = (Int -> CUInt
    forall a b. (Integral a, Num b) => a -> b
    fromIntegral (Int -> CUInt) -> (Orientation -> Int) -> Orientation -> CUInt
    forall b c a. (b -> c) -> (a -> b) -> a -> c
    . Orientation -> Int
    forall a. Enum a => a -> Int
    fromEnum) Orientation
    orientation
        (__dynamic_C_WidgetClassAdjustSizeAllocationFieldCallback __funPtr) widget' orientation' minimumSize naturalSize allocatedPos allocatedSize
        touchManagedPtr widget
        return ()

    -- | Generate a function pointer callable from C code, from a `C_WidgetClassAdjustSizeAllocationFieldCallback`.
    foreign import ccall "wrapper"
        mk_WidgetClassAdjustSizeAllocationFieldCallback :: C_WidgetClassAdjustSizeAllocationFieldCallback -> IO (FunPtr C_WidgetClassAdjustSizeAllocationFieldCallback)

    -- | /No description available in the introspection data./
    type WidgetClassAdjustSizeAllocationFieldCallback =
        Gtk.Widget.Widget
        -> Gtk.Enums.Orientation
        -> Int32
        -> Int32
        -> Int32
        -> Int32
        -> IO ()

    -- | A convenience synonym for @`Nothing` :: `Maybe` `WidgetClassAdjustSizeAllocationFieldCallback`@.
    noWidgetClassAdjustSizeAllocationFieldCallback :: Maybe WidgetClassAdjustSizeAllocationFieldCallback
    noWidgetClassAdjustSizeAllocationFieldCallback :: Maybe WidgetClassAdjustSizeAllocationFieldCallback
    noWidgetClassAdjustSizeAllocationFieldCallback = Maybe WidgetClassAdjustSizeAllocationFieldCallback
    forall a. Maybe a
    Nothing

    -- | Wrap the callback into a `GClosure`.
    genClosure_WidgetClassAdjustSizeAllocationFieldCallback :: MonadIO m => WidgetClassAdjustSizeAllocationFieldCallback -> m (GClosure C_WidgetClassAdjustSizeAllocationFieldCallback)
    genClosure_WidgetClassAdjustSizeAllocationFieldCallback :: forall (m :: * -> *).
    MonadIO m =>
    WidgetClassAdjustSizeAllocationFieldCallback
    -> m (GClosure C_WidgetClassAdjustSizeAllocationFieldCallback)
    genClosure_WidgetClassAdjustSizeAllocationFieldCallback WidgetClassAdjustSizeAllocationFieldCallback
    cb = IO (GClosure C_WidgetClassAdjustSizeAllocationFieldCallback)
    -> m (GClosure C_WidgetClassAdjustSizeAllocationFieldCallback)
    forall a. IO a -> m a
    forall (m :: * -> *) a. MonadIO m => IO a -> m a
    liftIO (IO (GClosure C_WidgetClassAdjustSizeAllocationFieldCallback)
     -> m (GClosure C_WidgetClassAdjustSizeAllocationFieldCallback))
    -> IO (GClosure C_WidgetClassAdjustSizeAllocationFieldCallback)
    -> m (GClosure C_WidgetClassAdjustSizeAllocationFieldCallback)
    forall a b. (a -> b) -> a -> b
    $ do
        let cb' :: C_WidgetClassAdjustSizeAllocationFieldCallback
    cb' = Maybe (Ptr (FunPtr C_WidgetClassAdjustSizeAllocationFieldCallback))
    -> WidgetClassAdjustSizeAllocationFieldCallback
    -> C_WidgetClassAdjustSizeAllocationFieldCallback
    wrap_WidgetClassAdjustSizeAllocationFieldCallback Maybe (Ptr (FunPtr C_WidgetClassAdjustSizeAllocationFieldCallback))
    forall a. Maybe a
    Nothing WidgetClassAdjustSizeAllocationFieldCallback
    cb
        C_WidgetClassAdjustSizeAllocationFieldCallback
    -> IO (FunPtr C_WidgetClassAdjustSizeAllocationFieldCallback)
    mk_WidgetClassAdjustSizeAllocationFieldCallback C_WidgetClassAdjustSizeAllocationFieldCallback
    cb' IO (FunPtr C_WidgetClassAdjustSizeAllocationFieldCallback)
    -> (FunPtr C_WidgetClassAdjustSizeAllocationFieldCallback
        -> IO (GClosure C_WidgetClassAdjustSizeAllocationFieldCallback))
    -> IO (GClosure C_WidgetClassAdjustSizeAllocationFieldCallback)
    forall a b. IO a -> (a -> IO b) -> IO b
    forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
    >>= FunPtr C_WidgetClassAdjustSizeAllocationFieldCallback
    -> IO (GClosure C_WidgetClassAdjustSizeAllocationFieldCallback)
    forall (m :: * -> *) a. MonadIO m => FunPtr a -> m (GClosure a)
    B.GClosure.newGClosure

    -- | Wrap a `WidgetClassAdjustSizeAllocationFieldCallback` into a `C_WidgetClassAdjustSizeAllocationFieldCallback`.
    wrap_WidgetClassAdjustSizeAllocationFieldCallback ::
        Maybe (Ptr (FunPtr C_WidgetClassAdjustSizeAllocationFieldCallback)) ->
        WidgetClassAdjustSizeAllocationFieldCallback ->
        C_WidgetClassAdjustSizeAllocationFieldCallback
    wrap_WidgetClassAdjustSizeAllocationFieldCallback :: Maybe (Ptr (FunPtr C_WidgetClassAdjustSizeAllocationFieldCallback))
    -> WidgetClassAdjustSizeAllocationFieldCallback
    -> C_WidgetClassAdjustSizeAllocationFieldCallback
    wrap_WidgetClassAdjustSizeAllocationFieldCallback Maybe (Ptr (FunPtr C_WidgetClassAdjustSizeAllocationFieldCallback))
    gi'funptrptr WidgetClassAdjustSizeAllocationFieldCallback
    gi'cb Ptr Widget
    widget CUInt
    orientation Int32
    minimumSize Int32
    naturalSize Int32
    allocatedPos Int32
    allocatedSize = do
        widget' <- ((ManagedPtr Widget -> Widget) -> Ptr Widget -> IO Widget
    forall a b.
    (HasCallStack, GObject a, GObject b) =>
    (ManagedPtr a -> a) -> Ptr b -> IO a
    newObject ManagedPtr Widget -> Widget
    Gtk.Widget.Widget) Ptr Widget
    widget
        let orientation' = (Int -> Orientation
    forall a. Enum a => Int -> a
    toEnum (Int -> Orientation) -> (CUInt -> Int) -> CUInt -> Orientation
    forall b c a. (b -> c) -> (a -> b) -> a -> c
    . CUInt -> Int
    forall a b. (Integral a, Num b) => a -> b
    fromIntegral) CUInt
    orientation
        gi'cb  widget' orientation' minimumSize naturalSize allocatedPos allocatedSize
        maybeReleaseFunPtr gi'funptrptr

    -- callback WidgetClassAdjustBaselineRequestFieldCallback
    {- Callable
      { returnType = Nothing
      , returnMayBeNull = False
      , returnTransfer = TransferNothing
      , returnDocumentation =
          Documentation { rawDocText = Nothing , sinceVersion = Nothing }
      , args =
          [ Arg
              { argCName = "widget"
              , argType = TInterface Name { namespace = "Gtk" , name = "Widget" }
              , argCType = Just "GtkWidget*"
              , direction = DirectionIn
              , mayBeNull = False
              , argDoc =
                  Documentation { rawDocText = Nothing , sinceVersion = Nothing }
              , argScope = ScopeTypeInvalid
              , argClosure = -1
              , argDestroy = -1
              , argCallerAllocates = False
              , argCallbackUserData = False
              , transfer = TransferNothing
              }
          , Arg
              { argCName = "minimum_baseline"
              , argType = TBasicType TInt
              , argCType = Just "gint*"
              , direction = DirectionIn
              , mayBeNull = False
              , argDoc =
                  Documentation { rawDocText = Nothing , sinceVersion = Nothing }
              , argScope = ScopeTypeInvalid
              , argClosure = -1
              , argDestroy = -1
              , argCallerAllocates = False
              , argCallbackUserData = False
              , transfer = TransferNothing
              }
          , Arg
              { argCName = "natural_baseline"
              , argType = TBasicType TInt
              , argCType = Just "gint*"
              , direction = DirectionIn
              , mayBeNull = False
              , argDoc =
                  Documentation { rawDocText = Nothing , sinceVersion = Nothing }
              , argScope = ScopeTypeInvalid
              , argClosure = -1
              , argDestroy = -1
              , argCallerAllocates = False
              , argCallbackUserData = False
              , transfer = TransferNothing
              }
          ]
      , skipReturn = False
      , callableThrows = False
      , callableDeprecated = Nothing
      , callableDocumentation =
          Documentation { rawDocText = Nothing , sinceVersion = Nothing }
      , callableResolvable = Nothing
      }
    -}
    -- | Type for the callback on the (unwrapped) C side.
    type C_WidgetClassAdjustBaselineRequestFieldCallback =
        Ptr Gtk.Widget.Widget ->
        Int32 ->
        Int32 ->
        IO ()

    -- Args: [ Arg
    --           { argCName = "widget"
    --           , argType = TInterface Name { namespace = "Gtk" , name = "Widget" }
    --           , argCType = Just "GtkWidget*"
    --           , direction = DirectionIn
    --           , mayBeNull = False
    --           , argDoc =
    --               Documentation { rawDocText = Nothing , sinceVersion = Nothing }
    --           , argScope = ScopeTypeInvalid
    --           , argClosure = -1
    --           , argDestroy = -1
    --           , argCallerAllocates = False
    --           , argCallbackUserData = False
    --           , transfer = TransferNothing
    --           }
    --       , Arg
    --           { argCName = "minimum_baseline"
    --           , argType = TBasicType TInt
    --           , argCType = Just "gint*"
    --           , direction = DirectionIn
    --           , mayBeNull = False
    --           , argDoc =
    --               Documentation { rawDocText = Nothing , sinceVersion = Nothing }
    --           , argScope = ScopeTypeInvalid
    --           , argClosure = -1
    --           , argDestroy = -1
    --           , argCallerAllocates = False
    --           , argCallbackUserData = False
    --           , transfer = TransferNothing
    --           }
    --       , Arg
    --           { argCName = "natural_baseline"
    --           , argType = TBasicType TInt
    --           , argCType = Just "gint*"
    --           , direction = DirectionIn
    --           , mayBeNull = False
    --           , argDoc =
    --               Documentation { rawDocText = Nothing , sinceVersion = Nothing }
    --           , argScope = ScopeTypeInvalid
    --           , argClosure = -1
    --           , argDestroy = -1
    --           , argCallerAllocates = False
    --           , argCallbackUserData = False
    --           , transfer = TransferNothing
    --           }
    --       ]
    -- Lengths: []
    -- returnType: Nothing
    -- throws : False
    -- Skip return : False

    foreign import ccall "dynamic" __dynamic_C_WidgetClassAdjustBaselineRequestFieldCallback :: FunPtr C_WidgetClassAdjustBaselineRequestFieldCallback -> C_WidgetClassAdjustBaselineRequestFieldCallback

    -- | Given a pointer to a foreign C function, wrap it into a function callable from Haskell.
    dynamic_WidgetClassAdjustBaselineRequestFieldCallback ::
        (B.CallStack.HasCallStack, MonadIO m, Gtk.Widget.IsWidget a) =>
        FunPtr C_WidgetClassAdjustBaselineRequestFieldCallback
        -> a
        -> Int32
        -> Int32
        -> m ()
    dynamic_WidgetClassAdjustBaselineRequestFieldCallback :: forall (m :: * -> *) a.
    (HasCallStack, MonadIO m, IsWidget a) =>
    FunPtr C_WidgetClassAdjustBaselineRequestFieldCallback
    -> a -> Int32 -> Int32 -> m ()
    dynamic_WidgetClassAdjustBaselineRequestFieldCallback FunPtr C_WidgetClassAdjustBaselineRequestFieldCallback
    __funPtr a
    widget Int32
    minimumBaseline Int32
    naturalBaseline = IO () -> m ()
    forall a. IO a -> m a
    forall (m :: * -> *) a. MonadIO m => IO a -> m a
    liftIO (IO () -> m ()) -> IO () -> m ()
    forall a b. (a -> b) -> a -> b
    $ do
        widget' <- a -> IO (Ptr Widget)
    forall a b. (HasCallStack, ManagedPtrNewtype a) => a -> IO (Ptr b)
    unsafeManagedPtrCastPtr a
    widget
        (__dynamic_C_WidgetClassAdjustBaselineRequestFieldCallback __funPtr) widget' minimumBaseline naturalBaseline
        touchManagedPtr widget
        return ()

    -- | Generate a function pointer callable from C code, from a `C_WidgetClassAdjustBaselineRequestFieldCallback`.
    foreign import ccall "wrapper"
        mk_WidgetClassAdjustBaselineRequestFieldCallback :: C_WidgetClassAdjustBaselineRequestFieldCallback -> IO (FunPtr C_WidgetClassAdjustBaselineRequestFieldCallback)

    -- | /No description available in the introspection data./
    type WidgetClassAdjustBaselineRequestFieldCallback =
        Gtk.Widget.Widget
        -> Int32
        -> Int32
        -> IO ()

    -- | A convenience synonym for @`Nothing` :: `Maybe` `WidgetClassAdjustBaselineRequestFieldCallback`@.
    noWidgetClassAdjustBaselineRequestFieldCallback :: Maybe WidgetClassAdjustBaselineRequestFieldCallback
    noWidgetClassAdjustBaselineRequestFieldCallback :: Maybe WidgetClassAdjustBaselineRequestFieldCallback
    noWidgetClassAdjustBaselineRequestFieldCallback = Maybe WidgetClassAdjustBaselineRequestFieldCallback
    forall a. Maybe a
    Nothing

    -- | Wrap the callback into a `GClosure`.
    genClosure_WidgetClassAdjustBaselineRequestFieldCallback :: MonadIO m => WidgetClassAdjustBaselineRequestFieldCallback -> m (GClosure C_WidgetClassAdjustBaselineRequestFieldCallback)
    genClosure_WidgetClassAdjustBaselineRequestFieldCallback :: forall (m :: * -> *).
    MonadIO m =>
    WidgetClassAdjustBaselineRequestFieldCallback
    -> m (GClosure C_WidgetClassAdjustBaselineRequestFieldCallback)
    genClosure_WidgetClassAdjustBaselineRequestFieldCallback WidgetClassAdjustBaselineRequestFieldCallback
    cb = IO (GClosure C_WidgetClassAdjustBaselineRequestFieldCallback)
    -> m (GClosure C_WidgetClassAdjustBaselineRequestFieldCallback)
    forall a. IO a -> m a
    forall (m :: * -> *) a. MonadIO m => IO a -> m a
    liftIO (IO (GClosure C_WidgetClassAdjustBaselineRequestFieldCallback)
     -> m (GClosure C_WidgetClassAdjustBaselineRequestFieldCallback))
    -> IO (GClosure C_WidgetClassAdjustBaselineRequestFieldCallback)
    -> m (GClosure C_WidgetClassAdjustBaselineRequestFieldCallback)
    forall a b. (a -> b) -> a -> b
    $ do
        let cb' :: C_WidgetClassAdjustBaselineRequestFieldCallback
    cb' = Maybe
      (Ptr (FunPtr C_WidgetClassAdjustBaselineRequestFieldCallback))
    -> WidgetClassAdjustBaselineRequestFieldCallback
    -> C_WidgetClassAdjustBaselineRequestFieldCallback
    wrap_WidgetClassAdjustBaselineRequestFieldCallback Maybe
      (Ptr (FunPtr C_WidgetClassAdjustBaselineRequestFieldCallback))
    forall a. Maybe a
    Nothing WidgetClassAdjustBaselineRequestFieldCallback
    cb
        C_WidgetClassAdjustBaselineRequestFieldCallback
    -> IO (FunPtr C_WidgetClassAdjustBaselineRequestFieldCallback)
    mk_WidgetClassAdjustBaselineRequestFieldCallback C_WidgetClassAdjustBaselineRequestFieldCallback
    cb' IO (FunPtr C_WidgetClassAdjustBaselineRequestFieldCallback)
    -> (FunPtr C_WidgetClassAdjustBaselineRequestFieldCallback
        -> IO (GClosure C_WidgetClassAdjustBaselineRequestFieldCallback))
    -> IO (GClosure C_WidgetClassAdjustBaselineRequestFieldCallback)
    forall a b. IO a -> (a -> IO b) -> IO b
    forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
    >>= FunPtr C_WidgetClassAdjustBaselineRequestFieldCallback
    -> IO (GClosure C_WidgetClassAdjustBaselineRequestFieldCallback)
    forall (m :: * -> *) a. MonadIO m => FunPtr a -> m (GClosure a)
    B.GClosure.newGClosure

    -- | Wrap a `WidgetClassAdjustBaselineRequestFieldCallback` into a `C_WidgetClassAdjustBaselineRequestFieldCallback`.
    wrap_WidgetClassAdjustBaselineRequestFieldCallback ::
        Maybe (Ptr (FunPtr C_WidgetClassAdjustBaselineRequestFieldCallback)) ->
        WidgetClassAdjustBaselineRequestFieldCallback ->
        C_WidgetClassAdjustBaselineRequestFieldCallback
    wrap_WidgetClassAdjustBaselineRequestFieldCallback :: Maybe
      (Ptr (FunPtr C_WidgetClassAdjustBaselineRequestFieldCallback))
    -> WidgetClassAdjustBaselineRequestFieldCallback
    -> C_WidgetClassAdjustBaselineRequestFieldCallback
    wrap_WidgetClassAdjustBaselineRequestFieldCallback Maybe
      (Ptr (FunPtr C_WidgetClassAdjustBaselineRequestFieldCallback))
    gi'funptrptr WidgetClassAdjustBaselineRequestFieldCallback
    gi'cb Ptr Widget
    widget Int32
    minimumBaseline Int32
    naturalBaseline = do
        widget' <- ((ManagedPtr Widget -> Widget) -> Ptr Widget -> IO Widget
    forall a b.
    (HasCallStack, GObject a, GObject b) =>
    (ManagedPtr a -> a) -> Ptr b -> IO a
    newObject ManagedPtr Widget -> Widget
    Gtk.Widget.Widget) Ptr Widget
    widget
        gi'cb  widget' minimumBaseline naturalBaseline
        maybeReleaseFunPtr gi'funptrptr

    -- callback WidgetClassAdjustBaselineAllocationFieldCallback
    {- Callable
      { returnType = Nothing
      , returnMayBeNull = False
      , returnTransfer = TransferNothing
      , returnDocumentation =
          Documentation { rawDocText = Nothing , sinceVersion = Nothing }
      , args =
          [ Arg
              { argCName = "widget"
              , argType = TInterface Name { namespace = "Gtk" , name = "Widget" }
              , argCType = Just "GtkWidget*"
              , direction = DirectionIn
              , mayBeNull = False
              , argDoc =
                  Documentation { rawDocText = Nothing , sinceVersion = Nothing }
              , argScope = ScopeTypeInvalid
              , argClosure = -1
              , argDestroy = -1
              , argCallerAllocates = False
              , argCallbackUserData = False
              , transfer = TransferNothing
              }
          , Arg
              { argCName = "baseline"
              , argType = TBasicType TInt
              , argCType = Just "gint*"
              , direction = DirectionIn
              , mayBeNull = False
              , argDoc =
                  Documentation { rawDocText = Nothing , sinceVersion = Nothing }
              , argScope = ScopeTypeInvalid
              , argClosure = -1
              , argDestroy = -1
              , argCallerAllocates = False
              , argCallbackUserData = False
              , transfer = TransferNothing
              }
          ]
      , skipReturn = False
      , callableThrows = False
      , callableDeprecated = Nothing
      , callableDocumentation =
          Documentation { rawDocText = Nothing , sinceVersion = Nothing }
      , callableResolvable = Nothing
      }
    -}
    -- | Type for the callback on the (unwrapped) C side.
    type C_WidgetClassAdjustBaselineAllocationFieldCallback =
        Ptr Gtk.Widget.Widget ->
        Int32 ->
        IO ()

    -- Args: [ Arg
    --           { argCName = "widget"
    --           , argType = TInterface Name { namespace = "Gtk" , name = "Widget" }
    --           , argCType = Just "GtkWidget*"
    --           , direction = DirectionIn
    --           , mayBeNull = False
    --           , argDoc =
    --               Documentation { rawDocText = Nothing , sinceVersion = Nothing }
    --           , argScope = ScopeTypeInvalid
    --           , argClosure = -1
    --           , argDestroy = -1
    --           , argCallerAllocates = False
    --           , argCallbackUserData = False
    --           , transfer = TransferNothing
    --           }
    --       , Arg
    --           { argCName = "baseline"
    --           , argType = TBasicType TInt
    --           , argCType = Just "gint*"
    --           , direction = DirectionIn
    --           , mayBeNull = False
    --           , argDoc =
    --               Documentation { rawDocText = Nothing , sinceVersion = Nothing }
    --           , argScope = ScopeTypeInvalid
    --           , argClosure = -1
    --           , argDestroy = -1
    --           , argCallerAllocates = False
    --           , argCallbackUserData = False
    --           , transfer = TransferNothing
    --           }
    --       ]
    -- Lengths: []
    -- returnType: Nothing
    -- throws : False
    -- Skip return : False

    foreign import ccall "dynamic" __dynamic_C_WidgetClassAdjustBaselineAllocationFieldCallback :: FunPtr C_WidgetClassAdjustBaselineAllocationFieldCallback -> C_WidgetClassAdjustBaselineAllocationFieldCallback

    -- | Given a pointer to a foreign C function, wrap it into a function callable from Haskell.
    dynamic_WidgetClassAdjustBaselineAllocationFieldCallback ::
        (B.CallStack.HasCallStack, MonadIO m, Gtk.Widget.IsWidget a) =>
        FunPtr C_WidgetClassAdjustBaselineAllocationFieldCallback
        -> a
        -> Int32
        -> m ()
    dynamic_WidgetClassAdjustBaselineAllocationFieldCallback :: forall (m :: * -> *) a.
    (HasCallStack, MonadIO m, IsWidget a) =>
    FunPtr C_WidgetClassAdjustBaselineAllocationFieldCallback
    -> a -> Int32 -> m ()
    dynamic_WidgetClassAdjustBaselineAllocationFieldCallback FunPtr C_WidgetClassAdjustBaselineAllocationFieldCallback
    __funPtr a
    widget Int32
    baseline = IO () -> m ()
    forall a. IO a -> m a
    forall (m :: * -> *) a. MonadIO m => IO a -> m a
    liftIO (IO () -> m ()) -> IO () -> m ()
    forall a b. (a -> b) -> a -> b
    $ do
        widget' <- a -> IO (Ptr Widget)
    forall a b. (HasCallStack, ManagedPtrNewtype a) => a -> IO (Ptr b)
    unsafeManagedPtrCastPtr a
    widget
        (__dynamic_C_WidgetClassAdjustBaselineAllocationFieldCallback __funPtr) widget' baseline
        touchManagedPtr widget
        return ()

    -- | Generate a function pointer callable from C code, from a `C_WidgetClassAdjustBaselineAllocationFieldCallback`.
    foreign import ccall "wrapper"
        mk_WidgetClassAdjustBaselineAllocationFieldCallback :: C_WidgetClassAdjustBaselineAllocationFieldCallback -> IO (FunPtr C_WidgetClassAdjustBaselineAllocationFieldCallback)

    -- | /No description available in the introspection data./
    type WidgetClassAdjustBaselineAllocationFieldCallback =
        Gtk.Widget.Widget
        -> Int32
        -> IO ()

    -- | A convenience synonym for @`Nothing` :: `Maybe` `WidgetClassAdjustBaselineAllocationFieldCallback`@.
    noWidgetClassAdjustBaselineAllocationFieldCallback :: Maybe WidgetClassAdjustBaselineAllocationFieldCallback
    noWidgetClassAdjustBaselineAllocationFieldCallback :: Maybe WidgetClassAdjustBaselineAllocationFieldCallback
    noWidgetClassAdjustBaselineAllocationFieldCallback = Maybe WidgetClassAdjustBaselineAllocationFieldCallback
    forall a. Maybe a
    Nothing

    -- | Wrap the callback into a `GClosure`.
    genClosure_WidgetClassAdjustBaselineAllocationFieldCallback :: MonadIO m => WidgetClassAdjustBaselineAllocationFieldCallback -> m (GClosure C_WidgetClassAdjustBaselineAllocationFieldCallback)
    genClosure_WidgetClassAdjustBaselineAllocationFieldCallback :: forall (m :: * -> *).
    MonadIO m =>
    WidgetClassAdjustBaselineAllocationFieldCallback
    -> m (GClosure C_WidgetClassAdjustBaselineAllocationFieldCallback)
    genClosure_WidgetClassAdjustBaselineAllocationFieldCallback WidgetClassAdjustBaselineAllocationFieldCallback
    cb = IO (GClosure C_WidgetClassAdjustBaselineAllocationFieldCallback)
    -> m (GClosure C_WidgetClassAdjustBaselineAllocationFieldCallback)
    forall a. IO a -> m a
    forall (m :: * -> *) a. MonadIO m => IO a -> m a
    liftIO (IO (GClosure C_WidgetClassAdjustBaselineAllocationFieldCallback)
     -> m (GClosure C_WidgetClassAdjustBaselineAllocationFieldCallback))
    -> IO (GClosure C_WidgetClassAdjustBaselineAllocationFieldCallback)
    -> m (GClosure C_WidgetClassAdjustBaselineAllocationFieldCallback)
    forall a b. (a -> b) -> a -> b
    $ do
        let cb' :: C_WidgetClassAdjustBaselineAllocationFieldCallback
    cb' = Maybe
      (Ptr (FunPtr C_WidgetClassAdjustBaselineAllocationFieldCallback))
    -> WidgetClassAdjustBaselineAllocationFieldCallback
    -> C_WidgetClassAdjustBaselineAllocationFieldCallback
    wrap_WidgetClassAdjustBaselineAllocationFieldCallback Maybe
      (Ptr (FunPtr C_WidgetClassAdjustBaselineAllocationFieldCallback))
    forall a. Maybe a
    Nothing WidgetClassAdjustBaselineAllocationFieldCallback
    cb
        C_WidgetClassAdjustBaselineAllocationFieldCallback
    -> IO (FunPtr C_WidgetClassAdjustBaselineAllocationFieldCallback)
    mk_WidgetClassAdjustBaselineAllocationFieldCallback C_WidgetClassAdjustBaselineAllocationFieldCallback
    cb' IO (FunPtr C_WidgetClassAdjustBaselineAllocationFieldCallback)
    -> (FunPtr C_WidgetClassAdjustBaselineAllocationFieldCallback
        -> IO
             (GClosure C_WidgetClassAdjustBaselineAllocationFieldCallback))
    -> IO (GClosure C_WidgetClassAdjustBaselineAllocationFieldCallback)
    forall a b. IO a -> (a -> IO b) -> IO b
    forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
    >>= FunPtr C_WidgetClassAdjustBaselineAllocationFieldCallback
    -> IO (GClosure C_WidgetClassAdjustBaselineAllocationFieldCallback)
    forall (m :: * -> *) a. MonadIO m => FunPtr a -> m (GClosure a)
    B.GClosure.newGClosure

    -- | Wrap a `WidgetClassAdjustBaselineAllocationFieldCallback` into a `C_WidgetClassAdjustBaselineAllocationFieldCallback`.
    wrap_WidgetClassAdjustBaselineAllocationFieldCallback ::
        Maybe (Ptr (FunPtr C_WidgetClassAdjustBaselineAllocationFieldCallback)) ->
        WidgetClassAdjustBaselineAllocationFieldCallback ->
        C_WidgetClassAdjustBaselineAllocationFieldCallback
    wrap_WidgetClassAdjustBaselineAllocationFieldCallback :: Maybe
      (Ptr (FunPtr C_WidgetClassAdjustBaselineAllocationFieldCallback))
    -> WidgetClassAdjustBaselineAllocationFieldCallback
    -> C_WidgetClassAdjustBaselineAllocationFieldCallback
    wrap_WidgetClassAdjustBaselineAllocationFieldCallback Maybe
      (Ptr (FunPtr C_WidgetClassAdjustBaselineAllocationFieldCallback))
    gi'funptrptr WidgetClassAdjustBaselineAllocationFieldCallback
    gi'cb Ptr Widget
    widget Int32
    baseline = do
        widget' <- ((ManagedPtr Widget -> Widget) -> Ptr Widget -> IO Widget
    forall a b.
    (HasCallStack, GObject a, GObject b) =>
    (ManagedPtr a -> a) -> Ptr b -> IO a
    newObject ManagedPtr Widget -> Widget
    Gtk.Widget.Widget) Ptr Widget
    widget
        gi'cb  widget' baseline
        maybeReleaseFunPtr gi'funptrptr

    -- callback TreeViewSearchPositionFunc
    {- Callable
      { returnType = Nothing
      , returnMayBeNull = False
      , returnTransfer = TransferNothing
      , returnDocumentation =
          Documentation { rawDocText = Nothing , sinceVersion = Nothing }
      , args =
          [ Arg
              { argCName = "tree_view"
              , argType =
                  TInterface Name { namespace = "Gtk" , name = "TreeView" }
              , argCType = Just "GtkTreeView*"
              , direction = DirectionIn
              , mayBeNull = False
              , argDoc =
                  Documentation { rawDocText = Nothing , sinceVersion = Nothing }
              , argScope = ScopeTypeInvalid
              , argClosure = -1
              , argDestroy = -1
              , argCallerAllocates = False
              , argCallbackUserData = False
              , transfer = TransferNothing
              }
          , Arg
              { argCName = "search_dialog"
              , argType = TInterface Name { namespace = "Gtk" , name = "Widget" }
              , argCType = Just "GtkWidget*"
              , direction = DirectionIn
              , mayBeNull = False
              , argDoc =
                  Documentation { rawDocText = Nothing , sinceVersion = Nothing }
              , argScope = ScopeTypeInvalid
              , argClosure = -1
              , argDestroy = -1
              , argCallerAllocates = False
              , argCallbackUserData = False
              , transfer = TransferNothing
              }
          , Arg
              { argCName = "user_data"
              , argType = TBasicType TPtr
              , argCType = Just "gpointer"
              , direction = DirectionIn
              , mayBeNull = True
              , argDoc =
                  Documentation { rawDocText = Nothing , sinceVersion = Nothing }
              , argScope = ScopeTypeInvalid
              , argClosure = -1
              , argDestroy = -1
              , argCallerAllocates = False
              , argCallbackUserData = True
              , transfer = TransferNothing
              }
          ]
      , skipReturn = False
      , callableThrows = False
      , callableDeprecated = Nothing
      , callableDocumentation =
          Documentation { rawDocText = Nothing , sinceVersion = Nothing }
      , callableResolvable = Nothing
      }
    -}
    -- | Type for the callback on the (unwrapped) C side.
    type C_TreeViewSearchPositionFunc =
        Ptr Gtk.TreeView.TreeView ->
        Ptr Gtk.Widget.Widget ->
        Ptr () ->
        IO ()

    -- Args: [ Arg
    --           { argCName = "tree_view"
    --           , argType =
    --               TInterface Name { namespace = "Gtk" , name = "TreeView" }
    --           , argCType = Just "GtkTreeView*"
    --           , direction = DirectionIn
    --           , mayBeNull = False
    --           , argDoc =
    --               Documentation { rawDocText = Nothing , sinceVersion = Nothing }
    --           , argScope = ScopeTypeInvalid
    --           , argClosure = -1
    --           , argDestroy = -1
    --           , argCallerAllocates = False
    --           , argCallbackUserData = False
    --           , transfer = TransferNothing
    --           }
    --       , Arg
    --           { argCName = "search_dialog"
    --           , argType = TInterface Name { namespace = "Gtk" , name = "Widget" }
    --           , argCType = Just "GtkWidget*"
    --           , direction = DirectionIn
    --           , mayBeNull = False
    --           , argDoc =
    --               Documentation { rawDocText = Nothing , sinceVersion = Nothing }
    --           , argScope = ScopeTypeInvalid
    --           , argClosure = -1
    --           , argDestroy = -1
    --           , argCallerAllocates = False
    --           , argCallbackUserData = False
    --           , transfer = TransferNothing
    --           }
    --       , Arg
    --           { argCName = "user_data"
    --           , argType = TBasicType TPtr
    --           , argCType = Just "gpointer"
    --           , direction = DirectionIn
    --           , mayBeNull = True
    --           , argDoc =
    --               Documentation { rawDocText = Nothing , sinceVersion = Nothing }
    --           , argScope = ScopeTypeInvalid
    --           , argClosure = -1
    --           , argDestroy = -1
    --           , argCallerAllocates = False
    --           , argCallbackUserData = True
    --           , transfer = TransferNothing
    --           }
    --       ]
    -- Lengths: []
    -- returnType: Nothing
    -- throws : False
    -- Skip return : False

    foreign import ccall "dynamic" __dynamic_C_TreeViewSearchPositionFunc :: FunPtr C_TreeViewSearchPositionFunc -> C_TreeViewSearchPositionFunc

    -- | Given a pointer to a foreign C function, wrap it into a function callable from Haskell.
    dynamic_TreeViewSearchPositionFunc ::
        (B.CallStack.HasCallStack, MonadIO m, Gtk.TreeView.IsTreeView a, Gtk.Widget.IsWidget b) =>
        FunPtr C_TreeViewSearchPositionFunc
        -> a
        -> b
        -> Ptr ()
        -> m ()
    dynamic_TreeViewSearchPositionFunc :: forall (m :: * -> *) a b.
    (HasCallStack, MonadIO m, IsTreeView a, IsWidget b) =>
    FunPtr C_TreeViewSearchPositionFunc -> a -> b -> Ptr () -> m ()
    dynamic_TreeViewSearchPositionFunc FunPtr C_TreeViewSearchPositionFunc
    __funPtr a
    treeView b
    searchDialog Ptr ()
    userData = IO () -> m ()
    forall a. IO a -> m a
    forall (m :: * -> *) a. MonadIO m => IO a -> m a
    liftIO (IO () -> m ()) -> IO () -> m ()
    forall a b. (a -> b) -> a -> b
    $ do
        treeView' <- a -> IO (Ptr TreeView)
    forall a b. (HasCallStack, ManagedPtrNewtype a) => a -> IO (Ptr b)
    unsafeManagedPtrCastPtr a
    treeView
        searchDialog' <- unsafeManagedPtrCastPtr searchDialog
        (__dynamic_C_TreeViewSearchPositionFunc __funPtr) treeView' searchDialog' userData
        touchManagedPtr treeView
        touchManagedPtr searchDialog
        return ()

    -- | Generate a function pointer callable from C code, from a `C_TreeViewSearchPositionFunc`.
    foreign import ccall "wrapper"
        mk_TreeViewSearchPositionFunc :: C_TreeViewSearchPositionFunc -> IO (FunPtr C_TreeViewSearchPositionFunc)

    -- | /No description available in the introspection data./
    type TreeViewSearchPositionFunc =
        Gtk.TreeView.TreeView
        -> Gtk.Widget.Widget
        -> IO ()

    -- | A convenience synonym for @`Nothing` :: `Maybe` `TreeViewSearchPositionFunc`@.
    noTreeViewSearchPositionFunc :: Maybe TreeViewSearchPositionFunc
    noTreeViewSearchPositionFunc :: Maybe TreeViewSearchPositionFunc
    noTreeViewSearchPositionFunc = Maybe TreeViewSearchPositionFunc
    forall a. Maybe a
    Nothing

    -- | /No description available in the introspection data./
    type TreeViewSearchPositionFunc_WithClosures =
        Gtk.TreeView.TreeView
        -> Gtk.Widget.Widget
        -> Ptr ()
        -> IO ()

    -- | A convenience synonym for @`Nothing` :: `Maybe` `TreeViewSearchPositionFunc_WithClosures`@.
    noTreeViewSearchPositionFunc_WithClosures :: Maybe TreeViewSearchPositionFunc_WithClosures
    noTreeViewSearchPositionFunc_WithClosures :: Maybe TreeViewSearchPositionFunc_WithClosures
    noTreeViewSearchPositionFunc_WithClosures = Maybe TreeViewSearchPositionFunc_WithClosures
    forall a. Maybe a
    Nothing

    -- | A simple wrapper that ignores the closure arguments.
    drop_closures_TreeViewSearchPositionFunc :: TreeViewSearchPositionFunc -> TreeViewSearchPositionFunc_WithClosures
    drop_closures_TreeViewSearchPositionFunc :: TreeViewSearchPositionFunc
    -> TreeViewSearchPositionFunc_WithClosures
    drop_closures_TreeViewSearchPositionFunc TreeViewSearchPositionFunc
    _f TreeView
    treeView Widget
    searchDialog Ptr ()
    _ = TreeViewSearchPositionFunc
    _f TreeView
    treeView Widget
    searchDialog

    -- | Wrap the callback into a `GClosure`.
    genClosure_TreeViewSearchPositionFunc :: MonadIO m => TreeViewSearchPositionFunc -> m (GClosure C_TreeViewSearchPositionFunc)
    genClosure_TreeViewSearchPositionFunc :: forall (m :: * -> *).
    MonadIO m =>
    TreeViewSearchPositionFunc
    -> m (GClosure C_TreeViewSearchPositionFunc)
    genClosure_TreeViewSearchPositionFunc TreeViewSearchPositionFunc
    cb = IO (GClosure C_TreeViewSearchPositionFunc)
    -> m (GClosure C_TreeViewSearchPositionFunc)
    forall a. IO a -> m a
    forall (m :: * -> *) a. MonadIO m => IO a -> m a
    liftIO (IO (GClosure C_TreeViewSearchPositionFunc)
     -> m (GClosure C_TreeViewSearchPositionFunc))
    -> IO (GClosure C_TreeViewSearchPositionFunc)
    -> m (GClosure C_TreeViewSearchPositionFunc)
    forall a b. (a -> b) -> a -> b
    $ do
        let cb' :: TreeViewSearchPositionFunc_WithClosures
    cb' = TreeViewSearchPositionFunc
    -> TreeViewSearchPositionFunc_WithClosures
    drop_closures_TreeViewSearchPositionFunc TreeViewSearchPositionFunc
    cb
        let cb'' :: C_TreeViewSearchPositionFunc
    cb'' = Maybe (Ptr (FunPtr C_TreeViewSearchPositionFunc))
    -> TreeViewSearchPositionFunc_WithClosures
    -> C_TreeViewSearchPositionFunc
    wrap_TreeViewSearchPositionFunc Maybe (Ptr (FunPtr C_TreeViewSearchPositionFunc))
    forall a. Maybe a
    Nothing TreeViewSearchPositionFunc_WithClosures
    cb'
        C_TreeViewSearchPositionFunc
    -> IO (FunPtr C_TreeViewSearchPositionFunc)
    mk_TreeViewSearchPositionFunc C_TreeViewSearchPositionFunc
    cb'' IO (FunPtr C_TreeViewSearchPositionFunc)
    -> (FunPtr C_TreeViewSearchPositionFunc
        -> IO (GClosure C_TreeViewSearchPositionFunc))
    -> IO (GClosure C_TreeViewSearchPositionFunc)
    forall a b. IO a -> (a -> IO b) -> IO b
    forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
    >>= FunPtr C_TreeViewSearchPositionFunc
    -> IO (GClosure C_TreeViewSearchPositionFunc)
    forall (m :: * -> *) a. MonadIO m => FunPtr a -> m (GClosure a)
    B.GClosure.newGClosure

    -- | Wrap a `TreeViewSearchPositionFunc` into a `C_TreeViewSearchPositionFunc`.
    wrap_TreeViewSearchPositionFunc ::
        Maybe (Ptr (FunPtr C_TreeViewSearchPositionFunc)) ->
        TreeViewSearchPositionFunc_WithClosures ->
        C_TreeViewSearchPositionFunc
    wrap_TreeViewSearchPositionFunc :: Maybe (Ptr (FunPtr C_TreeViewSearchPositionFunc))
    -> TreeViewSearchPositionFunc_WithClosures
    -> C_TreeViewSearchPositionFunc
    wrap_TreeViewSearchPositionFunc Maybe (Ptr (FunPtr C_TreeViewSearchPositionFunc))
    gi'funptrptr TreeViewSearchPositionFunc_WithClosures
    gi'cb Ptr TreeView
    treeView Ptr Widget
    searchDialog Ptr ()
    userData = do
        treeView' <- ((ManagedPtr TreeView -> TreeView) -> Ptr TreeView -> IO TreeView
    forall a b.
    (HasCallStack, GObject a, GObject b) =>
    (ManagedPtr a -> a) -> Ptr b -> IO a
    newObject ManagedPtr TreeView -> TreeView
    Gtk.TreeView.TreeView) Ptr TreeView
    treeView
        searchDialog' <- (newObject Gtk.Widget.Widget) searchDialog
        gi'cb  treeView' searchDialog' userData
        maybeReleaseFunPtr gi'funptrptr

    -- callback TreeViewSearchEqualFunc
    {- Callable
      { returnType = Just (TBasicType TBoolean)
      , returnMayBeNull = False
      , returnTransfer = TransferNothing
      , returnDocumentation =
          Documentation
            { rawDocText = Just "%FALSE if the row matches, %TRUE otherwise."
            , sinceVersion = Nothing
            }
      , args =
          [ Arg
              { argCName = "model"
              , argType =
                  TInterface Name { namespace = "Gtk" , name = "TreeModel" }
              , argCType = Just "GtkTreeModel*"
              , direction = DirectionIn
              , mayBeNull = False
              , argDoc =
                  Documentation
                    { rawDocText = Just "the #GtkTreeModel being searched"
                    , sinceVersion = Nothing
                    }
              , argScope = ScopeTypeInvalid
              , argClosure = -1
              , argDestroy = -1
              , argCallerAllocates = False
              , argCallbackUserData = False
              , transfer = TransferNothing
              }
          , Arg
              { argCName = "column"
              , argType = TBasicType TInt
              , argCType = Just "gint"
              , direction = DirectionIn
              , mayBeNull = False
              , argDoc =
                  Documentation
                    { rawDocText =
                        Just "the search column set by gtk_tree_view_set_search_column()"
                    , sinceVersion = Nothing
                    }
              , argScope = ScopeTypeInvalid
              , argClosure = -1
              , argDestroy = -1
              , argCallerAllocates = False
              , argCallbackUserData = False
              , transfer = TransferNothing
              }
          , Arg
              { argCName = "key"
              , argType = TBasicType TUTF8
              , argCType = Just "const gchar*"
              , direction = DirectionIn
              , mayBeNull = False
              , argDoc =
                  Documentation
                    { rawDocText = Just "the key string to compare with"
                    , sinceVersion = Nothing
                    }
              , argScope = ScopeTypeInvalid
              , argClosure = -1
              , argDestroy = -1
              , argCallerAllocates = False
              , argCallbackUserData = False
              , transfer = TransferNothing
              }
          , Arg
              { argCName = "iter"
              , argType =
                  TInterface Name { namespace = "Gtk" , name = "TreeIter" }
              , argCType = Just "GtkTreeIter*"
              , direction = DirectionIn
              , mayBeNull = False
              , argDoc =
                  Documentation
                    { rawDocText =
                        Just
                          "a #GtkTreeIter pointing the row of @model that should be compared\n with @key."
                    , sinceVersion = Nothing
                    }
              , argScope = ScopeTypeInvalid
              , argClosure = -1
              , argDestroy = -1
              , argCallerAllocates = False
              , argCallbackUserData = False
              , transfer = TransferNothing
              }
          , Arg
              { argCName = "search_data"
              , argType = TBasicType TPtr
              , argCType = Just "gpointer"
              , direction = DirectionIn
              , mayBeNull = True
              , argDoc =
                  Documentation
                    { rawDocText =
                        Just "user data from gtk_tree_view_set_search_equal_func()"
                    , sinceVersion = Nothing
                    }
              , argScope = ScopeTypeInvalid
              , argClosure = -1
              , argDestroy = -1
              , argCallerAllocates = False
              , argCallbackUserData = True
              , transfer = TransferNothing
              }
          ]
      , skipReturn = False
      , callableThrows = False
      , callableDeprecated = Nothing
      , callableDocumentation =
          Documentation
            { rawDocText =
                Just
                  "A function used for checking whether a row in @model matches\na search key string entered by the user. Note the return value\nis reversed from what you would normally expect, though it\nhas some similarity to strcmp() returning 0 for equal strings."
            , sinceVersion = Nothing
            }
      , callableResolvable = Nothing
      }
    -}
    -- | Type for the callback on the (unwrapped) C side.
    type C_TreeViewSearchEqualFunc =
        Ptr Gtk.TreeModel.TreeModel ->
        Int32 ->
        CString ->
        Ptr Gtk.TreeIter.TreeIter ->
        Ptr () ->
        IO CInt

    -- Args: [ Arg
    --           { argCName = "model"
    --           , argType =
    --               TInterface Name { namespace = "Gtk" , name = "TreeModel" }
    --           , argCType = Just "GtkTreeModel*"
    --           , direction = DirectionIn
    --           , mayBeNull = False
    --           , argDoc =
    --               Documentation
    --                 { rawDocText = Just "the #GtkTreeModel being searched"
    --                 , sinceVersion = Nothing
    --                 }
    --           , argScope = ScopeTypeInvalid
    --           , argClosure = -1
    --           , argDestroy = -1
    --           , argCallerAllocates = False
    --           , argCallbackUserData = False
    --           , transfer = TransferNothing
    --           }
    --       , Arg
    --           { argCName = "column"
    --           , argType = TBasicType TInt
    --           , argCType = Just "gint"
    --           , direction = DirectionIn
    --           , mayBeNull = False
    --           , argDoc =
    --               Documentation
    --                 { rawDocText =
    --                     Just "the search column set by gtk_tree_view_set_search_column()"
    --                 , sinceVersion = Nothing
    --                 }
    --           , argScope = ScopeTypeInvalid
    --           , argClosure = -1
    --           , argDestroy = -1
    --           , argCallerAllocates = False
    --           , argCallbackUserData = False
    --           , transfer = TransferNothing
    --           }
    --       , Arg
    --           { argCName = "key"
    --           , argType = TBasicType TUTF8
    --           , argCType = Just "const gchar*"
    --           , direction = DirectionIn
    --           , mayBeNull = False
    --           , argDoc =
    --               Documentation
    --                 { rawDocText = Just "the key string to compare with"
    --                 , sinceVersion = Nothing
    --                 }
    --           , argScope = ScopeTypeInvalid
    --           , argClosure = -1
    --           , argDestroy = -1
    --           , argCallerAllocates = False
    --           , argCallbackUserData = False
    --           , transfer = TransferNothing
    --           }
    --       , Arg
    --           { argCName = "iter"
    --           , argType =
    --               TInterface Name { namespace = "Gtk" , name = "TreeIter" }
    --           , argCType = Just "GtkTreeIter*"
    --           , direction = DirectionIn
    --           , mayBeNull = False
    --           , argDoc =
    --               Documentation
    --                 { rawDocText =
    --                     Just
    --                       "a #GtkTreeIter pointing the row of @model that should be compared\n with @key."
    --                 , sinceVersion = Nothing
    --                 }
    --           , argScope = ScopeTypeInvalid
    --           , argClosure = -1
    --           , argDestroy = -1
    --           , argCallerAllocates = False
    --           , argCallbackUserData = False
    --           , transfer = TransferNothing
    --           }
    --       , Arg
    --           { argCName = "search_data"
    --           , argType = TBasicType TPtr
    --           , argCType = Just "gpointer"
    --           , direction = DirectionIn
    --           , mayBeNull = True
    --           , argDoc =
    --               Documentation
    --                 { rawDocText =
    --                     Just "user data from gtk_tree_view_set_search_equal_func()"
    --                 , sinceVersion = Nothing
    --                 }
    --           , argScope = ScopeTypeInvalid
    --           , argClosure = -1
    --           , argDestroy = -1
    --           , argCallerAllocates = False
    --           , argCallbackUserData = True
    --           , transfer = TransferNothing
    --           }
    --       ]
    -- Lengths: []
    -- returnType: Just (TBasicType TBoolean)
    -- throws : False
    -- Skip return : False

    foreign import ccall "dynamic" __dynamic_C_TreeViewSearchEqualFunc :: FunPtr C_TreeViewSearchEqualFunc -> C_TreeViewSearchEqualFunc

    -- | Given a pointer to a foreign C function, wrap it into a function callable from Haskell.
    dynamic_TreeViewSearchEqualFunc ::
        (B.CallStack.HasCallStack, MonadIO m, Gtk.TreeModel.IsTreeModel a) =>
        FunPtr C_TreeViewSearchEqualFunc
        -> a
        -- ^ /@model@/: the t'GI.Gtk.Interfaces.TreeModel.TreeModel' being searched
        -> Int32
        -- ^ /@column@/: the search column set by 'GI.Gtk.Objects.TreeView.treeViewSetSearchColumn'
        -> T.Text
        -- ^ /@key@/: the key string to compare with
        -> Gtk.TreeIter.TreeIter
        -- ^ /@iter@/: a t'GI.Gtk.Structs.TreeIter.TreeIter' pointing the row of /@model@/ that should be compared
        --  with /@key@/.
        -> Ptr ()
        -- ^ /@searchData@/: user data from 'GI.Gtk.Objects.TreeView.treeViewSetSearchEqualFunc'
        -> m Bool
        -- ^ __Returns:__ 'P.False' if the row matches, 'P.True' otherwise.
    dynamic_TreeViewSearchEqualFunc :: forall (m :: * -> *) a.
    (HasCallStack, MonadIO m, IsTreeModel a) =>
    FunPtr C_TreeViewSearchEqualFunc
    -> a -> Int32 -> Text -> TreeIter -> Ptr () -> m Bool
    dynamic_TreeViewSearchEqualFunc FunPtr C_TreeViewSearchEqualFunc
    __funPtr a
    model Int32
    column Text
    key TreeIter
    iter Ptr ()
    searchData = IO Bool -> m Bool
    forall a. IO a -> m a
    forall (m :: * -> *) a. MonadIO m => IO a -> m a
    liftIO (IO Bool -> m Bool) -> IO Bool -> m Bool
    forall a b. (a -> b) -> a -> b
    $ do
        model' <- a -> IO (Ptr TreeModel)
    forall a b. (HasCallStack, ManagedPtrNewtype a) => a -> IO (Ptr b)
    unsafeManagedPtrCastPtr a
    model
        key' <- textToCString key
        iter' <- unsafeManagedPtrGetPtr iter
        result <- (__dynamic_C_TreeViewSearchEqualFunc __funPtr) model' column key' iter' searchData
        let result' = (CInt -> CInt -> Bool
    forall a. Eq a => a -> a -> Bool
    /= CInt
    0) CInt
    result
        touchManagedPtr model
        touchManagedPtr iter
        freeMem key'
        return result'

    -- | Generate a function pointer callable from C code, from a `C_TreeViewSearchEqualFunc`.
    foreign import ccall "wrapper"
        mk_TreeViewSearchEqualFunc :: C_TreeViewSearchEqualFunc -> IO (FunPtr C_TreeViewSearchEqualFunc)

    -- | A function used for checking whether a row in /@model@/ matches
    -- a search key string entered by the user. Note the return value
    -- is reversed from what you would normally expect, though it
    -- has some similarity to @/strcmp()/@ returning 0 for equal strings.
    type TreeViewSearchEqualFunc =
        Gtk.TreeModel.TreeModel
        -- ^ /@model@/: the t'GI.Gtk.Interfaces.TreeModel.TreeModel' being searched
        -> Int32
        -- ^ /@column@/: the search column set by 'GI.Gtk.Objects.TreeView.treeViewSetSearchColumn'
        -> T.Text
        -- ^ /@key@/: the key string to compare with
        -> Gtk.TreeIter.TreeIter
        -- ^ /@iter@/: a t'GI.Gtk.Structs.TreeIter.TreeIter' pointing the row of /@model@/ that should be compared
        --  with /@key@/.
        -> IO Bool
        -- ^ __Returns:__ 'P.False' if the row matches, 'P.True' otherwise.

    -- | A convenience synonym for @`Nothing` :: `Maybe` `TreeViewSearchEqualFunc`@.
    noTreeViewSearchEqualFunc :: Maybe TreeViewSearchEqualFunc
    noTreeViewSearchEqualFunc :: Maybe TreeViewSearchEqualFunc
    noTreeViewSearchEqualFunc = Maybe TreeViewSearchEqualFunc
    forall a. Maybe a
    Nothing

    -- | A function used for checking whether a row in /@model@/ matches
    -- a search key string entered by the user. Note the return value
    -- is reversed from what you would normally expect, though it
    -- has some similarity to @/strcmp()/@ returning 0 for equal strings.
    type TreeViewSearchEqualFunc_WithClosures =
        Gtk.TreeModel.TreeModel
        -- ^ /@model@/: the t'GI.Gtk.Interfaces.TreeModel.TreeModel' being searched
        -> Int32
        -- ^ /@column@/: the search column set by 'GI.Gtk.Objects.TreeView.treeViewSetSearchColumn'
        -> T.Text
        -- ^ /@key@/: the key string to compare with
        -> Gtk.TreeIter.TreeIter
        -- ^ /@iter@/: a t'GI.Gtk.Structs.TreeIter.TreeIter' pointing the row of /@model@/ that should be compared
        --  with /@key@/.
        -> Ptr ()
        -- ^ /@searchData@/: user data from 'GI.Gtk.Objects.TreeView.treeViewSetSearchEqualFunc'
        -> IO Bool
        -- ^ __Returns:__ 'P.False' if the row matches, 'P.True' otherwise.

    -- | A convenience synonym for @`Nothing` :: `Maybe` `TreeViewSearchEqualFunc_WithClosures`@.
    noTreeViewSearchEqualFunc_WithClosures :: Maybe TreeViewSearchEqualFunc_WithClosures
    noTreeViewSearchEqualFunc_WithClosures :: Maybe TreeViewSearchEqualFunc_WithClosures
    noTreeViewSearchEqualFunc_WithClosures = Maybe TreeViewSearchEqualFunc_WithClosures
    forall a. Maybe a
    Nothing

    -- | A simple wrapper that ignores the closure arguments.
    drop_closures_TreeViewSearchEqualFunc :: TreeViewSearchEqualFunc -> TreeViewSearchEqualFunc_WithClosures
    drop_closures_TreeViewSearchEqualFunc :: TreeViewSearchEqualFunc -> TreeViewSearchEqualFunc_WithClosures
    drop_closures_TreeViewSearchEqualFunc TreeViewSearchEqualFunc
    _f TreeModel
    model Int32
    column Text
    key TreeIter
    iter Ptr ()
    _ = TreeViewSearchEqualFunc
    _f TreeModel
    model Int32
    column Text
    key TreeIter
    iter

    -- | Wrap the callback into a `GClosure`.
    genClosure_TreeViewSearchEqualFunc :: MonadIO m => TreeViewSearchEqualFunc -> m (GClosure C_TreeViewSearchEqualFunc)
    genClosure_TreeViewSearchEqualFunc :: forall (m :: * -> *).
    MonadIO m =>
    TreeViewSearchEqualFunc -> m (GClosure C_TreeViewSearchEqualFunc)
    genClosure_TreeViewSearchEqualFunc TreeViewSearchEqualFunc
    cb = IO (GClosure C_TreeViewSearchEqualFunc)
    -> m (GClosure C_TreeViewSearchEqualFunc)
    forall a. IO a -> m a
    forall (m :: * -> *) a. MonadIO m => IO a -> m a
    liftIO (IO (GClosure C_TreeViewSearchEqualFunc)
     -> m (GClosure C_TreeViewSearchEqualFunc))
    -> IO (GClosure C_TreeViewSearchEqualFunc)
    -> m (GClosure C_TreeViewSearchEqualFunc)
    forall a b. (a -> b) -> a -> b
    $ do
        let cb' :: TreeViewSearchEqualFunc_WithClosures
    cb' = TreeViewSearchEqualFunc -> TreeViewSearchEqualFunc_WithClosures
    drop_closures_TreeViewSearchEqualFunc TreeViewSearchEqualFunc
    cb
        let cb'' :: C_TreeViewSearchEqualFunc
    cb'' = Maybe (Ptr (FunPtr C_TreeViewSearchEqualFunc))
    -> TreeViewSearchEqualFunc_WithClosures
    -> C_TreeViewSearchEqualFunc
    wrap_TreeViewSearchEqualFunc Maybe (Ptr (FunPtr C_TreeViewSearchEqualFunc))
    forall a. Maybe a
    Nothing TreeViewSearchEqualFunc_WithClosures
    cb'
        C_TreeViewSearchEqualFunc -> IO (FunPtr C_TreeViewSearchEqualFunc)
    mk_TreeViewSearchEqualFunc C_TreeViewSearchEqualFunc
    cb'' IO (FunPtr C_TreeViewSearchEqualFunc)
    -> (FunPtr C_TreeViewSearchEqualFunc
        -> IO (GClosure C_TreeViewSearchEqualFunc))
    -> IO (GClosure C_TreeViewSearchEqualFunc)
    forall a b. IO a -> (a -> IO b) -> IO b
    forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
    >>= FunPtr C_TreeViewSearchEqualFunc
    -> IO (GClosure C_TreeViewSearchEqualFunc)
    forall (m :: * -> *) a. MonadIO m => FunPtr a -> m (GClosure a)
    B.GClosure.newGClosure

    -- | Wrap a `TreeViewSearchEqualFunc` into a `C_TreeViewSearchEqualFunc`.
    wrap_TreeViewSearchEqualFunc ::
        Maybe (Ptr (FunPtr C_TreeViewSearchEqualFunc)) ->
        TreeViewSearchEqualFunc_WithClosures ->
        C_TreeViewSearchEqualFunc
    wrap_TreeViewSearchEqualFunc :: Maybe (Ptr (FunPtr C_TreeViewSearchEqualFunc))
    -> TreeViewSearchEqualFunc_WithClosures
    -> C_TreeViewSearchEqualFunc
    wrap_TreeViewSearchEqualFunc Maybe (Ptr (FunPtr C_TreeViewSearchEqualFunc))
    gi'funptrptr TreeViewSearchEqualFunc_WithClosures
    gi'cb Ptr TreeModel
    model Int32
    column CString
    key Ptr TreeIter
    iter Ptr ()
    searchData = do
        model' <- ((ManagedPtr TreeModel -> TreeModel)
    -> Ptr TreeModel -> IO TreeModel
    forall a b.
    (HasCallStack, GObject a, GObject b) =>
    (ManagedPtr a -> a) -> Ptr b -> IO a
    newObject ManagedPtr TreeModel -> TreeModel
    Gtk.TreeModel.TreeModel) Ptr TreeModel
    model
        key' <- cstringToText key
        B.ManagedPtr.withTransient  iter $ \TreeIter
    iter' -> do
            result <- TreeViewSearchEqualFunc_WithClosures
    gi'cb  TreeModel
    model' Int32
    column Text
    key' TreeIter
    iter' Ptr ()
    searchData
            maybeReleaseFunPtr gi'funptrptr
            let result' = (Int -> CInt
    forall a b. (Integral a, Num b) => a -> b
    P.fromIntegral (Int -> CInt) -> (Bool -> Int) -> Bool -> CInt
    forall b c a. (b -> c) -> (a -> b) -> a -> c
    . Bool -> Int
    forall a. Enum a => a -> Int
    P.fromEnum) Bool
    result
            return result'

    -- callback TreeViewRowSeparatorFunc
    {- Callable
      { returnType = Just (TBasicType TBoolean)
      , returnMayBeNull = False
      , returnTransfer = TransferNothing
      , returnDocumentation =
          Documentation
            { rawDocText = Just "%TRUE if the row is a separator"
            , sinceVersion = Nothing
            }
      , args =
          [ Arg
              { argCName = "model"
              , argType =
                  TInterface Name { namespace = "Gtk" , name = "TreeModel" }
              , argCType = Just "GtkTreeModel*"
              , direction = DirectionIn
              , mayBeNull = False
              , argDoc =
                  Documentation
                    { rawDocText = Just "the #GtkTreeModel" , sinceVersion = Nothing }
              , argScope = ScopeTypeInvalid
              , argClosure = -1
              , argDestroy = -1
              , argCallerAllocates = False
              , argCallbackUserData = False
              , transfer = TransferNothing
              }
          , Arg
              { argCName = "iter"
              , argType =
                  TInterface Name { namespace = "Gtk" , name = "TreeIter" }
              , argCType = Just "GtkTreeIter*"
              , direction = DirectionIn
              , mayBeNull = False
              , argDoc =
                  Documentation
                    { rawDocText = Just "a #GtkTreeIter pointing at a row in @model"
                    , sinceVersion = Nothing
                    }
              , argScope = ScopeTypeInvalid
              , argClosure = -1
              , argDestroy = -1
              , argCallerAllocates = False
              , argCallbackUserData = False
              , transfer = TransferNothing
              }
          , Arg
              { argCName = "data"
              , argType = TBasicType TPtr
              , argCType = Just "gpointer"
              , direction = DirectionIn
              , mayBeNull = True
              , argDoc =
                  Documentation
                    { rawDocText = Just "user data" , sinceVersion = Nothing }
              , argScope = ScopeTypeInvalid
              , argClosure = -1
              , argDestroy = -1
              , argCallerAllocates = False
              , argCallbackUserData = True
              , transfer = TransferNothing
              }
          ]
      , skipReturn = False
      , callableThrows = False
      , callableDeprecated = Nothing
      , callableDocumentation =
          Documentation
            { rawDocText =
                Just
                  "Function type for determining whether the row pointed to by @iter should\nbe rendered as a separator. A common way to implement this is to have a\nboolean column in the model, whose values the #GtkTreeViewRowSeparatorFunc\nreturns."
            , sinceVersion = Nothing
            }
      , callableResolvable = Nothing
      }
    -}
    -- | Type for the callback on the (unwrapped) C side.
    type C_TreeViewRowSeparatorFunc =
        Ptr Gtk.TreeModel.TreeModel ->
        Ptr Gtk.TreeIter.TreeIter ->
        Ptr () ->
        IO CInt

    -- Args: [ Arg
    --           { argCName = "model"
    --           , argType =
    --               TInterface Name { namespace = "Gtk" , name = "TreeModel" }
    --           , argCType = Just "GtkTreeModel*"
    --           , direction = DirectionIn
    --           , mayBeNull = False
    --           , argDoc =
    --               Documentation
    --                 { rawDocText = Just "the #GtkTreeModel" , sinceVersion = Nothing }
    --           , argScope = ScopeTypeInvalid
    --           , argClosure = -1
    --           , argDestroy = -1
    --           , argCallerAllocates = False
    --           , argCallbackUserData = False
    --           , transfer = TransferNothing
    --           }
    --       , Arg
    --           { argCName = "iter"
    --           , argType =
    --               TInterface Name { namespace = "Gtk" , name = "TreeIter" }
    --           , argCType = Just "GtkTreeIter*"
    --           , direction = DirectionIn
    --           , mayBeNull = False
    --           , argDoc =
    --               Documentation
    --                 { rawDocText = Just "a #GtkTreeIter pointing at a row in @model"
    --                 , sinceVersion = Nothing
    --                 }
    --           , argScope = ScopeTypeInvalid
    --           , argClosure = -1
    --           , argDestroy = -1
    --           , argCallerAllocates = False
    --           , argCallbackUserData = False
    --           , transfer = TransferNothing
    --           }
    --       , Arg
    --           { argCName = "data"
    --           , argType = TBasicType TPtr
    --           , argCType = Just "gpointer"
    --           , direction = DirectionIn
    --           , mayBeNull = True
    --           , argDoc =
    --               Documentation
    --                 { rawDocText = Just "user data" , sinceVersion = Nothing }
    --           , argScope = ScopeTypeInvalid
    --           , argClosure = -1
    --           , argDestroy = -1
    --           , argCallerAllocates = False
    --           , argCallbackUserData = True
    --           , transfer = TransferNothing
    --           }
    --       ]
    -- Lengths: []
    -- returnType: Just (TBasicType TBoolean)
    -- throws : False
    -- Skip return : False

    foreign import ccall "dynamic" __dynamic_C_TreeViewRowSeparatorFunc :: FunPtr C_TreeViewRowSeparatorFunc -> C_TreeViewRowSeparatorFunc

    -- | Given a pointer to a foreign C function, wrap it into a function callable from Haskell.
    dynamic_TreeViewRowSeparatorFunc ::
        (B.CallStack.HasCallStack, MonadIO m, Gtk.TreeModel.IsTreeModel a) =>
        FunPtr C_TreeViewRowSeparatorFunc
        -> a
        -- ^ /@model@/: the t'GI.Gtk.Interfaces.TreeModel.TreeModel'
        -> Gtk.TreeIter.TreeIter
        -- ^ /@iter@/: a t'GI.Gtk.Structs.TreeIter.TreeIter' pointing at a row in /@model@/
        -> Ptr ()
        -- ^ /@data@/: user data
        -> m Bool
        -- ^ __Returns:__ 'P.True' if the row is a separator
    dynamic_TreeViewRowSeparatorFunc :: forall (m :: * -> *) a.
    (HasCallStack, MonadIO m, IsTreeModel a) =>
    FunPtr C_TreeViewRowSeparatorFunc
    -> a -> TreeIter -> Ptr () -> m Bool
    dynamic_TreeViewRowSeparatorFunc FunPtr C_TreeViewRowSeparatorFunc
    __funPtr a
    model TreeIter
    iter Ptr ()
    data_ = IO Bool -> m Bool
    forall a. IO a -> m a
    forall (m :: * -> *) a. MonadIO m => IO a -> m a
    liftIO (IO Bool -> m Bool) -> IO Bool -> m Bool
    forall a b. (a -> b) -> a -> b
    $ do
        model' <- a -> IO (Ptr TreeModel)
    forall a b. (HasCallStack, ManagedPtrNewtype a) => a -> IO (Ptr b)
    unsafeManagedPtrCastPtr a
    model
        iter' <- unsafeManagedPtrGetPtr iter
        result <- (__dynamic_C_TreeViewRowSeparatorFunc __funPtr) model' iter' data_
        let result' = (CInt -> CInt -> Bool
    forall a. Eq a => a -> a -> Bool
    /= CInt
    0) CInt
    result
        touchManagedPtr model
        touchManagedPtr iter
        return result'

    -- | Generate a function pointer callable from C code, from a `C_TreeViewRowSeparatorFunc`.
    foreign import ccall "wrapper"
        mk_TreeViewRowSeparatorFunc :: C_TreeViewRowSeparatorFunc -> IO (FunPtr C_TreeViewRowSeparatorFunc)

    -- | Function type for determining whether the row pointed to by /@iter@/ should
    -- be rendered as a separator. A common way to implement this is to have a
    -- boolean column in the model, whose values the t'GI.Gtk.Callbacks.TreeViewRowSeparatorFunc'
    -- returns.
    type TreeViewRowSeparatorFunc =
        Gtk.TreeModel.TreeModel
        -- ^ /@model@/: the t'GI.Gtk.Interfaces.TreeModel.TreeModel'
        -> Gtk.TreeIter.TreeIter
        -- ^ /@iter@/: a t'GI.Gtk.Structs.TreeIter.TreeIter' pointing at a row in /@model@/
        -> IO Bool
        -- ^ __Returns:__ 'P.True' if the row is a separator

    -- | A convenience synonym for @`Nothing` :: `Maybe` `TreeViewRowSeparatorFunc`@.
    noTreeViewRowSeparatorFunc :: Maybe TreeViewRowSeparatorFunc
    noTreeViewRowSeparatorFunc :: Maybe TreeViewRowSeparatorFunc
    noTreeViewRowSeparatorFunc = Maybe TreeViewRowSeparatorFunc
    forall a. Maybe a
    Nothing

    -- | Function type for determining whether the row pointed to by /@iter@/ should
    -- be rendered as a separator. A common way to implement this is to have a
    -- boolean column in the model, whose values the t'GI.Gtk.Callbacks.TreeViewRowSeparatorFunc'
    -- returns.
    type TreeViewRowSeparatorFunc_WithClosures =
        Gtk.TreeModel.TreeModel
        -- ^ /@model@/: the t'GI.Gtk.Interfaces.TreeModel.TreeModel'
        -> Gtk.TreeIter.TreeIter
        -- ^ /@iter@/: a t'GI.Gtk.Structs.TreeIter.TreeIter' pointing at a row in /@model@/
        -> Ptr ()
        -- ^ /@data@/: user data
        -> IO Bool
        -- ^ __Returns:__ 'P.True' if the row is a separator

    -- | A convenience synonym for @`Nothing` :: `Maybe` `TreeViewRowSeparatorFunc_WithClosures`@.
    noTreeViewRowSeparatorFunc_WithClosures :: Maybe TreeViewRowSeparatorFunc_WithClosures
    noTreeViewRowSeparatorFunc_WithClosures :: Maybe TreeViewRowSeparatorFunc_WithClosures
    noTreeViewRowSeparatorFunc_WithClosures = Maybe TreeViewRowSeparatorFunc_WithClosures
    forall a. Maybe a
    Nothing

    -- | A simple wrapper that ignores the closure arguments.
    drop_closures_TreeViewRowSeparatorFunc :: TreeViewRowSeparatorFunc -> TreeViewRowSeparatorFunc_WithClosures
    drop_closures_TreeViewRowSeparatorFunc :: TreeViewRowSeparatorFunc -> TreeViewRowSeparatorFunc_WithClosures
    drop_closures_TreeViewRowSeparatorFunc TreeViewRowSeparatorFunc
    _f TreeModel
    model TreeIter
    iter Ptr ()
    _ = TreeViewRowSeparatorFunc
    _f TreeModel
    model TreeIter
    iter

    -- | Wrap the callback into a `GClosure`.
    genClosure_TreeViewRowSeparatorFunc :: MonadIO m => TreeViewRowSeparatorFunc -> m (GClosure C_TreeViewRowSeparatorFunc)
    genClosure_TreeViewRowSeparatorFunc :: forall (m :: * -> *).
    MonadIO m =>
    TreeViewRowSeparatorFunc -> m (GClosure C_TreeViewRowSeparatorFunc)
    genClosure_TreeViewRowSeparatorFunc TreeViewRowSeparatorFunc
    cb = IO (GClosure C_TreeViewRowSeparatorFunc)
    -> m (GClosure C_TreeViewRowSeparatorFunc)
    forall a. IO a -> m a
    forall (m :: * -> *) a. MonadIO m => IO a -> m a
    liftIO (IO (GClosure C_TreeViewRowSeparatorFunc)
     -> m (GClosure C_TreeViewRowSeparatorFunc))
    -> IO (GClosure C_TreeViewRowSeparatorFunc)
    -> m (GClosure C_TreeViewRowSeparatorFunc)
    forall a b. (a -> b) -> a -> b
    $ do
        let cb' :: TreeViewRowSeparatorFunc_WithClosures
    cb' = TreeViewRowSeparatorFunc -> TreeViewRowSeparatorFunc_WithClosures
    drop_closures_TreeViewRowSeparatorFunc TreeViewRowSeparatorFunc
    cb
        let cb'' :: C_TreeViewRowSeparatorFunc
    cb'' = Maybe (Ptr (FunPtr C_TreeViewRowSeparatorFunc))
    -> TreeViewRowSeparatorFunc_WithClosures
    -> C_TreeViewRowSeparatorFunc
    wrap_TreeViewRowSeparatorFunc Maybe (Ptr (FunPtr C_TreeViewRowSeparatorFunc))
    forall a. Maybe a
    Nothing TreeViewRowSeparatorFunc_WithClosures
    cb'
        C_TreeViewRowSeparatorFunc
    -> IO (FunPtr C_TreeViewRowSeparatorFunc)
    mk_TreeViewRowSeparatorFunc C_TreeViewRowSeparatorFunc
    cb'' IO (FunPtr C_TreeViewRowSeparatorFunc)
    -> (FunPtr C_TreeViewRowSeparatorFunc
        -> IO (GClosure C_TreeViewRowSeparatorFunc))
    -> IO (GClosure C_TreeViewRowSeparatorFunc)
    forall a b. IO a -> (a -> IO b) -> IO b
    forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
    >>= FunPtr C_TreeViewRowSeparatorFunc
    -> IO (GClosure C_TreeViewRowSeparatorFunc)
    forall (m :: * -> *) a. MonadIO m => FunPtr a -> m (GClosure a)
    B.GClosure.newGClosure

    -- | Wrap a `TreeViewRowSeparatorFunc` into a `C_TreeViewRowSeparatorFunc`.
    wrap_TreeViewRowSeparatorFunc ::
        Maybe (Ptr (FunPtr C_TreeViewRowSeparatorFunc)) ->
        TreeViewRowSeparatorFunc_WithClosures ->
        C_TreeViewRowSeparatorFunc
    wrap_TreeViewRowSeparatorFunc :: Maybe (Ptr (FunPtr C_TreeViewRowSeparatorFunc))
    -> TreeViewRowSeparatorFunc_WithClosures
    -> C_TreeViewRowSeparatorFunc
    wrap_TreeViewRowSeparatorFunc Maybe (Ptr (FunPtr C_TreeViewRowSeparatorFunc))
    gi'funptrptr TreeViewRowSeparatorFunc_WithClosures
    gi'cb Ptr TreeModel
    model Ptr TreeIter
    iter Ptr ()
    data_ = do
        model' <- ((ManagedPtr TreeModel -> TreeModel)
    -> Ptr TreeModel -> IO TreeModel
    forall a b.
    (HasCallStack, GObject a, GObject b) =>
    (ManagedPtr a -> a) -> Ptr b -> IO a
    newObject ManagedPtr TreeModel -> TreeModel
    Gtk.TreeModel.TreeModel) Ptr TreeModel
    model
        B.ManagedPtr.withTransient  iter $ \TreeIter
    iter' -> do
            result <- TreeViewRowSeparatorFunc_WithClosures
    gi'cb  TreeModel
    model' TreeIter
    iter' Ptr ()
    data_
            maybeReleaseFunPtr gi'funptrptr
            let result' = (Int -> CInt
    forall a b. (Integral a, Num b) => a -> b
    P.fromIntegral (Int -> CInt) -> (Bool -> Int) -> Bool -> CInt
    forall b c a. (b -> c) -> (a -> b) -> a -> c
    . Bool -> Int
    forall a. Enum a => a -> Int
    P.fromEnum) Bool
    result
            return result'

    -- callback TreeViewMappingFunc
    {- Callable
      { returnType = Nothing
      , returnMayBeNull = False
      , returnTransfer = TransferNothing
      , returnDocumentation =
          Documentation { rawDocText = Nothing , sinceVersion = Nothing }
      , args =
          [ Arg
              { argCName = "tree_view"
              , argType =
                  TInterface Name { namespace = "Gtk" , name = "TreeView" }
              , argCType = Just "GtkTreeView*"
              , direction = DirectionIn
              , mayBeNull = False
              , argDoc =
                  Documentation
                    { rawDocText = Just "A #GtkTreeView" , sinceVersion = Nothing }
              , argScope = ScopeTypeInvalid
              , argClosure = -1
              , argDestroy = -1
              , argCallerAllocates = False
              , argCallbackUserData = False
              , transfer = TransferNothing
              }
          , Arg
              { argCName = "path"
              , argType =
                  TInterface Name { namespace = "Gtk" , name = "TreePath" }
              , argCType = Just "GtkTreePath*"
              , direction = DirectionIn
              , mayBeNull = False
              , argDoc =
                  Documentation
                    { rawDocText = Just "The path that\8217s expanded"
                    , sinceVersion = Nothing
                    }
              , argScope = ScopeTypeInvalid
              , argClosure = -1
              , argDestroy = -1
              , argCallerAllocates = False
              , argCallbackUserData = False
              , transfer = TransferNothing
              }
          , Arg
              { argCName = "user_data"
              , argType = TBasicType TPtr
              , argCType = Just "gpointer"
              , direction = DirectionIn
              , mayBeNull = True
              , argDoc =
                  Documentation
                    { rawDocText = Just "user data" , sinceVersion = Nothing }
              , argScope = ScopeTypeInvalid
              , argClosure = -1
              , argDestroy = -1
              , argCallerAllocates = False
              , argCallbackUserData = True
              , transfer = TransferNothing
              }
          ]
      , skipReturn = False
      , callableThrows = False
      , callableDeprecated = Nothing
      , callableDocumentation =
          Documentation
            { rawDocText =
                Just "Function used for gtk_tree_view_map_expanded_rows()."
            , sinceVersion = Nothing
            }
      , callableResolvable = Nothing
      }
    -}
    -- | Type for the callback on the (unwrapped) C side.
    type C_TreeViewMappingFunc =
        Ptr Gtk.TreeView.TreeView ->
        Ptr Gtk.TreePath.TreePath ->
        Ptr () ->
        IO ()

    -- Args: [ Arg
    --           { argCName = "tree_view"
    --           , argType =
    --               TInterface Name { namespace = "Gtk" , name = "TreeView" }
    --           , argCType = Just "GtkTreeView*"
    --           , direction = DirectionIn
    --           , mayBeNull = False
    --           , argDoc =
    --               Documentation
    --                 { rawDocText = Just "A #GtkTreeView" , sinceVersion = Nothing }
    --           , argScope = ScopeTypeInvalid
    --           , argClosure = -1
    --           , argDestroy = -1
    --           , argCallerAllocates = False
    --           , argCallbackUserData = False
    --           , transfer = TransferNothing
    --           }
    --       , Arg
    --           { argCName = "path"
    --           , argType =
    --               TInterface Name { namespace = "Gtk" , name = "TreePath" }
    --           , argCType = Just "GtkTreePath*"
    --           , direction = DirectionIn
    --           , mayBeNull = False
    --           , argDoc =
    --               Documentation
    --                 { rawDocText = Just "The path that\8217s expanded"
    --                 , sinceVersion = Nothing
    --                 }
    --           , argScope = ScopeTypeInvalid
    --           , argClosure = -1
    --           , argDestroy = -1
    --           , argCallerAllocates = False
    --           , argCallbackUserData = False
    --           , transfer = TransferNothing
    --           }
    --       , Arg
    --           { argCName = "user_data"
    --           , argType = TBasicType TPtr
    --           , argCType = Just "gpointer"
    --           , direction = DirectionIn
    --           , mayBeNull = True
    --           , argDoc =
    --               Documentation
    --                 { rawDocText = Just "user data" , sinceVersion = Nothing }
    --           , argScope = ScopeTypeInvalid
    --           , argClosure = -1
    --           , argDestroy = -1
    --           , argCallerAllocates = False
    --           , argCallbackUserData = True
    --           , transfer = TransferNothing
    --           }
    --       ]
    -- Lengths: []
    -- returnType: Nothing
    -- throws : False
    -- Skip return : False

    foreign import ccall "dynamic" __dynamic_C_TreeViewMappingFunc :: FunPtr C_TreeViewMappingFunc -> C_TreeViewMappingFunc

    -- | Given a pointer to a foreign C function, wrap it into a function callable from Haskell.
    dynamic_TreeViewMappingFunc ::
        (B.CallStack.HasCallStack, MonadIO m, Gtk.TreeView.IsTreeView a) =>
        FunPtr C_TreeViewMappingFunc
        -> a
        -- ^ /@treeView@/: A t'GI.Gtk.Objects.TreeView.TreeView'
        -> Gtk.TreePath.TreePath
        -- ^ /@path@/: The path that’s expanded
        -> Ptr ()
        -- ^ /@userData@/: user data
        -> m ()
    dynamic_TreeViewMappingFunc :: forall (m :: * -> *) a.
    (HasCallStack, MonadIO m, IsTreeView a) =>
    FunPtr C_TreeViewMappingFunc -> a -> TreePath -> Ptr () -> m ()
    dynamic_TreeViewMappingFunc FunPtr C_TreeViewMappingFunc
    __funPtr a
    treeView TreePath
    path Ptr ()
    userData = IO () -> m ()
    forall a. IO a -> m a
    forall (m :: * -> *) a. MonadIO m => IO a -> m a
    liftIO (IO () -> m ()) -> IO () -> m ()
    forall a b. (a -> b) -> a -> b
    $ do
        treeView' <- a -> IO (Ptr TreeView)
    forall a b. (HasCallStack, ManagedPtrNewtype a) => a -> IO (Ptr b)
    unsafeManagedPtrCastPtr a
    treeView
        path' <- unsafeManagedPtrGetPtr path
        (__dynamic_C_TreeViewMappingFunc __funPtr) treeView' path' userData
        touchManagedPtr treeView
        touchManagedPtr path
        return ()

    -- | Generate a function pointer callable from C code, from a `C_TreeViewMappingFunc`.
    foreign import ccall "wrapper"
        mk_TreeViewMappingFunc :: C_TreeViewMappingFunc -> IO (FunPtr C_TreeViewMappingFunc)

    -- | Function used for 'GI.Gtk.Objects.TreeView.treeViewMapExpandedRows'.
    type TreeViewMappingFunc =
        Gtk.TreeView.TreeView
        -- ^ /@treeView@/: A t'GI.Gtk.Objects.TreeView.TreeView'
        -> Gtk.TreePath.TreePath
        -- ^ /@path@/: The path that’s expanded
        -> IO ()

    -- | A convenience synonym for @`Nothing` :: `Maybe` `TreeViewMappingFunc`@.
    noTreeViewMappingFunc :: Maybe TreeViewMappingFunc
    noTreeViewMappingFunc :: Maybe TreeViewMappingFunc
    noTreeViewMappingFunc = Maybe TreeViewMappingFunc
    forall a. Maybe a
    Nothing

    -- | Function used for 'GI.Gtk.Objects.TreeView.treeViewMapExpandedRows'.
    type TreeViewMappingFunc_WithClosures =
        Gtk.TreeView.TreeView
        -- ^ /@treeView@/: A t'GI.Gtk.Objects.TreeView.TreeView'
        -> Gtk.TreePath.TreePath
        -- ^ /@path@/: The path that’s expanded
        -> Ptr ()
        -- ^ /@userData@/: user data
        -> IO ()

    -- | A convenience synonym for @`Nothing` :: `Maybe` `TreeViewMappingFunc_WithClosures`@.
    noTreeViewMappingFunc_WithClosures :: Maybe TreeViewMappingFunc_WithClosures
    noTreeViewMappingFunc_WithClosures :: Maybe TreeViewMappingFunc_WithClosures
    noTreeViewMappingFunc_WithClosures = Maybe TreeViewMappingFunc_WithClosures
    forall a. Maybe a
    Nothing

    -- | A simple wrapper that ignores the closure arguments.
    drop_closures_TreeViewMappingFunc :: TreeViewMappingFunc -> TreeViewMappingFunc_WithClosures
    drop_closures_TreeViewMappingFunc :: TreeViewMappingFunc -> TreeViewMappingFunc_WithClosures
    drop_closures_TreeViewMappingFunc TreeViewMappingFunc
    _f TreeView
    treeView TreePath
    path Ptr ()
    _ = TreeViewMappingFunc
    _f TreeView
    treeView TreePath
    path

    -- | Wrap the callback into a `GClosure`.
    genClosure_TreeViewMappingFunc :: MonadIO m => TreeViewMappingFunc -> m (GClosure C_TreeViewMappingFunc)
    genClosure_TreeViewMappingFunc :: forall (m :: * -> *).
    MonadIO m =>
    TreeViewMappingFunc -> m (GClosure C_TreeViewMappingFunc)
    genClosure_TreeViewMappingFunc TreeViewMappingFunc
    cb = IO (GClosure C_TreeViewMappingFunc)
    -> m (GClosure C_TreeViewMappingFunc)
    forall a. IO a -> m a
    forall (m :: * -> *) a. MonadIO m => IO a -> m a
    liftIO (IO (GClosure C_TreeViewMappingFunc)
     -> m (GClosure C_TreeViewMappingFunc))
    -> IO (GClosure C_TreeViewMappingFunc)
    -> m (GClosure C_TreeViewMappingFunc)
    forall a b. (a -> b) -> a -> b
    $ do
        let cb' :: TreeViewMappingFunc_WithClosures
    cb' = TreeViewMappingFunc -> TreeViewMappingFunc_WithClosures
    drop_closures_TreeViewMappingFunc TreeViewMappingFunc
    cb
        let cb'' :: C_TreeViewMappingFunc
    cb'' = Maybe (Ptr (FunPtr C_TreeViewMappingFunc))
    -> TreeViewMappingFunc_WithClosures -> C_TreeViewMappingFunc
    wrap_TreeViewMappingFunc Maybe (Ptr (FunPtr C_TreeViewMappingFunc))
    forall a. Maybe a
    Nothing TreeViewMappingFunc_WithClosures
    cb'
        C_TreeViewMappingFunc -> IO (FunPtr C_TreeViewMappingFunc)
    mk_TreeViewMappingFunc C_TreeViewMappingFunc
    cb'' IO (FunPtr C_TreeViewMappingFunc)
    -> (FunPtr C_TreeViewMappingFunc
        -> IO (GClosure C_TreeViewMappingFunc))
    -> IO (GClosure C_TreeViewMappingFunc)
    forall a b. IO a -> (a -> IO b) -> IO b
    forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
    >>= FunPtr C_TreeViewMappingFunc -> IO (GClosure C_TreeViewMappingFunc)
    forall (m :: * -> *) a. MonadIO m => FunPtr a -> m (GClosure a)
    B.GClosure.newGClosure

    -- | Wrap a `TreeViewMappingFunc` into a `C_TreeViewMappingFunc`.
    wrap_TreeViewMappingFunc ::
        Maybe (Ptr (FunPtr C_TreeViewMappingFunc)) ->
        TreeViewMappingFunc_WithClosures ->
        C_TreeViewMappingFunc
    wrap_TreeViewMappingFunc :: Maybe (Ptr (FunPtr C_TreeViewMappingFunc))
    -> TreeViewMappingFunc_WithClosures -> C_TreeViewMappingFunc
    wrap_TreeViewMappingFunc Maybe (Ptr (FunPtr C_TreeViewMappingFunc))
    gi'funptrptr TreeViewMappingFunc_WithClosures
    gi'cb Ptr TreeView
    treeView Ptr TreePath
    path Ptr ()
    userData = do
        treeView' <- ((ManagedPtr TreeView -> TreeView) -> Ptr TreeView -> IO TreeView
    forall a b.
    (HasCallStack, GObject a, GObject b) =>
    (ManagedPtr a -> a) -> Ptr b -> IO a
    newObject ManagedPtr TreeView -> TreeView
    Gtk.TreeView.TreeView) Ptr TreeView
    treeView
        B.ManagedPtr.withTransient  path $ \TreePath
    path' -> do
            TreeViewMappingFunc_WithClosures
    gi'cb  TreeView
    treeView' TreePath
    path' Ptr ()
    userData
            Maybe (Ptr (FunPtr C_TreeViewMappingFunc)) -> IO ()
    forall a. Maybe (Ptr (FunPtr a)) -> IO ()
    maybeReleaseFunPtr Maybe (Ptr (FunPtr C_TreeViewMappingFunc))
    gi'funptrptr

    -- callback TreeViewColumnDropFunc
    {- Callable
      { returnType = Just (TBasicType TBoolean)
      , returnMayBeNull = False
      , returnTransfer = TransferNothing
      , returnDocumentation =
          Documentation
            { rawDocText = Just "%TRUE, if @column can be dropped in this spot"
            , sinceVersion = Nothing
            }
      , args =
          [ Arg
              { argCName = "tree_view"
              , argType =
                  TInterface Name { namespace = "Gtk" , name = "TreeView" }
              , argCType = Just "GtkTreeView*"
              , direction = DirectionIn
              , mayBeNull = False
              , argDoc =
                  Documentation
                    { rawDocText = Just "A #GtkTreeView" , sinceVersion = Nothing }
              , argScope = ScopeTypeInvalid
              , argClosure = -1
              , argDestroy = -1
              , argCallerAllocates = False
              , argCallbackUserData = False
              , transfer = TransferNothing
              }
          , Arg
              { argCName = "column"
              , argType =
                  TInterface Name { namespace = "Gtk" , name = "TreeViewColumn" }
              , argCType = Just "GtkTreeViewColumn*"
              , direction = DirectionIn
              , mayBeNull = False
              , argDoc =
                  Documentation
                    { rawDocText = Just "The #GtkTreeViewColumn being dragged"
                    , sinceVersion = Nothing
                    }
              , argScope = ScopeTypeInvalid
              , argClosure = -1
              , argDestroy = -1
              , argCallerAllocates = False
              , argCallbackUserData = False
              , transfer = TransferNothing
              }
          , Arg
              { argCName = "prev_column"
              , argType =
                  TInterface Name { namespace = "Gtk" , name = "TreeViewColumn" }
              , argCType = Just "GtkTreeViewColumn*"
              , direction = DirectionIn
              , mayBeNull = False
              , argDoc =
                  Documentation
                    { rawDocText = Just "A #GtkTreeViewColumn on one side of @column"
                    , sinceVersion = Nothing
                    }
              , argScope = ScopeTypeInvalid
              , argClosure = -1
              , argDestroy = -1
              , argCallerAllocates = False
              , argCallbackUserData = False
              , transfer = TransferNothing
              }
          , Arg
              { argCName = "next_column"
              , argType =
                  TInterface Name { namespace = "Gtk" , name = "TreeViewColumn" }
              , argCType = Just "GtkTreeViewColumn*"
              , direction = DirectionIn
              , mayBeNull = False
              , argDoc =
                  Documentation
                    { rawDocText =
                        Just "A #GtkTreeViewColumn on the other side of @column"
                    , sinceVersion = Nothing
                    }
              , argScope = ScopeTypeInvalid
              , argClosure = -1
              , argDestroy = -1
              , argCallerAllocates = False
              , argCallbackUserData = False
              , transfer = TransferNothing
              }
          , Arg
              { argCName = "data"
              , argType = TBasicType TPtr
              , argCType = Just "gpointer"
              , direction = DirectionIn
              , mayBeNull = True
              , argDoc =
                  Documentation
                    { rawDocText = Just "user data" , sinceVersion = Nothing }
              , argScope = ScopeTypeInvalid
              , argClosure = -1
              , argDestroy = -1
              , argCallerAllocates = False
              , argCallbackUserData = True
              , transfer = TransferNothing
              }
          ]
      , skipReturn = False
      , callableThrows = False
      , callableDeprecated = Nothing
      , callableDocumentation =
          Documentation
            { rawDocText =
                Just
                  "Function type for determining whether @column can be dropped in a\nparticular spot (as determined by @prev_column and @next_column).  In\nleft to right locales, @prev_column is on the left of the potential drop\nspot, and @next_column is on the right.  In right to left mode, this is\nreversed.  This function should return %TRUE if the spot is a valid drop\nspot.  Please note that returning %TRUE does not actually indicate that\nthe column drop was made, but is meant only to indicate a possible drop\nspot to the user."
            , sinceVersion = Nothing
            }
      , callableResolvable = Nothing
      }
    -}
    -- | Type for the callback on the (unwrapped) C side.
    type C_TreeViewColumnDropFunc =
        Ptr Gtk.TreeView.TreeView ->
        Ptr Gtk.TreeViewColumn.TreeViewColumn ->
        Ptr Gtk.TreeViewColumn.TreeViewColumn ->
        Ptr Gtk.TreeViewColumn.TreeViewColumn ->
        Ptr () ->
        IO CInt

    -- Args: [ Arg
    --           { argCName = "tree_view"
    --           , argType =
    --               TInterface Name { namespace = "Gtk" , name = "TreeView" }
    --           , argCType = Just "GtkTreeView*"
    --           , direction = DirectionIn
    --           , mayBeNull = False
    --           , argDoc =
    --               Documentation
    --                 { rawDocText = Just "A #GtkTreeView" , sinceVersion = Nothing }
    --           , argScope = ScopeTypeInvalid
    --           , argClosure = -1
    --           , argDestroy = -1
    --           , argCallerAllocates = False
    --           , argCallbackUserData = False
    --           , transfer = TransferNothing
    --           }
    --       , Arg
    --           { argCName = "column"
    --           , argType =
    --               TInterface Name { namespace = "Gtk" , name = "TreeViewColumn" }
    --           , argCType = Just "GtkTreeViewColumn*"
    --           , direction = DirectionIn
    --           , mayBeNull = False
    --           , argDoc =
    --               Documentation
    --                 { rawDocText = Just "The #GtkTreeViewColumn being dragged"
    --                 , sinceVersion = Nothing
    --                 }
    --           , argScope = ScopeTypeInvalid
    --           , argClosure = -1
    --           , argDestroy = -1
    --           , argCallerAllocates = False
    --           , argCallbackUserData = False
    --           , transfer = TransferNothing
    --           }
    --       , Arg
    --           { argCName = "prev_column"
    --           , argType =
    --               TInterface Name { namespace = "Gtk" , name = "TreeViewColumn" }
    --           , argCType = Just "GtkTreeViewColumn*"
    --           , direction = DirectionIn
    --           , mayBeNull = False
    --           , argDoc =
    --               Documentation
    --                 { rawDocText = Just "A #GtkTreeViewColumn on one side of @column"
    --                 , sinceVersion = Nothing
    --                 }
    --           , argScope = ScopeTypeInvalid
    --           , argClosure = -1
    --           , argDestroy = -1
    --           , argCallerAllocates = False
    --           , argCallbackUserData = False
    --           , transfer = TransferNothing
    --           }
    --       , Arg
    --           { argCName = "next_column"
    --           , argType =
    --               TInterface Name { namespace = "Gtk" , name = "TreeViewColumn" }
    --           , argCType = Just "GtkTreeViewColumn*"
    --           , direction = DirectionIn
    --           , mayBeNull = False
    --           , argDoc =
    --               Documentation
    --                 { rawDocText =
    --                     Just "A #GtkTreeViewColumn on the other side of @column"
    --                 , sinceVersion = Nothing
    --                 }
    --           , argScope = ScopeTypeInvalid
    --           , argClosure = -1
    --           , argDestroy = -1
    --           , argCallerAllocates = False
    --           , argCallbackUserData = False
    --           , transfer = TransferNothing
    --           }
    --       , Arg
    --           { argCName = "data"
    --           , argType = TBasicType TPtr
    --           , argCType = Just "gpointer"
    --           , direction = DirectionIn
    --           , mayBeNull = True
    --           , argDoc =
    --               Documentation
    --                 { rawDocText = Just "user data" , sinceVersion = Nothing }
    --           , argScope = ScopeTypeInvalid
    --           , argClosure = -1
    --           , argDestroy = -1
    --           , argCallerAllocates = False
    --           , argCallbackUserData = True
    --           , transfer = TransferNothing
    --           }
    --       ]
    -- Lengths: []
    -- returnType: Just (TBasicType TBoolean)
    -- throws : False
    -- Skip return : False

    foreign import ccall "dynamic" __dynamic_C_TreeViewColumnDropFunc :: FunPtr C_TreeViewColumnDropFunc -> C_TreeViewColumnDropFunc

    -- | Given a pointer to a foreign C function, wrap it into a function callable from Haskell.
    dynamic_TreeViewColumnDropFunc ::
        (B.CallStack.HasCallStack, MonadIO m, Gtk.TreeView.IsTreeView a, Gtk.TreeViewColumn.IsTreeViewColumn b, Gtk.TreeViewColumn.IsTreeViewColumn c, Gtk.TreeViewColumn.IsTreeViewColumn d) =>
        FunPtr C_TreeViewColumnDropFunc
        -> a
        -- ^ /@treeView@/: A t'GI.Gtk.Objects.TreeView.TreeView'
        -> b
        -- ^ /@column@/: The t'GI.Gtk.Objects.TreeViewColumn.TreeViewColumn' being dragged
        -> c
        -- ^ /@prevColumn@/: A t'GI.Gtk.Objects.TreeViewColumn.TreeViewColumn' on one side of /@column@/
        -> d
        -- ^ /@nextColumn@/: A t'GI.Gtk.Objects.TreeViewColumn.TreeViewColumn' on the other side of /@column@/
        -> Ptr ()
        -- ^ /@data@/: user data
        -> m Bool
        -- ^ __Returns:__ 'P.True', if /@column@/ can be dropped in this spot
    dynamic_TreeViewColumnDropFunc :: forall (m :: * -> *) a b c d.
    (HasCallStack, MonadIO m, IsTreeView a, IsTreeViewColumn b,
     IsTreeViewColumn c, IsTreeViewColumn d) =>
    FunPtr C_TreeViewColumnDropFunc
    -> a -> b -> c -> d -> Ptr () -> m Bool
    dynamic_TreeViewColumnDropFunc FunPtr C_TreeViewColumnDropFunc
    __funPtr a
    treeView b
    column c
    prevColumn d
    nextColumn Ptr ()
    data_ = IO Bool -> m Bool
    forall a. IO a -> m a
    forall (m :: * -> *) a. MonadIO m => IO a -> m a
    liftIO (IO Bool -> m Bool) -> IO Bool -> m Bool
    forall a b. (a -> b) -> a -> b
    $ do
        treeView' <- a -> IO (Ptr TreeView)
    forall a b. (HasCallStack, ManagedPtrNewtype a) => a -> IO (Ptr b)
    unsafeManagedPtrCastPtr a
    treeView
        column' <- unsafeManagedPtrCastPtr column
        prevColumn' <- unsafeManagedPtrCastPtr prevColumn
        nextColumn' <- unsafeManagedPtrCastPtr nextColumn
        result <- (__dynamic_C_TreeViewColumnDropFunc __funPtr) treeView' column' prevColumn' nextColumn' data_
        let result' = (CInt -> CInt -> Bool
    forall a. Eq a => a -> a -> Bool
    /= CInt
    0) CInt
    result
        touchManagedPtr treeView
        touchManagedPtr column
        touchManagedPtr prevColumn
        touchManagedPtr nextColumn
        return result'

    -- | Generate a function pointer callable from C code, from a `C_TreeViewColumnDropFunc`.
    foreign import ccall "wrapper"
        mk_TreeViewColumnDropFunc :: C_TreeViewColumnDropFunc -> IO (FunPtr C_TreeViewColumnDropFunc)

    -- | Function type for determining whether /@column@/ can be dropped in a
    -- particular spot (as determined by /@prevColumn@/ and /@nextColumn@/).  In
    -- left to right locales, /@prevColumn@/ is on the left of the potential drop
    -- spot, and /@nextColumn@/ is on the right.  In right to left mode, this is
    -- reversed.  This function should return 'P.True' if the spot is a valid drop
    -- spot.  Please note that returning 'P.True' does not actually indicate that
    -- the column drop was made, but is meant only to indicate a possible drop
    -- spot to the user.
    type TreeViewColumnDropFunc =
        Gtk.TreeView.TreeView
        -- ^ /@treeView@/: A t'GI.Gtk.Objects.TreeView.TreeView'
        -> Gtk.TreeViewColumn.TreeViewColumn
        -- ^ /@column@/: The t'GI.Gtk.Objects.TreeViewColumn.TreeViewColumn' being dragged
        -> Gtk.TreeViewColumn.TreeViewColumn
        -- ^ /@prevColumn@/: A t'GI.Gtk.Objects.TreeViewColumn.TreeViewColumn' on one side of /@column@/
        -> Gtk.TreeViewColumn.TreeViewColumn
        -- ^ /@nextColumn@/: A t'GI.Gtk.Objects.TreeViewColumn.TreeViewColumn' on the other side of /@column@/
        -> IO Bool
        -- ^ __Returns:__ 'P.True', if /@column@/ can be dropped in this spot

    -- | A convenience synonym for @`Nothing` :: `Maybe` `TreeViewColumnDropFunc`@.
    noTreeViewColumnDropFunc :: Maybe TreeViewColumnDropFunc
    noTreeViewColumnDropFunc :: Maybe TreeViewColumnDropFunc
    noTreeViewColumnDropFunc = Maybe TreeViewColumnDropFunc
    forall a. Maybe a
    Nothing

    -- | Function type for determining whether /@column@/ can be dropped in a
    -- particular spot (as determined by /@prevColumn@/ and /@nextColumn@/).  In
    -- left to right locales, /@prevColumn@/ is on the left of the potential drop
    -- spot, and /@nextColumn@/ is on the right.  In right to left mode, this is
    -- reversed.  This function should return 'P.True' if the spot is a valid drop
    -- spot.  Please note that returning 'P.True' does not actually indicate that
    -- the column drop was made, but is meant only to indicate a possible drop
    -- spot to the user.
    type TreeViewColumnDropFunc_WithClosures =
        Gtk.TreeView.TreeView
        -- ^ /@treeView@/: A t'GI.Gtk.Objects.TreeView.TreeView'
        -> Gtk.TreeViewColumn.TreeViewColumn
        -- ^ /@column@/: The t'GI.Gtk.Objects.TreeViewColumn.TreeViewColumn' being dragged
        -> Gtk.TreeViewColumn.TreeViewColumn
        -- ^ /@prevColumn@/: A t'GI.Gtk.Objects.TreeViewColumn.TreeViewColumn' on one side of /@column@/
        -> Gtk.TreeViewColumn.TreeViewColumn
        -- ^ /@nextColumn@/: A t'GI.Gtk.Objects.TreeViewColumn.TreeViewColumn' on the other side of /@column@/
        -> Ptr ()
        -- ^ /@data@/: user data
        -> IO Bool
        -- ^ __Returns:__ 'P.True', if /@column@/ can be dropped in this spot

    -- | A convenience synonym for @`Nothing` :: `Maybe` `TreeViewColumnDropFunc_WithClosures`@.
    noTreeViewColumnDropFunc_WithClosures :: Maybe TreeViewColumnDropFunc_WithClosures
    noTreeViewColumnDropFunc_WithClosures :: Maybe TreeViewColumnDropFunc_WithClosures
    noTreeViewColumnDropFunc_WithClosures = Maybe TreeViewColumnDropFunc_WithClosures
    forall a. Maybe a
    Nothing

    -- | A simple wrapper that ignores the closure arguments.
    drop_closures_TreeViewColumnDropFunc :: TreeViewColumnDropFunc -> TreeViewColumnDropFunc_WithClosures
    drop_closures_TreeViewColumnDropFunc :: TreeViewColumnDropFunc -> TreeViewColumnDropFunc_WithClosures
    drop_closures_TreeViewColumnDropFunc TreeViewColumnDropFunc
    _f TreeView
    treeView TreeViewColumn
    column TreeViewColumn
    prevColumn TreeViewColumn
    nextColumn Ptr ()
    _ = TreeViewColumnDropFunc
    _f TreeView
    treeView TreeViewColumn
    column TreeViewColumn
    prevColumn TreeViewColumn
    nextColumn

    -- | Wrap the callback into a `GClosure`.
    genClosure_TreeViewColumnDropFunc :: MonadIO m => TreeViewColumnDropFunc -> m (GClosure C_TreeViewColumnDropFunc)
    genClosure_TreeViewColumnDropFunc :: forall (m :: * -> *).
    MonadIO m =>
    TreeViewColumnDropFunc -> m (GClosure C_TreeViewColumnDropFunc)
    genClosure_TreeViewColumnDropFunc TreeViewColumnDropFunc
    cb = IO (GClosure C_TreeViewColumnDropFunc)
    -> m (GClosure C_TreeViewColumnDropFunc)
    forall a. IO a -> m a
    forall (m :: * -> *) a. MonadIO m => IO a -> m a
    liftIO (IO (GClosure C_TreeViewColumnDropFunc)
     -> m (GClosure C_TreeViewColumnDropFunc))
    -> IO (GClosure C_TreeViewColumnDropFunc)
    -> m (GClosure C_TreeViewColumnDropFunc)
    forall a b. (a -> b) -> a -> b
    $ do
        let cb' :: TreeViewColumnDropFunc_WithClosures
    cb' = TreeViewColumnDropFunc -> TreeViewColumnDropFunc_WithClosures
    drop_closures_TreeViewColumnDropFunc TreeViewColumnDropFunc
    cb
        let cb'' :: C_TreeViewColumnDropFunc
    cb'' = Maybe (Ptr (FunPtr C_TreeViewColumnDropFunc))
    -> TreeViewColumnDropFunc_WithClosures -> C_TreeViewColumnDropFunc
    wrap_TreeViewColumnDropFunc Maybe (Ptr (FunPtr C_TreeViewColumnDropFunc))
    forall a. Maybe a
    Nothing TreeViewColumnDropFunc_WithClosures
    cb'
        C_TreeViewColumnDropFunc -> IO (FunPtr C_TreeViewColumnDropFunc)
    mk_TreeViewColumnDropFunc C_TreeViewColumnDropFunc
    cb'' IO (FunPtr C_TreeViewColumnDropFunc)
    -> (FunPtr C_TreeViewColumnDropFunc
        -> IO (GClosure C_TreeViewColumnDropFunc))
    -> IO (GClosure C_TreeViewColumnDropFunc)
    forall a b. IO a -> (a -> IO b) -> IO b
    forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
    >>= FunPtr C_TreeViewColumnDropFunc
    -> IO (GClosure C_TreeViewColumnDropFunc)
    forall (m :: * -> *) a. MonadIO m => FunPtr a -> m (GClosure a)
    B.GClosure.newGClosure

    -- | Wrap a `TreeViewColumnDropFunc` into a `C_TreeViewColumnDropFunc`.
    wrap_TreeViewColumnDropFunc ::
        Maybe (Ptr (FunPtr C_TreeViewColumnDropFunc)) ->
        TreeViewColumnDropFunc_WithClosures ->
        C_TreeViewColumnDropFunc
    wrap_TreeViewColumnDropFunc :: Maybe (Ptr (FunPtr C_TreeViewColumnDropFunc))
    -> TreeViewColumnDropFunc_WithClosures -> C_TreeViewColumnDropFunc
    wrap_TreeViewColumnDropFunc Maybe (Ptr (FunPtr C_TreeViewColumnDropFunc))
    gi'funptrptr TreeViewColumnDropFunc_WithClosures
    gi'cb Ptr TreeView
    treeView Ptr TreeViewColumn
    column Ptr TreeViewColumn
    prevColumn Ptr TreeViewColumn
    nextColumn Ptr ()
    data_ = do
        treeView' <- ((ManagedPtr TreeView -> TreeView) -> Ptr TreeView -> IO TreeView
    forall a b.
    (HasCallStack, GObject a, GObject b) =>
    (ManagedPtr a -> a) -> Ptr b -> IO a
    newObject ManagedPtr TreeView -> TreeView
    Gtk.TreeView.TreeView) Ptr TreeView
    treeView
        column' <- (newObject Gtk.TreeViewColumn.TreeViewColumn) column
        prevColumn' <- (newObject Gtk.TreeViewColumn.TreeViewColumn) prevColumn
        nextColumn' <- (newObject Gtk.TreeViewColumn.TreeViewColumn) nextColumn
        result <- gi'cb  treeView' column' prevColumn' nextColumn' data_
        maybeReleaseFunPtr gi'funptrptr
        let result' = (Int -> CInt
    forall a b. (Integral a, Num b) => a -> b
    P.fromIntegral (Int -> CInt) -> (Bool -> Int) -> Bool -> CInt
    forall b c a. (b -> c) -> (a -> b) -> a -> c
    . Bool -> Int
    forall a. Enum a => a -> Int
    P.fromEnum) Bool
    result
        return result'

    -- callback TreeSelectionFunc
    {- Callable
      { returnType = Just (TBasicType TBoolean)
      , returnMayBeNull = False
      , returnTransfer = TransferNothing
      , returnDocumentation =
          Documentation
            { rawDocText =
                Just "%TRUE, if the selection state of the row can be toggled"
            , sinceVersion = Nothing
            }
      , args =
          [ Arg
              { argCName = "selection"
              , argType =
                  TInterface Name { namespace = "Gtk" , name = "TreeSelection" }
              , argCType = Just "GtkTreeSelection*"
              , direction = DirectionIn
              , mayBeNull = False
              , argDoc =
                  Documentation
                    { rawDocText = Just "A #GtkTreeSelection"
                    , sinceVersion = Nothing
                    }
              , argScope = ScopeTypeInvalid
              , argClosure = -1
              , argDestroy = -1
              , argCallerAllocates = False
              , argCallbackUserData = False
              , transfer = TransferNothing
              }
          , Arg
              { argCName = "model"
              , argType =
                  TInterface Name { namespace = "Gtk" , name = "TreeModel" }
              , argCType = Just "GtkTreeModel*"
              , direction = DirectionIn
              , mayBeNull = False
              , argDoc =
                  Documentation
                    { rawDocText = Just "A #GtkTreeModel being viewed"
                    , sinceVersion = Nothing
                    }
              , argScope = ScopeTypeInvalid
              , argClosure = -1
              , argDestroy = -1
              , argCallerAllocates = False
              , argCallbackUserData = False
              , transfer = TransferNothing
              }
          , Arg
              { argCName = "path"
              , argType =
                  TInterface Name { namespace = "Gtk" , name = "TreePath" }
              , argCType = Just "GtkTreePath*"
              , direction = DirectionIn
              , mayBeNull = False
              , argDoc =
                  Documentation
                    { rawDocText = Just "The #GtkTreePath of the row in question"
                    , sinceVersion = Nothing
                    }
              , argScope = ScopeTypeInvalid
              , argClosure = -1
              , argDestroy = -1
              , argCallerAllocates = False
              , argCallbackUserData = False
              , transfer = TransferNothing
              }
          , Arg
              { argCName = "path_currently_selected"
              , argType = TBasicType TBoolean
              , argCType = Just "gboolean"
              , direction = DirectionIn
              , mayBeNull = False
              , argDoc =
                  Documentation
                    { rawDocText = Just "%TRUE, if the path is currently selected"
                    , sinceVersion = Nothing
                    }
              , argScope = ScopeTypeInvalid
              , argClosure = -1
              , argDestroy = -1
              , argCallerAllocates = False
              , argCallbackUserData = False
              , transfer = TransferNothing
              }
          , Arg
              { argCName = "data"
              , argType = TBasicType TPtr
              , argCType = Just "gpointer"
              , direction = DirectionIn
              , mayBeNull = True
              , argDoc =
                  Documentation
                    { rawDocText = Just "user data" , sinceVersion = Nothing }
              , argScope = ScopeTypeInvalid
              , argClosure = -1
              , argDestroy = -1
              , argCallerAllocates = False
              , argCallbackUserData = True
              , transfer = TransferNothing
              }
          ]
      , skipReturn = False
      , callableThrows = False
      , callableDeprecated = Nothing
      , callableDocumentation =
          Documentation
            { rawDocText =
                Just
                  "A function used by gtk_tree_selection_set_select_function() to filter\nwhether or not a row may be selected.  It is called whenever a row's\nstate might change.  A return value of %TRUE indicates to @selection\nthat it is okay to change the selection."
            , sinceVersion = Nothing
            }
      , callableResolvable = Nothing
      }
    -}
    -- | Type for the callback on the (unwrapped) C side.
    type C_TreeSelectionFunc =
        Ptr Gtk.TreeSelection.TreeSelection ->
        Ptr Gtk.TreeModel.TreeModel ->
        Ptr Gtk.TreePath.TreePath ->
        CInt ->
        Ptr () ->
        IO CInt

    -- Args: [ Arg
    --           { argCName = "selection"
    --           , argType =
    --               TInterface Name { namespace = "Gtk" , name = "TreeSelection" }
    --           , argCType = Just "GtkTreeSelection*"
    --           , direction = DirectionIn
    --           , mayBeNull = False
    --           , argDoc =
    --               Documentation
    --                 { rawDocText = Just "A #GtkTreeSelection"
    --                 , sinceVersion = Nothing
    --                 }
    --           , argScope = ScopeTypeInvalid
    --           , argClosure = -1
    --           , argDestroy = -1
    --           , argCallerAllocates = False
    --           , argCallbackUserData = False
    --           , transfer = TransferNothing
    --           }
    --       , Arg
    --           { argCName = "model"
    --           , argType =
    --               TInterface Name { namespace = "Gtk" , name = "TreeModel" }
    --           , argCType = Just "GtkTreeModel*"
    --           , direction = DirectionIn
    --           , mayBeNull = False
    --           , argDoc =
    --               Documentation
    --                 { rawDocText = Just "A #GtkTreeModel being viewed"
    --                 , sinceVersion = Nothing
    --                 }
    --           , argScope = ScopeTypeInvalid
    --           , argClosure = -1
    --           , argDestroy = -1
    --           , argCallerAllocates = False
    --           , argCallbackUserData = False
    --           , transfer = TransferNothing
    --           }
    --       , Arg
    --           { argCName = "path"
    --           , argType =
    --               TInterface Name { namespace = "Gtk" , name = "TreePath" }
    --           , argCType = Just "GtkTreePath*"
    --           , direction = DirectionIn
    --           , mayBeNull = False
    --           , argDoc =
    --               Documentation
    --                 { rawDocText = Just "The #GtkTreePath of the row in question"
    --                 , sinceVersion = Nothing
    --                 }
    --           , argScope = ScopeTypeInvalid
    --           , argClosure = -1
    --           , argDestroy = -1
    --           , argCallerAllocates = False
    --           , argCallbackUserData = False
    --           , transfer = TransferNothing
    --           }
    --       , Arg
    --           { argCName = "path_currently_selected"
    --           , argType = TBasicType TBoolean
    --           , argCType = Just "gboolean"
    --           , direction = DirectionIn
    --           , mayBeNull = False
    --           , argDoc =
    --               Documentation
    --                 { rawDocText = Just "%TRUE, if the path is currently selected"
    --                 , sinceVersion = Nothing
    --                 }
    --           , argScope = ScopeTypeInvalid
    --           , argClosure = -1
    --           , argDestroy = -1
    --           , argCallerAllocates = False
    --           , argCallbackUserData = False
    --           , transfer = TransferNothing
    --           }
    --       , Arg
    --           { argCName = "data"
    --           , argType = TBasicType TPtr
    --           , argCType = Just "gpointer"
    --           , direction = DirectionIn
    --           , mayBeNull = True
    --           , argDoc =
    --               Documentation
    --                 { rawDocText = Just "user data" , sinceVersion = Nothing }
    --           , argScope = ScopeTypeInvalid
    --           , argClosure = -1
    --           , argDestroy = -1
    --           , argCallerAllocates = False
    --           , argCallbackUserData = True
    --           , transfer = TransferNothing
    --           }
    --       ]
    -- Lengths: []
    -- returnType: Just (TBasicType TBoolean)
    -- throws : False
    -- Skip return : False

    foreign import ccall "dynamic" __dynamic_C_TreeSelectionFunc :: FunPtr C_TreeSelectionFunc -> C_TreeSelectionFunc

    -- | Given a pointer to a foreign C function, wrap it into a function callable from Haskell.
    dynamic_TreeSelectionFunc ::
        (B.CallStack.HasCallStack, MonadIO m, Gtk.TreeSelection.IsTreeSelection a, Gtk.TreeModel.IsTreeModel b) =>
        FunPtr C_TreeSelectionFunc
        -> a
        -- ^ /@selection@/: A t'GI.Gtk.Objects.TreeSelection.TreeSelection'
        -> b
        -- ^ /@model@/: A t'GI.Gtk.Interfaces.TreeModel.TreeModel' being viewed
        -> Gtk.TreePath.TreePath
        -- ^ /@path@/: The t'GI.Gtk.Structs.TreePath.TreePath' of the row in question
        -> Bool
        -- ^ /@pathCurrentlySelected@/: 'P.True', if the path is currently selected
        -> Ptr ()
        -- ^ /@data@/: user data
        -> m Bool
        -- ^ __Returns:__ 'P.True', if the selection state of the row can be toggled
    dynamic_TreeSelectionFunc :: forall (m :: * -> *) a b.
    (HasCallStack, MonadIO m, IsTreeSelection a, IsTreeModel b) =>
    FunPtr C_TreeSelectionFunc
    -> a -> b -> TreePath -> Bool -> Ptr () -> m Bool
    dynamic_TreeSelectionFunc FunPtr C_TreeSelectionFunc
    __funPtr a
    selection b
    model TreePath
    path Bool
    pathCurrentlySelected Ptr ()
    data_ = IO Bool -> m Bool
    forall a. IO a -> m a
    forall (m :: * -> *) a. MonadIO m => IO a -> m a
    liftIO (IO Bool -> m Bool) -> IO Bool -> m Bool
    forall a b. (a -> b) -> a -> b
    $ do
        selection' <- a -> IO (Ptr TreeSelection)
    forall a b. (HasCallStack, ManagedPtrNewtype a) => a -> IO (Ptr b)
    unsafeManagedPtrCastPtr a
    selection
        model' <- unsafeManagedPtrCastPtr model
        path' <- unsafeManagedPtrGetPtr path
        let pathCurrentlySelected' = (Int -> CInt
    forall a b. (Integral a, Num b) => a -> b
    P.fromIntegral (Int -> CInt) -> (Bool -> Int) -> Bool -> CInt
    forall b c a. (b -> c) -> (a -> b) -> a -> c
    . Bool -> Int
    forall a. Enum a => a -> Int
    P.fromEnum) Bool
    pathCurrentlySelected
        result <- (__dynamic_C_TreeSelectionFunc __funPtr) selection' model' path' pathCurrentlySelected' data_
        let result' = (CInt -> CInt -> Bool
    forall a. Eq a => a -> a -> Bool
    /= CInt
    0) CInt
    result
        touchManagedPtr selection
        touchManagedPtr model
        touchManagedPtr path
        return result'

    -- | Generate a function pointer callable from C code, from a `C_TreeSelectionFunc`.
    foreign import ccall "wrapper"
        mk_TreeSelectionFunc :: C_TreeSelectionFunc -> IO (FunPtr C_TreeSelectionFunc)

    -- | A function used by 'GI.Gtk.Objects.TreeSelection.treeSelectionSetSelectFunction' to filter
    -- whether or not a row may be selected.  It is called whenever a row\'s
    -- state might change.  A return value of 'P.True' indicates to /@selection@/
    -- that it is okay to change the selection.
    type TreeSelectionFunc =
        Gtk.TreeSelection.TreeSelection
        -- ^ /@selection@/: A t'GI.Gtk.Objects.TreeSelection.TreeSelection'
        -> Gtk.TreeModel.TreeModel
        -- ^ /@model@/: A t'GI.Gtk.Interfaces.TreeModel.TreeModel' being viewed
        -> Gtk.TreePath.TreePath
        -- ^ /@path@/: The t'GI.Gtk.Structs.TreePath.TreePath' of the row in question
        -> Bool
        -- ^ /@pathCurrentlySelected@/: 'P.True', if the path is currently selected
        -> IO Bool
        -- ^ __Returns:__ 'P.True', if the selection state of the row can be toggled

    -- | A convenience synonym for @`Nothing` :: `Maybe` `TreeSelectionFunc`@.
    noTreeSelectionFunc :: Maybe TreeSelectionFunc
    noTreeSelectionFunc :: Maybe TreeSelectionFunc
    noTreeSelectionFunc = Maybe TreeSelectionFunc
    forall a. Maybe a
    Nothing

    -- | A function used by 'GI.Gtk.Objects.TreeSelection.treeSelectionSetSelectFunction' to filter
    -- whether or not a row may be selected.  It is called whenever a row\'s
    -- state might change.  A return value of 'P.True' indicates to /@selection@/
    -- that it is okay to change the selection.
    type TreeSelectionFunc_WithClosures =
        Gtk.TreeSelection.TreeSelection
        -- ^ /@selection@/: A t'GI.Gtk.Objects.TreeSelection.TreeSelection'
        -> Gtk.TreeModel.TreeModel
        -- ^ /@model@/: A t'GI.Gtk.Interfaces.TreeModel.TreeModel' being viewed
        -> Gtk.TreePath.TreePath
        -- ^ /@path@/: The t'GI.Gtk.Structs.TreePath.TreePath' of the row in question
        -> Bool
        -- ^ /@pathCurrentlySelected@/: 'P.True', if the path is currently selected
        -> Ptr ()
        -- ^ /@data@/: user data
        -> IO Bool
        -- ^ __Returns:__ 'P.True', if the selection state of the row can be toggled

    -- | A convenience synonym for @`Nothing` :: `Maybe` `TreeSelectionFunc_WithClosures`@.
    noTreeSelectionFunc_WithClosures :: Maybe TreeSelectionFunc_WithClosures
    noTreeSelectionFunc_WithClosures :: Maybe TreeSelectionFunc_WithClosures
    noTreeSelectionFunc_WithClosures = Maybe TreeSelectionFunc_WithClosures
    forall a. Maybe a
    Nothing

    -- | A simple wrapper that ignores the closure arguments.
    drop_closures_TreeSelectionFunc :: TreeSelectionFunc -> TreeSelectionFunc_WithClosures
    drop_closures_TreeSelectionFunc :: TreeSelectionFunc -> TreeSelectionFunc_WithClosures
    drop_closures_TreeSelectionFunc TreeSelectionFunc
    _f TreeSelection
    selection TreeModel
    model TreePath
    path Bool
    pathCurrentlySelected Ptr ()
    _ = TreeSelectionFunc
    _f TreeSelection
    selection TreeModel
    model TreePath
    path Bool
    pathCurrentlySelected

    -- | Wrap the callback into a `GClosure`.
    genClosure_TreeSelectionFunc :: MonadIO m => TreeSelectionFunc -> m (GClosure C_TreeSelectionFunc)
    genClosure_TreeSelectionFunc :: forall (m :: * -> *).
    MonadIO m =>
    TreeSelectionFunc -> m (GClosure C_TreeSelectionFunc)
    genClosure_TreeSelectionFunc TreeSelectionFunc
    cb = IO (GClosure C_TreeSelectionFunc)
    -> m (GClosure C_TreeSelectionFunc)
    forall a. IO a -> m a
    forall (m :: * -> *) a. MonadIO m => IO a -> m a
    liftIO (IO (GClosure C_TreeSelectionFunc)
     -> m (GClosure C_TreeSelectionFunc))
    -> IO (GClosure C_TreeSelectionFunc)
    -> m (GClosure C_TreeSelectionFunc)
    forall a b. (a -> b) -> a -> b
    $ do
        let cb' :: TreeSelectionFunc_WithClosures
    cb' = TreeSelectionFunc -> TreeSelectionFunc_WithClosures
    drop_closures_TreeSelectionFunc TreeSelectionFunc
    cb
        let cb'' :: C_TreeSelectionFunc
    cb'' = Maybe (Ptr (FunPtr C_TreeSelectionFunc))
    -> TreeSelectionFunc_WithClosures -> C_TreeSelectionFunc
    wrap_TreeSelectionFunc Maybe (Ptr (FunPtr C_TreeSelectionFunc))
    forall a. Maybe a
    Nothing TreeSelectionFunc_WithClosures
    cb'
        C_TreeSelectionFunc -> IO (FunPtr C_TreeSelectionFunc)
    mk_TreeSelectionFunc C_TreeSelectionFunc
    cb'' IO (FunPtr C_TreeSelectionFunc)
    -> (FunPtr C_TreeSelectionFunc
        -> IO (GClosure C_TreeSelectionFunc))
    -> IO (GClosure C_TreeSelectionFunc)
    forall a b. IO a -> (a -> IO b) -> IO b
    forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
    >>= FunPtr C_TreeSelectionFunc -> IO (GClosure C_TreeSelectionFunc)
    forall (m :: * -> *) a. MonadIO m => FunPtr a -> m (GClosure a)
    B.GClosure.newGClosure

    -- | Wrap a `TreeSelectionFunc` into a `C_TreeSelectionFunc`.
    wrap_TreeSelectionFunc ::
        Maybe (Ptr (FunPtr C_TreeSelectionFunc)) ->
        TreeSelectionFunc_WithClosures ->
        C_TreeSelectionFunc
    wrap_TreeSelectionFunc :: Maybe (Ptr (FunPtr C_TreeSelectionFunc))
    -> TreeSelectionFunc_WithClosures -> C_TreeSelectionFunc
    wrap_TreeSelectionFunc Maybe (Ptr (FunPtr C_TreeSelectionFunc))
    gi'funptrptr TreeSelectionFunc_WithClosures
    gi'cb Ptr TreeSelection
    selection Ptr TreeModel
    model Ptr TreePath
    path CInt
    pathCurrentlySelected Ptr ()
    data_ = do
        selection' <- ((ManagedPtr TreeSelection -> TreeSelection)
    -> Ptr TreeSelection -> IO TreeSelection
    forall a b.
    (HasCallStack, GObject a, GObject b) =>
    (ManagedPtr a -> a) -> Ptr b -> IO a
    newObject ManagedPtr TreeSelection -> TreeSelection
    Gtk.TreeSelection.TreeSelection) Ptr TreeSelection
    selection
        model' <- (newObject Gtk.TreeModel.TreeModel) model
        B.ManagedPtr.withTransient  path $ \TreePath
    path' -> do
            let pathCurrentlySelected' :: Bool
    pathCurrentlySelected' = (CInt -> CInt -> Bool
    forall a. Eq a => a -> a -> Bool
    /= CInt
    0) CInt
    pathCurrentlySelected
            result <- TreeSelectionFunc_WithClosures
    gi'cb  TreeSelection
    selection' TreeModel
    model' TreePath
    path' Bool
    pathCurrentlySelected' Ptr ()
    data_
            maybeReleaseFunPtr gi'funptrptr
            let result' = (Int -> CInt
    forall a b. (Integral a, Num b) => a -> b
    P.fromIntegral (Int -> CInt) -> (Bool -> Int) -> Bool -> CInt
    forall b c a. (b -> c) -> (a -> b) -> a -> c
    . Bool -> Int
    forall a. Enum a => a -> Int
    P.fromEnum) Bool
    result
            return result'

    -- callback TreeSelectionForeachFunc
    {- Callable
      { returnType = Nothing
      , returnMayBeNull = False
      , returnTransfer = TransferNothing
      , returnDocumentation =
          Documentation { rawDocText = Nothing , sinceVersion = Nothing }
      , args =
          [ Arg
              { argCName = "model"
              , argType =
                  TInterface Name { namespace = "Gtk" , name = "TreeModel" }
              , argCType = Just "GtkTreeModel*"
              , direction = DirectionIn
              , mayBeNull = False
              , argDoc =
                  Documentation
                    { rawDocText = Just "The #GtkTreeModel being viewed"
                    , sinceVersion = Nothing
                    }
              , argScope = ScopeTypeInvalid
              , argClosure = -1
              , argDestroy = -1
              , argCallerAllocates = False
              , argCallbackUserData = False
              , transfer = TransferNothing
              }
          , Arg
              { argCName = "path"
              , argType =
                  TInterface Name { namespace = "Gtk" , name = "TreePath" }
              , argCType = Just "GtkTreePath*"
              , direction = DirectionIn
              , mayBeNull = False
              , argDoc =
                  Documentation
                    { rawDocText = Just "The #GtkTreePath of a selected row"
                    , sinceVersion = Nothing
                    }
              , argScope = ScopeTypeInvalid
              , argClosure = -1
              , argDestroy = -1
              , argCallerAllocates = False
              , argCallbackUserData = False
              , transfer = TransferNothing
              }
          , Arg
              { argCName = "iter"
              , argType =
                  TInterface Name { namespace = "Gtk" , name = "TreeIter" }
              , argCType = Just "GtkTreeIter*"
              , direction = DirectionIn
              , mayBeNull = False
              , argDoc =
                  Documentation
                    { rawDocText = Just "A #GtkTreeIter pointing to a selected row"
                    , sinceVersion = Nothing
                    }
              , argScope = ScopeTypeInvalid
              , argClosure = -1
              , argDestroy = -1
              , argCallerAllocates = False
              , argCallbackUserData = False
              , transfer = TransferNothing
              }
          , Arg
              { argCName = "data"
              , argType = TBasicType TPtr
              , argCType = Just "gpointer"
              , direction = DirectionIn
              , mayBeNull = True
              , argDoc =
                  Documentation
                    { rawDocText = Just "user data" , sinceVersion = Nothing }
              , argScope = ScopeTypeInvalid
              , argClosure = -1
              , argDestroy = -1
              , argCallerAllocates = False
              , argCallbackUserData = True
              , transfer = TransferNothing
              }
          ]
      , skipReturn = False
      , callableThrows = False
      , callableDeprecated = Nothing
      , callableDocumentation =
          Documentation
            { rawDocText =
                Just
                  "A function used by gtk_tree_selection_selected_foreach() to map all\nselected rows.  It will be called on every selected row in the view."
            , sinceVersion = Nothing
            }
      , callableResolvable = Nothing
      }
    -}
    -- | Type for the callback on the (unwrapped) C side.
    type C_TreeSelectionForeachFunc =
        Ptr Gtk.TreeModel.TreeModel ->
        Ptr Gtk.TreePath.TreePath ->
        Ptr Gtk.TreeIter.TreeIter ->
        Ptr () ->
        IO ()

    -- Args: [ Arg
    --           { argCName = "model"
    --           , argType =
    --               TInterface Name { namespace = "Gtk" , name = "TreeModel" }
    --           , argCType = Just "GtkTreeModel*"
    --           , direction = DirectionIn
    --           , mayBeNull = False
    --           , argDoc =
    --               Documentation
    --                 { rawDocText = Just "The #GtkTreeModel being viewed"
    --                 , sinceVersion = Nothing
    --                 }
    --           , argScope = ScopeTypeInvalid
    --           , argClosure = -1
    --           , argDestroy = -1
    --           , argCallerAllocates = False
    --           , argCallbackUserData = False
    --           , transfer = TransferNothing
    --           }
    --       , Arg
    --           { argCName = "path"
    --           , argType =
    --               TInterface Name { namespace = "Gtk" , name = "TreePath" }
    --           , argCType = Just "GtkTreePath*"
    --           , direction = DirectionIn
    --           , mayBeNull = False
    --           , argDoc =
    --               Documentation
    --                 { rawDocText = Just "The #GtkTreePath of a selected row"
    --                 , sinceVersion = Nothing
    --                 }
    --           , argScope = ScopeTypeInvalid
    --           , argClosure = -1
    --           , argDestroy = -1
    --           , argCallerAllocates = False
    --           , argCallbackUserData = False
    --           , transfer = TransferNothing
    --           }
    --       , Arg
    --           { argCName = "iter"
    --           , argType =
    --               TInterface Name { namespace = "Gtk" , name = "TreeIter" }
    --           , argCType = Just "GtkTreeIter*"
    --           , direction = DirectionIn
    --           , mayBeNull = False
    --           , argDoc =
    --               Documentation
    --                 { rawDocText = Just "A #GtkTreeIter pointing to a selected row"
    --                 , sinceVersion = Nothing
    --                 }
    --           , argScope = ScopeTypeInvalid
    --           , argClosure = -1
    --           , argDestroy = -1
    --           , argCallerAllocates = False
    --           , argCallbackUserData = False
    --           , transfer = TransferNothing
    --           }
    --       , Arg
    --           { argCName = "data"
    --           , argType = TBasicType TPtr
    --           , argCType = Just "gpointer"
    --           , direction = DirectionIn
    --           , mayBeNull = True
    --           , argDoc =
    --               Documentation
    --                 { rawDocText = Just "user data" , sinceVersion = Nothing }
    --           , argScope = ScopeTypeInvalid
    --           , argClosure = -1
    --           , argDestroy = -1
    --           , argCallerAllocates = False
    --           , argCallbackUserData = True
    --           , transfer = TransferNothing
    --           }
    --       ]
    -- Lengths: []
    -- returnType: Nothing
    -- throws : False
    -- Skip return : False

    foreign import ccall "dynamic" __dynamic_C_TreeSelectionForeachFunc :: FunPtr C_TreeSelectionForeachFunc -> C_TreeSelectionForeachFunc

    -- | Given a pointer to a foreign C function, wrap it into a function callable from Haskell.
    dynamic_TreeSelectionForeachFunc ::
        (B.CallStack.HasCallStack, MonadIO m, Gtk.TreeModel.IsTreeModel a) =>
        FunPtr C_TreeSelectionForeachFunc
        -> a
        -- ^ /@model@/: The t'GI.Gtk.Interfaces.TreeModel.TreeModel' being viewed
        -> Gtk.TreePath.TreePath
        -- ^ /@path@/: The t'GI.Gtk.Structs.TreePath.TreePath' of a selected row
        -> Gtk.TreeIter.TreeIter
        -- ^ /@iter@/: A t'GI.Gtk.Structs.TreeIter.TreeIter' pointing to a selected row
        -> Ptr ()
        -- ^ /@data@/: user data
        -> m ()
    dynamic_TreeSelectionForeachFunc :: forall (m :: * -> *) a.
    (HasCallStack, MonadIO m, IsTreeModel a) =>
    FunPtr C_TreeSelectionForeachFunc
    -> a -> TreePath -> TreeIter -> Ptr () -> m ()
    dynamic_TreeSelectionForeachFunc FunPtr C_TreeSelectionForeachFunc
    __funPtr a
    model TreePath
    path TreeIter
    iter Ptr ()
    data_ = IO () -> m ()
    forall a. IO a -> m a
    forall (m :: * -> *) a. MonadIO m => IO a -> m a
    liftIO (IO () -> m ()) -> IO () -> m ()
    forall a b. (a -> b) -> a -> b
    $ do
        model' <- a -> IO (Ptr TreeModel)
    forall a b. (HasCallStack, ManagedPtrNewtype a) => a -> IO (Ptr b)
    unsafeManagedPtrCastPtr a
    model
        path' <- unsafeManagedPtrGetPtr path
        iter' <- unsafeManagedPtrGetPtr iter
        (__dynamic_C_TreeSelectionForeachFunc __funPtr) model' path' iter' data_
        touchManagedPtr model
        touchManagedPtr path
        touchManagedPtr iter
        return ()

    -- | Generate a function pointer callable from C code, from a `C_TreeSelectionForeachFunc`.
    foreign import ccall "wrapper"
        mk_TreeSelectionForeachFunc :: C_TreeSelectionForeachFunc -> IO (FunPtr C_TreeSelectionForeachFunc)

    -- | A function used by 'GI.Gtk.Objects.TreeSelection.treeSelectionSelectedForeach' to map all
    -- selected rows.  It will be called on every selected row in the view.
    type TreeSelectionForeachFunc =
        Gtk.TreeModel.TreeModel
        -- ^ /@model@/: The t'GI.Gtk.Interfaces.TreeModel.TreeModel' being viewed
        -> Gtk.TreePath.TreePath
        -- ^ /@path@/: The t'GI.Gtk.Structs.TreePath.TreePath' of a selected row
        -> Gtk.TreeIter.TreeIter
        -- ^ /@iter@/: A t'GI.Gtk.Structs.TreeIter.TreeIter' pointing to a selected row
        -> IO ()

    -- | A convenience synonym for @`Nothing` :: `Maybe` `TreeSelectionForeachFunc`@.
    noTreeSelectionForeachFunc :: Maybe TreeSelectionForeachFunc
    noTreeSelectionForeachFunc :: Maybe TreeSelectionForeachFunc
    noTreeSelectionForeachFunc = Maybe TreeSelectionForeachFunc
    forall a. Maybe a
    Nothing

    -- | A function used by 'GI.Gtk.Objects.TreeSelection.treeSelectionSelectedForeach' to map all
    -- selected rows.  It will be called on every selected row in the view.
    type TreeSelectionForeachFunc_WithClosures =
        Gtk.TreeModel.TreeModel
        -- ^ /@model@/: The t'GI.Gtk.Interfaces.TreeModel.TreeModel' being viewed
        -> Gtk.TreePath.TreePath
        -- ^ /@path@/: The t'GI.Gtk.Structs.TreePath.TreePath' of a selected row
        -> Gtk.TreeIter.TreeIter
        -- ^ /@iter@/: A t'GI.Gtk.Structs.TreeIter.TreeIter' pointing to a selected row
        -> Ptr ()
        -- ^ /@data@/: user data
        -> IO ()

    -- | A convenience synonym for @`Nothing` :: `Maybe` `TreeSelectionForeachFunc_WithClosures`@.
    noTreeSelectionForeachFunc_WithClosures :: Maybe TreeSelectionForeachFunc_WithClosures
    noTreeSelectionForeachFunc_WithClosures :: Maybe TreeSelectionForeachFunc_WithClosures
    noTreeSelectionForeachFunc_WithClosures = Maybe TreeSelectionForeachFunc_WithClosures
    forall a. Maybe a
    Nothing

    -- | A simple wrapper that ignores the closure arguments.
    drop_closures_TreeSelectionForeachFunc :: TreeSelectionForeachFunc -> TreeSelectionForeachFunc_WithClosures
    drop_closures_TreeSelectionForeachFunc :: TreeSelectionForeachFunc -> TreeSelectionForeachFunc_WithClosures
    drop_closures_TreeSelectionForeachFunc TreeSelectionForeachFunc
    _f TreeModel
    model TreePath
    path TreeIter
    iter Ptr ()
    _ = TreeSelectionForeachFunc
    _f TreeModel
    model TreePath
    path TreeIter
    iter

    -- | Wrap the callback into a `GClosure`.
    genClosure_TreeSelectionForeachFunc :: MonadIO m => TreeSelectionForeachFunc -> m (GClosure C_TreeSelectionForeachFunc)
    genClosure_TreeSelectionForeachFunc :: forall (m :: * -> *).
    MonadIO m =>
    TreeSelectionForeachFunc -> m (GClosure C_TreeSelectionForeachFunc)
    genClosure_TreeSelectionForeachFunc TreeSelectionForeachFunc
    cb = IO (GClosure C_TreeSelectionForeachFunc)
    -> m (GClosure C_TreeSelectionForeachFunc)
    forall a. IO a -> m a
    forall (m :: * -> *) a. MonadIO m => IO a -> m a
    liftIO (IO (GClosure C_TreeSelectionForeachFunc)
     -> m (GClosure C_TreeSelectionForeachFunc))
    -> IO (GClosure C_TreeSelectionForeachFunc)
    -> m (GClosure C_TreeSelectionForeachFunc)
    forall a b. (a -> b) -> a -> b
    $ do
        let cb' :: TreeSelectionForeachFunc_WithClosures
    cb' = TreeSelectionForeachFunc -> TreeSelectionForeachFunc_WithClosures
    drop_closures_TreeSelectionForeachFunc TreeSelectionForeachFunc
    cb
        let cb'' :: C_TreeSelectionForeachFunc
    cb'' = Maybe (Ptr (FunPtr C_TreeSelectionForeachFunc))
    -> TreeSelectionForeachFunc_WithClosures
    -> C_TreeSelectionForeachFunc
    wrap_TreeSelectionForeachFunc Maybe (Ptr (FunPtr C_TreeSelectionForeachFunc))
    forall a. Maybe a
    Nothing TreeSelectionForeachFunc_WithClosures
    cb'
        C_TreeSelectionForeachFunc
    -> IO (FunPtr C_TreeSelectionForeachFunc)
    mk_TreeSelectionForeachFunc C_TreeSelectionForeachFunc
    cb'' IO (FunPtr C_TreeSelectionForeachFunc)
    -> (FunPtr C_TreeSelectionForeachFunc
        -> IO (GClosure C_TreeSelectionForeachFunc))
    -> IO (GClosure C_TreeSelectionForeachFunc)
    forall a b. IO a -> (a -> IO b) -> IO b
    forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
    >>= FunPtr C_TreeSelectionForeachFunc
    -> IO (GClosure C_TreeSelectionForeachFunc)
    forall (m :: * -> *) a. MonadIO m => FunPtr a -> m (GClosure a)
    B.GClosure.newGClosure

    -- | Wrap a `TreeSelectionForeachFunc` into a `C_TreeSelectionForeachFunc`.
    wrap_TreeSelectionForeachFunc ::
        Maybe (Ptr (FunPtr C_TreeSelectionForeachFunc)) ->
        TreeSelectionForeachFunc_WithClosures ->
        C_TreeSelectionForeachFunc
    wrap_TreeSelectionForeachFunc :: Maybe (Ptr (FunPtr C_TreeSelectionForeachFunc))
    -> TreeSelectionForeachFunc_WithClosures
    -> C_TreeSelectionForeachFunc
    wrap_TreeSelectionForeachFunc Maybe (Ptr (FunPtr C_TreeSelectionForeachFunc))
    gi'funptrptr TreeSelectionForeachFunc_WithClosures
    gi'cb Ptr TreeModel
    model Ptr TreePath
    path Ptr TreeIter
    iter Ptr ()
    data_ = do
        model' <- ((ManagedPtr TreeModel -> TreeModel)
    -> Ptr TreeModel -> IO TreeModel
    forall a b.
    (HasCallStack, GObject a, GObject b) =>
    (ManagedPtr a -> a) -> Ptr b -> IO a
    newObject ManagedPtr TreeModel -> TreeModel
    Gtk.TreeModel.TreeModel) Ptr TreeModel
    model
        B.ManagedPtr.withTransient  path $ \TreePath
    path' -> do
            Ptr TreeIter -> (TreeIter -> IO ()) -> IO ()
    forall a b.
    (HasCallStack, ManagedPtrNewtype a) =>
    Ptr a -> (a -> IO b) -> IO b
    B.ManagedPtr.withTransient  Ptr TreeIter
    iter ((TreeIter -> IO ()) -> IO ()) -> (TreeIter -> IO ()) -> IO ()
    forall a b. (a -> b) -> a -> b
    $ \TreeIter
    iter' -> do
                TreeSelectionForeachFunc_WithClosures
    gi'cb  TreeModel
    model' TreePath
    path' TreeIter
    iter' Ptr ()
    data_
                Maybe (Ptr (FunPtr C_TreeSelectionForeachFunc)) -> IO ()
    forall a. Maybe (Ptr (FunPtr a)) -> IO ()
    maybeReleaseFunPtr Maybe (Ptr (FunPtr C_TreeSelectionForeachFunc))
    gi'funptrptr

    -- callback TreeModelForeachFunc
    {- Callable
      { returnType = Just (TBasicType TBoolean)
      , returnMayBeNull = False
      , returnTransfer = TransferNothing
      , returnDocumentation =
          Documentation
            { rawDocText = Just "%TRUE to stop iterating, %FALSE to continue"
            , sinceVersion = Nothing
            }
      , args =
          [ Arg
              { argCName = "model"
              , argType =
                  TInterface Name { namespace = "Gtk" , name = "TreeModel" }
              , argCType = Just "GtkTreeModel*"
              , direction = DirectionIn
              , mayBeNull = False
              , argDoc =
                  Documentation
                    { rawDocText = Just "the #GtkTreeModel being iterated"
                    , sinceVersion = Nothing
                    }
              , argScope = ScopeTypeInvalid
              , argClosure = -1
              , argDestroy = -1
              , argCallerAllocates = False
              , argCallbackUserData = False
              , transfer = TransferNothing
              }
          , Arg
              { argCName = "path"
              , argType =
                  TInterface Name { namespace = "Gtk" , name = "TreePath" }
              , argCType = Just "GtkTreePath*"
              , direction = DirectionIn
              , mayBeNull = False
              , argDoc =
                  Documentation
                    { rawDocText = Just "the current #GtkTreePath"
                    , sinceVersion = Nothing
                    }
              , argScope = ScopeTypeInvalid
              , argClosure = -1
              , argDestroy = -1
              , argCallerAllocates = False
              , argCallbackUserData = False
              , transfer = TransferNothing
              }
          , Arg
              { argCName = "iter"
              , argType =
                  TInterface Name { namespace = "Gtk" , name = "TreeIter" }
              , argCType = Just "GtkTreeIter*"
              , direction = DirectionIn
              , mayBeNull = False
              , argDoc =
                  Documentation
                    { rawDocText = Just "the current #GtkTreeIter"
                    , sinceVersion = Nothing
                    }
              , argScope = ScopeTypeInvalid
              , argClosure = -1
              , argDestroy = -1
              , argCallerAllocates = False
              , argCallbackUserData = False
              , transfer = TransferNothing
              }
          , Arg
              { argCName = "data"
              , argType = TBasicType TPtr
              , argCType = Just "gpointer"
              , direction = DirectionIn
              , mayBeNull = True
              , argDoc =
                  Documentation
                    { rawDocText =
                        Just "The user data passed to gtk_tree_model_foreach()"
                    , sinceVersion = Nothing
                    }
              , argScope = ScopeTypeInvalid
              , argClosure = -1
              , argDestroy = -1
              , argCallerAllocates = False
              , argCallbackUserData = True
              , transfer = TransferNothing
              }
          ]
      , skipReturn = False
      , callableThrows = False
      , callableDeprecated = Nothing
      , callableDocumentation =
          Documentation
            { rawDocText =
                Just
                  "Type of the callback passed to gtk_tree_model_foreach() to\niterate over the rows in a tree model."
            , sinceVersion = Nothing
            }
      , callableResolvable = Nothing
      }
    -}
    -- | Type for the callback on the (unwrapped) C side.
    type C_TreeModelForeachFunc =
        Ptr Gtk.TreeModel.TreeModel ->
        Ptr Gtk.TreePath.TreePath ->
        Ptr Gtk.TreeIter.TreeIter ->
        Ptr () ->
        IO CInt

    -- Args: [ Arg
    --           { argCName = "model"
    --           , argType =
    --               TInterface Name { namespace = "Gtk" , name = "TreeModel" }
    --           , argCType = Just "GtkTreeModel*"
    --           , direction = DirectionIn
    --           , mayBeNull = False
    --           , argDoc =
    --               Documentation
    --                 { rawDocText = Just "the #GtkTreeModel being iterated"
    --                 , sinceVersion = Nothing
    --                 }
    --           , argScope = ScopeTypeInvalid
    --           , argClosure = -1
    --           , argDestroy = -1
    --           , argCallerAllocates = False
    --           , argCallbackUserData = False
    --           , transfer = TransferNothing
    --           }
    --       , Arg
    --           { argCName = "path"
    --           , argType =
    --               TInterface Name { namespace = "Gtk" , name = "TreePath" }
    --           , argCType = Just "GtkTreePath*"
    --           , direction = DirectionIn
    --           , mayBeNull = False
    --           , argDoc =
    --               Documentation
    --                 { rawDocText = Just "the current #GtkTreePath"
    --                 , sinceVersion = Nothing
    --                 }
    --           , argScope = ScopeTypeInvalid
    --           , argClosure = -1
    --           , argDestroy = -1
    --           , argCallerAllocates = False
    --           , argCallbackUserData = False
    --           , transfer = TransferNothing
    --           }
    --       , Arg
    --           { argCName = "iter"
    --           , argType =
    --               TInterface Name { namespace = "Gtk" , name = "TreeIter" }
    --           , argCType = Just "GtkTreeIter*"
    --           , direction = DirectionIn
    --           , mayBeNull = False
    --           , argDoc =
    --               Documentation
    --                 { rawDocText = Just "the current #GtkTreeIter"
    --                 , sinceVersion = Nothing
    --                 }
    --           , argScope = ScopeTypeInvalid
    --           , argClosure = -1
    --           , argDestroy = -1
    --           , argCallerAllocates = False
    --           , argCallbackUserData = False
    --           , transfer = TransferNothing
    --           }
    --       , Arg
    --           { argCName = "data"
    --           , argType = TBasicType TPtr
    --           , argCType = Just "gpointer"
    --           , direction = DirectionIn
    --           , mayBeNull = True
    --           , argDoc =
    --               Documentation
    --                 { rawDocText =
    --                     Just "The user data passed to gtk_tree_model_foreach()"
    --                 , sinceVersion = Nothing
    --                 }
    --           , argScope = ScopeTypeInvalid
    --           , argClosure = -1
    --           , argDestroy = -1
    --           , argCallerAllocates = False
    --           , argCallbackUserData = True
    --           , transfer = TransferNothing
    --           }
    --       ]
    -- Lengths: []
    -- returnType: Just (TBasicType TBoolean)
    -- throws : False
    -- Skip return : False

    foreign import ccall "dynamic" __dynamic_C_TreeModelForeachFunc :: FunPtr C_TreeModelForeachFunc -> C_TreeModelForeachFunc

    -- | Given a pointer to a foreign C function, wrap it into a function callable from Haskell.
    dynamic_TreeModelForeachFunc ::
        (B.CallStack.HasCallStack, MonadIO m, Gtk.TreeModel.IsTreeModel a) =>
        FunPtr C_TreeModelForeachFunc
        -> a
        -- ^ /@model@/: the t'GI.Gtk.Interfaces.TreeModel.TreeModel' being iterated
        -> Gtk.TreePath.TreePath
        -- ^ /@path@/: the current t'GI.Gtk.Structs.TreePath.TreePath'
        -> Gtk.TreeIter.TreeIter
        -- ^ /@iter@/: the current t'GI.Gtk.Structs.TreeIter.TreeIter'
        -> Ptr ()
        -- ^ /@data@/: The user data passed to 'GI.Gtk.Interfaces.TreeModel.treeModelForeach'
        -> m Bool
        -- ^ __Returns:__ 'P.True' to stop iterating, 'P.False' to continue
    dynamic_TreeModelForeachFunc :: forall (m :: * -> *) a.
    (HasCallStack, MonadIO m, IsTreeModel a) =>
    FunPtr C_TreeModelForeachFunc
    -> a -> TreePath -> TreeIter -> Ptr () -> m Bool
    dynamic_TreeModelForeachFunc FunPtr C_TreeModelForeachFunc
    __funPtr a
    model TreePath
    path TreeIter
    iter Ptr ()
    data_ = IO Bool -> m Bool
    forall a. IO a -> m a
    forall (m :: * -> *) a. MonadIO m => IO a -> m a
    liftIO (IO Bool -> m Bool) -> IO Bool -> m Bool
    forall a b. (a -> b) -> a -> b
    $ do
        model' <- a -> IO (Ptr TreeModel)
    forall a b. (HasCallStack, ManagedPtrNewtype a) => a -> IO (Ptr b)
    unsafeManagedPtrCastPtr a
    model
        path' <- unsafeManagedPtrGetPtr path
        iter' <- unsafeManagedPtrGetPtr iter
        result <- (__dynamic_C_TreeModelForeachFunc __funPtr) model' path' iter' data_
        let result' = (CInt -> CInt -> Bool
    forall a. Eq a => a -> a -> Bool
    /= CInt
    0) CInt
    result
        touchManagedPtr model
        touchManagedPtr path
        touchManagedPtr iter
        return result'

    -- | Generate a function pointer callable from C code, from a `C_TreeModelForeachFunc`.
    foreign import ccall "wrapper"
        mk_TreeModelForeachFunc :: C_TreeModelForeachFunc -> IO (FunPtr C_TreeModelForeachFunc)

    -- | Type of the callback passed to 'GI.Gtk.Interfaces.TreeModel.treeModelForeach' to
    -- iterate over the rows in a tree model.
    type TreeModelForeachFunc =
        Gtk.TreeModel.TreeModel
        -- ^ /@model@/: the t'GI.Gtk.Interfaces.TreeModel.TreeModel' being iterated
        -> Gtk.TreePath.TreePath
        -- ^ /@path@/: the current t'GI.Gtk.Structs.TreePath.TreePath'
        -> Gtk.TreeIter.TreeIter
        -- ^ /@iter@/: the current t'GI.Gtk.Structs.TreeIter.TreeIter'
        -> IO Bool
        -- ^ __Returns:__ 'P.True' to stop iterating, 'P.False' to continue

    -- | A convenience synonym for @`Nothing` :: `Maybe` `TreeModelForeachFunc`@.
    noTreeModelForeachFunc :: Maybe TreeModelForeachFunc
    noTreeModelForeachFunc :: Maybe TreeModelForeachFunc
    noTreeModelForeachFunc = Maybe TreeModelForeachFunc
    forall a. Maybe a
    Nothing

    -- | Type of the callback passed to 'GI.Gtk.Interfaces.TreeModel.treeModelForeach' to
    -- iterate over the rows in a tree model.
    type TreeModelForeachFunc_WithClosures =
        Gtk.TreeModel.TreeModel
        -- ^ /@model@/: the t'GI.Gtk.Interfaces.TreeModel.TreeModel' being iterated
        -> Gtk.TreePath.TreePath
        -- ^ /@path@/: the current t'GI.Gtk.Structs.TreePath.TreePath'
        -> Gtk.TreeIter.TreeIter
        -- ^ /@iter@/: the current t'GI.Gtk.Structs.TreeIter.TreeIter'
        -> Ptr ()
        -- ^ /@data@/: The user data passed to 'GI.Gtk.Interfaces.TreeModel.treeModelForeach'
        -> IO Bool
        -- ^ __Returns:__ 'P.True' to stop iterating, 'P.False' to continue

    -- | A convenience synonym for @`Nothing` :: `Maybe` `TreeModelForeachFunc_WithClosures`@.
    noTreeModelForeachFunc_WithClosures :: Maybe TreeModelForeachFunc_WithClosures
    noTreeModelForeachFunc_WithClosures :: Maybe TreeModelForeachFunc_WithClosures
    noTreeModelForeachFunc_WithClosures = Maybe TreeModelForeachFunc_WithClosures
    forall a. Maybe a
    Nothing

    -- | A simple wrapper that ignores the closure arguments.
    drop_closures_TreeModelForeachFunc :: TreeModelForeachFunc -> TreeModelForeachFunc_WithClosures
    drop_closures_TreeModelForeachFunc :: TreeModelForeachFunc -> TreeModelForeachFunc_WithClosures
    drop_closures_TreeModelForeachFunc TreeModelForeachFunc
    _f TreeModel
    model TreePath
    path TreeIter
    iter Ptr ()
    _ = TreeModelForeachFunc
    _f TreeModel
    model TreePath
    path TreeIter
    iter

    -- | Wrap the callback into a `GClosure`.
    genClosure_TreeModelForeachFunc :: MonadIO m => TreeModelForeachFunc -> m (GClosure C_TreeModelForeachFunc)
    genClosure_TreeModelForeachFunc :: forall (m :: * -> *).
    MonadIO m =>
    TreeModelForeachFunc -> m (GClosure C_TreeModelForeachFunc)
    genClosure_TreeModelForeachFunc TreeModelForeachFunc
    cb = IO (GClosure C_TreeModelForeachFunc)
    -> m (GClosure C_TreeModelForeachFunc)
    forall a. IO a -> m a
    forall (m :: * -> *) a. MonadIO m => IO a -> m a
    liftIO (IO (GClosure C_TreeModelForeachFunc)
     -> m (GClosure C_TreeModelForeachFunc))
    -> IO (GClosure C_TreeModelForeachFunc)
    -> m (GClosure C_TreeModelForeachFunc)
    forall a b. (a -> b) -> a -> b
    $ do
        let cb' :: TreeModelForeachFunc_WithClosures
    cb' = TreeModelForeachFunc -> TreeModelForeachFunc_WithClosures
    drop_closures_TreeModelForeachFunc TreeModelForeachFunc
    cb
        let cb'' :: C_TreeModelForeachFunc
    cb'' = Maybe (Ptr (FunPtr C_TreeModelForeachFunc))
    -> TreeModelForeachFunc_WithClosures -> C_TreeModelForeachFunc
    wrap_TreeModelForeachFunc Maybe (Ptr (FunPtr C_TreeModelForeachFunc))
    forall a. Maybe a
    Nothing TreeModelForeachFunc_WithClosures
    cb'
        C_TreeModelForeachFunc -> IO (FunPtr C_TreeModelForeachFunc)
    mk_TreeModelForeachFunc C_TreeModelForeachFunc
    cb'' IO (FunPtr C_TreeModelForeachFunc)
    -> (FunPtr C_TreeModelForeachFunc
        -> IO (GClosure C_TreeModelForeachFunc))
    -> IO (GClosure C_TreeModelForeachFunc)
    forall a b. IO a -> (a -> IO b) -> IO b
    forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
    >>= FunPtr C_TreeModelForeachFunc
    -> IO (GClosure C_TreeModelForeachFunc)
    forall (m :: * -> *) a. MonadIO m => FunPtr a -> m (GClosure a)
    B.GClosure.newGClosure

    -- | Wrap a `TreeModelForeachFunc` into a `C_TreeModelForeachFunc`.
    wrap_TreeModelForeachFunc ::
        Maybe (Ptr (FunPtr C_TreeModelForeachFunc)) ->
        TreeModelForeachFunc_WithClosures ->
        C_TreeModelForeachFunc
    wrap_TreeModelForeachFunc :: Maybe (Ptr (FunPtr C_TreeModelForeachFunc))
    -> TreeModelForeachFunc_WithClosures -> C_TreeModelForeachFunc
    wrap_TreeModelForeachFunc Maybe (Ptr (FunPtr C_TreeModelForeachFunc))
    gi'funptrptr TreeModelForeachFunc_WithClosures
    gi'cb Ptr TreeModel
    model Ptr TreePath
    path Ptr TreeIter
    iter Ptr ()
    data_ = do
        model' <- ((ManagedPtr TreeModel -> TreeModel)
    -> Ptr TreeModel -> IO TreeModel
    forall a b.
    (HasCallStack, GObject a, GObject b) =>
    (ManagedPtr a -> a) -> Ptr b -> IO a
    newObject ManagedPtr TreeModel -> TreeModel
    Gtk.TreeModel.TreeModel) Ptr TreeModel
    model
        B.ManagedPtr.withTransient  path $ \TreePath
    path' -> do
            Ptr TreeIter -> (TreeIter -> IO CInt) -> IO CInt
    forall a b.
    (HasCallStack, ManagedPtrNewtype a) =>
    Ptr a -> (a -> IO b) -> IO b
    B.ManagedPtr.withTransient  Ptr TreeIter
    iter ((TreeIter -> IO CInt) -> IO CInt)
    -> (TreeIter -> IO CInt) -> IO CInt
    forall a b. (a -> b) -> a -> b
    $ \TreeIter
    iter' -> do
                result <- TreeModelForeachFunc_WithClosures
    gi'cb  TreeModel
    model' TreePath
    path' TreeIter
    iter' Ptr ()
    data_
                maybeReleaseFunPtr gi'funptrptr
                let result' = (Int -> CInt
    forall a b. (Integral a, Num b) => a -> b
    P.fromIntegral (Int -> CInt) -> (Bool -> Int) -> Bool -> CInt
    forall b c a. (b -> c) -> (a -> b) -> a -> c
    . Bool -> Int
    forall a. Enum a => a -> Int
    P.fromEnum) Bool
    result
                return result'

    -- callback TreeModelFilterVisibleFunc
    {- Callable
      { returnType = Just (TBasicType TBoolean)
      , returnMayBeNull = False
      , returnTransfer = TransferNothing
      , returnDocumentation =
          Documentation
            { rawDocText =
                Just "Whether the row indicated by @iter is visible."
            , sinceVersion = Nothing
            }
      , args =
          [ Arg
              { argCName = "model"
              , argType =
                  TInterface Name { namespace = "Gtk" , name = "TreeModel" }
              , argCType = Just "GtkTreeModel*"
              , direction = DirectionIn
              , mayBeNull = False
              , argDoc =
                  Documentation
                    { rawDocText = Just "the child model of the #GtkTreeModelFilter"
                    , sinceVersion = Nothing
                    }
              , argScope = ScopeTypeInvalid
              , argClosure = -1
              , argDestroy = -1
              , argCallerAllocates = False
              , argCallbackUserData = False
              , transfer = TransferNothing
              }
          , Arg
              { argCName = "iter"
              , argType =
                  TInterface Name { namespace = "Gtk" , name = "TreeIter" }
              , argCType = Just "GtkTreeIter*"
              , direction = DirectionIn
              , mayBeNull = False
              , argDoc =
                  Documentation
                    { rawDocText =
                        Just
                          "a #GtkTreeIter pointing to the row in @model whose visibility\n  is determined"
                    , sinceVersion = Nothing
                    }
              , argScope = ScopeTypeInvalid
              , argClosure = -1
              , argDestroy = -1
              , argCallerAllocates = False
              , argCallbackUserData = False
              , transfer = TransferNothing
              }
          , Arg
              { argCName = "data"
              , argType = TBasicType TPtr
              , argCType = Just "gpointer"
              , direction = DirectionIn
              , mayBeNull = True
              , argDoc =
                  Documentation
                    { rawDocText =
                        Just "user data given to gtk_tree_model_filter_set_visible_func()"
                    , sinceVersion = Nothing
                    }
              , argScope = ScopeTypeInvalid
              , argClosure = -1
              , argDestroy = -1
              , argCallerAllocates = False
              , argCallbackUserData = True
              , transfer = TransferNothing
              }
          ]
      , skipReturn = False
      , callableThrows = False
      , callableDeprecated = Nothing
      , callableDocumentation =
          Documentation
            { rawDocText =
                Just
                  "A function which decides whether the row indicated by @iter is visible."
            , sinceVersion = Nothing
            }
      , callableResolvable = Nothing
      }
    -}
    -- | Type for the callback on the (unwrapped) C side.
    type C_TreeModelFilterVisibleFunc =
        Ptr Gtk.TreeModel.TreeModel ->
        Ptr Gtk.TreeIter.TreeIter ->
        Ptr () ->
        IO CInt

    -- Args: [ Arg
    --           { argCName = "model"
    --           , argType =
    --               TInterface Name { namespace = "Gtk" , name = "TreeModel" }
    --           , argCType = Just "GtkTreeModel*"
    --           , direction = DirectionIn
    --           , mayBeNull = False
    --           , argDoc =
    --               Documentation
    --                 { rawDocText = Just "the child model of the #GtkTreeModelFilter"
    --                 , sinceVersion = Nothing
    --                 }
    --           , argScope = ScopeTypeInvalid
    --           , argClosure = -1
    --           , argDestroy = -1
    --           , argCallerAllocates = False
    --           , argCallbackUserData = False
    --           , transfer = TransferNothing
    --           }
    --       , Arg
    --           { argCName = "iter"
    --           , argType =
    --               TInterface Name { namespace = "Gtk" , name = "TreeIter" }
    --           , argCType = Just "GtkTreeIter*"
    --           , direction = DirectionIn
    --           , mayBeNull = False
    --           , argDoc =
    --               Documentation
    --                 { rawDocText =
    --                     Just
    --                       "a #GtkTreeIter pointing to the row in @model whose visibility\n  is determined"
    --                 , sinceVersion = Nothing
    --                 }
    --           , argScope = ScopeTypeInvalid
    --           , argClosure = -1
    --           , argDestroy = -1
    --           , argCallerAllocates = False
    --           , argCallbackUserData = False
    --           , transfer = TransferNothing
    --           }
    --       , Arg
    --           { argCName = "data"
    --           , argType = TBasicType TPtr
    --           , argCType = Just "gpointer"
    --           , direction = DirectionIn
    --           , mayBeNull = True
    --           , argDoc =
    --               Documentation
    --                 { rawDocText =
    --                     Just "user data given to gtk_tree_model_filter_set_visible_func()"
    --                 , sinceVersion = Nothing
    --                 }
    --           , argScope = ScopeTypeInvalid
    --           , argClosure = -1
    --           , argDestroy = -1
    --           , argCallerAllocates = False
    --           , argCallbackUserData = True
    --           , transfer = TransferNothing
    --           }
    --       ]
    -- Lengths: []
    -- returnType: Just (TBasicType TBoolean)
    -- throws : False
    -- Skip return : False

    foreign import ccall "dynamic" __dynamic_C_TreeModelFilterVisibleFunc :: FunPtr C_TreeModelFilterVisibleFunc -> C_TreeModelFilterVisibleFunc

    -- | Given a pointer to a foreign C function, wrap it into a function callable from Haskell.
    dynamic_TreeModelFilterVisibleFunc ::
        (B.CallStack.HasCallStack, MonadIO m, Gtk.TreeModel.IsTreeModel a) =>
        FunPtr C_TreeModelFilterVisibleFunc
        -> a
        -- ^ /@model@/: the child model of the t'GI.Gtk.Objects.TreeModelFilter.TreeModelFilter'
        -> Gtk.TreeIter.TreeIter
        -- ^ /@iter@/: a t'GI.Gtk.Structs.TreeIter.TreeIter' pointing to the row in /@model@/ whose visibility
        --   is determined
        -> Ptr ()
        -- ^ /@data@/: user data given to 'GI.Gtk.Objects.TreeModelFilter.treeModelFilterSetVisibleFunc'
        -> m Bool
        -- ^ __Returns:__ Whether the row indicated by /@iter@/ is visible.
    dynamic_TreeModelFilterVisibleFunc :: forall (m :: * -> *) a.
    (HasCallStack, MonadIO m, IsTreeModel a) =>
    FunPtr C_TreeViewRowSeparatorFunc
    -> a -> TreeIter -> Ptr () -> m Bool
    dynamic_TreeModelFilterVisibleFunc FunPtr C_TreeViewRowSeparatorFunc
    __funPtr a
    model TreeIter
    iter Ptr ()
    data_ = IO Bool -> m Bool
    forall a. IO a -> m a
    forall (m :: * -> *) a. MonadIO m => IO a -> m a
    liftIO (IO Bool -> m Bool) -> IO Bool -> m Bool
    forall a b. (a -> b) -> a -> b
    $ do
        model' <- a -> IO (Ptr TreeModel)
    forall a b. (HasCallStack, ManagedPtrNewtype a) => a -> IO (Ptr b)
    unsafeManagedPtrCastPtr a
    model
        iter' <- unsafeManagedPtrGetPtr iter
        result <- (__dynamic_C_TreeModelFilterVisibleFunc __funPtr) model' iter' data_
        let result' = (CInt -> CInt -> Bool
    forall a. Eq a => a -> a -> Bool
    /= CInt
    0) CInt
    result
        touchManagedPtr model
        touchManagedPtr iter
        return result'

    -- | Generate a function pointer callable from C code, from a `C_TreeModelFilterVisibleFunc`.
    foreign import ccall "wrapper"
        mk_TreeModelFilterVisibleFunc :: C_TreeModelFilterVisibleFunc -> IO (FunPtr C_TreeModelFilterVisibleFunc)

    -- | A function which decides whether the row indicated by /@iter@/ is visible.
    type TreeModelFilterVisibleFunc =
        Gtk.TreeModel.TreeModel
        -- ^ /@model@/: the child model of the t'GI.Gtk.Objects.TreeModelFilter.TreeModelFilter'
        -> Gtk.TreeIter.TreeIter
        -- ^ /@iter@/: a t'GI.Gtk.Structs.TreeIter.TreeIter' pointing to the row in /@model@/ whose visibility
        --   is determined
        -> IO Bool
        -- ^ __Returns:__ Whether the row indicated by /@iter@/ is visible.

    -- | A convenience synonym for @`Nothing` :: `Maybe` `TreeModelFilterVisibleFunc`@.
    noTreeModelFilterVisibleFunc :: Maybe TreeModelFilterVisibleFunc
    noTreeModelFilterVisibleFunc :: Maybe TreeViewRowSeparatorFunc
    noTreeModelFilterVisibleFunc = Maybe TreeViewRowSeparatorFunc
    forall a. Maybe a
    Nothing

    -- | A function which decides whether the row indicated by /@iter@/ is visible.
    type TreeModelFilterVisibleFunc_WithClosures =
        Gtk.TreeModel.TreeModel
        -- ^ /@model@/: the child model of the t'GI.Gtk.Objects.TreeModelFilter.TreeModelFilter'
        -> Gtk.TreeIter.TreeIter
        -- ^ /@iter@/: a t'GI.Gtk.Structs.TreeIter.TreeIter' pointing to the row in /@model@/ whose visibility
        --   is determined
        -> Ptr ()
        -- ^ /@data@/: user data given to 'GI.Gtk.Objects.TreeModelFilter.treeModelFilterSetVisibleFunc'
        -> IO Bool
        -- ^ __Returns:__ Whether the row indicated by /@iter@/ is visible.

    -- | A convenience synonym for @`Nothing` :: `Maybe` `TreeModelFilterVisibleFunc_WithClosures`@.
    noTreeModelFilterVisibleFunc_WithClosures :: Maybe TreeModelFilterVisibleFunc_WithClosures
    noTreeModelFilterVisibleFunc_WithClosures :: Maybe TreeViewRowSeparatorFunc_WithClosures
    noTreeModelFilterVisibleFunc_WithClosures = Maybe TreeViewRowSeparatorFunc_WithClosures
    forall a. Maybe a
    Nothing

    -- | A simple wrapper that ignores the closure arguments.
    drop_closures_TreeModelFilterVisibleFunc :: TreeModelFilterVisibleFunc -> TreeModelFilterVisibleFunc_WithClosures
    drop_closures_TreeModelFilterVisibleFunc :: TreeViewRowSeparatorFunc -> TreeViewRowSeparatorFunc_WithClosures
    drop_closures_TreeModelFilterVisibleFunc TreeViewRowSeparatorFunc
    _f TreeModel
    model TreeIter
    iter Ptr ()
    _ = TreeViewRowSeparatorFunc
    _f TreeModel
    model TreeIter
    iter

    -- | Wrap the callback into a `GClosure`.
    genClosure_TreeModelFilterVisibleFunc :: MonadIO m => TreeModelFilterVisibleFunc -> m (GClosure C_TreeModelFilterVisibleFunc)
    genClosure_TreeModelFilterVisibleFunc :: forall (m :: * -> *).
    MonadIO m =>
    TreeViewRowSeparatorFunc -> m (GClosure C_TreeViewRowSeparatorFunc)
    genClosure_TreeModelFilterVisibleFunc TreeViewRowSeparatorFunc
    cb = IO (GClosure C_TreeViewRowSeparatorFunc)
    -> m (GClosure C_TreeViewRowSeparatorFunc)
    forall a. IO a -> m a
    forall (m :: * -> *) a. MonadIO m => IO a -> m a
    liftIO (IO (GClosure C_TreeViewRowSeparatorFunc)
     -> m (GClosure C_TreeViewRowSeparatorFunc))
    -> IO (GClosure C_TreeViewRowSeparatorFunc)
    -> m (GClosure C_TreeViewRowSeparatorFunc)
    forall a b. (a -> b) -> a -> b
    $ do
        let cb' :: TreeViewRowSeparatorFunc_WithClosures
    cb' = TreeViewRowSeparatorFunc -> TreeViewRowSeparatorFunc_WithClosures
    drop_closures_TreeModelFilterVisibleFunc TreeViewRowSeparatorFunc
    cb
        let cb'' :: C_TreeViewRowSeparatorFunc
    cb'' = Maybe (Ptr (FunPtr C_TreeViewRowSeparatorFunc))
    -> TreeViewRowSeparatorFunc_WithClosures
    -> C_TreeViewRowSeparatorFunc
    wrap_TreeModelFilterVisibleFunc Maybe (Ptr (FunPtr C_TreeViewRowSeparatorFunc))
    forall a. Maybe a
    Nothing TreeViewRowSeparatorFunc_WithClosures
    cb'
        C_TreeViewRowSeparatorFunc
    -> IO (FunPtr C_TreeViewRowSeparatorFunc)
    mk_TreeModelFilterVisibleFunc C_TreeViewRowSeparatorFunc
    cb'' IO (FunPtr C_TreeViewRowSeparatorFunc)
    -> (FunPtr C_TreeViewRowSeparatorFunc
        -> IO (GClosure C_TreeViewRowSeparatorFunc))
    -> IO (GClosure C_TreeViewRowSeparatorFunc)
    forall a b. IO a -> (a -> IO b) -> IO b
    forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
    >>= FunPtr C_TreeViewRowSeparatorFunc
    -> IO (GClosure C_TreeViewRowSeparatorFunc)
    forall (m :: * -> *) a. MonadIO m => FunPtr a -> m (GClosure a)
    B.GClosure.newGClosure

    -- | Wrap a `TreeModelFilterVisibleFunc` into a `C_TreeModelFilterVisibleFunc`.
    wrap_TreeModelFilterVisibleFunc ::
        Maybe (Ptr (FunPtr C_TreeModelFilterVisibleFunc)) ->
        TreeModelFilterVisibleFunc_WithClosures ->
        C_TreeModelFilterVisibleFunc
    wrap_TreeModelFilterVisibleFunc :: Maybe (Ptr (FunPtr C_TreeViewRowSeparatorFunc))
    -> TreeViewRowSeparatorFunc_WithClosures
    -> C_TreeViewRowSeparatorFunc
    wrap_TreeModelFilterVisibleFunc Maybe (Ptr (FunPtr C_TreeViewRowSeparatorFunc))
    gi'funptrptr TreeViewRowSeparatorFunc_WithClosures
    gi'cb Ptr TreeModel
    model Ptr TreeIter
    iter Ptr ()
    data_ = do
        model' <- ((ManagedPtr TreeModel -> TreeModel)
    -> Ptr TreeModel -> IO TreeModel
    forall a b.
    (HasCallStack, GObject a, GObject b) =>
    (ManagedPtr a -> a) -> Ptr b -> IO a
    newObject ManagedPtr TreeModel -> TreeModel
    Gtk.TreeModel.TreeModel) Ptr TreeModel
    model
        B.ManagedPtr.withTransient  iter $ \TreeIter
    iter' -> do
            result <- TreeViewRowSeparatorFunc_WithClosures
    gi'cb  TreeModel
    model' TreeIter
    iter' Ptr ()
    data_
            maybeReleaseFunPtr gi'funptrptr
            let result' = (Int -> CInt
    forall a b. (Integral a, Num b) => a -> b
    P.fromIntegral (Int -> CInt) -> (Bool -> Int) -> Bool -> CInt
    forall b c a. (b -> c) -> (a -> b) -> a -> c
    . Bool -> Int
    forall a. Enum a => a -> Int
    P.fromEnum) Bool
    result
            return result'

    -- callback TreeModelFilterModifyFunc
    {- Callable
      { returnType = Nothing
      , returnMayBeNull = False
      , returnTransfer = TransferNothing
      , returnDocumentation =
          Documentation { rawDocText = Nothing , sinceVersion = Nothing }
      , args =
          [ Arg
              { argCName = "model"
              , argType =
                  TInterface Name { namespace = "Gtk" , name = "TreeModel" }
              , argCType = Just "GtkTreeModel*"
              , direction = DirectionIn
              , mayBeNull = False
              , argDoc =
                  Documentation
                    { rawDocText = Just "the #GtkTreeModelFilter"
                    , sinceVersion = Nothing
                    }
              , argScope = ScopeTypeInvalid
              , argClosure = -1
              , argDestroy = -1
              , argCallerAllocates = False
              , argCallbackUserData = False
              , transfer = TransferNothing
              }
          , Arg
              { argCName = "iter"
              , argType =
                  TInterface Name { namespace = "Gtk" , name = "TreeIter" }
              , argCType = Just "GtkTreeIter*"
              , direction = DirectionIn
              , mayBeNull = False
              , argDoc =
                  Documentation
                    { rawDocText =
                        Just
                          "a #GtkTreeIter pointing to the row whose display values are determined"
                    , sinceVersion = Nothing
                    }
              , argScope = ScopeTypeInvalid
              , argClosure = -1
              , argDestroy = -1
              , argCallerAllocates = False
              , argCallbackUserData = False
              , transfer = TransferNothing
              }
          , Arg
              { argCName = "value"
              , argType = TGValue
              , argCType = Just "GValue*"
              , direction = DirectionOut
              , mayBeNull = False
              , argDoc =
                  Documentation
                    { rawDocText =
                        Just
                          "A #GValue which is already initialized for\n with the correct type for the column @column."
                    , sinceVersion = Nothing
                    }
              , argScope = ScopeTypeInvalid
              , argClosure = -1
              , argDestroy = -1
              , argCallerAllocates = True
              , argCallbackUserData = False
              , transfer = TransferNothing
              }
          , Arg
              { argCName = "column"
              , argType = TBasicType TInt
              , argCType = Just "gint"
              , direction = DirectionIn
              , mayBeNull = False
              , argDoc =
                  Documentation
                    { rawDocText = Just "the column whose display value is determined"
                    , sinceVersion = Nothing
                    }
              , argScope = ScopeTypeInvalid
              , argClosure = -1
              , argDestroy = -1
              , argCallerAllocates = False
              , argCallbackUserData = False
              , transfer = TransferNothing
              }
          , Arg
              { argCName = "data"
              , argType = TBasicType TPtr
              , argCType = Just "gpointer"
              , direction = DirectionIn
              , mayBeNull = True
              , argDoc =
                  Documentation
                    { rawDocText =
                        Just "user data given to gtk_tree_model_filter_set_modify_func()"
                    , sinceVersion = Nothing
                    }
              , argScope = ScopeTypeInvalid
              , argClosure = -1
              , argDestroy = -1
              , argCallerAllocates = False
              , argCallbackUserData = True
              , transfer = TransferNothing
              }
          ]
      , skipReturn = False
      , callableThrows = False
      , callableDeprecated = Nothing
      , callableDocumentation =
          Documentation
            { rawDocText =
                Just
                  "A function which calculates display values from raw values in the model.\nIt must fill @value with the display value for the column @column in the\nrow indicated by @iter.\n\nSince this function is called for each data access, it\8217s not a\nparticularly efficient operation."
            , sinceVersion = Nothing
            }
      , callableResolvable = Nothing
      }
    -}
    -- | Type for the callback on the (unwrapped) C side.
    type C_TreeModelFilterModifyFunc =
        Ptr Gtk.TreeModel.TreeModel ->
        Ptr Gtk.TreeIter.TreeIter ->
        Ptr GValue ->
        Int32 ->
        Ptr () ->
        IO ()

    -- Args: [ Arg
    --           { argCName = "model"
    --           , argType =
    --               TInterface Name { namespace = "Gtk" , name = "TreeModel" }
    --           , argCType = Just "GtkTreeModel*"
    --           , direction = DirectionIn
    --           , mayBeNull = False
    --           , argDoc =
    --               Documentation
    --                 { rawDocText = Just "the #GtkTreeModelFilter"
    --                 , sinceVersion = Nothing
    --                 }
    --           , argScope = ScopeTypeInvalid
    --           , argClosure = -1
    --           , argDestroy = -1
    --           , argCallerAllocates = False
    --           , argCallbackUserData = False
    --           , transfer = TransferNothing
    --           }
    --       , Arg
    --           { argCName = "iter"
    --           , argType =
    --               TInterface Name { namespace = "Gtk" , name = "TreeIter" }
    --           , argCType = Just "GtkTreeIter*"
    --           , direction = DirectionIn
    --           , mayBeNull = False
    --           , argDoc =
    --               Documentation
    --                 { rawDocText =
    --                     Just
    --                       "a #GtkTreeIter pointing to the row whose display values are determined"
    --                 , sinceVersion = Nothing
    --                 }
    --           , argScope = ScopeTypeInvalid
    --           , argClosure = -1
    --           , argDestroy = -1
    --           , argCallerAllocates = False
    --           , argCallbackUserData = False
    --           , transfer = TransferNothing
    --           }
    --       , Arg
    --           { argCName = "value"
    --           , argType = TGValue
    --           , argCType = Just "GValue*"
    --           , direction = DirectionOut
    --           , mayBeNull = False
    --           , argDoc =
    --               Documentation
    --                 { rawDocText =
    --                     Just
    --                       "A #GValue which is already initialized for\n with the correct type for the column @column."
    --                 , sinceVersion = Nothing
    --                 }
    --           , argScope = ScopeTypeInvalid
    --           , argClosure = -1
    --           , argDestroy = -1
    --           , argCallerAllocates = True
    --           , argCallbackUserData = False
    --           , transfer = TransferNothing
    --           }
    --       , Arg
    --           { argCName = "column"
    --           , argType = TBasicType TInt
    --           , argCType = Just "gint"
    --           , direction = DirectionIn
    --           , mayBeNull = False
    --           , argDoc =
    --               Documentation
    --                 { rawDocText = Just "the column whose display value is determined"
    --                 , sinceVersion = Nothing
    --                 }
    --           , argScope = ScopeTypeInvalid
    --           , argClosure = -1
    --           , argDestroy = -1
    --           , argCallerAllocates = False
    --           , argCallbackUserData = False
    --           , transfer = TransferNothing
    --           }
    --       , Arg
    --           { argCName = "data"
    --           , argType = TBasicType TPtr
    --           , argCType = Just "gpointer"
    --           , direction = DirectionIn
    --           , mayBeNull = True
    --           , argDoc =
    --               Documentation
    --                 { rawDocText =
    --                     Just "user data given to gtk_tree_model_filter_set_modify_func()"
    --                 , sinceVersion = Nothing
    --                 }
    --           , argScope = ScopeTypeInvalid
    --           , argClosure = -1
    --           , argDestroy = -1
    --           , argCallerAllocates = False
    --           , argCallbackUserData = True
    --           , transfer = TransferNothing
    --           }
    --       ]
    -- Lengths: []
    -- returnType: Nothing
    -- throws : False
    -- Skip return : False

    foreign import ccall "dynamic" __dynamic_C_TreeModelFilterModifyFunc :: FunPtr C_TreeModelFilterModifyFunc -> C_TreeModelFilterModifyFunc

    -- | Given a pointer to a foreign C function, wrap it into a function callable from Haskell.
    dynamic_TreeModelFilterModifyFunc ::
        (B.CallStack.HasCallStack, MonadIO m, Gtk.TreeModel.IsTreeModel a) =>
        FunPtr C_TreeModelFilterModifyFunc
        -> a
        -- ^ /@model@/: the t'GI.Gtk.Objects.TreeModelFilter.TreeModelFilter'
        -> Gtk.TreeIter.TreeIter
        -- ^ /@iter@/: a t'GI.Gtk.Structs.TreeIter.TreeIter' pointing to the row whose display values are determined
        -> Int32
        -- ^ /@column@/: the column whose display value is determined
        -> Ptr ()
        -- ^ /@data@/: user data given to @/gtk_tree_model_filter_set_modify_func()/@
        -> m (GValue)
    dynamic_TreeModelFilterModifyFunc :: forall (m :: * -> *) a.
    (HasCallStack, MonadIO m, IsTreeModel a) =>
    FunPtr C_TreeModelFilterModifyFunc
    -> a -> TreeIter -> Int32 -> Ptr () -> m GValue
    dynamic_TreeModelFilterModifyFunc FunPtr C_TreeModelFilterModifyFunc
    __funPtr a
    model TreeIter
    iter Int32
    column Ptr ()
    data_ = IO GValue -> m GValue
    forall a. IO a -> m a
    forall (m :: * -> *) a. MonadIO m => IO a -> m a
    liftIO (IO GValue -> m GValue) -> IO GValue -> m GValue
    forall a b. (a -> b) -> a -> b
    $ do
        model' <- a -> IO (Ptr TreeModel)
    forall a b. (HasCallStack, ManagedPtrNewtype a) => a -> IO (Ptr b)
    unsafeManagedPtrCastPtr a
    model
        iter' <- unsafeManagedPtrGetPtr iter
        value <- SP.callocBytes 24 :: IO (Ptr GValue)
        (__dynamic_C_TreeModelFilterModifyFunc __funPtr) model' iter' value column data_
        value' <- B.GValue.wrapGValuePtr value
        touchManagedPtr model
        touchManagedPtr iter
        return value'

    -- | Generate a function pointer callable from C code, from a `C_TreeModelFilterModifyFunc`.
    foreign import ccall "wrapper"
        mk_TreeModelFilterModifyFunc :: C_TreeModelFilterModifyFunc -> IO (FunPtr C_TreeModelFilterModifyFunc)

    -- | A function which calculates display values from raw values in the model.
    -- It must fill /@value@/ with the display value for the column /@column@/ in the
    -- row indicated by /@iter@/.
    --
    -- Since this function is called for each data access, it’s not a
    -- particularly efficient operation.
    type TreeModelFilterModifyFunc =
        Gtk.TreeModel.TreeModel
        -- ^ /@model@/: the t'GI.Gtk.Objects.TreeModelFilter.TreeModelFilter'
        -> Gtk.TreeIter.TreeIter
        -- ^ /@iter@/: a t'GI.Gtk.Structs.TreeIter.TreeIter' pointing to the row whose display values are determined
        -> Int32
        -- ^ /@column@/: the column whose display value is determined
        -> IO (GValue)

    -- | A convenience synonym for @`Nothing` :: `Maybe` `TreeModelFilterModifyFunc`@.
    noTreeModelFilterModifyFunc :: Maybe TreeModelFilterModifyFunc
    noTreeModelFilterModifyFunc :: Maybe TreeModelFilterModifyFunc
    noTreeModelFilterModifyFunc = Maybe TreeModelFilterModifyFunc
    forall a. Maybe a
    Nothing

    -- | A function which calculates display values from raw values in the model.
    -- It must fill /@value@/ with the display value for the column /@column@/ in the
    -- row indicated by /@iter@/.
    --
    -- Since this function is called for each data access, it’s not a
    -- particularly efficient operation.
    type TreeModelFilterModifyFunc_WithClosures =
        Gtk.TreeModel.TreeModel
        -- ^ /@model@/: the t'GI.Gtk.Objects.TreeModelFilter.TreeModelFilter'
        -> Gtk.TreeIter.TreeIter
        -- ^ /@iter@/: a t'GI.Gtk.Structs.TreeIter.TreeIter' pointing to the row whose display values are determined
        -> Int32
        -- ^ /@column@/: the column whose display value is determined
        -> Ptr ()
        -- ^ /@data@/: user data given to @/gtk_tree_model_filter_set_modify_func()/@
        -> IO (GValue)

    -- | A convenience synonym for @`Nothing` :: `Maybe` `TreeModelFilterModifyFunc_WithClosures`@.
    noTreeModelFilterModifyFunc_WithClosures :: Maybe TreeModelFilterModifyFunc_WithClosures
    noTreeModelFilterModifyFunc_WithClosures :: Maybe TreeModelFilterModifyFunc_WithClosures
    noTreeModelFilterModifyFunc_WithClosures = Maybe TreeModelFilterModifyFunc_WithClosures
    forall a. Maybe a
    Nothing

    -- | A simple wrapper that ignores the closure arguments.
    drop_closures_TreeModelFilterModifyFunc :: TreeModelFilterModifyFunc -> TreeModelFilterModifyFunc_WithClosures
    drop_closures_TreeModelFilterModifyFunc :: TreeModelFilterModifyFunc -> TreeModelFilterModifyFunc_WithClosures
    drop_closures_TreeModelFilterModifyFunc TreeModelFilterModifyFunc
    _f TreeModel
    model TreeIter
    iter Int32
    column Ptr ()
    _ = TreeModelFilterModifyFunc
    _f TreeModel
    model TreeIter
    iter Int32
    column

    -- | Wrap the callback into a `GClosure`.
    genClosure_TreeModelFilterModifyFunc :: MonadIO m => TreeModelFilterModifyFunc -> m (GClosure C_TreeModelFilterModifyFunc)
    genClosure_TreeModelFilterModifyFunc :: forall (m :: * -> *).
    MonadIO m =>
    TreeModelFilterModifyFunc
    -> m (GClosure C_TreeModelFilterModifyFunc)
    genClosure_TreeModelFilterModifyFunc TreeModelFilterModifyFunc
    cb = IO (GClosure C_TreeModelFilterModifyFunc)
    -> m (GClosure C_TreeModelFilterModifyFunc)
    forall a. IO a -> m a
    forall (m :: * -> *) a. MonadIO m => IO a -> m a
    liftIO (IO (GClosure C_TreeModelFilterModifyFunc)
     -> m (GClosure C_TreeModelFilterModifyFunc))
    -> IO (GClosure C_TreeModelFilterModifyFunc)
    -> m (GClosure C_TreeModelFilterModifyFunc)
    forall a b. (a -> b) -> a -> b
    $ do
        let cb' :: TreeModelFilterModifyFunc_WithClosures
    cb' = TreeModelFilterModifyFunc -> TreeModelFilterModifyFunc_WithClosures
    drop_closures_TreeModelFilterModifyFunc TreeModelFilterModifyFunc
    cb
        let cb'' :: C_TreeModelFilterModifyFunc
    cb'' = Maybe (Ptr (FunPtr C_TreeModelFilterModifyFunc))
    -> TreeModelFilterModifyFunc_WithClosures
    -> C_TreeModelFilterModifyFunc
    wrap_TreeModelFilterModifyFunc Maybe (Ptr (FunPtr C_TreeModelFilterModifyFunc))
    forall a. Maybe a
    Nothing TreeModelFilterModifyFunc_WithClosures
    cb'
        C_TreeModelFilterModifyFunc
    -> IO (FunPtr C_TreeModelFilterModifyFunc)
    mk_TreeModelFilterModifyFunc C_TreeModelFilterModifyFunc
    cb'' IO (FunPtr C_TreeModelFilterModifyFunc)
    -> (FunPtr C_TreeModelFilterModifyFunc
        -> IO (GClosure C_TreeModelFilterModifyFunc))
    -> IO (GClosure C_TreeModelFilterModifyFunc)
    forall a b. IO a -> (a -> IO b) -> IO b
    forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
    >>= FunPtr C_TreeModelFilterModifyFunc
    -> IO (GClosure C_TreeModelFilterModifyFunc)
    forall (m :: * -> *) a. MonadIO m => FunPtr a -> m (GClosure a)
    B.GClosure.newGClosure

    -- | Wrap a `TreeModelFilterModifyFunc` into a `C_TreeModelFilterModifyFunc`.
    wrap_TreeModelFilterModifyFunc ::
        Maybe (Ptr (FunPtr C_TreeModelFilterModifyFunc)) ->
        TreeModelFilterModifyFunc_WithClosures ->
        C_TreeModelFilterModifyFunc
    wrap_TreeModelFilterModifyFunc :: Maybe (Ptr (FunPtr C_TreeModelFilterModifyFunc))
    -> TreeModelFilterModifyFunc_WithClosures
    -> C_TreeModelFilterModifyFunc
    wrap_TreeModelFilterModifyFunc Maybe (Ptr (FunPtr C_TreeModelFilterModifyFunc))
    gi'funptrptr TreeModelFilterModifyFunc_WithClosures
    gi'cb Ptr TreeModel
    model Ptr TreeIter
    iter Ptr GValue
    value Int32
    column Ptr ()
    data_ = do
        -- XXX Could not generate callback wrapper for TreeModelFilterModifyFunc
        -- Not implemented: Unexpected transfer type for "value"
        String -> IO ()
    forall a. HasCallStack => String -> a
    P.error String
    "The bindings for wrap_TreeModelFilterModifyFunc could not be generated, function unsupported."

    -- callback TreeIterCompareFunc
    {- Callable
      { returnType = Just (TBasicType TInt)
      , returnMayBeNull = False
      , returnTransfer = TransferNothing
      , returnDocumentation =
          Documentation
            { rawDocText =
                Just
                  "a negative integer, zero or a positive integer depending on whether\n  @a sorts before, with or after @b"
            , sinceVersion = Nothing
            }
      , args =
          [ Arg
              { argCName = "model"
              , argType =
                  TInterface Name { namespace = "Gtk" , name = "TreeModel" }
              , argCType = Just "GtkTreeModel*"
              , direction = DirectionIn
              , mayBeNull = False
              , argDoc =
                  Documentation
                    { rawDocText = Just "The #GtkTreeModel the comparison is within"
                    , sinceVersion = Nothing
                    }
              , argScope = ScopeTypeInvalid
              , argClosure = -1
              , argDestroy = -1
              , argCallerAllocates = False
              , argCallbackUserData = False
              , transfer = TransferNothing
              }
          , Arg
              { argCName = "a"
              , argType =
                  TInterface Name { namespace = "Gtk" , name = "TreeIter" }
              , argCType = Just "GtkTreeIter*"
              , direction = DirectionIn
              , mayBeNull = False
              , argDoc =
                  Documentation
                    { rawDocText = Just "A #GtkTreeIter in @model"
                    , sinceVersion = Nothing
                    }
              , argScope = ScopeTypeInvalid
              , argClosure = -1
              , argDestroy = -1
              , argCallerAllocates = False
              , argCallbackUserData = False
              , transfer = TransferNothing
              }
          , Arg
              { argCName = "b"
              , argType =
                  TInterface Name { namespace = "Gtk" , name = "TreeIter" }
              , argCType = Just "GtkTreeIter*"
              , direction = DirectionIn
              , mayBeNull = False
              , argDoc =
                  Documentation
                    { rawDocText = Just "Another #GtkTreeIter in @model"
                    , sinceVersion = Nothing
                    }
              , argScope = ScopeTypeInvalid
              , argClosure = -1
              , argDestroy = -1
              , argCallerAllocates = False
              , argCallbackUserData = False
              , transfer = TransferNothing
              }
          , Arg
              { argCName = "user_data"
              , argType = TBasicType TPtr
              , argCType = Just "gpointer"
              , direction = DirectionIn
              , mayBeNull = True
              , argDoc =
                  Documentation
                    { rawDocText =
                        Just
                          "Data passed when the compare func is assigned e.g. by\n gtk_tree_sortable_set_sort_func()"
                    , sinceVersion = Nothing
                    }
              , argScope = ScopeTypeInvalid
              , argClosure = -1
              , argDestroy = -1
              , argCallerAllocates = False
              , argCallbackUserData = True
              , transfer = TransferNothing
              }
          ]
      , skipReturn = False
      , callableThrows = False
      , callableDeprecated = Nothing
      , callableDocumentation =
          Documentation
            { rawDocText =
                Just
                  "A GtkTreeIterCompareFunc should return a negative integer, zero, or a positive\ninteger if @a sorts before @b, @a sorts with @b, or @a sorts after @b\nrespectively. If two iters compare as equal, their order in the sorted model\nis undefined. In order to ensure that the #GtkTreeSortable behaves as\nexpected, the GtkTreeIterCompareFunc must define a partial order on\nthe model, i.e. it must be reflexive, antisymmetric and transitive.\n\nFor example, if @model is a product catalogue, then a compare function\nfor the \8220price\8221 column could be one which returns\n`price_of(@a) - price_of(@b)`."
            , sinceVersion = Nothing
            }
      , callableResolvable = Nothing
      }
    -}
    -- | Type for the callback on the (unwrapped) C side.
    type C_TreeIterCompareFunc =
        Ptr Gtk.TreeModel.TreeModel ->
        Ptr Gtk.TreeIter.TreeIter ->
        Ptr Gtk.TreeIter.TreeIter ->
        Ptr () ->
        IO Int32

    -- Args: [ Arg
    --           { argCName = "model"
    --           , argType =
    --               TInterface Name { namespace = "Gtk" , name = "TreeModel" }
    --           , argCType = Just "GtkTreeModel*"
    --           , direction = DirectionIn
    --           , mayBeNull = False
    --           , argDoc =
    --               Documentation
    --                 { rawDocText = Just "The #GtkTreeModel the comparison is within"
    --                 , sinceVersion = Nothing
    --                 }
    --           , argScope = ScopeTypeInvalid
    --           , argClosure = -1
    --           , argDestroy = -1
    --           , argCallerAllocates = False
    --           , argCallbackUserData = False
    --           , transfer = TransferNothing
    --           }
    --       , Arg
    --           { argCName = "a"
    --           , argType =
    --               TInterface Name { namespace = "Gtk" , name = "TreeIter" }
    --           , argCType = Just "GtkTreeIter*"
    --           , direction = DirectionIn
    --           , mayBeNull = False
    --           , argDoc =
    --               Documentation
    --                 { rawDocText = Just "A #GtkTreeIter in @model"
    --                 , sinceVersion = Nothing
    --                 }
    --           , argScope = ScopeTypeInvalid
    --           , argClosure = -1
    --           , argDestroy = -1
    --           , argCallerAllocates = False
    --           , argCallbackUserData = False
    --           , transfer = TransferNothing
    --           }
    --       , Arg
    --           { argCName = "b"
    --           , argType =
    --               TInterface Name { namespace = "Gtk" , name = "TreeIter" }
    --           , argCType = Just "GtkTreeIter*"
    --           , direction = DirectionIn
    --           , mayBeNull = False
    --           , argDoc =
    --               Documentation
    --                 { rawDocText = Just "Another #GtkTreeIter in @model"
    --                 , sinceVersion = Nothing
    --                 }
    --           , argScope = ScopeTypeInvalid
    --           , argClosure = -1
    --           , argDestroy = -1
    --           , argCallerAllocates = False
    --           , argCallbackUserData = False
    --           , transfer = TransferNothing
    --           }
    --       , Arg
    --           { argCName = "user_data"
    --           , argType = TBasicType TPtr
    --           , argCType = Just "gpointer"
    --           , direction = DirectionIn
    --           , mayBeNull = True
    --           , argDoc =
    --               Documentation
    --                 { rawDocText =
    --                     Just
    --                       "Data passed when the compare func is assigned e.g. by\n gtk_tree_sortable_set_sort_func()"
    --                 , sinceVersion = Nothing
    --                 }
    --           , argScope = ScopeTypeInvalid
    --           , argClosure = -1
    --           , argDestroy = -1
    --           , argCallerAllocates = False
    --           , argCallbackUserData = True
    --           , transfer = TransferNothing
    --           }
    --       ]
    -- Lengths: []
    -- returnType: Just (TBasicType TInt)
    -- throws : False
    -- Skip return : False

    foreign import ccall "dynamic" __dynamic_C_TreeIterCompareFunc :: FunPtr C_TreeIterCompareFunc -> C_TreeIterCompareFunc

    -- | Given a pointer to a foreign C function, wrap it into a function callable from Haskell.
    dynamic_TreeIterCompareFunc ::
        (B.CallStack.HasCallStack, MonadIO m, Gtk.TreeModel.IsTreeModel a) =>
        FunPtr C_TreeIterCompareFunc
        -> a
        -- ^ /@model@/: The t'GI.Gtk.Interfaces.TreeModel.TreeModel' the comparison is within
        -> Gtk.TreeIter.TreeIter
        -- ^ /@a@/: A t'GI.Gtk.Structs.TreeIter.TreeIter' in /@model@/
        -> Gtk.TreeIter.TreeIter
        -- ^ /@b@/: Another t'GI.Gtk.Structs.TreeIter.TreeIter' in /@model@/
        -> Ptr ()
        -- ^ /@userData@/: Data passed when the compare func is assigned e.g. by
        --  'GI.Gtk.Interfaces.TreeSortable.treeSortableSetSortFunc'
        -> m Int32
        -- ^ __Returns:__ a negative integer, zero or a positive integer depending on whether
        --   /@a@/ sorts before, with or after /@b@/
    dynamic_TreeIterCompareFunc :: forall (m :: * -> *) a.
    (HasCallStack, MonadIO m, IsTreeModel a) =>
    FunPtr C_TreeIterCompareFunc
    -> a -> TreeIter -> TreeIter -> Ptr () -> m Int32
    dynamic_TreeIterCompareFunc FunPtr C_TreeIterCompareFunc
    __funPtr a
    model TreeIter
    a TreeIter
    b Ptr ()
    userData = IO Int32 -> m Int32
    forall a. IO a -> m a
    forall (m :: * -> *) a. MonadIO m => IO a -> m a
    liftIO (IO Int32 -> m Int32) -> IO Int32 -> m Int32
    forall a b. (a -> b) -> a -> b
    $ do
        model' <- a -> IO (Ptr TreeModel)
    forall a b. (HasCallStack, ManagedPtrNewtype a) => a -> IO (Ptr b)
    unsafeManagedPtrCastPtr a
    model
        a' <- unsafeManagedPtrGetPtr a
        b' <- unsafeManagedPtrGetPtr b
        result <- (__dynamic_C_TreeIterCompareFunc __funPtr) model' a' b' userData
        touchManagedPtr model
        touchManagedPtr a
        touchManagedPtr b
        return result

    -- | Generate a function pointer callable from C code, from a `C_TreeIterCompareFunc`.
    foreign import ccall "wrapper"
        mk_TreeIterCompareFunc :: C_TreeIterCompareFunc -> IO (FunPtr C_TreeIterCompareFunc)

    -- | A GtkTreeIterCompareFunc should return a negative integer, zero, or a positive
    -- integer if /@a@/ sorts before /@b@/, /@a@/ sorts with /@b@/, or /@a@/ sorts after /@b@/
    -- respectively. If two iters compare as equal, their order in the sorted model
    -- is undefined. In order to ensure that the t'GI.Gtk.Interfaces.TreeSortable.TreeSortable' behaves as
    -- expected, the GtkTreeIterCompareFunc must define a partial order on
    -- the model, i.e. it must be reflexive, antisymmetric and transitive.
    --
    -- For example, if /@model@/ is a product catalogue, then a compare function
    -- for the “price” column could be one which returns
    -- @price_of(\@a) - price_of(\@b)@.
    type TreeIterCompareFunc =
        Gtk.TreeModel.TreeModel
        -- ^ /@model@/: The t'GI.Gtk.Interfaces.TreeModel.TreeModel' the comparison is within
        -> Gtk.TreeIter.TreeIter
        -- ^ /@a@/: A t'GI.Gtk.Structs.TreeIter.TreeIter' in /@model@/
        -> Gtk.TreeIter.TreeIter
        -- ^ /@b@/: Another t'GI.Gtk.Structs.TreeIter.TreeIter' in /@model@/
        -> IO Int32
        -- ^ __Returns:__ a negative integer, zero or a positive integer depending on whether
        --   /@a@/ sorts before, with or after /@b@/

    -- | A convenience synonym for @`Nothing` :: `Maybe` `TreeIterCompareFunc`@.
    noTreeIterCompareFunc :: Maybe TreeIterCompareFunc
    noTreeIterCompareFunc :: Maybe TreeIterCompareFunc
    noTreeIterCompareFunc = Maybe TreeIterCompareFunc
    forall a. Maybe a
    Nothing

    -- | A GtkTreeIterCompareFunc should return a negative integer, zero, or a positive
    -- integer if /@a@/ sorts before /@b@/, /@a@/ sorts with /@b@/, or /@a@/ sorts after /@b@/
    -- respectively. If two iters compare as equal, their order in the sorted model
    -- is undefined. In order to ensure that the t'GI.Gtk.Interfaces.TreeSortable.TreeSortable' behaves as
    -- expected, the GtkTreeIterCompareFunc must define a partial order on
    -- the model, i.e. it must be reflexive, antisymmetric and transitive.
    --
    -- For example, if /@model@/ is a product catalogue, then a compare function
    -- for the “price” column could be one which returns
    -- @price_of(\@a) - price_of(\@b)@.
    type TreeIterCompareFunc_WithClosures =
        Gtk.TreeModel.TreeModel
        -- ^ /@model@/: The t'GI.Gtk.Interfaces.TreeModel.TreeModel' the comparison is within
        -> Gtk.TreeIter.TreeIter
        -- ^ /@a@/: A t'GI.Gtk.Structs.TreeIter.TreeIter' in /@model@/
        -> Gtk.TreeIter.TreeIter
        -- ^ /@b@/: Another t'GI.Gtk.Structs.TreeIter.TreeIter' in /@model@/
        -> Ptr ()
        -- ^ /@userData@/: Data passed when the compare func is assigned e.g. by
        --  'GI.Gtk.Interfaces.TreeSortable.treeSortableSetSortFunc'
        -> IO Int32
        -- ^ __Returns:__ a negative integer, zero or a positive integer depending on whether
        --   /@a@/ sorts before, with or after /@b@/

    -- | A convenience synonym for @`Nothing` :: `Maybe` `TreeIterCompareFunc_WithClosures`@.
    noTreeIterCompareFunc_WithClosures :: Maybe TreeIterCompareFunc_WithClosures
    noTreeIterCompareFunc_WithClosures :: Maybe TreeIterCompareFunc_WithClosures
    noTreeIterCompareFunc_WithClosures = Maybe TreeIterCompareFunc_WithClosures
    forall a. Maybe a
    Nothing

    -- | A simple wrapper that ignores the closure arguments.
    drop_closures_TreeIterCompareFunc :: TreeIterCompareFunc -> TreeIterCompareFunc_WithClosures
    drop_closures_TreeIterCompareFunc :: TreeIterCompareFunc -> TreeIterCompareFunc_WithClosures
    drop_closures_TreeIterCompareFunc TreeIterCompareFunc
    _f TreeModel
    model TreeIter
    a TreeIter
    b Ptr ()
    _ = TreeIterCompareFunc
    _f TreeModel
    model TreeIter
    a TreeIter
    b

    -- | Wrap the callback into a `GClosure`.
    genClosure_TreeIterCompareFunc :: MonadIO m => TreeIterCompareFunc -> m (GClosure C_TreeIterCompareFunc)
    genClosure_TreeIterCompareFunc :: forall (m :: * -> *).
    MonadIO m =>
    TreeIterCompareFunc -> m (GClosure C_TreeIterCompareFunc)
    genClosure_TreeIterCompareFunc TreeIterCompareFunc
    cb = IO (GClosure C_TreeIterCompareFunc)
    -> m (GClosure C_TreeIterCompareFunc)
    forall a. IO a -> m a
    forall (m :: * -> *) a. MonadIO m => IO a -> m a
    liftIO (IO (GClosure C_TreeIterCompareFunc)
     -> m (GClosure C_TreeIterCompareFunc))
    -> IO (GClosure C_TreeIterCompareFunc)
    -> m (GClosure C_TreeIterCompareFunc)
    forall a b. (a -> b) -> a -> b
    $ do
        let cb' :: TreeIterCompareFunc_WithClosures
    cb' = TreeIterCompareFunc -> TreeIterCompareFunc_WithClosures
    drop_closures_TreeIterCompareFunc TreeIterCompareFunc
    cb
        let cb'' :: C_TreeIterCompareFunc
    cb'' = Maybe (Ptr (FunPtr C_TreeIterCompareFunc))
    -> TreeIterCompareFunc_WithClosures -> C_TreeIterCompareFunc
    wrap_TreeIterCompareFunc Maybe (Ptr (FunPtr C_TreeIterCompareFunc))
    forall a. Maybe a
    Nothing TreeIterCompareFunc_WithClosures
    cb'
        C_TreeIterCompareFunc -> IO (FunPtr C_TreeIterCompareFunc)
    mk_TreeIterCompareFunc C_TreeIterCompareFunc
    cb'' IO (FunPtr C_TreeIterCompareFunc)
    -> (FunPtr C_TreeIterCompareFunc
        -> IO (GClosure C_TreeIterCompareFunc))
    -> IO (GClosure C_TreeIterCompareFunc)
    forall a b. IO a -> (a -> IO b) -> IO b
    forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
    >>= FunPtr C_TreeIterCompareFunc -> IO (GClosure C_TreeIterCompareFunc)
    forall (m :: * -> *) a. MonadIO m => FunPtr a -> m (GClosure a)
    B.GClosure.newGClosure

    -- | Wrap a `TreeIterCompareFunc` into a `C_TreeIterCompareFunc`.
    wrap_TreeIterCompareFunc ::
        Maybe (Ptr (FunPtr C_TreeIterCompareFunc)) ->
        TreeIterCompareFunc_WithClosures ->
        C_TreeIterCompareFunc
    wrap_TreeIterCompareFunc :: Maybe (Ptr (FunPtr C_TreeIterCompareFunc))
    -> TreeIterCompareFunc_WithClosures -> C_TreeIterCompareFunc
    wrap_TreeIterCompareFunc Maybe (Ptr (FunPtr C_TreeIterCompareFunc))
    gi'funptrptr TreeIterCompareFunc_WithClosures
    gi'cb Ptr TreeModel
    model Ptr TreeIter
    a Ptr TreeIter
    b Ptr ()
    userData = do
        model' <- ((ManagedPtr TreeModel -> TreeModel)
    -> Ptr TreeModel -> IO TreeModel
    forall a b.
    (HasCallStack, GObject a, GObject b) =>
    (ManagedPtr a -> a) -> Ptr b -> IO a
    newObject ManagedPtr TreeModel -> TreeModel
    Gtk.TreeModel.TreeModel) Ptr TreeModel
    model
        B.ManagedPtr.withTransient  a $ \TreeIter
    a' -> do
            Ptr TreeIter -> (TreeIter -> IO Int32) -> IO Int32
    forall a b.
    (HasCallStack, ManagedPtrNewtype a) =>
    Ptr a -> (a -> IO b) -> IO b
    B.ManagedPtr.withTransient  Ptr TreeIter
    b ((TreeIter -> IO Int32) -> IO Int32)
    -> (TreeIter -> IO Int32) -> IO Int32
    forall a b. (a -> b) -> a -> b
    $ \TreeIter
    b' -> do
                result <- TreeIterCompareFunc_WithClosures
    gi'cb  TreeModel
    model' TreeIter
    a' TreeIter
    b' Ptr ()
    userData
                maybeReleaseFunPtr gi'funptrptr
                return result

    -- callback TreeDestroyCountFunc
    {- Callable
      { returnType = Nothing
      , returnMayBeNull = False
      , returnTransfer = TransferNothing
      , returnDocumentation =
          Documentation { rawDocText = Nothing , sinceVersion = Nothing }
      , args =
          [ Arg
              { argCName = "tree_view"
              , argType =
                  TInterface Name { namespace = "Gtk" , name = "TreeView" }
              , argCType = Just "GtkTreeView*"
              , direction = DirectionIn
              , mayBeNull = False
              , argDoc =
                  Documentation { rawDocText = Nothing , sinceVersion = Nothing }
              , argScope = ScopeTypeInvalid
              , argClosure = -1
              , argDestroy = -1
              , argCallerAllocates = False
              , argCallbackUserData = False
              , transfer = TransferNothing
              }
          , Arg
              { argCName = "path"
              , argType =
                  TInterface Name { namespace = "Gtk" , name = "TreePath" }
              , argCType = Just "GtkTreePath*"
              , direction = DirectionIn
              , mayBeNull = False
              , argDoc =
                  Documentation { rawDocText = Nothing , sinceVersion = Nothing }
              , argScope = ScopeTypeInvalid
              , argClosure = -1
              , argDestroy = -1
              , argCallerAllocates = False
              , argCallbackUserData = False
              , transfer = TransferNothing
              }
          , Arg
              { argCName = "children"
              , argType = TBasicType TInt
              , argCType = Just "gint"
              , direction = DirectionIn
              , mayBeNull = False
              , argDoc =
                  Documentation { rawDocText = Nothing , sinceVersion = Nothing }
              , argScope = ScopeTypeInvalid
              , argClosure = -1
              , argDestroy = -1
              , argCallerAllocates = False
              , argCallbackUserData = False
              , transfer = TransferNothing
              }
          , Arg
              { argCName = "user_data"
              , argType = TBasicType TPtr
              , argCType = Just "gpointer"
              , direction = DirectionIn
              , mayBeNull = True
              , argDoc =
                  Documentation { rawDocText = Nothing , sinceVersion = Nothing }
              , argScope = ScopeTypeInvalid
              , argClosure = -1
              , argDestroy = -1
              , argCallerAllocates = False
              , argCallbackUserData = True
              , transfer = TransferNothing
              }
          ]
      , skipReturn = False
      , callableThrows = False
      , callableDeprecated = Nothing
      , callableDocumentation =
          Documentation { rawDocText = Nothing , sinceVersion = Nothing }
      , callableResolvable = Nothing
      }
    -}
    -- | Type for the callback on the (unwrapped) C side.
    type C_TreeDestroyCountFunc =
        Ptr Gtk.TreeView.TreeView ->
        Ptr Gtk.TreePath.TreePath ->
        Int32 ->
        Ptr () ->
        IO ()

    -- Args: [ Arg
    --           { argCName = "tree_view"
    --           , argType =
    --               TInterface Name { namespace = "Gtk" , name = "TreeView" }
    --           , argCType = Just "GtkTreeView*"
    --           , direction = DirectionIn
    --           , mayBeNull = False
    --           , argDoc =
    --               Documentation { rawDocText = Nothing , sinceVersion = Nothing }
    --           , argScope = ScopeTypeInvalid
    --           , argClosure = -1
    --           , argDestroy = -1
    --           , argCallerAllocates = False
    --           , argCallbackUserData = False
    --           , transfer = TransferNothing
    --           }
    --       , Arg
    --           { argCName = "path"
    --           , argType =
    --               TInterface Name { namespace = "Gtk" , name = "TreePath" }
    --           , argCType = Just "GtkTreePath*"
    --           , direction = DirectionIn
    --           , mayBeNull = False
    --           , argDoc =
    --               Documentation { rawDocText = Nothing , sinceVersion = Nothing }
    --           , argScope = ScopeTypeInvalid
    --           , argClosure = -1
    --           , argDestroy = -1
    --           , argCallerAllocates = False
    --           , argCallbackUserData = False
    --           , transfer = TransferNothing
    --           }
    --       , Arg
    --           { argCName = "children"
    --           , argType = TBasicType TInt
    --           , argCType = Just "gint"
    --           , direction = DirectionIn
    --           , mayBeNull = False
    --           , argDoc =
    --               Documentation { rawDocText = Nothing , sinceVersion = Nothing }
    --           , argScope = ScopeTypeInvalid
    --           , argClosure = -1
    --           , argDestroy = -1
    --           , argCallerAllocates = False
    --           , argCallbackUserData = False
    --           , transfer = TransferNothing
    --           }
    --       , Arg
    --           { argCName = "user_data"
    --           , argType = TBasicType TPtr
    --           , argCType = Just "gpointer"
    --           , direction = DirectionIn
    --           , mayBeNull = True
    --           , argDoc =
    --               Documentation { rawDocText = Nothing , sinceVersion = Nothing }
    --           , argScope = ScopeTypeInvalid
    --           , argClosure = -1
    --           , argDestroy = -1
    --           , argCallerAllocates = False
    --           , argCallbackUserData = True
    --           , transfer = TransferNothing
    --           }
    --       ]
    -- Lengths: []
    -- returnType: Nothing
    -- throws : False
    -- Skip return : False

    foreign import ccall "dynamic" __dynamic_C_TreeDestroyCountFunc :: FunPtr C_TreeDestroyCountFunc -> C_TreeDestroyCountFunc

    -- | Given a pointer to a foreign C function, wrap it into a function callable from Haskell.
    dynamic_TreeDestroyCountFunc ::
        (B.CallStack.HasCallStack, MonadIO m, Gtk.TreeView.IsTreeView a) =>
        FunPtr C_TreeDestroyCountFunc
        -> a
        -> Gtk.TreePath.TreePath
        -> Int32
        -> Ptr ()
        -> m ()
    dynamic_TreeDestroyCountFunc :: forall (m :: * -> *) a.
    (HasCallStack, MonadIO m, IsTreeView a) =>
    FunPtr C_TreeDestroyCountFunc
    -> a -> TreePath -> Int32 -> Ptr () -> m ()
    dynamic_TreeDestroyCountFunc FunPtr C_TreeDestroyCountFunc
    __funPtr a
    treeView TreePath
    path Int32
    children Ptr ()
    userData = IO () -> m ()
    forall a. IO a -> m a
    forall (m :: * -> *) a. MonadIO m => IO a -> m a
    liftIO (IO () -> m ()) -> IO () -> m ()
    forall a b. (a -> b) -> a -> b
    $ do
        treeView' <- a -> IO (Ptr TreeView)
    forall a b. (HasCallStack, ManagedPtrNewtype a) => a -> IO (Ptr b)
    unsafeManagedPtrCastPtr a
    treeView
        path' <- unsafeManagedPtrGetPtr path
        (__dynamic_C_TreeDestroyCountFunc __funPtr) treeView' path' children userData
        touchManagedPtr treeView
        touchManagedPtr path
        return ()

    -- | Generate a function pointer callable from C code, from a `C_TreeDestroyCountFunc`.
    foreign import ccall "wrapper"
        mk_TreeDestroyCountFunc :: C_TreeDestroyCountFunc -> IO (FunPtr C_TreeDestroyCountFunc)

    -- | /No description available in the introspection data./
    type TreeDestroyCountFunc =
        Gtk.TreeView.TreeView
        -> Gtk.TreePath.TreePath
        -> Int32
        -> IO ()

    -- | A convenience synonym for @`Nothing` :: `Maybe` `TreeDestroyCountFunc`@.
    noTreeDestroyCountFunc :: Maybe TreeDestroyCountFunc
    noTreeDestroyCountFunc :: Maybe TreeDestroyCountFunc
    noTreeDestroyCountFunc = Maybe TreeDestroyCountFunc
    forall a. Maybe a
    Nothing

    -- | /No description available in the introspection data./
    type TreeDestroyCountFunc_WithClosures =
        Gtk.TreeView.TreeView
        -> Gtk.TreePath.TreePath
        -> Int32
        -> Ptr ()
        -> IO ()

    -- | A convenience synonym for @`Nothing` :: `Maybe` `TreeDestroyCountFunc_WithClosures`@.
    noTreeDestroyCountFunc_WithClosures :: Maybe TreeDestroyCountFunc_WithClosures
    noTreeDestroyCountFunc_WithClosures :: Maybe TreeDestroyCountFunc_WithClosures
    noTreeDestroyCountFunc_WithClosures = Maybe TreeDestroyCountFunc_WithClosures
    forall a. Maybe a
    Nothing

    -- | A simple wrapper that ignores the closure arguments.
    drop_closures_TreeDestroyCountFunc :: TreeDestroyCountFunc -> TreeDestroyCountFunc_WithClosures
    drop_closures_TreeDestroyCountFunc :: TreeDestroyCountFunc -> TreeDestroyCountFunc_WithClosures
    drop_closures_TreeDestroyCountFunc TreeDestroyCountFunc
    _f TreeView
    treeView TreePath
    path Int32
    children Ptr ()
    _ = TreeDestroyCountFunc
    _f TreeView
    treeView TreePath
    path Int32
    children

    -- | Wrap the callback into a `GClosure`.
    genClosure_TreeDestroyCountFunc :: MonadIO m => TreeDestroyCountFunc -> m (GClosure C_TreeDestroyCountFunc)
    genClosure_TreeDestroyCountFunc :: forall (m :: * -> *).
    MonadIO m =>
    TreeDestroyCountFunc -> m (GClosure C_TreeDestroyCountFunc)
    genClosure_TreeDestroyCountFunc TreeDestroyCountFunc
    cb = IO (GClosure C_TreeDestroyCountFunc)
    -> m (GClosure C_TreeDestroyCountFunc)
    forall a. IO a -> m a
    forall (m :: * -> *) a. MonadIO m => IO a -> m a
    liftIO (IO (GClosure C_TreeDestroyCountFunc)
     -> m (GClosure C_TreeDestroyCountFunc))
    -> IO (GClosure C_TreeDestroyCountFunc)
    -> m (GClosure C_TreeDestroyCountFunc)
    forall a b. (a -> b) -> a -> b
    $ do
        let cb' :: TreeDestroyCountFunc_WithClosures
    cb' = TreeDestroyCountFunc -> TreeDestroyCountFunc_WithClosures
    drop_closures_TreeDestroyCountFunc TreeDestroyCountFunc
    cb
        let cb'' :: C_TreeDestroyCountFunc
    cb'' = Maybe (Ptr (FunPtr C_TreeDestroyCountFunc))
    -> TreeDestroyCountFunc_WithClosures -> C_TreeDestroyCountFunc
    wrap_TreeDestroyCountFunc Maybe (Ptr (FunPtr C_TreeDestroyCountFunc))
    forall a. Maybe a
    Nothing TreeDestroyCountFunc_WithClosures
    cb'
        C_TreeDestroyCountFunc -> IO (FunPtr C_TreeDestroyCountFunc)
    mk_TreeDestroyCountFunc C_TreeDestroyCountFunc
    cb'' IO (FunPtr C_TreeDestroyCountFunc)
    -> (FunPtr C_TreeDestroyCountFunc
        -> IO (GClosure C_TreeDestroyCountFunc))
    -> IO (GClosure C_TreeDestroyCountFunc)
    forall a b. IO a -> (a -> IO b) -> IO b
    forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
    >>= FunPtr C_TreeDestroyCountFunc
    -> IO (GClosure C_TreeDestroyCountFunc)
    forall (m :: * -> *) a. MonadIO m => FunPtr a -> m (GClosure a)
    B.GClosure.newGClosure

    -- | Wrap a `TreeDestroyCountFunc` into a `C_TreeDestroyCountFunc`.
    wrap_TreeDestroyCountFunc ::
        Maybe (Ptr (FunPtr C_TreeDestroyCountFunc)) ->
        TreeDestroyCountFunc_WithClosures ->
        C_TreeDestroyCountFunc
    wrap_TreeDestroyCountFunc :: Maybe (Ptr (FunPtr C_TreeDestroyCountFunc))
    -> TreeDestroyCountFunc_WithClosures -> C_TreeDestroyCountFunc
    wrap_TreeDestroyCountFunc Maybe (Ptr (FunPtr C_TreeDestroyCountFunc))
    gi'funptrptr TreeDestroyCountFunc_WithClosures
    gi'cb Ptr TreeView
    treeView Ptr TreePath
    path Int32
    children Ptr ()
    userData = do
        treeView' <- ((ManagedPtr TreeView -> TreeView) -> Ptr TreeView -> IO TreeView
    forall a b.
    (HasCallStack, GObject a, GObject b) =>
    (ManagedPtr a -> a) -> Ptr b -> IO a
    newObject ManagedPtr TreeView -> TreeView
    Gtk.TreeView.TreeView) Ptr TreeView
    treeView
        B.ManagedPtr.withTransient  path $ \TreePath
    path' -> do
            TreeDestroyCountFunc_WithClosures
    gi'cb  TreeView
    treeView' TreePath
    path' Int32
    children Ptr ()
    userData
            Maybe (Ptr (FunPtr C_TreeDestroyCountFunc)) -> IO ()
    forall a. Maybe (Ptr (FunPtr a)) -> IO ()
    maybeReleaseFunPtr Maybe (Ptr (FunPtr C_TreeDestroyCountFunc))
    gi'funptrptr

    -- callback TreeCellDataFunc
    {- Callable
      { returnType = Nothing
      , returnMayBeNull = False
      , returnTransfer = TransferNothing
      , returnDocumentation =
          Documentation { rawDocText = Nothing , sinceVersion = Nothing }
      , args =
          [ Arg
              { argCName = "tree_column"
              , argType =
                  TInterface Name { namespace = "Gtk" , name = "TreeViewColumn" }
              , argCType = Just "GtkTreeViewColumn*"
              , direction = DirectionIn
              , mayBeNull = False
              , argDoc =
                  Documentation
                    { rawDocText = Just "A #GtkTreeViewColumn"
                    , sinceVersion = Nothing
                    }
              , argScope = ScopeTypeInvalid
              , argClosure = -1
              , argDestroy = -1
              , argCallerAllocates = False
              , argCallbackUserData = False
              , transfer = TransferNothing
              }
          , Arg
              { argCName = "cell"
              , argType =
                  TInterface Name { namespace = "Gtk" , name = "CellRenderer" }
              , argCType = Just "GtkCellRenderer*"
              , direction = DirectionIn
              , mayBeNull = False
              , argDoc =
                  Documentation
                    { rawDocText =
                        Just "The #GtkCellRenderer that is being rendered by @tree_column"
                    , sinceVersion = Nothing
                    }
              , argScope = ScopeTypeInvalid
              , argClosure = -1
              , argDestroy = -1
              , argCallerAllocates = False
              , argCallbackUserData = False
              , transfer = TransferNothing
              }
          , Arg
              { argCName = "tree_model"
              , argType =
                  TInterface Name { namespace = "Gtk" , name = "TreeModel" }
              , argCType = Just "GtkTreeModel*"
              , direction = DirectionIn
              , mayBeNull = False
              , argDoc =
                  Documentation
                    { rawDocText = Just "The #GtkTreeModel being rendered"
                    , sinceVersion = Nothing
                    }
              , argScope = ScopeTypeInvalid
              , argClosure = -1
              , argDestroy = -1
              , argCallerAllocates = False
              , argCallbackUserData = False
              , transfer = TransferNothing
              }
          , Arg
              { argCName = "iter"
              , argType =
                  TInterface Name { namespace = "Gtk" , name = "TreeIter" }
              , argCType = Just "GtkTreeIter*"
              , direction = DirectionIn
              , mayBeNull = False
              , argDoc =
                  Documentation
                    { rawDocText = Just "A #GtkTreeIter of the current row rendered"
                    , sinceVersion = Nothing
                    }
              , argScope = ScopeTypeInvalid
              , argClosure = -1
              , argDestroy = -1
              , argCallerAllocates = False
              , argCallbackUserData = False
              , transfer = TransferNothing
              }
          , Arg
              { argCName = "data"
              , argType = TBasicType TPtr
              , argCType = Just "gpointer"
              , direction = DirectionIn
              , mayBeNull = True
              , argDoc =
                  Documentation
                    { rawDocText = Just "user data" , sinceVersion = Nothing }
              , argScope = ScopeTypeInvalid
              , argClosure = -1
              , argDestroy = -1
              , argCallerAllocates = False
              , argCallbackUserData = True
              , transfer = TransferNothing
              }
          ]
      , skipReturn = False
      , callableThrows = False
      , callableDeprecated = Nothing
      , callableDocumentation =
          Documentation
            { rawDocText =
                Just
                  "A function to set the properties of a cell instead of just using the\nstraight mapping between the cell and the model.  This is useful for\ncustomizing the cell renderer.  For example, a function might get an\ninteger from the @tree_model, and render it to the \8220text\8221 attribute of\n\8220cell\8221 by converting it to its written equivalent.  This is set by\ncalling gtk_tree_view_column_set_cell_data_func()"
            , sinceVersion = Nothing
            }
      , callableResolvable = Nothing
      }
    -}
    -- | Type for the callback on the (unwrapped) C side.
    type C_TreeCellDataFunc =
        Ptr Gtk.TreeViewColumn.TreeViewColumn ->
        Ptr Gtk.CellRenderer.CellRenderer ->
        Ptr Gtk.TreeModel.TreeModel ->
        Ptr Gtk.TreeIter.TreeIter ->
        Ptr () ->
        IO ()

    -- Args: [ Arg
    --           { argCName = "tree_column"
    --           , argType =
    --               TInterface Name { namespace = "Gtk" , name = "TreeViewColumn" }
    --           , argCType = Just "GtkTreeViewColumn*"
    --           , direction = DirectionIn
    --           , mayBeNull = False
    --           , argDoc =
    --               Documentation
    --                 { rawDocText = Just "A #GtkTreeViewColumn"
    --                 , sinceVersion = Nothing
    --                 }
    --           , argScope = ScopeTypeInvalid
    --           , argClosure = -1
    --           , argDestroy = -1
    --           , argCallerAllocates = False
    --           , argCallbackUserData = False
    --           , transfer = TransferNothing
    --           }
    --       , Arg
    --           { argCName = "cell"
    --           , argType =
    --               TInterface Name { namespace = "Gtk" , name = "CellRenderer" }
    --           , argCType = Just "GtkCellRenderer*"
    --           , direction = DirectionIn
    --           , mayBeNull = False
    --           , argDoc =
    --               Documentation
    --                 { rawDocText =
    --                     Just "The #GtkCellRenderer that is being rendered by @tree_column"
    --                 , sinceVersion = Nothing
    --                 }
    --           , argScope = ScopeTypeInvalid
    --           , argClosure = -1
    --           , argDestroy = -1
    --           , argCallerAllocates = False
    --           , argCallbackUserData = False
    --           , transfer = TransferNothing
    --           }
    --       , Arg
    --           { argCName = "tree_model"
    --           , argType =
    --               TInterface Name { namespace = "Gtk" , name = "TreeModel" }
    --           , argCType = Just "GtkTreeModel*"
    --           , direction = DirectionIn
    --           , mayBeNull = False
    --           , argDoc =
    --               Documentation
    --                 { rawDocText = Just "The #GtkTreeModel being rendered"
    --                 , sinceVersion = Nothing
    --                 }
    --           , argScope = ScopeTypeInvalid
    --           , argClosure = -1
    --           , argDestroy = -1
    --           , argCallerAllocates = False
    --           , argCallbackUserData = False
    --           , transfer = TransferNothing
    --           }
    --       , Arg
    --           { argCName = "iter"
    --           , argType =
    --               TInterface Name { namespace = "Gtk" , name = "TreeIter" }
    --           , argCType = Just "GtkTreeIter*"
    --           , direction = DirectionIn
    --           , mayBeNull = False
    --           , argDoc =
    --               Documentation
    --                 { rawDocText = Just "A #GtkTreeIter of the current row rendered"
    --                 , sinceVersion = Nothing
    --                 }
    --           , argScope = ScopeTypeInvalid
    --           , argClosure = -1
    --           , argDestroy = -1
    --           , argCallerAllocates = False
    --           , argCallbackUserData = False
    --           , transfer = TransferNothing
    --           }
    --       , Arg
    --           { argCName = "data"
    --           , argType = TBasicType TPtr
    --           , argCType = Just "gpointer"
    --           , direction = DirectionIn
    --           , mayBeNull = True
    --           , argDoc =
    --               Documentation
    --                 { rawDocText = Just "user data" , sinceVersion = Nothing }
    --           , argScope = ScopeTypeInvalid
    --           , argClosure = -1
    --           , argDestroy = -1
    --           , argCallerAllocates = False
    --           , argCallbackUserData = True
    --           , transfer = TransferNothing
    --           }
    --       ]
    -- Lengths: []
    -- returnType: Nothing
    -- throws : False
    -- Skip return : False

    foreign import ccall "dynamic" __dynamic_C_TreeCellDataFunc :: FunPtr C_TreeCellDataFunc -> C_TreeCellDataFunc

    -- | Given a pointer to a foreign C function, wrap it into a function callable from Haskell.
    dynamic_TreeCellDataFunc ::
        (B.CallStack.HasCallStack, MonadIO m, Gtk.TreeViewColumn.IsTreeViewColumn a, Gtk.CellRenderer.IsCellRenderer b, Gtk.TreeModel.IsTreeModel c) =>
        FunPtr C_TreeCellDataFunc
        -> a
        -- ^ /@treeColumn@/: A t'GI.Gtk.Objects.TreeViewColumn.TreeViewColumn'
        -> b
        -- ^ /@cell@/: The t'GI.Gtk.Objects.CellRenderer.CellRenderer' that is being rendered by /@treeColumn@/
        -> c
        -- ^ /@treeModel@/: The t'GI.Gtk.Interfaces.TreeModel.TreeModel' being rendered
        -> Gtk.TreeIter.TreeIter
        -- ^ /@iter@/: A t'GI.Gtk.Structs.TreeIter.TreeIter' of the current row rendered
        -> Ptr ()
        -- ^ /@data@/: user data
        -> m ()
    dynamic_TreeCellDataFunc :: forall (m :: * -> *) a b c.
    (HasCallStack, MonadIO m, IsTreeViewColumn a, IsCellRenderer b,
     IsTreeModel c) =>
    FunPtr C_TreeCellDataFunc
    -> a -> b -> c -> TreeIter -> Ptr () -> m ()
    dynamic_TreeCellDataFunc FunPtr C_TreeCellDataFunc
    __funPtr a
    treeColumn b
    cell c
    treeModel TreeIter
    iter Ptr ()
    data_ = IO () -> m ()
    forall a. IO a -> m a
    forall (m :: * -> *) a. MonadIO m => IO a -> m a
    liftIO (IO () -> m ()) -> IO () -> m ()
    forall a b. (a -> b) -> a -> b
    $ do
        treeColumn' <- a -> IO (Ptr TreeViewColumn)
    forall a b. (HasCallStack, ManagedPtrNewtype a) => a -> IO (Ptr b)
    unsafeManagedPtrCastPtr a
    treeColumn
        cell' <- unsafeManagedPtrCastPtr cell
        treeModel' <- unsafeManagedPtrCastPtr treeModel
        iter' <- unsafeManagedPtrGetPtr iter
        (__dynamic_C_TreeCellDataFunc __funPtr) treeColumn' cell' treeModel' iter' data_
        touchManagedPtr treeColumn
        touchManagedPtr cell
        touchManagedPtr treeModel
        touchManagedPtr iter
        return ()

    -- | Generate a function pointer callable from C code, from a `C_TreeCellDataFunc`.
    foreign import ccall "wrapper"
        mk_TreeCellDataFunc :: C_TreeCellDataFunc -> IO (FunPtr C_TreeCellDataFunc)

    -- | A function to set the properties of a cell instead of just using the
    -- straight mapping between the cell and the model.  This is useful for
    -- customizing the cell renderer.  For example, a function might get an
    -- integer from the /@treeModel@/, and render it to the “text” attribute of
    -- “cell” by converting it to its written equivalent.  This is set by
    -- calling 'GI.Gtk.Objects.TreeViewColumn.treeViewColumnSetCellDataFunc'
    type TreeCellDataFunc =
        Gtk.TreeViewColumn.TreeViewColumn
        -- ^ /@treeColumn@/: A t'GI.Gtk.Objects.TreeViewColumn.TreeViewColumn'
        -> Gtk.CellRenderer.CellRenderer
        -- ^ /@cell@/: The t'GI.Gtk.Objects.CellRenderer.CellRenderer' that is being rendered by /@treeColumn@/
        -> Gtk.TreeModel.TreeModel
        -- ^ /@treeModel@/: The t'GI.Gtk.Interfaces.TreeModel.TreeModel' being rendered
        -> Gtk.TreeIter.TreeIter
        -- ^ /@iter@/: A t'GI.Gtk.Structs.TreeIter.TreeIter' of the current row rendered
        -> IO ()

    -- | A convenience synonym for @`Nothing` :: `Maybe` `TreeCellDataFunc`@.
    noTreeCellDataFunc :: Maybe TreeCellDataFunc
    noTreeCellDataFunc :: Maybe TreeCellDataFunc
    noTreeCellDataFunc = Maybe TreeCellDataFunc
    forall a. Maybe a
    Nothing

    -- | A function to set the properties of a cell instead of just using the
    -- straight mapping between the cell and the model.  This is useful for
    -- customizing the cell renderer.  For example, a function might get an
    -- integer from the /@treeModel@/, and render it to the “text” attribute of
    -- “cell” by converting it to its written equivalent.  This is set by
    -- calling 'GI.Gtk.Objects.TreeViewColumn.treeViewColumnSetCellDataFunc'
    type TreeCellDataFunc_WithClosures =
        Gtk.TreeViewColumn.TreeViewColumn
        -- ^ /@treeColumn@/: A t'GI.Gtk.Objects.TreeViewColumn.TreeViewColumn'
        -> Gtk.CellRenderer.CellRenderer
        -- ^ /@cell@/: The t'GI.Gtk.Objects.CellRenderer.CellRenderer' that is being rendered by /@treeColumn@/
        -> Gtk.TreeModel.TreeModel
        -- ^ /@treeModel@/: The t'GI.Gtk.Interfaces.TreeModel.TreeModel' being rendered
        -> Gtk.TreeIter.TreeIter
        -- ^ /@iter@/: A t'GI.Gtk.Structs.TreeIter.TreeIter' of the current row rendered
        -> Ptr ()
        -- ^ /@data@/: user data
        -> IO ()

    -- | A convenience synonym for @`Nothing` :: `Maybe` `TreeCellDataFunc_WithClosures`@.
    noTreeCellDataFunc_WithClosures :: Maybe TreeCellDataFunc_WithClosures
    noTreeCellDataFunc_WithClosures :: Maybe TreeCellDataFunc_WithClosures
    noTreeCellDataFunc_WithClosures = Maybe TreeCellDataFunc_WithClosures
    forall a. Maybe a
    Nothing

    -- | A simple wrapper that ignores the closure arguments.
    drop_closures_TreeCellDataFunc :: TreeCellDataFunc -> TreeCellDataFunc_WithClosures
    drop_closures_TreeCellDataFunc :: TreeCellDataFunc -> TreeCellDataFunc_WithClosures
    drop_closures_TreeCellDataFunc TreeCellDataFunc
    _f TreeViewColumn
    treeColumn CellRenderer
    cell TreeModel
    treeModel TreeIter
    iter Ptr ()
    _ = TreeCellDataFunc
    _f TreeViewColumn
    treeColumn CellRenderer
    cell TreeModel
    treeModel TreeIter
    iter

    -- | Wrap the callback into a `GClosure`.
    genClosure_TreeCellDataFunc :: MonadIO m => TreeCellDataFunc -> m (GClosure C_TreeCellDataFunc)
    genClosure_TreeCellDataFunc :: forall (m :: * -> *).
    MonadIO m =>
    TreeCellDataFunc -> m (GClosure C_TreeCellDataFunc)
    genClosure_TreeCellDataFunc TreeCellDataFunc
    cb = IO (GClosure C_TreeCellDataFunc) -> m (GClosure C_TreeCellDataFunc)
    forall a. IO a -> m a
    forall (m :: * -> *) a. MonadIO m => IO a -> m a
    liftIO (IO (GClosure C_TreeCellDataFunc)
     -> m (GClosure C_TreeCellDataFunc))
    -> IO (GClosure C_TreeCellDataFunc)
    -> m (GClosure C_TreeCellDataFunc)
    forall a b. (a -> b) -> a -> b
    $ do
        let cb' :: TreeCellDataFunc_WithClosures
    cb' = TreeCellDataFunc -> TreeCellDataFunc_WithClosures
    drop_closures_TreeCellDataFunc TreeCellDataFunc
    cb
        let cb'' :: C_TreeCellDataFunc
    cb'' = Maybe (Ptr (FunPtr C_TreeCellDataFunc))
    -> TreeCellDataFunc_WithClosures -> C_TreeCellDataFunc
    wrap_TreeCellDataFunc Maybe (Ptr (FunPtr C_TreeCellDataFunc))
    forall a. Maybe a
    Nothing TreeCellDataFunc_WithClosures
    cb'
        C_TreeCellDataFunc -> IO (FunPtr C_TreeCellDataFunc)
    mk_TreeCellDataFunc C_TreeCellDataFunc
    cb'' IO (FunPtr C_TreeCellDataFunc)
    -> (FunPtr C_TreeCellDataFunc -> IO (GClosure C_TreeCellDataFunc))
    -> IO (GClosure C_TreeCellDataFunc)
    forall a b. IO a -> (a -> IO b) -> IO b
    forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
    >>= FunPtr C_TreeCellDataFunc -> IO (GClosure C_TreeCellDataFunc)
    forall (m :: * -> *) a. MonadIO m => FunPtr a -> m (GClosure a)
    B.GClosure.newGClosure

    -- | Wrap a `TreeCellDataFunc` into a `C_TreeCellDataFunc`.
    wrap_TreeCellDataFunc ::
        Maybe (Ptr (FunPtr C_TreeCellDataFunc)) ->
        TreeCellDataFunc_WithClosures ->
        C_TreeCellDataFunc
    wrap_TreeCellDataFunc :: Maybe (Ptr (FunPtr C_TreeCellDataFunc))
    -> TreeCellDataFunc_WithClosures -> C_TreeCellDataFunc
    wrap_TreeCellDataFunc Maybe (Ptr (FunPtr C_TreeCellDataFunc))
    gi'funptrptr TreeCellDataFunc_WithClosures
    gi'cb Ptr TreeViewColumn
    treeColumn Ptr CellRenderer
    cell Ptr TreeModel
    treeModel Ptr TreeIter
    iter Ptr ()
    data_ = do
        treeColumn' <- ((ManagedPtr TreeViewColumn -> TreeViewColumn)
    -> Ptr TreeViewColumn -> IO TreeViewColumn
    forall a b.
    (HasCallStack, GObject a, GObject b) =>
    (ManagedPtr a -> a) -> Ptr b -> IO a
    newObject ManagedPtr TreeViewColumn -> TreeViewColumn
    Gtk.TreeViewColumn.TreeViewColumn) Ptr TreeViewColumn
    treeColumn
        cell' <- (newObject Gtk.CellRenderer.CellRenderer) cell
        treeModel' <- (newObject Gtk.TreeModel.TreeModel) treeModel
        B.ManagedPtr.withTransient  iter $ \TreeIter
    iter' -> do
            TreeCellDataFunc_WithClosures
    gi'cb  TreeViewColumn
    treeColumn' CellRenderer
    cell' TreeModel
    treeModel' TreeIter
    iter' Ptr ()
    data_
            Maybe (Ptr (FunPtr C_TreeCellDataFunc)) -> IO ()
    forall a. Maybe (Ptr (FunPtr a)) -> IO ()
    maybeReleaseFunPtr Maybe (Ptr (FunPtr C_TreeCellDataFunc))
    gi'funptrptr

    -- callback TranslateFunc
    {- Callable
      { returnType = Just (TBasicType TUTF8)
      , returnMayBeNull = False
      , returnTransfer = TransferEverything
      , returnDocumentation =
          Documentation
            { rawDocText = Just "the translated message"
            , sinceVersion = Nothing
            }
      , args =
          [ Arg
              { argCName = "path"
              , argType = TBasicType TUTF8
              , argCType = Just "const gchar*"
              , direction = DirectionIn
              , mayBeNull = False
              , argDoc =
                  Documentation
                    { rawDocText =
                        Just
                          "The id of the message. In #GtkActionGroup this will be a label\n  or tooltip from a #GtkActionEntry."
                    , sinceVersion = Nothing
                    }
              , argScope = ScopeTypeInvalid
              , argClosure = -1
              , argDestroy = -1
              , argCallerAllocates = False
              , argCallbackUserData = False
              , transfer = TransferNothing
              }
          , Arg
              { argCName = "func_data"
              , argType = TBasicType TPtr
              , argCType = Just "gpointer"
              , direction = DirectionIn
              , mayBeNull = True
              , argDoc =
                  Documentation
                    { rawDocText =
                        Just "user data passed in when registering the\n  function"
                    , sinceVersion = Nothing
                    }
              , argScope = ScopeTypeInvalid
              , argClosure = -1
              , argDestroy = -1
              , argCallerAllocates = False
              , argCallbackUserData = True
              , transfer = TransferNothing
              }
          ]
      , skipReturn = False
      , callableThrows = False
      , callableDeprecated =
          Just
            DeprecationInfo
              { deprecatedSinceVersion = Just "3.10"
              , deprecationMessage = Nothing
              }
      , callableDocumentation =
          Documentation
            { rawDocText =
                Just
                  "The function used to translate messages in e.g. #GtkIconFactory\nand #GtkActionGroup."
            , sinceVersion = Nothing
            }
      , callableResolvable = Nothing
      }
    -}
    -- | Type for the callback on the (unwrapped) C side.
    type C_TranslateFunc =
        CString ->
        Ptr () ->
        IO CString

    -- Args: [ Arg
    --           { argCName = "path"
    --           , argType = TBasicType TUTF8
    --           , argCType = Just "const gchar*"
    --           , direction = DirectionIn
    --           , mayBeNull = False
    --           , argDoc =
    --               Documentation
    --                 { rawDocText =
    --                     Just
    --                       "The id of the message. In #GtkActionGroup this will be a label\n  or tooltip from a #GtkActionEntry."
    --                 , sinceVersion = Nothing
    --                 }
    --           , argScope = ScopeTypeInvalid
    --           , argClosure = -1
    --           , argDestroy = -1
    --           , argCallerAllocates = False
    --           , argCallbackUserData = False
    --           , transfer = TransferNothing
    --           }
    --       , Arg
    --           { argCName = "func_data"
    --           , argType = TBasicType TPtr
    --           , argCType = Just "gpointer"
    --           , direction = DirectionIn
    --           , mayBeNull = True
    --           , argDoc =
    --               Documentation
    --                 { rawDocText =
    --                     Just "user data passed in when registering the\n  function"
    --                 , sinceVersion = Nothing
    --                 }
    --           , argScope = ScopeTypeInvalid
    --           , argClosure = -1
    --           , argDestroy = -1
    --           , argCallerAllocates = False
    --           , argCallbackUserData = True
    --           , transfer = TransferNothing
    --           }
    --       ]
    -- Lengths: []
    -- returnType: Just (TBasicType TUTF8)
    -- throws : False
    -- Skip return : False

    foreign import ccall "dynamic" __dynamic_C_TranslateFunc :: FunPtr C_TranslateFunc -> C_TranslateFunc

    -- | Given a pointer to a foreign C function, wrap it into a function callable from Haskell.
    dynamic_TranslateFunc ::
        (B.CallStack.HasCallStack, MonadIO m) =>
        FunPtr C_TranslateFunc
        -> T.Text
        -- ^ /@path@/: The id of the message. In t'GI.Gtk.Objects.ActionGroup.ActionGroup' this will be a label
        --   or tooltip from a t'GI.Gtk.Structs.ActionEntry.ActionEntry'.
        -> Ptr ()
        -- ^ /@funcData@/: user data passed in when registering the
        --   function
        -> m T.Text
        -- ^ __Returns:__ the translated message
    dynamic_TranslateFunc :: forall (m :: * -> *).
    (HasCallStack, MonadIO m) =>
    FunPtr C_TranslateFunc -> Text -> Ptr () -> m Text
    dynamic_TranslateFunc FunPtr C_TranslateFunc
    __funPtr Text
    path Ptr ()
    funcData = IO Text -> m Text
    forall a. IO a -> m a
    forall (m :: * -> *) a. MonadIO m => IO a -> m a
    liftIO (IO Text -> m Text) -> IO Text -> m Text
    forall a b. (a -> b) -> a -> b
    $ do
        path' <- Text -> IO CString
    textToCString Text
    path
        result <- (__dynamic_C_TranslateFunc __funPtr) path' funcData
        checkUnexpectedReturnNULL "translateFunc" result
        result' <- cstringToText result
        freeMem result
        freeMem path'
        return result'

    -- | Generate a function pointer callable from C code, from a `C_TranslateFunc`.
    foreign import ccall "wrapper"
        mk_TranslateFunc :: C_TranslateFunc -> IO (FunPtr C_TranslateFunc)

    {-# DEPRECATED TranslateFunc ["(Since version 3.10)"] #-}
    -- | The function used to translate messages in e.g. t'GI.Gtk.Objects.IconFactory.IconFactory'
    -- and t'GI.Gtk.Objects.ActionGroup.ActionGroup'.
    type TranslateFunc =
        T.Text
        -- ^ /@path@/: The id of the message. In t'GI.Gtk.Objects.ActionGroup.ActionGroup' this will be a label
        --   or tooltip from a t'GI.Gtk.Structs.ActionEntry.ActionEntry'.
        -> IO T.Text
        -- ^ __Returns:__ the translated message

    -- | A convenience synonym for @`Nothing` :: `Maybe` `TranslateFunc`@.
    noTranslateFunc :: Maybe TranslateFunc
    noTranslateFunc :: Maybe (Text -> IO Text)
    noTranslateFunc = Maybe (Text -> IO Text)
    forall a. Maybe a
    Nothing

    -- | The function used to translate messages in e.g. t'GI.Gtk.Objects.IconFactory.IconFactory'
    -- and t'GI.Gtk.Objects.ActionGroup.ActionGroup'.
    type TranslateFunc_WithClosures =
        T.Text
        -- ^ /@path@/: The id of the message. In t'GI.Gtk.Objects.ActionGroup.ActionGroup' this will be a label
        --   or tooltip from a t'GI.Gtk.Structs.ActionEntry.ActionEntry'.
        -> Ptr ()
        -- ^ /@funcData@/: user data passed in when registering the
        --   function
        -> IO T.Text
        -- ^ __Returns:__ the translated message

    -- | A convenience synonym for @`Nothing` :: `Maybe` `TranslateFunc_WithClosures`@.
    noTranslateFunc_WithClosures :: Maybe TranslateFunc_WithClosures
    noTranslateFunc_WithClosures :: Maybe TranslateFunc_WithClosures
    noTranslateFunc_WithClosures = Maybe TranslateFunc_WithClosures
    forall a. Maybe a
    Nothing

    -- | A simple wrapper that ignores the closure arguments.
    drop_closures_TranslateFunc :: TranslateFunc -> TranslateFunc_WithClosures
    drop_closures_TranslateFunc :: (Text -> IO Text) -> TranslateFunc_WithClosures
    drop_closures_TranslateFunc Text -> IO Text
    _f Text
    path Ptr ()
    _ = Text -> IO Text
    _f Text
    path

    -- | Wrap the callback into a `GClosure`.
    genClosure_TranslateFunc :: MonadIO m => TranslateFunc -> m (GClosure C_TranslateFunc)
    genClosure_TranslateFunc :: forall (m :: * -> *).
    MonadIO m =>
    (Text -> IO Text) -> m (GClosure C_TranslateFunc)
    genClosure_TranslateFunc Text -> IO Text
    cb = IO (GClosure C_TranslateFunc) -> m (GClosure C_TranslateFunc)
    forall a. IO a -> m a
    forall (m :: * -> *) a. MonadIO m => IO a -> m a
    liftIO (IO (GClosure C_TranslateFunc) -> m (GClosure C_TranslateFunc))
    -> IO (GClosure C_TranslateFunc) -> m (GClosure C_TranslateFunc)
    forall a b. (a -> b) -> a -> b
    $ do
        let cb' :: TranslateFunc_WithClosures
    cb' = (Text -> IO Text) -> TranslateFunc_WithClosures
    drop_closures_TranslateFunc Text -> IO Text
    cb
        let cb'' :: C_TranslateFunc
    cb'' = Maybe (Ptr (FunPtr C_TranslateFunc))
    -> TranslateFunc_WithClosures -> C_TranslateFunc
    wrap_TranslateFunc Maybe (Ptr (FunPtr C_TranslateFunc))
    forall a. Maybe a
    Nothing TranslateFunc_WithClosures
    cb'
        C_TranslateFunc -> IO (FunPtr C_TranslateFunc)
    mk_TranslateFunc C_TranslateFunc
    cb'' IO (FunPtr C_TranslateFunc)
    -> (FunPtr C_TranslateFunc -> IO (GClosure C_TranslateFunc))
    -> IO (GClosure C_TranslateFunc)
    forall a b. IO a -> (a -> IO b) -> IO b
    forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
    >>= FunPtr C_TranslateFunc -> IO (GClosure C_TranslateFunc)
    forall (m :: * -> *) a. MonadIO m => FunPtr a -> m (GClosure a)
    B.GClosure.newGClosure

    -- | Wrap a `TranslateFunc` into a `C_TranslateFunc`.
    wrap_TranslateFunc ::
        Maybe (Ptr (FunPtr C_TranslateFunc)) ->
        TranslateFunc_WithClosures ->
        C_TranslateFunc
    wrap_TranslateFunc :: Maybe (Ptr (FunPtr C_TranslateFunc))
    -> TranslateFunc_WithClosures -> C_TranslateFunc
    wrap_TranslateFunc Maybe (Ptr (FunPtr C_TranslateFunc))
    gi'funptrptr TranslateFunc_WithClosures
    gi'cb CString
    path Ptr ()
    funcData = do
        path' <- HasCallStack => CString -> IO Text
    CString -> IO Text
    cstringToText CString
    path
        result <- gi'cb  path' funcData
        maybeReleaseFunPtr gi'funptrptr
        result' <- textToCString result
        return result'

    -- callback TickCallback
    {- Callable
      { returnType = Just (TBasicType TBoolean)
      , returnMayBeNull = False
      , returnTransfer = TransferNothing
      , returnDocumentation =
          Documentation
            { rawDocText =
                Just
                  "%G_SOURCE_CONTINUE if the tick callback should continue to be called,\n %G_SOURCE_REMOVE if the tick callback should be removed."
            , sinceVersion = Nothing
            }
      , args =
          [ Arg
              { argCName = "widget"
              , argType = TInterface Name { namespace = "Gtk" , name = "Widget" }
              , argCType = Just "GtkWidget*"
              , direction = DirectionIn
              , mayBeNull = False
              , argDoc =
                  Documentation
                    { rawDocText = Just "the widget" , sinceVersion = Nothing }
              , argScope = ScopeTypeInvalid
              , argClosure = -1
              , argDestroy = -1
              , argCallerAllocates = False
              , argCallbackUserData = False
              , transfer = TransferNothing
              }
          , Arg
              { argCName = "frame_clock"
              , argType =
                  TInterface Name { namespace = "Gdk" , name = "FrameClock" }
              , argCType = Just "GdkFrameClock*"
              , direction = DirectionIn
              , mayBeNull = False
              , argDoc =
                  Documentation
                    { rawDocText =
                        Just
                          "the frame clock for the widget (same as calling gtk_widget_get_frame_clock())"
                    , sinceVersion = Nothing
                    }
              , argScope = ScopeTypeInvalid
              , argClosure = -1
              , argDestroy = -1
              , argCallerAllocates = False
              , argCallbackUserData = False
              , transfer = TransferNothing
              }
          , Arg
              { argCName = "user_data"
              , argType = TBasicType TPtr
              , argCType = Just "gpointer"
              , direction = DirectionIn
              , mayBeNull = True
              , argDoc =
                  Documentation
                    { rawDocText =
                        Just "user data passed to gtk_widget_add_tick_callback()."
                    , sinceVersion = Nothing
                    }
              , argScope = ScopeTypeInvalid
              , argClosure = -1
              , argDestroy = -1
              , argCallerAllocates = False
              , argCallbackUserData = True
              , transfer = TransferNothing
              }
          ]
      , skipReturn = False
      , callableThrows = False
      , callableDeprecated = Nothing
      , callableDocumentation =
          Documentation
            { rawDocText =
                Just
                  "Callback type for adding a function to update animations. See gtk_widget_add_tick_callback()."
            , sinceVersion = Just "3.8"
            }
      , callableResolvable = Nothing
      }
    -}
    -- | Type for the callback on the (unwrapped) C side.
    type C_TickCallback =
        Ptr Gtk.Widget.Widget ->
        Ptr Gdk.FrameClock.FrameClock ->
        Ptr () ->
        IO CInt

    -- Args: [ Arg
    --           { argCName = "widget"
    --           , argType = TInterface Name { namespace = "Gtk" , name = "Widget" }
    --           , argCType = Just "GtkWidget*"
    --           , direction = DirectionIn
    --           , mayBeNull = False
    --           , argDoc =
    --               Documentation
    --                 { rawDocText = Just "the widget" , sinceVersion = Nothing }
    --           , argScope = ScopeTypeInvalid
    --           , argClosure = -1
    --           , argDestroy = -1
    --           , argCallerAllocates = False
    --           , argCallbackUserData = False
    --           , transfer = TransferNothing
    --           }
    --       , Arg
    --           { argCName = "frame_clock"
    --           , argType =
    --               TInterface Name { namespace = "Gdk" , name = "FrameClock" }
    --           , argCType = Just "GdkFrameClock*"
    --           , direction = DirectionIn
    --           , mayBeNull = False
    --           , argDoc =
    --               Documentation
    --                 { rawDocText =
    --                     Just
    --                       "the frame clock for the widget (same as calling gtk_widget_get_frame_clock())"
    --                 , sinceVersion = Nothing
    --                 }
    --           , argScope = ScopeTypeInvalid
    --           , argClosure = -1
    --           , argDestroy = -1
    --           , argCallerAllocates = False
    --           , argCallbackUserData = False
    --           , transfer = TransferNothing
    --           }
    --       , Arg
    --           { argCName = "user_data"
    --           , argType = TBasicType TPtr
    --           , argCType = Just "gpointer"
    --           , direction = DirectionIn
    --           , mayBeNull = True
    --           , argDoc =
    --               Documentation
    --                 { rawDocText =
    --                     Just "user data passed to gtk_widget_add_tick_callback()."
    --                 , sinceVersion = Nothing
    --                 }
    --           , argScope = ScopeTypeInvalid
    --           , argClosure = -1
    --           , argDestroy = -1
    --           , argCallerAllocates = False
    --           , argCallbackUserData = True
    --           , transfer = TransferNothing
    --           }
    --       ]
    -- Lengths: []
    -- returnType: Just (TBasicType TBoolean)
    -- throws : False
    -- Skip return : False

    foreign import ccall "dynamic" __dynamic_C_TickCallback :: FunPtr C_TickCallback -> C_TickCallback

    -- | Given a pointer to a foreign C function, wrap it into a function callable from Haskell.
    dynamic_TickCallback ::
        (B.CallStack.HasCallStack, MonadIO m, Gtk.Widget.IsWidget a, Gdk.FrameClock.IsFrameClock b) =>
        FunPtr C_TickCallback
        -> a
        -- ^ /@widget@/: the widget
        -> b
        -- ^ /@frameClock@/: the frame clock for the widget (same as calling 'GI.Gtk.Objects.Widget.widgetGetFrameClock')
        -> Ptr ()
        -- ^ /@userData@/: user data passed to 'GI.Gtk.Objects.Widget.widgetAddTickCallback'.
        -> m Bool
        -- ^ __Returns:__ 'GI.GLib.Constants.SOURCE_CONTINUE' if the tick callback should continue to be called,
        --  'GI.GLib.Constants.SOURCE_REMOVE' if the tick callback should be removed.
    dynamic_TickCallback :: forall (m :: * -> *) a b.
    (HasCallStack, MonadIO m, IsWidget a, IsFrameClock b) =>
    FunPtr C_TickCallback -> a -> b -> Ptr () -> m Bool
    dynamic_TickCallback FunPtr C_TickCallback
    __funPtr a
    widget b
    frameClock Ptr ()
    userData = IO Bool -> m Bool
    forall a. IO a -> m a
    forall (m :: * -> *) a. MonadIO m => IO a -> m a
    liftIO (IO Bool -> m Bool) -> IO Bool -> m Bool
    forall a b. (a -> b) -> a -> b
    $ do
        widget' <- a -> IO (Ptr Widget)
    forall a b. (HasCallStack, ManagedPtrNewtype a) => a -> IO (Ptr b)
    unsafeManagedPtrCastPtr a
    widget
        frameClock' <- unsafeManagedPtrCastPtr frameClock
        result <- (__dynamic_C_TickCallback __funPtr) widget' frameClock' userData
        let result' = (CInt -> CInt -> Bool
    forall a. Eq a => a -> a -> Bool
    /= CInt
    0) CInt
    result
        touchManagedPtr widget
        touchManagedPtr frameClock
        return result'

    -- | Generate a function pointer callable from C code, from a `C_TickCallback`.
    foreign import ccall "wrapper"
        mk_TickCallback :: C_TickCallback -> IO (FunPtr C_TickCallback)

    -- | Callback type for adding a function to update animations. See 'GI.Gtk.Objects.Widget.widgetAddTickCallback'.
    --
    -- /Since: 3.8/
    type TickCallback =
        Gtk.Widget.Widget
        -- ^ /@widget@/: the widget
        -> Gdk.FrameClock.FrameClock
        -- ^ /@frameClock@/: the frame clock for the widget (same as calling 'GI.Gtk.Objects.Widget.widgetGetFrameClock')
        -> IO Bool
        -- ^ __Returns:__ 'GI.GLib.Constants.SOURCE_CONTINUE' if the tick callback should continue to be called,
        --  'GI.GLib.Constants.SOURCE_REMOVE' if the tick callback should be removed.

    -- | A convenience synonym for @`Nothing` :: `Maybe` `TickCallback`@.
    noTickCallback :: Maybe TickCallback
    noTickCallback :: Maybe TickCallback
    noTickCallback = Maybe TickCallback
    forall a. Maybe a
    Nothing

    -- | Callback type for adding a function to update animations. See 'GI.Gtk.Objects.Widget.widgetAddTickCallback'.
    --
    -- /Since: 3.8/
    type TickCallback_WithClosures =
        Gtk.Widget.Widget
        -- ^ /@widget@/: the widget
        -> Gdk.FrameClock.FrameClock
        -- ^ /@frameClock@/: the frame clock for the widget (same as calling 'GI.Gtk.Objects.Widget.widgetGetFrameClock')
        -> Ptr ()
        -- ^ /@userData@/: user data passed to 'GI.Gtk.Objects.Widget.widgetAddTickCallback'.
        -> IO Bool
        -- ^ __Returns:__ 'GI.GLib.Constants.SOURCE_CONTINUE' if the tick callback should continue to be called,
        --  'GI.GLib.Constants.SOURCE_REMOVE' if the tick callback should be removed.

    -- | A convenience synonym for @`Nothing` :: `Maybe` `TickCallback_WithClosures`@.
    noTickCallback_WithClosures :: Maybe TickCallback_WithClosures
    noTickCallback_WithClosures :: Maybe TickCallback_WithClosures
    noTickCallback_WithClosures = Maybe TickCallback_WithClosures
    forall a. Maybe a
    Nothing

    -- | A simple wrapper that ignores the closure arguments.
    drop_closures_TickCallback :: TickCallback -> TickCallback_WithClosures
    drop_closures_TickCallback :: TickCallback -> TickCallback_WithClosures
    drop_closures_TickCallback TickCallback
    _f Widget
    widget FrameClock
    frameClock Ptr ()
    _ = TickCallback
    _f Widget
    widget FrameClock
    frameClock

    -- | Wrap the callback into a `GClosure`.
    genClosure_TickCallback :: MonadIO m => TickCallback -> m (GClosure C_TickCallback)
    genClosure_TickCallback :: forall (m :: * -> *).
    MonadIO m =>
    TickCallback -> m (GClosure C_TickCallback)
    genClosure_TickCallback TickCallback
    cb = IO (GClosure C_TickCallback) -> m (GClosure C_TickCallback)
    forall a. IO a -> m a
    forall (m :: * -> *) a. MonadIO m => IO a -> m a
    liftIO (IO (GClosure C_TickCallback) -> m (GClosure C_TickCallback))
    -> IO (GClosure C_TickCallback) -> m (GClosure C_TickCallback)
    forall a b. (a -> b) -> a -> b
    $ do
        let cb' :: TickCallback_WithClosures
    cb' = TickCallback -> TickCallback_WithClosures
    drop_closures_TickCallback TickCallback
    cb
        let cb'' :: C_TickCallback
    cb'' = Maybe (Ptr (FunPtr C_TickCallback))
    -> TickCallback_WithClosures -> C_TickCallback
    wrap_TickCallback Maybe (Ptr (FunPtr C_TickCallback))
    forall a. Maybe a
    Nothing TickCallback_WithClosures
    cb'
        C_TickCallback -> IO (FunPtr C_TickCallback)
    mk_TickCallback C_TickCallback
    cb'' IO (FunPtr C_TickCallback)
    -> (FunPtr C_TickCallback -> IO (GClosure C_TickCallback))
    -> IO (GClosure C_TickCallback)
    forall a b. IO a -> (a -> IO b) -> IO b
    forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
    >>= FunPtr C_TickCallback -> IO (GClosure C_TickCallback)
    forall (m :: * -> *) a. MonadIO m => FunPtr a -> m (GClosure a)
    B.GClosure.newGClosure

    -- | Wrap a `TickCallback` into a `C_TickCallback`.
    wrap_TickCallback ::
        Maybe (Ptr (FunPtr C_TickCallback)) ->
        TickCallback_WithClosures ->
        C_TickCallback
    wrap_TickCallback :: Maybe (Ptr (FunPtr C_TickCallback))
    -> TickCallback_WithClosures -> C_TickCallback
    wrap_TickCallback Maybe (Ptr (FunPtr C_TickCallback))
    gi'funptrptr TickCallback_WithClosures
    gi'cb Ptr Widget
    widget Ptr FrameClock
    frameClock Ptr ()
    userData = do
        widget' <- ((ManagedPtr Widget -> Widget) -> Ptr Widget -> IO Widget
    forall a b.
    (HasCallStack, GObject a, GObject b) =>
    (ManagedPtr a -> a) -> Ptr b -> IO a
    newObject ManagedPtr Widget -> Widget
    Gtk.Widget.Widget) Ptr Widget
    widget
        frameClock' <- (newObject Gdk.FrameClock.FrameClock) frameClock
        result <- gi'cb  widget' frameClock' userData
        maybeReleaseFunPtr gi'funptrptr
        let result' = (Int -> CInt
    forall a b. (Integral a, Num b) => a -> b
    P.fromIntegral (Int -> CInt) -> (Bool -> Int) -> Bool -> CInt
    forall b c a. (b -> c) -> (a -> b) -> a -> c
    . Bool -> Int
    forall a. Enum a => a -> Int
    P.fromEnum) Bool
    result
        return result'

    -- callback TextTagTableForeach
    {- Callable
      { returnType = Nothing
      , returnMayBeNull = False
      , returnTransfer = TransferNothing
      , returnDocumentation =
          Documentation { rawDocText = Nothing , sinceVersion = Nothing }
      , args =
          [ Arg
              { argCName = "tag"
              , argType =
                  TInterface Name { namespace = "Gtk" , name = "TextTag" }
              , argCType = Just "GtkTextTag*"
              , direction = DirectionIn
              , mayBeNull = False
              , argDoc =
                  Documentation
                    { rawDocText = Just "the #GtkTextTag" , sinceVersion = Nothing }
              , argScope = ScopeTypeInvalid
              , argClosure = -1
              , argDestroy = -1
              , argCallerAllocates = False
              , argCallbackUserData = False
              , transfer = TransferNothing
              }
          , Arg
              { argCName = "data"
              , argType = TBasicType TPtr
              , argCType = Just "gpointer"
              , direction = DirectionIn
              , mayBeNull = True
              , argDoc =
                  Documentation
                    { rawDocText = Just "data passed to gtk_text_tag_table_foreach()"
                    , sinceVersion = Nothing
                    }
              , argScope = ScopeTypeInvalid
              , argClosure = -1
              , argDestroy = -1
              , argCallerAllocates = False
              , argCallbackUserData = True
              , transfer = TransferNothing
              }
          ]
      , skipReturn = False
      , callableThrows = False
      , callableDeprecated = Nothing
      , callableDocumentation =
          Documentation { rawDocText = Nothing , sinceVersion = Nothing }
      , callableResolvable = Nothing
      }
    -}
    -- | Type for the callback on the (unwrapped) C side.
    type C_TextTagTableForeach =
        Ptr Gtk.TextTag.TextTag ->
        Ptr () ->
        IO ()

    -- Args: [ Arg
    --           { argCName = "tag"
    --           , argType =
    --               TInterface Name { namespace = "Gtk" , name = "TextTag" }
    --           , argCType = Just "GtkTextTag*"
    --           , direction = DirectionIn
    --           , mayBeNull = False
    --           , argDoc =
    --               Documentation
    --                 { rawDocText = Just "the #GtkTextTag" , sinceVersion = Nothing }
    --           , argScope = ScopeTypeInvalid
    --           , argClosure = -1
    --           , argDestroy = -1
    --           , argCallerAllocates = False
    --           , argCallbackUserData = False
    --           , transfer = TransferNothing
    --           }
    --       , Arg
    --           { argCName = "data"
    --           , argType = TBasicType TPtr
    --           , argCType = Just "gpointer"
    --           , direction = DirectionIn
    --           , mayBeNull = True
    --           , argDoc =
    --               Documentation
    --                 { rawDocText = Just "data passed to gtk_text_tag_table_foreach()"
    --                 , sinceVersion = Nothing
    --                 }
    --           , argScope = ScopeTypeInvalid
    --           , argClosure = -1
    --           , argDestroy = -1
    --           , argCallerAllocates = False
    --           , argCallbackUserData = True
    --           , transfer = TransferNothing
    --           }
    --       ]
    -- Lengths: []
    -- returnType: Nothing
    -- throws : False
    -- Skip return : False

    foreign import ccall "dynamic" __dynamic_C_TextTagTableForeach :: FunPtr C_TextTagTableForeach -> C_TextTagTableForeach

    -- | Given a pointer to a foreign C function, wrap it into a function callable from Haskell.
    dynamic_TextTagTableForeach ::
        (B.CallStack.HasCallStack, MonadIO m, Gtk.TextTag.IsTextTag a) =>
        FunPtr C_TextTagTableForeach
        -> a
        -- ^ /@tag@/: the t'GI.Gtk.Objects.TextTag.TextTag'
        -> Ptr ()
        -- ^ /@data@/: data passed to 'GI.Gtk.Objects.TextTagTable.textTagTableForeach'
        -> m ()
    dynamic_TextTagTableForeach :: forall (m :: * -> *) a.
    (HasCallStack, MonadIO m, IsTextTag a) =>
    FunPtr C_TextTagTableForeach -> a -> Ptr () -> m ()
    dynamic_TextTagTableForeach FunPtr C_TextTagTableForeach
    __funPtr a
    tag Ptr ()
    data_ = IO () -> m ()
    forall a. IO a -> m a
    forall (m :: * -> *) a. MonadIO m => IO a -> m a
    liftIO (IO () -> m ()) -> IO () -> m ()
    forall a b. (a -> b) -> a -> b
    $ do
        tag' <- a -> IO (Ptr TextTag)
    forall a b. (HasCallStack, ManagedPtrNewtype a) => a -> IO (Ptr b)
    unsafeManagedPtrCastPtr a
    tag
        (__dynamic_C_TextTagTableForeach __funPtr) tag' data_
        touchManagedPtr tag
        return ()

    -- | Generate a function pointer callable from C code, from a `C_TextTagTableForeach`.
    foreign import ccall "wrapper"
        mk_TextTagTableForeach :: C_TextTagTableForeach -> IO (FunPtr C_TextTagTableForeach)

    -- | /No description available in the introspection data./
    type TextTagTableForeach =
        Gtk.TextTag.TextTag
        -- ^ /@tag@/: the t'GI.Gtk.Objects.TextTag.TextTag'
        -> IO ()

    -- | A convenience synonym for @`Nothing` :: `Maybe` `TextTagTableForeach`@.
    noTextTagTableForeach :: Maybe TextTagTableForeach
    noTextTagTableForeach :: Maybe TextTagTableForeach
    noTextTagTableForeach = Maybe TextTagTableForeach
    forall a. Maybe a
    Nothing

    -- | /No description available in the introspection data./
    type TextTagTableForeach_WithClosures =
        Gtk.TextTag.TextTag
        -- ^ /@tag@/: the t'GI.Gtk.Objects.TextTag.TextTag'
        -> Ptr ()
        -- ^ /@data@/: data passed to 'GI.Gtk.Objects.TextTagTable.textTagTableForeach'
        -> IO ()

    -- | A convenience synonym for @`Nothing` :: `Maybe` `TextTagTableForeach_WithClosures`@.
    noTextTagTableForeach_WithClosures :: Maybe TextTagTableForeach_WithClosures
    noTextTagTableForeach_WithClosures :: Maybe TextTagTableForeach_WithClosures
    noTextTagTableForeach_WithClosures = Maybe TextTagTableForeach_WithClosures
    forall a. Maybe a
    Nothing

    -- | A simple wrapper that ignores the closure arguments.
    drop_closures_TextTagTableForeach :: TextTagTableForeach -> TextTagTableForeach_WithClosures
    drop_closures_TextTagTableForeach :: TextTagTableForeach -> TextTagTableForeach_WithClosures
    drop_closures_TextTagTableForeach TextTagTableForeach
    _f TextTag
    tag Ptr ()
    _ = TextTagTableForeach
    _f TextTag
    tag

    -- | Wrap the callback into a `GClosure`.
    genClosure_TextTagTableForeach :: MonadIO m => TextTagTableForeach -> m (GClosure C_TextTagTableForeach)
    genClosure_TextTagTableForeach :: forall (m :: * -> *).
    MonadIO m =>
    TextTagTableForeach -> m (GClosure C_TextTagTableForeach)
    genClosure_TextTagTableForeach TextTagTableForeach
    cb = IO (GClosure C_TextTagTableForeach)
    -> m (GClosure C_TextTagTableForeach)
    forall a. IO a -> m a
    forall (m :: * -> *) a. MonadIO m => IO a -> m a
    liftIO (IO (GClosure C_TextTagTableForeach)
     -> m (GClosure C_TextTagTableForeach))
    -> IO (GClosure C_TextTagTableForeach)
    -> m (GClosure C_TextTagTableForeach)
    forall a b. (a -> b) -> a -> b
    $ do
        let cb' :: TextTagTableForeach_WithClosures
    cb' = TextTagTableForeach -> TextTagTableForeach_WithClosures
    drop_closures_TextTagTableForeach TextTagTableForeach
    cb
        let cb'' :: C_TextTagTableForeach
    cb'' = Maybe (Ptr (FunPtr C_TextTagTableForeach))
    -> TextTagTableForeach_WithClosures -> C_TextTagTableForeach
    wrap_TextTagTableForeach Maybe (Ptr (FunPtr C_TextTagTableForeach))
    forall a. Maybe a
    Nothing TextTagTableForeach_WithClosures
    cb'
        C_TextTagTableForeach -> IO (FunPtr C_TextTagTableForeach)
    mk_TextTagTableForeach C_TextTagTableForeach
    cb'' IO (FunPtr C_TextTagTableForeach)
    -> (FunPtr C_TextTagTableForeach
        -> IO (GClosure C_TextTagTableForeach))
    -> IO (GClosure C_TextTagTableForeach)
    forall a b. IO a -> (a -> IO b) -> IO b
    forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
    >>= FunPtr C_TextTagTableForeach -> IO (GClosure C_TextTagTableForeach)
    forall (m :: * -> *) a. MonadIO m => FunPtr a -> m (GClosure a)
    B.GClosure.newGClosure

    -- | Wrap a `TextTagTableForeach` into a `C_TextTagTableForeach`.
    wrap_TextTagTableForeach ::
        Maybe (Ptr (FunPtr C_TextTagTableForeach)) ->
        TextTagTableForeach_WithClosures ->
        C_TextTagTableForeach
    wrap_TextTagTableForeach :: Maybe (Ptr (FunPtr C_TextTagTableForeach))
    -> TextTagTableForeach_WithClosures -> C_TextTagTableForeach
    wrap_TextTagTableForeach Maybe (Ptr (FunPtr C_TextTagTableForeach))
    gi'funptrptr TextTagTableForeach_WithClosures
    gi'cb Ptr TextTag
    tag Ptr ()
    data_ = do
        tag' <- ((ManagedPtr TextTag -> TextTag) -> Ptr TextTag -> IO TextTag
    forall a b.
    (HasCallStack, GObject a, GObject b) =>
    (ManagedPtr a -> a) -> Ptr b -> IO a
    newObject ManagedPtr TextTag -> TextTag
    Gtk.TextTag.TextTag) Ptr TextTag
    tag
        gi'cb  tag' data_
        maybeReleaseFunPtr gi'funptrptr

    -- callback TextCharPredicate
    {- Callable
      { returnType = Just (TBasicType TBoolean)
      , returnMayBeNull = False
      , returnTransfer = TransferNothing
      , returnDocumentation =
          Documentation { rawDocText = Nothing , sinceVersion = Nothing }
      , args =
          [ Arg
              { argCName = "ch"
              , argType = TBasicType TUniChar
              , argCType = Just "gunichar"
              , direction = DirectionIn
              , mayBeNull = False
              , argDoc =
                  Documentation { rawDocText = Nothing , sinceVersion = Nothing }
              , argScope = ScopeTypeInvalid
              , argClosure = -1
              , argDestroy = -1
              , argCallerAllocates = False
              , argCallbackUserData = False
              , transfer = TransferNothing
              }
          , Arg
              { argCName = "user_data"
              , argType = TBasicType TPtr
              , argCType = Just "gpointer"
              , direction = DirectionIn
              , mayBeNull = True
              , argDoc =
                  Documentation { rawDocText = Nothing , sinceVersion = Nothing }
              , argScope = ScopeTypeInvalid
              , argClosure = -1
              , argDestroy = -1
              , argCallerAllocates = False
              , argCallbackUserData = True
              , transfer = TransferNothing
              }
          ]
      , skipReturn = False
      , callableThrows = False
      , callableDeprecated = Nothing
      , callableDocumentation =
          Documentation { rawDocText = Nothing , sinceVersion = Nothing }
      , callableResolvable = Nothing
      }
    -}
    -- | Type for the callback on the (unwrapped) C side.
    type C_TextCharPredicate =
        CInt ->
        Ptr () ->
        IO CInt

    -- Args: [ Arg
    --           { argCName = "ch"
    --           , argType = TBasicType TUniChar
    --           , argCType = Just "gunichar"
    --           , direction = DirectionIn
    --           , mayBeNull = False
    --           , argDoc =
    --               Documentation { rawDocText = Nothing , sinceVersion = Nothing }
    --           , argScope = ScopeTypeInvalid
    --           , argClosure = -1
    --           , argDestroy = -1
    --           , argCallerAllocates = False
    --           , argCallbackUserData = False
    --           , transfer = TransferNothing
    --           }
    --       , Arg
    --           { argCName = "user_data"
    --           , argType = TBasicType TPtr
    --           , argCType = Just "gpointer"
    --           , direction = DirectionIn
    --           , mayBeNull = True
    --           , argDoc =
    --               Documentation { rawDocText = Nothing , sinceVersion = Nothing }
    --           , argScope = ScopeTypeInvalid
    --           , argClosure = -1
    --           , argDestroy = -1
    --           , argCallerAllocates = False
    --           , argCallbackUserData = True
    --           , transfer = TransferNothing
    --           }
    --       ]
    -- Lengths: []
    -- returnType: Just (TBasicType TBoolean)
    -- throws : False
    -- Skip return : False

    foreign import ccall "dynamic" __dynamic_C_TextCharPredicate :: FunPtr C_TextCharPredicate -> C_TextCharPredicate

    -- | Given a pointer to a foreign C function, wrap it into a function callable from Haskell.
    dynamic_TextCharPredicate ::
        (B.CallStack.HasCallStack, MonadIO m) =>
        FunPtr C_TextCharPredicate
        -> Char
        -> Ptr ()
        -> m Bool
    dynamic_TextCharPredicate :: forall (m :: * -> *).
    (HasCallStack, MonadIO m) =>
    FunPtr C_TextCharPredicate -> Char -> Ptr () -> m Bool
    dynamic_TextCharPredicate FunPtr C_TextCharPredicate
    __funPtr Char
    ch Ptr ()
    userData = IO Bool -> m Bool
    forall a. IO a -> m a
    forall (m :: * -> *) a. MonadIO m => IO a -> m a
    liftIO (IO Bool -> m Bool) -> IO Bool -> m Bool
    forall a b. (a -> b) -> a -> b
    $ do
        let ch' :: CInt
    ch' = (Int -> CInt
    forall a b. (Integral a, Num b) => a -> b
    P.fromIntegral (Int -> CInt) -> (Char -> Int) -> Char -> CInt
    forall b c a. (b -> c) -> (a -> b) -> a -> c
    . Char -> Int
    SP.ord) Char
    ch
        result <- (FunPtr C_TextCharPredicate -> C_TextCharPredicate
    __dynamic_C_TextCharPredicate FunPtr C_TextCharPredicate
    __funPtr) CInt
    ch' Ptr ()
    userData
        let result' = (CInt -> CInt -> Bool
    forall a. Eq a => a -> a -> Bool
    /= CInt
    0) CInt
    result
        return result'

    -- | Generate a function pointer callable from C code, from a `C_TextCharPredicate`.
    foreign import ccall "wrapper"
        mk_TextCharPredicate :: C_TextCharPredicate -> IO (FunPtr C_TextCharPredicate)

    -- | /No description available in the introspection data./
    type TextCharPredicate =
        Char
        -> IO Bool

    -- | A convenience synonym for @`Nothing` :: `Maybe` `TextCharPredicate`@.
    noTextCharPredicate :: Maybe TextCharPredicate
    noTextCharPredicate :: Maybe TextCharPredicate
    noTextCharPredicate = Maybe TextCharPredicate
    forall a. Maybe a
    Nothing

    -- | /No description available in the introspection data./
    type TextCharPredicate_WithClosures =
        Char
        -> Ptr ()
        -> IO Bool

    -- | A convenience synonym for @`Nothing` :: `Maybe` `TextCharPredicate_WithClosures`@.
    noTextCharPredicate_WithClosures :: Maybe TextCharPredicate_WithClosures
    noTextCharPredicate_WithClosures :: Maybe TextCharPredicate_WithClosures
    noTextCharPredicate_WithClosures = Maybe TextCharPredicate_WithClosures
    forall a. Maybe a
    Nothing

    -- | A simple wrapper that ignores the closure arguments.
    drop_closures_TextCharPredicate :: TextCharPredicate -> TextCharPredicate_WithClosures
    drop_closures_TextCharPredicate :: TextCharPredicate -> TextCharPredicate_WithClosures
    drop_closures_TextCharPredicate TextCharPredicate
    _f Char
    ch Ptr ()
    _ = TextCharPredicate
    _f Char
    ch

    -- | Wrap the callback into a `GClosure`.
    genClosure_TextCharPredicate :: MonadIO m => TextCharPredicate -> m (GClosure C_TextCharPredicate)
    genClosure_TextCharPredicate :: forall (m :: * -> *).
    MonadIO m =>
    TextCharPredicate -> m (GClosure C_TextCharPredicate)
    genClosure_TextCharPredicate TextCharPredicate
    cb = IO (GClosure C_TextCharPredicate)
    -> m (GClosure C_TextCharPredicate)
    forall a. IO a -> m a
    forall (m :: * -> *) a. MonadIO m => IO a -> m a
    liftIO (IO (GClosure C_TextCharPredicate)
     -> m (GClosure C_TextCharPredicate))
    -> IO (GClosure C_TextCharPredicate)
    -> m (GClosure C_TextCharPredicate)
    forall a b. (a -> b) -> a -> b
    $ do
        let cb' :: TextCharPredicate_WithClosures
    cb' = TextCharPredicate -> TextCharPredicate_WithClosures
    drop_closures_TextCharPredicate TextCharPredicate
    cb
        let cb'' :: C_TextCharPredicate
    cb'' = Maybe (Ptr (FunPtr C_TextCharPredicate))
    -> TextCharPredicate_WithClosures -> C_TextCharPredicate
    wrap_TextCharPredicate Maybe (Ptr (FunPtr C_TextCharPredicate))
    forall a. Maybe a
    Nothing TextCharPredicate_WithClosures
    cb'
        C_TextCharPredicate -> IO (FunPtr C_TextCharPredicate)
    mk_TextCharPredicate C_TextCharPredicate
    cb'' IO (FunPtr C_TextCharPredicate)
    -> (FunPtr C_TextCharPredicate
        -> IO (GClosure C_TextCharPredicate))
    -> IO (GClosure C_TextCharPredicate)
    forall a b. IO a -> (a -> IO b) -> IO b
    forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
    >>= FunPtr C_TextCharPredicate -> IO (GClosure C_TextCharPredicate)
    forall (m :: * -> *) a. MonadIO m => FunPtr a -> m (GClosure a)
    B.GClosure.newGClosure

    -- | Wrap a `TextCharPredicate` into a `C_TextCharPredicate`.
    wrap_TextCharPredicate ::
        Maybe (Ptr (FunPtr C_TextCharPredicate)) ->
        TextCharPredicate_WithClosures ->
        C_TextCharPredicate
    wrap_TextCharPredicate :: Maybe (Ptr (FunPtr C_TextCharPredicate))
    -> TextCharPredicate_WithClosures -> C_TextCharPredicate
    wrap_TextCharPredicate Maybe (Ptr (FunPtr C_TextCharPredicate))
    gi'funptrptr TextCharPredicate_WithClosures
    gi'cb CInt
    ch Ptr ()
    userData = do
        let ch' :: Char
    ch' = (Int -> Char
    chr (Int -> Char) -> (CInt -> Int) -> CInt -> Char
    forall b c a. (b -> c) -> (a -> b) -> a -> c
    . CInt -> Int
    forall a b. (Integral a, Num b) => a -> b
    fromIntegral) CInt
    ch
        result <- TextCharPredicate_WithClosures
    gi'cb  Char
    ch' Ptr ()
    userData
        maybeReleaseFunPtr gi'funptrptr
        let result' = (Int -> CInt
    forall a b. (Integral a, Num b) => a -> b
    P.fromIntegral (Int -> CInt) -> (Bool -> Int) -> Bool -> CInt
    forall b c a. (b -> c) -> (a -> b) -> a -> c
    . Bool -> Int
    forall a. Enum a => a -> Int
    P.fromEnum) Bool
    result
        return result'

    -- callback TextBufferSerializeFunc
    {- Callable
      { returnType = Just (TCArray False (-1) 4 (TBasicType TUInt8))
      , returnMayBeNull = True
      , returnTransfer = TransferNothing
      , returnDocumentation =
          Documentation
            { rawDocText =
                Just
                  "a newly-allocated array of guint8\nwhich contains the serialized data, or %NULL if an error occurred"
            , sinceVersion = Nothing
            }
      , args =
          [ Arg
              { argCName = "register_buffer"
              , argType =
                  TInterface Name { namespace = "Gtk" , name = "TextBuffer" }
              , argCType = Just "GtkTextBuffer*"
              , direction = DirectionIn
              , mayBeNull = False
              , argDoc =
                  Documentation
                    { rawDocText =
                        Just "the #GtkTextBuffer for which the format is registered"
                    , sinceVersion = Nothing
                    }
              , argScope = ScopeTypeInvalid
              , argClosure = -1
              , argDestroy = -1
              , argCallerAllocates = False
              , argCallbackUserData = False
              , transfer = TransferNothing
              }
          , Arg
              { argCName = "content_buffer"
              , argType =
                  TInterface Name { namespace = "Gtk" , name = "TextBuffer" }
              , argCType = Just "GtkTextBuffer*"
              , direction = DirectionIn
              , mayBeNull = False
              , argDoc =
                  Documentation
                    { rawDocText = Just "the #GtkTextBuffer to serialize"
                    , sinceVersion = Nothing
                    }
              , argScope = ScopeTypeInvalid
              , argClosure = -1
              , argDestroy = -1
              , argCallerAllocates = False
              , argCallbackUserData = False
              , transfer = TransferNothing
              }
          , Arg
              { argCName = "start"
              , argType =
                  TInterface Name { namespace = "Gtk" , name = "TextIter" }
              , argCType = Just "const GtkTextIter*"
              , direction = DirectionIn
              , mayBeNull = False
              , argDoc =
                  Documentation
                    { rawDocText = Just "start of the block of text to serialize"
                    , sinceVersion = Nothing
                    }
              , argScope = ScopeTypeInvalid
              , argClosure = -1
              , argDestroy = -1
              , argCallerAllocates = False
              , argCallbackUserData = False
              , transfer = TransferNothing
              }
          , Arg
              { argCName = "end"
              , argType =
                  TInterface Name { namespace = "Gtk" , name = "TextIter" }
              , argCType = Just "const GtkTextIter*"
              , direction = DirectionIn
              , mayBeNull = False
              , argDoc =
                  Documentation
                    { rawDocText = Just "end of the block of text to serialize"
                    , sinceVersion = Nothing
                    }
              , argScope = ScopeTypeInvalid
              , argClosure = -1
              , argDestroy = -1
              , argCallerAllocates = False
              , argCallbackUserData = False
              , transfer = TransferNothing
              }
          , Arg
              { argCName = "length"
              , argType = TBasicType TSize
              , argCType = Just "gsize*"
              , direction = DirectionOut
              , mayBeNull = False
              , argDoc =
                  Documentation
                    { rawDocText =
                        Just "return location for the length of the serialized data"
                    , sinceVersion = Nothing
                    }
              , argScope = ScopeTypeInvalid
              , argClosure = -1
              , argDestroy = -1
              , argCallerAllocates = False
              , argCallbackUserData = False
              , transfer = TransferEverything
              }
          , Arg
              { argCName = "user_data"
              , argType = TBasicType TPtr
              , argCType = Just "gpointer"
              , direction = DirectionIn
              , mayBeNull = True
              , argDoc =
                  Documentation
                    { rawDocText =
                        Just "user data that was specified when registering the format"
                    , sinceVersion = Nothing
                    }
              , argScope = ScopeTypeInvalid
              , argClosure = -1
              , argDestroy = -1
              , argCallerAllocates = False
              , argCallbackUserData = True
              , transfer = TransferNothing
              }
          ]
      , skipReturn = False
      , callableThrows = False
      , callableDeprecated = Nothing
      , callableDocumentation =
          Documentation
            { rawDocText =
                Just
                  "A function that is called to serialize the content of a text buffer.\nIt must return the serialized form of the content."
            , sinceVersion = Nothing
            }
      , callableResolvable = Nothing
      }
    -}
    -- | Type for the callback on the (unwrapped) C side.
    type C_TextBufferSerializeFunc =
        Ptr Gtk.TextBuffer.TextBuffer ->
        Ptr Gtk.TextBuffer.TextBuffer ->
        Ptr Gtk.TextIter.TextIter ->
        Ptr Gtk.TextIter.TextIter ->
        Ptr FCT.CSize ->
        Ptr () ->
        IO (Ptr Word8)

    -- Args: [ Arg
    --           { argCName = "register_buffer"
    --           , argType =
    --               TInterface Name { namespace = "Gtk" , name = "TextBuffer" }
    --           , argCType = Just "GtkTextBuffer*"
    --           , direction = DirectionIn
    --           , mayBeNull = False
    --           , argDoc =
    --               Documentation
    --                 { rawDocText =
    --                     Just "the #GtkTextBuffer for which the format is registered"
    --                 , sinceVersion = Nothing
    --                 }
    --           , argScope = ScopeTypeInvalid
    --           , argClosure = -1
    --           , argDestroy = -1
    --           , argCallerAllocates = False
    --           , argCallbackUserData = False
    --           , transfer = TransferNothing
    --           }
    --       , Arg
    --           { argCName = "content_buffer"
    --           , argType =
    --               TInterface Name { namespace = "Gtk" , name = "TextBuffer" }
    --           , argCType = Just "GtkTextBuffer*"
    --           , direction = DirectionIn
    --           , mayBeNull = False
    --           , argDoc =
    --               Documentation
    --                 { rawDocText = Just "the #GtkTextBuffer to serialize"
    --                 , sinceVersion = Nothing
    --                 }
    --           , argScope = ScopeTypeInvalid
    --           , argClosure = -1
    --           , argDestroy = -1
    --           , argCallerAllocates = False
    --           , argCallbackUserData = False
    --           , transfer = TransferNothing
    --           }
    --       , Arg
    --           { argCName = "start"
    --           , argType =
    --               TInterface Name { namespace = "Gtk" , name = "TextIter" }
    --           , argCType = Just "const GtkTextIter*"
    --           , direction = DirectionIn
    --           , mayBeNull = False
    --           , argDoc =
    --               Documentation
    --                 { rawDocText = Just "start of the block of text to serialize"
    --                 , sinceVersion = Nothing
    --                 }
    --           , argScope = ScopeTypeInvalid
    --           , argClosure = -1
    --           , argDestroy = -1
    --           , argCallerAllocates = False
    --           , argCallbackUserData = False
    --           , transfer = TransferNothing
    --           }
    --       , Arg
    --           { argCName = "end"
    --           , argType =
    --               TInterface Name { namespace = "Gtk" , name = "TextIter" }
    --           , argCType = Just "const GtkTextIter*"
    --           , direction = DirectionIn
    --           , mayBeNull = False
    --           , argDoc =
    --               Documentation
    --                 { rawDocText = Just "end of the block of text to serialize"
    --                 , sinceVersion = Nothing
    --                 }
    --           , argScope = ScopeTypeInvalid
    --           , argClosure = -1
    --           , argDestroy = -1
    --           , argCallerAllocates = False
    --           , argCallbackUserData = False
    --           , transfer = TransferNothing
    --           }
    --       , Arg
    --           { argCName = "length"
    --           , argType = TBasicType TSize
    --           , argCType = Just "gsize*"
    --           , direction = DirectionOut
    --           , mayBeNull = False
    --           , argDoc =
    --               Documentation
    --                 { rawDocText =
    --                     Just "return location for the length of the serialized data"
    --                 , sinceVersion = Nothing
    --                 }
    --           , argScope = ScopeTypeInvalid
    --           , argClosure = -1
    --           , argDestroy = -1
    --           , argCallerAllocates = False
    --           , argCallbackUserData = False
    --           , transfer = TransferEverything
    --           }
    --       , Arg
    --           { argCName = "user_data"
    --           , argType = TBasicType TPtr
    --           , argCType = Just "gpointer"
    --           , direction = DirectionIn
    --           , mayBeNull = True
    --           , argDoc =
    --               Documentation
    --                 { rawDocText =
    --                     Just "user data that was specified when registering the format"
    --                 , sinceVersion = Nothing
    --                 }
    --           , argScope = ScopeTypeInvalid
    --           , argClosure = -1
    --           , argDestroy = -1
    --           , argCallerAllocates = False
    --           , argCallbackUserData = True
    --           , transfer = TransferNothing
    --           }
    --       ]
    -- Lengths: [ Arg
    --              { argCName = "length"
    --              , argType = TBasicType TSize
    --              , argCType = Just "gsize*"
    --              , direction = DirectionOut
    --              , mayBeNull = False
    --              , argDoc =
    --                  Documentation
    --                    { rawDocText =
    --                        Just "return location for the length of the serialized data"
    --                    , sinceVersion = Nothing
    --                    }
    --              , argScope = ScopeTypeInvalid
    --              , argClosure = -1
    --              , argDestroy = -1
    --              , argCallerAllocates = False
    --              , argCallbackUserData = False
    --              , transfer = TransferEverything
    --              }
    --          ]
    -- returnType: Just (TCArray False (-1) 4 (TBasicType TUInt8))
    -- throws : False
    -- Skip return : False

    foreign import ccall "dynamic" __dynamic_C_TextBufferSerializeFunc :: FunPtr C_TextBufferSerializeFunc -> C_TextBufferSerializeFunc

    -- | Given a pointer to a foreign C function, wrap it into a function callable from Haskell.
    dynamic_TextBufferSerializeFunc ::
        (B.CallStack.HasCallStack, MonadIO m, Gtk.TextBuffer.IsTextBuffer a, Gtk.TextBuffer.IsTextBuffer b) =>
        FunPtr C_TextBufferSerializeFunc
        -> a
        -- ^ /@registerBuffer@/: the t'GI.Gtk.Objects.TextBuffer.TextBuffer' for which the format is registered
        -> b
        -- ^ /@contentBuffer@/: the t'GI.Gtk.Objects.TextBuffer.TextBuffer' to serialize
        -> Gtk.TextIter.TextIter
        -- ^ /@start@/: start of the block of text to serialize
        -> Gtk.TextIter.TextIter
        -- ^ /@end@/: end of the block of text to serialize
        -> Ptr ()
        -- ^ /@userData@/: user data that was specified when registering the format
        -> m (Maybe ByteString)
        -- ^ __Returns:__ a newly-allocated array of guint8
        -- which contains the serialized data, or 'P.Nothing' if an error occurred
    dynamic_TextBufferSerializeFunc :: forall (m :: * -> *) a b.
    (HasCallStack, MonadIO m, IsTextBuffer a, IsTextBuffer b) =>
    FunPtr C_TextBufferSerializeFunc
    -> a -> b -> TextIter -> TextIter -> Ptr () -> m (Maybe ByteString)
    dynamic_TextBufferSerializeFunc FunPtr C_TextBufferSerializeFunc
    __funPtr a
    registerBuffer b
    contentBuffer TextIter
    start TextIter
    end Ptr ()
    userData = IO (Maybe ByteString) -> m (Maybe ByteString)
    forall a. IO a -> m a
    forall (m :: * -> *) a. MonadIO m => IO a -> m a
    liftIO (IO (Maybe ByteString) -> m (Maybe ByteString))
    -> IO (Maybe ByteString) -> m (Maybe ByteString)
    forall a b. (a -> b) -> a -> b
    $ do
        registerBuffer' <- a -> IO (Ptr TextBuffer)
    forall a b. (HasCallStack, ManagedPtrNewtype a) => a -> IO (Ptr b)
    unsafeManagedPtrCastPtr a
    registerBuffer
        contentBuffer' <- unsafeManagedPtrCastPtr contentBuffer
        start' <- unsafeManagedPtrGetPtr start
        end' <- unsafeManagedPtrGetPtr end
        length_ <- allocMem :: IO (Ptr FCT.CSize)
        result <- (__dynamic_C_TextBufferSerializeFunc __funPtr) registerBuffer' contentBuffer' start' end' length_ userData
        length_' <- peek length_
        maybeResult <- convertIfNonNull result $ \Ptr Word8
    result' -> do
            result'' <- (CSize -> Ptr Word8 -> IO ByteString
    forall a. Integral a => a -> Ptr Word8 -> IO ByteString
    unpackByteStringWithLength CSize
    length_') Ptr Word8
    result'
            return result''
        touchManagedPtr registerBuffer
        touchManagedPtr contentBuffer
        touchManagedPtr start
        touchManagedPtr end
        freeMem length_
        return maybeResult

    -- | Generate a function pointer callable from C code, from a `C_TextBufferSerializeFunc`.
    foreign import ccall "wrapper"
        mk_TextBufferSerializeFunc :: C_TextBufferSerializeFunc -> IO (FunPtr C_TextBufferSerializeFunc)

    -- | A function that is called to serialize the content of a text buffer.
    -- It must return the serialized form of the content.
    type TextBufferSerializeFunc =
        Gtk.TextBuffer.TextBuffer
        -- ^ /@registerBuffer@/: the t'GI.Gtk.Objects.TextBuffer.TextBuffer' for which the format is registered
        -> Gtk.TextBuffer.TextBuffer
        -- ^ /@contentBuffer@/: the t'GI.Gtk.Objects.TextBuffer.TextBuffer' to serialize
        -> Gtk.TextIter.TextIter
        -- ^ /@start@/: start of the block of text to serialize
        -> Gtk.TextIter.TextIter
        -- ^ /@end@/: end of the block of text to serialize
        -> IO (Maybe ByteString)
        -- ^ __Returns:__ a newly-allocated array of guint8
        -- which contains the serialized data, or 'P.Nothing' if an error occurred

    -- | A convenience synonym for @`Nothing` :: `Maybe` `TextBufferSerializeFunc`@.
    noTextBufferSerializeFunc :: Maybe TextBufferSerializeFunc
    noTextBufferSerializeFunc :: Maybe TextBufferSerializeFunc
    noTextBufferSerializeFunc = Maybe TextBufferSerializeFunc
    forall a. Maybe a
    Nothing

    -- | A function that is called to serialize the content of a text buffer.
    -- It must return the serialized form of the content.
    type TextBufferSerializeFunc_WithClosures =
        Gtk.TextBuffer.TextBuffer
        -- ^ /@registerBuffer@/: the t'GI.Gtk.Objects.TextBuffer.TextBuffer' for which the format is registered
        -> Gtk.TextBuffer.TextBuffer
        -- ^ /@contentBuffer@/: the t'GI.Gtk.Objects.TextBuffer.TextBuffer' to serialize
        -> Gtk.TextIter.TextIter
        -- ^ /@start@/: start of the block of text to serialize
        -> Gtk.TextIter.TextIter
        -- ^ /@end@/: end of the block of text to serialize
        -> Ptr ()
        -- ^ /@userData@/: user data that was specified when registering the format
        -> IO (Maybe ByteString)
        -- ^ __Returns:__ a newly-allocated array of guint8
        -- which contains the serialized data, or 'P.Nothing' if an error occurred

    -- | A convenience synonym for @`Nothing` :: `Maybe` `TextBufferSerializeFunc_WithClosures`@.
    noTextBufferSerializeFunc_WithClosures :: Maybe TextBufferSerializeFunc_WithClosures
    noTextBufferSerializeFunc_WithClosures :: Maybe TextBufferSerializeFunc_WithClosures
    noTextBufferSerializeFunc_WithClosures = Maybe TextBufferSerializeFunc_WithClosures
    forall a. Maybe a
    Nothing

    -- | A simple wrapper that ignores the closure arguments.
    drop_closures_TextBufferSerializeFunc :: TextBufferSerializeFunc -> TextBufferSerializeFunc_WithClosures
    drop_closures_TextBufferSerializeFunc :: TextBufferSerializeFunc -> TextBufferSerializeFunc_WithClosures
    drop_closures_TextBufferSerializeFunc TextBufferSerializeFunc
    _f TextBuffer
    registerBuffer TextBuffer
    contentBuffer TextIter
    start TextIter
    end Ptr ()
    _ = TextBufferSerializeFunc
    _f TextBuffer
    registerBuffer TextBuffer
    contentBuffer TextIter
    start TextIter
    end

    -- | Wrap the callback into a `GClosure`.
    genClosure_TextBufferSerializeFunc :: MonadIO m => TextBufferSerializeFunc -> m (GClosure C_TextBufferSerializeFunc)
    genClosure_TextBufferSerializeFunc :: forall (m :: * -> *).
    MonadIO m =>
    TextBufferSerializeFunc -> m (GClosure C_TextBufferSerializeFunc)
    genClosure_TextBufferSerializeFunc TextBufferSerializeFunc
    cb = IO (GClosure C_TextBufferSerializeFunc)
    -> m (GClosure C_TextBufferSerializeFunc)
    forall a. IO a -> m a
    forall (m :: * -> *) a. MonadIO m => IO a -> m a
    liftIO (IO (GClosure C_TextBufferSerializeFunc)
     -> m (GClosure C_TextBufferSerializeFunc))
    -> IO (GClosure C_TextBufferSerializeFunc)
    -> m (GClosure C_TextBufferSerializeFunc)
    forall a b. (a -> b) -> a -> b
    $ do
        let cb' :: TextBufferSerializeFunc_WithClosures
    cb' = TextBufferSerializeFunc -> TextBufferSerializeFunc_WithClosures
    drop_closures_TextBufferSerializeFunc TextBufferSerializeFunc
    cb
        let cb'' :: C_TextBufferSerializeFunc
    cb'' = Maybe (Ptr (FunPtr C_TextBufferSerializeFunc))
    -> TextBufferSerializeFunc_WithClosures
    -> C_TextBufferSerializeFunc
    wrap_TextBufferSerializeFunc Maybe (Ptr (FunPtr C_TextBufferSerializeFunc))
    forall a. Maybe a
    Nothing TextBufferSerializeFunc_WithClosures
    cb'
        C_TextBufferSerializeFunc -> IO (FunPtr C_TextBufferSerializeFunc)
    mk_TextBufferSerializeFunc C_TextBufferSerializeFunc
    cb'' IO (FunPtr C_TextBufferSerializeFunc)
    -> (FunPtr C_TextBufferSerializeFunc
        -> IO (GClosure C_TextBufferSerializeFunc))
    -> IO (GClosure C_TextBufferSerializeFunc)
    forall a b. IO a -> (a -> IO b) -> IO b
    forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
    >>= FunPtr C_TextBufferSerializeFunc
    -> IO (GClosure C_TextBufferSerializeFunc)
    forall (m :: * -> *) a. MonadIO m => FunPtr a -> m (GClosure a)
    B.GClosure.newGClosure

    -- | Wrap a `TextBufferSerializeFunc` into a `C_TextBufferSerializeFunc`.
    wrap_TextBufferSerializeFunc ::
        Maybe (Ptr (FunPtr C_TextBufferSerializeFunc)) ->
        TextBufferSerializeFunc_WithClosures ->
        C_TextBufferSerializeFunc
    wrap_TextBufferSerializeFunc :: Maybe (Ptr (FunPtr C_TextBufferSerializeFunc))
    -> TextBufferSerializeFunc_WithClosures
    -> C_TextBufferSerializeFunc
    wrap_TextBufferSerializeFunc Maybe (Ptr (FunPtr C_TextBufferSerializeFunc))
    gi'funptrptr TextBufferSerializeFunc_WithClosures
    gi'cb Ptr TextBuffer
    registerBuffer Ptr TextBuffer
    contentBuffer Ptr TextIter
    start Ptr TextIter
    end Ptr CSize
    length_ Ptr ()
    userData = do
        registerBuffer' <- ((ManagedPtr TextBuffer -> TextBuffer)
    -> Ptr TextBuffer -> IO TextBuffer
    forall a b.
    (HasCallStack, GObject a, GObject b) =>
    (ManagedPtr a -> a) -> Ptr b -> IO a
    newObject ManagedPtr TextBuffer -> TextBuffer
    Gtk.TextBuffer.TextBuffer) Ptr TextBuffer
    registerBuffer
        contentBuffer' <- (newObject Gtk.TextBuffer.TextBuffer) contentBuffer
        B.ManagedPtr.withTransient  start $ \TextIter
    start' -> do
            Ptr TextIter -> (TextIter -> IO (Ptr Word8)) -> IO (Ptr Word8)
    forall a b.
    (HasCallStack, ManagedPtrNewtype a) =>
    Ptr a -> (a -> IO b) -> IO b
    B.ManagedPtr.withTransient  Ptr TextIter
    end ((TextIter -> IO (Ptr Word8)) -> IO (Ptr Word8))
    -> (TextIter -> IO (Ptr Word8)) -> IO (Ptr Word8)
    forall a b. (a -> b) -> a -> b
    $ \TextIter
    end' -> do
                result <- TextBufferSerializeFunc_WithClosures
    gi'cb  TextBuffer
    registerBuffer' TextBuffer
    contentBuffer' TextIter
    start' TextIter
    end' Ptr ()
    userData
                maybeReleaseFunPtr gi'funptrptr
                maybeM FP.nullPtr result $ \ByteString
    result' -> do
                    result'' <- ByteString -> IO (Ptr Word8)
    packByteString ByteString
    result'
                    return result''

    -- callback TextBufferDeserializeFunc
    {- Callable
      { returnType = Just (TBasicType TBoolean)
      , returnMayBeNull = False
      , returnTransfer = TransferNothing
      , returnDocumentation =
          Documentation
            { rawDocText = Just "%TRUE on success, %FALSE otherwise"
            , sinceVersion = Nothing
            }
      , args =
          [ Arg
              { argCName = "register_buffer"
              , argType =
                  TInterface Name { namespace = "Gtk" , name = "TextBuffer" }
              , argCType = Just "GtkTextBuffer*"
              , direction = DirectionIn
              , mayBeNull = False
              , argDoc =
                  Documentation
                    { rawDocText =
                        Just "the #GtkTextBuffer the format is registered with"
                    , sinceVersion = Nothing
                    }
              , argScope = ScopeTypeInvalid
              , argClosure = -1
              , argDestroy = -1
              , argCallerAllocates = False
              , argCallbackUserData = False
              , transfer = TransferNothing
              }
          , Arg
              { argCName = "content_buffer"
              , argType =
                  TInterface Name { namespace = "Gtk" , name = "TextBuffer" }
              , argCType = Just "GtkTextBuffer*"
              , direction = DirectionIn
              , mayBeNull = False
              , argDoc =
                  Documentation
                    { rawDocText = Just "the #GtkTextBuffer to deserialize into"
                    , sinceVersion = Nothing
                    }
              , argScope = ScopeTypeInvalid
              , argClosure = -1
              , argDestroy = -1
              , argCallerAllocates = False
              , argCallbackUserData = False
              , transfer = TransferNothing
              }
          , Arg
              { argCName = "iter"
              , argType =
                  TInterface Name { namespace = "Gtk" , name = "TextIter" }
              , argCType = Just "GtkTextIter*"
              , direction = DirectionIn
              , mayBeNull = False
              , argDoc =
                  Documentation
                    { rawDocText = Just "insertion point for the deserialized text"
                    , sinceVersion = Nothing
                    }
              , argScope = ScopeTypeInvalid
              , argClosure = -1
              , argDestroy = -1
              , argCallerAllocates = False
              , argCallbackUserData = False
              , transfer = TransferNothing
              }
          , Arg
              { argCName = "data"
              , argType = TCArray False (-1) 4 (TBasicType TUInt8)
              , argCType = Just "const guint8*"
              , direction = DirectionIn
              , mayBeNull = False
              , argDoc =
                  Documentation
                    { rawDocText = Just "data to deserialize"
                    , sinceVersion = Nothing
                    }
              , argScope = ScopeTypeInvalid
              , argClosure = -1
              , argDestroy = -1
              , argCallerAllocates = False
              , argCallbackUserData = False
              , transfer = TransferNothing
              }
          , Arg
              { argCName = "length"
              , argType = TBasicType TSize
              , argCType = Just "gsize"
              , direction = DirectionIn
              , mayBeNull = False
              , argDoc =
                  Documentation
                    { rawDocText = Just "length of @data" , sinceVersion = Nothing }
              , argScope = ScopeTypeInvalid
              , argClosure = -1
              , argDestroy = -1
              , argCallerAllocates = False
              , argCallbackUserData = False
              , transfer = TransferNothing
              }
          , Arg
              { argCName = "create_tags"
              , argType = TBasicType TBoolean
              , argCType = Just "gboolean"
              , direction = DirectionIn
              , mayBeNull = False
              , argDoc =
                  Documentation
                    { rawDocText = Just "%TRUE if deserializing may create tags"
                    , sinceVersion = Nothing
                    }
              , argScope = ScopeTypeInvalid
              , argClosure = -1
              , argDestroy = -1
              , argCallerAllocates = False
              , argCallbackUserData = False
              , transfer = TransferNothing
              }
          , Arg
              { argCName = "user_data"
              , argType = TBasicType TPtr
              , argCType = Just "gpointer"
              , direction = DirectionIn
              , mayBeNull = True
              , argDoc =
                  Documentation
                    { rawDocText =
                        Just "user data that was specified when registering the format"
                    , sinceVersion = Nothing
                    }
              , argScope = ScopeTypeInvalid
              , argClosure = -1
              , argDestroy = -1
              , argCallerAllocates = False
              , argCallbackUserData = True
              , transfer = TransferNothing
              }
          ]
      , skipReturn = False
      , callableThrows = True
      , callableDeprecated = Nothing
      , callableDocumentation =
          Documentation
            { rawDocText =
                Just
                  "A function that is called to deserialize rich text that has been\nserialized with gtk_text_buffer_serialize(), and insert it at @iter."
            , sinceVersion = Nothing
            }
      , callableResolvable = Nothing
      }
    -}
    -- | Type for the callback on the (unwrapped) C side.
    type C_TextBufferDeserializeFunc =
        Ptr Gtk.TextBuffer.TextBuffer ->
        Ptr Gtk.TextBuffer.TextBuffer ->
        Ptr Gtk.TextIter.TextIter ->
        Ptr Word8 ->
        FCT.CSize ->
        CInt ->
        Ptr () ->
        Ptr (Ptr GError) ->
        IO CInt

    -- Args: [ Arg
    --           { argCName = "register_buffer"
    --           , argType =
    --               TInterface Name { namespace = "Gtk" , name = "TextBuffer" }
    --           , argCType = Just "GtkTextBuffer*"
    --           , direction = DirectionIn
    --           , mayBeNull = False
    --           , argDoc =
    --               Documentation
    --                 { rawDocText =
    --                     Just "the #GtkTextBuffer the format is registered with"
    --                 , sinceVersion = Nothing
    --                 }
    --           , argScope = ScopeTypeInvalid
    --           , argClosure = -1
    --           , argDestroy = -1
    --           , argCallerAllocates = False
    --           , argCallbackUserData = False
    --           , transfer = TransferNothing
    --           }
    --       , Arg
    --           { argCName = "content_buffer"
    --           , argType =
    --               TInterface Name { namespace = "Gtk" , name = "TextBuffer" }
    --           , argCType = Just "GtkTextBuffer*"
    --           , direction = DirectionIn
    --           , mayBeNull = False
    --           , argDoc =
    --               Documentation
    --                 { rawDocText = Just "the #GtkTextBuffer to deserialize into"
    --                 , sinceVersion = Nothing
    --                 }
    --           , argScope = ScopeTypeInvalid
    --           , argClosure = -1
    --           , argDestroy = -1
    --           , argCallerAllocates = False
    --           , argCallbackUserData = False
    --           , transfer = TransferNothing
    --           }
    --       , Arg
    --           { argCName = "iter"
    --           , argType =
    --               TInterface Name { namespace = "Gtk" , name = "TextIter" }
    --           , argCType = Just "GtkTextIter*"
    --           , direction = DirectionIn
    --           , mayBeNull = False
    --           , argDoc =
    --               Documentation
    --                 { rawDocText = Just "insertion point for the deserialized text"
    --                 , sinceVersion = Nothing
    --                 }
    --           , argScope = ScopeTypeInvalid
    --           , argClosure = -1
    --           , argDestroy = -1
    --           , argCallerAllocates = False
    --           , argCallbackUserData = False
    --           , transfer = TransferNothing
    --           }
    --       , Arg
    --           { argCName = "data"
    --           , argType = TCArray False (-1) 4 (TBasicType TUInt8)
    --           , argCType = Just "const guint8*"
    --           , direction = DirectionIn
    --           , mayBeNull = False
    --           , argDoc =
    --               Documentation
    --                 { rawDocText = Just "data to deserialize"
    --                 , sinceVersion = Nothing
    --                 }
    --           , argScope = ScopeTypeInvalid
    --           , argClosure = -1
    --           , argDestroy = -1
    --           , argCallerAllocates = False
    --           , argCallbackUserData = False
    --           , transfer = TransferNothing
    --           }
    --       , Arg
    --           { argCName = "length"
    --           , argType = TBasicType TSize
    --           , argCType = Just "gsize"
    --           , direction = DirectionIn
    --           , mayBeNull = False
    --           , argDoc =
    --               Documentation
    --                 { rawDocText = Just "length of @data" , sinceVersion = Nothing }
    --           , argScope = ScopeTypeInvalid
    --           , argClosure = -1
    --           , argDestroy = -1
    --           , argCallerAllocates = False
    --           , argCallbackUserData = False
    --           , transfer = TransferNothing
    --           }
    --       , Arg
    --           { argCName = "create_tags"
    --           , argType = TBasicType TBoolean
    --           , argCType = Just "gboolean"
    --           , direction = DirectionIn
    --           , mayBeNull = False
    --           , argDoc =
    --               Documentation
    --                 { rawDocText = Just "%TRUE if deserializing may create tags"
    --                 , sinceVersion = Nothing
    --                 }
    --           , argScope = ScopeTypeInvalid
    --           , argClosure = -1
    --           , argDestroy = -1
    --           , argCallerAllocates = False
    --           , argCallbackUserData = False
    --           , transfer = TransferNothing
    --           }
    --       , Arg
    --           { argCName = "user_data"
    --           , argType = TBasicType TPtr
    --           , argCType = Just "gpointer"
    --           , direction = DirectionIn
    --           , mayBeNull = True
    --           , argDoc =
    --               Documentation
    --                 { rawDocText =
    --                     Just "user data that was specified when registering the format"
    --                 , sinceVersion = Nothing
    --                 }
    --           , argScope = ScopeTypeInvalid
    --           , argClosure = -1
    --           , argDestroy = -1
    --           , argCallerAllocates = False
    --           , argCallbackUserData = True
    --           , transfer = TransferNothing
    --           }
    --       ]
    -- Lengths: [ Arg
    --              { argCName = "length"
    --              , argType = TBasicType TSize
    --              , argCType = Just "gsize"
    --              , direction = DirectionIn
    --              , mayBeNull = False
    --              , argDoc =
    --                  Documentation
    --                    { rawDocText = Just "length of @data" , sinceVersion = Nothing }
    --              , argScope = ScopeTypeInvalid
    --              , argClosure = -1
    --              , argDestroy = -1
    --              , argCallerAllocates = False
    --              , argCallbackUserData = False
    --              , transfer = TransferNothing
    --              }
    --          ]
    -- returnType: Just (TBasicType TBoolean)
    -- throws : True
    -- Skip return : False

    foreign import ccall "dynamic" __dynamic_C_TextBufferDeserializeFunc :: FunPtr C_TextBufferDeserializeFunc -> C_TextBufferDeserializeFunc

    -- | Given a pointer to a foreign C function, wrap it into a function callable from Haskell.
    dynamic_TextBufferDeserializeFunc ::
        (B.CallStack.HasCallStack, MonadIO m, Gtk.TextBuffer.IsTextBuffer a, Gtk.TextBuffer.IsTextBuffer b) =>
        FunPtr C_TextBufferDeserializeFunc
        -> a
        -- ^ /@registerBuffer@/: the t'GI.Gtk.Objects.TextBuffer.TextBuffer' the format is registered with
        -> b
        -- ^ /@contentBuffer@/: the t'GI.Gtk.Objects.TextBuffer.TextBuffer' to deserialize into
        -> Gtk.TextIter.TextIter
        -- ^ /@iter@/: insertion point for the deserialized text
        -> ByteString
        -- ^ /@data@/: data to deserialize
        -> Bool
        -- ^ /@createTags@/: 'P.True' if deserializing may create tags
        -> Ptr ()
        -- ^ /@userData@/: user data that was specified when registering the format
        -> m ()
        -- ^ /(Can throw 'Data.GI.Base.GError.GError')/
    dynamic_TextBufferDeserializeFunc :: forall (m :: * -> *) a b.
    (HasCallStack, MonadIO m, IsTextBuffer a, IsTextBuffer b) =>
    FunPtr C_TextBufferDeserializeFunc
    -> a -> b -> TextIter -> ByteString -> Bool -> Ptr () -> m ()
    dynamic_TextBufferDeserializeFunc FunPtr C_TextBufferDeserializeFunc
    __funPtr a
    registerBuffer b
    contentBuffer TextIter
    iter ByteString
    data_ Bool
    createTags Ptr ()
    userData = IO () -> m ()
    forall a. IO a -> m a
    forall (m :: * -> *) a. MonadIO m => IO a -> m a
    liftIO (IO () -> m ()) -> IO () -> m ()
    forall a b. (a -> b) -> a -> b
    $ do
        let length_ :: CSize
    length_ = Int -> CSize
    forall a b. (Integral a, Num b) => a -> b
    fromIntegral (Int -> CSize) -> Int -> CSize
    forall a b. (a -> b) -> a -> b
    $ ByteString -> Int
    B.length ByteString
    data_
        registerBuffer' <- a -> IO (Ptr TextBuffer)
    forall a b. (HasCallStack, ManagedPtrNewtype a) => a -> IO (Ptr b)
    unsafeManagedPtrCastPtr a
    registerBuffer
        contentBuffer' <- unsafeManagedPtrCastPtr contentBuffer
        iter' <- unsafeManagedPtrGetPtr iter
        data_' <- packByteString data_
        let createTags' = (Int -> CInt
    forall a b. (Integral a, Num b) => a -> b
    P.fromIntegral (Int -> CInt) -> (Bool -> Int) -> Bool -> CInt
    forall b c a. (b -> c) -> (a -> b) -> a -> c
    . Bool -> Int
    forall a. Enum a => a -> Int
    P.fromEnum) Bool
    createTags
        onException (do
            _ <- propagateGError $ (__dynamic_C_TextBufferDeserializeFunc __funPtr) registerBuffer' contentBuffer' iter' data_' length_ createTags' userData
            touchManagedPtr registerBuffer
            touchManagedPtr contentBuffer
            touchManagedPtr iter
            freeMem data_'
            return ()
         ) (do
            freeMem data_'
         )

    -- | Generate a function pointer callable from C code, from a `C_TextBufferDeserializeFunc`.
    foreign import ccall "wrapper"
        mk_TextBufferDeserializeFunc :: C_TextBufferDeserializeFunc -> IO (FunPtr C_TextBufferDeserializeFunc)

    -- | A function that is called to deserialize rich text that has been
    -- serialized with 'GI.Gtk.Objects.TextBuffer.textBufferSerialize', and insert it at /@iter@/.
    type TextBufferDeserializeFunc =
        Gtk.TextBuffer.TextBuffer
        -- ^ /@registerBuffer@/: the t'GI.Gtk.Objects.TextBuffer.TextBuffer' the format is registered with
        -> Gtk.TextBuffer.TextBuffer
        -- ^ /@contentBuffer@/: the t'GI.Gtk.Objects.TextBuffer.TextBuffer' to deserialize into
        -> Gtk.TextIter.TextIter
        -- ^ /@iter@/: insertion point for the deserialized text
        -> ByteString
        -- ^ /@data@/: data to deserialize
        -> Bool
        -- ^ /@createTags@/: 'P.True' if deserializing may create tags
        -> IO ()
        -- ^ __Returns:__ 'P.True' on success, 'P.False' otherwise /(Can throw 'Data.GI.Base.GError.GError')/

    -- | A convenience synonym for @`Nothing` :: `Maybe` `TextBufferDeserializeFunc`@.
    noTextBufferDeserializeFunc :: Maybe TextBufferDeserializeFunc
    noTextBufferDeserializeFunc :: Maybe TextBufferDeserializeFunc
    noTextBufferDeserializeFunc = Maybe TextBufferDeserializeFunc
    forall a. Maybe a
    Nothing

    -- | A function that is called to deserialize rich text that has been
    -- serialized with 'GI.Gtk.Objects.TextBuffer.textBufferSerialize', and insert it at /@iter@/.
    type TextBufferDeserializeFunc_WithClosures =
        Gtk.TextBuffer.TextBuffer
        -- ^ /@registerBuffer@/: the t'GI.Gtk.Objects.TextBuffer.TextBuffer' the format is registered with
        -> Gtk.TextBuffer.TextBuffer
        -- ^ /@contentBuffer@/: the t'GI.Gtk.Objects.TextBuffer.TextBuffer' to deserialize into
        -> Gtk.TextIter.TextIter
        -- ^ /@iter@/: insertion point for the deserialized text
        -> ByteString
        -- ^ /@data@/: data to deserialize
        -> Bool
        -- ^ /@createTags@/: 'P.True' if deserializing may create tags
        -> Ptr ()
        -- ^ /@userData@/: user data that was specified when registering the format
        -> IO ()
        -- ^ __Returns:__ 'P.True' on success, 'P.False' otherwise /(Can throw 'Data.GI.Base.GError.GError')/

    -- | A convenience synonym for @`Nothing` :: `Maybe` `TextBufferDeserializeFunc_WithClosures`@.
    noTextBufferDeserializeFunc_WithClosures :: Maybe TextBufferDeserializeFunc_WithClosures
    noTextBufferDeserializeFunc_WithClosures :: Maybe TextBufferDeserializeFunc_WithClosures
    noTextBufferDeserializeFunc_WithClosures = Maybe TextBufferDeserializeFunc_WithClosures
    forall a. Maybe a
    Nothing

    -- | A simple wrapper that ignores the closure arguments.
    drop_closures_TextBufferDeserializeFunc :: TextBufferDeserializeFunc -> TextBufferDeserializeFunc_WithClosures
    drop_closures_TextBufferDeserializeFunc :: TextBufferDeserializeFunc -> TextBufferDeserializeFunc_WithClosures
    drop_closures_TextBufferDeserializeFunc TextBufferDeserializeFunc
    _f TextBuffer
    registerBuffer TextBuffer
    contentBuffer TextIter
    iter ByteString
    data_ Bool
    createTags Ptr ()
    _ = TextBufferDeserializeFunc
    _f TextBuffer
    registerBuffer TextBuffer
    contentBuffer TextIter
    iter ByteString
    data_ Bool
    createTags

    -- No Haskell->C wrapper generated since the function throws.

    -- callback StylePropertyParser
    {- Callable
      { returnType = Just (TBasicType TBoolean)
      , returnMayBeNull = False
      , returnTransfer = TransferNothing
      , returnDocumentation =
          Documentation { rawDocText = Nothing , sinceVersion = Nothing }
      , args =
          [ Arg
              { argCName = "string"
              , argType = TBasicType TUTF8
              , argCType = Just "const gchar*"
              , direction = DirectionIn
              , mayBeNull = False
              , argDoc =
                  Documentation { rawDocText = Nothing , sinceVersion = Nothing }
              , argScope = ScopeTypeInvalid
              , argClosure = -1
              , argDestroy = -1
              , argCallerAllocates = False
              , argCallbackUserData = False
              , transfer = TransferNothing
              }
          , Arg
              { argCName = "value"
              , argType = TGValue
              , argCType = Just "GValue*"
              , direction = DirectionIn
              , mayBeNull = False
              , argDoc =
                  Documentation { rawDocText = Nothing , sinceVersion = Nothing }
              , argScope = ScopeTypeInvalid
              , argClosure = -1
              , argDestroy = -1
              , argCallerAllocates = False
              , argCallbackUserData = False
              , transfer = TransferNothing
              }
          ]
      , skipReturn = False
      , callableThrows = True
      , callableDeprecated = Nothing
      , callableDocumentation =
          Documentation { rawDocText = Nothing , sinceVersion = Nothing }
      , callableResolvable = Nothing
      }
    -}
    -- | Type for the callback on the (unwrapped) C side.
    type C_StylePropertyParser =
        CString ->
        Ptr GValue ->
        Ptr (Ptr GError) ->
        IO CInt

    -- Args: [ Arg
    --           { argCName = "string"
    --           , argType = TBasicType TUTF8
    --           , argCType = Just "const gchar*"
    --           , direction = DirectionIn
    --           , mayBeNull = False
    --           , argDoc =
    --               Documentation { rawDocText = Nothing , sinceVersion = Nothing }
    --           , argScope = ScopeTypeInvalid
    --           , argClosure = -1
    --           , argDestroy = -1
    --           , argCallerAllocates = False
    --           , argCallbackUserData = False
    --           , transfer = TransferNothing
    --           }
    --       , Arg
    --           { argCName = "value"
    --           , argType = TGValue
    --           , argCType = Just "GValue*"
    --           , direction = DirectionIn
    --           , mayBeNull = False
    --           , argDoc =
    --               Documentation { rawDocText = Nothing , sinceVersion = Nothing }
    --           , argScope = ScopeTypeInvalid
    --           , argClosure = -1
    --           , argDestroy = -1
    --           , argCallerAllocates = False
    --           , argCallbackUserData = False
    --           , transfer = TransferNothing
    --           }
    --       ]
    -- Lengths: []
    -- returnType: Just (TBasicType TBoolean)
    -- throws : True
    -- Skip return : False

    foreign import ccall "dynamic" __dynamic_C_StylePropertyParser :: FunPtr C_StylePropertyParser -> C_StylePropertyParser

    -- | Given a pointer to a foreign C function, wrap it into a function callable from Haskell.
    dynamic_StylePropertyParser ::
        (B.CallStack.HasCallStack, MonadIO m) =>
        FunPtr C_StylePropertyParser
        -> T.Text
        -> GValue
        -> m ()
        -- ^ /(Can throw 'Data.GI.Base.GError.GError')/
    dynamic_StylePropertyParser :: forall (m :: * -> *).
    (HasCallStack, MonadIO m) =>
    FunPtr C_StylePropertyParser -> Text -> GValue -> m ()
    dynamic_StylePropertyParser FunPtr C_StylePropertyParser
    __funPtr Text
    string GValue
    value = IO () -> m ()
    forall a. IO a -> m a
    forall (m :: * -> *) a. MonadIO m => IO a -> m a
    liftIO (IO () -> m ()) -> IO () -> m ()
    forall a b. (a -> b) -> a -> b
    $ do
        string' <- Text -> IO CString
    textToCString Text
    string
        value' <- unsafeManagedPtrGetPtr value
        onException (do
            _ <- propagateGError $ (__dynamic_C_StylePropertyParser __funPtr) string' value'
            touchManagedPtr value
            freeMem string'
            return ()
         ) (do
            freeMem string'
         )

    -- | Generate a function pointer callable from C code, from a `C_StylePropertyParser`.
    foreign import ccall "wrapper"
        mk_StylePropertyParser :: C_StylePropertyParser -> IO (FunPtr C_StylePropertyParser)

    -- | /No description available in the introspection data./
    type StylePropertyParser =
        T.Text
        -> GValue
        -> IO ()
        -- ^ /(Can throw 'Data.GI.Base.GError.GError')/

    -- | A convenience synonym for @`Nothing` :: `Maybe` `StylePropertyParser`@.
    noStylePropertyParser :: Maybe StylePropertyParser
    noStylePropertyParser :: Maybe StylePropertyParser
    noStylePropertyParser = Maybe StylePropertyParser
    forall a. Maybe a
    Nothing

    -- No Haskell->C wrapper generated since the function throws.

    -- callback RecentSortFunc
    {- Callable
      { returnType = Just (TBasicType TInt)
      , returnMayBeNull = False
      , returnTransfer = TransferNothing
      , returnDocumentation =
          Documentation { rawDocText = Nothing , sinceVersion = Nothing }
      , args =
          [ Arg
              { argCName = "a"
              , argType =
                  TInterface Name { namespace = "Gtk" , name = "RecentInfo" }
              , argCType = Just "GtkRecentInfo*"
              , direction = DirectionIn
              , mayBeNull = False
              , argDoc =
                  Documentation { rawDocText = Nothing , sinceVersion = Nothing }
              , argScope = ScopeTypeInvalid
              , argClosure = -1
              , argDestroy = -1
              , argCallerAllocates = False
              , argCallbackUserData = False
              , transfer = TransferNothing
              }
          , Arg
              { argCName = "b"
              , argType =
                  TInterface Name { namespace = "Gtk" , name = "RecentInfo" }
              , argCType = Just "GtkRecentInfo*"
              , direction = DirectionIn
              , mayBeNull = False
              , argDoc =
                  Documentation { rawDocText = Nothing , sinceVersion = Nothing }
              , argScope = ScopeTypeInvalid
              , argClosure = -1
              , argDestroy = -1
              , argCallerAllocates = False
              , argCallbackUserData = False
              , transfer = TransferNothing
              }
          , Arg
              { argCName = "user_data"
              , argType = TBasicType TPtr
              , argCType = Just "gpointer"
              , direction = DirectionIn
              , mayBeNull = True
              , argDoc =
                  Documentation { rawDocText = Nothing , sinceVersion = Nothing }
              , argScope = ScopeTypeInvalid
              , argClosure = -1
              , argDestroy = -1
              , argCallerAllocates = False
              , argCallbackUserData = True
              , transfer = TransferNothing
              }
          ]
      , skipReturn = False
      , callableThrows = False
      , callableDeprecated = Nothing
      , callableDocumentation =
          Documentation { rawDocText = Nothing , sinceVersion = Nothing }
      , callableResolvable = Nothing
      }
    -}
    -- | Type for the callback on the (unwrapped) C side.
    type C_RecentSortFunc =
        Ptr Gtk.RecentInfo.RecentInfo ->
        Ptr Gtk.RecentInfo.RecentInfo ->
        Ptr () ->
        IO Int32

    -- Args: [ Arg
    --           { argCName = "a"
    --           , argType =
    --               TInterface Name { namespace = "Gtk" , name = "RecentInfo" }
    --           , argCType = Just "GtkRecentInfo*"
    --           , direction = DirectionIn
    --           , mayBeNull = False
    --           , argDoc =
    --               Documentation { rawDocText = Nothing , sinceVersion = Nothing }
    --           , argScope = ScopeTypeInvalid
    --           , argClosure = -1
    --           , argDestroy = -1
    --           , argCallerAllocates = False
    --           , argCallbackUserData = False
    --           , transfer = TransferNothing
    --           }
    --       , Arg
    --           { argCName = "b"
    --           , argType =
    --               TInterface Name { namespace = "Gtk" , name = "RecentInfo" }
    --           , argCType = Just "GtkRecentInfo*"
    --           , direction = DirectionIn
    --           , mayBeNull = False
    --           , argDoc =
    --               Documentation { rawDocText = Nothing , sinceVersion = Nothing }
    --           , argScope = ScopeTypeInvalid
    --           , argClosure = -1
    --           , argDestroy = -1
    --           , argCallerAllocates = False
    --           , argCallbackUserData = False
    --           , transfer = TransferNothing
    --           }
    --       , Arg
    --           { argCName = "user_data"
    --           , argType = TBasicType TPtr
    --           , argCType = Just "gpointer"
    --           , direction = DirectionIn
    --           , mayBeNull = True
    --           , argDoc =
    --               Documentation { rawDocText = Nothing , sinceVersion = Nothing }
    --           , argScope = ScopeTypeInvalid
    --           , argClosure = -1
    --           , argDestroy = -1
    --           , argCallerAllocates = False
    --           , argCallbackUserData = True
    --           , transfer = TransferNothing
    --           }
    --       ]
    -- Lengths: []
    -- returnType: Just (TBasicType TInt)
    -- throws : False
    -- Skip return : False

    foreign import ccall "dynamic" __dynamic_C_RecentSortFunc :: FunPtr C_RecentSortFunc -> C_RecentSortFunc

    -- | Given a pointer to a foreign C function, wrap it into a function callable from Haskell.
    dynamic_RecentSortFunc ::
        (B.CallStack.HasCallStack, MonadIO m) =>
        FunPtr C_RecentSortFunc
        -> Gtk.RecentInfo.RecentInfo
        -> Gtk.RecentInfo.RecentInfo
        -> Ptr ()
        -> m Int32
    dynamic_RecentSortFunc :: forall (m :: * -> *).
    (HasCallStack, MonadIO m) =>
    FunPtr C_RecentSortFunc
    -> RecentInfo -> RecentInfo -> Ptr () -> m Int32
    dynamic_RecentSortFunc FunPtr C_RecentSortFunc
    __funPtr RecentInfo
    a RecentInfo
    b Ptr ()
    userData = IO Int32 -> m Int32
    forall a. IO a -> m a
    forall (m :: * -> *) a. MonadIO m => IO a -> m a
    liftIO (IO Int32 -> m Int32) -> IO Int32 -> m Int32
    forall a b. (a -> b) -> a -> b
    $ do
        a' <- RecentInfo -> IO (Ptr RecentInfo)
    forall a. (HasCallStack, ManagedPtrNewtype a) => a -> IO (Ptr a)
    unsafeManagedPtrGetPtr RecentInfo
    a
        b' <- unsafeManagedPtrGetPtr b
        result <- (__dynamic_C_RecentSortFunc __funPtr) a' b' userData
        touchManagedPtr a
        touchManagedPtr b
        return result

    -- | Generate a function pointer callable from C code, from a `C_RecentSortFunc`.
    foreign import ccall "wrapper"
        mk_RecentSortFunc :: C_RecentSortFunc -> IO (FunPtr C_RecentSortFunc)

    -- | /No description available in the introspection data./
    type RecentSortFunc =
        Gtk.RecentInfo.RecentInfo
        -> Gtk.RecentInfo.RecentInfo
        -> IO Int32

    -- | A convenience synonym for @`Nothing` :: `Maybe` `RecentSortFunc`@.
    noRecentSortFunc :: Maybe RecentSortFunc
    noRecentSortFunc :: Maybe RecentSortFunc
    noRecentSortFunc = Maybe RecentSortFunc
    forall a. Maybe a
    Nothing

    -- | /No description available in the introspection data./
    type RecentSortFunc_WithClosures =
        Gtk.RecentInfo.RecentInfo
        -> Gtk.RecentInfo.RecentInfo
        -> Ptr ()
        -> IO Int32

    -- | A convenience synonym for @`Nothing` :: `Maybe` `RecentSortFunc_WithClosures`@.
    noRecentSortFunc_WithClosures :: Maybe RecentSortFunc_WithClosures
    noRecentSortFunc_WithClosures :: Maybe RecentSortFunc_WithClosures
    noRecentSortFunc_WithClosures = Maybe RecentSortFunc_WithClosures
    forall a. Maybe a
    Nothing

    -- | A simple wrapper that ignores the closure arguments.
    drop_closures_RecentSortFunc :: RecentSortFunc -> RecentSortFunc_WithClosures
    drop_closures_RecentSortFunc :: RecentSortFunc -> RecentSortFunc_WithClosures
    drop_closures_RecentSortFunc RecentSortFunc
    _f RecentInfo
    a RecentInfo
    b Ptr ()
    _ = RecentSortFunc
    _f RecentInfo
    a RecentInfo
    b

    -- | Wrap the callback into a `GClosure`.
    genClosure_RecentSortFunc :: MonadIO m => RecentSortFunc -> m (GClosure C_RecentSortFunc)
    genClosure_RecentSortFunc :: forall (m :: * -> *).
    MonadIO m =>
    RecentSortFunc -> m (GClosure C_RecentSortFunc)
    genClosure_RecentSortFunc RecentSortFunc
    cb = IO (GClosure C_RecentSortFunc) -> m (GClosure C_RecentSortFunc)
    forall a. IO a -> m a
    forall (m :: * -> *) a. MonadIO m => IO a -> m a
    liftIO (IO (GClosure C_RecentSortFunc) -> m (GClosure C_RecentSortFunc))
    -> IO (GClosure C_RecentSortFunc) -> m (GClosure C_RecentSortFunc)
    forall a b. (a -> b) -> a -> b
    $ do
        let cb' :: RecentSortFunc_WithClosures
    cb' = RecentSortFunc -> RecentSortFunc_WithClosures
    drop_closures_RecentSortFunc RecentSortFunc
    cb
        let cb'' :: C_RecentSortFunc
    cb'' = Maybe (Ptr (FunPtr C_RecentSortFunc))
    -> RecentSortFunc_WithClosures -> C_RecentSortFunc
    wrap_RecentSortFunc Maybe (Ptr (FunPtr C_RecentSortFunc))
    forall a. Maybe a
    Nothing RecentSortFunc_WithClosures
    cb'
        C_RecentSortFunc -> IO (FunPtr C_RecentSortFunc)
    mk_RecentSortFunc C_RecentSortFunc
    cb'' IO (FunPtr C_RecentSortFunc)
    -> (FunPtr C_RecentSortFunc -> IO (GClosure C_RecentSortFunc))
    -> IO (GClosure C_RecentSortFunc)
    forall a b. IO a -> (a -> IO b) -> IO b
    forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
    >>= FunPtr C_RecentSortFunc -> IO (GClosure C_RecentSortFunc)
    forall (m :: * -> *) a. MonadIO m => FunPtr a -> m (GClosure a)
    B.GClosure.newGClosure

    -- | Wrap a `RecentSortFunc` into a `C_RecentSortFunc`.
    wrap_RecentSortFunc ::
        Maybe (Ptr (FunPtr C_RecentSortFunc)) ->
        RecentSortFunc_WithClosures ->
        C_RecentSortFunc
    wrap_RecentSortFunc :: Maybe (Ptr (FunPtr C_RecentSortFunc))
    -> RecentSortFunc_WithClosures -> C_RecentSortFunc
    wrap_RecentSortFunc Maybe (Ptr (FunPtr C_RecentSortFunc))
    gi'funptrptr RecentSortFunc_WithClosures
    gi'cb Ptr RecentInfo
    a Ptr RecentInfo
    b Ptr ()
    userData = do
        Ptr RecentInfo -> (RecentInfo -> IO Int32) -> IO Int32
    forall a b.
    (HasCallStack, ManagedPtrNewtype a) =>
    Ptr a -> (a -> IO b) -> IO b
    B.ManagedPtr.withTransient  Ptr RecentInfo
    a ((RecentInfo -> IO Int32) -> IO Int32)
    -> (RecentInfo -> IO Int32) -> IO Int32
    forall a b. (a -> b) -> a -> b
    $ \RecentInfo
    a' -> do
            Ptr RecentInfo -> (RecentInfo -> IO Int32) -> IO Int32
    forall a b.
    (HasCallStack, ManagedPtrNewtype a) =>
    Ptr a -> (a -> IO b) -> IO b
    B.ManagedPtr.withTransient  Ptr RecentInfo
    b ((RecentInfo -> IO Int32) -> IO Int32)
    -> (RecentInfo -> IO Int32) -> IO Int32
    forall a b. (a -> b) -> a -> b
    $ \RecentInfo
    b' -> do
                result <- RecentSortFunc_WithClosures
    gi'cb  RecentInfo
    a' RecentInfo
    b' Ptr ()
    userData
                maybeReleaseFunPtr gi'funptrptr
                return result

    -- callback RecentFilterFunc
    {- Callable
      { returnType = Just (TBasicType TBoolean)
      , returnMayBeNull = False
      , returnTransfer = TransferNothing
      , returnDocumentation =
          Documentation
            { rawDocText = Just "%TRUE if the file should be displayed"
            , sinceVersion = Nothing
            }
      , args =
          [ Arg
              { argCName = "filter_info"
              , argType =
                  TInterface Name { namespace = "Gtk" , name = "RecentFilterInfo" }
              , argCType = Just "const GtkRecentFilterInfo*"
              , direction = DirectionIn
              , mayBeNull = False
              , argDoc =
                  Documentation
                    { rawDocText =
                        Just
                          "a #GtkRecentFilterInfo that is filled according\n to the @needed flags passed to gtk_recent_filter_add_custom()"
                    , sinceVersion = Nothing
                    }
              , argScope = ScopeTypeInvalid
              , argClosure = -1
              , argDestroy = -1
              , argCallerAllocates = False
              , argCallbackUserData = False
              , transfer = TransferNothing
              }
          , Arg
              { argCName = "user_data"
              , argType = TBasicType TPtr
              , argCType = Just "gpointer"
              , direction = DirectionIn
              , mayBeNull = True
              , argDoc =
                  Documentation
                    { rawDocText =
                        Just "user data passed to gtk_recent_filter_add_custom()"
                    , sinceVersion = Nothing
                    }
              , argScope = ScopeTypeInvalid
              , argClosure = -1
              , argDestroy = -1
              , argCallerAllocates = False
              , argCallbackUserData = True
              , transfer = TransferNothing
              }
          ]
      , skipReturn = False
      , callableThrows = False
      , callableDeprecated = Nothing
      , callableDocumentation =
          Documentation
            { rawDocText =
                Just
                  "The type of function that is used with custom filters,\nsee gtk_recent_filter_add_custom()."
            , sinceVersion = Nothing
            }
      , callableResolvable = Nothing
      }
    -}
    -- | Type for the callback on the (unwrapped) C side.
    type C_RecentFilterFunc =
        Ptr Gtk.RecentFilterInfo.RecentFilterInfo ->
        Ptr () ->
        IO CInt

    -- Args: [ Arg
    --           { argCName = "filter_info"
    --           , argType =
    --               TInterface Name { namespace = "Gtk" , name = "RecentFilterInfo" }
    --           , argCType = Just "const GtkRecentFilterInfo*"
    --           , direction = DirectionIn
    --           , mayBeNull = False
    --           , argDoc =
    --               Documentation
    --                 { rawDocText =
    --                     Just
    --                       "a #GtkRecentFilterInfo that is filled according\n to the @needed flags passed to gtk_recent_filter_add_custom()"
    --                 , sinceVersion = Nothing
    --                 }
    --           , argScope = ScopeTypeInvalid
    --           , argClosure = -1
    --           , argDestroy = -1
    --           , argCallerAllocates = False
    --           , argCallbackUserData = False
    --           , transfer = TransferNothing
    --           }
    --       , Arg
    --           { argCName = "user_data"
    --           , argType = TBasicType TPtr
    --           , argCType = Just "gpointer"
    --           , direction = DirectionIn
    --           , mayBeNull = True
    --           , argDoc =
    --               Documentation
    --                 { rawDocText =
    --                     Just "user data passed to gtk_recent_filter_add_custom()"
    --                 , sinceVersion = Nothing
    --                 }
    --           , argScope = ScopeTypeInvalid
    --           , argClosure = -1
    --           , argDestroy = -1
    --           , argCallerAllocates = False
    --           , argCallbackUserData = True
    --           , transfer = TransferNothing
    --           }
    --       ]
    -- Lengths: []
    -- returnType: Just (TBasicType TBoolean)
    -- throws : False
    -- Skip return : False

    foreign import ccall "dynamic" __dynamic_C_RecentFilterFunc :: FunPtr C_RecentFilterFunc -> C_RecentFilterFunc

    -- | Given a pointer to a foreign C function, wrap it into a function callable from Haskell.
    dynamic_RecentFilterFunc ::
        (B.CallStack.HasCallStack, MonadIO m) =>
        FunPtr C_RecentFilterFunc
        -> Gtk.RecentFilterInfo.RecentFilterInfo
        -- ^ /@filterInfo@/: a t'GI.Gtk.Structs.RecentFilterInfo.RecentFilterInfo' that is filled according
        --  to the /@needed@/ flags passed to 'GI.Gtk.Objects.RecentFilter.recentFilterAddCustom'
        -> Ptr ()
        -- ^ /@userData@/: user data passed to 'GI.Gtk.Objects.RecentFilter.recentFilterAddCustom'
        -> m Bool
        -- ^ __Returns:__ 'P.True' if the file should be displayed
    dynamic_RecentFilterFunc :: forall (m :: * -> *).
    (HasCallStack, MonadIO m) =>
    FunPtr C_RecentFilterFunc -> RecentFilterInfo -> Ptr () -> m Bool
    dynamic_RecentFilterFunc FunPtr C_RecentFilterFunc
    __funPtr RecentFilterInfo
    filterInfo Ptr ()
    userData = IO Bool -> m Bool
    forall a. IO a -> m a
    forall (m :: * -> *) a. MonadIO m => IO a -> m a
    liftIO (IO Bool -> m Bool) -> IO Bool -> m Bool
    forall a b. (a -> b) -> a -> b
    $ do
        filterInfo' <- RecentFilterInfo -> IO (Ptr RecentFilterInfo)
    forall a. (HasCallStack, ManagedPtrNewtype a) => a -> IO (Ptr a)
    unsafeManagedPtrGetPtr RecentFilterInfo
    filterInfo
        result <- (__dynamic_C_RecentFilterFunc __funPtr) filterInfo' userData
        let result' = (CInt -> CInt -> Bool
    forall a. Eq a => a -> a -> Bool
    /= CInt
    0) CInt
    result
        touchManagedPtr filterInfo
        return result'

    -- | Generate a function pointer callable from C code, from a `C_RecentFilterFunc`.
    foreign import ccall "wrapper"
        mk_RecentFilterFunc :: C_RecentFilterFunc -> IO (FunPtr C_RecentFilterFunc)

    -- | The type of function that is used with custom filters,
    -- see 'GI.Gtk.Objects.RecentFilter.recentFilterAddCustom'.
    type RecentFilterFunc =
        Gtk.RecentFilterInfo.RecentFilterInfo
        -- ^ /@filterInfo@/: a t'GI.Gtk.Structs.RecentFilterInfo.RecentFilterInfo' that is filled according
        --  to the /@needed@/ flags passed to 'GI.Gtk.Objects.RecentFilter.recentFilterAddCustom'
        -> IO Bool
        -- ^ __Returns:__ 'P.True' if the file should be displayed

    -- | A convenience synonym for @`Nothing` :: `Maybe` `RecentFilterFunc`@.
    noRecentFilterFunc :: Maybe RecentFilterFunc
    noRecentFilterFunc :: Maybe RecentFilterFunc
    noRecentFilterFunc = Maybe RecentFilterFunc
    forall a. Maybe a
    Nothing

    -- | The type of function that is used with custom filters,
    -- see 'GI.Gtk.Objects.RecentFilter.recentFilterAddCustom'.
    type RecentFilterFunc_WithClosures =
        Gtk.RecentFilterInfo.RecentFilterInfo
        -- ^ /@filterInfo@/: a t'GI.Gtk.Structs.RecentFilterInfo.RecentFilterInfo' that is filled according
        --  to the /@needed@/ flags passed to 'GI.Gtk.Objects.RecentFilter.recentFilterAddCustom'
        -> Ptr ()
        -- ^ /@userData@/: user data passed to 'GI.Gtk.Objects.RecentFilter.recentFilterAddCustom'
        -> IO Bool
        -- ^ __Returns:__ 'P.True' if the file should be displayed

    -- | A convenience synonym for @`Nothing` :: `Maybe` `RecentFilterFunc_WithClosures`@.
    noRecentFilterFunc_WithClosures :: Maybe RecentFilterFunc_WithClosures
    noRecentFilterFunc_WithClosures :: Maybe RecentFilterFunc_WithClosures
    noRecentFilterFunc_WithClosures = Maybe RecentFilterFunc_WithClosures
    forall a. Maybe a
    Nothing

    -- | A simple wrapper that ignores the closure arguments.
    drop_closures_RecentFilterFunc :: RecentFilterFunc -> RecentFilterFunc_WithClosures
    drop_closures_RecentFilterFunc :: RecentFilterFunc -> RecentFilterFunc_WithClosures
    drop_closures_RecentFilterFunc RecentFilterFunc
    _f RecentFilterInfo
    filterInfo Ptr ()
    _ = RecentFilterFunc
    _f RecentFilterInfo
    filterInfo

    -- | Wrap the callback into a `GClosure`.
    genClosure_RecentFilterFunc :: MonadIO m => RecentFilterFunc -> m (GClosure C_RecentFilterFunc)
    genClosure_RecentFilterFunc :: forall (m :: * -> *).
    MonadIO m =>
    RecentFilterFunc -> m (GClosure C_RecentFilterFunc)
    genClosure_RecentFilterFunc RecentFilterFunc
    cb = IO (GClosure C_RecentFilterFunc) -> m (GClosure C_RecentFilterFunc)
    forall a. IO a -> m a
    forall (m :: * -> *) a. MonadIO m => IO a -> m a
    liftIO (IO (GClosure C_RecentFilterFunc)
     -> m (GClosure C_RecentFilterFunc))
    -> IO (GClosure C_RecentFilterFunc)
    -> m (GClosure C_RecentFilterFunc)
    forall a b. (a -> b) -> a -> b
    $ do
        let cb' :: RecentFilterFunc_WithClosures
    cb' = RecentFilterFunc -> RecentFilterFunc_WithClosures
    drop_closures_RecentFilterFunc RecentFilterFunc
    cb
        let cb'' :: C_RecentFilterFunc
    cb'' = Maybe (Ptr (FunPtr C_RecentFilterFunc))
    -> RecentFilterFunc_WithClosures -> C_RecentFilterFunc
    wrap_RecentFilterFunc Maybe (Ptr (FunPtr C_RecentFilterFunc))
    forall a. Maybe a
    Nothing RecentFilterFunc_WithClosures
    cb'
        C_RecentFilterFunc -> IO (FunPtr C_RecentFilterFunc)
    mk_RecentFilterFunc C_RecentFilterFunc
    cb'' IO (FunPtr C_RecentFilterFunc)
    -> (FunPtr C_RecentFilterFunc -> IO (GClosure C_RecentFilterFunc))
    -> IO (GClosure C_RecentFilterFunc)
    forall a b. IO a -> (a -> IO b) -> IO b
    forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
    >>= FunPtr C_RecentFilterFunc -> IO (GClosure C_RecentFilterFunc)
    forall (m :: * -> *) a. MonadIO m => FunPtr a -> m (GClosure a)
    B.GClosure.newGClosure

    -- | Wrap a `RecentFilterFunc` into a `C_RecentFilterFunc`.
    wrap_RecentFilterFunc ::
        Maybe (Ptr (FunPtr C_RecentFilterFunc)) ->
        RecentFilterFunc_WithClosures ->
        C_RecentFilterFunc
    wrap_RecentFilterFunc :: Maybe (Ptr (FunPtr C_RecentFilterFunc))
    -> RecentFilterFunc_WithClosures -> C_RecentFilterFunc
    wrap_RecentFilterFunc Maybe (Ptr (FunPtr C_RecentFilterFunc))
    gi'funptrptr RecentFilterFunc_WithClosures
    gi'cb Ptr RecentFilterInfo
    filterInfo Ptr ()
    userData = do
        filterInfo' <- ((ManagedPtr RecentFilterInfo -> RecentFilterInfo)
    -> Ptr RecentFilterInfo -> IO RecentFilterInfo
    forall a.
    (HasCallStack, BoxedPtr a) =>
    (ManagedPtr a -> a) -> Ptr a -> IO a
    newPtr ManagedPtr RecentFilterInfo -> RecentFilterInfo
    Gtk.RecentFilterInfo.RecentFilterInfo) Ptr RecentFilterInfo
    filterInfo
        result <- gi'cb  filterInfo' userData
        maybeReleaseFunPtr gi'funptrptr
        let result' = (Int -> CInt
    forall a b. (Integral a, Num b) => a -> b
    P.fromIntegral (Int -> CInt) -> (Bool -> Int) -> Bool -> CInt
    forall b c a. (b -> c) -> (a -> b) -> a -> c
    . Bool -> Int
    forall a. Enum a => a -> Int
    P.fromEnum) Bool
    result
        return result'

    -- callback RcPropertyParser
    {- Callable
      { returnType = Just (TBasicType TBoolean)
      , returnMayBeNull = False
      , returnTransfer = TransferNothing
      , returnDocumentation =
          Documentation { rawDocText = Nothing , sinceVersion = Nothing }
      , args =
          [ Arg
              { argCName = "pspec"
              , argType = TParamSpec
              , argCType = Just "const GParamSpec*"
              , direction = DirectionIn
              , mayBeNull = False
              , argDoc =
                  Documentation { rawDocText = Nothing , sinceVersion = Nothing }
              , argScope = ScopeTypeInvalid
              , argClosure = -1
              , argDestroy = -1
              , argCallerAllocates = False
              , argCallbackUserData = False
              , transfer = TransferNothing
              }
          , Arg
              { argCName = "rc_string"
              , argType =
                  TInterface Name { namespace = "GLib" , name = "String" }
              , argCType = Just "const GString*"
              , direction = DirectionIn
              , mayBeNull = False
              , argDoc =
                  Documentation { rawDocText = Nothing , sinceVersion = Nothing }
              , argScope = ScopeTypeInvalid
              , argClosure = -1
              , argDestroy = -1
              , argCallerAllocates = False
              , argCallbackUserData = False
              , transfer = TransferNothing
              }
          , Arg
              { argCName = "property_value"
              , argType = TGValue
              , argCType = Just "GValue*"
              , direction = DirectionIn
              , mayBeNull = False
              , argDoc =
                  Documentation { rawDocText = Nothing , sinceVersion = Nothing }
              , argScope = ScopeTypeInvalid
              , argClosure = -1
              , argDestroy = -1
              , argCallerAllocates = False
              , argCallbackUserData = False
              , transfer = TransferNothing
              }
          ]
      , skipReturn = False
      , callableThrows = False
      , callableDeprecated = Nothing
      , callableDocumentation =
          Documentation { rawDocText = Nothing , sinceVersion = Nothing }
      , callableResolvable = Nothing
      }
    -}
    -- | Type for the callback on the (unwrapped) C side.
    type C_RcPropertyParser =
        Ptr GParamSpec ->
        Ptr GLib.String.String ->
        Ptr GValue ->
        IO CInt

    -- Args: [ Arg
    --           { argCName = "pspec"
    --           , argType = TParamSpec
    --           , argCType = Just "const GParamSpec*"
    --           , direction = DirectionIn
    --           , mayBeNull = False
    --           , argDoc =
    --               Documentation { rawDocText = Nothing , sinceVersion = Nothing }
    --           , argScope = ScopeTypeInvalid
    --           , argClosure = -1
    --           , argDestroy = -1
    --           , argCallerAllocates = False
    --           , argCallbackUserData = False
    --           , transfer = TransferNothing
    --           }
    --       , Arg
    --           { argCName = "rc_string"
    --           , argType =
    --               TInterface Name { namespace = "GLib" , name = "String" }
    --           , argCType = Just "const GString*"
    --           , direction = DirectionIn
    --           , mayBeNull = False
    --           , argDoc =
    --               Documentation { rawDocText = Nothing , sinceVersion = Nothing }
    --           , argScope = ScopeTypeInvalid
    --           , argClosure = -1
    --           , argDestroy = -1
    --           , argCallerAllocates = False
    --           , argCallbackUserData = False
    --           , transfer = TransferNothing
    --           }
    --       , Arg
    --           { argCName = "property_value"
    --           , argType = TGValue
    --           , argCType = Just "GValue*"
    --           , direction = DirectionIn
    --           , mayBeNull = False
    --           , argDoc =
    --               Documentation { rawDocText = Nothing , sinceVersion = Nothing }
    --           , argScope = ScopeTypeInvalid
    --           , argClosure = -1
    --           , argDestroy = -1
    --           , argCallerAllocates = False
    --           , argCallbackUserData = False
    --           , transfer = TransferNothing
    --           }
    --       ]
    -- Lengths: []
    -- returnType: Just (TBasicType TBoolean)
    -- throws : False
    -- Skip return : False

    foreign import ccall "dynamic" __dynamic_C_RcPropertyParser :: FunPtr C_RcPropertyParser -> C_RcPropertyParser

    -- | Given a pointer to a foreign C function, wrap it into a function callable from Haskell.
    dynamic_RcPropertyParser ::
        (B.CallStack.HasCallStack, MonadIO m) =>
        FunPtr C_RcPropertyParser
        -> GParamSpec
        -> GLib.String.String
        -> GValue
        -> m Bool
    dynamic_RcPropertyParser :: forall (m :: * -> *).
    (HasCallStack, MonadIO m) =>
    FunPtr C_RcPropertyParser
    -> GParamSpec -> String -> GValue -> m Bool
    dynamic_RcPropertyParser FunPtr C_RcPropertyParser
    __funPtr GParamSpec
    pspec String
    rcString GValue
    propertyValue = IO Bool -> m Bool
    forall a. IO a -> m a
    forall (m :: * -> *) a. MonadIO m => IO a -> m a
    liftIO (IO Bool -> m Bool) -> IO Bool -> m Bool
    forall a b. (a -> b) -> a -> b
    $ do
        pspec' <- GParamSpec -> IO (Ptr GParamSpec)
    forall a. (HasCallStack, ManagedPtrNewtype a) => a -> IO (Ptr a)
    unsafeManagedPtrGetPtr GParamSpec
    pspec
        rcString' <- unsafeManagedPtrGetPtr rcString
        propertyValue' <- unsafeManagedPtrGetPtr propertyValue
        result <- (__dynamic_C_RcPropertyParser __funPtr) pspec' rcString' propertyValue'
        let result' = (CInt -> CInt -> Bool
    forall a. Eq a => a -> a -> Bool
    /= CInt
    0) CInt
    result
        touchManagedPtr pspec
        touchManagedPtr rcString
        touchManagedPtr propertyValue
        return result'

    -- | Generate a function pointer callable from C code, from a `C_RcPropertyParser`.
    foreign import ccall "wrapper"
        mk_RcPropertyParser :: C_RcPropertyParser -> IO (FunPtr C_RcPropertyParser)

    -- | /No description available in the introspection data./
    type RcPropertyParser =
        GParamSpec
        -> GLib.String.String
        -> GValue
        -> IO Bool

    -- | A convenience synonym for @`Nothing` :: `Maybe` `RcPropertyParser`@.
    noRcPropertyParser :: Maybe RcPropertyParser
    noRcPropertyParser :: Maybe RcPropertyParser
    noRcPropertyParser = Maybe RcPropertyParser
    forall a. Maybe a
    Nothing

    -- | Wrap the callback into a `GClosure`.
    genClosure_RcPropertyParser :: MonadIO m => RcPropertyParser -> m (GClosure C_RcPropertyParser)
    genClosure_RcPropertyParser :: forall (m :: * -> *).
    MonadIO m =>
    RcPropertyParser -> m (GClosure C_RcPropertyParser)
    genClosure_RcPropertyParser RcPropertyParser
    cb = IO (GClosure C_RcPropertyParser) -> m (GClosure C_RcPropertyParser)
    forall a. IO a -> m a
    forall (m :: * -> *) a. MonadIO m => IO a -> m a
    liftIO (IO (GClosure C_RcPropertyParser)
     -> m (GClosure C_RcPropertyParser))
    -> IO (GClosure C_RcPropertyParser)
    -> m (GClosure C_RcPropertyParser)
    forall a b. (a -> b) -> a -> b
    $ do
        let cb' :: C_RcPropertyParser
    cb' = Maybe (Ptr (FunPtr C_RcPropertyParser))
    -> RcPropertyParser -> C_RcPropertyParser
    wrap_RcPropertyParser Maybe (Ptr (FunPtr C_RcPropertyParser))
    forall a. Maybe a
    Nothing RcPropertyParser
    cb
        C_RcPropertyParser -> IO (FunPtr C_RcPropertyParser)
    mk_RcPropertyParser C_RcPropertyParser
    cb' IO (FunPtr C_RcPropertyParser)
    -> (FunPtr C_RcPropertyParser -> IO (GClosure C_RcPropertyParser))
    -> IO (GClosure C_RcPropertyParser)
    forall a b. IO a -> (a -> IO b) -> IO b
    forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
    >>= FunPtr C_RcPropertyParser -> IO (GClosure C_RcPropertyParser)
    forall (m :: * -> *) a. MonadIO m => FunPtr a -> m (GClosure a)
    B.GClosure.newGClosure

    -- | Wrap a `RcPropertyParser` into a `C_RcPropertyParser`.
    wrap_RcPropertyParser ::
        Maybe (Ptr (FunPtr C_RcPropertyParser)) ->
        RcPropertyParser ->
        C_RcPropertyParser
    wrap_RcPropertyParser :: Maybe (Ptr (FunPtr C_RcPropertyParser))
    -> RcPropertyParser -> C_RcPropertyParser
    wrap_RcPropertyParser Maybe (Ptr (FunPtr C_RcPropertyParser))
    gi'funptrptr RcPropertyParser
    gi'cb Ptr GParamSpec
    pspec Ptr String
    rcString Ptr GValue
    propertyValue = do
        pspec' <- Ptr GParamSpec -> IO GParamSpec
    B.GParamSpec.newGParamSpecFromPtr Ptr GParamSpec
    pspec
        B.ManagedPtr.withTransient  rcString $ \String
    rcString' -> do
            propertyValue' <- Ptr GValue -> IO GValue
    B.GValue.newGValueFromPtr Ptr GValue
    propertyValue
            result <- gi'cb  pspec' rcString' propertyValue'
            maybeReleaseFunPtr gi'funptrptr
            let result' = (Int -> CInt
    forall a b. (Integral a, Num b) => a -> b
    P.fromIntegral (Int -> CInt) -> (Bool -> Int) -> Bool -> CInt
    forall b c a. (b -> c) -> (a -> b) -> a -> c
    . Bool -> Int
    forall a. Enum a => a -> Int
    P.fromEnum) Bool
    result
            return result'

    -- callback PrintSettingsFunc
    {- Callable
      { returnType = Nothing
      , returnMayBeNull = False
      , returnTransfer = TransferNothing
      , returnDocumentation =
          Documentation { rawDocText = Nothing , sinceVersion = Nothing }
      , args =
          [ Arg
              { argCName = "key"
              , argType = TBasicType TUTF8
              , argCType = Just "const gchar*"
              , direction = DirectionIn
              , mayBeNull = False
              , argDoc =
                  Documentation { rawDocText = Nothing , sinceVersion = Nothing }
              , argScope = ScopeTypeInvalid
              , argClosure = -1
              , argDestroy = -1
              , argCallerAllocates = False
              , argCallbackUserData = False
              , transfer = TransferNothing
              }
          , Arg
              { argCName = "value"
              , argType = TBasicType TUTF8
              , argCType = Just "const gchar*"
              , direction = DirectionIn
              , mayBeNull = False
              , argDoc =
                  Documentation { rawDocText = Nothing , sinceVersion = Nothing }
              , argScope = ScopeTypeInvalid
              , argClosure = -1
              , argDestroy = -1
              , argCallerAllocates = False
              , argCallbackUserData = False
              , transfer = TransferNothing
              }
          , Arg
              { argCName = "user_data"
              , argType = TBasicType TPtr
              , argCType = Just "gpointer"
              , direction = DirectionIn
              , mayBeNull = True
              , argDoc =
                  Documentation { rawDocText = Nothing , sinceVersion = Nothing }
              , argScope = ScopeTypeInvalid
              , argClosure = -1
              , argDestroy = -1
              , argCallerAllocates = False
              , argCallbackUserData = True
              , transfer = TransferNothing
              }
          ]
      , skipReturn = False
      , callableThrows = False
      , callableDeprecated = Nothing
      , callableDocumentation =
          Documentation { rawDocText = Nothing , sinceVersion = Nothing }
      , callableResolvable = Nothing
      }
    -}
    -- | Type for the callback on the (unwrapped) C side.
    type C_PrintSettingsFunc =
        CString ->
        CString ->
        Ptr () ->
        IO ()

    -- Args: [ Arg
    --           { argCName = "key"
    --           , argType = TBasicType TUTF8
    --           , argCType = Just "const gchar*"
    --           , direction = DirectionIn
    --           , mayBeNull = False
    --           , argDoc =
    --               Documentation { rawDocText = Nothing , sinceVersion = Nothing }
    --           , argScope = ScopeTypeInvalid
    --           , argClosure = -1
    --           , argDestroy = -1
    --           , argCallerAllocates = False
    --           , argCallbackUserData = False
    --           , transfer = TransferNothing
    --           }
    --       , Arg
    --           { argCName = "value"
    --           , argType = TBasicType TUTF8
    --           , argCType = Just "const gchar*"
    --           , direction = DirectionIn
    --           , mayBeNull = False
    --           , argDoc =
    --               Documentation { rawDocText = Nothing , sinceVersion = Nothing }
    --           , argScope = ScopeTypeInvalid
    --           , argClosure = -1
    --           , argDestroy = -1
    --           , argCallerAllocates = False
    --           , argCallbackUserData = False
    --           , transfer = TransferNothing
    --           }
    --       , Arg
    --           { argCName = "user_data"
    --           , argType = TBasicType TPtr
    --           , argCType = Just "gpointer"
    --           , direction = DirectionIn
    --           , mayBeNull = True
    --           , argDoc =
    --               Documentation { rawDocText = Nothing , sinceVersion = Nothing }
    --           , argScope = ScopeTypeInvalid
    --           , argClosure = -1
    --           , argDestroy = -1
    --           , argCallerAllocates = False
    --           , argCallbackUserData = True
    --           , transfer = TransferNothing
    --           }
    --       ]
    -- Lengths: []
    -- returnType: Nothing
    -- throws : False
    -- Skip return : False

    foreign import ccall "dynamic" __dynamic_C_PrintSettingsFunc :: FunPtr C_PrintSettingsFunc -> C_PrintSettingsFunc

    -- | Given a pointer to a foreign C function, wrap it into a function callable from Haskell.
    dynamic_PrintSettingsFunc ::
        (B.CallStack.HasCallStack, MonadIO m) =>
        FunPtr C_PrintSettingsFunc
        -> T.Text
        -> T.Text
        -> Ptr ()
        -> m ()
    dynamic_PrintSettingsFunc :: forall (m :: * -> *).
    (HasCallStack, MonadIO m) =>
    FunPtr C_PrintSettingsFunc -> Text -> Text -> Ptr () -> m ()
    dynamic_PrintSettingsFunc FunPtr C_PrintSettingsFunc
    __funPtr Text
    key Text
    value Ptr ()
    userData = IO () -> m ()
    forall a. IO a -> m a
    forall (m :: * -> *) a. MonadIO m => IO a -> m a
    liftIO (IO () -> m ()) -> IO () -> m ()
    forall a b. (a -> b) -> a -> b
    $ do
        key' <- Text -> IO CString
    textToCString Text
    key
        value' <- textToCString value
        (__dynamic_C_PrintSettingsFunc __funPtr) key' value' userData
        freeMem key'
        freeMem value'
        return ()

    -- | Generate a function pointer callable from C code, from a `C_PrintSettingsFunc`.
    foreign import ccall "wrapper"
        mk_PrintSettingsFunc :: C_PrintSettingsFunc -> IO (FunPtr C_PrintSettingsFunc)

    -- | /No description available in the introspection data./
    type PrintSettingsFunc =
        T.Text
        -> T.Text
        -> IO ()

    -- | A convenience synonym for @`Nothing` :: `Maybe` `PrintSettingsFunc`@.
    noPrintSettingsFunc :: Maybe PrintSettingsFunc
    noPrintSettingsFunc :: Maybe PrintSettingsFunc
    noPrintSettingsFunc = Maybe PrintSettingsFunc
    forall a. Maybe a
    Nothing

    -- | /No description available in the introspection data./
    type PrintSettingsFunc_WithClosures =
        T.Text
        -> T.Text
        -> Ptr ()
        -> IO ()

    -- | A convenience synonym for @`Nothing` :: `Maybe` `PrintSettingsFunc_WithClosures`@.
    noPrintSettingsFunc_WithClosures :: Maybe PrintSettingsFunc_WithClosures
    noPrintSettingsFunc_WithClosures :: Maybe PrintSettingsFunc_WithClosures
    noPrintSettingsFunc_WithClosures = Maybe PrintSettingsFunc_WithClosures
    forall a. Maybe a
    Nothing

    -- | A simple wrapper that ignores the closure arguments.
    drop_closures_PrintSettingsFunc :: PrintSettingsFunc -> PrintSettingsFunc_WithClosures
    drop_closures_PrintSettingsFunc :: PrintSettingsFunc -> PrintSettingsFunc_WithClosures
    drop_closures_PrintSettingsFunc PrintSettingsFunc
    _f Text
    key Text
    value Ptr ()
    _ = PrintSettingsFunc
    _f Text
    key Text
    value

    -- | Wrap the callback into a `GClosure`.
    genClosure_PrintSettingsFunc :: MonadIO m => PrintSettingsFunc -> m (GClosure C_PrintSettingsFunc)
    genClosure_PrintSettingsFunc :: forall (m :: * -> *).
    MonadIO m =>
    PrintSettingsFunc -> m (GClosure C_PrintSettingsFunc)
    genClosure_PrintSettingsFunc PrintSettingsFunc
    cb = IO (GClosure C_PrintSettingsFunc)
    -> m (GClosure C_PrintSettingsFunc)
    forall a. IO a -> m a
    forall (m :: * -> *) a. MonadIO m => IO a -> m a
    liftIO (IO (GClosure C_PrintSettingsFunc)
     -> m (GClosure C_PrintSettingsFunc))
    -> IO (GClosure C_PrintSettingsFunc)
    -> m (GClosure C_PrintSettingsFunc)
    forall a b. (a -> b) -> a -> b
    $ do
        let cb' :: PrintSettingsFunc_WithClosures
    cb' = PrintSettingsFunc -> PrintSettingsFunc_WithClosures
    drop_closures_PrintSettingsFunc PrintSettingsFunc
    cb
        let cb'' :: C_PrintSettingsFunc
    cb'' = Maybe (Ptr (FunPtr C_PrintSettingsFunc))
    -> PrintSettingsFunc_WithClosures -> C_PrintSettingsFunc
    wrap_PrintSettingsFunc Maybe (Ptr (FunPtr C_PrintSettingsFunc))
    forall a. Maybe a
    Nothing PrintSettingsFunc_WithClosures
    cb'
        C_PrintSettingsFunc -> IO (FunPtr C_PrintSettingsFunc)
    mk_PrintSettingsFunc C_PrintSettingsFunc
    cb'' IO (FunPtr C_PrintSettingsFunc)
    -> (FunPtr C_PrintSettingsFunc
        -> IO (GClosure C_PrintSettingsFunc))
    -> IO (GClosure C_PrintSettingsFunc)
    forall a b. IO a -> (a -> IO b) -> IO b
    forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
    >>= FunPtr C_PrintSettingsFunc -> IO (GClosure C_PrintSettingsFunc)
    forall (m :: * -> *) a. MonadIO m => FunPtr a -> m (GClosure a)
    B.GClosure.newGClosure

    -- | Wrap a `PrintSettingsFunc` into a `C_PrintSettingsFunc`.
    wrap_PrintSettingsFunc ::
        Maybe (Ptr (FunPtr C_PrintSettingsFunc)) ->
        PrintSettingsFunc_WithClosures ->
        C_PrintSettingsFunc
    wrap_PrintSettingsFunc :: Maybe (Ptr (FunPtr C_PrintSettingsFunc))
    -> PrintSettingsFunc_WithClosures -> C_PrintSettingsFunc
    wrap_PrintSettingsFunc Maybe (Ptr (FunPtr C_PrintSettingsFunc))
    gi'funptrptr PrintSettingsFunc_WithClosures
    gi'cb CString
    key CString
    value Ptr ()
    userData = do
        key' <- HasCallStack => CString -> IO Text
    CString -> IO Text
    cstringToText CString
    key
        value' <- cstringToText value
        gi'cb  key' value' userData
        maybeReleaseFunPtr gi'funptrptr

    -- callback PageSetupDoneFunc
    {- Callable
      { returnType = Nothing
      , returnMayBeNull = False
      , returnTransfer = TransferNothing
      , returnDocumentation =
          Documentation { rawDocText = Nothing , sinceVersion = Nothing }
      , args =
          [ Arg
              { argCName = "page_setup"
              , argType =
                  TInterface Name { namespace = "Gtk" , name = "PageSetup" }
              , argCType = Just "GtkPageSetup*"
              , direction = DirectionIn
              , mayBeNull = False
              , argDoc =
                  Documentation
                    { rawDocText = Just "the #GtkPageSetup that has been"
                    , sinceVersion = Nothing
                    }
              , argScope = ScopeTypeInvalid
              , argClosure = -1
              , argDestroy = -1
              , argCallerAllocates = False
              , argCallbackUserData = False
              , transfer = TransferNothing
              }
          , Arg
              { argCName = "data"
              , argType = TBasicType TPtr
              , argCType = Just "gpointer"
              , direction = DirectionIn
              , mayBeNull = True
              , argDoc =
                  Documentation
                    { rawDocText =
                        Just
                          "user data that has been passed to\n    gtk_print_run_page_setup_dialog_async()"
                    , sinceVersion = Nothing
                    }
              , argScope = ScopeTypeInvalid
              , argClosure = -1
              , argDestroy = -1
              , argCallerAllocates = False
              , argCallbackUserData = True
              , transfer = TransferNothing
              }
          ]
      , skipReturn = False
      , callableThrows = False
      , callableDeprecated = Nothing
      , callableDocumentation =
          Documentation
            { rawDocText =
                Just
                  "The type of function that is passed to\ngtk_print_run_page_setup_dialog_async().\n\nThis function will be called when the page setup dialog\nis dismissed, and also serves as destroy notify for @data."
            , sinceVersion = Nothing
            }
      , callableResolvable = Nothing
      }
    -}
    -- | Type for the callback on the (unwrapped) C side.
    type C_PageSetupDoneFunc =
        Ptr Gtk.PageSetup.PageSetup ->
        Ptr () ->
        IO ()

    -- Args: [ Arg
    --           { argCName = "page_setup"
    --           , argType =
    --               TInterface Name { namespace = "Gtk" , name = "PageSetup" }
    --           , argCType = Just "GtkPageSetup*"
    --           , direction = DirectionIn
    --           , mayBeNull = False
    --           , argDoc =
    --               Documentation
    --                 { rawDocText = Just "the #GtkPageSetup that has been"
    --                 , sinceVersion = Nothing
    --                 }
    --           , argScope = ScopeTypeInvalid
    --           , argClosure = -1
    --           , argDestroy = -1
    --           , argCallerAllocates = False
    --           , argCallbackUserData = False
    --           , transfer = TransferNothing
    --           }
    --       , Arg
    --           { argCName = "data"
    --           , argType = TBasicType TPtr
    --           , argCType = Just "gpointer"
    --           , direction = DirectionIn
    --           , mayBeNull = True
    --           , argDoc =
    --               Documentation
    --                 { rawDocText =
    --                     Just
    --                       "user data that has been passed to\n    gtk_print_run_page_setup_dialog_async()"
    --                 , sinceVersion = Nothing
    --                 }
    --           , argScope = ScopeTypeInvalid
    --           , argClosure = -1
    --           , argDestroy = -1
    --           , argCallerAllocates = False
    --           , argCallbackUserData = True
    --           , transfer = TransferNothing
    --           }
    --       ]
    -- Lengths: []
    -- returnType: Nothing
    -- throws : False
    -- Skip return : False

    foreign import ccall "dynamic" __dynamic_C_PageSetupDoneFunc :: FunPtr C_PageSetupDoneFunc -> C_PageSetupDoneFunc

    -- | Given a pointer to a foreign C function, wrap it into a function callable from Haskell.
    dynamic_PageSetupDoneFunc ::
        (B.CallStack.HasCallStack, MonadIO m, Gtk.PageSetup.IsPageSetup a) =>
        FunPtr C_PageSetupDoneFunc
        -> a
        -- ^ /@pageSetup@/: the t'GI.Gtk.Objects.PageSetup.PageSetup' that has been
        -> Ptr ()
        -- ^ /@data@/: user data that has been passed to
        --     'GI.Gtk.Functions.printRunPageSetupDialogAsync'
        -> m ()
    dynamic_PageSetupDoneFunc :: forall (m :: * -> *) a.
    (HasCallStack, MonadIO m, IsPageSetup a) =>
    FunPtr C_PageSetupDoneFunc -> a -> Ptr () -> m ()
    dynamic_PageSetupDoneFunc FunPtr C_PageSetupDoneFunc
    __funPtr a
    pageSetup Ptr ()
    data_ = IO () -> m ()
    forall a. IO a -> m a
    forall (m :: * -> *) a. MonadIO m => IO a -> m a
    liftIO (IO () -> m ()) -> IO () -> m ()
    forall a b. (a -> b) -> a -> b
    $ do
        pageSetup' <- a -> IO (Ptr PageSetup)
    forall a b. (HasCallStack, ManagedPtrNewtype a) => a -> IO (Ptr b)
    unsafeManagedPtrCastPtr a
    pageSetup
        (__dynamic_C_PageSetupDoneFunc __funPtr) pageSetup' data_
        touchManagedPtr pageSetup
        return ()

    -- | Generate a function pointer callable from C code, from a `C_PageSetupDoneFunc`.
    foreign import ccall "wrapper"
        mk_PageSetupDoneFunc :: C_PageSetupDoneFunc -> IO (FunPtr C_PageSetupDoneFunc)

    -- | The type of function that is passed to
    -- 'GI.Gtk.Functions.printRunPageSetupDialogAsync'.
    --
    -- This function will be called when the page setup dialog
    -- is dismissed, and also serves as destroy notify for /@data@/.
    type PageSetupDoneFunc =
        Gtk.PageSetup.PageSetup
        -- ^ /@pageSetup@/: the t'GI.Gtk.Objects.PageSetup.PageSetup' that has been
        -> IO ()

    -- | A convenience synonym for @`Nothing` :: `Maybe` `PageSetupDoneFunc`@.
    noPageSetupDoneFunc :: Maybe PageSetupDoneFunc
    noPageSetupDoneFunc :: Maybe PageSetupDoneFunc
    noPageSetupDoneFunc = Maybe PageSetupDoneFunc
    forall a. Maybe a
    Nothing

    -- | The type of function that is passed to
    -- 'GI.Gtk.Functions.printRunPageSetupDialogAsync'.
    --
    -- This function will be called when the page setup dialog
    -- is dismissed, and also serves as destroy notify for /@data@/.
    type PageSetupDoneFunc_WithClosures =
        Gtk.PageSetup.PageSetup
        -- ^ /@pageSetup@/: the t'GI.Gtk.Objects.PageSetup.PageSetup' that has been
        -> Ptr ()
        -- ^ /@data@/: user data that has been passed to
        --     'GI.Gtk.Functions.printRunPageSetupDialogAsync'
        -> IO ()

    -- | A convenience synonym for @`Nothing` :: `Maybe` `PageSetupDoneFunc_WithClosures`@.
    noPageSetupDoneFunc_WithClosures :: Maybe PageSetupDoneFunc_WithClosures
    noPageSetupDoneFunc_WithClosures :: Maybe PageSetupDoneFunc_WithClosures
    noPageSetupDoneFunc_WithClosures = Maybe PageSetupDoneFunc_WithClosures
    forall a. Maybe a
    Nothing

    -- | A simple wrapper that ignores the closure arguments.
    drop_closures_PageSetupDoneFunc :: PageSetupDoneFunc -> PageSetupDoneFunc_WithClosures
    drop_closures_PageSetupDoneFunc :: PageSetupDoneFunc -> PageSetupDoneFunc_WithClosures
    drop_closures_PageSetupDoneFunc PageSetupDoneFunc
    _f PageSetup
    pageSetup Ptr ()
    _ = PageSetupDoneFunc
    _f PageSetup
    pageSetup

    -- | Wrap the callback into a `GClosure`.
    genClosure_PageSetupDoneFunc :: MonadIO m => PageSetupDoneFunc -> m (GClosure C_PageSetupDoneFunc)
    genClosure_PageSetupDoneFunc :: forall (m :: * -> *).
    MonadIO m =>
    PageSetupDoneFunc -> m (GClosure C_PageSetupDoneFunc)
    genClosure_PageSetupDoneFunc PageSetupDoneFunc
    cb = IO (GClosure C_PageSetupDoneFunc)
    -> m (GClosure C_PageSetupDoneFunc)
    forall a. IO a -> m a
    forall (m :: * -> *) a. MonadIO m => IO a -> m a
    liftIO (IO (GClosure C_PageSetupDoneFunc)
     -> m (GClosure C_PageSetupDoneFunc))
    -> IO (GClosure C_PageSetupDoneFunc)
    -> m (GClosure C_PageSetupDoneFunc)
    forall a b. (a -> b) -> a -> b
    $ do
        let cb' :: PageSetupDoneFunc_WithClosures
    cb' = PageSetupDoneFunc -> PageSetupDoneFunc_WithClosures
    drop_closures_PageSetupDoneFunc PageSetupDoneFunc
    cb
        let cb'' :: C_PageSetupDoneFunc
    cb'' = Maybe (Ptr (FunPtr C_PageSetupDoneFunc))
    -> PageSetupDoneFunc_WithClosures -> C_PageSetupDoneFunc
    wrap_PageSetupDoneFunc Maybe (Ptr (FunPtr C_PageSetupDoneFunc))
    forall a. Maybe a
    Nothing PageSetupDoneFunc_WithClosures
    cb'
        C_PageSetupDoneFunc -> IO (FunPtr C_PageSetupDoneFunc)
    mk_PageSetupDoneFunc C_PageSetupDoneFunc
    cb'' IO (FunPtr C_PageSetupDoneFunc)
    -> (FunPtr C_PageSetupDoneFunc
        -> IO (GClosure C_PageSetupDoneFunc))
    -> IO (GClosure C_PageSetupDoneFunc)
    forall a b. IO a -> (a -> IO b) -> IO b
    forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
    >>= FunPtr C_PageSetupDoneFunc -> IO (GClosure C_PageSetupDoneFunc)
    forall (m :: * -> *) a. MonadIO m => FunPtr a -> m (GClosure a)
    B.GClosure.newGClosure

    -- | Wrap a `PageSetupDoneFunc` into a `C_PageSetupDoneFunc`.
    wrap_PageSetupDoneFunc ::
        Maybe (Ptr (FunPtr C_PageSetupDoneFunc)) ->
        PageSetupDoneFunc_WithClosures ->
        C_PageSetupDoneFunc
    wrap_PageSetupDoneFunc :: Maybe (Ptr (FunPtr C_PageSetupDoneFunc))
    -> PageSetupDoneFunc_WithClosures -> C_PageSetupDoneFunc
    wrap_PageSetupDoneFunc Maybe (Ptr (FunPtr C_PageSetupDoneFunc))
    gi'funptrptr PageSetupDoneFunc_WithClosures
    gi'cb Ptr PageSetup
    pageSetup Ptr ()
    data_ = do
        pageSetup' <- ((ManagedPtr PageSetup -> PageSetup)
    -> Ptr PageSetup -> IO PageSetup
    forall a b.
    (HasCallStack, GObject a, GObject b) =>
    (ManagedPtr a -> a) -> Ptr b -> IO a
    newObject ManagedPtr PageSetup -> PageSetup
    Gtk.PageSetup.PageSetup) Ptr PageSetup
    pageSetup
        gi'cb  pageSetup' data_
        maybeReleaseFunPtr gi'funptrptr

    -- callback ModuleInitFunc
    {- Callable
      { returnType = Nothing
      , returnMayBeNull = False
      , returnTransfer = TransferNothing
      , returnDocumentation =
          Documentation { rawDocText = Nothing , sinceVersion = Nothing }
      , args =
          [ Arg
              { argCName = "argc"
              , argType = TBasicType TInt
              , argCType = Just "gint*"
              , direction = DirectionIn
              , mayBeNull = True
              , argDoc =
                  Documentation
                    { rawDocText = Just "GTK+ always passes %NULL for this argument"
                    , sinceVersion = Nothing
                    }
              , argScope = ScopeTypeInvalid
              , argClosure = -1
              , argDestroy = -1
              , argCallerAllocates = False
              , argCallbackUserData = False
              , transfer = TransferNothing
              }
          , Arg
              { argCName = "argv"
              , argType = TCArray False (-1) 0 (TBasicType TUTF8)
              , argCType = Just "gchar***"
              , direction = DirectionIn
              , mayBeNull = True
              , argDoc =
                  Documentation
                    { rawDocText = Just "GTK+ always passes %NULL for this argument"
                    , sinceVersion = Nothing
                    }
              , argScope = ScopeTypeInvalid
              , argClosure = -1
              , argDestroy = -1
              , argCallerAllocates = False
              , argCallbackUserData = False
              , transfer = TransferNothing
              }
          ]
      , skipReturn = False
      , callableThrows = False
      , callableDeprecated = Nothing
      , callableDocumentation =
          Documentation
            { rawDocText =
                Just
                  "Each GTK+ module must have a function gtk_module_init() with this prototype.\nThis function is called after loading the module."
            , sinceVersion = Nothing
            }
      , callableResolvable = Nothing
      }
    -}
    -- | Type for the callback on the (unwrapped) C side.
    type C_ModuleInitFunc =
        Int32 ->
        Ptr CString ->
        IO ()

    -- Args: [ Arg
    --           { argCName = "argc"
    --           , argType = TBasicType TInt
    --           , argCType = Just "gint*"
    --           , direction = DirectionIn
    --           , mayBeNull = True
    --           , argDoc =
    --               Documentation
    --                 { rawDocText = Just "GTK+ always passes %NULL for this argument"
    --                 , sinceVersion = Nothing
    --                 }
    --           , argScope = ScopeTypeInvalid
    --           , argClosure = -1
    --           , argDestroy = -1
    --           , argCallerAllocates = False
    --           , argCallbackUserData = False
    --           , transfer = TransferNothing
    --           }
    --       , Arg
    --           { argCName = "argv"
    --           , argType = TCArray False (-1) 0 (TBasicType TUTF8)
    --           , argCType = Just "gchar***"
    --           , direction = DirectionIn
    --           , mayBeNull = True
    --           , argDoc =
    --               Documentation
    --                 { rawDocText = Just "GTK+ always passes %NULL for this argument"
    --                 , sinceVersion = Nothing
    --                 }
    --           , argScope = ScopeTypeInvalid
    --           , argClosure = -1
    --           , argDestroy = -1
    --           , argCallerAllocates = False
    --           , argCallbackUserData = False
    --           , transfer = TransferNothing
    --           }
    --       ]
    -- Lengths: [ Arg
    --              { argCName = "argc"
    --              , argType = TBasicType TInt
    --              , argCType = Just "gint*"
    --              , direction = DirectionIn
    --              , mayBeNull = True
    --              , argDoc =
    --                  Documentation
    --                    { rawDocText = Just "GTK+ always passes %NULL for this argument"
    --                    , sinceVersion = Nothing
    --                    }
    --              , argScope = ScopeTypeInvalid
    --              , argClosure = -1
    --              , argDestroy = -1
    --              , argCallerAllocates = False
    --              , argCallbackUserData = False
    --              , transfer = TransferNothing
    --              }
    --          ]
    -- returnType: Nothing
    -- throws : False
    -- Skip return : False

    foreign import ccall "dynamic" __dynamic_C_ModuleInitFunc :: FunPtr C_ModuleInitFunc -> C_ModuleInitFunc

    -- | Given a pointer to a foreign C function, wrap it into a function callable from Haskell.
    dynamic_ModuleInitFunc ::
        (B.CallStack.HasCallStack, MonadIO m) =>
        FunPtr C_ModuleInitFunc
        -> Maybe ([T.Text])
        -- ^ /@argv@/: GTK+ always passes 'P.Nothing' for this argument
        -> m ()
    dynamic_ModuleInitFunc :: forall (m :: * -> *).
    (HasCallStack, MonadIO m) =>
    FunPtr C_ModuleInitFunc -> Maybe [Text] -> m ()
    dynamic_ModuleInitFunc FunPtr C_ModuleInitFunc
    __funPtr Maybe [Text]
    argv = IO () -> m ()
    forall a. IO a -> m a
    forall (m :: * -> *) a. MonadIO m => IO a -> m a
    liftIO (IO () -> m ()) -> IO () -> m ()
    forall a b. (a -> b) -> a -> b
    $ do
        let argc :: Int32
    argc = case Maybe [Text]
    argv of
                Maybe [Text]
    Nothing -> Int32
    0
                Just [Text]
    jArgv -> Int -> Int32
    forall a b. (Integral a, Num b) => a -> b
    fromIntegral (Int -> Int32) -> Int -> Int32
    forall a b. (a -> b) -> a -> b
    $ [Text] -> Int
    forall a. [a] -> Int
    forall (t :: * -> *) a. Foldable t => t a -> Int
    P.length [Text]
    jArgv
        maybeArgv <- case Maybe [Text]
    argv of
            Maybe [Text]
    Nothing -> Ptr CString -> IO (Ptr CString)
    forall a. a -> IO a
    forall (m :: * -> *) a. Monad m => a -> m a
    return Ptr CString
    forall a. Ptr a
    FP.nullPtr
            Just [Text]
    jArgv -> do
                jArgv' <- [Text] -> IO (Ptr CString)
    packUTF8CArray [Text]
    jArgv
                return jArgv'
        (__dynamic_C_ModuleInitFunc __funPtr) argc maybeArgv
        (mapCArrayWithLength argc) freeMem maybeArgv
        freeMem maybeArgv
        return ()

    -- | Generate a function pointer callable from C code, from a `C_ModuleInitFunc`.
    foreign import ccall "wrapper"
        mk_ModuleInitFunc :: C_ModuleInitFunc -> IO (FunPtr C_ModuleInitFunc)

    -- | Each GTK+ module must have a function @/gtk_module_init()/@ with this prototype.
    -- This function is called after loading the module.
    type ModuleInitFunc =
        Maybe [T.Text]
        -- ^ /@argv@/: GTK+ always passes 'P.Nothing' for this argument
        -> IO ()

    -- | A convenience synonym for @`Nothing` :: `Maybe` `ModuleInitFunc`@.
    noModuleInitFunc :: Maybe ModuleInitFunc
    noModuleInitFunc :: Maybe ModuleInitFunc
    noModuleInitFunc = Maybe ModuleInitFunc
    forall a. Maybe a
    Nothing

    -- | Wrap the callback into a `GClosure`.
    genClosure_ModuleInitFunc :: MonadIO m => ModuleInitFunc -> m (GClosure C_ModuleInitFunc)
    genClosure_ModuleInitFunc :: forall (m :: * -> *).
    MonadIO m =>
    ModuleInitFunc -> m (GClosure C_ModuleInitFunc)
    genClosure_ModuleInitFunc ModuleInitFunc
    cb = IO (GClosure C_ModuleInitFunc) -> m (GClosure C_ModuleInitFunc)
    forall a. IO a -> m a
    forall (m :: * -> *) a. MonadIO m => IO a -> m a
    liftIO (IO (GClosure C_ModuleInitFunc) -> m (GClosure C_ModuleInitFunc))
    -> IO (GClosure C_ModuleInitFunc) -> m (GClosure C_ModuleInitFunc)
    forall a b. (a -> b) -> a -> b
    $ do
        let cb' :: C_ModuleInitFunc
    cb' = Maybe (Ptr (FunPtr C_ModuleInitFunc))
    -> ModuleInitFunc -> C_ModuleInitFunc
    wrap_ModuleInitFunc Maybe (Ptr (FunPtr C_ModuleInitFunc))
    forall a. Maybe a
    Nothing ModuleInitFunc
    cb
        C_ModuleInitFunc -> IO (FunPtr C_ModuleInitFunc)
    mk_ModuleInitFunc C_ModuleInitFunc
    cb' IO (FunPtr C_ModuleInitFunc)
    -> (FunPtr C_ModuleInitFunc -> IO (GClosure C_ModuleInitFunc))
    -> IO (GClosure C_ModuleInitFunc)
    forall a b. IO a -> (a -> IO b) -> IO b
    forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
    >>= FunPtr C_ModuleInitFunc -> IO (GClosure C_ModuleInitFunc)
    forall (m :: * -> *) a. MonadIO m => FunPtr a -> m (GClosure a)
    B.GClosure.newGClosure

    -- | Wrap a `ModuleInitFunc` into a `C_ModuleInitFunc`.
    wrap_ModuleInitFunc ::
        Maybe (Ptr (FunPtr C_ModuleInitFunc)) ->
        ModuleInitFunc ->
        C_ModuleInitFunc
    wrap_ModuleInitFunc :: Maybe (Ptr (FunPtr C_ModuleInitFunc))
    -> ModuleInitFunc -> C_ModuleInitFunc
    wrap_ModuleInitFunc Maybe (Ptr (FunPtr C_ModuleInitFunc))
    gi'funptrptr ModuleInitFunc
    gi'cb Int32
    argc Ptr CString
    argv = do
        maybeArgv <-
            if Ptr CString
    argv Ptr CString -> Ptr CString -> Bool
    forall a. Eq a => a -> a -> Bool
    == Ptr CString
    forall a. Ptr a
    FP.nullPtr
            then Maybe [Text] -> IO (Maybe [Text])
    forall a. a -> IO a
    forall (m :: * -> *) a. Monad m => a -> m a
    return Maybe [Text]
    forall a. Maybe a
    Nothing
            else do
                argv' <- (Int32 -> Ptr CString -> IO [Text]
    forall a.
    (HasCallStack, Integral a) =>
    a -> Ptr CString -> IO [Text]
    unpackUTF8CArrayWithLength Int32
    argc) Ptr CString
    argv
                return $ Just argv'
        gi'cb  maybeArgv
        maybeReleaseFunPtr gi'funptrptr

    -- callback ModuleDisplayInitFunc
    {- Callable
      { returnType = Nothing
      , returnMayBeNull = False
      , returnTransfer = TransferNothing
      , returnDocumentation =
          Documentation { rawDocText = Nothing , sinceVersion = Nothing }
      , args =
          [ Arg
              { argCName = "display"
              , argType =
                  TInterface Name { namespace = "Gdk" , name = "Display" }
              , argCType = Just "GdkDisplay*"
              , direction = DirectionIn
              , mayBeNull = False
              , argDoc =
                  Documentation
                    { rawDocText = Just "an open #GdkDisplay"
                    , sinceVersion = Nothing
                    }
              , argScope = ScopeTypeInvalid
              , argClosure = -1
              , argDestroy = -1
              , argCallerAllocates = False
              , argCallbackUserData = False
              , transfer = TransferNothing
              }
          ]
      , skipReturn = False
      , callableThrows = False
      , callableDeprecated = Nothing
      , callableDocumentation =
          Documentation
            { rawDocText =
                Just
                  "A multihead-aware GTK+ module may have a gtk_module_display_init() function\nwith this prototype. GTK+ calls this function for each opened display."
            , sinceVersion = Just "2.2"
            }
      , callableResolvable = Nothing
      }
    -}
    -- | Type for the callback on the (unwrapped) C side.
    type C_ModuleDisplayInitFunc =
        Ptr Gdk.Display.Display ->
        IO ()

    -- Args: [ Arg
    --           { argCName = "display"
    --           , argType =
    --               TInterface Name { namespace = "Gdk" , name = "Display" }
    --           , argCType = Just "GdkDisplay*"
    --           , direction = DirectionIn
    --           , mayBeNull = False
    --           , argDoc =
    --               Documentation
    --                 { rawDocText = Just "an open #GdkDisplay"
    --                 , sinceVersion = Nothing
    --                 }
    --           , argScope = ScopeTypeInvalid
    --           , argClosure = -1
    --           , argDestroy = -1
    --           , argCallerAllocates = False
    --           , argCallbackUserData = False
    --           , transfer = TransferNothing
    --           }
    --       ]
    -- Lengths: []
    -- returnType: Nothing
    -- throws : False
    -- Skip return : False

    foreign import ccall "dynamic" __dynamic_C_ModuleDisplayInitFunc :: FunPtr C_ModuleDisplayInitFunc -> C_ModuleDisplayInitFunc

    -- | Given a pointer to a foreign C function, wrap it into a function callable from Haskell.
    dynamic_ModuleDisplayInitFunc ::
        (B.CallStack.HasCallStack, MonadIO m, Gdk.Display.IsDisplay a) =>
        FunPtr C_ModuleDisplayInitFunc
        -> a
        -- ^ /@display@/: an open t'GI.Gdk.Objects.Display.Display'
        -> m ()
    dynamic_ModuleDisplayInitFunc :: forall (m :: * -> *) a.
    (HasCallStack, MonadIO m, IsDisplay a) =>
    FunPtr C_ModuleDisplayInitFunc -> a -> m ()
    dynamic_ModuleDisplayInitFunc FunPtr C_ModuleDisplayInitFunc
    __funPtr a
    display = IO () -> m ()
    forall a. IO a -> m a
    forall (m :: * -> *) a. MonadIO m => IO a -> m a
    liftIO (IO () -> m ()) -> IO () -> m ()
    forall a b. (a -> b) -> a -> b
    $ do
        display' <- a -> IO (Ptr Display)
    forall a b. (HasCallStack, ManagedPtrNewtype a) => a -> IO (Ptr b)
    unsafeManagedPtrCastPtr a
    display
        (__dynamic_C_ModuleDisplayInitFunc __funPtr) display'
        touchManagedPtr display
        return ()

    -- | Generate a function pointer callable from C code, from a `C_ModuleDisplayInitFunc`.
    foreign import ccall "wrapper"
        mk_ModuleDisplayInitFunc :: C_ModuleDisplayInitFunc -> IO (FunPtr C_ModuleDisplayInitFunc)

    -- | A multihead-aware GTK+ module may have a @/gtk_module_display_init()/@ function
    -- with this prototype. GTK+ calls this function for each opened display.
    --
    -- /Since: 2.2/
    type ModuleDisplayInitFunc =
        Gdk.Display.Display
        -- ^ /@display@/: an open t'GI.Gdk.Objects.Display.Display'
        -> IO ()

    -- | A convenience synonym for @`Nothing` :: `Maybe` `ModuleDisplayInitFunc`@.
    noModuleDisplayInitFunc :: Maybe ModuleDisplayInitFunc
    noModuleDisplayInitFunc :: Maybe ModuleDisplayInitFunc
    noModuleDisplayInitFunc = Maybe ModuleDisplayInitFunc
    forall a. Maybe a
    Nothing

    -- | Wrap the callback into a `GClosure`.
    genClosure_ModuleDisplayInitFunc :: MonadIO m => ModuleDisplayInitFunc -> m (GClosure C_ModuleDisplayInitFunc)
    genClosure_ModuleDisplayInitFunc :: forall (m :: * -> *).
    MonadIO m =>
    ModuleDisplayInitFunc -> m (GClosure C_ModuleDisplayInitFunc)
    genClosure_ModuleDisplayInitFunc ModuleDisplayInitFunc
    cb = IO (GClosure C_ModuleDisplayInitFunc)
    -> m (GClosure C_ModuleDisplayInitFunc)
    forall a. IO a -> m a
    forall (m :: * -> *) a. MonadIO m => IO a -> m a
    liftIO (IO (GClosure C_ModuleDisplayInitFunc)
     -> m (GClosure C_ModuleDisplayInitFunc))
    -> IO (GClosure C_ModuleDisplayInitFunc)
    -> m (GClosure C_ModuleDisplayInitFunc)
    forall a b. (a -> b) -> a -> b
    $ do
        let cb' :: C_ModuleDisplayInitFunc
    cb' = Maybe (Ptr (FunPtr C_ModuleDisplayInitFunc))
    -> ModuleDisplayInitFunc -> C_ModuleDisplayInitFunc
    wrap_ModuleDisplayInitFunc Maybe (Ptr (FunPtr C_ModuleDisplayInitFunc))
    forall a. Maybe a
    Nothing ModuleDisplayInitFunc
    cb
        C_ModuleDisplayInitFunc -> IO (FunPtr C_ModuleDisplayInitFunc)
    mk_ModuleDisplayInitFunc C_ModuleDisplayInitFunc
    cb' IO (FunPtr C_ModuleDisplayInitFunc)
    -> (FunPtr C_ModuleDisplayInitFunc
        -> IO (GClosure C_ModuleDisplayInitFunc))
    -> IO (GClosure C_ModuleDisplayInitFunc)
    forall a b. IO a -> (a -> IO b) -> IO b
    forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
    >>= FunPtr C_ModuleDisplayInitFunc
    -> IO (GClosure C_ModuleDisplayInitFunc)
    forall (m :: * -> *) a. MonadIO m => FunPtr a -> m (GClosure a)
    B.GClosure.newGClosure

    -- | Wrap a `ModuleDisplayInitFunc` into a `C_ModuleDisplayInitFunc`.
    wrap_ModuleDisplayInitFunc ::
        Maybe (Ptr (FunPtr C_ModuleDisplayInitFunc)) ->
        ModuleDisplayInitFunc ->
        C_ModuleDisplayInitFunc
    wrap_ModuleDisplayInitFunc :: Maybe (Ptr (FunPtr C_ModuleDisplayInitFunc))
    -> ModuleDisplayInitFunc -> C_ModuleDisplayInitFunc
    wrap_ModuleDisplayInitFunc Maybe (Ptr (FunPtr C_ModuleDisplayInitFunc))
    gi'funptrptr ModuleDisplayInitFunc
    gi'cb Ptr Display
    display = do
        display' <- ((ManagedPtr Display -> Display) -> Ptr Display -> IO Display
    forall a b.
    (HasCallStack, GObject a, GObject b) =>
    (ManagedPtr a -> a) -> Ptr b -> IO a
    newObject ManagedPtr Display -> Display
    Gdk.Display.Display) Ptr Display
    display
        gi'cb  display'
        maybeReleaseFunPtr gi'funptrptr

    -- callback MenuPositionFunc
    {- Callable
      { returnType = Nothing
      , returnMayBeNull = False
      , returnTransfer = TransferNothing
      , returnDocumentation =
          Documentation { rawDocText = Nothing , sinceVersion = Nothing }
      , args =
          [ Arg
              { argCName = "menu"
              , argType = TInterface Name { namespace = "Gtk" , name = "Menu" }
              , argCType = Just "GtkMenu*"
              , direction = DirectionIn
              , mayBeNull = False
              , argDoc =
                  Documentation
                    { rawDocText = Just "a #GtkMenu." , sinceVersion = Nothing }
              , argScope = ScopeTypeInvalid
              , argClosure = -1
              , argDestroy = -1
              , argCallerAllocates = False
              , argCallbackUserData = False
              , transfer = TransferNothing
              }
          , Arg
              { argCName = "x"
              , argType = TBasicType TInt
              , argCType = Just "gint*"
              , direction = DirectionInout
              , mayBeNull = False
              , argDoc =
                  Documentation
                    { rawDocText =
                        Just
                          "address of the #gint representing the horizontal\n    position where the menu shall be drawn."
                    , sinceVersion = Nothing
                    }
              , argScope = ScopeTypeInvalid
              , argClosure = -1
              , argDestroy = -1
              , argCallerAllocates = False
              , argCallbackUserData = False
              , transfer = TransferEverything
              }
          , Arg
              { argCName = "y"
              , argType = TBasicType TInt
              , argCType = Just "gint*"
              , direction = DirectionInout
              , mayBeNull = False
              , argDoc =
                  Documentation
                    { rawDocText =
                        Just
                          "address of the #gint representing the vertical position\n    where the menu shall be drawn.  This is an output parameter."
                    , sinceVersion = Nothing
                    }
              , argScope = ScopeTypeInvalid
              , argClosure = -1
              , argDestroy = -1
              , argCallerAllocates = False
              , argCallbackUserData = False
              , transfer = TransferEverything
              }
          , Arg
              { argCName = "push_in"
              , argType = TBasicType TBoolean
              , argCType = Just "gboolean*"
              , direction = DirectionOut
              , mayBeNull = False
              , argDoc =
                  Documentation
                    { rawDocText =
                        Just
                          "This parameter controls how menus placed outside\n    the monitor are handled.  If this is set to %TRUE and part of\n    the menu is outside the monitor then GTK+ pushes the window\n    into the visible area, effectively modifying the popup\n    position.  Note that moving and possibly resizing the menu\n    around will alter the scroll position to keep the menu items\n    \8220in place\8221, i.e. at the same monitor position they would have\n    been without resizing.  In practice, this behavior is only\n    useful for combobox popups or option menus and cannot be used\n    to simply confine a menu to monitor boundaries.  In that case,\n    changing the scroll offset is not desirable."
                    , sinceVersion = Nothing
                    }
              , argScope = ScopeTypeInvalid
              , argClosure = -1
              , argDestroy = -1
              , argCallerAllocates = False
              , argCallbackUserData = False
              , transfer = TransferEverything
              }
          , Arg
              { argCName = "user_data"
              , argType = TBasicType TPtr
              , argCType = Just "gpointer"
              , direction = DirectionIn
              , mayBeNull = True
              , argDoc =
                  Documentation
                    { rawDocText =
                        Just
                          "the data supplied by the user in the gtk_menu_popup()\n    @data parameter."
                    , sinceVersion = Nothing
                    }
              , argScope = ScopeTypeInvalid
              , argClosure = -1
              , argDestroy = -1
              , argCallerAllocates = False
              , argCallbackUserData = True
              , transfer = TransferNothing
              }
          ]
      , skipReturn = False
      , callableThrows = False
      , callableDeprecated = Nothing
      , callableDocumentation =
          Documentation
            { rawDocText =
                Just
                  "A user function supplied when calling gtk_menu_popup() which\ncontrols the positioning of the menu when it is displayed.  The\nfunction sets the @x and @y parameters to the coordinates where the\nmenu is to be drawn.  To make the menu appear on a different\nmonitor than the mouse pointer, gtk_menu_set_monitor() must be\ncalled."
            , sinceVersion = Nothing
            }
      , callableResolvable = Nothing
      }
    -}
    -- | Type for the callback on the (unwrapped) C side.
    type C_MenuPositionFunc =
        Ptr Gtk.Menu.Menu ->
        Ptr Int32 ->
        Ptr Int32 ->
        Ptr CInt ->
        Ptr () ->
        IO ()

    -- Args: [ Arg
    --           { argCName = "menu"
    --           , argType = TInterface Name { namespace = "Gtk" , name = "Menu" }
    --           , argCType = Just "GtkMenu*"
    --           , direction = DirectionIn
    --           , mayBeNull = False
    --           , argDoc =
    --               Documentation
    --                 { rawDocText = Just "a #GtkMenu." , sinceVersion = Nothing }
    --           , argScope = ScopeTypeInvalid
    --           , argClosure = -1
    --           , argDestroy = -1
    --           , argCallerAllocates = False
    --           , argCallbackUserData = False
    --           , transfer = TransferNothing
    --           }
    --       , Arg
    --           { argCName = "x"
    --           , argType = TBasicType TInt
    --           , argCType = Just "gint*"
    --           , direction = DirectionInout
    --           , mayBeNull = False
    --           , argDoc =
    --               Documentation
    --                 { rawDocText =
    --                     Just
    --                       "address of the #gint representing the horizontal\n    position where the menu shall be drawn."
    --                 , sinceVersion = Nothing
    --                 }
    --           , argScope = ScopeTypeInvalid
    --           , argClosure = -1
    --           , argDestroy = -1
    --           , argCallerAllocates = False
    --           , argCallbackUserData = False
    --           , transfer = TransferEverything
    --           }
    --       , Arg
    --           { argCName = "y"
    --           , argType = TBasicType TInt
    --           , argCType = Just "gint*"
    --           , direction = DirectionInout
    --           , mayBeNull = False
    --           , argDoc =
    --               Documentation
    --                 { rawDocText =
    --                     Just
    --                       "address of the #gint representing the vertical position\n    where the menu shall be drawn.  This is an output parameter."
    --                 , sinceVersion = Nothing
    --                 }
    --           , argScope = ScopeTypeInvalid
    --           , argClosure = -1
    --           , argDestroy = -1
    --           , argCallerAllocates = False
    --           , argCallbackUserData = False
    --           , transfer = TransferEverything
    --           }
    --       , Arg
    --           { argCName = "push_in"
    --           , argType = TBasicType TBoolean
    --           , argCType = Just "gboolean*"
    --           , direction = DirectionOut
    --           , mayBeNull = False
    --           , argDoc =
    --               Documentation
    --                 { rawDocText =
    --                     Just
    --                       "This parameter controls how menus placed outside\n    the monitor are handled.  If this is set to %TRUE and part of\n    the menu is outside the monitor then GTK+ pushes the window\n    into the visible area, effectively modifying the popup\n    position.  Note that moving and possibly resizing the menu\n    around will alter the scroll position to keep the menu items\n    \8220in place\8221, i.e. at the same monitor position they would have\n    been without resizing.  In practice, this behavior is only\n    useful for combobox popups or option menus and cannot be used\n    to simply confine a menu to monitor boundaries.  In that case,\n    changing the scroll offset is not desirable."
    --                 , sinceVersion = Nothing
    --                 }
    --           , argScope = ScopeTypeInvalid
    --           , argClosure = -1
    --           , argDestroy = -1
    --           , argCallerAllocates = False
    --           , argCallbackUserData = False
    --           , transfer = TransferEverything
    --           }
    --       , Arg
    --           { argCName = "user_data"
    --           , argType = TBasicType TPtr
    --           , argCType = Just "gpointer"
    --           , direction = DirectionIn
    --           , mayBeNull = True
    --           , argDoc =
    --               Documentation
    --                 { rawDocText =
    --                     Just
    --                       "the data supplied by the user in the gtk_menu_popup()\n    @data parameter."
    --                 , sinceVersion = Nothing
    --                 }
    --           , argScope = ScopeTypeInvalid
    --           , argClosure = -1
    --           , argDestroy = -1
    --           , argCallerAllocates = False
    --           , argCallbackUserData = True
    --           , transfer = TransferNothing
    --           }
    --       ]
    -- Lengths: []
    -- returnType: Nothing
    -- throws : False
    -- Skip return : False

    foreign import ccall "dynamic" __dynamic_C_MenuPositionFunc :: FunPtr C_MenuPositionFunc -> C_MenuPositionFunc

    -- | Given a pointer to a foreign C function, wrap it into a function callable from Haskell.
    dynamic_MenuPositionFunc ::
        (B.CallStack.HasCallStack, MonadIO m, Gtk.Menu.IsMenu a) =>
        FunPtr C_MenuPositionFunc
        -> a
        -- ^ /@menu@/: a t'GI.Gtk.Objects.Menu.Menu'.
        -> Int32
        -- ^ /@x@/: address of the @/gint/@ representing the horizontal
        --     position where the menu shall be drawn.
        -> Int32
        -- ^ /@y@/: address of the @/gint/@ representing the vertical position
        --     where the menu shall be drawn.  This is an output parameter.
        -> Ptr ()
        -- ^ /@userData@/: the data supplied by the user in the 'GI.Gtk.Objects.Menu.menuPopup'
        --     /@data@/ parameter.
        -> m ((Int32, Int32, Bool))
    dynamic_MenuPositionFunc :: forall (m :: * -> *) a.
    (HasCallStack, MonadIO m, IsMenu a) =>
    FunPtr C_MenuPositionFunc
    -> a -> Int32 -> Int32 -> Ptr () -> m (Int32, Int32, Bool)
    dynamic_MenuPositionFunc FunPtr C_MenuPositionFunc
    __funPtr a
    menu Int32
    x Int32
    y Ptr ()
    userData = IO (Int32, Int32, Bool) -> m (Int32, Int32, Bool)
    forall a. IO a -> m a
    forall (m :: * -> *) a. MonadIO m => IO a -> m a
    liftIO (IO (Int32, Int32, Bool) -> m (Int32, Int32, Bool))
    -> IO (Int32, Int32, Bool) -> m (Int32, Int32, Bool)
    forall a b. (a -> b) -> a -> b
    $ do
        menu' <- a -> IO (Ptr Menu)
    forall a b. (HasCallStack, ManagedPtrNewtype a) => a -> IO (Ptr b)
    unsafeManagedPtrCastPtr a
    menu
        x' <- allocMem :: IO (Ptr Int32)
        poke x' x
        y' <- allocMem :: IO (Ptr Int32)
        poke y' y
        pushIn <- allocMem :: IO (Ptr CInt)
        (__dynamic_C_MenuPositionFunc __funPtr) menu' x' y' pushIn userData
        x'' <- peek x'
        y'' <- peek y'
        pushIn' <- peek pushIn
        let pushIn'' = (CInt -> CInt -> Bool
    forall a. Eq a => a -> a -> Bool
    /= CInt
    0) CInt
    pushIn'
        touchManagedPtr menu
        freeMem x'
        freeMem y'
        freeMem pushIn
        return (x'', y'', pushIn'')

    -- | Generate a function pointer callable from C code, from a `C_MenuPositionFunc`.
    foreign import ccall "wrapper"
        mk_MenuPositionFunc :: C_MenuPositionFunc -> IO (FunPtr C_MenuPositionFunc)

    -- | A user function supplied when calling 'GI.Gtk.Objects.Menu.menuPopup' which
    -- controls the positioning of the menu when it is displayed.  The
    -- function sets the /@x@/ and /@y@/ parameters to the coordinates where the
    -- menu is to be drawn.  To make the menu appear on a different
    -- monitor than the mouse pointer, 'GI.Gtk.Objects.Menu.menuSetMonitor' must be
    -- called.
    type MenuPositionFunc =
        Gtk.Menu.Menu
        -- ^ /@menu@/: a t'GI.Gtk.Objects.Menu.Menu'.
        -> Int32
        -- ^ /@x@/: address of the @/gint/@ representing the horizontal
        --     position where the menu shall be drawn.
        -> Int32
        -- ^ /@y@/: address of the @/gint/@ representing the vertical position
        --     where the menu shall be drawn.  This is an output parameter.
        -> IO ((Int32, Int32, Bool))

    -- | A convenience synonym for @`Nothing` :: `Maybe` `MenuPositionFunc`@.
    noMenuPositionFunc :: Maybe MenuPositionFunc
    noMenuPositionFunc :: Maybe MenuPositionFunc
    noMenuPositionFunc = Maybe MenuPositionFunc
    forall a. Maybe a
    Nothing

    -- | A user function supplied when calling 'GI.Gtk.Objects.Menu.menuPopup' which
    -- controls the positioning of the menu when it is displayed.  The
    -- function sets the /@x@/ and /@y@/ parameters to the coordinates where the
    -- menu is to be drawn.  To make the menu appear on a different
    -- monitor than the mouse pointer, 'GI.Gtk.Objects.Menu.menuSetMonitor' must be
    -- called.
    type MenuPositionFunc_WithClosures =
        Gtk.Menu.Menu
        -- ^ /@menu@/: a t'GI.Gtk.Objects.Menu.Menu'.
        -> Int32
        -- ^ /@x@/: address of the @/gint/@ representing the horizontal
        --     position where the menu shall be drawn.
        -> Int32
        -- ^ /@y@/: address of the @/gint/@ representing the vertical position
        --     where the menu shall be drawn.  This is an output parameter.
        -> Ptr ()
        -- ^ /@userData@/: the data supplied by the user in the 'GI.Gtk.Objects.Menu.menuPopup'
        --     /@data@/ parameter.
        -> IO ((Int32, Int32, Bool))

    -- | A convenience synonym for @`Nothing` :: `Maybe` `MenuPositionFunc_WithClosures`@.
    noMenuPositionFunc_WithClosures :: Maybe MenuPositionFunc_WithClosures
    noMenuPositionFunc_WithClosures :: Maybe MenuPositionFunc_WithClosures
    noMenuPositionFunc_WithClosures = Maybe MenuPositionFunc_WithClosures
    forall a. Maybe a
    Nothing

    -- | A simple wrapper that ignores the closure arguments.
    drop_closures_MenuPositionFunc :: MenuPositionFunc -> MenuPositionFunc_WithClosures
    drop_closures_MenuPositionFunc :: MenuPositionFunc -> MenuPositionFunc_WithClosures
    drop_closures_MenuPositionFunc MenuPositionFunc
    _f Menu
    menu Int32
    x Int32
    y Ptr ()
    _ = MenuPositionFunc
    _f Menu
    menu Int32
    x Int32
    y

    -- | Wrap the callback into a `GClosure`.
    genClosure_MenuPositionFunc :: MonadIO m => MenuPositionFunc -> m (GClosure C_MenuPositionFunc)
    genClosure_MenuPositionFunc :: forall (m :: * -> *).
    MonadIO m =>
    MenuPositionFunc -> m (GClosure C_MenuPositionFunc)
    genClosure_MenuPositionFunc MenuPositionFunc
    cb = IO (GClosure C_MenuPositionFunc) -> m (GClosure C_MenuPositionFunc)
    forall a. IO a -> m a
    forall (m :: * -> *) a. MonadIO m => IO a -> m a
    liftIO (IO (GClosure C_MenuPositionFunc)
     -> m (GClosure C_MenuPositionFunc))
    -> IO (GClosure C_MenuPositionFunc)
    -> m (GClosure C_MenuPositionFunc)
    forall a b. (a -> b) -> a -> b
    $ do
        let cb' :: MenuPositionFunc_WithClosures
    cb' = MenuPositionFunc -> MenuPositionFunc_WithClosures
    drop_closures_MenuPositionFunc MenuPositionFunc
    cb
        let cb'' :: C_MenuPositionFunc
    cb'' = Maybe (Ptr (FunPtr C_MenuPositionFunc))
    -> MenuPositionFunc_WithClosures -> C_MenuPositionFunc
    wrap_MenuPositionFunc Maybe (Ptr (FunPtr C_MenuPositionFunc))
    forall a. Maybe a
    Nothing MenuPositionFunc_WithClosures
    cb'
        C_MenuPositionFunc -> IO (FunPtr C_MenuPositionFunc)
    mk_MenuPositionFunc C_MenuPositionFunc
    cb'' IO (FunPtr C_MenuPositionFunc)
    -> (FunPtr C_MenuPositionFunc -> IO (GClosure C_MenuPositionFunc))
    -> IO (GClosure C_MenuPositionFunc)
    forall a b. IO a -> (a -> IO b) -> IO b
    forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
    >>= FunPtr C_MenuPositionFunc -> IO (GClosure C_MenuPositionFunc)
    forall (m :: * -> *) a. MonadIO m => FunPtr a -> m (GClosure a)
    B.GClosure.newGClosure

    -- | Wrap a `MenuPositionFunc` into a `C_MenuPositionFunc`.
    wrap_MenuPositionFunc ::
        Maybe (Ptr (FunPtr C_MenuPositionFunc)) ->
        MenuPositionFunc_WithClosures ->
        C_MenuPositionFunc
    wrap_MenuPositionFunc :: Maybe (Ptr (FunPtr C_MenuPositionFunc))
    -> MenuPositionFunc_WithClosures -> C_MenuPositionFunc
    wrap_MenuPositionFunc Maybe (Ptr (FunPtr C_MenuPositionFunc))
    gi'funptrptr MenuPositionFunc_WithClosures
    gi'cb Ptr Menu
    menu Ptr Int32
    x Ptr Int32
    y Ptr CInt
    pushIn Ptr ()
    userData = do
        menu' <- ((ManagedPtr Menu -> Menu) -> Ptr Menu -> IO Menu
    forall a b.
    (HasCallStack, GObject a, GObject b) =>
    (ManagedPtr a -> a) -> Ptr b -> IO a
    newObject ManagedPtr Menu -> Menu
    Gtk.Menu.Menu) Ptr Menu
    menu
        x' <- peek x
        y' <- peek y
        (outx, outy, outpushIn) <- gi'cb  menu' x' y' userData
        poke x outx
        poke y outy
        let outpushIn' = (Int -> CInt
    forall a b. (Integral a, Num b) => a -> b
    P.fromIntegral (Int -> CInt) -> (Bool -> Int) -> Bool -> CInt
    forall b c a. (b -> c) -> (a -> b) -> a -> c
    . Bool -> Int
    forall a. Enum a => a -> Int
    P.fromEnum) Bool
    outpushIn
        poke pushIn outpushIn'
        maybeReleaseFunPtr gi'funptrptr

    -- callback MenuDetachFunc
    {- Callable
      { returnType = Nothing
      , returnMayBeNull = False
      , returnTransfer = TransferNothing
      , returnDocumentation =
          Documentation { rawDocText = Nothing , sinceVersion = Nothing }
      , args =
          [ Arg
              { argCName = "attach_widget"
              , argType = TInterface Name { namespace = "Gtk" , name = "Widget" }
              , argCType = Just "GtkWidget*"
              , direction = DirectionIn
              , mayBeNull = False
              , argDoc =
                  Documentation
                    { rawDocText =
                        Just "the #GtkWidget that the menu is being detached from."
                    , sinceVersion = Nothing
                    }
              , argScope = ScopeTypeInvalid
              , argClosure = -1
              , argDestroy = -1
              , argCallerAllocates = False
              , argCallbackUserData = False
              , transfer = TransferNothing
              }
          , Arg
              { argCName = "menu"
              , argType = TInterface Name { namespace = "Gtk" , name = "Menu" }
              , argCType = Just "GtkMenu*"
              , direction = DirectionIn
              , mayBeNull = False
              , argDoc =
                  Documentation
                    { rawDocText = Just "the #GtkMenu being detached."
                    , sinceVersion = Nothing
                    }
              , argScope = ScopeTypeInvalid
              , argClosure = -1
              , argDestroy = -1
              , argCallerAllocates = False
              , argCallbackUserData = False
              , transfer = TransferNothing
              }
          ]
      , skipReturn = False
      , callableThrows = False
      , callableDeprecated = Nothing
      , callableDocumentation =
          Documentation
            { rawDocText =
                Just
                  "A user function supplied when calling gtk_menu_attach_to_widget() which\nwill be called when the menu is later detached from the widget."
            , sinceVersion = Nothing
            }
      , callableResolvable = Nothing
      }
    -}
    -- | Type for the callback on the (unwrapped) C side.
    type C_MenuDetachFunc =
        Ptr Gtk.Widget.Widget ->
        Ptr Gtk.Menu.Menu ->
        IO ()

    -- Args: [ Arg
    --           { argCName = "attach_widget"
    --           , argType = TInterface Name { namespace = "Gtk" , name = "Widget" }
    --           , argCType = Just "GtkWidget*"
    --           , direction = DirectionIn
    --           , mayBeNull = False
    --           , argDoc =
    --               Documentation
    --                 { rawDocText =
    --                     Just "the #GtkWidget that the menu is being detached from."
    --                 , sinceVersion = Nothing
    --                 }
    --           , argScope = ScopeTypeInvalid
    --           , argClosure = -1
    --           , argDestroy = -1
    --           , argCallerAllocates = False
    --           , argCallbackUserData = False
    --           , transfer = TransferNothing
    --           }
    --       , Arg
    --           { argCName = "menu"
    --           , argType = TInterface Name { namespace = "Gtk" , name = "Menu" }
    --           , argCType = Just "GtkMenu*"
    --           , direction = DirectionIn
    --           , mayBeNull = False
    --           , argDoc =
    --               Documentation
    --                 { rawDocText = Just "the #GtkMenu being detached."
    --                 , sinceVersion = Nothing
    --                 }
    --           , argScope = ScopeTypeInvalid
    --           , argClosure = -1
    --           , argDestroy = -1
    --           , argCallerAllocates = False
    --           , argCallbackUserData = False
    --           , transfer = TransferNothing
    --           }
    --       ]
    -- Lengths: []
    -- returnType: Nothing
    -- throws : False
    -- Skip return : False

    foreign import ccall "dynamic" __dynamic_C_MenuDetachFunc :: FunPtr C_MenuDetachFunc -> C_MenuDetachFunc

    -- | Given a pointer to a foreign C function, wrap it into a function callable from Haskell.
    dynamic_MenuDetachFunc ::
        (B.CallStack.HasCallStack, MonadIO m, Gtk.Widget.IsWidget a, Gtk.Menu.IsMenu b) =>
        FunPtr C_MenuDetachFunc
        -> a
        -- ^ /@attachWidget@/: the t'GI.Gtk.Objects.Widget.Widget' that the menu is being detached from.
        -> b
        -- ^ /@menu@/: the t'GI.Gtk.Objects.Menu.Menu' being detached.
        -> m ()
    dynamic_MenuDetachFunc :: forall (m :: * -> *) a b.
    (HasCallStack, MonadIO m, IsWidget a, IsMenu b) =>
    FunPtr C_MenuDetachFunc -> a -> b -> m ()
    dynamic_MenuDetachFunc FunPtr C_MenuDetachFunc
    __funPtr a
    attachWidget b
    menu = IO () -> m ()
    forall a. IO a -> m a
    forall (m :: * -> *) a. MonadIO m => IO a -> m a
    liftIO (IO () -> m ()) -> IO () -> m ()
    forall a b. (a -> b) -> a -> b
    $ do
        attachWidget' <- a -> IO (Ptr Widget)
    forall a b. (HasCallStack, ManagedPtrNewtype a) => a -> IO (Ptr b)
    unsafeManagedPtrCastPtr a
    attachWidget
        menu' <- unsafeManagedPtrCastPtr menu
        (__dynamic_C_MenuDetachFunc __funPtr) attachWidget' menu'
        touchManagedPtr attachWidget
        touchManagedPtr menu
        return ()

    -- | Generate a function pointer callable from C code, from a `C_MenuDetachFunc`.
    foreign import ccall "wrapper"
        mk_MenuDetachFunc :: C_MenuDetachFunc -> IO (FunPtr C_MenuDetachFunc)

    -- | A user function supplied when calling 'GI.Gtk.Objects.Menu.menuAttachToWidget' which
    -- will be called when the menu is later detached from the widget.
    type MenuDetachFunc =
        Gtk.Widget.Widget
        -- ^ /@attachWidget@/: the t'GI.Gtk.Objects.Widget.Widget' that the menu is being detached from.
        -> Gtk.Menu.Menu
        -- ^ /@menu@/: the t'GI.Gtk.Objects.Menu.Menu' being detached.
        -> IO ()

    -- | A convenience synonym for @`Nothing` :: `Maybe` `MenuDetachFunc`@.
    noMenuDetachFunc :: Maybe MenuDetachFunc
    noMenuDetachFunc :: Maybe MenuDetachFunc
    noMenuDetachFunc = Maybe MenuDetachFunc
    forall a. Maybe a
    Nothing

    -- | Wrap the callback into a `GClosure`.
    genClosure_MenuDetachFunc :: MonadIO m => MenuDetachFunc -> m (GClosure C_MenuDetachFunc)
    genClosure_MenuDetachFunc :: forall (m :: * -> *).
    MonadIO m =>
    MenuDetachFunc -> m (GClosure C_MenuDetachFunc)
    genClosure_MenuDetachFunc MenuDetachFunc
    cb = IO (GClosure C_MenuDetachFunc) -> m (GClosure C_MenuDetachFunc)
    forall a. IO a -> m a
    forall (m :: * -> *) a. MonadIO m => IO a -> m a
    liftIO (IO (GClosure C_MenuDetachFunc) -> m (GClosure C_MenuDetachFunc))
    -> IO (GClosure C_MenuDetachFunc) -> m (GClosure C_MenuDetachFunc)
    forall a b. (a -> b) -> a -> b
    $ do
        let cb' :: C_MenuDetachFunc
    cb' = Maybe (Ptr (FunPtr C_MenuDetachFunc))
    -> MenuDetachFunc -> C_MenuDetachFunc
    wrap_MenuDetachFunc Maybe (Ptr (FunPtr C_MenuDetachFunc))
    forall a. Maybe a
    Nothing MenuDetachFunc
    cb
        C_MenuDetachFunc -> IO (FunPtr C_MenuDetachFunc)
    mk_MenuDetachFunc C_MenuDetachFunc
    cb' IO (FunPtr C_MenuDetachFunc)
    -> (FunPtr C_MenuDetachFunc -> IO (GClosure C_MenuDetachFunc))
    -> IO (GClosure C_MenuDetachFunc)
    forall a b. IO a -> (a -> IO b) -> IO b
    forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
    >>= FunPtr C_MenuDetachFunc -> IO (GClosure C_MenuDetachFunc)
    forall (m :: * -> *) a. MonadIO m => FunPtr a -> m (GClosure a)
    B.GClosure.newGClosure

    -- | Wrap a `MenuDetachFunc` into a `C_MenuDetachFunc`.
    wrap_MenuDetachFunc ::
        Maybe (Ptr (FunPtr C_MenuDetachFunc)) ->
        MenuDetachFunc ->
        C_MenuDetachFunc
    wrap_MenuDetachFunc :: Maybe (Ptr (FunPtr C_MenuDetachFunc))
    -> MenuDetachFunc -> C_MenuDetachFunc
    wrap_MenuDetachFunc Maybe (Ptr (FunPtr C_MenuDetachFunc))
    gi'funptrptr MenuDetachFunc
    gi'cb Ptr Widget
    attachWidget Ptr Menu
    menu = do
        attachWidget' <- ((ManagedPtr Widget -> Widget) -> Ptr Widget -> IO Widget
    forall a b.
    (HasCallStack, GObject a, GObject b) =>
    (ManagedPtr a -> a) -> Ptr b -> IO a
    newObject ManagedPtr Widget -> Widget
    Gtk.Widget.Widget) Ptr Widget
    attachWidget
        menu' <- (newObject Gtk.Menu.Menu) menu
        gi'cb  attachWidget' menu'
        maybeReleaseFunPtr gi'funptrptr

    -- callback ListBoxUpdateHeaderFunc
    {- Callable
      { returnType = Nothing
      , returnMayBeNull = False
      , returnTransfer = TransferNothing
      , returnDocumentation =
          Documentation { rawDocText = Nothing , sinceVersion = Nothing }
      , args =
          [ Arg
              { argCName = "row"
              , argType =
                  TInterface Name { namespace = "Gtk" , name = "ListBoxRow" }
              , argCType = Just "GtkListBoxRow*"
              , direction = DirectionIn
              , mayBeNull = False
              , argDoc =
                  Documentation
                    { rawDocText = Just "the row to update" , sinceVersion = Nothing }
              , argScope = ScopeTypeInvalid
              , argClosure = -1
              , argDestroy = -1
              , argCallerAllocates = False
              , argCallbackUserData = False
              , transfer = TransferNothing
              }
          , Arg
              { argCName = "before"
              , argType =
                  TInterface Name { namespace = "Gtk" , name = "ListBoxRow" }
              , argCType = Just "GtkListBoxRow*"
              , direction = DirectionIn
              , mayBeNull = True
              , argDoc =
                  Documentation
                    { rawDocText = Just "the row before @row, or %NULL if it is first"
                    , sinceVersion = Nothing
                    }
              , argScope = ScopeTypeInvalid
              , argClosure = -1
              , argDestroy = -1
              , argCallerAllocates = False
              , argCallbackUserData = False
              , transfer = TransferNothing
              }
          , Arg
              { argCName = "user_data"
              , argType = TBasicType TPtr
              , argCType = Just "gpointer"
              , direction = DirectionIn
              , mayBeNull = True
              , argDoc =
                  Documentation
                    { rawDocText = Just "user data" , sinceVersion = Nothing }
              , argScope = ScopeTypeInvalid
              , argClosure = -1
              , argDestroy = -1
              , argCallerAllocates = False
              , argCallbackUserData = True
              , transfer = TransferNothing
              }
          ]
      , skipReturn = False
      , callableThrows = False
      , callableDeprecated = Nothing
      , callableDocumentation =
          Documentation
            { rawDocText =
                Just
                  "Whenever @row changes or which row is before @row changes this\nis called, which lets you update the header on @row. You may\nremove or set a new one via gtk_list_box_row_set_header() or\njust change the state of the current header widget."
            , sinceVersion = Just "3.10"
            }
      , callableResolvable = Nothing
      }
    -}
    -- | Type for the callback on the (unwrapped) C side.
    type C_ListBoxUpdateHeaderFunc =
        Ptr Gtk.ListBoxRow.ListBoxRow ->
        Ptr Gtk.ListBoxRow.ListBoxRow ->
        Ptr () ->
        IO ()

    -- Args: [ Arg
    --           { argCName = "row"
    --           , argType =
    --               TInterface Name { namespace = "Gtk" , name = "ListBoxRow" }
    --           , argCType = Just "GtkListBoxRow*"
    --           , direction = DirectionIn
    --           , mayBeNull = False
    --           , argDoc =
    --               Documentation
    --                 { rawDocText = Just "the row to update" , sinceVersion = Nothing }
    --           , argScope = ScopeTypeInvalid
    --           , argClosure = -1
    --           , argDestroy = -1
    --           , argCallerAllocates = False
    --           , argCallbackUserData = False
    --           , transfer = TransferNothing
    --           }
    --       , Arg
    --           { argCName = "before"
    --           , argType =
    --               TInterface Name { namespace = "Gtk" , name = "ListBoxRow" }
    --           , argCType = Just "GtkListBoxRow*"
    --           , direction = DirectionIn
    --           , mayBeNull = True
    --           , argDoc =
    --               Documentation
    --                 { rawDocText = Just "the row before @row, or %NULL if it is first"
    --                 , sinceVersion = Nothing
    --                 }
    --           , argScope = ScopeTypeInvalid
    --           , argClosure = -1
    --           , argDestroy = -1
    --           , argCallerAllocates = False
    --           , argCallbackUserData = False
    --           , transfer = TransferNothing
    --           }
    --       , Arg
    --           { argCName = "user_data"
    --           , argType = TBasicType TPtr
    --           , argCType = Just "gpointer"
    --           , direction = DirectionIn
    --           , mayBeNull = True
    --           , argDoc =
    --               Documentation
    --                 { rawDocText = Just "user data" , sinceVersion = Nothing }
    --           , argScope = ScopeTypeInvalid
    --           , argClosure = -1
    --           , argDestroy = -1
    --           , argCallerAllocates = False
    --           , argCallbackUserData = True
    --           , transfer = TransferNothing
    --           }
    --       ]
    -- Lengths: []
    -- returnType: Nothing
    -- throws : False
    -- Skip return : False

    foreign import ccall "dynamic" __dynamic_C_ListBoxUpdateHeaderFunc :: FunPtr C_ListBoxUpdateHeaderFunc -> C_ListBoxUpdateHeaderFunc

    -- | Given a pointer to a foreign C function, wrap it into a function callable from Haskell.
    dynamic_ListBoxUpdateHeaderFunc ::
        (B.CallStack.HasCallStack, MonadIO m, Gtk.ListBoxRow.IsListBoxRow a, Gtk.ListBoxRow.IsListBoxRow b) =>
        FunPtr C_ListBoxUpdateHeaderFunc
        -> a
        -- ^ /@row@/: the row to update
        -> Maybe (b)
        -- ^ /@before@/: the row before /@row@/, or 'P.Nothing' if it is first
        -> Ptr ()
        -- ^ /@userData@/: user data
        -> m ()
    dynamic_ListBoxUpdateHeaderFunc :: forall (m :: * -> *) a b.
    (HasCallStack, MonadIO m, IsListBoxRow a, IsListBoxRow b) =>
    FunPtr C_ListBoxUpdateHeaderFunc -> a -> Maybe b -> Ptr () -> m ()
    dynamic_ListBoxUpdateHeaderFunc FunPtr C_ListBoxUpdateHeaderFunc
    __funPtr a
    row Maybe b
    before Ptr ()
    userData = IO () -> m ()
    forall a. IO a -> m a
    forall (m :: * -> *) a. MonadIO m => IO a -> m a
    liftIO (IO () -> m ()) -> IO () -> m ()
    forall a b. (a -> b) -> a -> b
    $ do
        row' <- a -> IO (Ptr ListBoxRow)
    forall a b. (HasCallStack, ManagedPtrNewtype a) => a -> IO (Ptr b)
    unsafeManagedPtrCastPtr a
    row
        maybeBefore <- case before of
            Maybe b
    Nothing -> Ptr ListBoxRow -> IO (Ptr ListBoxRow)
    forall a. a -> IO a
    forall (m :: * -> *) a. Monad m => a -> m a
    return Ptr ListBoxRow
    forall a. Ptr a
    FP.nullPtr
            Just b
    jBefore -> do
                jBefore' <- b -> IO (Ptr ListBoxRow)
    forall a b. (HasCallStack, ManagedPtrNewtype a) => a -> IO (Ptr b)
    unsafeManagedPtrCastPtr b
    jBefore
                return jBefore'
        (__dynamic_C_ListBoxUpdateHeaderFunc __funPtr) row' maybeBefore userData
        touchManagedPtr row
        whenJust before touchManagedPtr
        return ()

    -- | Generate a function pointer callable from C code, from a `C_ListBoxUpdateHeaderFunc`.
    foreign import ccall "wrapper"
        mk_ListBoxUpdateHeaderFunc :: C_ListBoxUpdateHeaderFunc -> IO (FunPtr C_ListBoxUpdateHeaderFunc)

    -- | Whenever /@row@/ changes or which row is before /@row@/ changes this
    -- is called, which lets you update the header on /@row@/. You may
    -- remove or set a new one via 'GI.Gtk.Objects.ListBoxRow.listBoxRowSetHeader' or
    -- just change the state of the current header widget.
    --
    -- /Since: 3.10/
    type ListBoxUpdateHeaderFunc =
        Gtk.ListBoxRow.ListBoxRow
        -- ^ /@row@/: the row to update
        -> Maybe Gtk.ListBoxRow.ListBoxRow
        -- ^ /@before@/: the row before /@row@/, or 'P.Nothing' if it is first
        -> IO ()

    -- | A convenience synonym for @`Nothing` :: `Maybe` `ListBoxUpdateHeaderFunc`@.
    noListBoxUpdateHeaderFunc :: Maybe ListBoxUpdateHeaderFunc
    noListBoxUpdateHeaderFunc :: Maybe ListBoxUpdateHeaderFunc
    noListBoxUpdateHeaderFunc = Maybe ListBoxUpdateHeaderFunc
    forall a. Maybe a
    Nothing

    -- | Whenever /@row@/ changes or which row is before /@row@/ changes this
    -- is called, which lets you update the header on /@row@/. You may
    -- remove or set a new one via 'GI.Gtk.Objects.ListBoxRow.listBoxRowSetHeader' or
    -- just change the state of the current header widget.
    --
    -- /Since: 3.10/
    type ListBoxUpdateHeaderFunc_WithClosures =
        Gtk.ListBoxRow.ListBoxRow
        -- ^ /@row@/: the row to update
        -> Maybe Gtk.ListBoxRow.ListBoxRow
        -- ^ /@before@/: the row before /@row@/, or 'P.Nothing' if it is first
        -> Ptr ()
        -- ^ /@userData@/: user data
        -> IO ()

    -- | A convenience synonym for @`Nothing` :: `Maybe` `ListBoxUpdateHeaderFunc_WithClosures`@.
    noListBoxUpdateHeaderFunc_WithClosures :: Maybe ListBoxUpdateHeaderFunc_WithClosures
    noListBoxUpdateHeaderFunc_WithClosures :: Maybe ListBoxUpdateHeaderFunc_WithClosures
    noListBoxUpdateHeaderFunc_WithClosures = Maybe ListBoxUpdateHeaderFunc_WithClosures
    forall a. Maybe a
    Nothing

    -- | A simple wrapper that ignores the closure arguments.
    drop_closures_ListBoxUpdateHeaderFunc :: ListBoxUpdateHeaderFunc -> ListBoxUpdateHeaderFunc_WithClosures
    drop_closures_ListBoxUpdateHeaderFunc :: ListBoxUpdateHeaderFunc -> ListBoxUpdateHeaderFunc_WithClosures
    drop_closures_ListBoxUpdateHeaderFunc ListBoxUpdateHeaderFunc
    _f ListBoxRow
    row Maybe ListBoxRow
    before Ptr ()
    _ = ListBoxUpdateHeaderFunc
    _f ListBoxRow
    row Maybe ListBoxRow
    before

    -- | Wrap the callback into a `GClosure`.
    genClosure_ListBoxUpdateHeaderFunc :: MonadIO m => ListBoxUpdateHeaderFunc -> m (GClosure C_ListBoxUpdateHeaderFunc)
    genClosure_ListBoxUpdateHeaderFunc :: forall (m :: * -> *).
    MonadIO m =>
    ListBoxUpdateHeaderFunc -> m (GClosure C_ListBoxUpdateHeaderFunc)
    genClosure_ListBoxUpdateHeaderFunc ListBoxUpdateHeaderFunc
    cb = IO (GClosure C_ListBoxUpdateHeaderFunc)
    -> m (GClosure C_ListBoxUpdateHeaderFunc)
    forall a. IO a -> m a
    forall (m :: * -> *) a. MonadIO m => IO a -> m a
    liftIO (IO (GClosure C_ListBoxUpdateHeaderFunc)
     -> m (GClosure C_ListBoxUpdateHeaderFunc))
    -> IO (GClosure C_ListBoxUpdateHeaderFunc)
    -> m (GClosure C_ListBoxUpdateHeaderFunc)
    forall a b. (a -> b) -> a -> b
    $ do
        let cb' :: ListBoxUpdateHeaderFunc_WithClosures
    cb' = ListBoxUpdateHeaderFunc -> ListBoxUpdateHeaderFunc_WithClosures
    drop_closures_ListBoxUpdateHeaderFunc ListBoxUpdateHeaderFunc
    cb
        let cb'' :: C_ListBoxUpdateHeaderFunc
    cb'' = Maybe (Ptr (FunPtr C_ListBoxUpdateHeaderFunc))
    -> ListBoxUpdateHeaderFunc_WithClosures
    -> C_ListBoxUpdateHeaderFunc
    wrap_ListBoxUpdateHeaderFunc Maybe (Ptr (FunPtr C_ListBoxUpdateHeaderFunc))
    forall a. Maybe a
    Nothing ListBoxUpdateHeaderFunc_WithClosures
    cb'
        C_ListBoxUpdateHeaderFunc -> IO (FunPtr C_ListBoxUpdateHeaderFunc)
    mk_ListBoxUpdateHeaderFunc C_ListBoxUpdateHeaderFunc
    cb'' IO (FunPtr C_ListBoxUpdateHeaderFunc)
    -> (FunPtr C_ListBoxUpdateHeaderFunc
        -> IO (GClosure C_ListBoxUpdateHeaderFunc))
    -> IO (GClosure C_ListBoxUpdateHeaderFunc)
    forall a b. IO a -> (a -> IO b) -> IO b
    forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
    >>= FunPtr C_ListBoxUpdateHeaderFunc
    -> IO (GClosure C_ListBoxUpdateHeaderFunc)
    forall (m :: * -> *) a. MonadIO m => FunPtr a -> m (GClosure a)
    B.GClosure.newGClosure

    -- | Wrap a `ListBoxUpdateHeaderFunc` into a `C_ListBoxUpdateHeaderFunc`.
    wrap_ListBoxUpdateHeaderFunc ::
        Maybe (Ptr (FunPtr C_ListBoxUpdateHeaderFunc)) ->
        ListBoxUpdateHeaderFunc_WithClosures ->
        C_ListBoxUpdateHeaderFunc
    wrap_ListBoxUpdateHeaderFunc :: Maybe (Ptr (FunPtr C_ListBoxUpdateHeaderFunc))
    -> ListBoxUpdateHeaderFunc_WithClosures
    -> C_ListBoxUpdateHeaderFunc
    wrap_ListBoxUpdateHeaderFunc Maybe (Ptr (FunPtr C_ListBoxUpdateHeaderFunc))
    gi'funptrptr ListBoxUpdateHeaderFunc_WithClosures
    gi'cb Ptr ListBoxRow
    row Ptr ListBoxRow
    before Ptr ()
    userData = do
        row' <- ((ManagedPtr ListBoxRow -> ListBoxRow)
    -> Ptr ListBoxRow -> IO ListBoxRow
    forall a b.
    (HasCallStack, GObject a, GObject b) =>
    (ManagedPtr a -> a) -> Ptr b -> IO a
    newObject ManagedPtr ListBoxRow -> ListBoxRow
    Gtk.ListBoxRow.ListBoxRow) Ptr ListBoxRow
    row
        maybeBefore <-
            if before == FP.nullPtr
            then return Nothing
            else do
                before' <- (newObject Gtk.ListBoxRow.ListBoxRow) before
                return $ Just before'
        gi'cb  row' maybeBefore userData
        maybeReleaseFunPtr gi'funptrptr

    -- callback ListBoxSortFunc
    {- Callable
      { returnType = Just (TBasicType TInt)
      , returnMayBeNull = False
      , returnTransfer = TransferNothing
      , returnDocumentation =
          Documentation
            { rawDocText =
                Just
                  "< 0 if @row1 should be before @row2, 0 if they are\n    equal and > 0 otherwise"
            , sinceVersion = Nothing
            }
      , args =
          [ Arg
              { argCName = "row1"
              , argType =
                  TInterface Name { namespace = "Gtk" , name = "ListBoxRow" }
              , argCType = Just "GtkListBoxRow*"
              , direction = DirectionIn
              , mayBeNull = False
              , argDoc =
                  Documentation
                    { rawDocText = Just "the first row" , sinceVersion = Nothing }
              , argScope = ScopeTypeInvalid
              , argClosure = -1
              , argDestroy = -1
              , argCallerAllocates = False
              , argCallbackUserData = False
              , transfer = TransferNothing
              }
          , Arg
              { argCName = "row2"
              , argType =
                  TInterface Name { namespace = "Gtk" , name = "ListBoxRow" }
              , argCType = Just "GtkListBoxRow*"
              , direction = DirectionIn
              , mayBeNull = False
              , argDoc =
                  Documentation
                    { rawDocText = Just "the second row" , sinceVersion = Nothing }
              , argScope = ScopeTypeInvalid
              , argClosure = -1
              , argDestroy = -1
              , argCallerAllocates = False
              , argCallbackUserData = False
              , transfer = TransferNothing
              }
          , Arg
              { argCName = "user_data"
              , argType = TBasicType TPtr
              , argCType = Just "gpointer"
              , direction = DirectionIn
              , mayBeNull = True
              , argDoc =
                  Documentation
                    { rawDocText = Just "user data" , sinceVersion = Nothing }
              , argScope = ScopeTypeInvalid
              , argClosure = -1
              , argDestroy = -1
              , argCallerAllocates = False
              , argCallbackUserData = True
              , transfer = TransferNothing
              }
          ]
      , skipReturn = False
      , callableThrows = False
      , callableDeprecated = Nothing
      , callableDocumentation =
          Documentation
            { rawDocText =
                Just "Compare two rows to determine which should be first."
            , sinceVersion = Just "3.10"
            }
      , callableResolvable = Nothing
      }
    -}
    -- | Type for the callback on the (unwrapped) C side.
    type C_ListBoxSortFunc =
        Ptr Gtk.ListBoxRow.ListBoxRow ->
        Ptr Gtk.ListBoxRow.ListBoxRow ->
        Ptr () ->
        IO Int32

    -- Args: [ Arg
    --           { argCName = "row1"
    --           , argType =
    --               TInterface Name { namespace = "Gtk" , name = "ListBoxRow" }
    --           , argCType = Just "GtkListBoxRow*"
    --           , direction = DirectionIn
    --           , mayBeNull = False
    --           , argDoc =
    --               Documentation
    --                 { rawDocText = Just "the first row" , sinceVersion = Nothing }
    --           , argScope = ScopeTypeInvalid
    --           , argClosure = -1
    --           , argDestroy = -1
    --           , argCallerAllocates = False
    --           , argCallbackUserData = False
    --           , transfer = TransferNothing
    --           }
    --       , Arg
    --           { argCName = "row2"
    --           , argType =
    --               TInterface Name { namespace = "Gtk" , name = "ListBoxRow" }
    --           , argCType = Just "GtkListBoxRow*"
    --           , direction = DirectionIn
    --           , mayBeNull = False
    --           , argDoc =
    --               Documentation
    --                 { rawDocText = Just "the second row" , sinceVersion = Nothing }
    --           , argScope = ScopeTypeInvalid
    --           , argClosure = -1
    --           , argDestroy = -1
    --           , argCallerAllocates = False
    --           , argCallbackUserData = False
    --           , transfer = TransferNothing
    --           }
    --       , Arg
    --           { argCName = "user_data"
    --           , argType = TBasicType TPtr
    --           , argCType = Just "gpointer"
    --           , direction = DirectionIn
    --           , mayBeNull = True
    --           , argDoc =
    --               Documentation
    --                 { rawDocText = Just "user data" , sinceVersion = Nothing }
    --           , argScope = ScopeTypeInvalid
    --           , argClosure = -1
    --           , argDestroy = -1
    --           , argCallerAllocates = False
    --           , argCallbackUserData = True
    --           , transfer = TransferNothing
    --           }
    --       ]
    -- Lengths: []
    -- returnType: Just (TBasicType TInt)
    -- throws : False
    -- Skip return : False

    foreign import ccall "dynamic" __dynamic_C_ListBoxSortFunc :: FunPtr C_ListBoxSortFunc -> C_ListBoxSortFunc

    -- | Given a pointer to a foreign C function, wrap it into a function callable from Haskell.
    dynamic_ListBoxSortFunc ::
        (B.CallStack.HasCallStack, MonadIO m, Gtk.ListBoxRow.IsListBoxRow a, Gtk.ListBoxRow.IsListBoxRow b) =>
        FunPtr C_ListBoxSortFunc
        -> a
        -- ^ /@row1@/: the first row
        -> b
        -- ^ /@row2@/: the second row
        -> Ptr ()
        -- ^ /@userData@/: user data
        -> m Int32
        -- ^ __Returns:__ \< 0 if /@row1@/ should be before /@row2@/, 0 if they are
        --     equal and > 0 otherwise
    dynamic_ListBoxSortFunc :: forall (m :: * -> *) a b.
    (HasCallStack, MonadIO m, IsListBoxRow a, IsListBoxRow b) =>
    FunPtr C_ListBoxSortFunc -> a -> b -> Ptr () -> m Int32
    dynamic_ListBoxSortFunc FunPtr C_ListBoxSortFunc
    __funPtr a
    row1 b
    row2 Ptr ()
    userData = IO Int32 -> m Int32
    forall a. IO a -> m a
    forall (m :: * -> *) a. MonadIO m => IO a -> m a
    liftIO (IO Int32 -> m Int32) -> IO Int32 -> m Int32
    forall a b. (a -> b) -> a -> b
    $ do
        row1' <- a -> IO (Ptr ListBoxRow)
    forall a b. (HasCallStack, ManagedPtrNewtype a) => a -> IO (Ptr b)
    unsafeManagedPtrCastPtr a
    row1
        row2' <- unsafeManagedPtrCastPtr row2
        result <- (__dynamic_C_ListBoxSortFunc __funPtr) row1' row2' userData
        touchManagedPtr row1
        touchManagedPtr row2
        return result

    -- | Generate a function pointer callable from C code, from a `C_ListBoxSortFunc`.
    foreign import ccall "wrapper"
        mk_ListBoxSortFunc :: C_ListBoxSortFunc -> IO (FunPtr C_ListBoxSortFunc)

    -- | Compare two rows to determine which should be first.
    --
    -- /Since: 3.10/
    type ListBoxSortFunc =
        Gtk.ListBoxRow.ListBoxRow
        -- ^ /@row1@/: the first row
        -> Gtk.ListBoxRow.ListBoxRow
        -- ^ /@row2@/: the second row
        -> IO Int32
        -- ^ __Returns:__ \< 0 if /@row1@/ should be before /@row2@/, 0 if they are
        --     equal and > 0 otherwise

    -- | A convenience synonym for @`Nothing` :: `Maybe` `ListBoxSortFunc`@.
    noListBoxSortFunc :: Maybe ListBoxSortFunc
    noListBoxSortFunc :: Maybe ListBoxSortFunc
    noListBoxSortFunc = Maybe ListBoxSortFunc
    forall a. Maybe a
    Nothing

    -- | Compare two rows to determine which should be first.
    --
    -- /Since: 3.10/
    type ListBoxSortFunc_WithClosures =
        Gtk.ListBoxRow.ListBoxRow
        -- ^ /@row1@/: the first row
        -> Gtk.ListBoxRow.ListBoxRow
        -- ^ /@row2@/: the second row
        -> Ptr ()
        -- ^ /@userData@/: user data
        -> IO Int32
        -- ^ __Returns:__ \< 0 if /@row1@/ should be before /@row2@/, 0 if they are
        --     equal and > 0 otherwise

    -- | A convenience synonym for @`Nothing` :: `Maybe` `ListBoxSortFunc_WithClosures`@.
    noListBoxSortFunc_WithClosures :: Maybe ListBoxSortFunc_WithClosures
    noListBoxSortFunc_WithClosures :: Maybe ListBoxSortFunc_WithClosures
    noListBoxSortFunc_WithClosures = Maybe ListBoxSortFunc_WithClosures
    forall a. Maybe a
    Nothing

    -- | A simple wrapper that ignores the closure arguments.
    drop_closures_ListBoxSortFunc :: ListBoxSortFunc -> ListBoxSortFunc_WithClosures
    drop_closures_ListBoxSortFunc :: ListBoxSortFunc -> ListBoxSortFunc_WithClosures
    drop_closures_ListBoxSortFunc ListBoxSortFunc
    _f ListBoxRow
    row1 ListBoxRow
    row2 Ptr ()
    _ = ListBoxSortFunc
    _f ListBoxRow
    row1 ListBoxRow
    row2

    -- | Wrap the callback into a `GClosure`.
    genClosure_ListBoxSortFunc :: MonadIO m => ListBoxSortFunc -> m (GClosure C_ListBoxSortFunc)
    genClosure_ListBoxSortFunc :: forall (m :: * -> *).
    MonadIO m =>
    ListBoxSortFunc -> m (GClosure C_ListBoxSortFunc)
    genClosure_ListBoxSortFunc ListBoxSortFunc
    cb = IO (GClosure C_ListBoxSortFunc) -> m (GClosure C_ListBoxSortFunc)
    forall a. IO a -> m a
    forall (m :: * -> *) a. MonadIO m => IO a -> m a
    liftIO (IO (GClosure C_ListBoxSortFunc) -> m (GClosure C_ListBoxSortFunc))
    -> IO (GClosure C_ListBoxSortFunc)
    -> m (GClosure C_ListBoxSortFunc)
    forall a b. (a -> b) -> a -> b
    $ do
        let cb' :: ListBoxSortFunc_WithClosures
    cb' = ListBoxSortFunc -> ListBoxSortFunc_WithClosures
    drop_closures_ListBoxSortFunc ListBoxSortFunc
    cb
        let cb'' :: C_ListBoxSortFunc
    cb'' = Maybe (Ptr (FunPtr C_ListBoxSortFunc))
    -> ListBoxSortFunc_WithClosures -> C_ListBoxSortFunc
    wrap_ListBoxSortFunc Maybe (Ptr (FunPtr C_ListBoxSortFunc))
    forall a. Maybe a
    Nothing ListBoxSortFunc_WithClosures
    cb'
        C_ListBoxSortFunc -> IO (FunPtr C_ListBoxSortFunc)
    mk_ListBoxSortFunc C_ListBoxSortFunc
    cb'' IO (FunPtr C_ListBoxSortFunc)
    -> (FunPtr C_ListBoxSortFunc -> IO (GClosure C_ListBoxSortFunc))
    -> IO (GClosure C_ListBoxSortFunc)
    forall a b. IO a -> (a -> IO b) -> IO b
    forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
    >>= FunPtr C_ListBoxSortFunc -> IO (GClosure C_ListBoxSortFunc)
    forall (m :: * -> *) a. MonadIO m => FunPtr a -> m (GClosure a)
    B.GClosure.newGClosure

    -- | Wrap a `ListBoxSortFunc` into a `C_ListBoxSortFunc`.
    wrap_ListBoxSortFunc ::
        Maybe (Ptr (FunPtr C_ListBoxSortFunc)) ->
        ListBoxSortFunc_WithClosures ->
        C_ListBoxSortFunc
    wrap_ListBoxSortFunc :: Maybe (Ptr (FunPtr C_ListBoxSortFunc))
    -> ListBoxSortFunc_WithClosures -> C_ListBoxSortFunc
    wrap_ListBoxSortFunc Maybe (Ptr (FunPtr C_ListBoxSortFunc))
    gi'funptrptr ListBoxSortFunc_WithClosures
    gi'cb Ptr ListBoxRow
    row1 Ptr ListBoxRow
    row2 Ptr ()
    userData = do
        row1' <- ((ManagedPtr ListBoxRow -> ListBoxRow)
    -> Ptr ListBoxRow -> IO ListBoxRow
    forall a b.
    (HasCallStack, GObject a, GObject b) =>
    (ManagedPtr a -> a) -> Ptr b -> IO a
    newObject ManagedPtr ListBoxRow -> ListBoxRow
    Gtk.ListBoxRow.ListBoxRow) Ptr ListBoxRow
    row1
        row2' <- (newObject Gtk.ListBoxRow.ListBoxRow) row2
        result <- gi'cb  row1' row2' userData
        maybeReleaseFunPtr gi'funptrptr
        return result

    -- callback ListBoxForeachFunc
    {- Callable
      { returnType = Nothing
      , returnMayBeNull = False
      , returnTransfer = TransferNothing
      , returnDocumentation =
          Documentation { rawDocText = Nothing , sinceVersion = Nothing }
      , args =
          [ Arg
              { argCName = "box"
              , argType =
                  TInterface Name { namespace = "Gtk" , name = "ListBox" }
              , argCType = Just "GtkListBox*"
              , direction = DirectionIn
              , mayBeNull = False
              , argDoc =
                  Documentation
                    { rawDocText = Just "a #GtkListBox" , sinceVersion = Nothing }
              , argScope = ScopeTypeInvalid
              , argClosure = -1
              , argDestroy = -1
              , argCallerAllocates = False
              , argCallbackUserData = False
              , transfer = TransferNothing
              }
          , Arg
              { argCName = "row"
              , argType =
                  TInterface Name { namespace = "Gtk" , name = "ListBoxRow" }
              , argCType = Just "GtkListBoxRow*"
              , direction = DirectionIn
              , mayBeNull = False
              , argDoc =
                  Documentation
                    { rawDocText = Just "a #GtkListBoxRow" , sinceVersion = Nothing }
              , argScope = ScopeTypeInvalid
              , argClosure = -1
              , argDestroy = -1
              , argCallerAllocates = False
              , argCallbackUserData = False
              , transfer = TransferNothing
              }
          , Arg
              { argCName = "user_data"
              , argType = TBasicType TPtr
              , argCType = Just "gpointer"
              , direction = DirectionIn
              , mayBeNull = True
              , argDoc =
                  Documentation
                    { rawDocText = Just "user data" , sinceVersion = Nothing }
              , argScope = ScopeTypeInvalid
              , argClosure = -1
              , argDestroy = -1
              , argCallerAllocates = False
              , argCallbackUserData = True
              , transfer = TransferNothing
              }
          ]
      , skipReturn = False
      , callableThrows = False
      , callableDeprecated = Nothing
      , callableDocumentation =
          Documentation
            { rawDocText =
                Just
                  "A function used by gtk_list_box_selected_foreach().\nIt will be called on every selected child of the @box."
            , sinceVersion = Just "3.14"
            }
      , callableResolvable = Nothing
      }
    -}
    -- | Type for the callback on the (unwrapped) C side.
    type C_ListBoxForeachFunc =
        Ptr Gtk.ListBox.ListBox ->
        Ptr Gtk.ListBoxRow.ListBoxRow ->
        Ptr () ->
        IO ()

    -- Args: [ Arg
    --           { argCName = "box"
    --           , argType =
    --               TInterface Name { namespace = "Gtk" , name = "ListBox" }
    --           , argCType = Just "GtkListBox*"
    --           , direction = DirectionIn
    --           , mayBeNull = False
    --           , argDoc =
    --               Documentation
    --                 { rawDocText = Just "a #GtkListBox" , sinceVersion = Nothing }
    --           , argScope = ScopeTypeInvalid
    --           , argClosure = -1
    --           , argDestroy = -1
    --           , argCallerAllocates = False
    --           , argCallbackUserData = False
    --           , transfer = TransferNothing
    --           }
    --       , Arg
    --           { argCName = "row"
    --           , argType =
    --               TInterface Name { namespace = "Gtk" , name = "ListBoxRow" }
    --           , argCType = Just "GtkListBoxRow*"
    --           , direction = DirectionIn
    --           , mayBeNull = False
    --           , argDoc =
    --               Documentation
    --                 { rawDocText = Just "a #GtkListBoxRow" , sinceVersion = Nothing }
    --           , argScope = ScopeTypeInvalid
    --           , argClosure = -1
    --           , argDestroy = -1
    --           , argCallerAllocates = False
    --           , argCallbackUserData = False
    --           , transfer = TransferNothing
    --           }
    --       , Arg
    --           { argCName = "user_data"
    --           , argType = TBasicType TPtr
    --           , argCType = Just "gpointer"
    --           , direction = DirectionIn
    --           , mayBeNull = True
    --           , argDoc =
    --               Documentation
    --                 { rawDocText = Just "user data" , sinceVersion = Nothing }
    --           , argScope = ScopeTypeInvalid
    --           , argClosure = -1
    --           , argDestroy = -1
    --           , argCallerAllocates = False
    --           , argCallbackUserData = True
    --           , transfer = TransferNothing
    --           }
    --       ]
    -- Lengths: []
    -- returnType: Nothing
    -- throws : False
    -- Skip return : False

    foreign import ccall "dynamic" __dynamic_C_ListBoxForeachFunc :: FunPtr C_ListBoxForeachFunc -> C_ListBoxForeachFunc

    -- | Given a pointer to a foreign C function, wrap it into a function callable from Haskell.
    dynamic_ListBoxForeachFunc ::
        (B.CallStack.HasCallStack, MonadIO m, Gtk.ListBox.IsListBox a, Gtk.ListBoxRow.IsListBoxRow b) =>
        FunPtr C_ListBoxForeachFunc
        -> a
        -- ^ /@box@/: a t'GI.Gtk.Objects.ListBox.ListBox'
        -> b
        -- ^ /@row@/: a t'GI.Gtk.Objects.ListBoxRow.ListBoxRow'
        -> Ptr ()
        -- ^ /@userData@/: user data
        -> m ()
    dynamic_ListBoxForeachFunc :: forall (m :: * -> *) a b.
    (HasCallStack, MonadIO m, IsListBox a, IsListBoxRow b) =>
    FunPtr C_ListBoxForeachFunc -> a -> b -> Ptr () -> m ()
    dynamic_ListBoxForeachFunc FunPtr C_ListBoxForeachFunc
    __funPtr a
    box b
    row Ptr ()
    userData = IO () -> m ()
    forall a. IO a -> m a
    forall (m :: * -> *) a. MonadIO m => IO a -> m a
    liftIO (IO () -> m ()) -> IO () -> m ()
    forall a b. (a -> b) -> a -> b
    $ do
        box' <- a -> IO (Ptr ListBox)
    forall a b. (HasCallStack, ManagedPtrNewtype a) => a -> IO (Ptr b)
    unsafeManagedPtrCastPtr a
    box
        row' <- unsafeManagedPtrCastPtr row
        (__dynamic_C_ListBoxForeachFunc __funPtr) box' row' userData
        touchManagedPtr box
        touchManagedPtr row
        return ()

    -- | Generate a function pointer callable from C code, from a `C_ListBoxForeachFunc`.
    foreign import ccall "wrapper"
        mk_ListBoxForeachFunc :: C_ListBoxForeachFunc -> IO (FunPtr C_ListBoxForeachFunc)

    -- | A function used by 'GI.Gtk.Objects.ListBox.listBoxSelectedForeach'.
    -- It will be called on every selected child of the /@box@/.
    --
    -- /Since: 3.14/
    type ListBoxForeachFunc =
        Gtk.ListBox.ListBox
        -- ^ /@box@/: a t'GI.Gtk.Objects.ListBox.ListBox'
        -> Gtk.ListBoxRow.ListBoxRow
        -- ^ /@row@/: a t'GI.Gtk.Objects.ListBoxRow.ListBoxRow'
        -> IO ()

    -- | A convenience synonym for @`Nothing` :: `Maybe` `ListBoxForeachFunc`@.
    noListBoxForeachFunc :: Maybe ListBoxForeachFunc
    noListBoxForeachFunc :: Maybe ListBoxForeachFunc
    noListBoxForeachFunc = Maybe ListBoxForeachFunc
    forall a. Maybe a
    Nothing

    -- | A function used by 'GI.Gtk.Objects.ListBox.listBoxSelectedForeach'.
    -- It will be called on every selected child of the /@box@/.
    --
    -- /Since: 3.14/
    type ListBoxForeachFunc_WithClosures =
        Gtk.ListBox.ListBox
        -- ^ /@box@/: a t'GI.Gtk.Objects.ListBox.ListBox'
        -> Gtk.ListBoxRow.ListBoxRow
        -- ^ /@row@/: a t'GI.Gtk.Objects.ListBoxRow.ListBoxRow'
        -> Ptr ()
        -- ^ /@userData@/: user data
        -> IO ()

    -- | A convenience synonym for @`Nothing` :: `Maybe` `ListBoxForeachFunc_WithClosures`@.
    noListBoxForeachFunc_WithClosures :: Maybe ListBoxForeachFunc_WithClosures
    noListBoxForeachFunc_WithClosures :: Maybe ListBoxForeachFunc_WithClosures
    noListBoxForeachFunc_WithClosures = Maybe ListBoxForeachFunc_WithClosures
    forall a. Maybe a
    Nothing

    -- | A simple wrapper that ignores the closure arguments.
    drop_closures_ListBoxForeachFunc :: ListBoxForeachFunc -> ListBoxForeachFunc_WithClosures
    drop_closures_ListBoxForeachFunc :: ListBoxForeachFunc -> ListBoxForeachFunc_WithClosures
    drop_closures_ListBoxForeachFunc ListBoxForeachFunc
    _f ListBox
    box ListBoxRow
    row Ptr ()
    _ = ListBoxForeachFunc
    _f ListBox
    box ListBoxRow
    row

    -- | Wrap the callback into a `GClosure`.
    genClosure_ListBoxForeachFunc :: MonadIO m => ListBoxForeachFunc -> m (GClosure C_ListBoxForeachFunc)
    genClosure_ListBoxForeachFunc :: forall (m :: * -> *).
    MonadIO m =>
    ListBoxForeachFunc -> m (GClosure C_ListBoxForeachFunc)
    genClosure_ListBoxForeachFunc ListBoxForeachFunc
    cb = IO (GClosure C_ListBoxForeachFunc)
    -> m (GClosure C_ListBoxForeachFunc)
    forall a. IO a -> m a
    forall (m :: * -> *) a. MonadIO m => IO a -> m a
    liftIO (IO (GClosure C_ListBoxForeachFunc)
     -> m (GClosure C_ListBoxForeachFunc))
    -> IO (GClosure C_ListBoxForeachFunc)
    -> m (GClosure C_ListBoxForeachFunc)
    forall a b. (a -> b) -> a -> b
    $ do
        let cb' :: ListBoxForeachFunc_WithClosures
    cb' = ListBoxForeachFunc -> ListBoxForeachFunc_WithClosures
    drop_closures_ListBoxForeachFunc ListBoxForeachFunc
    cb
        let cb'' :: C_ListBoxForeachFunc
    cb'' = Maybe (Ptr (FunPtr C_ListBoxForeachFunc))
    -> ListBoxForeachFunc_WithClosures -> C_ListBoxForeachFunc
    wrap_ListBoxForeachFunc Maybe (Ptr (FunPtr C_ListBoxForeachFunc))
    forall a. Maybe a
    Nothing ListBoxForeachFunc_WithClosures
    cb'
        C_ListBoxForeachFunc -> IO (FunPtr C_ListBoxForeachFunc)
    mk_ListBoxForeachFunc C_ListBoxForeachFunc
    cb'' IO (FunPtr C_ListBoxForeachFunc)
    -> (FunPtr C_ListBoxForeachFunc
        -> IO (GClosure C_ListBoxForeachFunc))
    -> IO (GClosure C_ListBoxForeachFunc)
    forall a b. IO a -> (a -> IO b) -> IO b
    forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
    >>= FunPtr C_ListBoxForeachFunc -> IO (GClosure C_ListBoxForeachFunc)
    forall (m :: * -> *) a. MonadIO m => FunPtr a -> m (GClosure a)
    B.GClosure.newGClosure

    -- | Wrap a `ListBoxForeachFunc` into a `C_ListBoxForeachFunc`.
    wrap_ListBoxForeachFunc ::
        Maybe (Ptr (FunPtr C_ListBoxForeachFunc)) ->
        ListBoxForeachFunc_WithClosures ->
        C_ListBoxForeachFunc
    wrap_ListBoxForeachFunc :: Maybe (Ptr (FunPtr C_ListBoxForeachFunc))
    -> ListBoxForeachFunc_WithClosures -> C_ListBoxForeachFunc
    wrap_ListBoxForeachFunc Maybe (Ptr (FunPtr C_ListBoxForeachFunc))
    gi'funptrptr ListBoxForeachFunc_WithClosures
    gi'cb Ptr ListBox
    box Ptr ListBoxRow
    row Ptr ()
    userData = do
        box' <- ((ManagedPtr ListBox -> ListBox) -> Ptr ListBox -> IO ListBox
    forall a b.
    (HasCallStack, GObject a, GObject b) =>
    (ManagedPtr a -> a) -> Ptr b -> IO a
    newObject ManagedPtr ListBox -> ListBox
    Gtk.ListBox.ListBox) Ptr ListBox
    box
        row' <- (newObject Gtk.ListBoxRow.ListBoxRow) row
        gi'cb  box' row' userData
        maybeReleaseFunPtr gi'funptrptr

    -- callback ListBoxFilterFunc
    {- Callable
      { returnType = Just (TBasicType TBoolean)
      , returnMayBeNull = False
      , returnTransfer = TransferNothing
      , returnDocumentation =
          Documentation
            { rawDocText =
                Just "%TRUE if the row should be visible, %FALSE otherwise"
            , sinceVersion = Nothing
            }
      , args =
          [ Arg
              { argCName = "row"
              , argType =
                  TInterface Name { namespace = "Gtk" , name = "ListBoxRow" }
              , argCType = Just "GtkListBoxRow*"
              , direction = DirectionIn
              , mayBeNull = False
              , argDoc =
                  Documentation
                    { rawDocText = Just "the row that may be filtered"
                    , sinceVersion = Nothing
                    }
              , argScope = ScopeTypeInvalid
              , argClosure = -1
              , argDestroy = -1
              , argCallerAllocates = False
              , argCallbackUserData = False
              , transfer = TransferNothing
              }
          , Arg
              { argCName = "user_data"
              , argType = TBasicType TPtr
              , argCType = Just "gpointer"
              , direction = DirectionIn
              , mayBeNull = True
              , argDoc =
                  Documentation
                    { rawDocText = Just "user data" , sinceVersion = Nothing }
              , argScope = ScopeTypeInvalid
              , argClosure = -1
              , argDestroy = -1
              , argCallerAllocates = False
              , argCallbackUserData = True
              , transfer = TransferNothing
              }
          ]
      , skipReturn = False
      , callableThrows = False
      , callableDeprecated = Nothing
      , callableDocumentation =
          Documentation
            { rawDocText =
                Just
                  "Will be called whenever the row changes or is added and lets you control\nif the row should be visible or not."
            , sinceVersion = Just "3.10"
            }
      , callableResolvable = Nothing
      }
    -}
    -- | Type for the callback on the (unwrapped) C side.
    type C_ListBoxFilterFunc =
        Ptr Gtk.ListBoxRow.ListBoxRow ->
        Ptr () ->
        IO CInt

    -- Args: [ Arg
    --           { argCName = "row"
    --           , argType =
    --               TInterface Name { namespace = "Gtk" , name = "ListBoxRow" }
    --           , argCType = Just "GtkListBoxRow*"
    --           , direction = DirectionIn
    --           , mayBeNull = False
    --           , argDoc =
    --               Documentation
    --                 { rawDocText = Just "the row that may be filtered"
    --                 , sinceVersion = Nothing
    --                 }
    --           , argScope = ScopeTypeInvalid
    --           , argClosure = -1
    --           , argDestroy = -1
    --           , argCallerAllocates = False
    --           , argCallbackUserData = False
    --           , transfer = TransferNothing
    --           }
    --       , Arg
    --           { argCName = "user_data"
    --           , argType = TBasicType TPtr
    --           , argCType = Just "gpointer"
    --           , direction = DirectionIn
    --           , mayBeNull = True
    --           , argDoc =
    --               Documentation
    --                 { rawDocText = Just "user data" , sinceVersion = Nothing }
    --           , argScope = ScopeTypeInvalid
    --           , argClosure = -1
    --           , argDestroy = -1
    --           , argCallerAllocates = False
    --           , argCallbackUserData = True
    --           , transfer = TransferNothing
    --           }
    --       ]
    -- Lengths: []
    -- returnType: Just (TBasicType TBoolean)
    -- throws : False
    -- Skip return : False

    foreign import ccall "dynamic" __dynamic_C_ListBoxFilterFunc :: FunPtr C_ListBoxFilterFunc -> C_ListBoxFilterFunc

    -- | Given a pointer to a foreign C function, wrap it into a function callable from Haskell.
    dynamic_ListBoxFilterFunc ::
        (B.CallStack.HasCallStack, MonadIO m, Gtk.ListBoxRow.IsListBoxRow a) =>
        FunPtr C_ListBoxFilterFunc
        -> a
        -- ^ /@row@/: the row that may be filtered
        -> Ptr ()
        -- ^ /@userData@/: user data
        -> m Bool
        -- ^ __Returns:__ 'P.True' if the row should be visible, 'P.False' otherwise
    dynamic_ListBoxFilterFunc :: forall (m :: * -> *) a.
    (HasCallStack, MonadIO m, IsListBoxRow a) =>
    FunPtr C_ListBoxFilterFunc -> a -> Ptr () -> m Bool
    dynamic_ListBoxFilterFunc FunPtr C_ListBoxFilterFunc
    __funPtr a
    row Ptr ()
    userData = IO Bool -> m Bool
    forall a. IO a -> m a
    forall (m :: * -> *) a. MonadIO m => IO a -> m a
    liftIO (IO Bool -> m Bool) -> IO Bool -> m Bool
    forall a b. (a -> b) -> a -> b
    $ do
        row' <- a -> IO (Ptr ListBoxRow)
    forall a b. (HasCallStack, ManagedPtrNewtype a) => a -> IO (Ptr b)
    unsafeManagedPtrCastPtr a
    row
        result <- (__dynamic_C_ListBoxFilterFunc __funPtr) row' userData
        let result' = (CInt -> CInt -> Bool
    forall a. Eq a => a -> a -> Bool
    /= CInt
    0) CInt
    result
        touchManagedPtr row
        return result'

    -- | Generate a function pointer callable from C code, from a `C_ListBoxFilterFunc`.
    foreign import ccall "wrapper"
        mk_ListBoxFilterFunc :: C_ListBoxFilterFunc -> IO (FunPtr C_ListBoxFilterFunc)

    -- | Will be called whenever the row changes or is added and lets you control
    -- if the row should be visible or not.
    --
    -- /Since: 3.10/
    type ListBoxFilterFunc =
        Gtk.ListBoxRow.ListBoxRow
        -- ^ /@row@/: the row that may be filtered
        -> IO Bool
        -- ^ __Returns:__ 'P.True' if the row should be visible, 'P.False' otherwise

    -- | A convenience synonym for @`Nothing` :: `Maybe` `ListBoxFilterFunc`@.
    noListBoxFilterFunc :: Maybe ListBoxFilterFunc
    noListBoxFilterFunc :: Maybe ListBoxFilterFunc
    noListBoxFilterFunc = Maybe ListBoxFilterFunc
    forall a. Maybe a
    Nothing

    -- | Will be called whenever the row changes or is added and lets you control
    -- if the row should be visible or not.
    --
    -- /Since: 3.10/
    type ListBoxFilterFunc_WithClosures =
        Gtk.ListBoxRow.ListBoxRow
        -- ^ /@row@/: the row that may be filtered
        -> Ptr ()
        -- ^ /@userData@/: user data
        -> IO Bool
        -- ^ __Returns:__ 'P.True' if the row should be visible, 'P.False' otherwise

    -- | A convenience synonym for @`Nothing` :: `Maybe` `ListBoxFilterFunc_WithClosures`@.
    noListBoxFilterFunc_WithClosures :: Maybe ListBoxFilterFunc_WithClosures
    noListBoxFilterFunc_WithClosures :: Maybe ListBoxFilterFunc_WithClosures
    noListBoxFilterFunc_WithClosures = Maybe ListBoxFilterFunc_WithClosures
    forall a. Maybe a
    Nothing

    -- | A simple wrapper that ignores the closure arguments.
    drop_closures_ListBoxFilterFunc :: ListBoxFilterFunc -> ListBoxFilterFunc_WithClosures
    drop_closures_ListBoxFilterFunc :: ListBoxFilterFunc -> ListBoxFilterFunc_WithClosures
    drop_closures_ListBoxFilterFunc ListBoxFilterFunc
    _f ListBoxRow
    row Ptr ()
    _ = ListBoxFilterFunc
    _f ListBoxRow
    row

    -- | Wrap the callback into a `GClosure`.
    genClosure_ListBoxFilterFunc :: MonadIO m => ListBoxFilterFunc -> m (GClosure C_ListBoxFilterFunc)
    genClosure_ListBoxFilterFunc :: forall (m :: * -> *).
    MonadIO m =>
    ListBoxFilterFunc -> m (GClosure C_ListBoxFilterFunc)
    genClosure_ListBoxFilterFunc ListBoxFilterFunc
    cb = IO (GClosure C_ListBoxFilterFunc)
    -> m (GClosure C_ListBoxFilterFunc)
    forall a. IO a -> m a
    forall (m :: * -> *) a. MonadIO m => IO a -> m a
    liftIO (IO (GClosure C_ListBoxFilterFunc)
     -> m (GClosure C_ListBoxFilterFunc))
    -> IO (GClosure C_ListBoxFilterFunc)
    -> m (GClosure C_ListBoxFilterFunc)
    forall a b. (a -> b) -> a -> b
    $ do
        let cb' :: ListBoxFilterFunc_WithClosures
    cb' = ListBoxFilterFunc -> ListBoxFilterFunc_WithClosures
    drop_closures_ListBoxFilterFunc ListBoxFilterFunc
    cb
        let cb'' :: C_ListBoxFilterFunc
    cb'' = Maybe (Ptr (FunPtr C_ListBoxFilterFunc))
    -> ListBoxFilterFunc_WithClosures -> C_ListBoxFilterFunc
    wrap_ListBoxFilterFunc Maybe (Ptr (FunPtr C_ListBoxFilterFunc))
    forall a. Maybe a
    Nothing ListBoxFilterFunc_WithClosures
    cb'
        C_ListBoxFilterFunc -> IO (FunPtr C_ListBoxFilterFunc)
    mk_ListBoxFilterFunc C_ListBoxFilterFunc
    cb'' IO (FunPtr C_ListBoxFilterFunc)
    -> (FunPtr C_ListBoxFilterFunc
        -> IO (GClosure C_ListBoxFilterFunc))
    -> IO (GClosure C_ListBoxFilterFunc)
    forall a b. IO a -> (a -> IO b) -> IO b
    forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
    >>= FunPtr C_ListBoxFilterFunc -> IO (GClosure C_ListBoxFilterFunc)
    forall (m :: * -> *) a. MonadIO m => FunPtr a -> m (GClosure a)
    B.GClosure.newGClosure

    -- | Wrap a `ListBoxFilterFunc` into a `C_ListBoxFilterFunc`.
    wrap_ListBoxFilterFunc ::
        Maybe (Ptr (FunPtr C_ListBoxFilterFunc)) ->
        ListBoxFilterFunc_WithClosures ->
        C_ListBoxFilterFunc
    wrap_ListBoxFilterFunc :: Maybe (Ptr (FunPtr C_ListBoxFilterFunc))
    -> ListBoxFilterFunc_WithClosures -> C_ListBoxFilterFunc
    wrap_ListBoxFilterFunc Maybe (Ptr (FunPtr C_ListBoxFilterFunc))
    gi'funptrptr ListBoxFilterFunc_WithClosures
    gi'cb Ptr ListBoxRow
    row Ptr ()
    userData = do
        row' <- ((ManagedPtr ListBoxRow -> ListBoxRow)
    -> Ptr ListBoxRow -> IO ListBoxRow
    forall a b.
    (HasCallStack, GObject a, GObject b) =>
    (ManagedPtr a -> a) -> Ptr b -> IO a
    newObject ManagedPtr ListBoxRow -> ListBoxRow
    Gtk.ListBoxRow.ListBoxRow) Ptr ListBoxRow
    row
        result <- gi'cb  row' userData
        maybeReleaseFunPtr gi'funptrptr
        let result' = (Int -> CInt
    forall a b. (Integral a, Num b) => a -> b
    P.fromIntegral (Int -> CInt) -> (Bool -> Int) -> Bool -> CInt
    forall b c a. (b -> c) -> (a -> b) -> a -> c
    . Bool -> Int
    forall a. Enum a => a -> Int
    P.fromEnum) Bool
    result
        return result'

    -- callback ListBoxCreateWidgetFunc
    {- Callable
      { returnType =
          Just (TInterface Name { namespace = "Gtk" , name = "Widget" })
      , returnMayBeNull = False
      , returnTransfer = TransferEverything
      , returnDocumentation =
          Documentation
            { rawDocText = Just "a #GtkWidget that represents @item"
            , sinceVersion = Nothing
            }
      , args =
          [ Arg
              { argCName = "item"
              , argType =
                  TInterface Name { namespace = "GObject" , name = "Object" }
              , argCType = Just "gpointer"
              , direction = DirectionIn
              , mayBeNull = False
              , argDoc =
                  Documentation
                    { rawDocText =
                        Just "the item from the model for which to create a widget for"
                    , sinceVersion = Nothing
                    }
              , argScope = ScopeTypeInvalid
              , argClosure = -1
              , argDestroy = -1
              , argCallerAllocates = False
              , argCallbackUserData = False
              , transfer = TransferNothing
              }
          , Arg
              { argCName = "user_data"
              , argType = TBasicType TPtr
              , argCType = Just "gpointer"
              , direction = DirectionIn
              , mayBeNull = True
              , argDoc =
                  Documentation
                    { rawDocText = Just "user data" , sinceVersion = Nothing }
              , argScope = ScopeTypeInvalid
              , argClosure = -1
              , argDestroy = -1
              , argCallerAllocates = False
              , argCallbackUserData = True
              , transfer = TransferNothing
              }
          ]
      , skipReturn = False
      , callableThrows = False
      , callableDeprecated = Nothing
      , callableDocumentation =
          Documentation
            { rawDocText =
                Just
                  "Called for list boxes that are bound to a #GListModel with\ngtk_list_box_bind_model() for each item that gets added to the model.\n\nVersions of GTK+ prior to 3.18 called gtk_widget_show_all() on the rows\ncreated by the GtkListBoxCreateWidgetFunc, but this forced all widgets\ninside the row to be shown, and is no longer the case. Applications should\nbe updated to show the desired row widgets."
            , sinceVersion = Just "3.16"
            }
      , callableResolvable = Nothing
      }
    -}
    -- | Type for the callback on the (unwrapped) C side.
    type C_ListBoxCreateWidgetFunc =
        Ptr GObject.Object.Object ->
        Ptr () ->
        IO (Ptr Gtk.Widget.Widget)

    -- Args: [ Arg
    --           { argCName = "item"
    --           , argType =
    --               TInterface Name { namespace = "GObject" , name = "Object" }
    --           , argCType = Just "gpointer"
    --           , direction = DirectionIn
    --           , mayBeNull = False
    --           , argDoc =
    --               Documentation
    --                 { rawDocText =
    --                     Just "the item from the model for which to create a widget for"
    --                 , sinceVersion = Nothing
    --                 }
    --           , argScope = ScopeTypeInvalid
    --           , argClosure = -1
    --           , argDestroy = -1
    --           , argCallerAllocates = False
    --           , argCallbackUserData = False
    --           , transfer = TransferNothing
    --           }
    --       , Arg
    --           { argCName = "user_data"
    --           , argType = TBasicType TPtr
    --           , argCType = Just "gpointer"
    --           , direction = DirectionIn
    --           , mayBeNull = True
    --           , argDoc =
    --               Documentation
    --                 { rawDocText = Just "user data" , sinceVersion = Nothing }
    --           , argScope = ScopeTypeInvalid
    --           , argClosure = -1
    --           , argDestroy = -1
    --           , argCallerAllocates = False
    --           , argCallbackUserData = True
    --           , transfer = TransferNothing
    --           }
    --       ]
    -- Lengths: []
    -- returnType: Just (TInterface Name { namespace = "Gtk" , name = "Widget" })
    -- throws : False
    -- Skip return : False

    foreign import ccall "dynamic" __dynamic_C_ListBoxCreateWidgetFunc :: FunPtr C_ListBoxCreateWidgetFunc -> C_ListBoxCreateWidgetFunc

    -- | Given a pointer to a foreign C function, wrap it into a function callable from Haskell.
    dynamic_ListBoxCreateWidgetFunc ::
        (B.CallStack.HasCallStack, MonadIO m, GObject.Object.IsObject a) =>
        FunPtr C_ListBoxCreateWidgetFunc
        -> a
        -- ^ /@item@/: the item from the model for which to create a widget for
        -> Ptr ()
        -- ^ /@userData@/: user data
        -> m Gtk.Widget.Widget
        -- ^ __Returns:__ a t'GI.Gtk.Objects.Widget.Widget' that represents /@item@/
    dynamic_ListBoxCreateWidgetFunc :: forall (m :: * -> *) a.
    (HasCallStack, MonadIO m, IsObject a) =>
    FunPtr C_ListBoxCreateWidgetFunc -> a -> Ptr () -> m Widget
    dynamic_ListBoxCreateWidgetFunc FunPtr C_ListBoxCreateWidgetFunc
    __funPtr a
    item Ptr ()
    userData = IO Widget -> m Widget
    forall a. IO a -> m a
    forall (m :: * -> *) a. MonadIO m => IO a -> m a
    liftIO (IO Widget -> m Widget) -> IO Widget -> m Widget
    forall a b. (a -> b) -> a -> b
    $ do
        item' <- a -> IO (Ptr Object)
    forall a b. (HasCallStack, ManagedPtrNewtype a) => a -> IO (Ptr b)
    unsafeManagedPtrCastPtr a
    item
        result <- (__dynamic_C_ListBoxCreateWidgetFunc __funPtr) item' userData
        checkUnexpectedReturnNULL "listBoxCreateWidgetFunc" result
        result' <- (wrapObject Gtk.Widget.Widget) result
        touchManagedPtr item
        return result'

    -- | Generate a function pointer callable from C code, from a `C_ListBoxCreateWidgetFunc`.
    foreign import ccall "wrapper"
        mk_ListBoxCreateWidgetFunc :: C_ListBoxCreateWidgetFunc -> IO (FunPtr C_ListBoxCreateWidgetFunc)

    -- | Called for list boxes that are bound to a t'GI.Gio.Interfaces.ListModel.ListModel' with
    -- 'GI.Gtk.Objects.ListBox.listBoxBindModel' for each item that gets added to the model.
    --
    -- Versions of GTK+ prior to 3.18 called 'GI.Gtk.Objects.Widget.widgetShowAll' on the rows
    -- created by the GtkListBoxCreateWidgetFunc, but this forced all widgets
    -- inside the row to be shown, and is no longer the case. Applications should
    -- be updated to show the desired row widgets.
    --
    -- /Since: 3.16/
    type ListBoxCreateWidgetFunc =
        GObject.Object.Object
        -- ^ /@item@/: the item from the model for which to create a widget for
        -> IO Gtk.Widget.Widget
        -- ^ __Returns:__ a t'GI.Gtk.Objects.Widget.Widget' that represents /@item@/

    -- | A convenience synonym for @`Nothing` :: `Maybe` `ListBoxCreateWidgetFunc`@.
    noListBoxCreateWidgetFunc :: Maybe ListBoxCreateWidgetFunc
    noListBoxCreateWidgetFunc :: Maybe ListBoxCreateWidgetFunc
    noListBoxCreateWidgetFunc = Maybe ListBoxCreateWidgetFunc
    forall a. Maybe a
    Nothing

    -- | Called for list boxes that are bound to a t'GI.Gio.Interfaces.ListModel.ListModel' with
    -- 'GI.Gtk.Objects.ListBox.listBoxBindModel' for each item that gets added to the model.
    --
    -- Versions of GTK+ prior to 3.18 called 'GI.Gtk.Objects.Widget.widgetShowAll' on the rows
    -- created by the GtkListBoxCreateWidgetFunc, but this forced all widgets
    -- inside the row to be shown, and is no longer the case. Applications should
    -- be updated to show the desired row widgets.
    --
    -- /Since: 3.16/
    type ListBoxCreateWidgetFunc_WithClosures =
        GObject.Object.Object
        -- ^ /@item@/: the item from the model for which to create a widget for
        -> Ptr ()
        -- ^ /@userData@/: user data
        -> IO Gtk.Widget.Widget
        -- ^ __Returns:__ a t'GI.Gtk.Objects.Widget.Widget' that represents /@item@/

    -- | A convenience synonym for @`Nothing` :: `Maybe` `ListBoxCreateWidgetFunc_WithClosures`@.
    noListBoxCreateWidgetFunc_WithClosures :: Maybe ListBoxCreateWidgetFunc_WithClosures
    noListBoxCreateWidgetFunc_WithClosures :: Maybe ListBoxCreateWidgetFunc_WithClosures
    noListBoxCreateWidgetFunc_WithClosures = Maybe ListBoxCreateWidgetFunc_WithClosures
    forall a. Maybe a
    Nothing

    -- | A simple wrapper that ignores the closure arguments.
    drop_closures_ListBoxCreateWidgetFunc :: ListBoxCreateWidgetFunc -> ListBoxCreateWidgetFunc_WithClosures
    drop_closures_ListBoxCreateWidgetFunc :: ListBoxCreateWidgetFunc -> ListBoxCreateWidgetFunc_WithClosures
    drop_closures_ListBoxCreateWidgetFunc ListBoxCreateWidgetFunc
    _f Object
    item Ptr ()
    _ = ListBoxCreateWidgetFunc
    _f Object
    item

    -- | Wrap the callback into a `GClosure`.
    genClosure_ListBoxCreateWidgetFunc :: MonadIO m => ListBoxCreateWidgetFunc -> m (GClosure C_ListBoxCreateWidgetFunc)
    genClosure_ListBoxCreateWidgetFunc :: forall (m :: * -> *).
    MonadIO m =>
    ListBoxCreateWidgetFunc -> m (GClosure C_ListBoxCreateWidgetFunc)
    genClosure_ListBoxCreateWidgetFunc ListBoxCreateWidgetFunc
    cb = IO (GClosure C_ListBoxCreateWidgetFunc)
    -> m (GClosure C_ListBoxCreateWidgetFunc)
    forall a. IO a -> m a
    forall (m :: * -> *) a. MonadIO m => IO a -> m a
    liftIO (IO (GClosure C_ListBoxCreateWidgetFunc)
     -> m (GClosure C_ListBoxCreateWidgetFunc))
    -> IO (GClosure C_ListBoxCreateWidgetFunc)
    -> m (GClosure C_ListBoxCreateWidgetFunc)
    forall a b. (a -> b) -> a -> b
    $ do
        let cb' :: ListBoxCreateWidgetFunc_WithClosures
    cb' = ListBoxCreateWidgetFunc -> ListBoxCreateWidgetFunc_WithClosures
    drop_closures_ListBoxCreateWidgetFunc ListBoxCreateWidgetFunc
    cb
        let cb'' :: C_ListBoxCreateWidgetFunc
    cb'' = Maybe (Ptr (FunPtr C_ListBoxCreateWidgetFunc))
    -> ListBoxCreateWidgetFunc_WithClosures
    -> C_ListBoxCreateWidgetFunc
    wrap_ListBoxCreateWidgetFunc Maybe (Ptr (FunPtr C_ListBoxCreateWidgetFunc))
    forall a. Maybe a
    Nothing ListBoxCreateWidgetFunc_WithClosures
    cb'
        C_ListBoxCreateWidgetFunc -> IO (FunPtr C_ListBoxCreateWidgetFunc)
    mk_ListBoxCreateWidgetFunc C_ListBoxCreateWidgetFunc
    cb'' IO (FunPtr C_ListBoxCreateWidgetFunc)
    -> (FunPtr C_ListBoxCreateWidgetFunc
        -> IO (GClosure C_ListBoxCreateWidgetFunc))
    -> IO (GClosure C_ListBoxCreateWidgetFunc)
    forall a b. IO a -> (a -> IO b) -> IO b
    forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
    >>= FunPtr C_ListBoxCreateWidgetFunc
    -> IO (GClosure C_ListBoxCreateWidgetFunc)
    forall (m :: * -> *) a. MonadIO m => FunPtr a -> m (GClosure a)
    B.GClosure.newGClosure

    -- | Wrap a `ListBoxCreateWidgetFunc` into a `C_ListBoxCreateWidgetFunc`.
    wrap_ListBoxCreateWidgetFunc ::
        Maybe (Ptr (FunPtr C_ListBoxCreateWidgetFunc)) ->
        ListBoxCreateWidgetFunc_WithClosures ->
        C_ListBoxCreateWidgetFunc
    wrap_ListBoxCreateWidgetFunc :: Maybe (Ptr (FunPtr C_ListBoxCreateWidgetFunc))
    -> ListBoxCreateWidgetFunc_WithClosures
    -> C_ListBoxCreateWidgetFunc
    wrap_ListBoxCreateWidgetFunc Maybe (Ptr (FunPtr C_ListBoxCreateWidgetFunc))
    gi'funptrptr ListBoxCreateWidgetFunc_WithClosures
    gi'cb Ptr Object
    item Ptr ()
    userData = do
        item' <- ((ManagedPtr Object -> Object) -> Ptr Object -> IO Object
    forall a b.
    (HasCallStack, GObject a, GObject b) =>
    (ManagedPtr a -> a) -> Ptr b -> IO a
    newObject ManagedPtr Object -> Object
    GObject.Object.Object) Ptr Object
    item
        result <- gi'cb  item' userData
        maybeReleaseFunPtr gi'funptrptr
        result' <- B.ManagedPtr.disownObject result
        return result'

    -- callback KeySnoopFunc
    {- Callable
      { returnType = Just (TBasicType TInt)
      , returnMayBeNull = False
      , returnTransfer = TransferNothing
      , returnDocumentation =
          Documentation
            { rawDocText =
                Just
                  "%TRUE to stop further processing of @event, %FALSE to continue."
            , sinceVersion = Nothing
            }
      , args =
          [ Arg
              { argCName = "grab_widget"
              , argType = TInterface Name { namespace = "Gtk" , name = "Widget" }
              , argCType = Just "GtkWidget*"
              , direction = DirectionIn
              , mayBeNull = False
              , argDoc =
                  Documentation
                    { rawDocText =
                        Just "the widget to which the event will be delivered"
                    , sinceVersion = Nothing
                    }
              , argScope = ScopeTypeInvalid
              , argClosure = -1
              , argDestroy = -1
              , argCallerAllocates = False
              , argCallbackUserData = False
              , transfer = TransferNothing
              }
          , Arg
              { argCName = "event"
              , argType =
                  TInterface Name { namespace = "Gdk" , name = "EventKey" }
              , argCType = Just "GdkEventKey*"
              , direction = DirectionIn
              , mayBeNull = False
              , argDoc =
                  Documentation
                    { rawDocText = Just "the key event" , sinceVersion = Nothing }
              , argScope = ScopeTypeInvalid
              , argClosure = -1
              , argDestroy = -1
              , argCallerAllocates = False
              , argCallbackUserData = False
              , transfer = TransferNothing
              }
          , Arg
              { argCName = "func_data"
              , argType = TBasicType TPtr
              , argCType = Just "gpointer"
              , direction = DirectionIn
              , mayBeNull = True
              , argDoc =
                  Documentation
                    { rawDocText = Just "data supplied to gtk_key_snooper_install()"
                    , sinceVersion = Nothing
                    }
              , argScope = ScopeTypeInvalid
              , argClosure = -1
              , argDestroy = -1
              , argCallerAllocates = False
              , argCallbackUserData = True
              , transfer = TransferNothing
              }
          ]
      , skipReturn = False
      , callableThrows = False
      , callableDeprecated = Nothing
      , callableDocumentation =
          Documentation
            { rawDocText =
                Just
                  "Key snooper functions are called before normal event delivery.\nThey can be used to implement custom key event handling."
            , sinceVersion = Nothing
            }
      , callableResolvable = Nothing
      }
    -}
    -- | Type for the callback on the (unwrapped) C side.
    type C_KeySnoopFunc =
        Ptr Gtk.Widget.Widget ->
        Ptr Gdk.EventKey.EventKey ->
        Ptr () ->
        IO Int32

    -- Args: [ Arg
    --           { argCName = "grab_widget"
    --           , argType = TInterface Name { namespace = "Gtk" , name = "Widget" }
    --           , argCType = Just "GtkWidget*"
    --           , direction = DirectionIn
    --           , mayBeNull = False
    --           , argDoc =
    --               Documentation
    --                 { rawDocText =
    --                     Just "the widget to which the event will be delivered"
    --                 , sinceVersion = Nothing
    --                 }
    --           , argScope = ScopeTypeInvalid
    --           , argClosure = -1
    --           , argDestroy = -1
    --           , argCallerAllocates = False
    --           , argCallbackUserData = False
    --           , transfer = TransferNothing
    --           }
    --       , Arg
    --           { argCName = "event"
    --           , argType =
    --               TInterface Name { namespace = "Gdk" , name = "EventKey" }
    --           , argCType = Just "GdkEventKey*"
    --           , direction = DirectionIn
    --           , mayBeNull = False
    --           , argDoc =
    --               Documentation
    --                 { rawDocText = Just "the key event" , sinceVersion = Nothing }
    --           , argScope = ScopeTypeInvalid
    --           , argClosure = -1
    --           , argDestroy = -1
    --           , argCallerAllocates = False
    --           , argCallbackUserData = False
    --           , transfer = TransferNothing
    --           }
    --       , Arg
    --           { argCName = "func_data"
    --           , argType = TBasicType TPtr
    --           , argCType = Just "gpointer"
    --           , direction = DirectionIn
    --           , mayBeNull = True
    --           , argDoc =
    --               Documentation
    --                 { rawDocText = Just "data supplied to gtk_key_snooper_install()"
    --                 , sinceVersion = Nothing
    --                 }
    --           , argScope = ScopeTypeInvalid
    --           , argClosure = -1
    --           , argDestroy = -1
    --           , argCallerAllocates = False
    --           , argCallbackUserData = True
    --           , transfer = TransferNothing
    --           }
    --       ]
    -- Lengths: []
    -- returnType: Just (TBasicType TInt)
    -- throws : False
    -- Skip return : False

    foreign import ccall "dynamic" __dynamic_C_KeySnoopFunc :: FunPtr C_KeySnoopFunc -> C_KeySnoopFunc

    -- | Given a pointer to a foreign C function, wrap it into a function callable from Haskell.
    dynamic_KeySnoopFunc ::
        (B.CallStack.HasCallStack, MonadIO m, Gtk.Widget.IsWidget a) =>
        FunPtr C_KeySnoopFunc
        -> a
        -- ^ /@grabWidget@/: the widget to which the event will be delivered
        -> Gdk.EventKey.EventKey
        -- ^ /@event@/: the key event
        -> Ptr ()
        -- ^ /@funcData@/: data supplied to @/gtk_key_snooper_install()/@
        -> m Int32
        -- ^ __Returns:__ 'P.True' to stop further processing of /@event@/, 'P.False' to continue.
    dynamic_KeySnoopFunc :: forall (m :: * -> *) a.
    (HasCallStack, MonadIO m, IsWidget a) =>
    FunPtr C_KeySnoopFunc -> a -> EventKey -> Ptr () -> m Int32
    dynamic_KeySnoopFunc FunPtr C_KeySnoopFunc
    __funPtr a
    grabWidget EventKey
    event Ptr ()
    funcData = IO Int32 -> m Int32
    forall a. IO a -> m a
    forall (m :: * -> *) a. MonadIO m => IO a -> m a
    liftIO (IO Int32 -> m Int32) -> IO Int32 -> m Int32
    forall a b. (a -> b) -> a -> b
    $ do
        grabWidget' <- a -> IO (Ptr Widget)
    forall a b. (HasCallStack, ManagedPtrNewtype a) => a -> IO (Ptr b)
    unsafeManagedPtrCastPtr a
    grabWidget
        event' <- unsafeManagedPtrGetPtr event
        result <- (__dynamic_C_KeySnoopFunc __funPtr) grabWidget' event' funcData
        touchManagedPtr grabWidget
        touchManagedPtr event
        return result

    -- | Generate a function pointer callable from C code, from a `C_KeySnoopFunc`.
    foreign import ccall "wrapper"
        mk_KeySnoopFunc :: C_KeySnoopFunc -> IO (FunPtr C_KeySnoopFunc)

    -- | Key snooper functions are called before normal event delivery.
    -- They can be used to implement custom key event handling.
    type KeySnoopFunc =
        Gtk.Widget.Widget
        -- ^ /@grabWidget@/: the widget to which the event will be delivered
        -> Gdk.EventKey.EventKey
        -- ^ /@event@/: the key event
        -> IO Int32
        -- ^ __Returns:__ 'P.True' to stop further processing of /@event@/, 'P.False' to continue.

    -- | A convenience synonym for @`Nothing` :: `Maybe` `KeySnoopFunc`@.
    noKeySnoopFunc :: Maybe KeySnoopFunc
    noKeySnoopFunc :: Maybe KeySnoopFunc
    noKeySnoopFunc = Maybe KeySnoopFunc
    forall a. Maybe a
    Nothing

    -- | Key snooper functions are called before normal event delivery.
    -- They can be used to implement custom key event handling.
    type KeySnoopFunc_WithClosures =
        Gtk.Widget.Widget
        -- ^ /@grabWidget@/: the widget to which the event will be delivered
        -> Gdk.EventKey.EventKey
        -- ^ /@event@/: the key event
        -> Ptr ()
        -- ^ /@funcData@/: data supplied to @/gtk_key_snooper_install()/@
        -> IO Int32
        -- ^ __Returns:__ 'P.True' to stop further processing of /@event@/, 'P.False' to continue.

    -- | A convenience synonym for @`Nothing` :: `Maybe` `KeySnoopFunc_WithClosures`@.
    noKeySnoopFunc_WithClosures :: Maybe KeySnoopFunc_WithClosures
    noKeySnoopFunc_WithClosures :: Maybe KeySnoopFunc_WithClosures
    noKeySnoopFunc_WithClosures = Maybe KeySnoopFunc_WithClosures
    forall a. Maybe a
    Nothing

    -- | A simple wrapper that ignores the closure arguments.
    drop_closures_KeySnoopFunc :: KeySnoopFunc -> KeySnoopFunc_WithClosures
    drop_closures_KeySnoopFunc :: KeySnoopFunc -> KeySnoopFunc_WithClosures
    drop_closures_KeySnoopFunc KeySnoopFunc
    _f Widget
    grabWidget EventKey
    event Ptr ()
    _ = KeySnoopFunc
    _f Widget
    grabWidget EventKey
    event

    -- | Wrap the callback into a `GClosure`.
    genClosure_KeySnoopFunc :: MonadIO m => KeySnoopFunc -> m (GClosure C_KeySnoopFunc)
    genClosure_KeySnoopFunc :: forall (m :: * -> *).
    MonadIO m =>
    KeySnoopFunc -> m (GClosure C_KeySnoopFunc)
    genClosure_KeySnoopFunc KeySnoopFunc
    cb = IO (GClosure C_KeySnoopFunc) -> m (GClosure C_KeySnoopFunc)
    forall a. IO a -> m a
    forall (m :: * -> *) a. MonadIO m => IO a -> m a
    liftIO (IO (GClosure C_KeySnoopFunc) -> m (GClosure C_KeySnoopFunc))
    -> IO (GClosure C_KeySnoopFunc) -> m (GClosure C_KeySnoopFunc)
    forall a b. (a -> b) -> a -> b
    $ do
        let cb' :: KeySnoopFunc_WithClosures
    cb' = KeySnoopFunc -> KeySnoopFunc_WithClosures
    drop_closures_KeySnoopFunc KeySnoopFunc
    cb
        let cb'' :: C_KeySnoopFunc
    cb'' = Maybe (Ptr (FunPtr C_KeySnoopFunc))
    -> KeySnoopFunc_WithClosures -> C_KeySnoopFunc
    wrap_KeySnoopFunc Maybe (Ptr (FunPtr C_KeySnoopFunc))
    forall a. Maybe a
    Nothing KeySnoopFunc_WithClosures
    cb'
        C_KeySnoopFunc -> IO (FunPtr C_KeySnoopFunc)
    mk_KeySnoopFunc C_KeySnoopFunc
    cb'' IO (FunPtr C_KeySnoopFunc)
    -> (FunPtr C_KeySnoopFunc -> IO (GClosure C_KeySnoopFunc))
    -> IO (GClosure C_KeySnoopFunc)
    forall a b. IO a -> (a -> IO b) -> IO b
    forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
    >>= FunPtr C_KeySnoopFunc -> IO (GClosure C_KeySnoopFunc)
    forall (m :: * -> *) a. MonadIO m => FunPtr a -> m (GClosure a)
    B.GClosure.newGClosure

    -- | Wrap a `KeySnoopFunc` into a `C_KeySnoopFunc`.
    wrap_KeySnoopFunc ::
        Maybe (Ptr (FunPtr C_KeySnoopFunc)) ->
        KeySnoopFunc_WithClosures ->
        C_KeySnoopFunc
    wrap_KeySnoopFunc :: Maybe (Ptr (FunPtr C_KeySnoopFunc))
    -> KeySnoopFunc_WithClosures -> C_KeySnoopFunc
    wrap_KeySnoopFunc Maybe (Ptr (FunPtr C_KeySnoopFunc))
    gi'funptrptr KeySnoopFunc_WithClosures
    gi'cb Ptr Widget
    grabWidget Ptr EventKey
    event Ptr ()
    funcData = do
        grabWidget' <- ((ManagedPtr Widget -> Widget) -> Ptr Widget -> IO Widget
    forall a b.
    (HasCallStack, GObject a, GObject b) =>
    (ManagedPtr a -> a) -> Ptr b -> IO a
    newObject ManagedPtr Widget -> Widget
    Gtk.Widget.Widget) Ptr Widget
    grabWidget
        event' <- (newPtr Gdk.EventKey.EventKey) event
        result <- gi'cb  grabWidget' event' funcData
        maybeReleaseFunPtr gi'funptrptr
        return result

    -- callback IconViewForeachFunc
    {- Callable
      { returnType = Nothing
      , returnMayBeNull = False
      , returnTransfer = TransferNothing
      , returnDocumentation =
          Documentation { rawDocText = Nothing , sinceVersion = Nothing }
      , args =
          [ Arg
              { argCName = "icon_view"
              , argType =
                  TInterface Name { namespace = "Gtk" , name = "IconView" }
              , argCType = Just "GtkIconView*"
              , direction = DirectionIn
              , mayBeNull = False
              , argDoc =
                  Documentation
                    { rawDocText = Just "a #GtkIconView" , sinceVersion = Nothing }
              , argScope = ScopeTypeInvalid
              , argClosure = -1
              , argDestroy = -1
              , argCallerAllocates = False
              , argCallbackUserData = False
              , transfer = TransferNothing
              }
          , Arg
              { argCName = "path"
              , argType =
                  TInterface Name { namespace = "Gtk" , name = "TreePath" }
              , argCType = Just "GtkTreePath*"
              , direction = DirectionIn
              , mayBeNull = False
              , argDoc =
                  Documentation
                    { rawDocText = Just "The #GtkTreePath of a selected row"
                    , sinceVersion = Nothing
                    }
              , argScope = ScopeTypeInvalid
              , argClosure = -1
              , argDestroy = -1
              , argCallerAllocates = False
              , argCallbackUserData = False
              , transfer = TransferNothing
              }
          , Arg
              { argCName = "data"
              , argType = TBasicType TPtr
              , argCType = Just "gpointer"
              , direction = DirectionIn
              , mayBeNull = True
              , argDoc =
                  Documentation
                    { rawDocText = Just "user data" , sinceVersion = Nothing }
              , argScope = ScopeTypeInvalid
              , argClosure = -1
              , argDestroy = -1
              , argCallerAllocates = False
              , argCallbackUserData = True
              , transfer = TransferNothing
              }
          ]
      , skipReturn = False
      , callableThrows = False
      , callableDeprecated = Nothing
      , callableDocumentation =
          Documentation
            { rawDocText =
                Just
                  "A function used by gtk_icon_view_selected_foreach() to map all\nselected rows.  It will be called on every selected row in the view."
            , sinceVersion = Nothing
            }
      , callableResolvable = Nothing
      }
    -}
    -- | Type for the callback on the (unwrapped) C side.
    type C_IconViewForeachFunc =
        Ptr Gtk.IconView.IconView ->
        Ptr Gtk.TreePath.TreePath ->
        Ptr () ->
        IO ()

    -- Args: [ Arg
    --           { argCName = "icon_view"
    --           , argType =
    --               TInterface Name { namespace = "Gtk" , name = "IconView" }
    --           , argCType = Just "GtkIconView*"
    --           , direction = DirectionIn
    --           , mayBeNull = False
    --           , argDoc =
    --               Documentation
    --                 { rawDocText = Just "a #GtkIconView" , sinceVersion = Nothing }
    --           , argScope = ScopeTypeInvalid
    --           , argClosure = -1
    --           , argDestroy = -1
    --           , argCallerAllocates = False
    --           , argCallbackUserData = False
    --           , transfer = TransferNothing
    --           }
    --       , Arg
    --           { argCName = "path"
    --           , argType =
    --               TInterface Name { namespace = "Gtk" , name = "TreePath" }
    --           , argCType = Just "GtkTreePath*"
    --           , direction = DirectionIn
    --           , mayBeNull = False
    --           , argDoc =
    --               Documentation
    --                 { rawDocText = Just "The #GtkTreePath of a selected row"
    --                 , sinceVersion = Nothing
    --                 }
    --           , argScope = ScopeTypeInvalid
    --           , argClosure = -1
    --           , argDestroy = -1
    --           , argCallerAllocates = False
    --           , argCallbackUserData = False
    --           , transfer = TransferNothing
    --           }
    --       , Arg
    --           { argCName = "data"
    --           , argType = TBasicType TPtr
    --           , argCType = Just "gpointer"
    --           , direction = DirectionIn
    --           , mayBeNull = True
    --           , argDoc =
    --               Documentation
    --                 { rawDocText = Just "user data" , sinceVersion = Nothing }
    --           , argScope = ScopeTypeInvalid
    --           , argClosure = -1
    --           , argDestroy = -1
    --           , argCallerAllocates = False
    --           , argCallbackUserData = True
    --           , transfer = TransferNothing
    --           }
    --       ]
    -- Lengths: []
    -- returnType: Nothing
    -- throws : False
    -- Skip return : False

    foreign import ccall "dynamic" __dynamic_C_IconViewForeachFunc :: FunPtr C_IconViewForeachFunc -> C_IconViewForeachFunc

    -- | Given a pointer to a foreign C function, wrap it into a function callable from Haskell.
    dynamic_IconViewForeachFunc ::
        (B.CallStack.HasCallStack, MonadIO m, Gtk.IconView.IsIconView a) =>
        FunPtr C_IconViewForeachFunc
        -> a
        -- ^ /@iconView@/: a t'GI.Gtk.Objects.IconView.IconView'
        -> Gtk.TreePath.TreePath
        -- ^ /@path@/: The t'GI.Gtk.Structs.TreePath.TreePath' of a selected row
        -> Ptr ()
        -- ^ /@data@/: user data
        -> m ()
    dynamic_IconViewForeachFunc :: forall (m :: * -> *) a.
    (HasCallStack, MonadIO m, IsIconView a) =>
    FunPtr C_IconViewForeachFunc -> a -> TreePath -> Ptr () -> m ()
    dynamic_IconViewForeachFunc FunPtr C_IconViewForeachFunc
    __funPtr a
    iconView TreePath
    path Ptr ()
    data_ = IO () -> m ()
    forall a. IO a -> m a
    forall (m :: * -> *) a. MonadIO m => IO a -> m a
    liftIO (IO () -> m ()) -> IO () -> m ()
    forall a b. (a -> b) -> a -> b
    $ do
        iconView' <- a -> IO (Ptr IconView)
    forall a b. (HasCallStack, ManagedPtrNewtype a) => a -> IO (Ptr b)
    unsafeManagedPtrCastPtr a
    iconView
        path' <- unsafeManagedPtrGetPtr path
        (__dynamic_C_IconViewForeachFunc __funPtr) iconView' path' data_
        touchManagedPtr iconView
        touchManagedPtr path
        return ()

    -- | Generate a function pointer callable from C code, from a `C_IconViewForeachFunc`.
    foreign import ccall "wrapper"
        mk_IconViewForeachFunc :: C_IconViewForeachFunc -> IO (FunPtr C_IconViewForeachFunc)

    -- | A function used by 'GI.Gtk.Objects.IconView.iconViewSelectedForeach' to map all
    -- selected rows.  It will be called on every selected row in the view.
    type IconViewForeachFunc =
        Gtk.IconView.IconView
        -- ^ /@iconView@/: a t'GI.Gtk.Objects.IconView.IconView'
        -> Gtk.TreePath.TreePath
        -- ^ /@path@/: The t'GI.Gtk.Structs.TreePath.TreePath' of a selected row
        -> IO ()

    -- | A convenience synonym for @`Nothing` :: `Maybe` `IconViewForeachFunc`@.
    noIconViewForeachFunc :: Maybe IconViewForeachFunc
    noIconViewForeachFunc :: Maybe IconViewForeachFunc
    noIconViewForeachFunc = Maybe IconViewForeachFunc
    forall a. Maybe a
    Nothing

    -- | A function used by 'GI.Gtk.Objects.IconView.iconViewSelectedForeach' to map all
    -- selected rows.  It will be called on every selected row in the view.
    type IconViewForeachFunc_WithClosures =
        Gtk.IconView.IconView
        -- ^ /@iconView@/: a t'GI.Gtk.Objects.IconView.IconView'
        -> Gtk.TreePath.TreePath
        -- ^ /@path@/: The t'GI.Gtk.Structs.TreePath.TreePath' of a selected row
        -> Ptr ()
        -- ^ /@data@/: user data
        -> IO ()

    -- | A convenience synonym for @`Nothing` :: `Maybe` `IconViewForeachFunc_WithClosures`@.
    noIconViewForeachFunc_WithClosures :: Maybe IconViewForeachFunc_WithClosures
    noIconViewForeachFunc_WithClosures :: Maybe IconViewForeachFunc_WithClosures
    noIconViewForeachFunc_WithClosures = Maybe IconViewForeachFunc_WithClosures
    forall a. Maybe a
    Nothing

    -- | A simple wrapper that ignores the closure arguments.
    drop_closures_IconViewForeachFunc :: IconViewForeachFunc -> IconViewForeachFunc_WithClosures
    drop_closures_IconViewForeachFunc :: IconViewForeachFunc -> IconViewForeachFunc_WithClosures
    drop_closures_IconViewForeachFunc IconViewForeachFunc
    _f IconView
    iconView TreePath
    path Ptr ()
    _ = IconViewForeachFunc
    _f IconView
    iconView TreePath
    path

    -- | Wrap the callback into a `GClosure`.
    genClosure_IconViewForeachFunc :: MonadIO m => IconViewForeachFunc -> m (GClosure C_IconViewForeachFunc)
    genClosure_IconViewForeachFunc :: forall (m :: * -> *).
    MonadIO m =>
    IconViewForeachFunc -> m (GClosure C_IconViewForeachFunc)
    genClosure_IconViewForeachFunc IconViewForeachFunc
    cb = IO (GClosure C_IconViewForeachFunc)
    -> m (GClosure C_IconViewForeachFunc)
    forall a. IO a -> m a
    forall (m :: * -> *) a. MonadIO m => IO a -> m a
    liftIO (IO (GClosure C_IconViewForeachFunc)
     -> m (GClosure C_IconViewForeachFunc))
    -> IO (GClosure C_IconViewForeachFunc)
    -> m (GClosure C_IconViewForeachFunc)
    forall a b. (a -> b) -> a -> b
    $ do
        let cb' :: IconViewForeachFunc_WithClosures
    cb' = IconViewForeachFunc -> IconViewForeachFunc_WithClosures
    drop_closures_IconViewForeachFunc IconViewForeachFunc
    cb
        let cb'' :: C_IconViewForeachFunc
    cb'' = Maybe (Ptr (FunPtr C_IconViewForeachFunc))
    -> IconViewForeachFunc_WithClosures -> C_IconViewForeachFunc
    wrap_IconViewForeachFunc Maybe (Ptr (FunPtr C_IconViewForeachFunc))
    forall a. Maybe a
    Nothing IconViewForeachFunc_WithClosures
    cb'
        C_IconViewForeachFunc -> IO (FunPtr C_IconViewForeachFunc)
    mk_IconViewForeachFunc C_IconViewForeachFunc
    cb'' IO (FunPtr C_IconViewForeachFunc)
    -> (FunPtr C_IconViewForeachFunc
        -> IO (GClosure C_IconViewForeachFunc))
    -> IO (GClosure C_IconViewForeachFunc)
    forall a b. IO a -> (a -> IO b) -> IO b
    forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
    >>= FunPtr C_IconViewForeachFunc -> IO (GClosure C_IconViewForeachFunc)
    forall (m :: * -> *) a. MonadIO m => FunPtr a -> m (GClosure a)
    B.GClosure.newGClosure

    -- | Wrap a `IconViewForeachFunc` into a `C_IconViewForeachFunc`.
    wrap_IconViewForeachFunc ::
        Maybe (Ptr (FunPtr C_IconViewForeachFunc)) ->
        IconViewForeachFunc_WithClosures ->
        C_IconViewForeachFunc
    wrap_IconViewForeachFunc :: Maybe (Ptr (FunPtr C_IconViewForeachFunc))
    -> IconViewForeachFunc_WithClosures -> C_IconViewForeachFunc
    wrap_IconViewForeachFunc Maybe (Ptr (FunPtr C_IconViewForeachFunc))
    gi'funptrptr IconViewForeachFunc_WithClosures
    gi'cb Ptr IconView
    iconView Ptr TreePath
    path Ptr ()
    data_ = do
        iconView' <- ((ManagedPtr IconView -> IconView) -> Ptr IconView -> IO IconView
    forall a b.
    (HasCallStack, GObject a, GObject b) =>
    (ManagedPtr a -> a) -> Ptr b -> IO a
    newObject ManagedPtr IconView -> IconView
    Gtk.IconView.IconView) Ptr IconView
    iconView
        B.ManagedPtr.withTransient  path $ \TreePath
    path' -> do
            IconViewForeachFunc_WithClosures
    gi'cb  IconView
    iconView' TreePath
    path' Ptr ()
    data_
            Maybe (Ptr (FunPtr C_IconViewForeachFunc)) -> IO ()
    forall a. Maybe (Ptr (FunPtr a)) -> IO ()
    maybeReleaseFunPtr Maybe (Ptr (FunPtr C_IconViewForeachFunc))
    gi'funptrptr

    -- callback FontFilterFunc
    {- Callable
      { returnType = Just (TBasicType TBoolean)
      , returnMayBeNull = False
      , returnTransfer = TransferNothing
      , returnDocumentation =
          Documentation
            { rawDocText = Just "%TRUE if the font should be displayed"
            , sinceVersion = Nothing
            }
      , args =
          [ Arg
              { argCName = "family"
              , argType =
                  TInterface Name { namespace = "Pango" , name = "FontFamily" }
              , argCType = Just "const PangoFontFamily*"
              , direction = DirectionIn
              , mayBeNull = False
              , argDoc =
                  Documentation
                    { rawDocText = Just "a #PangoFontFamily" , sinceVersion = Nothing }
              , argScope = ScopeTypeInvalid
              , argClosure = -1
              , argDestroy = -1
              , argCallerAllocates = False
              , argCallbackUserData = False
              , transfer = TransferNothing
              }
          , Arg
              { argCName = "face"
              , argType =
                  TInterface Name { namespace = "Pango" , name = "FontFace" }
              , argCType = Just "const PangoFontFace*"
              , direction = DirectionIn
              , mayBeNull = False
              , argDoc =
                  Documentation
                    { rawDocText = Just "a #PangoFontFace belonging to @family"
                    , sinceVersion = Nothing
                    }
              , argScope = ScopeTypeInvalid
              , argClosure = -1
              , argDestroy = -1
              , argCallerAllocates = False
              , argCallbackUserData = False
              , transfer = TransferNothing
              }
          , Arg
              { argCName = "data"
              , argType = TBasicType TPtr
              , argCType = Just "gpointer"
              , direction = DirectionIn
              , mayBeNull = True
              , argDoc =
                  Documentation
                    { rawDocText =
                        Just "user data passed to gtk_font_chooser_set_filter_func()"
                    , sinceVersion = Nothing
                    }
              , argScope = ScopeTypeInvalid
              , argClosure = -1
              , argDestroy = -1
              , argCallerAllocates = False
              , argCallbackUserData = True
              , transfer = TransferNothing
              }
          ]
      , skipReturn = False
      , callableThrows = False
      , callableDeprecated = Nothing
      , callableDocumentation =
          Documentation
            { rawDocText =
                Just
                  "The type of function that is used for deciding what fonts get\nshown in a #GtkFontChooser. See gtk_font_chooser_set_filter_func()."
            , sinceVersion = Nothing
            }
      , callableResolvable = Nothing
      }
    -}
    -- | Type for the callback on the (unwrapped) C side.
    type C_FontFilterFunc =
        Ptr Pango.FontFamily.FontFamily ->
        Ptr Pango.FontFace.FontFace ->
        Ptr () ->
        IO CInt

    -- Args: [ Arg
    --           { argCName = "family"
    --           , argType =
    --               TInterface Name { namespace = "Pango" , name = "FontFamily" }
    --           , argCType = Just "const PangoFontFamily*"
    --           , direction = DirectionIn
    --           , mayBeNull = False
    --           , argDoc =
    --               Documentation
    --                 { rawDocText = Just "a #PangoFontFamily" , sinceVersion = Nothing }
    --           , argScope = ScopeTypeInvalid
    --           , argClosure = -1
    --           , argDestroy = -1
    --           , argCallerAllocates = False
    --           , argCallbackUserData = False
    --           , transfer = TransferNothing
    --           }
    --       , Arg
    --           { argCName = "face"
    --           , argType =
    --               TInterface Name { namespace = "Pango" , name = "FontFace" }
    --           , argCType = Just "const PangoFontFace*"
    --           , direction = DirectionIn
    --           , mayBeNull = False
    --           , argDoc =
    --               Documentation
    --                 { rawDocText = Just "a #PangoFontFace belonging to @family"
    --                 , sinceVersion = Nothing
    --                 }
    --           , argScope = ScopeTypeInvalid
    --           , argClosure = -1
    --           , argDestroy = -1
    --           , argCallerAllocates = False
    --           , argCallbackUserData = False
    --           , transfer = TransferNothing
    --           }
    --       , Arg
    --           { argCName = "data"
    --           , argType = TBasicType TPtr
    --           , argCType = Just "gpointer"
    --           , direction = DirectionIn
    --           , mayBeNull = True
    --           , argDoc =
    --               Documentation
    --                 { rawDocText =
    --                     Just "user data passed to gtk_font_chooser_set_filter_func()"
    --                 , sinceVersion = Nothing
    --                 }
    --           , argScope = ScopeTypeInvalid
    --           , argClosure = -1
    --           , argDestroy = -1
    --           , argCallerAllocates = False
    --           , argCallbackUserData = True
    --           , transfer = TransferNothing
    --           }
    --       ]
    -- Lengths: []
    -- returnType: Just (TBasicType TBoolean)
    -- throws : False
    -- Skip return : False

    foreign import ccall "dynamic" __dynamic_C_FontFilterFunc :: FunPtr C_FontFilterFunc -> C_FontFilterFunc

    -- | Given a pointer to a foreign C function, wrap it into a function callable from Haskell.
    dynamic_FontFilterFunc ::
        (B.CallStack.HasCallStack, MonadIO m, Pango.FontFamily.IsFontFamily a, Pango.FontFace.IsFontFace b) =>
        FunPtr C_FontFilterFunc
        -> a
        -- ^ /@family@/: a t'GI.Pango.Objects.FontFamily.FontFamily'
        -> b
        -- ^ /@face@/: a t'GI.Pango.Objects.FontFace.FontFace' belonging to /@family@/
        -> Ptr ()
        -- ^ /@data@/: user data passed to 'GI.Gtk.Interfaces.FontChooser.fontChooserSetFilterFunc'
        -> m Bool
        -- ^ __Returns:__ 'P.True' if the font should be displayed
    dynamic_FontFilterFunc :: forall (m :: * -> *) a b.
    (HasCallStack, MonadIO m, IsFontFamily a, IsFontFace b) =>
    FunPtr C_FontFilterFunc -> a -> b -> Ptr () -> m Bool
    dynamic_FontFilterFunc FunPtr C_FontFilterFunc
    __funPtr a
    family b
    face Ptr ()
    data_ = IO Bool -> m Bool
    forall a. IO a -> m a
    forall (m :: * -> *) a. MonadIO m => IO a -> m a
    liftIO (IO Bool -> m Bool) -> IO Bool -> m Bool
    forall a b. (a -> b) -> a -> b
    $ do
        family' <- a -> IO (Ptr FontFamily)
    forall a b. (HasCallStack, ManagedPtrNewtype a) => a -> IO (Ptr b)
    unsafeManagedPtrCastPtr a
    family
        face' <- unsafeManagedPtrCastPtr face
        result <- (__dynamic_C_FontFilterFunc __funPtr) family' face' data_
        let result' = (CInt -> CInt -> Bool
    forall a. Eq a => a -> a -> Bool
    /= CInt
    0) CInt
    result
        touchManagedPtr family
        touchManagedPtr face
        return result'

    -- | Generate a function pointer callable from C code, from a `C_FontFilterFunc`.
    foreign import ccall "wrapper"
        mk_FontFilterFunc :: C_FontFilterFunc -> IO (FunPtr C_FontFilterFunc)

    -- | The type of function that is used for deciding what fonts get
    -- shown in a t'GI.Gtk.Interfaces.FontChooser.FontChooser'. See 'GI.Gtk.Interfaces.FontChooser.fontChooserSetFilterFunc'.
    type FontFilterFunc =
        Pango.FontFamily.FontFamily
        -- ^ /@family@/: a t'GI.Pango.Objects.FontFamily.FontFamily'
        -> Pango.FontFace.FontFace
        -- ^ /@face@/: a t'GI.Pango.Objects.FontFace.FontFace' belonging to /@family@/
        -> IO Bool
        -- ^ __Returns:__ 'P.True' if the font should be displayed

    -- | A convenience synonym for @`Nothing` :: `Maybe` `FontFilterFunc`@.
    noFontFilterFunc :: Maybe FontFilterFunc
    noFontFilterFunc :: Maybe FontFilterFunc
    noFontFilterFunc = Maybe FontFilterFunc
    forall a. Maybe a
    Nothing

    -- | The type of function that is used for deciding what fonts get
    -- shown in a t'GI.Gtk.Interfaces.FontChooser.FontChooser'. See 'GI.Gtk.Interfaces.FontChooser.fontChooserSetFilterFunc'.
    type FontFilterFunc_WithClosures =
        Pango.FontFamily.FontFamily
        -- ^ /@family@/: a t'GI.Pango.Objects.FontFamily.FontFamily'
        -> Pango.FontFace.FontFace
        -- ^ /@face@/: a t'GI.Pango.Objects.FontFace.FontFace' belonging to /@family@/
        -> Ptr ()
        -- ^ /@data@/: user data passed to 'GI.Gtk.Interfaces.FontChooser.fontChooserSetFilterFunc'
        -> IO Bool
        -- ^ __Returns:__ 'P.True' if the font should be displayed

    -- | A convenience synonym for @`Nothing` :: `Maybe` `FontFilterFunc_WithClosures`@.
    noFontFilterFunc_WithClosures :: Maybe FontFilterFunc_WithClosures
    noFontFilterFunc_WithClosures :: Maybe FontFilterFunc_WithClosures
    noFontFilterFunc_WithClosures = Maybe FontFilterFunc_WithClosures
    forall a. Maybe a
    Nothing

    -- | A simple wrapper that ignores the closure arguments.
    drop_closures_FontFilterFunc :: FontFilterFunc -> FontFilterFunc_WithClosures
    drop_closures_FontFilterFunc :: FontFilterFunc -> FontFilterFunc_WithClosures
    drop_closures_FontFilterFunc FontFilterFunc
    _f FontFamily
    family FontFace
    face Ptr ()
    _ = FontFilterFunc
    _f FontFamily
    family FontFace
    face

    -- | Wrap the callback into a `GClosure`.
    genClosure_FontFilterFunc :: MonadIO m => FontFilterFunc -> m (GClosure C_FontFilterFunc)
    genClosure_FontFilterFunc :: forall (m :: * -> *).
    MonadIO m =>
    FontFilterFunc -> m (GClosure C_FontFilterFunc)
    genClosure_FontFilterFunc FontFilterFunc
    cb = IO (GClosure C_FontFilterFunc) -> m (GClosure C_FontFilterFunc)
    forall a. IO a -> m a
    forall (m :: * -> *) a. MonadIO m => IO a -> m a
    liftIO (IO (GClosure C_FontFilterFunc) -> m (GClosure C_FontFilterFunc))
    -> IO (GClosure C_FontFilterFunc) -> m (GClosure C_FontFilterFunc)
    forall a b. (a -> b) -> a -> b
    $ do
        let cb' :: FontFilterFunc_WithClosures
    cb' = FontFilterFunc -> FontFilterFunc_WithClosures
    drop_closures_FontFilterFunc FontFilterFunc
    cb
        let cb'' :: C_FontFilterFunc
    cb'' = Maybe (Ptr (FunPtr C_FontFilterFunc))
    -> FontFilterFunc_WithClosures -> C_FontFilterFunc
    wrap_FontFilterFunc Maybe (Ptr (FunPtr C_FontFilterFunc))
    forall a. Maybe a
    Nothing FontFilterFunc_WithClosures
    cb'
        C_FontFilterFunc -> IO (FunPtr C_FontFilterFunc)
    mk_FontFilterFunc C_FontFilterFunc
    cb'' IO (FunPtr C_FontFilterFunc)
    -> (FunPtr C_FontFilterFunc -> IO (GClosure C_FontFilterFunc))
    -> IO (GClosure C_FontFilterFunc)
    forall a b. IO a -> (a -> IO b) -> IO b
    forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
    >>= FunPtr C_FontFilterFunc -> IO (GClosure C_FontFilterFunc)
    forall (m :: * -> *) a. MonadIO m => FunPtr a -> m (GClosure a)
    B.GClosure.newGClosure

    -- | Wrap a `FontFilterFunc` into a `C_FontFilterFunc`.
    wrap_FontFilterFunc ::
        Maybe (Ptr (FunPtr C_FontFilterFunc)) ->
        FontFilterFunc_WithClosures ->
        C_FontFilterFunc
    wrap_FontFilterFunc :: Maybe (Ptr (FunPtr C_FontFilterFunc))
    -> FontFilterFunc_WithClosures -> C_FontFilterFunc
    wrap_FontFilterFunc Maybe (Ptr (FunPtr C_FontFilterFunc))
    gi'funptrptr FontFilterFunc_WithClosures
    gi'cb Ptr FontFamily
    family Ptr FontFace
    face Ptr ()
    data_ = do
        family' <- ((ManagedPtr FontFamily -> FontFamily)
    -> Ptr FontFamily -> IO FontFamily
    forall a b.
    (HasCallStack, GObject a, GObject b) =>
    (ManagedPtr a -> a) -> Ptr b -> IO a
    newObject ManagedPtr FontFamily -> FontFamily
    Pango.FontFamily.FontFamily) Ptr FontFamily
    family
        face' <- (newObject Pango.FontFace.FontFace) face
        result <- gi'cb  family' face' data_
        maybeReleaseFunPtr gi'funptrptr
        let result' = (Int -> CInt
    forall a b. (Integral a, Num b) => a -> b
    P.fromIntegral (Int -> CInt) -> (Bool -> Int) -> Bool -> CInt
    forall b c a. (b -> c) -> (a -> b) -> a -> c
    . Bool -> Int
    forall a. Enum a => a -> Int
    P.fromEnum) Bool
    result
        return result'

    -- callback FlowBoxSortFunc
    {- Callable
      { returnType = Just (TBasicType TInt)
      , returnMayBeNull = False
      , returnTransfer = TransferNothing
      , returnDocumentation =
          Documentation
            { rawDocText =
                Just
                  "< 0 if @child1 should be before @child2, 0 if\n    the are equal, and > 0 otherwise"
            , sinceVersion = Nothing
            }
      , args =
          [ Arg
              { argCName = "child1"
              , argType =
                  TInterface Name { namespace = "Gtk" , name = "FlowBoxChild" }
              , argCType = Just "GtkFlowBoxChild*"
              , direction = DirectionIn
              , mayBeNull = False
              , argDoc =
                  Documentation
                    { rawDocText = Just "the first child" , sinceVersion = Nothing }
              , argScope = ScopeTypeInvalid
              , argClosure = -1
              , argDestroy = -1
              , argCallerAllocates = False
              , argCallbackUserData = False
              , transfer = TransferNothing
              }
          , Arg
              { argCName = "child2"
              , argType =
                  TInterface Name { namespace = "Gtk" , name = "FlowBoxChild" }
              , argCType = Just "GtkFlowBoxChild*"
              , direction = DirectionIn
              , mayBeNull = False
              , argDoc =
                  Documentation
                    { rawDocText = Just "the second child" , sinceVersion = Nothing }
              , argScope = ScopeTypeInvalid
              , argClosure = -1
              , argDestroy = -1
              , argCallerAllocates = False
              , argCallbackUserData = False
              , transfer = TransferNothing
              }
          , Arg
              { argCName = "user_data"
              , argType = TBasicType TPtr
              , argCType = Just "gpointer"
              , direction = DirectionIn
              , mayBeNull = True
              , argDoc =
                  Documentation
                    { rawDocText = Just "user data" , sinceVersion = Nothing }
              , argScope = ScopeTypeInvalid
              , argClosure = -1
              , argDestroy = -1
              , argCallerAllocates = False
              , argCallbackUserData = True
              , transfer = TransferNothing
              }
          ]
      , skipReturn = False
      , callableThrows = False
      , callableDeprecated = Nothing
      , callableDocumentation =
          Documentation
            { rawDocText =
                Just
                  "A function to compare two children to determine which\nshould come first."
            , sinceVersion = Just "3.12"
            }
      , callableResolvable = Nothing
      }
    -}
    -- | Type for the callback on the (unwrapped) C side.
    type C_FlowBoxSortFunc =
        Ptr Gtk.FlowBoxChild.FlowBoxChild ->
        Ptr Gtk.FlowBoxChild.FlowBoxChild ->
        Ptr () ->
        IO Int32

    -- Args: [ Arg
    --           { argCName = "child1"
    --           , argType =
    --               TInterface Name { namespace = "Gtk" , name = "FlowBoxChild" }
    --           , argCType = Just "GtkFlowBoxChild*"
    --           , direction = DirectionIn
    --           , mayBeNull = False
    --           , argDoc =
    --               Documentation
    --                 { rawDocText = Just "the first child" , sinceVersion = Nothing }
    --           , argScope = ScopeTypeInvalid
    --           , argClosure = -1
    --           , argDestroy = -1
    --           , argCallerAllocates = False
    --           , argCallbackUserData = False
    --           , transfer = TransferNothing
    --           }
    --       , Arg
    --           { argCName = "child2"
    --           , argType =
    --               TInterface Name { namespace = "Gtk" , name = "FlowBoxChild" }
    --           , argCType = Just "GtkFlowBoxChild*"
    --           , direction = DirectionIn
    --           , mayBeNull = False
    --           , argDoc =
    --               Documentation
    --                 { rawDocText = Just "the second child" , sinceVersion = Nothing }
    --           , argScope = ScopeTypeInvalid
    --           , argClosure = -1
    --           , argDestroy = -1
    --           , argCallerAllocates = False
    --           , argCallbackUserData = False
    --           , transfer = TransferNothing
    --           }
    --       , Arg
    --           { argCName = "user_data"
    --           , argType = TBasicType TPtr
    --           , argCType = Just "gpointer"
    --           , direction = DirectionIn
    --           , mayBeNull = True
    --           , argDoc =
    --               Documentation
    --                 { rawDocText = Just "user data" , sinceVersion = Nothing }
    --           , argScope = ScopeTypeInvalid
    --           , argClosure = -1
    --           , argDestroy = -1
    --           , argCallerAllocates = False
    --           , argCallbackUserData = True
    --           , transfer = TransferNothing
    --           }
    --       ]
    -- Lengths: []
    -- returnType: Just (TBasicType TInt)
    -- throws : False
    -- Skip return : False

    foreign import ccall "dynamic" __dynamic_C_FlowBoxSortFunc :: FunPtr C_FlowBoxSortFunc -> C_FlowBoxSortFunc

    -- | Given a pointer to a foreign C function, wrap it into a function callable from Haskell.
    dynamic_FlowBoxSortFunc ::
        (B.CallStack.HasCallStack, MonadIO m, Gtk.FlowBoxChild.IsFlowBoxChild a, Gtk.FlowBoxChild.IsFlowBoxChild b) =>
        FunPtr C_FlowBoxSortFunc
        -> a
        -- ^ /@child1@/: the first child
        -> b
        -- ^ /@child2@/: the second child
        -> Ptr ()
        -- ^ /@userData@/: user data
        -> m Int32
        -- ^ __Returns:__ \< 0 if /@child1@/ should be before /@child2@/, 0 if
        --     the are equal, and > 0 otherwise
    dynamic_FlowBoxSortFunc :: forall (m :: * -> *) a b.
    (HasCallStack, MonadIO m, IsFlowBoxChild a, IsFlowBoxChild b) =>
    FunPtr C_FlowBoxSortFunc -> a -> b -> Ptr () -> m Int32
    dynamic_FlowBoxSortFunc FunPtr C_FlowBoxSortFunc
    __funPtr a
    child1 b
    child2 Ptr ()
    userData = IO Int32 -> m Int32
    forall a. IO a -> m a
    forall (m :: * -> *) a. MonadIO m => IO a -> m a
    liftIO (IO Int32 -> m Int32) -> IO Int32 -> m Int32
    forall a b. (a -> b) -> a -> b
    $ do
        child1' <- a -> IO (Ptr FlowBoxChild)
    forall a b. (HasCallStack, ManagedPtrNewtype a) => a -> IO (Ptr b)
    unsafeManagedPtrCastPtr a
    child1
        child2' <- unsafeManagedPtrCastPtr child2
        result <- (__dynamic_C_FlowBoxSortFunc __funPtr) child1' child2' userData
        touchManagedPtr child1
        touchManagedPtr child2
        return result

    -- | Generate a function pointer callable from C code, from a `C_FlowBoxSortFunc`.
    foreign import ccall "wrapper"
        mk_FlowBoxSortFunc :: C_FlowBoxSortFunc -> IO (FunPtr C_FlowBoxSortFunc)

    -- | A function to compare two children to determine which
    -- should come first.
    --
    -- /Since: 3.12/
    type FlowBoxSortFunc =
        Gtk.FlowBoxChild.FlowBoxChild
        -- ^ /@child1@/: the first child
        -> Gtk.FlowBoxChild.FlowBoxChild
        -- ^ /@child2@/: the second child
        -> IO Int32
        -- ^ __Returns:__ \< 0 if /@child1@/ should be before /@child2@/, 0 if
        --     the are equal, and > 0 otherwise

    -- | A convenience synonym for @`Nothing` :: `Maybe` `FlowBoxSortFunc`@.
    noFlowBoxSortFunc :: Maybe FlowBoxSortFunc
    noFlowBoxSortFunc :: Maybe FlowBoxSortFunc
    noFlowBoxSortFunc = Maybe FlowBoxSortFunc
    forall a. Maybe a
    Nothing

    -- | A function to compare two children to determine which
    -- should come first.
    --
    -- /Since: 3.12/
    type FlowBoxSortFunc_WithClosures =
        Gtk.FlowBoxChild.FlowBoxChild
        -- ^ /@child1@/: the first child
        -> Gtk.FlowBoxChild.FlowBoxChild
        -- ^ /@child2@/: the second child
        -> Ptr ()
        -- ^ /@userData@/: user data
        -> IO Int32
        -- ^ __Returns:__ \< 0 if /@child1@/ should be before /@child2@/, 0 if
        --     the are equal, and > 0 otherwise

    -- | A convenience synonym for @`Nothing` :: `Maybe` `FlowBoxSortFunc_WithClosures`@.
    noFlowBoxSortFunc_WithClosures :: Maybe FlowBoxSortFunc_WithClosures
    noFlowBoxSortFunc_WithClosures :: Maybe FlowBoxSortFunc_WithClosures
    noFlowBoxSortFunc_WithClosures = Maybe FlowBoxSortFunc_WithClosures
    forall a. Maybe a
    Nothing

    -- | A simple wrapper that ignores the closure arguments.
    drop_closures_FlowBoxSortFunc :: FlowBoxSortFunc -> FlowBoxSortFunc_WithClosures
    drop_closures_FlowBoxSortFunc :: FlowBoxSortFunc -> FlowBoxSortFunc_WithClosures
    drop_closures_FlowBoxSortFunc FlowBoxSortFunc
    _f FlowBoxChild
    child1 FlowBoxChild
    child2 Ptr ()
    _ = FlowBoxSortFunc
    _f FlowBoxChild
    child1 FlowBoxChild
    child2

    -- | Wrap the callback into a `GClosure`.
    genClosure_FlowBoxSortFunc :: MonadIO m => FlowBoxSortFunc -> m (GClosure C_FlowBoxSortFunc)
    genClosure_FlowBoxSortFunc :: forall (m :: * -> *).
    MonadIO m =>
    FlowBoxSortFunc -> m (GClosure C_FlowBoxSortFunc)
    genClosure_FlowBoxSortFunc FlowBoxSortFunc
    cb = IO (GClosure C_FlowBoxSortFunc) -> m (GClosure C_FlowBoxSortFunc)
    forall a. IO a -> m a
    forall (m :: * -> *) a. MonadIO m => IO a -> m a
    liftIO (IO (GClosure C_FlowBoxSortFunc) -> m (GClosure C_FlowBoxSortFunc))
    -> IO (GClosure C_FlowBoxSortFunc)
    -> m (GClosure C_FlowBoxSortFunc)
    forall a b. (a -> b) -> a -> b
    $ do
        let cb' :: FlowBoxSortFunc_WithClosures
    cb' = FlowBoxSortFunc -> FlowBoxSortFunc_WithClosures
    drop_closures_FlowBoxSortFunc FlowBoxSortFunc
    cb
        let cb'' :: C_FlowBoxSortFunc
    cb'' = Maybe (Ptr (FunPtr C_FlowBoxSortFunc))
    -> FlowBoxSortFunc_WithClosures -> C_FlowBoxSortFunc
    wrap_FlowBoxSortFunc Maybe (Ptr (FunPtr C_FlowBoxSortFunc))
    forall a. Maybe a
    Nothing FlowBoxSortFunc_WithClosures
    cb'
        C_FlowBoxSortFunc -> IO (FunPtr C_FlowBoxSortFunc)
    mk_FlowBoxSortFunc C_FlowBoxSortFunc
    cb'' IO (FunPtr C_FlowBoxSortFunc)
    -> (FunPtr C_FlowBoxSortFunc -> IO (GClosure C_FlowBoxSortFunc))
    -> IO (GClosure C_FlowBoxSortFunc)
    forall a b. IO a -> (a -> IO b) -> IO b
    forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
    >>= FunPtr C_FlowBoxSortFunc -> IO (GClosure C_FlowBoxSortFunc)
    forall (m :: * -> *) a. MonadIO m => FunPtr a -> m (GClosure a)
    B.GClosure.newGClosure

    -- | Wrap a `FlowBoxSortFunc` into a `C_FlowBoxSortFunc`.
    wrap_FlowBoxSortFunc ::
        Maybe (Ptr (FunPtr C_FlowBoxSortFunc)) ->
        FlowBoxSortFunc_WithClosures ->
        C_FlowBoxSortFunc
    wrap_FlowBoxSortFunc :: Maybe (Ptr (FunPtr C_FlowBoxSortFunc))
    -> FlowBoxSortFunc_WithClosures -> C_FlowBoxSortFunc
    wrap_FlowBoxSortFunc Maybe (Ptr (FunPtr C_FlowBoxSortFunc))
    gi'funptrptr FlowBoxSortFunc_WithClosures
    gi'cb Ptr FlowBoxChild
    child1 Ptr FlowBoxChild
    child2 Ptr ()
    userData = do
        child1' <- ((ManagedPtr FlowBoxChild -> FlowBoxChild)
    -> Ptr FlowBoxChild -> IO FlowBoxChild
    forall a b.
    (HasCallStack, GObject a, GObject b) =>
    (ManagedPtr a -> a) -> Ptr b -> IO a
    newObject ManagedPtr FlowBoxChild -> FlowBoxChild
    Gtk.FlowBoxChild.FlowBoxChild) Ptr FlowBoxChild
    child1
        child2' <- (newObject Gtk.FlowBoxChild.FlowBoxChild) child2
        result <- gi'cb  child1' child2' userData
        maybeReleaseFunPtr gi'funptrptr
        return result

    -- callback FlowBoxForeachFunc
    {- Callable
      { returnType = Nothing
      , returnMayBeNull = False
      , returnTransfer = TransferNothing
      , returnDocumentation =
          Documentation { rawDocText = Nothing , sinceVersion = Nothing }
      , args =
          [ Arg
              { argCName = "box"
              , argType =
                  TInterface Name { namespace = "Gtk" , name = "FlowBox" }
              , argCType = Just "GtkFlowBox*"
              , direction = DirectionIn
              , mayBeNull = False
              , argDoc =
                  Documentation
                    { rawDocText = Just "a #GtkFlowBox" , sinceVersion = Nothing }
              , argScope = ScopeTypeInvalid
              , argClosure = -1
              , argDestroy = -1
              , argCallerAllocates = False
              , argCallbackUserData = False
              , transfer = TransferNothing
              }
          , Arg
              { argCName = "child"
              , argType =
                  TInterface Name { namespace = "Gtk" , name = "FlowBoxChild" }
              , argCType = Just "GtkFlowBoxChild*"
              , direction = DirectionIn
              , mayBeNull = False
              , argDoc =
                  Documentation
                    { rawDocText = Just "a #GtkFlowBoxChild" , sinceVersion = Nothing }
              , argScope = ScopeTypeInvalid
              , argClosure = -1
              , argDestroy = -1
              , argCallerAllocates = False
              , argCallbackUserData = False
              , transfer = TransferNothing
              }
          , Arg
              { argCName = "user_data"
              , argType = TBasicType TPtr
              , argCType = Just "gpointer"
              , direction = DirectionIn
              , mayBeNull = True
              , argDoc =
                  Documentation
                    { rawDocText = Just "user data" , sinceVersion = Nothing }
              , argScope = ScopeTypeInvalid
              , argClosure = -1
              , argDestroy = -1
              , argCallerAllocates = False
              , argCallbackUserData = True
              , transfer = TransferNothing
              }
          ]
      , skipReturn = False
      , callableThrows = False
      , callableDeprecated = Nothing
      , callableDocumentation =
          Documentation
            { rawDocText =
                Just
                  "A function used by gtk_flow_box_selected_foreach().\nIt will be called on every selected child of the @box."
            , sinceVersion = Just "3.12"
            }
      , callableResolvable = Nothing
      }
    -}
    -- | Type for the callback on the (unwrapped) C side.
    type C_FlowBoxForeachFunc =
        Ptr Gtk.FlowBox.FlowBox ->
        Ptr Gtk.FlowBoxChild.FlowBoxChild ->
        Ptr () ->
        IO ()

    -- Args: [ Arg
    --           { argCName = "box"
    --           , argType =
    --               TInterface Name { namespace = "Gtk" , name = "FlowBox" }
    --           , argCType = Just "GtkFlowBox*"
    --           , direction = DirectionIn
    --           , mayBeNull = False
    --           , argDoc =
    --               Documentation
    --                 { rawDocText = Just "a #GtkFlowBox" , sinceVersion = Nothing }
    --           , argScope = ScopeTypeInvalid
    --           , argClosure = -1
    --           , argDestroy = -1
    --           , argCallerAllocates = False
    --           , argCallbackUserData = False
    --           , transfer = TransferNothing
    --           }
    --       , Arg
    --           { argCName = "child"
    --           , argType =
    --               TInterface Name { namespace = "Gtk" , name = "FlowBoxChild" }
    --           , argCType = Just "GtkFlowBoxChild*"
    --           , direction = DirectionIn
    --           , mayBeNull = False
    --           , argDoc =
    --               Documentation
    --                 { rawDocText = Just "a #GtkFlowBoxChild" , sinceVersion = Nothing }
    --           , argScope = ScopeTypeInvalid
    --           , argClosure = -1
    --           , argDestroy = -1
    --           , argCallerAllocates = False
    --           , argCallbackUserData = False
    --           , transfer = TransferNothing
    --           }
    --       , Arg
    --           { argCName = "user_data"
    --           , argType = TBasicType TPtr
    --           , argCType = Just "gpointer"
    --           , direction = DirectionIn
    --           , mayBeNull = True
    --           , argDoc =
    --               Documentation
    --                 { rawDocText = Just "user data" , sinceVersion = Nothing }
    --           , argScope = ScopeTypeInvalid
    --           , argClosure = -1
    --           , argDestroy = -1
    --           , argCallerAllocates = False
    --           , argCallbackUserData = True
    --           , transfer = TransferNothing
    --           }
    --       ]
    -- Lengths: []
    -- returnType: Nothing
    -- throws : False
    -- Skip return : False

    foreign import ccall "dynamic" __dynamic_C_FlowBoxForeachFunc :: FunPtr C_FlowBoxForeachFunc -> C_FlowBoxForeachFunc

    -- | Given a pointer to a foreign C function, wrap it into a function callable from Haskell.
    dynamic_FlowBoxForeachFunc ::
        (B.CallStack.HasCallStack, MonadIO m, Gtk.FlowBox.IsFlowBox a, Gtk.FlowBoxChild.IsFlowBoxChild b) =>
        FunPtr C_FlowBoxForeachFunc
        -> a
        -- ^ /@box@/: a t'GI.Gtk.Objects.FlowBox.FlowBox'
        -> b
        -- ^ /@child@/: a t'GI.Gtk.Objects.FlowBoxChild.FlowBoxChild'
        -> Ptr ()
        -- ^ /@userData@/: user data
        -> m ()
    dynamic_FlowBoxForeachFunc :: forall (m :: * -> *) a b.
    (HasCallStack, MonadIO m, IsFlowBox a, IsFlowBoxChild b) =>
    FunPtr C_FlowBoxForeachFunc -> a -> b -> Ptr () -> m ()
    dynamic_FlowBoxForeachFunc FunPtr C_FlowBoxForeachFunc
    __funPtr a
    box b
    child Ptr ()
    userData = IO () -> m ()
    forall a. IO a -> m a
    forall (m :: * -> *) a. MonadIO m => IO a -> m a
    liftIO (IO () -> m ()) -> IO () -> m ()
    forall a b. (a -> b) -> a -> b
    $ do
        box' <- a -> IO (Ptr FlowBox)
    forall a b. (HasCallStack, ManagedPtrNewtype a) => a -> IO (Ptr b)
    unsafeManagedPtrCastPtr a
    box
        child' <- unsafeManagedPtrCastPtr child
        (__dynamic_C_FlowBoxForeachFunc __funPtr) box' child' userData
        touchManagedPtr box
        touchManagedPtr child
        return ()

    -- | Generate a function pointer callable from C code, from a `C_FlowBoxForeachFunc`.
    foreign import ccall "wrapper"
        mk_FlowBoxForeachFunc :: C_FlowBoxForeachFunc -> IO (FunPtr C_FlowBoxForeachFunc)

    -- | A function used by 'GI.Gtk.Objects.FlowBox.flowBoxSelectedForeach'.
    -- It will be called on every selected child of the /@box@/.
    --
    -- /Since: 3.12/
    type FlowBoxForeachFunc =
        Gtk.FlowBox.FlowBox
        -- ^ /@box@/: a t'GI.Gtk.Objects.FlowBox.FlowBox'
        -> Gtk.FlowBoxChild.FlowBoxChild
        -- ^ /@child@/: a t'GI.Gtk.Objects.FlowBoxChild.FlowBoxChild'
        -> IO ()

    -- | A convenience synonym for @`Nothing` :: `Maybe` `FlowBoxForeachFunc`@.
    noFlowBoxForeachFunc :: Maybe FlowBoxForeachFunc
    noFlowBoxForeachFunc :: Maybe FlowBoxForeachFunc
    noFlowBoxForeachFunc = Maybe FlowBoxForeachFunc
    forall a. Maybe a
    Nothing

    -- | A function used by 'GI.Gtk.Objects.FlowBox.flowBoxSelectedForeach'.
    -- It will be called on every selected child of the /@box@/.
    --
    -- /Since: 3.12/
    type FlowBoxForeachFunc_WithClosures =
        Gtk.FlowBox.FlowBox
        -- ^ /@box@/: a t'GI.Gtk.Objects.FlowBox.FlowBox'
        -> Gtk.FlowBoxChild.FlowBoxChild
        -- ^ /@child@/: a t'GI.Gtk.Objects.FlowBoxChild.FlowBoxChild'
        -> Ptr ()
        -- ^ /@userData@/: user data
        -> IO ()

    -- | A convenience synonym for @`Nothing` :: `Maybe` `FlowBoxForeachFunc_WithClosures`@.
    noFlowBoxForeachFunc_WithClosures :: Maybe FlowBoxForeachFunc_WithClosures
    noFlowBoxForeachFunc_WithClosures :: Maybe FlowBoxForeachFunc_WithClosures
    noFlowBoxForeachFunc_WithClosures = Maybe FlowBoxForeachFunc_WithClosures
    forall a. Maybe a
    Nothing

    -- | A simple wrapper that ignores the closure arguments.
    drop_closures_FlowBoxForeachFunc :: FlowBoxForeachFunc -> FlowBoxForeachFunc_WithClosures
    drop_closures_FlowBoxForeachFunc :: FlowBoxForeachFunc -> FlowBoxForeachFunc_WithClosures
    drop_closures_FlowBoxForeachFunc FlowBoxForeachFunc
    _f FlowBox
    box FlowBoxChild
    child Ptr ()
    _ = FlowBoxForeachFunc
    _f FlowBox
    box FlowBoxChild
    child

    -- | Wrap the callback into a `GClosure`.
    genClosure_FlowBoxForeachFunc :: MonadIO m => FlowBoxForeachFunc -> m (GClosure C_FlowBoxForeachFunc)
    genClosure_FlowBoxForeachFunc :: forall (m :: * -> *).
    MonadIO m =>
    FlowBoxForeachFunc -> m (GClosure C_FlowBoxForeachFunc)
    genClosure_FlowBoxForeachFunc FlowBoxForeachFunc
    cb = IO (GClosure C_FlowBoxForeachFunc)
    -> m (GClosure C_FlowBoxForeachFunc)
    forall a. IO a -> m a
    forall (m :: * -> *) a. MonadIO m => IO a -> m a
    liftIO (IO (GClosure C_FlowBoxForeachFunc)
     -> m (GClosure C_FlowBoxForeachFunc))
    -> IO (GClosure C_FlowBoxForeachFunc)
    -> m (GClosure C_FlowBoxForeachFunc)
    forall a b. (a -> b) -> a -> b
    $ do
        let cb' :: FlowBoxForeachFunc_WithClosures
    cb' = FlowBoxForeachFunc -> FlowBoxForeachFunc_WithClosures
    drop_closures_FlowBoxForeachFunc FlowBoxForeachFunc
    cb
        let cb'' :: C_FlowBoxForeachFunc
    cb'' = Maybe (Ptr (FunPtr C_FlowBoxForeachFunc))
    -> FlowBoxForeachFunc_WithClosures -> C_FlowBoxForeachFunc
    wrap_FlowBoxForeachFunc Maybe (Ptr (FunPtr C_FlowBoxForeachFunc))
    forall a. Maybe a
    Nothing FlowBoxForeachFunc_WithClosures
    cb'
        C_FlowBoxForeachFunc -> IO (FunPtr C_FlowBoxForeachFunc)
    mk_FlowBoxForeachFunc C_FlowBoxForeachFunc
    cb'' IO (FunPtr C_FlowBoxForeachFunc)
    -> (FunPtr C_FlowBoxForeachFunc
        -> IO (GClosure C_FlowBoxForeachFunc))
    -> IO (GClosure C_FlowBoxForeachFunc)
    forall a b. IO a -> (a -> IO b) -> IO b
    forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
    >>= FunPtr C_FlowBoxForeachFunc -> IO (GClosure C_FlowBoxForeachFunc)
    forall (m :: * -> *) a. MonadIO m => FunPtr a -> m (GClosure a)
    B.GClosure.newGClosure

    -- | Wrap a `FlowBoxForeachFunc` into a `C_FlowBoxForeachFunc`.
    wrap_FlowBoxForeachFunc ::
        Maybe (Ptr (FunPtr C_FlowBoxForeachFunc)) ->
        FlowBoxForeachFunc_WithClosures ->
        C_FlowBoxForeachFunc
    wrap_FlowBoxForeachFunc :: Maybe (Ptr (FunPtr C_FlowBoxForeachFunc))
    -> FlowBoxForeachFunc_WithClosures -> C_FlowBoxForeachFunc
    wrap_FlowBoxForeachFunc Maybe (Ptr (FunPtr C_FlowBoxForeachFunc))
    gi'funptrptr FlowBoxForeachFunc_WithClosures
    gi'cb Ptr FlowBox
    box Ptr FlowBoxChild
    child Ptr ()
    userData = do
        box' <- ((ManagedPtr FlowBox -> FlowBox) -> Ptr FlowBox -> IO FlowBox
    forall a b.
    (HasCallStack, GObject a, GObject b) =>
    (ManagedPtr a -> a) -> Ptr b -> IO a
    newObject ManagedPtr FlowBox -> FlowBox
    Gtk.FlowBox.FlowBox) Ptr FlowBox
    box
        child' <- (newObject Gtk.FlowBoxChild.FlowBoxChild) child
        gi'cb  box' child' userData
        maybeReleaseFunPtr gi'funptrptr

    -- callback FlowBoxFilterFunc
    {- Callable
      { returnType = Just (TBasicType TBoolean)
      , returnMayBeNull = False
      , returnTransfer = TransferNothing
      , returnDocumentation =
          Documentation
            { rawDocText =
                Just "%TRUE if the row should be visible, %FALSE otherwise"
            , sinceVersion = Nothing
            }
      , args =
          [ Arg
              { argCName = "child"
              , argType =
                  TInterface Name { namespace = "Gtk" , name = "FlowBoxChild" }
              , argCType = Just "GtkFlowBoxChild*"
              , direction = DirectionIn
              , mayBeNull = False
              , argDoc =
                  Documentation
                    { rawDocText = Just "a #GtkFlowBoxChild that may be filtered"
                    , sinceVersion = Nothing
                    }
              , argScope = ScopeTypeInvalid
              , argClosure = -1
              , argDestroy = -1
              , argCallerAllocates = False
              , argCallbackUserData = False
              , transfer = TransferNothing
              }
          , Arg
              { argCName = "user_data"
              , argType = TBasicType TPtr
              , argCType = Just "gpointer"
              , direction = DirectionIn
              , mayBeNull = True
              , argDoc =
                  Documentation
                    { rawDocText = Just "user data" , sinceVersion = Nothing }
              , argScope = ScopeTypeInvalid
              , argClosure = -1
              , argDestroy = -1
              , argCallerAllocates = False
              , argCallbackUserData = True
              , transfer = TransferNothing
              }
          ]
      , skipReturn = False
      , callableThrows = False
      , callableDeprecated = Nothing
      , callableDocumentation =
          Documentation
            { rawDocText =
                Just
                  "A function that will be called whenrever a child changes\nor is added. It lets you control if the child should be\nvisible or not."
            , sinceVersion = Just "3.12"
            }
      , callableResolvable = Nothing
      }
    -}
    -- | Type for the callback on the (unwrapped) C side.
    type C_FlowBoxFilterFunc =
        Ptr Gtk.FlowBoxChild.FlowBoxChild ->
        Ptr () ->
        IO CInt

    -- Args: [ Arg
    --           { argCName = "child"
    --           , argType =
    --               TInterface Name { namespace = "Gtk" , name = "FlowBoxChild" }
    --           , argCType = Just "GtkFlowBoxChild*"
    --           , direction = DirectionIn
    --           , mayBeNull = False
    --           , argDoc =
    --               Documentation
    --                 { rawDocText = Just "a #GtkFlowBoxChild that may be filtered"
    --                 , sinceVersion = Nothing
    --                 }
    --           , argScope = ScopeTypeInvalid
    --           , argClosure = -1
    --           , argDestroy = -1
    --           , argCallerAllocates = False
    --           , argCallbackUserData = False
    --           , transfer = TransferNothing
    --           }
    --       , Arg
    --           { argCName = "user_data"
    --           , argType = TBasicType TPtr
    --           , argCType = Just "gpointer"
    --           , direction = DirectionIn
    --           , mayBeNull = True
    --           , argDoc =
    --               Documentation
    --                 { rawDocText = Just "user data" , sinceVersion = Nothing }
    --           , argScope = ScopeTypeInvalid
    --           , argClosure = -1
    --           , argDestroy = -1
    --           , argCallerAllocates = False
    --           , argCallbackUserData = True
    --           , transfer = TransferNothing
    --           }
    --       ]
    -- Lengths: []
    -- returnType: Just (TBasicType TBoolean)
    -- throws : False
    -- Skip return : False

    foreign import ccall "dynamic" __dynamic_C_FlowBoxFilterFunc :: FunPtr C_FlowBoxFilterFunc -> C_FlowBoxFilterFunc

    -- | Given a pointer to a foreign C function, wrap it into a function callable from Haskell.
    dynamic_FlowBoxFilterFunc ::
        (B.CallStack.HasCallStack, MonadIO m, Gtk.FlowBoxChild.IsFlowBoxChild a) =>
        FunPtr C_FlowBoxFilterFunc
        -> a
        -- ^ /@child@/: a t'GI.Gtk.Objects.FlowBoxChild.FlowBoxChild' that may be filtered
        -> Ptr ()
        -- ^ /@userData@/: user data
        -> m Bool
        -- ^ __Returns:__ 'P.True' if the row should be visible, 'P.False' otherwise
    dynamic_FlowBoxFilterFunc :: forall (m :: * -> *) a.
    (HasCallStack, MonadIO m, IsFlowBoxChild a) =>
    FunPtr C_FlowBoxFilterFunc -> a -> Ptr () -> m Bool
    dynamic_FlowBoxFilterFunc FunPtr C_FlowBoxFilterFunc
    __funPtr a
    child Ptr ()
    userData = IO Bool -> m Bool
    forall a. IO a -> m a
    forall (m :: * -> *) a. MonadIO m => IO a -> m a
    liftIO (IO Bool -> m Bool) -> IO Bool -> m Bool
    forall a b. (a -> b) -> a -> b
    $ do
        child' <- a -> IO (Ptr FlowBoxChild)
    forall a b. (HasCallStack, ManagedPtrNewtype a) => a -> IO (Ptr b)
    unsafeManagedPtrCastPtr a
    child
        result <- (__dynamic_C_FlowBoxFilterFunc __funPtr) child' userData
        let result' = (CInt -> CInt -> Bool
    forall a. Eq a => a -> a -> Bool
    /= CInt
    0) CInt
    result
        touchManagedPtr child
        return result'

    -- | Generate a function pointer callable from C code, from a `C_FlowBoxFilterFunc`.
    foreign import ccall "wrapper"
        mk_FlowBoxFilterFunc :: C_FlowBoxFilterFunc -> IO (FunPtr C_FlowBoxFilterFunc)

    -- | A function that will be called whenrever a child changes
    -- or is added. It lets you control if the child should be
    -- visible or not.
    --
    -- /Since: 3.12/
    type FlowBoxFilterFunc =
        Gtk.FlowBoxChild.FlowBoxChild
        -- ^ /@child@/: a t'GI.Gtk.Objects.FlowBoxChild.FlowBoxChild' that may be filtered
        -> IO Bool
        -- ^ __Returns:__ 'P.True' if the row should be visible, 'P.False' otherwise

    -- | A convenience synonym for @`Nothing` :: `Maybe` `FlowBoxFilterFunc`@.
    noFlowBoxFilterFunc :: Maybe FlowBoxFilterFunc
    noFlowBoxFilterFunc :: Maybe FlowBoxFilterFunc
    noFlowBoxFilterFunc = Maybe FlowBoxFilterFunc
    forall a. Maybe a
    Nothing

    -- | A function that will be called whenrever a child changes
    -- or is added. It lets you control if the child should be
    -- visible or not.
    --
    -- /Since: 3.12/
    type FlowBoxFilterFunc_WithClosures =
        Gtk.FlowBoxChild.FlowBoxChild
        -- ^ /@child@/: a t'GI.Gtk.Objects.FlowBoxChild.FlowBoxChild' that may be filtered
        -> Ptr ()
        -- ^ /@userData@/: user data
        -> IO Bool
        -- ^ __Returns:__ 'P.True' if the row should be visible, 'P.False' otherwise

    -- | A convenience synonym for @`Nothing` :: `Maybe` `FlowBoxFilterFunc_WithClosures`@.
    noFlowBoxFilterFunc_WithClosures :: Maybe FlowBoxFilterFunc_WithClosures
    noFlowBoxFilterFunc_WithClosures :: Maybe FlowBoxFilterFunc_WithClosures
    noFlowBoxFilterFunc_WithClosures = Maybe FlowBoxFilterFunc_WithClosures
    forall a. Maybe a
    Nothing

    -- | A simple wrapper that ignores the closure arguments.
    drop_closures_FlowBoxFilterFunc :: FlowBoxFilterFunc -> FlowBoxFilterFunc_WithClosures
    drop_closures_FlowBoxFilterFunc :: FlowBoxFilterFunc -> FlowBoxFilterFunc_WithClosures
    drop_closures_FlowBoxFilterFunc FlowBoxFilterFunc
    _f FlowBoxChild
    child Ptr ()
    _ = FlowBoxFilterFunc
    _f FlowBoxChild
    child

    -- | Wrap the callback into a `GClosure`.
    genClosure_FlowBoxFilterFunc :: MonadIO m => FlowBoxFilterFunc -> m (GClosure C_FlowBoxFilterFunc)
    genClosure_FlowBoxFilterFunc :: forall (m :: * -> *).
    MonadIO m =>
    FlowBoxFilterFunc -> m (GClosure C_FlowBoxFilterFunc)
    genClosure_FlowBoxFilterFunc FlowBoxFilterFunc
    cb = IO (GClosure C_FlowBoxFilterFunc)
    -> m (GClosure C_FlowBoxFilterFunc)
    forall a. IO a -> m a
    forall (m :: * -> *) a. MonadIO m => IO a -> m a
    liftIO (IO (GClosure C_FlowBoxFilterFunc)
     -> m (GClosure C_FlowBoxFilterFunc))
    -> IO (GClosure C_FlowBoxFilterFunc)
    -> m (GClosure C_FlowBoxFilterFunc)
    forall a b. (a -> b) -> a -> b
    $ do
        let cb' :: FlowBoxFilterFunc_WithClosures
    cb' = FlowBoxFilterFunc -> FlowBoxFilterFunc_WithClosures
    drop_closures_FlowBoxFilterFunc FlowBoxFilterFunc
    cb
        let cb'' :: C_FlowBoxFilterFunc
    cb'' = Maybe (Ptr (FunPtr C_FlowBoxFilterFunc))
    -> FlowBoxFilterFunc_WithClosures -> C_FlowBoxFilterFunc
    wrap_FlowBoxFilterFunc Maybe (Ptr (FunPtr C_FlowBoxFilterFunc))
    forall a. Maybe a
    Nothing FlowBoxFilterFunc_WithClosures
    cb'
        C_FlowBoxFilterFunc -> IO (FunPtr C_FlowBoxFilterFunc)
    mk_FlowBoxFilterFunc C_FlowBoxFilterFunc
    cb'' IO (FunPtr C_FlowBoxFilterFunc)
    -> (FunPtr C_FlowBoxFilterFunc
        -> IO (GClosure C_FlowBoxFilterFunc))
    -> IO (GClosure C_FlowBoxFilterFunc)
    forall a b. IO a -> (a -> IO b) -> IO b
    forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
    >>= FunPtr C_FlowBoxFilterFunc -> IO (GClosure C_FlowBoxFilterFunc)
    forall (m :: * -> *) a. MonadIO m => FunPtr a -> m (GClosure a)
    B.GClosure.newGClosure

    -- | Wrap a `FlowBoxFilterFunc` into a `C_FlowBoxFilterFunc`.
    wrap_FlowBoxFilterFunc ::
        Maybe (Ptr (FunPtr C_FlowBoxFilterFunc)) ->
        FlowBoxFilterFunc_WithClosures ->
        C_FlowBoxFilterFunc
    wrap_FlowBoxFilterFunc :: Maybe (Ptr (FunPtr C_FlowBoxFilterFunc))
    -> FlowBoxFilterFunc_WithClosures -> C_FlowBoxFilterFunc
    wrap_FlowBoxFilterFunc Maybe (Ptr (FunPtr C_FlowBoxFilterFunc))
    gi'funptrptr FlowBoxFilterFunc_WithClosures
    gi'cb Ptr FlowBoxChild
    child Ptr ()
    userData = do
        child' <- ((ManagedPtr FlowBoxChild -> FlowBoxChild)
    -> Ptr FlowBoxChild -> IO FlowBoxChild
    forall a b.
    (HasCallStack, GObject a, GObject b) =>
    (ManagedPtr a -> a) -> Ptr b -> IO a
    newObject ManagedPtr FlowBoxChild -> FlowBoxChild
    Gtk.FlowBoxChild.FlowBoxChild) Ptr FlowBoxChild
    child
        result <- gi'cb  child' userData
        maybeReleaseFunPtr gi'funptrptr
        let result' = (Int -> CInt
    forall a b. (Integral a, Num b) => a -> b
    P.fromIntegral (Int -> CInt) -> (Bool -> Int) -> Bool -> CInt
    forall b c a. (b -> c) -> (a -> b) -> a -> c
    . Bool -> Int
    forall a. Enum a => a -> Int
    P.fromEnum) Bool
    result
        return result'

    -- callback FlowBoxCreateWidgetFunc
    {- Callable
      { returnType =
          Just (TInterface Name { namespace = "Gtk" , name = "Widget" })
      , returnMayBeNull = False
      , returnTransfer = TransferEverything
      , returnDocumentation =
          Documentation
            { rawDocText = Just "a #GtkWidget that represents @item"
            , sinceVersion = Nothing
            }
      , args =
          [ Arg
              { argCName = "item"
              , argType =
                  TInterface Name { namespace = "GObject" , name = "Object" }
              , argCType = Just "gpointer"
              , direction = DirectionIn
              , mayBeNull = True
              , argDoc =
                  Documentation
                    { rawDocText =
                        Just "the item from the model for which to create a widget for"
                    , sinceVersion = Nothing
                    }
              , argScope = ScopeTypeInvalid
              , argClosure = -1
              , argDestroy = -1
              , argCallerAllocates = False
              , argCallbackUserData = False
              , transfer = TransferNothing
              }
          , Arg
              { argCName = "user_data"
              , argType = TBasicType TPtr
              , argCType = Just "gpointer"
              , direction = DirectionIn
              , mayBeNull = True
              , argDoc =
                  Documentation
                    { rawDocText = Just "user data from gtk_flow_box_bind_model()"
                    , sinceVersion = Nothing
                    }
              , argScope = ScopeTypeInvalid
              , argClosure = -1
              , argDestroy = -1
              , argCallerAllocates = False
              , argCallbackUserData = True
              , transfer = TransferNothing
              }
          ]
      , skipReturn = False
      , callableThrows = False
      , callableDeprecated = Nothing
      , callableDocumentation =
          Documentation
            { rawDocText =
                Just
                  "Called for flow boxes that are bound to a #GListModel with\ngtk_flow_box_bind_model() for each item that gets added to the model."
            , sinceVersion = Just "3.18"
            }
      , callableResolvable = Nothing
      }
    -}
    -- | Type for the callback on the (unwrapped) C side.
    type C_FlowBoxCreateWidgetFunc =
        Ptr GObject.Object.Object ->
        Ptr () ->
        IO (Ptr Gtk.Widget.Widget)

    -- Args: [ Arg
    --           { argCName = "item"
    --           , argType =
    --               TInterface Name { namespace = "GObject" , name = "Object" }
    --           , argCType = Just "gpointer"
    --           , direction = DirectionIn
    --           , mayBeNull = True
    --           , argDoc =
    --               Documentation
    --                 { rawDocText =
    --                     Just "the item from the model for which to create a widget for"
    --                 , sinceVersion = Nothing
    --                 }
    --           , argScope = ScopeTypeInvalid
    --           , argClosure = -1
    --           , argDestroy = -1
    --           , argCallerAllocates = False
    --           , argCallbackUserData = False
    --           , transfer = TransferNothing
    --           }
    --       , Arg
    --           { argCName = "user_data"
    --           , argType = TBasicType TPtr
    --           , argCType = Just "gpointer"
    --           , direction = DirectionIn
    --           , mayBeNull = True
    --           , argDoc =
    --               Documentation
    --                 { rawDocText = Just "user data from gtk_flow_box_bind_model()"
    --                 , sinceVersion = Nothing
    --                 }
    --           , argScope = ScopeTypeInvalid
    --           , argClosure = -1
    --           , argDestroy = -1
    --           , argCallerAllocates = False
    --           , argCallbackUserData = True
    --           , transfer = TransferNothing
    --           }
    --       ]
    -- Lengths: []
    -- returnType: Just (TInterface Name { namespace = "Gtk" , name = "Widget" })
    -- throws : False
    -- Skip return : False

    foreign import ccall "dynamic" __dynamic_C_FlowBoxCreateWidgetFunc :: FunPtr C_FlowBoxCreateWidgetFunc -> C_FlowBoxCreateWidgetFunc

    -- | Given a pointer to a foreign C function, wrap it into a function callable from Haskell.
    dynamic_FlowBoxCreateWidgetFunc ::
        (B.CallStack.HasCallStack, MonadIO m, GObject.Object.IsObject a) =>
        FunPtr C_FlowBoxCreateWidgetFunc
        -> Maybe (a)
        -- ^ /@item@/: the item from the model for which to create a widget for
        -> Ptr ()
        -- ^ /@userData@/: user data from 'GI.Gtk.Objects.FlowBox.flowBoxBindModel'
        -> m Gtk.Widget.Widget
        -- ^ __Returns:__ a t'GI.Gtk.Objects.Widget.Widget' that represents /@item@/
    dynamic_FlowBoxCreateWidgetFunc :: forall (m :: * -> *) a.
    (HasCallStack, MonadIO m, IsObject a) =>
    FunPtr C_ListBoxCreateWidgetFunc -> Maybe a -> Ptr () -> m Widget
    dynamic_FlowBoxCreateWidgetFunc FunPtr C_ListBoxCreateWidgetFunc
    __funPtr Maybe a
    item Ptr ()
    userData = IO Widget -> m Widget
    forall a. IO a -> m a
    forall (m :: * -> *) a. MonadIO m => IO a -> m a
    liftIO (IO Widget -> m Widget) -> IO Widget -> m Widget
    forall a b. (a -> b) -> a -> b
    $ do
        maybeItem <- case Maybe a
    item of
            Maybe a
    Nothing -> Ptr Object -> IO (Ptr Object)
    forall a. a -> IO a
    forall (m :: * -> *) a. Monad m => a -> m a
    return Ptr Object
    forall a. Ptr a
    FP.nullPtr
            Just a
    jItem -> do
                jItem' <- a -> IO (Ptr Object)
    forall a b. (HasCallStack, ManagedPtrNewtype a) => a -> IO (Ptr b)
    unsafeManagedPtrCastPtr a
    jItem
                return jItem'
        result <- (__dynamic_C_FlowBoxCreateWidgetFunc __funPtr) maybeItem userData
        checkUnexpectedReturnNULL "flowBoxCreateWidgetFunc" result
        result' <- (wrapObject Gtk.Widget.Widget) result
        whenJust item touchManagedPtr
        return result'

    -- | Generate a function pointer callable from C code, from a `C_FlowBoxCreateWidgetFunc`.
    foreign import ccall "wrapper"
        mk_FlowBoxCreateWidgetFunc :: C_FlowBoxCreateWidgetFunc -> IO (FunPtr C_FlowBoxCreateWidgetFunc)

    -- | Called for flow boxes that are bound to a t'GI.Gio.Interfaces.ListModel.ListModel' with
    -- 'GI.Gtk.Objects.FlowBox.flowBoxBindModel' for each item that gets added to the model.
    --
    -- /Since: 3.18/
    type FlowBoxCreateWidgetFunc =
        Maybe GObject.Object.Object
        -- ^ /@item@/: the item from the model for which to create a widget for
        -> IO Gtk.Widget.Widget
        -- ^ __Returns:__ a t'GI.Gtk.Objects.Widget.Widget' that represents /@item@/

    -- | A convenience synonym for @`Nothing` :: `Maybe` `FlowBoxCreateWidgetFunc`@.
    noFlowBoxCreateWidgetFunc :: Maybe FlowBoxCreateWidgetFunc
    noFlowBoxCreateWidgetFunc :: Maybe FlowBoxCreateWidgetFunc
    noFlowBoxCreateWidgetFunc = Maybe FlowBoxCreateWidgetFunc
    forall a. Maybe a
    Nothing

    -- | Called for flow boxes that are bound to a t'GI.Gio.Interfaces.ListModel.ListModel' with
    -- 'GI.Gtk.Objects.FlowBox.flowBoxBindModel' for each item that gets added to the model.
    --
    -- /Since: 3.18/
    type FlowBoxCreateWidgetFunc_WithClosures =
        Maybe GObject.Object.Object
        -- ^ /@item@/: the item from the model for which to create a widget for
        -> Ptr ()
        -- ^ /@userData@/: user data from 'GI.Gtk.Objects.FlowBox.flowBoxBindModel'
        -> IO Gtk.Widget.Widget
        -- ^ __Returns:__ a t'GI.Gtk.Objects.Widget.Widget' that represents /@item@/

    -- | A convenience synonym for @`Nothing` :: `Maybe` `FlowBoxCreateWidgetFunc_WithClosures`@.
    noFlowBoxCreateWidgetFunc_WithClosures :: Maybe FlowBoxCreateWidgetFunc_WithClosures
    noFlowBoxCreateWidgetFunc_WithClosures :: Maybe FlowBoxCreateWidgetFunc_WithClosures
    noFlowBoxCreateWidgetFunc_WithClosures = Maybe FlowBoxCreateWidgetFunc_WithClosures
    forall a. Maybe a
    Nothing

    -- | A simple wrapper that ignores the closure arguments.
    drop_closures_FlowBoxCreateWidgetFunc :: FlowBoxCreateWidgetFunc -> FlowBoxCreateWidgetFunc_WithClosures
    drop_closures_FlowBoxCreateWidgetFunc :: FlowBoxCreateWidgetFunc -> FlowBoxCreateWidgetFunc_WithClosures
    drop_closures_FlowBoxCreateWidgetFunc FlowBoxCreateWidgetFunc
    _f Maybe Object
    item Ptr ()
    _ = FlowBoxCreateWidgetFunc
    _f Maybe Object
    item

    -- | Wrap the callback into a `GClosure`.
    genClosure_FlowBoxCreateWidgetFunc :: MonadIO m => FlowBoxCreateWidgetFunc -> m (GClosure C_FlowBoxCreateWidgetFunc)
    genClosure_FlowBoxCreateWidgetFunc :: forall (m :: * -> *).
    MonadIO m =>
    FlowBoxCreateWidgetFunc -> m (GClosure C_ListBoxCreateWidgetFunc)
    genClosure_FlowBoxCreateWidgetFunc FlowBoxCreateWidgetFunc
    cb = IO (GClosure C_ListBoxCreateWidgetFunc)
    -> m (GClosure C_ListBoxCreateWidgetFunc)
    forall a. IO a -> m a
    forall (m :: * -> *) a. MonadIO m => IO a -> m a
    liftIO (IO (GClosure C_ListBoxCreateWidgetFunc)
     -> m (GClosure C_ListBoxCreateWidgetFunc))
    -> IO (GClosure C_ListBoxCreateWidgetFunc)
    -> m (GClosure C_ListBoxCreateWidgetFunc)
    forall a b. (a -> b) -> a -> b
    $ do
        let cb' :: FlowBoxCreateWidgetFunc_WithClosures
    cb' = FlowBoxCreateWidgetFunc -> FlowBoxCreateWidgetFunc_WithClosures
    drop_closures_FlowBoxCreateWidgetFunc FlowBoxCreateWidgetFunc
    cb
        let cb'' :: C_ListBoxCreateWidgetFunc
    cb'' = Maybe (Ptr (FunPtr C_ListBoxCreateWidgetFunc))
    -> FlowBoxCreateWidgetFunc_WithClosures
    -> C_ListBoxCreateWidgetFunc
    wrap_FlowBoxCreateWidgetFunc Maybe (Ptr (FunPtr C_ListBoxCreateWidgetFunc))
    forall a. Maybe a
    Nothing FlowBoxCreateWidgetFunc_WithClosures
    cb'
        C_ListBoxCreateWidgetFunc -> IO (FunPtr C_ListBoxCreateWidgetFunc)
    mk_FlowBoxCreateWidgetFunc C_ListBoxCreateWidgetFunc
    cb'' IO (FunPtr C_ListBoxCreateWidgetFunc)
    -> (FunPtr C_ListBoxCreateWidgetFunc
        -> IO (GClosure C_ListBoxCreateWidgetFunc))
    -> IO (GClosure C_ListBoxCreateWidgetFunc)
    forall a b. IO a -> (a -> IO b) -> IO b
    forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
    >>= FunPtr C_ListBoxCreateWidgetFunc
    -> IO (GClosure C_ListBoxCreateWidgetFunc)
    forall (m :: * -> *) a. MonadIO m => FunPtr a -> m (GClosure a)
    B.GClosure.newGClosure

    -- | Wrap a `FlowBoxCreateWidgetFunc` into a `C_FlowBoxCreateWidgetFunc`.
    wrap_FlowBoxCreateWidgetFunc ::
        Maybe (Ptr (FunPtr C_FlowBoxCreateWidgetFunc)) ->
        FlowBoxCreateWidgetFunc_WithClosures ->
        C_FlowBoxCreateWidgetFunc
    wrap_FlowBoxCreateWidgetFunc :: Maybe (Ptr (FunPtr C_ListBoxCreateWidgetFunc))
    -> FlowBoxCreateWidgetFunc_WithClosures
    -> C_ListBoxCreateWidgetFunc
    wrap_FlowBoxCreateWidgetFunc Maybe (Ptr (FunPtr C_ListBoxCreateWidgetFunc))
    gi'funptrptr FlowBoxCreateWidgetFunc_WithClosures
    gi'cb Ptr Object
    item Ptr ()
    userData = do
        maybeItem <-
            if Ptr Object
    item Ptr Object -> Ptr Object -> Bool
    forall a. Eq a => a -> a -> Bool
    == Ptr Object
    forall a. Ptr a
    FP.nullPtr
            then Maybe Object -> IO (Maybe Object)
    forall a. a -> IO a
    forall (m :: * -> *) a. Monad m => a -> m a
    return Maybe Object
    forall a. Maybe a
    Nothing
            else do
                item' <- ((ManagedPtr Object -> Object) -> Ptr Object -> IO Object
    forall a b.
    (HasCallStack, GObject a, GObject b) =>
    (ManagedPtr a -> a) -> Ptr b -> IO a
    newObject ManagedPtr Object -> Object
    GObject.Object.Object) Ptr Object
    item
                return $ Just item'
        result <- gi'cb  maybeItem userData
        maybeReleaseFunPtr gi'funptrptr
        result' <- B.ManagedPtr.disownObject result
        return result'

    -- callback FileFilterFunc
    {- Callable
      { returnType = Just (TBasicType TBoolean)
      , returnMayBeNull = False
      , returnTransfer = TransferNothing
      , returnDocumentation =
          Documentation
            { rawDocText = Just "%TRUE if the file should be displayed"
            , sinceVersion = Nothing
            }
      , args =
          [ Arg
              { argCName = "filter_info"
              , argType =
                  TInterface Name { namespace = "Gtk" , name = "FileFilterInfo" }
              , argCType = Just "const GtkFileFilterInfo*"
              , direction = DirectionIn
              , mayBeNull = False
              , argDoc =
                  Documentation
                    { rawDocText =
                        Just
                          "a #GtkFileFilterInfo that is filled according\n  to the @needed flags passed to gtk_file_filter_add_custom()"
                    , sinceVersion = Nothing
                    }
              , argScope = ScopeTypeInvalid
              , argClosure = -1
              , argDestroy = -1
              , argCallerAllocates = False
              , argCallbackUserData = False
              , transfer = TransferNothing
              }
          , Arg
              { argCName = "data"
              , argType = TBasicType TPtr
              , argCType = Just "gpointer"
              , direction = DirectionIn
              , mayBeNull = True
              , argDoc =
                  Documentation
                    { rawDocText =
                        Just "user data passed to gtk_file_filter_add_custom()"
                    , sinceVersion = Nothing
                    }
              , argScope = ScopeTypeInvalid
              , argClosure = -1
              , argDestroy = -1
              , argCallerAllocates = False
              , argCallbackUserData = True
              , transfer = TransferNothing
              }
          ]
      , skipReturn = False
      , callableThrows = False
      , callableDeprecated = Nothing
      , callableDocumentation =
          Documentation
            { rawDocText =
                Just
                  "The type of function that is used with custom filters, see\ngtk_file_filter_add_custom()."
            , sinceVersion = Nothing
            }
      , callableResolvable = Nothing
      }
    -}
    -- | Type for the callback on the (unwrapped) C side.
    type C_FileFilterFunc =
        Ptr Gtk.FileFilterInfo.FileFilterInfo ->
        Ptr () ->
        IO CInt

    -- Args: [ Arg
    --           { argCName = "filter_info"
    --           , argType =
    --               TInterface Name { namespace = "Gtk" , name = "FileFilterInfo" }
    --           , argCType = Just "const GtkFileFilterInfo*"
    --           , direction = DirectionIn
    --           , mayBeNull = False
    --           , argDoc =
    --               Documentation
    --                 { rawDocText =
    --                     Just
    --                       "a #GtkFileFilterInfo that is filled according\n  to the @needed flags passed to gtk_file_filter_add_custom()"
    --                 , sinceVersion = Nothing
    --                 }
    --           , argScope = ScopeTypeInvalid
    --           , argClosure = -1
    --           , argDestroy = -1
    --           , argCallerAllocates = False
    --           , argCallbackUserData = False
    --           , transfer = TransferNothing
    --           }
    --       , Arg
    --           { argCName = "data"
    --           , argType = TBasicType TPtr
    --           , argCType = Just "gpointer"
    --           , direction = DirectionIn
    --           , mayBeNull = True
    --           , argDoc =
    --               Documentation
    --                 { rawDocText =
    --                     Just "user data passed to gtk_file_filter_add_custom()"
    --                 , sinceVersion = Nothing
    --                 }
    --           , argScope = ScopeTypeInvalid
    --           , argClosure = -1
    --           , argDestroy = -1
    --           , argCallerAllocates = False
    --           , argCallbackUserData = True
    --           , transfer = TransferNothing
    --           }
    --       ]
    -- Lengths: []
    -- returnType: Just (TBasicType TBoolean)
    -- throws : False
    -- Skip return : False

    foreign import ccall "dynamic" __dynamic_C_FileFilterFunc :: FunPtr C_FileFilterFunc -> C_FileFilterFunc

    -- | Given a pointer to a foreign C function, wrap it into a function callable from Haskell.
    dynamic_FileFilterFunc ::
        (B.CallStack.HasCallStack, MonadIO m) =>
        FunPtr C_FileFilterFunc
        -> Gtk.FileFilterInfo.FileFilterInfo
        -- ^ /@filterInfo@/: a t'GI.Gtk.Structs.FileFilterInfo.FileFilterInfo' that is filled according
        --   to the /@needed@/ flags passed to 'GI.Gtk.Objects.FileFilter.fileFilterAddCustom'
        -> Ptr ()
        -- ^ /@data@/: user data passed to 'GI.Gtk.Objects.FileFilter.fileFilterAddCustom'
        -> m Bool
        -- ^ __Returns:__ 'P.True' if the file should be displayed
    dynamic_FileFilterFunc :: forall (m :: * -> *).
    (HasCallStack, MonadIO m) =>
    FunPtr C_FileFilterFunc -> FileFilterInfo -> Ptr () -> m Bool
    dynamic_FileFilterFunc FunPtr C_FileFilterFunc
    __funPtr FileFilterInfo
    filterInfo Ptr ()
    data_ = IO Bool -> m Bool
    forall a. IO a -> m a
    forall (m :: * -> *) a. MonadIO m => IO a -> m a
    liftIO (IO Bool -> m Bool) -> IO Bool -> m Bool
    forall a b. (a -> b) -> a -> b
    $ do
        filterInfo' <- FileFilterInfo -> IO (Ptr FileFilterInfo)
    forall a. (HasCallStack, ManagedPtrNewtype a) => a -> IO (Ptr a)
    unsafeManagedPtrGetPtr FileFilterInfo
    filterInfo
        result <- (__dynamic_C_FileFilterFunc __funPtr) filterInfo' data_
        let result' = (CInt -> CInt -> Bool
    forall a. Eq a => a -> a -> Bool
    /= CInt
    0) CInt
    result
        touchManagedPtr filterInfo
        return result'

    -- | Generate a function pointer callable from C code, from a `C_FileFilterFunc`.
    foreign import ccall "wrapper"
        mk_FileFilterFunc :: C_FileFilterFunc -> IO (FunPtr C_FileFilterFunc)

    -- | The type of function that is used with custom filters, see
    -- 'GI.Gtk.Objects.FileFilter.fileFilterAddCustom'.
    type FileFilterFunc =
        Gtk.FileFilterInfo.FileFilterInfo
        -- ^ /@filterInfo@/: a t'GI.Gtk.Structs.FileFilterInfo.FileFilterInfo' that is filled according
        --   to the /@needed@/ flags passed to 'GI.Gtk.Objects.FileFilter.fileFilterAddCustom'
        -> IO Bool
        -- ^ __Returns:__ 'P.True' if the file should be displayed

    -- | A convenience synonym for @`Nothing` :: `Maybe` `FileFilterFunc`@.
    noFileFilterFunc :: Maybe FileFilterFunc
    noFileFilterFunc :: Maybe FileFilterFunc
    noFileFilterFunc = Maybe FileFilterFunc
    forall a. Maybe a
    Nothing

    -- | The type of function that is used with custom filters, see
    -- 'GI.Gtk.Objects.FileFilter.fileFilterAddCustom'.
    type FileFilterFunc_WithClosures =
        Gtk.FileFilterInfo.FileFilterInfo
        -- ^ /@filterInfo@/: a t'GI.Gtk.Structs.FileFilterInfo.FileFilterInfo' that is filled according
        --   to the /@needed@/ flags passed to 'GI.Gtk.Objects.FileFilter.fileFilterAddCustom'
        -> Ptr ()
        -- ^ /@data@/: user data passed to 'GI.Gtk.Objects.FileFilter.fileFilterAddCustom'
        -> IO Bool
        -- ^ __Returns:__ 'P.True' if the file should be displayed

    -- | A convenience synonym for @`Nothing` :: `Maybe` `FileFilterFunc_WithClosures`@.
    noFileFilterFunc_WithClosures :: Maybe FileFilterFunc_WithClosures
    noFileFilterFunc_WithClosures :: Maybe FileFilterFunc_WithClosures
    noFileFilterFunc_WithClosures = Maybe FileFilterFunc_WithClosures
    forall a. Maybe a
    Nothing

    -- | A simple wrapper that ignores the closure arguments.
    drop_closures_FileFilterFunc :: FileFilterFunc -> FileFilterFunc_WithClosures
    drop_closures_FileFilterFunc :: FileFilterFunc -> FileFilterFunc_WithClosures
    drop_closures_FileFilterFunc FileFilterFunc
    _f FileFilterInfo
    filterInfo Ptr ()
    _ = FileFilterFunc
    _f FileFilterInfo
    filterInfo

    -- | Wrap the callback into a `GClosure`.
    genClosure_FileFilterFunc :: MonadIO m => FileFilterFunc -> m (GClosure C_FileFilterFunc)
    genClosure_FileFilterFunc :: forall (m :: * -> *).
    MonadIO m =>
    FileFilterFunc -> m (GClosure C_FileFilterFunc)
    genClosure_FileFilterFunc FileFilterFunc
    cb = IO (GClosure C_FileFilterFunc) -> m (GClosure C_FileFilterFunc)
    forall a. IO a -> m a
    forall (m :: * -> *) a. MonadIO m => IO a -> m a
    liftIO (IO (GClosure C_FileFilterFunc) -> m (GClosure C_FileFilterFunc))
    -> IO (GClosure C_FileFilterFunc) -> m (GClosure C_FileFilterFunc)
    forall a b. (a -> b) -> a -> b
    $ do
        let cb' :: FileFilterFunc_WithClosures
    cb' = FileFilterFunc -> FileFilterFunc_WithClosures
    drop_closures_FileFilterFunc FileFilterFunc
    cb
        let cb'' :: C_FileFilterFunc
    cb'' = Maybe (Ptr (FunPtr C_FileFilterFunc))
    -> FileFilterFunc_WithClosures -> C_FileFilterFunc
    wrap_FileFilterFunc Maybe (Ptr (FunPtr C_FileFilterFunc))
    forall a. Maybe a
    Nothing FileFilterFunc_WithClosures
    cb'
        C_FileFilterFunc -> IO (FunPtr C_FileFilterFunc)
    mk_FileFilterFunc C_FileFilterFunc
    cb'' IO (FunPtr C_FileFilterFunc)
    -> (FunPtr C_FileFilterFunc -> IO (GClosure C_FileFilterFunc))
    -> IO (GClosure C_FileFilterFunc)
    forall a b. IO a -> (a -> IO b) -> IO b
    forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
    >>= FunPtr C_FileFilterFunc -> IO (GClosure C_FileFilterFunc)
    forall (m :: * -> *) a. MonadIO m => FunPtr a -> m (GClosure a)
    B.GClosure.newGClosure

    -- | Wrap a `FileFilterFunc` into a `C_FileFilterFunc`.
    wrap_FileFilterFunc ::
        Maybe (Ptr (FunPtr C_FileFilterFunc)) ->
        FileFilterFunc_WithClosures ->
        C_FileFilterFunc
    wrap_FileFilterFunc :: Maybe (Ptr (FunPtr C_FileFilterFunc))
    -> FileFilterFunc_WithClosures -> C_FileFilterFunc
    wrap_FileFilterFunc Maybe (Ptr (FunPtr C_FileFilterFunc))
    gi'funptrptr FileFilterFunc_WithClosures
    gi'cb Ptr FileFilterInfo
    filterInfo Ptr ()
    data_ = do
        filterInfo' <- ((ManagedPtr FileFilterInfo -> FileFilterInfo)
    -> Ptr FileFilterInfo -> IO FileFilterInfo
    forall a.
    (HasCallStack, BoxedPtr a) =>
    (ManagedPtr a -> a) -> Ptr a -> IO a
    newPtr ManagedPtr FileFilterInfo -> FileFilterInfo
    Gtk.FileFilterInfo.FileFilterInfo) Ptr FileFilterInfo
    filterInfo
        result <- gi'cb  filterInfo' data_
        maybeReleaseFunPtr gi'funptrptr
        let result' = (Int -> CInt
    forall a b. (Integral a, Num b) => a -> b
    P.fromIntegral (Int -> CInt) -> (Bool -> Int) -> Bool -> CInt
    forall b c a. (b -> c) -> (a -> b) -> a -> c
    . Bool -> Int
    forall a. Enum a => a -> Int
    P.fromEnum) Bool
    result
        return result'

    -- callback EntryCompletionMatchFunc
    {- Callable
      { returnType = Just (TBasicType TBoolean)
      , returnMayBeNull = False
      , returnTransfer = TransferNothing
      , returnDocumentation =
          Documentation
            { rawDocText =
                Just
                  "%TRUE if @iter should be displayed as a possible completion\n    for @key"
            , sinceVersion = Nothing
            }
      , args =
          [ Arg
              { argCName = "completion"
              , argType =
                  TInterface Name { namespace = "Gtk" , name = "EntryCompletion" }
              , argCType = Just "GtkEntryCompletion*"
              , direction = DirectionIn
              , mayBeNull = False
              , argDoc =
                  Documentation
                    { rawDocText = Just "the #GtkEntryCompletion"
                    , sinceVersion = Nothing
                    }
              , argScope = ScopeTypeInvalid
              , argClosure = -1
              , argDestroy = -1
              , argCallerAllocates = False
              , argCallbackUserData = False
              , transfer = TransferNothing
              }
          , Arg
              { argCName = "key"
              , argType = TBasicType TUTF8
              , argCType = Just "const gchar*"
              , direction = DirectionIn
              , mayBeNull = False
              , argDoc =
                  Documentation
                    { rawDocText =
                        Just "the string to match, normalized and case-folded"
                    , sinceVersion = Nothing
                    }
              , argScope = ScopeTypeInvalid
              , argClosure = -1
              , argDestroy = -1
              , argCallerAllocates = False
              , argCallbackUserData = False
              , transfer = TransferNothing
              }
          , Arg
              { argCName = "iter"
              , argType =
                  TInterface Name { namespace = "Gtk" , name = "TreeIter" }
              , argCType = Just "GtkTreeIter*"
              , direction = DirectionIn
              , mayBeNull = False
              , argDoc =
                  Documentation
                    { rawDocText = Just "a #GtkTreeIter indicating the row to match"
                    , sinceVersion = Nothing
                    }
              , argScope = ScopeTypeInvalid
              , argClosure = -1
              , argDestroy = -1
              , argCallerAllocates = False
              , argCallbackUserData = False
              , transfer = TransferNothing
              }
          , Arg
              { argCName = "user_data"
              , argType = TBasicType TPtr
              , argCType = Just "gpointer"
              , direction = DirectionIn
              , mayBeNull = True
              , argDoc =
                  Documentation
                    { rawDocText =
                        Just "user data given to gtk_entry_completion_set_match_func()"
                    , sinceVersion = Nothing
                    }
              , argScope = ScopeTypeInvalid
              , argClosure = -1
              , argDestroy = -1
              , argCallerAllocates = False
              , argCallbackUserData = True
              , transfer = TransferNothing
              }
          ]
      , skipReturn = False
      , callableThrows = False
      , callableDeprecated = Nothing
      , callableDocumentation =
          Documentation
            { rawDocText =
                Just
                  "A function which decides whether the row indicated by @iter matches\na given @key, and should be displayed as a possible completion for @key.\nNote that @key is normalized and case-folded (see g_utf8_normalize()\nand g_utf8_casefold()). If this is not appropriate, match functions\nhave access to the unmodified key via\n`gtk_entry_get_text (GTK_ENTRY (gtk_entry_completion_get_entry ()))`."
            , sinceVersion = Nothing
            }
      , callableResolvable = Nothing
      }
    -}
    -- | Type for the callback on the (unwrapped) C side.
    type C_EntryCompletionMatchFunc =
        Ptr Gtk.EntryCompletion.EntryCompletion ->
        CString ->
        Ptr Gtk.TreeIter.TreeIter ->
        Ptr () ->
        IO CInt

    -- Args: [ Arg
    --           { argCName = "completion"
    --           , argType =
    --               TInterface Name { namespace = "Gtk" , name = "EntryCompletion" }
    --           , argCType = Just "GtkEntryCompletion*"
    --           , direction = DirectionIn
    --           , mayBeNull = False
    --           , argDoc =
    --               Documentation
    --                 { rawDocText = Just "the #GtkEntryCompletion"
    --                 , sinceVersion = Nothing
    --                 }
    --           , argScope = ScopeTypeInvalid
    --           , argClosure = -1
    --           , argDestroy = -1
    --           , argCallerAllocates = False
    --           , argCallbackUserData = False
    --           , transfer = TransferNothing
    --           }
    --       , Arg
    --           { argCName = "key"
    --           , argType = TBasicType TUTF8
    --           , argCType = Just "const gchar*"
    --           , direction = DirectionIn
    --           , mayBeNull = False
    --           , argDoc =
    --               Documentation
    --                 { rawDocText =
    --                     Just "the string to match, normalized and case-folded"
    --                 , sinceVersion = Nothing
    --                 }
    --           , argScope = ScopeTypeInvalid
    --           , argClosure = -1
    --           , argDestroy = -1
    --           , argCallerAllocates = False
    --           , argCallbackUserData = False
    --           , transfer = TransferNothing
    --           }
    --       , Arg
    --           { argCName = "iter"
    --           , argType =
    --               TInterface Name { namespace = "Gtk" , name = "TreeIter" }
    --           , argCType = Just "GtkTreeIter*"
    --           , direction = DirectionIn
    --           , mayBeNull = False
    --           , argDoc =
    --               Documentation
    --                 { rawDocText = Just "a #GtkTreeIter indicating the row to match"
    --                 , sinceVersion = Nothing
    --                 }
    --           , argScope = ScopeTypeInvalid
    --           , argClosure = -1
    --           , argDestroy = -1
    --           , argCallerAllocates = False
    --           , argCallbackUserData = False
    --           , transfer = TransferNothing
    --           }
    --       , Arg
    --           { argCName = "user_data"
    --           , argType = TBasicType TPtr
    --           , argCType = Just "gpointer"
    --           , direction = DirectionIn
    --           , mayBeNull = True
    --           , argDoc =
    --               Documentation
    --                 { rawDocText =
    --                     Just "user data given to gtk_entry_completion_set_match_func()"
    --                 , sinceVersion = Nothing
    --                 }
    --           , argScope = ScopeTypeInvalid
    --           , argClosure = -1
    --           , argDestroy = -1
    --           , argCallerAllocates = False
    --           , argCallbackUserData = True
    --           , transfer = TransferNothing
    --           }
    --       ]
    -- Lengths: []
    -- returnType: Just (TBasicType TBoolean)
    -- throws : False
    -- Skip return : False

    foreign import ccall "dynamic" __dynamic_C_EntryCompletionMatchFunc :: FunPtr C_EntryCompletionMatchFunc -> C_EntryCompletionMatchFunc

    -- | Given a pointer to a foreign C function, wrap it into a function callable from Haskell.
    dynamic_EntryCompletionMatchFunc ::
        (B.CallStack.HasCallStack, MonadIO m, Gtk.EntryCompletion.IsEntryCompletion a) =>
        FunPtr C_EntryCompletionMatchFunc
        -> a
        -- ^ /@completion@/: the t'GI.Gtk.Objects.EntryCompletion.EntryCompletion'
        -> T.Text
        -- ^ /@key@/: the string to match, normalized and case-folded
        -> Gtk.TreeIter.TreeIter
        -- ^ /@iter@/: a t'GI.Gtk.Structs.TreeIter.TreeIter' indicating the row to match
        -> Ptr ()
        -- ^ /@userData@/: user data given to 'GI.Gtk.Objects.EntryCompletion.entryCompletionSetMatchFunc'
        -> m Bool
        -- ^ __Returns:__ 'P.True' if /@iter@/ should be displayed as a possible completion
        --     for /@key@/
    dynamic_EntryCompletionMatchFunc :: forall (m :: * -> *) a.
    (HasCallStack, MonadIO m, IsEntryCompletion a) =>
    FunPtr C_EntryCompletionMatchFunc
    -> a -> Text -> TreeIter -> Ptr () -> m Bool
    dynamic_EntryCompletionMatchFunc FunPtr C_EntryCompletionMatchFunc
    __funPtr a
    completion Text
    key TreeIter
    iter Ptr ()
    userData = IO Bool -> m Bool
    forall a. IO a -> m a
    forall (m :: * -> *) a. MonadIO m => IO a -> m a
    liftIO (IO Bool -> m Bool) -> IO Bool -> m Bool
    forall a b. (a -> b) -> a -> b
    $ do
        completion' <- a -> IO (Ptr EntryCompletion)
    forall a b. (HasCallStack, ManagedPtrNewtype a) => a -> IO (Ptr b)
    unsafeManagedPtrCastPtr a
    completion
        key' <- textToCString key
        iter' <- unsafeManagedPtrGetPtr iter
        result <- (__dynamic_C_EntryCompletionMatchFunc __funPtr) completion' key' iter' userData
        let result' = (CInt -> CInt -> Bool
    forall a. Eq a => a -> a -> Bool
    /= CInt
    0) CInt
    result
        touchManagedPtr completion
        touchManagedPtr iter
        freeMem key'
        return result'

    -- | Generate a function pointer callable from C code, from a `C_EntryCompletionMatchFunc`.
    foreign import ccall "wrapper"
        mk_EntryCompletionMatchFunc :: C_EntryCompletionMatchFunc -> IO (FunPtr C_EntryCompletionMatchFunc)

    -- | A function which decides whether the row indicated by /@iter@/ matches
    -- a given /@key@/, and should be displayed as a possible completion for /@key@/.
    -- Note that /@key@/ is normalized and case-folded (see 'GI.GLib.Functions.utf8Normalize'
    -- and 'GI.GLib.Functions.utf8Casefold'). If this is not appropriate, match functions
    -- have access to the unmodified key via
    -- @gtk_entry_get_text (GTK_ENTRY (gtk_entry_completion_get_entry ()))@.
    type EntryCompletionMatchFunc =
        Gtk.EntryCompletion.EntryCompletion
        -- ^ /@completion@/: the t'GI.Gtk.Objects.EntryCompletion.EntryCompletion'
        -> T.Text
        -- ^ /@key@/: the string to match, normalized and case-folded
        -> Gtk.TreeIter.TreeIter
        -- ^ /@iter@/: a t'GI.Gtk.Structs.TreeIter.TreeIter' indicating the row to match
        -> IO Bool
        -- ^ __Returns:__ 'P.True' if /@iter@/ should be displayed as a possible completion
        --     for /@key@/

    -- | A convenience synonym for @`Nothing` :: `Maybe` `EntryCompletionMatchFunc`@.
    noEntryCompletionMatchFunc :: Maybe EntryCompletionMatchFunc
    noEntryCompletionMatchFunc :: Maybe EntryCompletionMatchFunc
    noEntryCompletionMatchFunc = Maybe EntryCompletionMatchFunc
    forall a. Maybe a
    Nothing

    -- | A function which decides whether the row indicated by /@iter@/ matches
    -- a given /@key@/, and should be displayed as a possible completion for /@key@/.
    -- Note that /@key@/ is normalized and case-folded (see 'GI.GLib.Functions.utf8Normalize'
    -- and 'GI.GLib.Functions.utf8Casefold'). If this is not appropriate, match functions
    -- have access to the unmodified key via
    -- @gtk_entry_get_text (GTK_ENTRY (gtk_entry_completion_get_entry ()))@.
    type EntryCompletionMatchFunc_WithClosures =
        Gtk.EntryCompletion.EntryCompletion
        -- ^ /@completion@/: the t'GI.Gtk.Objects.EntryCompletion.EntryCompletion'
        -> T.Text
        -- ^ /@key@/: the string to match, normalized and case-folded
        -> Gtk.TreeIter.TreeIter
        -- ^ /@iter@/: a t'GI.Gtk.Structs.TreeIter.TreeIter' indicating the row to match
        -> Ptr ()
        -- ^ /@userData@/: user data given to 'GI.Gtk.Objects.EntryCompletion.entryCompletionSetMatchFunc'
        -> IO Bool
        -- ^ __Returns:__ 'P.True' if /@iter@/ should be displayed as a possible completion
        --     for /@key@/

    -- | A convenience synonym for @`Nothing` :: `Maybe` `EntryCompletionMatchFunc_WithClosures`@.
    noEntryCompletionMatchFunc_WithClosures :: Maybe EntryCompletionMatchFunc_WithClosures
    noEntryCompletionMatchFunc_WithClosures :: Maybe EntryCompletionMatchFunc_WithClosures
    noEntryCompletionMatchFunc_WithClosures = Maybe EntryCompletionMatchFunc_WithClosures
    forall a. Maybe a
    Nothing

    -- | A simple wrapper that ignores the closure arguments.
    drop_closures_EntryCompletionMatchFunc :: EntryCompletionMatchFunc -> EntryCompletionMatchFunc_WithClosures
    drop_closures_EntryCompletionMatchFunc :: EntryCompletionMatchFunc -> EntryCompletionMatchFunc_WithClosures
    drop_closures_EntryCompletionMatchFunc EntryCompletionMatchFunc
    _f EntryCompletion
    completion Text
    key TreeIter
    iter Ptr ()
    _ = EntryCompletionMatchFunc
    _f EntryCompletion
    completion Text
    key TreeIter
    iter

    -- | Wrap the callback into a `GClosure`.
    genClosure_EntryCompletionMatchFunc :: MonadIO m => EntryCompletionMatchFunc -> m (GClosure C_EntryCompletionMatchFunc)
    genClosure_EntryCompletionMatchFunc :: forall (m :: * -> *).
    MonadIO m =>
    EntryCompletionMatchFunc -> m (GClosure C_EntryCompletionMatchFunc)
    genClosure_EntryCompletionMatchFunc EntryCompletionMatchFunc
    cb = IO (GClosure C_EntryCompletionMatchFunc)
    -> m (GClosure C_EntryCompletionMatchFunc)
    forall a. IO a -> m a
    forall (m :: * -> *) a. MonadIO m => IO a -> m a
    liftIO (IO (GClosure C_EntryCompletionMatchFunc)
     -> m (GClosure C_EntryCompletionMatchFunc))
    -> IO (GClosure C_EntryCompletionMatchFunc)
    -> m (GClosure C_EntryCompletionMatchFunc)
    forall a b. (a -> b) -> a -> b
    $ do
        let cb' :: EntryCompletionMatchFunc_WithClosures
    cb' = EntryCompletionMatchFunc -> EntryCompletionMatchFunc_WithClosures
    drop_closures_EntryCompletionMatchFunc EntryCompletionMatchFunc
    cb
        let cb'' :: C_EntryCompletionMatchFunc
    cb'' = Maybe (Ptr (FunPtr C_EntryCompletionMatchFunc))
    -> EntryCompletionMatchFunc_WithClosures
    -> C_EntryCompletionMatchFunc
    wrap_EntryCompletionMatchFunc Maybe (Ptr (FunPtr C_EntryCompletionMatchFunc))
    forall a. Maybe a
    Nothing EntryCompletionMatchFunc_WithClosures
    cb'
        C_EntryCompletionMatchFunc
    -> IO (FunPtr C_EntryCompletionMatchFunc)
    mk_EntryCompletionMatchFunc C_EntryCompletionMatchFunc
    cb'' IO (FunPtr C_EntryCompletionMatchFunc)
    -> (FunPtr C_EntryCompletionMatchFunc
        -> IO (GClosure C_EntryCompletionMatchFunc))
    -> IO (GClosure C_EntryCompletionMatchFunc)
    forall a b. IO a -> (a -> IO b) -> IO b
    forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
    >>= FunPtr C_EntryCompletionMatchFunc
    -> IO (GClosure C_EntryCompletionMatchFunc)
    forall (m :: * -> *) a. MonadIO m => FunPtr a -> m (GClosure a)
    B.GClosure.newGClosure

    -- | Wrap a `EntryCompletionMatchFunc` into a `C_EntryCompletionMatchFunc`.
    wrap_EntryCompletionMatchFunc ::
        Maybe (Ptr (FunPtr C_EntryCompletionMatchFunc)) ->
        EntryCompletionMatchFunc_WithClosures ->
        C_EntryCompletionMatchFunc
    wrap_EntryCompletionMatchFunc :: Maybe (Ptr (FunPtr C_EntryCompletionMatchFunc))
    -> EntryCompletionMatchFunc_WithClosures
    -> C_EntryCompletionMatchFunc
    wrap_EntryCompletionMatchFunc Maybe (Ptr (FunPtr C_EntryCompletionMatchFunc))
    gi'funptrptr EntryCompletionMatchFunc_WithClosures
    gi'cb Ptr EntryCompletion
    completion CString
    key Ptr TreeIter
    iter Ptr ()
    userData = do
        completion' <- ((ManagedPtr EntryCompletion -> EntryCompletion)
    -> Ptr EntryCompletion -> IO EntryCompletion
    forall a b.
    (HasCallStack, GObject a, GObject b) =>
    (ManagedPtr a -> a) -> Ptr b -> IO a
    newObject ManagedPtr EntryCompletion -> EntryCompletion
    Gtk.EntryCompletion.EntryCompletion) Ptr EntryCompletion
    completion
        key' <- cstringToText key
        B.ManagedPtr.withTransient  iter $ \TreeIter
    iter' -> do
            result <- EntryCompletionMatchFunc_WithClosures
    gi'cb  EntryCompletion
    completion' Text
    key' TreeIter
    iter' Ptr ()
    userData
            maybeReleaseFunPtr gi'funptrptr
            let result' = (Int -> CInt
    forall a b. (Integral a, Num b) => a -> b
    P.fromIntegral (Int -> CInt) -> (Bool -> Int) -> Bool -> CInt
    forall b c a. (b -> c) -> (a -> b) -> a -> c
    . Bool -> Int
    forall a. Enum a => a -> Int
    P.fromEnum) Bool
    result
            return result'

    -- callback ContainerClassSetFocusChildFieldCallback
    {- Callable
      { returnType = Nothing
      , returnMayBeNull = False
      , returnTransfer = TransferNothing
      , returnDocumentation =
          Documentation { rawDocText = Nothing , sinceVersion = Nothing }
      , args =
          [ Arg
              { argCName = "container"
              , argType =
                  TInterface Name { namespace = "Gtk" , name = "Container" }
              , argCType = Just "GtkContainer*"
              , direction = DirectionIn
              , mayBeNull = False
              , argDoc =
                  Documentation
                    { rawDocText = Just "a #GtkContainer" , sinceVersion = Nothing }
              , argScope = ScopeTypeInvalid
              , argClosure = -1
              , argDestroy = -1
              , argCallerAllocates = False
              , argCallbackUserData = False
              , transfer = TransferNothing
              }
          , Arg
              { argCName = "child"
              , argType = TInterface Name { namespace = "Gtk" , name = "Widget" }
              , argCType = Just "GtkWidget*"
              , direction = DirectionIn
              , mayBeNull = True
              , argDoc =
                  Documentation
                    { rawDocText = Just "a #GtkWidget, or %NULL"
                    , sinceVersion = Nothing
                    }
              , argScope = ScopeTypeInvalid
              , argClosure = -1
              , argDestroy = -1
              , argCallerAllocates = False
              , argCallbackUserData = False
              , transfer = TransferNothing
              }
          ]
      , skipReturn = False
      , callableThrows = False
      , callableDeprecated = Nothing
      , callableDocumentation =
          Documentation { rawDocText = Nothing , sinceVersion = Nothing }
      , callableResolvable = Nothing
      }
    -}
    -- | Type for the callback on the (unwrapped) C side.
    type C_ContainerClassSetFocusChildFieldCallback =
        Ptr Gtk.Container.Container ->
        Ptr Gtk.Widget.Widget ->
        IO ()

    -- Args: [ Arg
    --           { argCName = "container"
    --           , argType =
    --               TInterface Name { namespace = "Gtk" , name = "Container" }
    --           , argCType = Just "GtkContainer*"
    --           , direction = DirectionIn
    --           , mayBeNull = False
    --           , argDoc =
    --               Documentation
    --                 { rawDocText = Just "a #GtkContainer" , sinceVersion = Nothing }
    --           , argScope = ScopeTypeInvalid
    --           , argClosure = -1
    --           , argDestroy = -1
    --           , argCallerAllocates = False
    --           , argCallbackUserData = False
    --           , transfer = TransferNothing
    --           }
    --       , Arg
    --           { argCName = "child"
    --           , argType = TInterface Name { namespace = "Gtk" , name = "Widget" }
    --           , argCType = Just "GtkWidget*"
    --           , direction = DirectionIn
    --           , mayBeNull = True
    --           , argDoc =
    --               Documentation
    --                 { rawDocText = Just "a #GtkWidget, or %NULL"
    --                 , sinceVersion = Nothing
    --                 }
    --           , argScope = ScopeTypeInvalid
    --           , argClosure = -1
    --           , argDestroy = -1
    --           , argCallerAllocates = False
    --           , argCallbackUserData = False
    --           , transfer = TransferNothing
    --           }
    --       ]
    -- Lengths: []
    -- returnType: Nothing
    -- throws : False
    -- Skip return : False

    foreign import ccall "dynamic" __dynamic_C_ContainerClassSetFocusChildFieldCallback :: FunPtr C_ContainerClassSetFocusChildFieldCallback -> C_ContainerClassSetFocusChildFieldCallback

    -- | Given a pointer to a foreign C function, wrap it into a function callable from Haskell.
    dynamic_ContainerClassSetFocusChildFieldCallback ::
        (B.CallStack.HasCallStack, MonadIO m, Gtk.Container.IsContainer a, Gtk.Widget.IsWidget b) =>
        FunPtr C_ContainerClassSetFocusChildFieldCallback
        -> a
        -- ^ /@container@/: a t'GI.Gtk.Objects.Container.Container'
        -> Maybe (b)
        -- ^ /@child@/: a t'GI.Gtk.Objects.Widget.Widget', or 'P.Nothing'
        -> m ()
    dynamic_ContainerClassSetFocusChildFieldCallback :: forall (m :: * -> *) a b.
    (HasCallStack, MonadIO m, IsContainer a, IsWidget b) =>
    FunPtr C_ContainerClassSetFocusChildFieldCallback
    -> a -> Maybe b -> m ()
    dynamic_ContainerClassSetFocusChildFieldCallback FunPtr C_ContainerClassSetFocusChildFieldCallback
    __funPtr a
    container Maybe b
    child = IO () -> m ()
    forall a. IO a -> m a
    forall (m :: * -> *) a. MonadIO m => IO a -> m a
    liftIO (IO () -> m ()) -> IO () -> m ()
    forall a b. (a -> b) -> a -> b
    $ do
        container' <- a -> IO (Ptr Container)
    forall a b. (HasCallStack, ManagedPtrNewtype a) => a -> IO (Ptr b)
    unsafeManagedPtrCastPtr a
    container
        maybeChild <- case child of
            Maybe b
    Nothing -> Ptr Widget -> IO (Ptr Widget)
    forall a. a -> IO a
    forall (m :: * -> *) a. Monad m => a -> m a
    return Ptr Widget
    forall a. Ptr a
    FP.nullPtr
            Just b
    jChild -> do
                jChild' <- b -> IO (Ptr Widget)
    forall a b. (HasCallStack, ManagedPtrNewtype a) => a -> IO (Ptr b)
    unsafeManagedPtrCastPtr b
    jChild
                return jChild'
        (__dynamic_C_ContainerClassSetFocusChildFieldCallback __funPtr) container' maybeChild
        touchManagedPtr container
        whenJust child touchManagedPtr
        return ()

    -- | Generate a function pointer callable from C code, from a `C_ContainerClassSetFocusChildFieldCallback`.
    foreign import ccall "wrapper"
        mk_ContainerClassSetFocusChildFieldCallback :: C_ContainerClassSetFocusChildFieldCallback -> IO (FunPtr C_ContainerClassSetFocusChildFieldCallback)

    -- | /No description available in the introspection data./
    type ContainerClassSetFocusChildFieldCallback =
        Gtk.Container.Container
        -- ^ /@container@/: a t'GI.Gtk.Objects.Container.Container'
        -> Maybe Gtk.Widget.Widget
        -- ^ /@child@/: a t'GI.Gtk.Objects.Widget.Widget', or 'P.Nothing'
        -> IO ()

    -- | A convenience synonym for @`Nothing` :: `Maybe` `ContainerClassSetFocusChildFieldCallback`@.
    noContainerClassSetFocusChildFieldCallback :: Maybe ContainerClassSetFocusChildFieldCallback
    noContainerClassSetFocusChildFieldCallback :: Maybe ContainerClassSetFocusChildFieldCallback
    noContainerClassSetFocusChildFieldCallback = Maybe ContainerClassSetFocusChildFieldCallback
    forall a. Maybe a
    Nothing

    -- | Wrap the callback into a `GClosure`.
    genClosure_ContainerClassSetFocusChildFieldCallback :: MonadIO m => ContainerClassSetFocusChildFieldCallback -> m (GClosure C_ContainerClassSetFocusChildFieldCallback)
    genClosure_ContainerClassSetFocusChildFieldCallback :: forall (m :: * -> *).
    MonadIO m =>
    ContainerClassSetFocusChildFieldCallback
    -> m (GClosure C_ContainerClassSetFocusChildFieldCallback)
    genClosure_ContainerClassSetFocusChildFieldCallback ContainerClassSetFocusChildFieldCallback
    cb = IO (GClosure C_ContainerClassSetFocusChildFieldCallback)
    -> m (GClosure C_ContainerClassSetFocusChildFieldCallback)
    forall a. IO a -> m a
    forall (m :: * -> *) a. MonadIO m => IO a -> m a
    liftIO (IO (GClosure C_ContainerClassSetFocusChildFieldCallback)
     -> m (GClosure C_ContainerClassSetFocusChildFieldCallback))
    -> IO (GClosure C_ContainerClassSetFocusChildFieldCallback)
    -> m (GClosure C_ContainerClassSetFocusChildFieldCallback)
    forall a b. (a -> b) -> a -> b
    $ do
        let cb' :: C_ContainerClassSetFocusChildFieldCallback
    cb' = Maybe (Ptr (FunPtr C_ContainerClassSetFocusChildFieldCallback))
    -> ContainerClassSetFocusChildFieldCallback
    -> C_ContainerClassSetFocusChildFieldCallback
    wrap_ContainerClassSetFocusChildFieldCallback Maybe (Ptr (FunPtr C_ContainerClassSetFocusChildFieldCallback))
    forall a. Maybe a
    Nothing ContainerClassSetFocusChildFieldCallback
    cb
        C_ContainerClassSetFocusChildFieldCallback
    -> IO (FunPtr C_ContainerClassSetFocusChildFieldCallback)
    mk_ContainerClassSetFocusChildFieldCallback C_ContainerClassSetFocusChildFieldCallback
    cb' IO (FunPtr C_ContainerClassSetFocusChildFieldCallback)
    -> (FunPtr C_ContainerClassSetFocusChildFieldCallback
        -> IO (GClosure C_ContainerClassSetFocusChildFieldCallback))
    -> IO (GClosure C_ContainerClassSetFocusChildFieldCallback)
    forall a b. IO a -> (a -> IO b) -> IO b
    forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
    >>= FunPtr C_ContainerClassSetFocusChildFieldCallback
    -> IO (GClosure C_ContainerClassSetFocusChildFieldCallback)
    forall (m :: * -> *) a. MonadIO m => FunPtr a -> m (GClosure a)
    B.GClosure.newGClosure

    -- | Wrap a `ContainerClassSetFocusChildFieldCallback` into a `C_ContainerClassSetFocusChildFieldCallback`.
    wrap_ContainerClassSetFocusChildFieldCallback ::
        Maybe (Ptr (FunPtr C_ContainerClassSetFocusChildFieldCallback)) ->
        ContainerClassSetFocusChildFieldCallback ->
        C_ContainerClassSetFocusChildFieldCallback
    wrap_ContainerClassSetFocusChildFieldCallback :: Maybe (Ptr (FunPtr C_ContainerClassSetFocusChildFieldCallback))
    -> ContainerClassSetFocusChildFieldCallback
    -> C_ContainerClassSetFocusChildFieldCallback
    wrap_ContainerClassSetFocusChildFieldCallback Maybe (Ptr (FunPtr C_ContainerClassSetFocusChildFieldCallback))
    gi'funptrptr ContainerClassSetFocusChildFieldCallback
    gi'cb Ptr Container
    container Ptr Widget
    child = do
        container' <- ((ManagedPtr Container -> Container)
    -> Ptr Container -> IO Container
    forall a b.
    (HasCallStack, GObject a, GObject b) =>
    (ManagedPtr a -> a) -> Ptr b -> IO a
    newObject ManagedPtr Container -> Container
    Gtk.Container.Container) Ptr Container
    container
        maybeChild <-
            if child == FP.nullPtr
            then return Nothing
            else do
                child' <- (newObject Gtk.Widget.Widget) child
                return $ Just child'
        gi'cb  container' maybeChild
        maybeReleaseFunPtr gi'funptrptr

    -- callback ContainerClassSetChildPropertyFieldCallback
    {- Callable
      { returnType = Nothing
      , returnMayBeNull = False
      , returnTransfer = TransferNothing
      , returnDocumentation =
          Documentation { rawDocText = Nothing , sinceVersion = Nothing }
      , args =
          [ Arg
              { argCName = "container"
              , argType =
                  TInterface Name { namespace = "Gtk" , name = "Container" }
              , argCType = Just "GtkContainer*"
              , direction = DirectionIn
              , mayBeNull = False
              , argDoc =
                  Documentation { rawDocText = Nothing , sinceVersion = Nothing }
              , argScope = ScopeTypeInvalid
              , argClosure = -1
              , argDestroy = -1
              , argCallerAllocates = False
              , argCallbackUserData = False
              , transfer = TransferNothing
              }
          , Arg
              { argCName = "child"
              , argType = TInterface Name { namespace = "Gtk" , name = "Widget" }
              , argCType = Just "GtkWidget*"
              , direction = DirectionIn
              , mayBeNull = False
              , argDoc =
                  Documentation { rawDocText = Nothing , sinceVersion = Nothing }
              , argScope = ScopeTypeInvalid
              , argClosure = -1
              , argDestroy = -1
              , argCallerAllocates = False
              , argCallbackUserData = False
              , transfer = TransferNothing
              }
          , Arg
              { argCName = "property_id"
              , argType = TBasicType TUInt
              , argCType = Just "guint"
              , direction = DirectionIn
              , mayBeNull = False
              , argDoc =
                  Documentation { rawDocText = Nothing , sinceVersion = Nothing }
              , argScope = ScopeTypeInvalid
              , argClosure = -1
              , argDestroy = -1
              , argCallerAllocates = False
              , argCallbackUserData = False
              , transfer = TransferNothing
              }
          , Arg
              { argCName = "value"
              , argType = TGValue
              , argCType = Just "const GValue*"
              , direction = DirectionIn
              , mayBeNull = False
              , argDoc =
                  Documentation { rawDocText = Nothing , sinceVersion = Nothing }
              , argScope = ScopeTypeInvalid
              , argClosure = -1
              , argDestroy = -1
              , argCallerAllocates = False
              , argCallbackUserData = False
              , transfer = TransferNothing
              }
          , Arg
              { argCName = "pspec"
              , argType = TParamSpec
              , argCType = Just "GParamSpec*"
              , direction = DirectionIn
              , mayBeNull = False
              , argDoc =
                  Documentation { rawDocText = Nothing , sinceVersion = Nothing }
              , argScope = ScopeTypeInvalid
              , argClosure = -1
              , argDestroy = -1
              , argCallerAllocates = False
              , argCallbackUserData = False
              , transfer = TransferNothing
              }
          ]
      , skipReturn = False
      , callableThrows = False
      , callableDeprecated = Nothing
      , callableDocumentation =
          Documentation { rawDocText = Nothing , sinceVersion = Nothing }
      , callableResolvable = Nothing
      }
    -}
    -- | Type for the callback on the (unwrapped) C side.
    type C_ContainerClassSetChildPropertyFieldCallback =
        Ptr Gtk.Container.Container ->
        Ptr Gtk.Widget.Widget ->
        Word32 ->
        Ptr GValue ->
        Ptr GParamSpec ->
        IO ()

    -- Args: [ Arg
    --           { argCName = "container"
    --           , argType =
    --               TInterface Name { namespace = "Gtk" , name = "Container" }
    --           , argCType = Just "GtkContainer*"
    --           , direction = DirectionIn
    --           , mayBeNull = False
    --           , argDoc =
    --               Documentation { rawDocText = Nothing , sinceVersion = Nothing }
    --           , argScope = ScopeTypeInvalid
    --           , argClosure = -1
    --           , argDestroy = -1
    --           , argCallerAllocates = False
    --           , argCallbackUserData = False
    --           , transfer = TransferNothing
    --           }
    --       , Arg
    --           { argCName = "child"
    --           , argType = TInterface Name { namespace = "Gtk" , name = "Widget" }
    --           , argCType = Just "GtkWidget*"
    --           , direction = DirectionIn
    --           , mayBeNull = False
    --           , argDoc =
    --               Documentation { rawDocText = Nothing , sinceVersion = Nothing }
    --           , argScope = ScopeTypeInvalid
    --           , argClosure = -1
    --           , argDestroy = -1
    --           , argCallerAllocates = False
    --           , argCallbackUserData = False
    --           , transfer = TransferNothing
    --           }
    --       , Arg
    --           { argCName = "property_id"
    --           , argType = TBasicType TUInt
    --           , argCType = Just "guint"
    --           , direction = DirectionIn
    --           , mayBeNull = False
    --           , argDoc =
    --               Documentation { rawDocText = Nothing , sinceVersion = Nothing }
    --           , argScope = ScopeTypeInvalid
    --           , argClosure = -1
    --           , argDestroy = -1
    --           , argCallerAllocates = False
    --           , argCallbackUserData = False
    --           , transfer = TransferNothing
    --           }
    --       , Arg
    --           { argCName = "value"
    --           , argType = TGValue
    --           , argCType = Just "const GValue*"
    --           , direction = DirectionIn
    --           , mayBeNull = False
    --           , argDoc =
    --               Documentation { rawDocText = Nothing , sinceVersion = Nothing }
    --           , argScope = ScopeTypeInvalid
    --           , argClosure = -1
    --           , argDestroy = -1
    --           , argCallerAllocates = False
    --           , argCallbackUserData = False
    --           , transfer = TransferNothing
    --           }
    --       , Arg
    --           { argCName = "pspec"
    --           , argType = TParamSpec
    --           , argCType = Just "GParamSpec*"
    --           , direction = DirectionIn
    --           , mayBeNull = False
    --           , argDoc =
    --               Documentation { rawDocText = Nothing , sinceVersion = Nothing }
    --           , argScope = ScopeTypeInvalid
    --           , argClosure = -1
    --           , argDestroy = -1
    --           , argCallerAllocates = False
    --           , argCallbackUserData = False
    --           , transfer = TransferNothing
    --           }
    --       ]
    -- Lengths: []
    -- returnType: Nothing
    -- throws : False
    -- Skip return : False

    foreign import ccall "dynamic" __dynamic_C_ContainerClassSetChildPropertyFieldCallback :: FunPtr C_ContainerClassSetChildPropertyFieldCallback -> C_ContainerClassSetChildPropertyFieldCallback

    -- | Given a pointer to a foreign C function, wrap it into a function callable from Haskell.
    dynamic_ContainerClassSetChildPropertyFieldCallback ::
        (B.CallStack.HasCallStack, MonadIO m, Gtk.Container.IsContainer a, Gtk.Widget.IsWidget b) =>
        FunPtr C_ContainerClassSetChildPropertyFieldCallback
        -> a
        -> b
        -> Word32
        -> GValue
        -> GParamSpec
        -> m ()
    dynamic_ContainerClassSetChildPropertyFieldCallback :: forall (m :: * -> *) a b.
    (HasCallStack, MonadIO m, IsContainer a, IsWidget b) =>
    FunPtr C_ContainerClassSetChildPropertyFieldCallback
    -> a -> b -> Word32 -> GValue -> GParamSpec -> m ()
    dynamic_ContainerClassSetChildPropertyFieldCallback FunPtr C_ContainerClassSetChildPropertyFieldCallback
    __funPtr a
    container b
    child Word32
    propertyId GValue
    value GParamSpec
    pspec = IO () -> m ()
    forall a. IO a -> m a
    forall (m :: * -> *) a. MonadIO m => IO a -> m a
    liftIO (IO () -> m ()) -> IO () -> m ()
    forall a b. (a -> b) -> a -> b
    $ do
        container' <- a -> IO (Ptr Container)
    forall a b. (HasCallStack, ManagedPtrNewtype a) => a -> IO (Ptr b)
    unsafeManagedPtrCastPtr a
    container
        child' <- unsafeManagedPtrCastPtr child
        value' <- unsafeManagedPtrGetPtr value
        pspec' <- unsafeManagedPtrGetPtr pspec
        (__dynamic_C_ContainerClassSetChildPropertyFieldCallback __funPtr) container' child' propertyId value' pspec'
        touchManagedPtr container
        touchManagedPtr child
        touchManagedPtr value
        touchManagedPtr pspec
        return ()

    -- | Generate a function pointer callable from C code, from a `C_ContainerClassSetChildPropertyFieldCallback`.
    foreign import ccall "wrapper"
        mk_ContainerClassSetChildPropertyFieldCallback :: C_ContainerClassSetChildPropertyFieldCallback -> IO (FunPtr C_ContainerClassSetChildPropertyFieldCallback)

    -- | /No description available in the introspection data./
    type ContainerClassSetChildPropertyFieldCallback =
        Gtk.Container.Container
        -> Gtk.Widget.Widget
        -> Word32
        -> GValue
        -> GParamSpec
        -> IO ()

    -- | A convenience synonym for @`Nothing` :: `Maybe` `ContainerClassSetChildPropertyFieldCallback`@.
    noContainerClassSetChildPropertyFieldCallback :: Maybe ContainerClassSetChildPropertyFieldCallback
    noContainerClassSetChildPropertyFieldCallback :: Maybe ContainerClassSetChildPropertyFieldCallback
    noContainerClassSetChildPropertyFieldCallback = Maybe ContainerClassSetChildPropertyFieldCallback
    forall a. Maybe a
    Nothing

    -- | Wrap the callback into a `GClosure`.
    genClosure_ContainerClassSetChildPropertyFieldCallback :: MonadIO m => ContainerClassSetChildPropertyFieldCallback -> m (GClosure C_ContainerClassSetChildPropertyFieldCallback)
    genClosure_ContainerClassSetChildPropertyFieldCallback :: forall (m :: * -> *).
    MonadIO m =>
    ContainerClassSetChildPropertyFieldCallback
    -> m (GClosure C_ContainerClassSetChildPropertyFieldCallback)
    genClosure_ContainerClassSetChildPropertyFieldCallback ContainerClassSetChildPropertyFieldCallback
    cb = IO (GClosure C_ContainerClassSetChildPropertyFieldCallback)
    -> m (GClosure C_ContainerClassSetChildPropertyFieldCallback)
    forall a. IO a -> m a
    forall (m :: * -> *) a. MonadIO m => IO a -> m a
    liftIO (IO (GClosure C_ContainerClassSetChildPropertyFieldCallback)
     -> m (GClosure C_ContainerClassSetChildPropertyFieldCallback))
    -> IO (GClosure C_ContainerClassSetChildPropertyFieldCallback)
    -> m (GClosure C_ContainerClassSetChildPropertyFieldCallback)
    forall a b. (a -> b) -> a -> b
    $ do
        let cb' :: C_ContainerClassSetChildPropertyFieldCallback
    cb' = Maybe (Ptr (FunPtr C_ContainerClassSetChildPropertyFieldCallback))
    -> ContainerClassSetChildPropertyFieldCallback
    -> C_ContainerClassSetChildPropertyFieldCallback
    wrap_ContainerClassSetChildPropertyFieldCallback Maybe (Ptr (FunPtr C_ContainerClassSetChildPropertyFieldCallback))
    forall a. Maybe a
    Nothing ContainerClassSetChildPropertyFieldCallback
    cb
        C_ContainerClassSetChildPropertyFieldCallback
    -> IO (FunPtr C_ContainerClassSetChildPropertyFieldCallback)
    mk_ContainerClassSetChildPropertyFieldCallback C_ContainerClassSetChildPropertyFieldCallback
    cb' IO (FunPtr C_ContainerClassSetChildPropertyFieldCallback)
    -> (FunPtr C_ContainerClassSetChildPropertyFieldCallback
        -> IO (GClosure C_ContainerClassSetChildPropertyFieldCallback))
    -> IO (GClosure C_ContainerClassSetChildPropertyFieldCallback)
    forall a b. IO a -> (a -> IO b) -> IO b
    forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
    >>= FunPtr C_ContainerClassSetChildPropertyFieldCallback
    -> IO (GClosure C_ContainerClassSetChildPropertyFieldCallback)
    forall (m :: * -> *) a. MonadIO m => FunPtr a -> m (GClosure a)
    B.GClosure.newGClosure

    -- | Wrap a `ContainerClassSetChildPropertyFieldCallback` into a `C_ContainerClassSetChildPropertyFieldCallback`.
    wrap_ContainerClassSetChildPropertyFieldCallback ::
        Maybe (Ptr (FunPtr C_ContainerClassSetChildPropertyFieldCallback)) ->
        ContainerClassSetChildPropertyFieldCallback ->
        C_ContainerClassSetChildPropertyFieldCallback
    wrap_ContainerClassSetChildPropertyFieldCallback :: Maybe (Ptr (FunPtr C_ContainerClassSetChildPropertyFieldCallback))
    -> ContainerClassSetChildPropertyFieldCallback
    -> C_ContainerClassSetChildPropertyFieldCallback
    wrap_ContainerClassSetChildPropertyFieldCallback Maybe (Ptr (FunPtr C_ContainerClassSetChildPropertyFieldCallback))
    gi'funptrptr ContainerClassSetChildPropertyFieldCallback
    gi'cb Ptr Container
    container Ptr Widget
    child Word32
    propertyId Ptr GValue
    value Ptr GParamSpec
    pspec = do
        container' <- ((ManagedPtr Container -> Container)
    -> Ptr Container -> IO Container
    forall a b.
    (HasCallStack, GObject a, GObject b) =>
    (ManagedPtr a -> a) -> Ptr b -> IO a
    newObject ManagedPtr Container -> Container
    Gtk.Container.Container) Ptr Container
    container
        child' <- (newObject Gtk.Widget.Widget) child
        value' <- B.GValue.newGValueFromPtr value
        pspec' <- B.GParamSpec.newGParamSpecFromPtr pspec
        gi'cb  container' child' propertyId value' pspec'
        maybeReleaseFunPtr gi'funptrptr

    -- callback ContainerClassRemoveFieldCallback
    {- Callable
      { returnType = Nothing
      , returnMayBeNull = False
      , returnTransfer = TransferNothing
      , returnDocumentation =
          Documentation { rawDocText = Nothing , sinceVersion = Nothing }
      , args =
          [ Arg
              { argCName = "container"
              , argType =
                  TInterface Name { namespace = "Gtk" , name = "Container" }
              , argCType = Just "GtkContainer*"
              , direction = DirectionIn
              , mayBeNull = False
              , argDoc =
                  Documentation
                    { rawDocText = Just "a #GtkContainer" , sinceVersion = Nothing }
              , argScope = ScopeTypeInvalid
              , argClosure = -1
              , argDestroy = -1
              , argCallerAllocates = False
              , argCallbackUserData = False
              , transfer = TransferNothing
              }
          , Arg
              { argCName = "widget"
              , argType = TInterface Name { namespace = "Gtk" , name = "Widget" }
              , argCType = Just "GtkWidget*"
              , direction = DirectionIn
              , mayBeNull = False
              , argDoc =
                  Documentation
                    { rawDocText = Just "a current child of @container"
                    , sinceVersion = Nothing
                    }
              , argScope = ScopeTypeInvalid
              , argClosure = -1
              , argDestroy = -1
              , argCallerAllocates = False
              , argCallbackUserData = False
              , transfer = TransferNothing
              }
          ]
      , skipReturn = False
      , callableThrows = False
      , callableDeprecated = Nothing
      , callableDocumentation =
          Documentation { rawDocText = Nothing , sinceVersion = Nothing }
      , callableResolvable = Nothing
      }
    -}
    -- | Type for the callback on the (unwrapped) C side.
    type C_ContainerClassRemoveFieldCallback =
        Ptr Gtk.Container.Container ->
        Ptr Gtk.Widget.Widget ->
        IO ()

    -- Args: [ Arg
    --           { argCName = "container"
    --           , argType =
    --               TInterface Name { namespace = "Gtk" , name = "Container" }
    --           , argCType = Just "GtkContainer*"
    --           , direction = DirectionIn
    --           , mayBeNull = False
    --           , argDoc =
    --               Documentation
    --                 { rawDocText = Just "a #GtkContainer" , sinceVersion = Nothing }
    --           , argScope = ScopeTypeInvalid
    --           , argClosure = -1
    --           , argDestroy = -1
    --           , argCallerAllocates = False
    --           , argCallbackUserData = False
    --           , transfer = TransferNothing
    --           }
    --       , Arg
    --           { argCName = "widget"
    --           , argType = TInterface Name { namespace = "Gtk" , name = "Widget" }
    --           , argCType = Just "GtkWidget*"
    --           , direction = DirectionIn
    --           , mayBeNull = False
    --           , argDoc =
    --               Documentation
    --                 { rawDocText = Just "a current child of @container"
    --                 , sinceVersion = Nothing
    --                 }
    --           , argScope = ScopeTypeInvalid
    --           , argClosure = -1
    --           , argDestroy = -1
    --           , argCallerAllocates = False
    --           , argCallbackUserData = False
    --           , transfer = TransferNothing
    --           }
    --       ]
    -- Lengths: []
    -- returnType: Nothing
    -- throws : False
    -- Skip return : False

    foreign import ccall "dynamic" __dynamic_C_ContainerClassRemoveFieldCallback :: FunPtr C_ContainerClassRemoveFieldCallback -> C_ContainerClassRemoveFieldCallback

    -- | Given a pointer to a foreign C function, wrap it into a function callable from Haskell.
    dynamic_ContainerClassRemoveFieldCallback ::
        (B.CallStack.HasCallStack, MonadIO m, Gtk.Container.IsContainer a, Gtk.Widget.IsWidget b) =>
        FunPtr C_ContainerClassRemoveFieldCallback
        -> a
        -- ^ /@container@/: a t'GI.Gtk.Objects.Container.Container'
        -> b
        -- ^ /@widget@/: a current child of /@container@/
        -> m ()
    dynamic_ContainerClassRemoveFieldCallback :: forall (m :: * -> *) a b.
    (HasCallStack, MonadIO m, IsContainer a, IsWidget b) =>
    FunPtr C_ContainerClassSetFocusChildFieldCallback -> a -> b -> m ()
    dynamic_ContainerClassRemoveFieldCallback FunPtr C_ContainerClassSetFocusChildFieldCallback
    __funPtr a
    container b
    widget = IO () -> m ()
    forall a. IO a -> m a
    forall (m :: * -> *) a. MonadIO m => IO a -> m a
    liftIO (IO () -> m ()) -> IO () -> m ()
    forall a b. (a -> b) -> a -> b
    $ do
        container' <- a -> IO (Ptr Container)
    forall a b. (HasCallStack, ManagedPtrNewtype a) => a -> IO (Ptr b)
    unsafeManagedPtrCastPtr a
    container
        widget' <- unsafeManagedPtrCastPtr widget
        (__dynamic_C_ContainerClassRemoveFieldCallback __funPtr) container' widget'
        touchManagedPtr container
        touchManagedPtr widget
        return ()

    -- | Generate a function pointer callable from C code, from a `C_ContainerClassRemoveFieldCallback`.
    foreign import ccall "wrapper"
        mk_ContainerClassRemoveFieldCallback :: C_ContainerClassRemoveFieldCallback -> IO (FunPtr C_ContainerClassRemoveFieldCallback)

    -- | /No description available in the introspection data./
    type ContainerClassRemoveFieldCallback =
        Gtk.Container.Container
        -- ^ /@container@/: a t'GI.Gtk.Objects.Container.Container'
        -> Gtk.Widget.Widget
        -- ^ /@widget@/: a current child of /@container@/
        -> IO ()

    -- | A convenience synonym for @`Nothing` :: `Maybe` `ContainerClassRemoveFieldCallback`@.
    noContainerClassRemoveFieldCallback :: Maybe ContainerClassRemoveFieldCallback
    noContainerClassRemoveFieldCallback :: Maybe ContainerClassRemoveFieldCallback
    noContainerClassRemoveFieldCallback = Maybe ContainerClassRemoveFieldCallback
    forall a. Maybe a
    Nothing

    -- | Wrap the callback into a `GClosure`.
    genClosure_ContainerClassRemoveFieldCallback :: MonadIO m => ContainerClassRemoveFieldCallback -> m (GClosure C_ContainerClassRemoveFieldCallback)
    genClosure_ContainerClassRemoveFieldCallback :: forall (m :: * -> *).
    MonadIO m =>
    ContainerClassRemoveFieldCallback
    -> m (GClosure C_ContainerClassSetFocusChildFieldCallback)
    genClosure_ContainerClassRemoveFieldCallback ContainerClassRemoveFieldCallback
    cb = IO (GClosure C_ContainerClassSetFocusChildFieldCallback)
    -> m (GClosure C_ContainerClassSetFocusChildFieldCallback)
    forall a. IO a -> m a
    forall (m :: * -> *) a. MonadIO m => IO a -> m a
    liftIO (IO (GClosure C_ContainerClassSetFocusChildFieldCallback)
     -> m (GClosure C_ContainerClassSetFocusChildFieldCallback))
    -> IO (GClosure C_ContainerClassSetFocusChildFieldCallback)
    -> m (GClosure C_ContainerClassSetFocusChildFieldCallback)
    forall a b. (a -> b) -> a -> b
    $ do
        let cb' :: C_ContainerClassSetFocusChildFieldCallback
    cb' = Maybe (Ptr (FunPtr C_ContainerClassSetFocusChildFieldCallback))
    -> ContainerClassRemoveFieldCallback
    -> C_ContainerClassSetFocusChildFieldCallback
    wrap_ContainerClassRemoveFieldCallback Maybe (Ptr (FunPtr C_ContainerClassSetFocusChildFieldCallback))
    forall a. Maybe a
    Nothing ContainerClassRemoveFieldCallback
    cb
        C_ContainerClassSetFocusChildFieldCallback
    -> IO (FunPtr C_ContainerClassSetFocusChildFieldCallback)
    mk_ContainerClassRemoveFieldCallback C_ContainerClassSetFocusChildFieldCallback
    cb' IO (FunPtr C_ContainerClassSetFocusChildFieldCallback)
    -> (FunPtr C_ContainerClassSetFocusChildFieldCallback
        -> IO (GClosure C_ContainerClassSetFocusChildFieldCallback))
    -> IO (GClosure C_ContainerClassSetFocusChildFieldCallback)
    forall a b. IO a -> (a -> IO b) -> IO b
    forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
    >>= FunPtr C_ContainerClassSetFocusChildFieldCallback
    -> IO (GClosure C_ContainerClassSetFocusChildFieldCallback)
    forall (m :: * -> *) a. MonadIO m => FunPtr a -> m (GClosure a)
    B.GClosure.newGClosure

    -- | Wrap a `ContainerClassRemoveFieldCallback` into a `C_ContainerClassRemoveFieldCallback`.
    wrap_ContainerClassRemoveFieldCallback ::
        Maybe (Ptr (FunPtr C_ContainerClassRemoveFieldCallback)) ->
        ContainerClassRemoveFieldCallback ->
        C_ContainerClassRemoveFieldCallback
    wrap_ContainerClassRemoveFieldCallback :: Maybe (Ptr (FunPtr C_ContainerClassSetFocusChildFieldCallback))
    -> ContainerClassRemoveFieldCallback
    -> C_ContainerClassSetFocusChildFieldCallback
    wrap_ContainerClassRemoveFieldCallback Maybe (Ptr (FunPtr C_ContainerClassSetFocusChildFieldCallback))
    gi'funptrptr ContainerClassRemoveFieldCallback
    gi'cb Ptr Container
    container Ptr Widget
    widget = do
        container' <- ((ManagedPtr Container -> Container)
    -> Ptr Container -> IO Container
    forall a b.
    (HasCallStack, GObject a, GObject b) =>
    (ManagedPtr a -> a) -> Ptr b -> IO a
    newObject ManagedPtr Container -> Container
    Gtk.Container.Container) Ptr Container
    container
        widget' <- (newObject Gtk.Widget.Widget) widget
        gi'cb  container' widget'
        maybeReleaseFunPtr gi'funptrptr

    -- callback ContainerClassGetPathForChildFieldCallback
    {- Callable
      { returnType =
          Just (TInterface Name { namespace = "Gtk" , name = "WidgetPath" })
      , returnMayBeNull = False
      , returnTransfer = TransferEverything
      , returnDocumentation =
          Documentation
            { rawDocText = Just "A newly created #GtkWidgetPath"
            , sinceVersion = Nothing
            }
      , args =
          [ Arg
              { argCName = "container"
              , argType =
                  TInterface Name { namespace = "Gtk" , name = "Container" }
              , argCType = Just "GtkContainer*"
              , direction = DirectionIn
              , mayBeNull = False
              , argDoc =
                  Documentation
                    { rawDocText = Just "a #GtkContainer" , sinceVersion = Nothing }
              , argScope = ScopeTypeInvalid
              , argClosure = -1
              , argDestroy = -1
              , argCallerAllocates = False
              , argCallbackUserData = False
              , transfer = TransferNothing
              }
          , Arg
              { argCName = "child"
              , argType = TInterface Name { namespace = "Gtk" , name = "Widget" }
              , argCType = Just "GtkWidget*"
              , direction = DirectionIn
              , mayBeNull = False
              , argDoc =
                  Documentation
                    { rawDocText = Just "a child of @container"
                    , sinceVersion = Nothing
                    }
              , argScope = ScopeTypeInvalid
              , argClosure = -1
              , argDestroy = -1
              , argCallerAllocates = False
              , argCallbackUserData = False
              , transfer = TransferNothing
              }
          ]
      , skipReturn = False
      , callableThrows = False
      , callableDeprecated = Nothing
      , callableDocumentation =
          Documentation { rawDocText = Nothing , sinceVersion = Nothing }
      , callableResolvable = Nothing
      }
    -}
    -- | Type for the callback on the (unwrapped) C side.
    type C_ContainerClassGetPathForChildFieldCallback =
        Ptr Gtk.Container.Container ->
        Ptr Gtk.Widget.Widget ->
        IO (Ptr Gtk.WidgetPath.WidgetPath)

    -- Args: [ Arg
    --           { argCName = "container"
    --           , argType =
    --               TInterface Name { namespace = "Gtk" , name = "Container" }
    --           , argCType = Just "GtkContainer*"
    --           , direction = DirectionIn
    --           , mayBeNull = False
    --           , argDoc =
    --               Documentation
    --                 { rawDocText = Just "a #GtkContainer" , sinceVersion = Nothing }
    --           , argScope = ScopeTypeInvalid
    --           , argClosure = -1
    --           , argDestroy = -1
    --           , argCallerAllocates = False
    --           , argCallbackUserData = False
    --           , transfer = TransferNothing
    --           }
    --       , Arg
    --           { argCName = "child"
    --           , argType = TInterface Name { namespace = "Gtk" , name = "Widget" }
    --           , argCType = Just "GtkWidget*"
    --           , direction = DirectionIn
    --           , mayBeNull = False
    --           , argDoc =
    --               Documentation
    --                 { rawDocText = Just "a child of @container"
    --                 , sinceVersion = Nothing
    --                 }
    --           , argScope = ScopeTypeInvalid
    --           , argClosure = -1
    --           , argDestroy = -1
    --           , argCallerAllocates = False
    --           , argCallbackUserData = False
    --           , transfer = TransferNothing
    --           }
    --       ]
    -- Lengths: []
    -- returnType: Just (TInterface Name { namespace = "Gtk" , name = "WidgetPath" })
    -- throws : False
    -- Skip return : False

    foreign import ccall "dynamic" __dynamic_C_ContainerClassGetPathForChildFieldCallback :: FunPtr C_ContainerClassGetPathForChildFieldCallback -> C_ContainerClassGetPathForChildFieldCallback

    -- | Given a pointer to a foreign C function, wrap it into a function callable from Haskell.
    dynamic_ContainerClassGetPathForChildFieldCallback ::
        (B.CallStack.HasCallStack, MonadIO m, Gtk.Container.IsContainer a, Gtk.Widget.IsWidget b) =>
        FunPtr C_ContainerClassGetPathForChildFieldCallback
        -> a
        -- ^ /@container@/: a t'GI.Gtk.Objects.Container.Container'
        -> b
        -- ^ /@child@/: a child of /@container@/
        -> m Gtk.WidgetPath.WidgetPath
        -- ^ __Returns:__ A newly created t'GI.Gtk.Structs.WidgetPath.WidgetPath'
    dynamic_ContainerClassGetPathForChildFieldCallback :: forall (m :: * -> *) a b.
    (HasCallStack, MonadIO m, IsContainer a, IsWidget b) =>
    FunPtr C_ContainerClassGetPathForChildFieldCallback
    -> a -> b -> m WidgetPath
    dynamic_ContainerClassGetPathForChildFieldCallback FunPtr C_ContainerClassGetPathForChildFieldCallback
    __funPtr a
    container b
    child = IO WidgetPath -> m WidgetPath
    forall a. IO a -> m a
    forall (m :: * -> *) a. MonadIO m => IO a -> m a
    liftIO (IO WidgetPath -> m WidgetPath) -> IO WidgetPath -> m WidgetPath
    forall a b. (a -> b) -> a -> b
    $ do
        container' <- a -> IO (Ptr Container)
    forall a b. (HasCallStack, ManagedPtrNewtype a) => a -> IO (Ptr b)
    unsafeManagedPtrCastPtr a
    container
        child' <- unsafeManagedPtrCastPtr child
        result <- (__dynamic_C_ContainerClassGetPathForChildFieldCallback __funPtr) container' child'
        checkUnexpectedReturnNULL "containerClassGetPathForChildFieldCallback" result
        result' <- (wrapBoxed Gtk.WidgetPath.WidgetPath) result
        touchManagedPtr container
        touchManagedPtr child
        return result'

    -- | Generate a function pointer callable from C code, from a `C_ContainerClassGetPathForChildFieldCallback`.
    foreign import ccall "wrapper"
        mk_ContainerClassGetPathForChildFieldCallback :: C_ContainerClassGetPathForChildFieldCallback -> IO (FunPtr C_ContainerClassGetPathForChildFieldCallback)

    -- | /No description available in the introspection data./
    type ContainerClassGetPathForChildFieldCallback =
        Gtk.Container.Container
        -- ^ /@container@/: a t'GI.Gtk.Objects.Container.Container'
        -> Gtk.Widget.Widget
        -- ^ /@child@/: a child of /@container@/
        -> IO Gtk.WidgetPath.WidgetPath
        -- ^ __Returns:__ A newly created t'GI.Gtk.Structs.WidgetPath.WidgetPath'

    -- | A convenience synonym for @`Nothing` :: `Maybe` `ContainerClassGetPathForChildFieldCallback`@.
    noContainerClassGetPathForChildFieldCallback :: Maybe ContainerClassGetPathForChildFieldCallback
    noContainerClassGetPathForChildFieldCallback :: Maybe ContainerClassGetPathForChildFieldCallback
    noContainerClassGetPathForChildFieldCallback = Maybe ContainerClassGetPathForChildFieldCallback
    forall a. Maybe a
    Nothing

    -- | Wrap the callback into a `GClosure`.
    genClosure_ContainerClassGetPathForChildFieldCallback :: MonadIO m => ContainerClassGetPathForChildFieldCallback -> m (GClosure C_ContainerClassGetPathForChildFieldCallback)
    genClosure_ContainerClassGetPathForChildFieldCallback :: forall (m :: * -> *).
    MonadIO m =>
    ContainerClassGetPathForChildFieldCallback
    -> m (GClosure C_ContainerClassGetPathForChildFieldCallback)
    genClosure_ContainerClassGetPathForChildFieldCallback ContainerClassGetPathForChildFieldCallback
    cb = IO (GClosure C_ContainerClassGetPathForChildFieldCallback)
    -> m (GClosure C_ContainerClassGetPathForChildFieldCallback)
    forall a. IO a -> m a
    forall (m :: * -> *) a. MonadIO m => IO a -> m a
    liftIO (IO (GClosure C_ContainerClassGetPathForChildFieldCallback)
     -> m (GClosure C_ContainerClassGetPathForChildFieldCallback))
    -> IO (GClosure C_ContainerClassGetPathForChildFieldCallback)
    -> m (GClosure C_ContainerClassGetPathForChildFieldCallback)
    forall a b. (a -> b) -> a -> b
    $ do
        let cb' :: C_ContainerClassGetPathForChildFieldCallback
    cb' = Maybe (Ptr (FunPtr C_ContainerClassGetPathForChildFieldCallback))
    -> ContainerClassGetPathForChildFieldCallback
    -> C_ContainerClassGetPathForChildFieldCallback
    wrap_ContainerClassGetPathForChildFieldCallback Maybe (Ptr (FunPtr C_ContainerClassGetPathForChildFieldCallback))
    forall a. Maybe a
    Nothing ContainerClassGetPathForChildFieldCallback
    cb
        C_ContainerClassGetPathForChildFieldCallback
    -> IO (FunPtr C_ContainerClassGetPathForChildFieldCallback)
    mk_ContainerClassGetPathForChildFieldCallback C_ContainerClassGetPathForChildFieldCallback
    cb' IO (FunPtr C_ContainerClassGetPathForChildFieldCallback)
    -> (FunPtr C_ContainerClassGetPathForChildFieldCallback
        -> IO (GClosure C_ContainerClassGetPathForChildFieldCallback))
    -> IO (GClosure C_ContainerClassGetPathForChildFieldCallback)
    forall a b. IO a -> (a -> IO b) -> IO b
    forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
    >>= FunPtr C_ContainerClassGetPathForChildFieldCallback
    -> IO (GClosure C_ContainerClassGetPathForChildFieldCallback)
    forall (m :: * -> *) a. MonadIO m => FunPtr a -> m (GClosure a)
    B.GClosure.newGClosure

    -- | Wrap a `ContainerClassGetPathForChildFieldCallback` into a `C_ContainerClassGetPathForChildFieldCallback`.
    wrap_ContainerClassGetPathForChildFieldCallback ::
        Maybe (Ptr (FunPtr C_ContainerClassGetPathForChildFieldCallback)) ->
        ContainerClassGetPathForChildFieldCallback ->
        C_ContainerClassGetPathForChildFieldCallback
    wrap_ContainerClassGetPathForChildFieldCallback :: Maybe (Ptr (FunPtr C_ContainerClassGetPathForChildFieldCallback))
    -> ContainerClassGetPathForChildFieldCallback
    -> C_ContainerClassGetPathForChildFieldCallback
    wrap_ContainerClassGetPathForChildFieldCallback Maybe (Ptr (FunPtr C_ContainerClassGetPathForChildFieldCallback))
    gi'funptrptr ContainerClassGetPathForChildFieldCallback
    gi'cb Ptr Container
    container Ptr Widget
    child = do
        container' <- ((ManagedPtr Container -> Container)
    -> Ptr Container -> IO Container
    forall a b.
    (HasCallStack, GObject a, GObject b) =>
    (ManagedPtr a -> a) -> Ptr b -> IO a
    newObject ManagedPtr Container -> Container
    Gtk.Container.Container) Ptr Container
    container
        child' <- (newObject Gtk.Widget.Widget) child
        result <- gi'cb  container' child'
        maybeReleaseFunPtr gi'funptrptr
        result' <- B.ManagedPtr.disownBoxed result
        return result'

    -- callback ContainerClassGetChildPropertyFieldCallback
    {- Callable
      { returnType = Nothing
      , returnMayBeNull = False
      , returnTransfer = TransferNothing
      , returnDocumentation =
          Documentation { rawDocText = Nothing , sinceVersion = Nothing }
      , args =
          [ Arg
              { argCName = "container"
              , argType =
                  TInterface Name { namespace = "Gtk" , name = "Container" }
              , argCType = Just "GtkContainer*"
              , direction = DirectionIn
              , mayBeNull = False
              , argDoc =
                  Documentation { rawDocText = Nothing , sinceVersion = Nothing }
              , argScope = ScopeTypeInvalid
              , argClosure = -1
              , argDestroy = -1
              , argCallerAllocates = False
              , argCallbackUserData = False
              , transfer = TransferNothing
              }
          , Arg
              { argCName = "child"
              , argType = TInterface Name { namespace = "Gtk" , name = "Widget" }
              , argCType = Just "GtkWidget*"
              , direction = DirectionIn
              , mayBeNull = False
              , argDoc =
                  Documentation { rawDocText = Nothing , sinceVersion = Nothing }
              , argScope = ScopeTypeInvalid
              , argClosure = -1
              , argDestroy = -1
              , argCallerAllocates = False
              , argCallbackUserData = False
              , transfer = TransferNothing
              }
          , Arg
              { argCName = "property_id"
              , argType = TBasicType TUInt
              , argCType = Just "guint"
              , direction = DirectionIn
              , mayBeNull = False
              , argDoc =
                  Documentation { rawDocText = Nothing , sinceVersion = Nothing }
              , argScope = ScopeTypeInvalid
              , argClosure = -1
              , argDestroy = -1
              , argCallerAllocates = False
              , argCallbackUserData = False
              , transfer = TransferNothing
              }
          , Arg
              { argCName = "value"
              , argType = TGValue
              , argCType = Just "GValue*"
              , direction = DirectionIn
              , mayBeNull = False
              , argDoc =
                  Documentation { rawDocText = Nothing , sinceVersion = Nothing }
              , argScope = ScopeTypeInvalid
              , argClosure = -1
              , argDestroy = -1
              , argCallerAllocates = False
              , argCallbackUserData = False
              , transfer = TransferNothing
              }
          , Arg
              { argCName = "pspec"
              , argType = TParamSpec
              , argCType = Just "GParamSpec*"
              , direction = DirectionIn
              , mayBeNull = False
              , argDoc =
                  Documentation { rawDocText = Nothing , sinceVersion = Nothing }
              , argScope = ScopeTypeInvalid
              , argClosure = -1
              , argDestroy = -1
              , argCallerAllocates = False
              , argCallbackUserData = False
              , transfer = TransferNothing
              }
          ]
      , skipReturn = False
      , callableThrows = False
      , callableDeprecated = Nothing
      , callableDocumentation =
          Documentation { rawDocText = Nothing , sinceVersion = Nothing }
      , callableResolvable = Nothing
      }
    -}
    -- | Type for the callback on the (unwrapped) C side.
    type C_ContainerClassGetChildPropertyFieldCallback =
        Ptr Gtk.Container.Container ->
        Ptr Gtk.Widget.Widget ->
        Word32 ->
        Ptr GValue ->
        Ptr GParamSpec ->
        IO ()

    -- Args: [ Arg
    --           { argCName = "container"
    --           , argType =
    --               TInterface Name { namespace = "Gtk" , name = "Container" }
    --           , argCType = Just "GtkContainer*"
    --           , direction = DirectionIn
    --           , mayBeNull = False
    --           , argDoc =
    --               Documentation { rawDocText = Nothing , sinceVersion = Nothing }
    --           , argScope = ScopeTypeInvalid
    --           , argClosure = -1
    --           , argDestroy = -1
    --           , argCallerAllocates = False
    --           , argCallbackUserData = False
    --           , transfer = TransferNothing
    --           }
    --       , Arg
    --           { argCName = "child"
    --           , argType = TInterface Name { namespace = "Gtk" , name = "Widget" }
    --           , argCType = Just "GtkWidget*"
    --           , direction = DirectionIn
    --           , mayBeNull = False
    --           , argDoc =
    --               Documentation { rawDocText = Nothing , sinceVersion = Nothing }
    --           , argScope = ScopeTypeInvalid
    --           , argClosure = -1
    --           , argDestroy = -1
    --           , argCallerAllocates = False
    --           , argCallbackUserData = False
    --           , transfer = TransferNothing
    --           }
    --       , Arg
    --           { argCName = "property_id"
    --           , argType = TBasicType TUInt
    --           , argCType = Just "guint"
    --           , direction = DirectionIn
    --           , mayBeNull = False
    --           , argDoc =
    --               Documentation { rawDocText = Nothing , sinceVersion = Nothing }
    --           , argScope = ScopeTypeInvalid
    --           , argClosure = -1
    --           , argDestroy = -1
    --           , argCallerAllocates = False
    --           , argCallbackUserData = False
    --           , transfer = TransferNothing
    --           }
    --       , Arg
    --           { argCName = "value"
    --           , argType = TGValue
    --           , argCType = Just "GValue*"
    --           , direction = DirectionIn
    --           , mayBeNull = False
    --           , argDoc =
    --               Documentation { rawDocText = Nothing , sinceVersion = Nothing }
    --           , argScope = ScopeTypeInvalid
    --           , argClosure = -1
    --           , argDestroy = -1
    --           , argCallerAllocates = False
    --           , argCallbackUserData = False
    --           , transfer = TransferNothing
    --           }
    --       , Arg
    --           { argCName = "pspec"
    --           , argType = TParamSpec
    --           , argCType = Just "GParamSpec*"
    --           , direction = DirectionIn
    --           , mayBeNull = False
    --           , argDoc =
    --               Documentation { rawDocText = Nothing , sinceVersion = Nothing }
    --           , argScope = ScopeTypeInvalid
    --           , argClosure = -1
    --           , argDestroy = -1
    --           , argCallerAllocates = False
    --           , argCallbackUserData = False
    --           , transfer = TransferNothing
    --           }
    --       ]
    -- Lengths: []
    -- returnType: Nothing
    -- throws : False
    -- Skip return : False

    foreign import ccall "dynamic" __dynamic_C_ContainerClassGetChildPropertyFieldCallback :: FunPtr C_ContainerClassGetChildPropertyFieldCallback -> C_ContainerClassGetChildPropertyFieldCallback

    -- | Given a pointer to a foreign C function, wrap it into a function callable from Haskell.
    dynamic_ContainerClassGetChildPropertyFieldCallback ::
        (B.CallStack.HasCallStack, MonadIO m, Gtk.Container.IsContainer a, Gtk.Widget.IsWidget b) =>
        FunPtr C_ContainerClassGetChildPropertyFieldCallback
        -> a
        -> b
        -> Word32
        -> GValue
        -> GParamSpec
        -> m ()
    dynamic_ContainerClassGetChildPropertyFieldCallback :: forall (m :: * -> *) a b.
    (HasCallStack, MonadIO m, IsContainer a, IsWidget b) =>
    FunPtr C_ContainerClassSetChildPropertyFieldCallback
    -> a -> b -> Word32 -> GValue -> GParamSpec -> m ()
    dynamic_ContainerClassGetChildPropertyFieldCallback FunPtr C_ContainerClassSetChildPropertyFieldCallback
    __funPtr a
    container b
    child Word32
    propertyId GValue
    value GParamSpec
    pspec = IO () -> m ()
    forall a. IO a -> m a
    forall (m :: * -> *) a. MonadIO m => IO a -> m a
    liftIO (IO () -> m ()) -> IO () -> m ()
    forall a b. (a -> b) -> a -> b
    $ do
        container' <- a -> IO (Ptr Container)
    forall a b. (HasCallStack, ManagedPtrNewtype a) => a -> IO (Ptr b)
    unsafeManagedPtrCastPtr a
    container
        child' <- unsafeManagedPtrCastPtr child
        value' <- unsafeManagedPtrGetPtr value
        pspec' <- unsafeManagedPtrGetPtr pspec
        (__dynamic_C_ContainerClassGetChildPropertyFieldCallback __funPtr) container' child' propertyId value' pspec'
        touchManagedPtr container
        touchManagedPtr child
        touchManagedPtr value
        touchManagedPtr pspec
        return ()

    -- | Generate a function pointer callable from C code, from a `C_ContainerClassGetChildPropertyFieldCallback`.
    foreign import ccall "wrapper"
        mk_ContainerClassGetChildPropertyFieldCallback :: C_ContainerClassGetChildPropertyFieldCallback -> IO (FunPtr C_ContainerClassGetChildPropertyFieldCallback)

    -- | /No description available in the introspection data./
    type ContainerClassGetChildPropertyFieldCallback =
        Gtk.Container.Container
        -> Gtk.Widget.Widget
        -> Word32
        -> GValue
        -> GParamSpec
        -> IO ()

    -- | A convenience synonym for @`Nothing` :: `Maybe` `ContainerClassGetChildPropertyFieldCallback`@.
    noContainerClassGetChildPropertyFieldCallback :: Maybe ContainerClassGetChildPropertyFieldCallback
    noContainerClassGetChildPropertyFieldCallback :: Maybe ContainerClassSetChildPropertyFieldCallback
    noContainerClassGetChildPropertyFieldCallback = Maybe ContainerClassSetChildPropertyFieldCallback
    forall a. Maybe a
    Nothing

    -- | Wrap the callback into a `GClosure`.
    genClosure_ContainerClassGetChildPropertyFieldCallback :: MonadIO m => ContainerClassGetChildPropertyFieldCallback -> m (GClosure C_ContainerClassGetChildPropertyFieldCallback)
    genClosure_ContainerClassGetChildPropertyFieldCallback :: forall (m :: * -> *).
    MonadIO m =>
    ContainerClassSetChildPropertyFieldCallback
    -> m (GClosure C_ContainerClassSetChildPropertyFieldCallback)
    genClosure_ContainerClassGetChildPropertyFieldCallback ContainerClassSetChildPropertyFieldCallback
    cb = IO (GClosure C_ContainerClassSetChildPropertyFieldCallback)
    -> m (GClosure C_ContainerClassSetChildPropertyFieldCallback)
    forall a. IO a -> m a
    forall (m :: * -> *) a. MonadIO m => IO a -> m a
    liftIO (IO (GClosure C_ContainerClassSetChildPropertyFieldCallback)
     -> m (GClosure C_ContainerClassSetChildPropertyFieldCallback))
    -> IO (GClosure C_ContainerClassSetChildPropertyFieldCallback)
    -> m (GClosure C_ContainerClassSetChildPropertyFieldCallback)
    forall a b. (a -> b) -> a -> b
    $ do
        let cb' :: C_ContainerClassSetChildPropertyFieldCallback
    cb' = Maybe (Ptr (FunPtr C_ContainerClassSetChildPropertyFieldCallback))
    -> ContainerClassSetChildPropertyFieldCallback
    -> C_ContainerClassSetChildPropertyFieldCallback
    wrap_ContainerClassGetChildPropertyFieldCallback Maybe (Ptr (FunPtr C_ContainerClassSetChildPropertyFieldCallback))
    forall a. Maybe a
    Nothing ContainerClassSetChildPropertyFieldCallback
    cb
        C_ContainerClassSetChildPropertyFieldCallback
    -> IO (FunPtr C_ContainerClassSetChildPropertyFieldCallback)
    mk_ContainerClassGetChildPropertyFieldCallback C_ContainerClassSetChildPropertyFieldCallback
    cb' IO (FunPtr C_ContainerClassSetChildPropertyFieldCallback)
    -> (FunPtr C_ContainerClassSetChildPropertyFieldCallback
        -> IO (GClosure C_ContainerClassSetChildPropertyFieldCallback))
    -> IO (GClosure C_ContainerClassSetChildPropertyFieldCallback)
    forall a b. IO a -> (a -> IO b) -> IO b
    forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
    >>= FunPtr C_ContainerClassSetChildPropertyFieldCallback
    -> IO (GClosure C_ContainerClassSetChildPropertyFieldCallback)
    forall (m :: * -> *) a. MonadIO m => FunPtr a -> m (GClosure a)
    B.GClosure.newGClosure

    -- | Wrap a `ContainerClassGetChildPropertyFieldCallback` into a `C_ContainerClassGetChildPropertyFieldCallback`.
    wrap_ContainerClassGetChildPropertyFieldCallback ::
        Maybe (Ptr (FunPtr C_ContainerClassGetChildPropertyFieldCallback)) ->
        ContainerClassGetChildPropertyFieldCallback ->
        C_ContainerClassGetChildPropertyFieldCallback
    wrap_ContainerClassGetChildPropertyFieldCallback :: Maybe (Ptr (FunPtr C_ContainerClassSetChildPropertyFieldCallback))
    -> ContainerClassSetChildPropertyFieldCallback
    -> C_ContainerClassSetChildPropertyFieldCallback
    wrap_ContainerClassGetChildPropertyFieldCallback Maybe (Ptr (FunPtr C_ContainerClassSetChildPropertyFieldCallback))
    gi'funptrptr ContainerClassSetChildPropertyFieldCallback
    gi'cb Ptr Container
    container Ptr Widget
    child Word32
    propertyId Ptr GValue
    value Ptr GParamSpec
    pspec = do
        container' <- ((ManagedPtr Container -> Container)
    -> Ptr Container -> IO Container
    forall a b.
    (HasCallStack, GObject a, GObject b) =>
    (ManagedPtr a -> a) -> Ptr b -> IO a
    newObject ManagedPtr Container -> Container
    Gtk.Container.Container) Ptr Container
    container
        child' <- (newObject Gtk.Widget.Widget) child
        value' <- B.GValue.newGValueFromPtr value
        pspec' <- B.GParamSpec.newGParamSpecFromPtr pspec
        gi'cb  container' child' propertyId value' pspec'
        maybeReleaseFunPtr gi'funptrptr

    -- callback ContainerClassForallFieldCallback
    {- Callable
      { returnType = Nothing
      , returnMayBeNull = False
      , returnTransfer = TransferNothing
      , returnDocumentation =
          Documentation { rawDocText = Nothing , sinceVersion = Nothing }
      , args =
          [ Arg
              { argCName = "container"
              , argType =
                  TInterface Name { namespace = "Gtk" , name = "Container" }
              , argCType = Just "GtkContainer*"
              , direction = DirectionIn
              , mayBeNull = False
              , argDoc =
                  Documentation
                    { rawDocText = Just "a #GtkContainer" , sinceVersion = Nothing }
              , argScope = ScopeTypeInvalid
              , argClosure = -1
              , argDestroy = -1
              , argCallerAllocates = False
              , argCallbackUserData = False
              , transfer = TransferNothing
              }
          , Arg
              { argCName = "include_internals"
              , argType = TBasicType TBoolean
              , argCType = Just "gboolean"
              , direction = DirectionIn
              , mayBeNull = False
              , argDoc =
                  Documentation { rawDocText = Nothing , sinceVersion = Nothing }
              , argScope = ScopeTypeInvalid
              , argClosure = -1
              , argDestroy = -1
              , argCallerAllocates = False
              , argCallbackUserData = False
              , transfer = TransferNothing
              }
          , Arg
              { argCName = "callback"
              , argType =
                  TInterface Name { namespace = "Gtk" , name = "Callback" }
              , argCType = Just "GtkCallback"
              , direction = DirectionIn
              , mayBeNull = False
              , argDoc =
                  Documentation
                    { rawDocText = Just "a callback" , sinceVersion = Nothing }
              , argScope = ScopeTypeCall
              , argClosure = 3
              , argDestroy = -1
              , argCallerAllocates = False
              , argCallbackUserData = False
              , transfer = TransferNothing
              }
          , Arg
              { argCName = "callback_data"
              , argType = TBasicType TPtr
              , argCType = Just "gpointer"
              , direction = DirectionIn
              , mayBeNull = True
              , argDoc =
                  Documentation
                    { rawDocText = Just "callback user data" , sinceVersion = Nothing }
              , argScope = ScopeTypeInvalid
              , argClosure = -1
              , argDestroy = -1
              , argCallerAllocates = False
              , argCallbackUserData = False
              , transfer = TransferNothing
              }
          ]
      , skipReturn = False
      , callableThrows = False
      , callableDeprecated = Nothing
      , callableDocumentation =
          Documentation { rawDocText = Nothing , sinceVersion = Nothing }
      , callableResolvable = Nothing
      }
    -}
    -- | Type for the callback on the (unwrapped) C side.
    type C_ContainerClassForallFieldCallback =
        Ptr Gtk.Container.Container ->
        CInt ->
        FunPtr C_Callback ->
        Ptr () ->
        IO ()

    -- Args: [ Arg
    --           { argCName = "container"
    --           , argType =
    --               TInterface Name { namespace = "Gtk" , name = "Container" }
    --           , argCType = Just "GtkContainer*"
    --           , direction = DirectionIn
    --           , mayBeNull = False
    --           , argDoc =
    --               Documentation
    --                 { rawDocText = Just "a #GtkContainer" , sinceVersion = Nothing }
    --           , argScope = ScopeTypeInvalid
    --           , argClosure = -1
    --           , argDestroy = -1
    --           , argCallerAllocates = False
    --           , argCallbackUserData = False
    --           , transfer = TransferNothing
    --           }
    --       , Arg
    --           { argCName = "include_internals"
    --           , argType = TBasicType TBoolean
    --           , argCType = Just "gboolean"
    --           , direction = DirectionIn
    --           , mayBeNull = False
    --           , argDoc =
    --               Documentation { rawDocText = Nothing , sinceVersion = Nothing }
    --           , argScope = ScopeTypeInvalid
    --           , argClosure = -1
    --           , argDestroy = -1
    --           , argCallerAllocates = False
    --           , argCallbackUserData = False
    --           , transfer = TransferNothing
    --           }
    --       , Arg
    --           { argCName = "callback"
    --           , argType =
    --               TInterface Name { namespace = "Gtk" , name = "Callback" }
    --           , argCType = Just "GtkCallback"
    --           , direction = DirectionIn
    --           , mayBeNull = False
    --           , argDoc =
    --               Documentation
    --                 { rawDocText = Just "a callback" , sinceVersion = Nothing }
    --           , argScope = ScopeTypeCall
    --           , argClosure = 3
    --           , argDestroy = -1
    --           , argCallerAllocates = False
    --           , argCallbackUserData = False
    --           , transfer = TransferNothing
    --           }
    --       , Arg
    --           { argCName = "callback_data"
    --           , argType = TBasicType TPtr
    --           , argCType = Just "gpointer"
    --           , direction = DirectionIn
    --           , mayBeNull = True
    --           , argDoc =
    --               Documentation
    --                 { rawDocText = Just "callback user data" , sinceVersion = Nothing }
    --           , argScope = ScopeTypeInvalid
    --           , argClosure = -1
    --           , argDestroy = -1
    --           , argCallerAllocates = False
    --           , argCallbackUserData = False
    --           , transfer = TransferNothing
    --           }
    --       ]
    -- Lengths: []
    -- returnType: Nothing
    -- throws : False
    -- Skip return : False

    foreign import ccall "dynamic" __dynamic_C_ContainerClassForallFieldCallback :: FunPtr C_ContainerClassForallFieldCallback -> C_ContainerClassForallFieldCallback

    -- | Given a pointer to a foreign C function, wrap it into a function callable from Haskell.
    dynamic_ContainerClassForallFieldCallback ::
        (B.CallStack.HasCallStack, MonadIO m, Gtk.Container.IsContainer a) =>
        FunPtr C_ContainerClassForallFieldCallback
        -> a
        -- ^ /@container@/: a t'GI.Gtk.Objects.Container.Container'
        -> Bool
        -> Callback_WithClosures
        -- ^ /@callback@/: a callback
        -> Ptr ()
        -- ^ /@callbackData@/: callback user data
        -> m ()
    dynamic_ContainerClassForallFieldCallback :: forall (m :: * -> *) a.
    (HasCallStack, MonadIO m, IsContainer a) =>
    FunPtr C_ContainerClassForallFieldCallback
    -> a -> Bool -> Callback_WithClosures -> Ptr () -> m ()
    dynamic_ContainerClassForallFieldCallback FunPtr C_ContainerClassForallFieldCallback
    __funPtr a
    container Bool
    includeInternals Callback_WithClosures
    callback Ptr ()
    callbackData = IO () -> m ()
    forall a. IO a -> m a
    forall (m :: * -> *) a. MonadIO m => IO a -> m a
    liftIO (IO () -> m ()) -> IO () -> m ()
    forall a b. (a -> b) -> a -> b
    $ do
        container' <- a -> IO (Ptr Container)
    forall a b. (HasCallStack, ManagedPtrNewtype a) => a -> IO (Ptr b)
    unsafeManagedPtrCastPtr a
    container
        let includeInternals' = (Int -> CInt
    forall a b. (Integral a, Num b) => a -> b
    P.fromIntegral (Int -> CInt) -> (Bool -> Int) -> Bool -> CInt
    forall b c a. (b -> c) -> (a -> b) -> a -> c
    . Bool -> Int
    forall a. Enum a => a -> Int
    P.fromEnum) Bool
    includeInternals
        callback' <- mk_Callback (wrap_Callback Nothing callback)
        (__dynamic_C_ContainerClassForallFieldCallback __funPtr) container' includeInternals' callback' callbackData
        safeFreeFunPtr $ castFunPtrToPtr callback'
        touchManagedPtr container
        return ()

    -- | Generate a function pointer callable from C code, from a `C_ContainerClassForallFieldCallback`.
    foreign import ccall "wrapper"
        mk_ContainerClassForallFieldCallback :: C_ContainerClassForallFieldCallback -> IO (FunPtr C_ContainerClassForallFieldCallback)

    -- | /No description available in the introspection data./
    type ContainerClassForallFieldCallback =
        Gtk.Container.Container
        -- ^ /@container@/: a t'GI.Gtk.Objects.Container.Container'
        -> Bool
        -> Callback_WithClosures
        -- ^ /@callback@/: a callback
        -> IO ()

    -- | A convenience synonym for @`Nothing` :: `Maybe` `ContainerClassForallFieldCallback`@.
    noContainerClassForallFieldCallback :: Maybe ContainerClassForallFieldCallback
    noContainerClassForallFieldCallback :: Maybe ContainerClassForallFieldCallback
    noContainerClassForallFieldCallback = Maybe ContainerClassForallFieldCallback
    forall a. Maybe a
    Nothing

    -- | /No description available in the introspection data./
    type ContainerClassForallFieldCallback_WithClosures =
        Gtk.Container.Container
        -- ^ /@container@/: a t'GI.Gtk.Objects.Container.Container'
        -> Bool
        -> Callback_WithClosures
        -- ^ /@callback@/: a callback
        -> Ptr ()
        -- ^ /@callbackData@/: callback user data
        -> IO ()

    -- | A convenience synonym for @`Nothing` :: `Maybe` `ContainerClassForallFieldCallback_WithClosures`@.
    noContainerClassForallFieldCallback_WithClosures :: Maybe ContainerClassForallFieldCallback_WithClosures
    noContainerClassForallFieldCallback_WithClosures :: Maybe ContainerClassForallFieldCallback_WithClosures
    noContainerClassForallFieldCallback_WithClosures = Maybe ContainerClassForallFieldCallback_WithClosures
    forall a. Maybe a
    Nothing

    -- | A simple wrapper that ignores the closure arguments.
    drop_closures_ContainerClassForallFieldCallback :: ContainerClassForallFieldCallback -> ContainerClassForallFieldCallback_WithClosures
    drop_closures_ContainerClassForallFieldCallback :: ContainerClassForallFieldCallback
    -> ContainerClassForallFieldCallback_WithClosures
    drop_closures_ContainerClassForallFieldCallback ContainerClassForallFieldCallback
    _f Container
    container Bool
    includeInternals Callback_WithClosures
    callback Ptr ()
    _ = ContainerClassForallFieldCallback
    _f Container
    container Bool
    includeInternals Callback_WithClosures
    callback

    -- | Wrap the callback into a `GClosure`.
    genClosure_ContainerClassForallFieldCallback :: MonadIO m => ContainerClassForallFieldCallback -> m (GClosure C_ContainerClassForallFieldCallback)
    genClosure_ContainerClassForallFieldCallback :: forall (m :: * -> *).
    MonadIO m =>
    ContainerClassForallFieldCallback
    -> m (GClosure C_ContainerClassForallFieldCallback)
    genClosure_ContainerClassForallFieldCallback ContainerClassForallFieldCallback
    cb = IO (GClosure C_ContainerClassForallFieldCallback)
    -> m (GClosure C_ContainerClassForallFieldCallback)
    forall a. IO a -> m a
    forall (m :: * -> *) a. MonadIO m => IO a -> m a
    liftIO (IO (GClosure C_ContainerClassForallFieldCallback)
     -> m (GClosure C_ContainerClassForallFieldCallback))
    -> IO (GClosure C_ContainerClassForallFieldCallback)
    -> m (GClosure C_ContainerClassForallFieldCallback)
    forall a b. (a -> b) -> a -> b
    $ do
        let cb' :: ContainerClassForallFieldCallback_WithClosures
    cb' = ContainerClassForallFieldCallback
    -> ContainerClassForallFieldCallback_WithClosures
    drop_closures_ContainerClassForallFieldCallback ContainerClassForallFieldCallback
    cb
        let cb'' :: C_ContainerClassForallFieldCallback
    cb'' = Maybe (Ptr (FunPtr C_ContainerClassForallFieldCallback))
    -> ContainerClassForallFieldCallback_WithClosures
    -> C_ContainerClassForallFieldCallback
    wrap_ContainerClassForallFieldCallback Maybe (Ptr (FunPtr C_ContainerClassForallFieldCallback))
    forall a. Maybe a
    Nothing ContainerClassForallFieldCallback_WithClosures
    cb'
        C_ContainerClassForallFieldCallback
    -> IO (FunPtr C_ContainerClassForallFieldCallback)
    mk_ContainerClassForallFieldCallback C_ContainerClassForallFieldCallback
    cb'' IO (FunPtr C_ContainerClassForallFieldCallback)
    -> (FunPtr C_ContainerClassForallFieldCallback
        -> IO (GClosure C_ContainerClassForallFieldCallback))
    -> IO (GClosure C_ContainerClassForallFieldCallback)
    forall a b. IO a -> (a -> IO b) -> IO b
    forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
    >>= FunPtr C_ContainerClassForallFieldCallback
    -> IO (GClosure C_ContainerClassForallFieldCallback)
    forall (m :: * -> *) a. MonadIO m => FunPtr a -> m (GClosure a)
    B.GClosure.newGClosure

    -- | Wrap a `ContainerClassForallFieldCallback` into a `C_ContainerClassForallFieldCallback`.
    wrap_ContainerClassForallFieldCallback ::
        Maybe (Ptr (FunPtr C_ContainerClassForallFieldCallback)) ->
        ContainerClassForallFieldCallback_WithClosures ->
        C_ContainerClassForallFieldCallback
    wrap_ContainerClassForallFieldCallback :: Maybe (Ptr (FunPtr C_ContainerClassForallFieldCallback))
    -> ContainerClassForallFieldCallback_WithClosures
    -> C_ContainerClassForallFieldCallback
    wrap_ContainerClassForallFieldCallback Maybe (Ptr (FunPtr C_ContainerClassForallFieldCallback))
    gi'funptrptr ContainerClassForallFieldCallback_WithClosures
    gi'cb Ptr Container
    container CInt
    includeInternals FunPtr C_Callback
    callback Ptr ()
    callbackData = do
        container' <- ((ManagedPtr Container -> Container)
    -> Ptr Container -> IO Container
    forall a b.
    (HasCallStack, GObject a, GObject b) =>
    (ManagedPtr a -> a) -> Ptr b -> IO a
    newObject ManagedPtr Container -> Container
    Gtk.Container.Container) Ptr Container
    container
        let includeInternals' = (CInt -> CInt -> Bool
    forall a. Eq a => a -> a -> Bool
    /= CInt
    0) CInt
    includeInternals
        let callback' = FunPtr C_Callback -> Callback_WithClosures
    forall (m :: * -> *) a.
    (HasCallStack, MonadIO m, IsWidget a) =>
    FunPtr C_Callback -> a -> Ptr () -> m ()
    dynamic_Callback FunPtr C_Callback
    callback
        gi'cb  container' includeInternals' callback' callbackData
        maybeReleaseFunPtr gi'funptrptr

    -- callback ContainerClassCompositeNameFieldCallback
    {- Callable
      { returnType = Just (TBasicType TUTF8)
      , returnMayBeNull = False
      , returnTransfer = TransferEverything
      , returnDocumentation =
          Documentation { rawDocText = Nothing , sinceVersion = Nothing }
      , args =
          [ Arg
              { argCName = "container"
              , argType =
                  TInterface Name { namespace = "Gtk" , name = "Container" }
              , argCType = Just "GtkContainer*"
              , direction = DirectionIn
              , mayBeNull = False
              , argDoc =
                  Documentation { rawDocText = Nothing , sinceVersion = Nothing }
              , argScope = ScopeTypeInvalid
              , argClosure = -1
              , argDestroy = -1
              , argCallerAllocates = False
              , argCallbackUserData = False
              , transfer = TransferNothing
              }
          , Arg
              { argCName = "child"
              , argType = TInterface Name { namespace = "Gtk" , name = "Widget" }
              , argCType = Just "GtkWidget*"
              , direction = DirectionIn
              , mayBeNull = False
              , argDoc =
                  Documentation { rawDocText = Nothing , sinceVersion = Nothing }
              , argScope = ScopeTypeInvalid
              , argClosure = -1
              , argDestroy = -1
              , argCallerAllocates = False
              , argCallbackUserData = False
              , transfer = TransferNothing
              }
          ]
      , skipReturn = False
      , callableThrows = False
      , callableDeprecated = Nothing
      , callableDocumentation =
          Documentation { rawDocText = Nothing , sinceVersion = Nothing }
      , callableResolvable = Nothing
      }
    -}
    -- | Type for the callback on the (unwrapped) C side.
    type C_ContainerClassCompositeNameFieldCallback =
        Ptr Gtk.Container.Container ->
        Ptr Gtk.Widget.Widget ->
        IO CString

    -- Args: [ Arg
    --           { argCName = "container"
    --           , argType =
    --               TInterface Name { namespace = "Gtk" , name = "Container" }
    --           , argCType = Just "GtkContainer*"
    --           , direction = DirectionIn
    --           , mayBeNull = False
    --           , argDoc =
    --               Documentation { rawDocText = Nothing , sinceVersion = Nothing }
    --           , argScope = ScopeTypeInvalid
    --           , argClosure = -1
    --           , argDestroy = -1
    --           , argCallerAllocates = False
    --           , argCallbackUserData = False
    --           , transfer = TransferNothing
    --           }
    --       , Arg
    --           { argCName = "child"
    --           , argType = TInterface Name { namespace = "Gtk" , name = "Widget" }
    --           , argCType = Just "GtkWidget*"
    --           , direction = DirectionIn
    --           , mayBeNull = False
    --           , argDoc =
    --               Documentation { rawDocText = Nothing , sinceVersion = Nothing }
    --           , argScope = ScopeTypeInvalid
    --           , argClosure = -1
    --           , argDestroy = -1
    --           , argCallerAllocates = False
    --           , argCallbackUserData = False
    --           , transfer = TransferNothing
    --           }
    --       ]
    -- Lengths: []
    -- returnType: Just (TBasicType TUTF8)
    -- throws : False
    -- Skip return : False

    foreign import ccall "dynamic" __dynamic_C_ContainerClassCompositeNameFieldCallback :: FunPtr C_ContainerClassCompositeNameFieldCallback -> C_ContainerClassCompositeNameFieldCallback

    -- | Given a pointer to a foreign C function, wrap it into a function callable from Haskell.
    dynamic_ContainerClassCompositeNameFieldCallback ::
        (B.CallStack.HasCallStack, MonadIO m, Gtk.Container.IsContainer a, Gtk.Widget.IsWidget b) =>
        FunPtr C_ContainerClassCompositeNameFieldCallback
        -> a
        -> b
        -> m T.Text
    dynamic_ContainerClassCompositeNameFieldCallback :: forall (m :: * -> *) a b.
    (HasCallStack, MonadIO m, IsContainer a, IsWidget b) =>
    FunPtr C_ContainerClassCompositeNameFieldCallback
    -> a -> b -> m Text
    dynamic_ContainerClassCompositeNameFieldCallback FunPtr C_ContainerClassCompositeNameFieldCallback
    __funPtr a
    container b
    child = IO Text -> m Text
    forall a. IO a -> m a
    forall (m :: * -> *) a. MonadIO m => IO a -> m a
    liftIO (IO Text -> m Text) -> IO Text -> m Text
    forall a b. (a -> b) -> a -> b
    $ do
        container' <- a -> IO (Ptr Container)
    forall a b. (HasCallStack, ManagedPtrNewtype a) => a -> IO (Ptr b)
    unsafeManagedPtrCastPtr a
    container
        child' <- unsafeManagedPtrCastPtr child
        result <- (__dynamic_C_ContainerClassCompositeNameFieldCallback __funPtr) container' child'
        checkUnexpectedReturnNULL "containerClassCompositeNameFieldCallback" result
        result' <- cstringToText result
        freeMem result
        touchManagedPtr container
        touchManagedPtr child
        return result'

    -- | Generate a function pointer callable from C code, from a `C_ContainerClassCompositeNameFieldCallback`.
    foreign import ccall "wrapper"
        mk_ContainerClassCompositeNameFieldCallback :: C_ContainerClassCompositeNameFieldCallback -> IO (FunPtr C_ContainerClassCompositeNameFieldCallback)

    -- | /No description available in the introspection data./
    type ContainerClassCompositeNameFieldCallback =
        Gtk.Container.Container
        -> Gtk.Widget.Widget
        -> IO T.Text

    -- | A convenience synonym for @`Nothing` :: `Maybe` `ContainerClassCompositeNameFieldCallback`@.
    noContainerClassCompositeNameFieldCallback :: Maybe ContainerClassCompositeNameFieldCallback
    noContainerClassCompositeNameFieldCallback :: Maybe ContainerClassCompositeNameFieldCallback
    noContainerClassCompositeNameFieldCallback = Maybe ContainerClassCompositeNameFieldCallback
    forall a. Maybe a
    Nothing

    -- | Wrap the callback into a `GClosure`.
    genClosure_ContainerClassCompositeNameFieldCallback :: MonadIO m => ContainerClassCompositeNameFieldCallback -> m (GClosure C_ContainerClassCompositeNameFieldCallback)
    genClosure_ContainerClassCompositeNameFieldCallback :: forall (m :: * -> *).
    MonadIO m =>
    ContainerClassCompositeNameFieldCallback
    -> m (GClosure C_ContainerClassCompositeNameFieldCallback)
    genClosure_ContainerClassCompositeNameFieldCallback ContainerClassCompositeNameFieldCallback
    cb = IO (GClosure C_ContainerClassCompositeNameFieldCallback)
    -> m (GClosure C_ContainerClassCompositeNameFieldCallback)
    forall a. IO a -> m a
    forall (m :: * -> *) a. MonadIO m => IO a -> m a
    liftIO (IO (GClosure C_ContainerClassCompositeNameFieldCallback)
     -> m (GClosure C_ContainerClassCompositeNameFieldCallback))
    -> IO (GClosure C_ContainerClassCompositeNameFieldCallback)
    -> m (GClosure C_ContainerClassCompositeNameFieldCallback)
    forall a b. (a -> b) -> a -> b
    $ do
        let cb' :: C_ContainerClassCompositeNameFieldCallback
    cb' = Maybe (Ptr (FunPtr C_ContainerClassCompositeNameFieldCallback))
    -> ContainerClassCompositeNameFieldCallback
    -> C_ContainerClassCompositeNameFieldCallback
    wrap_ContainerClassCompositeNameFieldCallback Maybe (Ptr (FunPtr C_ContainerClassCompositeNameFieldCallback))
    forall a. Maybe a
    Nothing ContainerClassCompositeNameFieldCallback
    cb
        C_ContainerClassCompositeNameFieldCallback
    -> IO (FunPtr C_ContainerClassCompositeNameFieldCallback)
    mk_ContainerClassCompositeNameFieldCallback C_ContainerClassCompositeNameFieldCallback
    cb' IO (FunPtr C_ContainerClassCompositeNameFieldCallback)
    -> (FunPtr C_ContainerClassCompositeNameFieldCallback
        -> IO (GClosure C_ContainerClassCompositeNameFieldCallback))
    -> IO (GClosure C_ContainerClassCompositeNameFieldCallback)
    forall a b. IO a -> (a -> IO b) -> IO b
    forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
    >>= FunPtr C_ContainerClassCompositeNameFieldCallback
    -> IO (GClosure C_ContainerClassCompositeNameFieldCallback)
    forall (m :: * -> *) a. MonadIO m => FunPtr a -> m (GClosure a)
    B.GClosure.newGClosure

    -- | Wrap a `ContainerClassCompositeNameFieldCallback` into a `C_ContainerClassCompositeNameFieldCallback`.
    wrap_ContainerClassCompositeNameFieldCallback ::
        Maybe (Ptr (FunPtr C_ContainerClassCompositeNameFieldCallback)) ->
        ContainerClassCompositeNameFieldCallback ->
        C_ContainerClassCompositeNameFieldCallback
    wrap_ContainerClassCompositeNameFieldCallback :: Maybe (Ptr (FunPtr C_ContainerClassCompositeNameFieldCallback))
    -> ContainerClassCompositeNameFieldCallback
    -> C_ContainerClassCompositeNameFieldCallback
    wrap_ContainerClassCompositeNameFieldCallback Maybe (Ptr (FunPtr C_ContainerClassCompositeNameFieldCallback))
    gi'funptrptr ContainerClassCompositeNameFieldCallback
    gi'cb Ptr Container
    container Ptr Widget
    child = do
        container' <- ((ManagedPtr Container -> Container)
    -> Ptr Container -> IO Container
    forall a b.
    (HasCallStack, GObject a, GObject b) =>
    (ManagedPtr a -> a) -> Ptr b -> IO a
    newObject ManagedPtr Container -> Container
    Gtk.Container.Container) Ptr Container
    container
        child' <- (newObject Gtk.Widget.Widget) child
        result <- gi'cb  container' child'
        maybeReleaseFunPtr gi'funptrptr
        result' <- textToCString result
        return result'

    -- callback ContainerClassChildTypeFieldCallback
    {- Callable
      { returnType = Just (TBasicType TGType)
      , returnMayBeNull = False
      , returnTransfer = TransferNothing
      , returnDocumentation =
          Documentation
            { rawDocText = Just "a #GType." , sinceVersion = Nothing }
      , args =
          [ Arg
              { argCName = "container"
              , argType =
                  TInterface Name { namespace = "Gtk" , name = "Container" }
              , argCType = Just "GtkContainer*"
              , direction = DirectionIn
              , mayBeNull = False
              , argDoc =
                  Documentation
                    { rawDocText = Just "a #GtkContainer" , sinceVersion = Nothing }
              , argScope = ScopeTypeInvalid
              , argClosure = -1
              , argDestroy = -1
              , argCallerAllocates = False
              , argCallbackUserData = False
              , transfer = TransferNothing
              }
          ]
      , skipReturn = False
      , callableThrows = False
      , callableDeprecated = Nothing
      , callableDocumentation =
          Documentation { rawDocText = Nothing , sinceVersion = Nothing }
      , callableResolvable = Nothing
      }
    -}
    -- | Type for the callback on the (unwrapped) C side.
    type C_ContainerClassChildTypeFieldCallback =
        Ptr Gtk.Container.Container ->
        IO CGType

    -- Args: [ Arg
    --           { argCName = "container"
    --           , argType =
    --               TInterface Name { namespace = "Gtk" , name = "Container" }
    --           , argCType = Just "GtkContainer*"
    --           , direction = DirectionIn
    --           , mayBeNull = False
    --           , argDoc =
    --               Documentation
    --                 { rawDocText = Just "a #GtkContainer" , sinceVersion = Nothing }
    --           , argScope = ScopeTypeInvalid
    --           , argClosure = -1
    --           , argDestroy = -1
    --           , argCallerAllocates = False
    --           , argCallbackUserData = False
    --           , transfer = TransferNothing
    --           }
    --       ]
    -- Lengths: []
    -- returnType: Just (TBasicType TGType)
    -- throws : False
    -- Skip return : False

    foreign import ccall "dynamic" __dynamic_C_ContainerClassChildTypeFieldCallback :: FunPtr C_ContainerClassChildTypeFieldCallback -> C_ContainerClassChildTypeFieldCallback

    -- | Given a pointer to a foreign C function, wrap it into a function callable from Haskell.
    dynamic_ContainerClassChildTypeFieldCallback ::
        (B.CallStack.HasCallStack, MonadIO m, Gtk.Container.IsContainer a) =>
        FunPtr C_ContainerClassChildTypeFieldCallback
        -> a
        -- ^ /@container@/: a t'GI.Gtk.Objects.Container.Container'
        -> m GType
        -- ^ __Returns:__ a t'GType'.
    dynamic_ContainerClassChildTypeFieldCallback :: forall (m :: * -> *) a.
    (HasCallStack, MonadIO m, IsContainer a) =>
    FunPtr C_ContainerClassChildTypeFieldCallback -> a -> m GType
    dynamic_ContainerClassChildTypeFieldCallback FunPtr C_ContainerClassChildTypeFieldCallback
    __funPtr a
    container = IO GType -> m GType
    forall a. IO a -> m a
    forall (m :: * -> *) a. MonadIO m => IO a -> m a
    liftIO (IO GType -> m GType) -> IO GType -> m GType
    forall a b. (a -> b) -> a -> b
    $ do
        container' <- a -> IO (Ptr Container)
    forall a b. (HasCallStack, ManagedPtrNewtype a) => a -> IO (Ptr b)
    unsafeManagedPtrCastPtr a
    container
        result <- (__dynamic_C_ContainerClassChildTypeFieldCallback __funPtr) container'
        let result' = CGType -> GType
    GType CGType
    result
        touchManagedPtr container
        return result'

    -- | Generate a function pointer callable from C code, from a `C_ContainerClassChildTypeFieldCallback`.
    foreign import ccall "wrapper"
        mk_ContainerClassChildTypeFieldCallback :: C_ContainerClassChildTypeFieldCallback -> IO (FunPtr C_ContainerClassChildTypeFieldCallback)

    -- | /No description available in the introspection data./
    type ContainerClassChildTypeFieldCallback =
        Gtk.Container.Container
        -- ^ /@container@/: a t'GI.Gtk.Objects.Container.Container'
        -> IO GType
        -- ^ __Returns:__ a t'GType'.

    -- | A convenience synonym for @`Nothing` :: `Maybe` `ContainerClassChildTypeFieldCallback`@.
    noContainerClassChildTypeFieldCallback :: Maybe ContainerClassChildTypeFieldCallback
    noContainerClassChildTypeFieldCallback :: Maybe ContainerClassChildTypeFieldCallback
    noContainerClassChildTypeFieldCallback = Maybe ContainerClassChildTypeFieldCallback
    forall a. Maybe a
    Nothing

    -- | Wrap the callback into a `GClosure`.
    genClosure_ContainerClassChildTypeFieldCallback :: MonadIO m => ContainerClassChildTypeFieldCallback -> m (GClosure C_ContainerClassChildTypeFieldCallback)
    genClosure_ContainerClassChildTypeFieldCallback :: forall (m :: * -> *).
    MonadIO m =>
    ContainerClassChildTypeFieldCallback
    -> m (GClosure C_ContainerClassChildTypeFieldCallback)
    genClosure_ContainerClassChildTypeFieldCallback ContainerClassChildTypeFieldCallback
    cb = IO (GClosure C_ContainerClassChildTypeFieldCallback)
    -> m (GClosure C_ContainerClassChildTypeFieldCallback)
    forall a. IO a -> m a
    forall (m :: * -> *) a. MonadIO m => IO a -> m a
    liftIO (IO (GClosure C_ContainerClassChildTypeFieldCallback)
     -> m (GClosure C_ContainerClassChildTypeFieldCallback))
    -> IO (GClosure C_ContainerClassChildTypeFieldCallback)
    -> m (GClosure C_ContainerClassChildTypeFieldCallback)
    forall a b. (a -> b) -> a -> b
    $ do
        let cb' :: C_ContainerClassChildTypeFieldCallback
    cb' = Maybe (Ptr (FunPtr C_ContainerClassChildTypeFieldCallback))
    -> ContainerClassChildTypeFieldCallback
    -> C_ContainerClassChildTypeFieldCallback
    wrap_ContainerClassChildTypeFieldCallback Maybe (Ptr (FunPtr C_ContainerClassChildTypeFieldCallback))
    forall a. Maybe a
    Nothing ContainerClassChildTypeFieldCallback
    cb
        C_ContainerClassChildTypeFieldCallback
    -> IO (FunPtr C_ContainerClassChildTypeFieldCallback)
    mk_ContainerClassChildTypeFieldCallback C_ContainerClassChildTypeFieldCallback
    cb' IO (FunPtr C_ContainerClassChildTypeFieldCallback)
    -> (FunPtr C_ContainerClassChildTypeFieldCallback
        -> IO (GClosure C_ContainerClassChildTypeFieldCallback))
    -> IO (GClosure C_ContainerClassChildTypeFieldCallback)
    forall a b. IO a -> (a -> IO b) -> IO b
    forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
    >>= FunPtr C_ContainerClassChildTypeFieldCallback
    -> IO (GClosure C_ContainerClassChildTypeFieldCallback)
    forall (m :: * -> *) a. MonadIO m => FunPtr a -> m (GClosure a)
    B.GClosure.newGClosure

    -- | Wrap a `ContainerClassChildTypeFieldCallback` into a `C_ContainerClassChildTypeFieldCallback`.
    wrap_ContainerClassChildTypeFieldCallback ::
        Maybe (Ptr (FunPtr C_ContainerClassChildTypeFieldCallback)) ->
        ContainerClassChildTypeFieldCallback ->
        C_ContainerClassChildTypeFieldCallback
    wrap_ContainerClassChildTypeFieldCallback :: Maybe (Ptr (FunPtr C_ContainerClassChildTypeFieldCallback))
    -> ContainerClassChildTypeFieldCallback
    -> C_ContainerClassChildTypeFieldCallback
    wrap_ContainerClassChildTypeFieldCallback Maybe (Ptr (FunPtr C_ContainerClassChildTypeFieldCallback))
    gi'funptrptr ContainerClassChildTypeFieldCallback
    gi'cb Ptr Container
    container = do
        container' <- ((ManagedPtr Container -> Container)
    -> Ptr Container -> IO Container
    forall a b.
    (HasCallStack, GObject a, GObject b) =>
    (ManagedPtr a -> a) -> Ptr b -> IO a
    newObject ManagedPtr Container -> Container
    Gtk.Container.Container) Ptr Container
    container
        result <- gi'cb  container'
        maybeReleaseFunPtr gi'funptrptr
        let result' = GType -> CGType
    gtypeToCGType GType
    result
        return result'

    -- callback ContainerClassCheckResizeFieldCallback
    {- Callable
      { returnType = Nothing
      , returnMayBeNull = False
      , returnTransfer = TransferNothing
      , returnDocumentation =
          Documentation { rawDocText = Nothing , sinceVersion = Nothing }
      , args =
          [ Arg
              { argCName = "container"
              , argType =
                  TInterface Name { namespace = "Gtk" , name = "Container" }
              , argCType = Just "GtkContainer*"
              , direction = DirectionIn
              , mayBeNull = False
              , argDoc =
                  Documentation { rawDocText = Nothing , sinceVersion = Nothing }
              , argScope = ScopeTypeInvalid
              , argClosure = -1
              , argDestroy = -1
              , argCallerAllocates = False
              , argCallbackUserData = False
              , transfer = TransferNothing
              }
          ]
      , skipReturn = False
      , callableThrows = False
      , callableDeprecated = Nothing
      , callableDocumentation =
          Documentation { rawDocText = Nothing , sinceVersion = Nothing }
      , callableResolvable = Nothing
      }
    -}
    -- | Type for the callback on the (unwrapped) C side.
    type C_ContainerClassCheckResizeFieldCallback =
        Ptr Gtk.Container.Container ->
        IO ()

    -- Args: [ Arg
    --           { argCName = "container"
    --           , argType =
    --               TInterface Name { namespace = "Gtk" , name = "Container" }
    --           , argCType = Just "GtkContainer*"
    --           , direction = DirectionIn
    --           , mayBeNull = False
    --           , argDoc =
    --               Documentation { rawDocText = Nothing , sinceVersion = Nothing }
    --           , argScope = ScopeTypeInvalid
    --           , argClosure = -1
    --           , argDestroy = -1
    --           , argCallerAllocates = False
    --           , argCallbackUserData = False
    --           , transfer = TransferNothing
    --           }
    --       ]
    -- Lengths: []
    -- returnType: Nothing
    -- throws : False
    -- Skip return : False

    foreign import ccall "dynamic" __dynamic_C_ContainerClassCheckResizeFieldCallback :: FunPtr C_ContainerClassCheckResizeFieldCallback -> C_ContainerClassCheckResizeFieldCallback

    -- | Given a pointer to a foreign C function, wrap it into a function callable from Haskell.
    dynamic_ContainerClassCheckResizeFieldCallback ::
        (B.CallStack.HasCallStack, MonadIO m, Gtk.Container.IsContainer a) =>
        FunPtr C_ContainerClassCheckResizeFieldCallback
        -> a
        -> m ()
    dynamic_ContainerClassCheckResizeFieldCallback :: forall (m :: * -> *) a.
    (HasCallStack, MonadIO m, IsContainer a) =>
    FunPtr C_ContainerClassCheckResizeFieldCallback -> a -> m ()
    dynamic_ContainerClassCheckResizeFieldCallback FunPtr C_ContainerClassCheckResizeFieldCallback
    __funPtr a
    container = IO () -> m ()
    forall a. IO a -> m a
    forall (m :: * -> *) a. MonadIO m => IO a -> m a
    liftIO (IO () -> m ()) -> IO () -> m ()
    forall a b. (a -> b) -> a -> b
    $ do
        container' <- a -> IO (Ptr Container)
    forall a b. (HasCallStack, ManagedPtrNewtype a) => a -> IO (Ptr b)
    unsafeManagedPtrCastPtr a
    container
        (__dynamic_C_ContainerClassCheckResizeFieldCallback __funPtr) container'
        touchManagedPtr container
        return ()

    -- | Generate a function pointer callable from C code, from a `C_ContainerClassCheckResizeFieldCallback`.
    foreign import ccall "wrapper"
        mk_ContainerClassCheckResizeFieldCallback :: C_ContainerClassCheckResizeFieldCallback -> IO (FunPtr C_ContainerClassCheckResizeFieldCallback)

    -- | /No description available in the introspection data./
    type ContainerClassCheckResizeFieldCallback =
        Gtk.Container.Container
        -> IO ()

    -- | A convenience synonym for @`Nothing` :: `Maybe` `ContainerClassCheckResizeFieldCallback`@.
    noContainerClassCheckResizeFieldCallback :: Maybe ContainerClassCheckResizeFieldCallback
    noContainerClassCheckResizeFieldCallback :: Maybe ContainerClassCheckResizeFieldCallback
    noContainerClassCheckResizeFieldCallback = Maybe ContainerClassCheckResizeFieldCallback
    forall a. Maybe a
    Nothing

    -- | Wrap the callback into a `GClosure`.
    genClosure_ContainerClassCheckResizeFieldCallback :: MonadIO m => ContainerClassCheckResizeFieldCallback -> m (GClosure C_ContainerClassCheckResizeFieldCallback)
    genClosure_ContainerClassCheckResizeFieldCallback :: forall (m :: * -> *).
    MonadIO m =>
    ContainerClassCheckResizeFieldCallback
    -> m (GClosure C_ContainerClassCheckResizeFieldCallback)
    genClosure_ContainerClassCheckResizeFieldCallback ContainerClassCheckResizeFieldCallback
    cb = IO (GClosure C_ContainerClassCheckResizeFieldCallback)
    -> m (GClosure C_ContainerClassCheckResizeFieldCallback)
    forall a. IO a -> m a
    forall (m :: * -> *) a. MonadIO m => IO a -> m a
    liftIO (IO (GClosure C_ContainerClassCheckResizeFieldCallback)
     -> m (GClosure C_ContainerClassCheckResizeFieldCallback))
    -> IO (GClosure C_ContainerClassCheckResizeFieldCallback)
    -> m (GClosure C_ContainerClassCheckResizeFieldCallback)
    forall a b. (a -> b) -> a -> b
    $ do
        let cb' :: C_ContainerClassCheckResizeFieldCallback
    cb' = Maybe (Ptr (FunPtr C_ContainerClassCheckResizeFieldCallback))
    -> ContainerClassCheckResizeFieldCallback
    -> C_ContainerClassCheckResizeFieldCallback
    wrap_ContainerClassCheckResizeFieldCallback Maybe (Ptr (FunPtr C_ContainerClassCheckResizeFieldCallback))
    forall a. Maybe a
    Nothing ContainerClassCheckResizeFieldCallback
    cb
        C_ContainerClassCheckResizeFieldCallback
    -> IO (FunPtr C_ContainerClassCheckResizeFieldCallback)
    mk_ContainerClassCheckResizeFieldCallback C_ContainerClassCheckResizeFieldCallback
    cb' IO (FunPtr C_ContainerClassCheckResizeFieldCallback)
    -> (FunPtr C_ContainerClassCheckResizeFieldCallback
        -> IO (GClosure C_ContainerClassCheckResizeFieldCallback))
    -> IO (GClosure C_ContainerClassCheckResizeFieldCallback)
    forall a b. IO a -> (a -> IO b) -> IO b
    forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
    >>= FunPtr C_ContainerClassCheckResizeFieldCallback
    -> IO (GClosure C_ContainerClassCheckResizeFieldCallback)
    forall (m :: * -> *) a. MonadIO m => FunPtr a -> m (GClosure a)
    B.GClosure.newGClosure

    -- | Wrap a `ContainerClassCheckResizeFieldCallback` into a `C_ContainerClassCheckResizeFieldCallback`.
    wrap_ContainerClassCheckResizeFieldCallback ::
        Maybe (Ptr (FunPtr C_ContainerClassCheckResizeFieldCallback)) ->
        ContainerClassCheckResizeFieldCallback ->
        C_ContainerClassCheckResizeFieldCallback
    wrap_ContainerClassCheckResizeFieldCallback :: Maybe (Ptr (FunPtr C_ContainerClassCheckResizeFieldCallback))
    -> ContainerClassCheckResizeFieldCallback
    -> C_ContainerClassCheckResizeFieldCallback
    wrap_ContainerClassCheckResizeFieldCallback Maybe (Ptr (FunPtr C_ContainerClassCheckResizeFieldCallback))
    gi'funptrptr ContainerClassCheckResizeFieldCallback
    gi'cb Ptr Container
    container = do
        container' <- ((ManagedPtr Container -> Container)
    -> Ptr Container -> IO Container
    forall a b.
    (HasCallStack, GObject a, GObject b) =>
    (ManagedPtr a -> a) -> Ptr b -> IO a
    newObject ManagedPtr Container -> Container
    Gtk.Container.Container) Ptr Container
    container
        gi'cb  container'
        maybeReleaseFunPtr gi'funptrptr

    -- callback ContainerClassAddFieldCallback
    {- Callable
      { returnType = Nothing
      , returnMayBeNull = False
      , returnTransfer = TransferNothing
      , returnDocumentation =
          Documentation { rawDocText = Nothing , sinceVersion = Nothing }
      , args =
          [ Arg
              { argCName = "container"
              , argType =
                  TInterface Name { namespace = "Gtk" , name = "Container" }
              , argCType = Just "GtkContainer*"
              , direction = DirectionIn
              , mayBeNull = False
              , argDoc =
                  Documentation
                    { rawDocText = Just "a #GtkContainer" , sinceVersion = Nothing }
              , argScope = ScopeTypeInvalid
              , argClosure = -1
              , argDestroy = -1
              , argCallerAllocates = False
              , argCallbackUserData = False
              , transfer = TransferNothing
              }
          , Arg
              { argCName = "widget"
              , argType = TInterface Name { namespace = "Gtk" , name = "Widget" }
              , argCType = Just "GtkWidget*"
              , direction = DirectionIn
              , mayBeNull = False
              , argDoc =
                  Documentation
                    { rawDocText = Just "a widget to be placed inside @container"
                    , sinceVersion = Nothing
                    }
              , argScope = ScopeTypeInvalid
              , argClosure = -1
              , argDestroy = -1
              , argCallerAllocates = False
              , argCallbackUserData = False
              , transfer = TransferNothing
              }
          ]
      , skipReturn = False
      , callableThrows = False
      , callableDeprecated = Nothing
      , callableDocumentation =
          Documentation { rawDocText = Nothing , sinceVersion = Nothing }
      , callableResolvable = Nothing
      }
    -}
    -- | Type for the callback on the (unwrapped) C side.
    type C_ContainerClassAddFieldCallback =
        Ptr Gtk.Container.Container ->
        Ptr Gtk.Widget.Widget ->
        IO ()

    -- Args: [ Arg
    --           { argCName = "container"
    --           , argType =
    --               TInterface Name { namespace = "Gtk" , name = "Container" }
    --           , argCType = Just "GtkContainer*"
    --           , direction = DirectionIn
    --           , mayBeNull = False
    --           , argDoc =
    --               Documentation
    --                 { rawDocText = Just "a #GtkContainer" , sinceVersion = Nothing }
    --           , argScope = ScopeTypeInvalid
    --           , argClosure = -1
    --           , argDestroy = -1
    --           , argCallerAllocates = False
    --           , argCallbackUserData = False
    --           , transfer = TransferNothing
    --           }
    --       , Arg
    --           { argCName = "widget"
    --           , argType = TInterface Name { namespace = "Gtk" , name = "Widget" }
    --           , argCType = Just "GtkWidget*"
    --           , direction = DirectionIn
    --           , mayBeNull = False
    --           , argDoc =
    --               Documentation
    --                 { rawDocText = Just "a widget to be placed inside @container"
    --                 , sinceVersion = Nothing
    --                 }
    --           , argScope = ScopeTypeInvalid
    --           , argClosure = -1
    --           , argDestroy = -1
    --           , argCallerAllocates = False
    --           , argCallbackUserData = False
    --           , transfer = TransferNothing
    --           }
    --       ]
    -- Lengths: []
    -- returnType: Nothing
    -- throws : False
    -- Skip return : False

    foreign import ccall "dynamic" __dynamic_C_ContainerClassAddFieldCallback :: FunPtr C_ContainerClassAddFieldCallback -> C_ContainerClassAddFieldCallback

    -- | Given a pointer to a foreign C function, wrap it into a function callable from Haskell.
    dynamic_ContainerClassAddFieldCallback ::
        (B.CallStack.HasCallStack, MonadIO m, Gtk.Container.IsContainer a, Gtk.Widget.IsWidget b) =>
        FunPtr C_ContainerClassAddFieldCallback
        -> a
        -- ^ /@container@/: a t'GI.Gtk.Objects.Container.Container'
        -> b
        -- ^ /@widget@/: a widget to be placed inside /@container@/
        -> m ()
    dynamic_ContainerClassAddFieldCallback :: forall (m :: * -> *) a b.
    (HasCallStack, MonadIO m, IsContainer a, IsWidget b) =>
    FunPtr C_ContainerClassSetFocusChildFieldCallback -> a -> b -> m ()
    dynamic_ContainerClassAddFieldCallback FunPtr C_ContainerClassSetFocusChildFieldCallback
    __funPtr a
    container b
    widget = IO () -> m ()
    forall a. IO a -> m a
    forall (m :: * -> *) a. MonadIO m => IO a -> m a
    liftIO (IO () -> m ()) -> IO () -> m ()
    forall a b. (a -> b) -> a -> b
    $ do
        container' <- a -> IO (Ptr Container)
    forall a b. (HasCallStack, ManagedPtrNewtype a) => a -> IO (Ptr b)
    unsafeManagedPtrCastPtr a
    container
        widget' <- unsafeManagedPtrCastPtr widget
        (__dynamic_C_ContainerClassAddFieldCallback __funPtr) container' widget'
        touchManagedPtr container
        touchManagedPtr widget
        return ()

    -- | Generate a function pointer callable from C code, from a `C_ContainerClassAddFieldCallback`.
    foreign import ccall "wrapper"
        mk_ContainerClassAddFieldCallback :: C_ContainerClassAddFieldCallback -> IO (FunPtr C_ContainerClassAddFieldCallback)

    -- | /No description available in the introspection data./
    type ContainerClassAddFieldCallback =
        Gtk.Container.Container
        -- ^ /@container@/: a t'GI.Gtk.Objects.Container.Container'
        -> Gtk.Widget.Widget
        -- ^ /@widget@/: a widget to be placed inside /@container@/
        -> IO ()

    -- | A convenience synonym for @`Nothing` :: `Maybe` `ContainerClassAddFieldCallback`@.
    noContainerClassAddFieldCallback :: Maybe ContainerClassAddFieldCallback
    noContainerClassAddFieldCallback :: Maybe ContainerClassRemoveFieldCallback
    noContainerClassAddFieldCallback = Maybe ContainerClassRemoveFieldCallback
    forall a. Maybe a
    Nothing

    -- | Wrap the callback into a `GClosure`.
    genClosure_ContainerClassAddFieldCallback :: MonadIO m => ContainerClassAddFieldCallback -> m (GClosure C_ContainerClassAddFieldCallback)
    genClosure_ContainerClassAddFieldCallback :: forall (m :: * -> *).
    MonadIO m =>
    ContainerClassRemoveFieldCallback
    -> m (GClosure C_ContainerClassSetFocusChildFieldCallback)
    genClosure_ContainerClassAddFieldCallback ContainerClassRemoveFieldCallback
    cb = IO (GClosure C_ContainerClassSetFocusChildFieldCallback)
    -> m (GClosure C_ContainerClassSetFocusChildFieldCallback)
    forall a. IO a -> m a
    forall (m :: * -> *) a. MonadIO m => IO a -> m a
    liftIO (IO (GClosure C_ContainerClassSetFocusChildFieldCallback)
     -> m (GClosure C_ContainerClassSetFocusChildFieldCallback))
    -> IO (GClosure C_ContainerClassSetFocusChildFieldCallback)
    -> m (GClosure C_ContainerClassSetFocusChildFieldCallback)
    forall a b. (a -> b) -> a -> b
    $ do
        let cb' :: C_ContainerClassSetFocusChildFieldCallback
    cb' = Maybe (Ptr (FunPtr C_ContainerClassSetFocusChildFieldCallback))
    -> ContainerClassRemoveFieldCallback
    -> C_ContainerClassSetFocusChildFieldCallback
    wrap_ContainerClassAddFieldCallback Maybe (Ptr (FunPtr C_ContainerClassSetFocusChildFieldCallback))
    forall a. Maybe a
    Nothing ContainerClassRemoveFieldCallback
    cb
        C_ContainerClassSetFocusChildFieldCallback
    -> IO (FunPtr C_ContainerClassSetFocusChildFieldCallback)
    mk_ContainerClassAddFieldCallback C_ContainerClassSetFocusChildFieldCallback
    cb' IO (FunPtr C_ContainerClassSetFocusChildFieldCallback)
    -> (FunPtr C_ContainerClassSetFocusChildFieldCallback
        -> IO (GClosure C_ContainerClassSetFocusChildFieldCallback))
    -> IO (GClosure C_ContainerClassSetFocusChildFieldCallback)
    forall a b. IO a -> (a -> IO b) -> IO b
    forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
    >>= FunPtr C_ContainerClassSetFocusChildFieldCallback
    -> IO (GClosure C_ContainerClassSetFocusChildFieldCallback)
    forall (m :: * -> *) a. MonadIO m => FunPtr a -> m (GClosure a)
    B.GClosure.newGClosure

    -- | Wrap a `ContainerClassAddFieldCallback` into a `C_ContainerClassAddFieldCallback`.
    wrap_ContainerClassAddFieldCallback ::
        Maybe (Ptr (FunPtr C_ContainerClassAddFieldCallback)) ->
        ContainerClassAddFieldCallback ->
        C_ContainerClassAddFieldCallback
    wrap_ContainerClassAddFieldCallback :: Maybe (Ptr (FunPtr C_ContainerClassSetFocusChildFieldCallback))
    -> ContainerClassRemoveFieldCallback
    -> C_ContainerClassSetFocusChildFieldCallback
    wrap_ContainerClassAddFieldCallback Maybe (Ptr (FunPtr C_ContainerClassSetFocusChildFieldCallback))
    gi'funptrptr ContainerClassRemoveFieldCallback
    gi'cb Ptr Container
    container Ptr Widget
    widget = do
        container' <- ((ManagedPtr Container -> Container)
    -> Ptr Container -> IO Container
    forall a b.
    (HasCallStack, GObject a, GObject b) =>
    (ManagedPtr a -> a) -> Ptr b -> IO a
    newObject ManagedPtr Container -> Container
    Gtk.Container.Container) Ptr Container
    container
        widget' <- (newObject Gtk.Widget.Widget) widget
        gi'cb  container' widget'
        maybeReleaseFunPtr gi'funptrptr

    -- callback ColorSelectionChangePaletteWithScreenFunc
    {- Callable
      { returnType = Nothing
      , returnMayBeNull = False
      , returnTransfer = TransferNothing
      , returnDocumentation =
          Documentation { rawDocText = Nothing , sinceVersion = Nothing }
      , args =
          [ Arg
              { argCName = "screen"
              , argType = TInterface Name { namespace = "Gdk" , name = "Screen" }
              , argCType = Just "GdkScreen*"
              , direction = DirectionIn
              , mayBeNull = False
              , argDoc =
                  Documentation { rawDocText = Nothing , sinceVersion = Nothing }
              , argScope = ScopeTypeInvalid
              , argClosure = -1
              , argDestroy = -1
              , argCallerAllocates = False
              , argCallbackUserData = False
              , transfer = TransferNothing
              }
          , Arg
              { argCName = "colors"
              , argType =
                  TCArray
                    False
                    (-1)
                    2
                    (TInterface Name { namespace = "Gdk" , name = "Color" })
              , argCType = Just "const GdkColor*"
              , direction = DirectionIn
              , mayBeNull = False
              , argDoc =
                  Documentation
                    { rawDocText = Just "Array of colors" , sinceVersion = Nothing }
              , argScope = ScopeTypeInvalid
              , argClosure = -1
              , argDestroy = -1
              , argCallerAllocates = False
              , argCallbackUserData = False
              , transfer = TransferNothing
              }
          , Arg
              { argCName = "n_colors"
              , argType = TBasicType TInt
              , argCType = Just "gint"
              , direction = DirectionIn
              , mayBeNull = False
              , argDoc =
                  Documentation
                    { rawDocText = Just "Number of colors in the array"
                    , sinceVersion = Nothing
                    }
              , argScope = ScopeTypeInvalid
              , argClosure = -1
              , argDestroy = -1
              , argCallerAllocates = False
              , argCallbackUserData = False
              , transfer = TransferNothing
              }
          ]
      , skipReturn = False
      , callableThrows = False
      , callableDeprecated =
          Just
            DeprecationInfo
              { deprecatedSinceVersion = Just "3.4"
              , deprecationMessage = Nothing
              }
      , callableDocumentation =
          Documentation { rawDocText = Nothing , sinceVersion = Just "2.2" }
      , callableResolvable = Nothing
      }
    -}
    -- | Type for the callback on the (unwrapped) C side.
    type C_ColorSelectionChangePaletteWithScreenFunc =
        Ptr Gdk.Screen.Screen ->
        Ptr Gdk.Color.Color ->
        Int32 ->
        IO ()

    -- Args: [ Arg
    --           { argCName = "screen"
    --           , argType = TInterface Name { namespace = "Gdk" , name = "Screen" }
    --           , argCType = Just "GdkScreen*"
    --           , direction = DirectionIn
    --           , mayBeNull = False
    --           , argDoc =
    --               Documentation { rawDocText = Nothing , sinceVersion = Nothing }
    --           , argScope = ScopeTypeInvalid
    --           , argClosure = -1
    --           , argDestroy = -1
    --           , argCallerAllocates = False
    --           , argCallbackUserData = False
    --           , transfer = TransferNothing
    --           }
    --       , Arg
    --           { argCName = "colors"
    --           , argType =
    --               TCArray
    --                 False
    --                 (-1)
    --                 2
    --                 (TInterface Name { namespace = "Gdk" , name = "Color" })
    --           , argCType = Just "const GdkColor*"
    --           , direction = DirectionIn
    --           , mayBeNull = False
    --           , argDoc =
    --               Documentation
    --                 { rawDocText = Just "Array of colors" , sinceVersion = Nothing }
    --           , argScope = ScopeTypeInvalid
    --           , argClosure = -1
    --           , argDestroy = -1
    --           , argCallerAllocates = False
    --           , argCallbackUserData = False
    --           , transfer = TransferNothing
    --           }
    --       , Arg
    --           { argCName = "n_colors"
    --           , argType = TBasicType TInt
    --           , argCType = Just "gint"
    --           , direction = DirectionIn
    --           , mayBeNull = False
    --           , argDoc =
    --               Documentation
    --                 { rawDocText = Just "Number of colors in the array"
    --                 , sinceVersion = Nothing
    --                 }
    --           , argScope = ScopeTypeInvalid
    --           , argClosure = -1
    --           , argDestroy = -1
    --           , argCallerAllocates = False
    --           , argCallbackUserData = False
    --           , transfer = TransferNothing
    --           }
    --       ]
    -- Lengths: [ Arg
    --              { argCName = "n_colors"
    --              , argType = TBasicType TInt
    --              , argCType = Just "gint"
    --              , direction = DirectionIn
    --              , mayBeNull = False
    --              , argDoc =
    --                  Documentation
    --                    { rawDocText = Just "Number of colors in the array"
    --                    , sinceVersion = Nothing
    --                    }
    --              , argScope = ScopeTypeInvalid
    --              , argClosure = -1
    --              , argDestroy = -1
    --              , argCallerAllocates = False
    --              , argCallbackUserData = False
    --              , transfer = TransferNothing
    --              }
    --          ]
    -- returnType: Nothing
    -- throws : False
    -- Skip return : False

    foreign import ccall "dynamic" __dynamic_C_ColorSelectionChangePaletteWithScreenFunc :: FunPtr C_ColorSelectionChangePaletteWithScreenFunc -> C_ColorSelectionChangePaletteWithScreenFunc

    -- | Given a pointer to a foreign C function, wrap it into a function callable from Haskell.
    dynamic_ColorSelectionChangePaletteWithScreenFunc ::
        (B.CallStack.HasCallStack, MonadIO m, Gdk.Screen.IsScreen a) =>
        FunPtr C_ColorSelectionChangePaletteWithScreenFunc
        -> a
        -> [Gdk.Color.Color]
        -- ^ /@colors@/: Array of colors
        -> m ()
    dynamic_ColorSelectionChangePaletteWithScreenFunc :: forall (m :: * -> *) a.
    (HasCallStack, MonadIO m, IsScreen a) =>
    FunPtr C_ColorSelectionChangePaletteWithScreenFunc
    -> a -> [Color] -> m ()
    dynamic_ColorSelectionChangePaletteWithScreenFunc FunPtr C_ColorSelectionChangePaletteWithScreenFunc
    __funPtr a
    screen [Color]
    colors = IO () -> m ()
    forall a. IO a -> m a
    forall (m :: * -> *) a. MonadIO m => IO a -> m a
    liftIO (IO () -> m ()) -> IO () -> m ()
    forall a b. (a -> b) -> a -> b
    $ do
        let nColors :: Int32
    nColors = Int -> Int32
    forall a b. (Integral a, Num b) => a -> b
    fromIntegral (Int -> Int32) -> Int -> Int32
    forall a b. (a -> b) -> a -> b
    $ [Color] -> Int
    forall a. [a] -> Int
    forall (t :: * -> *) a. Foldable t => t a -> Int
    P.length [Color]
    colors
        screen' <- a -> IO (Ptr Screen)
    forall a b. (HasCallStack, ManagedPtrNewtype a) => a -> IO (Ptr b)
    unsafeManagedPtrCastPtr a
    screen
        colors' <- mapM unsafeManagedPtrGetPtr colors
        colors'' <- packBlockArray 12 colors'
        (__dynamic_C_ColorSelectionChangePaletteWithScreenFunc __funPtr) screen' colors'' nColors
        touchManagedPtr screen
        mapM_ touchManagedPtr colors
        freeMem colors''
        return ()

    -- | Generate a function pointer callable from C code, from a `C_ColorSelectionChangePaletteWithScreenFunc`.
    foreign import ccall "wrapper"
        mk_ColorSelectionChangePaletteWithScreenFunc :: C_ColorSelectionChangePaletteWithScreenFunc -> IO (FunPtr C_ColorSelectionChangePaletteWithScreenFunc)

    {-# DEPRECATED ColorSelectionChangePaletteWithScreenFunc ["(Since version 3.4)"] #-}
    -- | /No description available in the introspection data./
    --
    -- /Since: 2.2/
    type ColorSelectionChangePaletteWithScreenFunc =
        Gdk.Screen.Screen
        -> [Gdk.Color.Color]
        -- ^ /@colors@/: Array of colors
        -> IO ()

    -- | A convenience synonym for @`Nothing` :: `Maybe` `ColorSelectionChangePaletteWithScreenFunc`@.
    noColorSelectionChangePaletteWithScreenFunc :: Maybe ColorSelectionChangePaletteWithScreenFunc
    noColorSelectionChangePaletteWithScreenFunc :: Maybe ColorSelectionChangePaletteWithScreenFunc
    noColorSelectionChangePaletteWithScreenFunc = Maybe ColorSelectionChangePaletteWithScreenFunc
    forall a. Maybe a
    Nothing

    -- | Wrap the callback into a `GClosure`.
    genClosure_ColorSelectionChangePaletteWithScreenFunc :: MonadIO m => ColorSelectionChangePaletteWithScreenFunc -> m (GClosure C_ColorSelectionChangePaletteWithScreenFunc)
    genClosure_ColorSelectionChangePaletteWithScreenFunc :: forall (m :: * -> *).
    MonadIO m =>
    ColorSelectionChangePaletteWithScreenFunc
    -> m (GClosure C_ColorSelectionChangePaletteWithScreenFunc)
    genClosure_ColorSelectionChangePaletteWithScreenFunc ColorSelectionChangePaletteWithScreenFunc
    cb = IO (GClosure C_ColorSelectionChangePaletteWithScreenFunc)
    -> m (GClosure C_ColorSelectionChangePaletteWithScreenFunc)
    forall a. IO a -> m a
    forall (m :: * -> *) a. MonadIO m => IO a -> m a
    liftIO (IO (GClosure C_ColorSelectionChangePaletteWithScreenFunc)
     -> m (GClosure C_ColorSelectionChangePaletteWithScreenFunc))
    -> IO (GClosure C_ColorSelectionChangePaletteWithScreenFunc)
    -> m (GClosure C_ColorSelectionChangePaletteWithScreenFunc)
    forall a b. (a -> b) -> a -> b
    $ do
        let cb' :: C_ColorSelectionChangePaletteWithScreenFunc
    cb' = Maybe (Ptr (FunPtr C_ColorSelectionChangePaletteWithScreenFunc))
    -> ColorSelectionChangePaletteWithScreenFunc
    -> C_ColorSelectionChangePaletteWithScreenFunc
    wrap_ColorSelectionChangePaletteWithScreenFunc Maybe (Ptr (FunPtr C_ColorSelectionChangePaletteWithScreenFunc))
    forall a. Maybe a
    Nothing ColorSelectionChangePaletteWithScreenFunc
    cb
        C_ColorSelectionChangePaletteWithScreenFunc
    -> IO (FunPtr C_ColorSelectionChangePaletteWithScreenFunc)
    mk_ColorSelectionChangePaletteWithScreenFunc C_ColorSelectionChangePaletteWithScreenFunc
    cb' IO (FunPtr C_ColorSelectionChangePaletteWithScreenFunc)
    -> (FunPtr C_ColorSelectionChangePaletteWithScreenFunc
        -> IO (GClosure C_ColorSelectionChangePaletteWithScreenFunc))
    -> IO (GClosure C_ColorSelectionChangePaletteWithScreenFunc)
    forall a b. IO a -> (a -> IO b) -> IO b
    forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
    >>= FunPtr C_ColorSelectionChangePaletteWithScreenFunc
    -> IO (GClosure C_ColorSelectionChangePaletteWithScreenFunc)
    forall (m :: * -> *) a. MonadIO m => FunPtr a -> m (GClosure a)
    B.GClosure.newGClosure

    -- | Wrap a `ColorSelectionChangePaletteWithScreenFunc` into a `C_ColorSelectionChangePaletteWithScreenFunc`.
    wrap_ColorSelectionChangePaletteWithScreenFunc ::
        Maybe (Ptr (FunPtr C_ColorSelectionChangePaletteWithScreenFunc)) ->
        ColorSelectionChangePaletteWithScreenFunc ->
        C_ColorSelectionChangePaletteWithScreenFunc
    wrap_ColorSelectionChangePaletteWithScreenFunc :: Maybe (Ptr (FunPtr C_ColorSelectionChangePaletteWithScreenFunc))
    -> ColorSelectionChangePaletteWithScreenFunc
    -> C_ColorSelectionChangePaletteWithScreenFunc
    wrap_ColorSelectionChangePaletteWithScreenFunc Maybe (Ptr (FunPtr C_ColorSelectionChangePaletteWithScreenFunc))
    gi'funptrptr ColorSelectionChangePaletteWithScreenFunc
    gi'cb Ptr Screen
    screen Ptr Color
    colors Int32
    nColors = do
        screen' <- ((ManagedPtr Screen -> Screen) -> Ptr Screen -> IO Screen
    forall a b.
    (HasCallStack, GObject a, GObject b) =>
    (ManagedPtr a -> a) -> Ptr b -> IO a
    newObject ManagedPtr Screen -> Screen
    Gdk.Screen.Screen) Ptr Screen
    screen
        colors' <- (unpackBoxedArrayWithLength 12 nColors) colors
        colors'' <- mapM (newBoxed Gdk.Color.Color) colors'
        gi'cb  screen' colors''
        maybeReleaseFunPtr gi'funptrptr

    -- callback ColorSelectionChangePaletteFunc
    {- Callable
      { returnType = Nothing
      , returnMayBeNull = False
      , returnTransfer = TransferNothing
      , returnDocumentation =
          Documentation { rawDocText = Nothing , sinceVersion = Nothing }
      , args =
          [ Arg
              { argCName = "colors"
              , argType =
                  TCArray
                    False
                    (-1)
                    1
                    (TInterface Name { namespace = "Gdk" , name = "Color" })
              , argCType = Just "const GdkColor*"
              , direction = DirectionIn
              , mayBeNull = False
              , argDoc =
                  Documentation
                    { rawDocText = Just "Array of colors" , sinceVersion = Nothing }
              , argScope = ScopeTypeInvalid
              , argClosure = -1
              , argDestroy = -1
              , argCallerAllocates = False
              , argCallbackUserData = False
              , transfer = TransferNothing
              }
          , Arg
              { argCName = "n_colors"
              , argType = TBasicType TInt
              , argCType = Just "gint"
              , direction = DirectionIn
              , mayBeNull = False
              , argDoc =
                  Documentation
                    { rawDocText = Just "Number of colors in the array"
                    , sinceVersion = Nothing
                    }
              , argScope = ScopeTypeInvalid
              , argClosure = -1
              , argDestroy = -1
              , argCallerAllocates = False
              , argCallbackUserData = False
              , transfer = TransferNothing
              }
          ]
      , skipReturn = False
      , callableThrows = False
      , callableDeprecated =
          Just
            DeprecationInfo
              { deprecatedSinceVersion = Just "3.4"
              , deprecationMessage = Nothing
              }
      , callableDocumentation =
          Documentation { rawDocText = Nothing , sinceVersion = Nothing }
      , callableResolvable = Nothing
      }
    -}
    -- | Type for the callback on the (unwrapped) C side.
    type C_ColorSelectionChangePaletteFunc =
        Ptr Gdk.Color.Color ->
        Int32 ->
        IO ()

    -- Args: [ Arg
    --           { argCName = "colors"
    --           , argType =
    --               TCArray
    --                 False
    --                 (-1)
    --                 1
    --                 (TInterface Name { namespace = "Gdk" , name = "Color" })
    --           , argCType = Just "const GdkColor*"
    --           , direction = DirectionIn
    --           , mayBeNull = False
    --           , argDoc =
    --               Documentation
    --                 { rawDocText = Just "Array of colors" , sinceVersion = Nothing }
    --           , argScope = ScopeTypeInvalid
    --           , argClosure = -1
    --           , argDestroy = -1
    --           , argCallerAllocates = False
    --           , argCallbackUserData = False
    --           , transfer = TransferNothing
    --           }
    --       , Arg
    --           { argCName = "n_colors"
    --           , argType = TBasicType TInt
    --           , argCType = Just "gint"
    --           , direction = DirectionIn
    --           , mayBeNull = False
    --           , argDoc =
    --               Documentation
    --                 { rawDocText = Just "Number of colors in the array"
    --                 , sinceVersion = Nothing
    --                 }
    --           , argScope = ScopeTypeInvalid
    --           , argClosure = -1
    --           , argDestroy = -1
    --           , argCallerAllocates = False
    --           , argCallbackUserData = False
    --           , transfer = TransferNothing
    --           }
    --       ]
    -- Lengths: [ Arg
    --              { argCName = "n_colors"
    --              , argType = TBasicType TInt
    --              , argCType = Just "gint"
    --              , direction = DirectionIn
    --              , mayBeNull = False
    --              , argDoc =
    --                  Documentation
    --                    { rawDocText = Just "Number of colors in the array"
    --                    , sinceVersion = Nothing
    --                    }
    --              , argScope = ScopeTypeInvalid
    --              , argClosure = -1
    --              , argDestroy = -1
    --              , argCallerAllocates = False
    --              , argCallbackUserData = False
    --              , transfer = TransferNothing
    --              }
    --          ]
    -- returnType: Nothing
    -- throws : False
    -- Skip return : False

    foreign import ccall "dynamic" __dynamic_C_ColorSelectionChangePaletteFunc :: FunPtr C_ColorSelectionChangePaletteFunc -> C_ColorSelectionChangePaletteFunc

    -- | Given a pointer to a foreign C function, wrap it into a function callable from Haskell.
    dynamic_ColorSelectionChangePaletteFunc ::
        (B.CallStack.HasCallStack, MonadIO m) =>
        FunPtr C_ColorSelectionChangePaletteFunc
        -> [Gdk.Color.Color]
        -- ^ /@colors@/: Array of colors
        -> m ()
    dynamic_ColorSelectionChangePaletteFunc :: forall (m :: * -> *).
    (HasCallStack, MonadIO m) =>
    FunPtr C_ColorSelectionChangePaletteFunc -> [Color] -> m ()
    dynamic_ColorSelectionChangePaletteFunc FunPtr C_ColorSelectionChangePaletteFunc
    __funPtr [Color]
    colors = IO () -> m ()
    forall a. IO a -> m a
    forall (m :: * -> *) a. MonadIO m => IO a -> m a
    liftIO (IO () -> m ()) -> IO () -> m ()
    forall a b. (a -> b) -> a -> b
    $ do
        let nColors :: Int32
    nColors = Int -> Int32
    forall a b. (Integral a, Num b) => a -> b
    fromIntegral (Int -> Int32) -> Int -> Int32
    forall a b. (a -> b) -> a -> b
    $ [Color] -> Int
    forall a. [a] -> Int
    forall (t :: * -> *) a. Foldable t => t a -> Int
    P.length [Color]
    colors
        colors' <- (Color -> IO (Ptr Color)) -> [Color] -> IO [Ptr Color]
    forall (t :: * -> *) (m :: * -> *) a b.
    (Traversable t, Monad m) =>
    (a -> m b) -> t a -> m (t b)
    forall (m :: * -> *) a b. Monad m => (a -> m b) -> [a] -> m [b]
    mapM Color -> IO (Ptr Color)
    forall a. (HasCallStack, ManagedPtrNewtype a) => a -> IO (Ptr a)
    unsafeManagedPtrGetPtr [Color]
    colors
        colors'' <- packBlockArray 12 colors'
        (__dynamic_C_ColorSelectionChangePaletteFunc __funPtr) colors'' nColors
        mapM_ touchManagedPtr colors
        freeMem colors''
        return ()

    -- | Generate a function pointer callable from C code, from a `C_ColorSelectionChangePaletteFunc`.
    foreign import ccall "wrapper"
        mk_ColorSelectionChangePaletteFunc :: C_ColorSelectionChangePaletteFunc -> IO (FunPtr C_ColorSelectionChangePaletteFunc)

    {-# DEPRECATED ColorSelectionChangePaletteFunc ["(Since version 3.4)"] #-}
    -- | /No description available in the introspection data./
    type ColorSelectionChangePaletteFunc =
        [Gdk.Color.Color]
        -- ^ /@colors@/: Array of colors
        -> IO ()

    -- | A convenience synonym for @`Nothing` :: `Maybe` `ColorSelectionChangePaletteFunc`@.
    noColorSelectionChangePaletteFunc :: Maybe ColorSelectionChangePaletteFunc
    noColorSelectionChangePaletteFunc :: Maybe ([Color] -> IO ())
    noColorSelectionChangePaletteFunc = Maybe ([Color] -> IO ())
    forall a. Maybe a
    Nothing

    -- | Wrap the callback into a `GClosure`.
    genClosure_ColorSelectionChangePaletteFunc :: MonadIO m => ColorSelectionChangePaletteFunc -> m (GClosure C_ColorSelectionChangePaletteFunc)
    genClosure_ColorSelectionChangePaletteFunc :: forall (m :: * -> *).
    MonadIO m =>
    ([Color] -> IO ())
    -> m (GClosure C_ColorSelectionChangePaletteFunc)
    genClosure_ColorSelectionChangePaletteFunc [Color] -> IO ()
    cb = IO (GClosure C_ColorSelectionChangePaletteFunc)
    -> m (GClosure C_ColorSelectionChangePaletteFunc)
    forall a. IO a -> m a
    forall (m :: * -> *) a. MonadIO m => IO a -> m a
    liftIO (IO (GClosure C_ColorSelectionChangePaletteFunc)
     -> m (GClosure C_ColorSelectionChangePaletteFunc))
    -> IO (GClosure C_ColorSelectionChangePaletteFunc)
    -> m (GClosure C_ColorSelectionChangePaletteFunc)
    forall a b. (a -> b) -> a -> b
    $ do
        let cb' :: C_ColorSelectionChangePaletteFunc
    cb' = Maybe (Ptr (FunPtr C_ColorSelectionChangePaletteFunc))
    -> ([Color] -> IO ()) -> C_ColorSelectionChangePaletteFunc
    wrap_ColorSelectionChangePaletteFunc Maybe (Ptr (FunPtr C_ColorSelectionChangePaletteFunc))
    forall a. Maybe a
    Nothing [Color] -> IO ()
    cb
        C_ColorSelectionChangePaletteFunc
    -> IO (FunPtr C_ColorSelectionChangePaletteFunc)
    mk_ColorSelectionChangePaletteFunc C_ColorSelectionChangePaletteFunc
    cb' IO (FunPtr C_ColorSelectionChangePaletteFunc)
    -> (FunPtr C_ColorSelectionChangePaletteFunc
        -> IO (GClosure C_ColorSelectionChangePaletteFunc))
    -> IO (GClosure C_ColorSelectionChangePaletteFunc)
    forall a b. IO a -> (a -> IO b) -> IO b
    forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
    >>= FunPtr C_ColorSelectionChangePaletteFunc
    -> IO (GClosure C_ColorSelectionChangePaletteFunc)
    forall (m :: * -> *) a. MonadIO m => FunPtr a -> m (GClosure a)
    B.GClosure.newGClosure

    -- | Wrap a `ColorSelectionChangePaletteFunc` into a `C_ColorSelectionChangePaletteFunc`.
    wrap_ColorSelectionChangePaletteFunc ::
        Maybe (Ptr (FunPtr C_ColorSelectionChangePaletteFunc)) ->
        ColorSelectionChangePaletteFunc ->
        C_ColorSelectionChangePaletteFunc
    wrap_ColorSelectionChangePaletteFunc :: Maybe (Ptr (FunPtr C_ColorSelectionChangePaletteFunc))
    -> ([Color] -> IO ()) -> C_ColorSelectionChangePaletteFunc
    wrap_ColorSelectionChangePaletteFunc Maybe (Ptr (FunPtr C_ColorSelectionChangePaletteFunc))
    gi'funptrptr [Color] -> IO ()
    gi'cb Ptr Color
    colors Int32
    nColors = do
        colors' <- (Int -> Int32 -> Ptr Color -> IO [Ptr Color]
    forall a b.
    (Integral a, GBoxed b) =>
    Int -> a -> Ptr b -> IO [Ptr b]
    unpackBoxedArrayWithLength Int
    12 Int32
    nColors) Ptr Color
    colors
        colors'' <- mapM (newBoxed Gdk.Color.Color) colors'
        gi'cb  colors''
        maybeReleaseFunPtr gi'funptrptr

    -- callback ClipboardURIReceivedFunc
    {- Callable
      { returnType = Nothing
      , returnMayBeNull = False
      , returnTransfer = TransferNothing
      , returnDocumentation =
          Documentation { rawDocText = Nothing , sinceVersion = Nothing }
      , args =
          [ Arg
              { argCName = "clipboard"
              , argType =
                  TInterface Name { namespace = "Gtk" , name = "Clipboard" }
              , argCType = Just "GtkClipboard*"
              , direction = DirectionIn
              , mayBeNull = False
              , argDoc =
                  Documentation
                    { rawDocText = Just "the #GtkClipboard" , sinceVersion = Nothing }
              , argScope = ScopeTypeInvalid
              , argClosure = -1
              , argDestroy = -1
              , argCallerAllocates = False
              , argCallbackUserData = False
              , transfer = TransferNothing
              }
          , Arg
              { argCName = "uris"
              , argType = TCArray True (-1) (-1) (TBasicType TUTF8)
              , argCType = Just "gchar**"
              , direction = DirectionIn
              , mayBeNull = False
              , argDoc =
                  Documentation
                    { rawDocText = Just "the received URIs" , sinceVersion = Nothing }
              , argScope = ScopeTypeInvalid
              , argClosure = -1
              , argDestroy = -1
              , argCallerAllocates = False
              , argCallbackUserData = False
              , transfer = TransferNothing
              }
          , Arg
              { argCName = "data"
              , argType = TBasicType TPtr
              , argCType = Just "gpointer"
              , direction = DirectionIn
              , mayBeNull = True
              , argDoc =
                  Documentation
                    { rawDocText =
                        Just "the @user_data supplied to\n  gtk_clipboard_request_uris()."
                    , sinceVersion = Nothing
                    }
              , argScope = ScopeTypeInvalid
              , argClosure = -1
              , argDestroy = -1
              , argCallerAllocates = False
              , argCallbackUserData = True
              , transfer = TransferNothing
              }
          ]
      , skipReturn = False
      , callableThrows = False
      , callableDeprecated = Nothing
      , callableDocumentation =
          Documentation
            { rawDocText =
                Just
                  "A function to be called when the results of\ngtk_clipboard_request_uris() are received, or when the request\nfails."
            , sinceVersion = Just "2.14"
            }
      , callableResolvable = Nothing
      }
    -}
    -- | Type for the callback on the (unwrapped) C side.
    type C_ClipboardURIReceivedFunc =
        Ptr Gtk.Clipboard.Clipboard ->
        Ptr CString ->
        Ptr () ->
        IO ()

    -- Args: [ Arg
    --           { argCName = "clipboard"
    --           , argType =
    --               TInterface Name { namespace = "Gtk" , name = "Clipboard" }
    --           , argCType = Just "GtkClipboard*"
    --           , direction = DirectionIn
    --           , mayBeNull = False
    --           , argDoc =
    --               Documentation
    --                 { rawDocText = Just "the #GtkClipboard" , sinceVersion = Nothing }
    --           , argScope = ScopeTypeInvalid
    --           , argClosure = -1
    --           , argDestroy = -1
    --           , argCallerAllocates = False
    --           , argCallbackUserData = False
    --           , transfer = TransferNothing
    --           }
    --       , Arg
    --           { argCName = "uris"
    --           , argType = TCArray True (-1) (-1) (TBasicType TUTF8)
    --           , argCType = Just "gchar**"
    --           , direction = DirectionIn
    --           , mayBeNull = False
    --           , argDoc =
    --               Documentation
    --                 { rawDocText = Just "the received URIs" , sinceVersion = Nothing }
    --           , argScope = ScopeTypeInvalid
    --           , argClosure = -1
    --           , argDestroy = -1
    --           , argCallerAllocates = False
    --           , argCallbackUserData = False
    --           , transfer = TransferNothing
    --           }
    --       , Arg
    --           { argCName = "data"
    --           , argType = TBasicType TPtr
    --           , argCType = Just "gpointer"
    --           , direction = DirectionIn
    --           , mayBeNull = True
    --           , argDoc =
    --               Documentation
    --                 { rawDocText =
    --                     Just "the @user_data supplied to\n  gtk_clipboard_request_uris()."
    --                 , sinceVersion = Nothing
    --                 }
    --           , argScope = ScopeTypeInvalid
    --           , argClosure = -1
    --           , argDestroy = -1
    --           , argCallerAllocates = False
    --           , argCallbackUserData = True
    --           , transfer = TransferNothing
    --           }
    --       ]
    -- Lengths: []
    -- returnType: Nothing
    -- throws : False
    -- Skip return : False

    foreign import ccall "dynamic" __dynamic_C_ClipboardURIReceivedFunc :: FunPtr C_ClipboardURIReceivedFunc -> C_ClipboardURIReceivedFunc

    -- | Given a pointer to a foreign C function, wrap it into a function callable from Haskell.
    dynamic_ClipboardURIReceivedFunc ::
        (B.CallStack.HasCallStack, MonadIO m, Gtk.Clipboard.IsClipboard a) =>
        FunPtr C_ClipboardURIReceivedFunc
        -> a
        -- ^ /@clipboard@/: the t'GI.Gtk.Objects.Clipboard.Clipboard'
        -> [T.Text]
        -- ^ /@uris@/: the received URIs
        -> Ptr ()
        -- ^ /@data@/: the /@userData@/ supplied to
        --   'GI.Gtk.Objects.Clipboard.clipboardRequestUris'.
        -> m ()
    dynamic_ClipboardURIReceivedFunc :: forall (m :: * -> *) a.
    (HasCallStack, MonadIO m, IsClipboard a) =>
    FunPtr C_ClipboardURIReceivedFunc -> a -> [Text] -> Ptr () -> m ()
    dynamic_ClipboardURIReceivedFunc FunPtr C_ClipboardURIReceivedFunc
    __funPtr a
    clipboard [Text]
    uris Ptr ()
    data_ = IO () -> m ()
    forall a. IO a -> m a
    forall (m :: * -> *) a. MonadIO m => IO a -> m a
    liftIO (IO () -> m ()) -> IO () -> m ()
    forall a b. (a -> b) -> a -> b
    $ do
        clipboard' <- a -> IO (Ptr Clipboard)
    forall a b. (HasCallStack, ManagedPtrNewtype a) => a -> IO (Ptr b)
    unsafeManagedPtrCastPtr a
    clipboard
        uris' <- packZeroTerminatedUTF8CArray uris
        (__dynamic_C_ClipboardURIReceivedFunc __funPtr) clipboard' uris' data_
        touchManagedPtr clipboard
        mapZeroTerminatedCArray freeMem uris'
        freeMem uris'
        return ()

    -- | Generate a function pointer callable from C code, from a `C_ClipboardURIReceivedFunc`.
    foreign import ccall "wrapper"
        mk_ClipboardURIReceivedFunc :: C_ClipboardURIReceivedFunc -> IO (FunPtr C_ClipboardURIReceivedFunc)

    -- | A function to be called when the results of
    -- 'GI.Gtk.Objects.Clipboard.clipboardRequestUris' are received, or when the request
    -- fails.
    --
    -- /Since: 2.14/
    type ClipboardURIReceivedFunc =
        Gtk.Clipboard.Clipboard
        -- ^ /@clipboard@/: the t'GI.Gtk.Objects.Clipboard.Clipboard'
        -> [T.Text]
        -- ^ /@uris@/: the received URIs
        -> IO ()

    -- | A convenience synonym for @`Nothing` :: `Maybe` `ClipboardURIReceivedFunc`@.
    noClipboardURIReceivedFunc :: Maybe ClipboardURIReceivedFunc
    noClipboardURIReceivedFunc :: Maybe ClipboardURIReceivedFunc
    noClipboardURIReceivedFunc = Maybe ClipboardURIReceivedFunc
    forall a. Maybe a
    Nothing

    -- | A function to be called when the results of
    -- 'GI.Gtk.Objects.Clipboard.clipboardRequestUris' are received, or when the request
    -- fails.
    --
    -- /Since: 2.14/
    type ClipboardURIReceivedFunc_WithClosures =
        Gtk.Clipboard.Clipboard
        -- ^ /@clipboard@/: the t'GI.Gtk.Objects.Clipboard.Clipboard'
        -> [T.Text]
        -- ^ /@uris@/: the received URIs
        -> Ptr ()
        -- ^ /@data@/: the /@userData@/ supplied to
        --   'GI.Gtk.Objects.Clipboard.clipboardRequestUris'.
        -> IO ()

    -- | A convenience synonym for @`Nothing` :: `Maybe` `ClipboardURIReceivedFunc_WithClosures`@.
    noClipboardURIReceivedFunc_WithClosures :: Maybe ClipboardURIReceivedFunc_WithClosures
    noClipboardURIReceivedFunc_WithClosures :: Maybe ClipboardURIReceivedFunc_WithClosures
    noClipboardURIReceivedFunc_WithClosures = Maybe ClipboardURIReceivedFunc_WithClosures
    forall a. Maybe a
    Nothing

    -- | A simple wrapper that ignores the closure arguments.
    drop_closures_ClipboardURIReceivedFunc :: ClipboardURIReceivedFunc -> ClipboardURIReceivedFunc_WithClosures
    drop_closures_ClipboardURIReceivedFunc :: ClipboardURIReceivedFunc -> ClipboardURIReceivedFunc_WithClosures
    drop_closures_ClipboardURIReceivedFunc ClipboardURIReceivedFunc
    _f Clipboard
    clipboard [Text]
    uris Ptr ()
    _ = ClipboardURIReceivedFunc
    _f Clipboard
    clipboard [Text]
    uris

    -- | Wrap the callback into a `GClosure`.
    genClosure_ClipboardURIReceivedFunc :: MonadIO m => ClipboardURIReceivedFunc -> m (GClosure C_ClipboardURIReceivedFunc)
    genClosure_ClipboardURIReceivedFunc :: forall (m :: * -> *).
    MonadIO m =>
    ClipboardURIReceivedFunc -> m (GClosure C_ClipboardURIReceivedFunc)
    genClosure_ClipboardURIReceivedFunc ClipboardURIReceivedFunc
    cb = IO (GClosure C_ClipboardURIReceivedFunc)
    -> m (GClosure C_ClipboardURIReceivedFunc)
    forall a. IO a -> m a
    forall (m :: * -> *) a. MonadIO m => IO a -> m a
    liftIO (IO (GClosure C_ClipboardURIReceivedFunc)
     -> m (GClosure C_ClipboardURIReceivedFunc))
    -> IO (GClosure C_ClipboardURIReceivedFunc)
    -> m (GClosure C_ClipboardURIReceivedFunc)
    forall a b. (a -> b) -> a -> b
    $ do
        let cb' :: ClipboardURIReceivedFunc_WithClosures
    cb' = ClipboardURIReceivedFunc -> ClipboardURIReceivedFunc_WithClosures
    drop_closures_ClipboardURIReceivedFunc ClipboardURIReceivedFunc
    cb
        let cb'' :: C_ClipboardURIReceivedFunc
    cb'' = Maybe (Ptr (FunPtr C_ClipboardURIReceivedFunc))
    -> ClipboardURIReceivedFunc_WithClosures
    -> C_ClipboardURIReceivedFunc
    wrap_ClipboardURIReceivedFunc Maybe (Ptr (FunPtr C_ClipboardURIReceivedFunc))
    forall a. Maybe a
    Nothing ClipboardURIReceivedFunc_WithClosures
    cb'
        C_ClipboardURIReceivedFunc
    -> IO (FunPtr C_ClipboardURIReceivedFunc)
    mk_ClipboardURIReceivedFunc C_ClipboardURIReceivedFunc
    cb'' IO (FunPtr C_ClipboardURIReceivedFunc)
    -> (FunPtr C_ClipboardURIReceivedFunc
        -> IO (GClosure C_ClipboardURIReceivedFunc))
    -> IO (GClosure C_ClipboardURIReceivedFunc)
    forall a b. IO a -> (a -> IO b) -> IO b
    forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
    >>= FunPtr C_ClipboardURIReceivedFunc
    -> IO (GClosure C_ClipboardURIReceivedFunc)
    forall (m :: * -> *) a. MonadIO m => FunPtr a -> m (GClosure a)
    B.GClosure.newGClosure

    -- | Wrap a `ClipboardURIReceivedFunc` into a `C_ClipboardURIReceivedFunc`.
    wrap_ClipboardURIReceivedFunc ::
        Maybe (Ptr (FunPtr C_ClipboardURIReceivedFunc)) ->
        ClipboardURIReceivedFunc_WithClosures ->
        C_ClipboardURIReceivedFunc
    wrap_ClipboardURIReceivedFunc :: Maybe (Ptr (FunPtr C_ClipboardURIReceivedFunc))
    -> ClipboardURIReceivedFunc_WithClosures
    -> C_ClipboardURIReceivedFunc
    wrap_ClipboardURIReceivedFunc Maybe (Ptr (FunPtr C_ClipboardURIReceivedFunc))
    gi'funptrptr ClipboardURIReceivedFunc_WithClosures
    gi'cb Ptr Clipboard
    clipboard Ptr CString
    uris Ptr ()
    data_ = do
        clipboard' <- ((ManagedPtr Clipboard -> Clipboard)
    -> Ptr Clipboard -> IO Clipboard
    forall a b.
    (HasCallStack, GObject a, GObject b) =>
    (ManagedPtr a -> a) -> Ptr b -> IO a
    newObject ManagedPtr Clipboard -> Clipboard
    Gtk.Clipboard.Clipboard) Ptr Clipboard
    clipboard
        uris' <- unpackZeroTerminatedUTF8CArray uris
        gi'cb  clipboard' uris' data_
        maybeReleaseFunPtr gi'funptrptr

    -- callback ClipboardTextReceivedFunc
    {- Callable
      { returnType = Nothing
      , returnMayBeNull = False
      , returnTransfer = TransferNothing
      , returnDocumentation =
          Documentation { rawDocText = Nothing , sinceVersion = Nothing }
      , args =
          [ Arg
              { argCName = "clipboard"
              , argType =
                  TInterface Name { namespace = "Gtk" , name = "Clipboard" }
              , argCType = Just "GtkClipboard*"
              , direction = DirectionIn
              , mayBeNull = False
              , argDoc =
                  Documentation
                    { rawDocText = Just "the #GtkClipboard" , sinceVersion = Nothing }
              , argScope = ScopeTypeInvalid
              , argClosure = -1
              , argDestroy = -1
              , argCallerAllocates = False
              , argCallbackUserData = False
              , transfer = TransferNothing
              }
          , Arg
              { argCName = "text"
              , argType = TBasicType TUTF8
              , argCType = Just "const gchar*"
              , direction = DirectionIn
              , mayBeNull = True
              , argDoc =
                  Documentation
                    { rawDocText =
                        Just
                          "the text received, as a UTF-8 encoded string, or\n  %NULL if retrieving the data failed."
                    , sinceVersion = Nothing
                    }
              , argScope = ScopeTypeInvalid
              , argClosure = -1
              , argDestroy = -1
              , argCallerAllocates = False
              , argCallbackUserData = False
              , transfer = TransferNothing
              }
          , Arg
              { argCName = "data"
              , argType = TBasicType TPtr
              , argCType = Just "gpointer"
              , direction = DirectionIn
              , mayBeNull = True
              , argDoc =
                  Documentation
                    { rawDocText =
                        Just "the @user_data supplied to\n  gtk_clipboard_request_text()."
                    , sinceVersion = Nothing
                    }
              , argScope = ScopeTypeInvalid
              , argClosure = -1
              , argDestroy = -1
              , argCallerAllocates = False
              , argCallbackUserData = True
              , transfer = TransferNothing
              }
          ]
      , skipReturn = False
      , callableThrows = False
      , callableDeprecated = Nothing
      , callableDocumentation =
          Documentation
            { rawDocText =
                Just
                  "A function to be called when the results of gtk_clipboard_request_text()\nare received, or when the request fails."
            , sinceVersion = Nothing
            }
      , callableResolvable = Nothing
      }
    -}
    -- | Type for the callback on the (unwrapped) C side.
    type C_ClipboardTextReceivedFunc =
        Ptr Gtk.Clipboard.Clipboard ->
        CString ->
        Ptr () ->
        IO ()

    -- Args: [ Arg
    --           { argCName = "clipboard"
    --           , argType =
    --               TInterface Name { namespace = "Gtk" , name = "Clipboard" }
    --           , argCType = Just "GtkClipboard*"
    --           , direction = DirectionIn
    --           , mayBeNull = False
    --           , argDoc =
    --               Documentation
    --                 { rawDocText = Just "the #GtkClipboard" , sinceVersion = Nothing }
    --           , argScope = ScopeTypeInvalid
    --           , argClosure = -1
    --           , argDestroy = -1
    --           , argCallerAllocates = False
    --           , argCallbackUserData = False
    --           , transfer = TransferNothing
    --           }
    --       , Arg
    --           { argCName = "text"
    --           , argType = TBasicType TUTF8
    --           , argCType = Just "const gchar*"
    --           , direction = DirectionIn
    --           , mayBeNull = True
    --           , argDoc =
    --               Documentation
    --                 { rawDocText =
    --                     Just
    --                       "the text received, as a UTF-8 encoded string, or\n  %NULL if retrieving the data failed."
    --                 , sinceVersion = Nothing
    --                 }
    --           , argScope = ScopeTypeInvalid
    --           , argClosure = -1
    --           , argDestroy = -1
    --           , argCallerAllocates = False
    --           , argCallbackUserData = False
    --           , transfer = TransferNothing
    --           }
    --       , Arg
    --           { argCName = "data"
    --           , argType = TBasicType TPtr
    --           , argCType = Just "gpointer"
    --           , direction = DirectionIn
    --           , mayBeNull = True
    --           , argDoc =
    --               Documentation
    --                 { rawDocText =
    --                     Just "the @user_data supplied to\n  gtk_clipboard_request_text()."
    --                 , sinceVersion = Nothing
    --                 }
    --           , argScope = ScopeTypeInvalid
    --           , argClosure = -1
    --           , argDestroy = -1
    --           , argCallerAllocates = False
    --           , argCallbackUserData = True
    --           , transfer = TransferNothing
    --           }
    --       ]
    -- Lengths: []
    -- returnType: Nothing
    -- throws : False
    -- Skip return : False

    foreign import ccall "dynamic" __dynamic_C_ClipboardTextReceivedFunc :: FunPtr C_ClipboardTextReceivedFunc -> C_ClipboardTextReceivedFunc

    -- | Given a pointer to a foreign C function, wrap it into a function callable from Haskell.
    dynamic_ClipboardTextReceivedFunc ::
        (B.CallStack.HasCallStack, MonadIO m, Gtk.Clipboard.IsClipboard a) =>
        FunPtr C_ClipboardTextReceivedFunc
        -> a
        -- ^ /@clipboard@/: the t'GI.Gtk.Objects.Clipboard.Clipboard'
        -> Maybe (T.Text)
        -- ^ /@text@/: the text received, as a UTF-8 encoded string, or
        --   'P.Nothing' if retrieving the data failed.
        -> Ptr ()
        -- ^ /@data@/: the /@userData@/ supplied to
        --   'GI.Gtk.Objects.Clipboard.clipboardRequestText'.
        -> m ()
    dynamic_ClipboardTextReceivedFunc :: forall (m :: * -> *) a.
    (HasCallStack, MonadIO m, IsClipboard a) =>
    FunPtr C_ClipboardTextReceivedFunc
    -> a -> Maybe Text -> Ptr () -> m ()
    dynamic_ClipboardTextReceivedFunc FunPtr C_ClipboardTextReceivedFunc
    __funPtr a
    clipboard Maybe Text
    text Ptr ()
    data_ = IO () -> m ()
    forall a. IO a -> m a
    forall (m :: * -> *) a. MonadIO m => IO a -> m a
    liftIO (IO () -> m ()) -> IO () -> m ()
    forall a b. (a -> b) -> a -> b
    $ do
        clipboard' <- a -> IO (Ptr Clipboard)
    forall a b. (HasCallStack, ManagedPtrNewtype a) => a -> IO (Ptr b)
    unsafeManagedPtrCastPtr a
    clipboard
        maybeText <- case text of
            Maybe Text
    Nothing -> CString -> IO CString
    forall a. a -> IO a
    forall (m :: * -> *) a. Monad m => a -> m a
    return CString
    forall a. Ptr a
    FP.nullPtr
            Just Text
    jText -> do
                jText' <- Text -> IO CString
    textToCString Text
    jText
                return jText'
        (__dynamic_C_ClipboardTextReceivedFunc __funPtr) clipboard' maybeText data_
        touchManagedPtr clipboard
        freeMem maybeText
        return ()

    -- | Generate a function pointer callable from C code, from a `C_ClipboardTextReceivedFunc`.
    foreign import ccall "wrapper"
        mk_ClipboardTextReceivedFunc :: C_ClipboardTextReceivedFunc -> IO (FunPtr C_ClipboardTextReceivedFunc)

    -- | A function to be called when the results of 'GI.Gtk.Objects.Clipboard.clipboardRequestText'
    -- are received, or when the request fails.
    type ClipboardTextReceivedFunc =
        Gtk.Clipboard.Clipboard
        -- ^ /@clipboard@/: the t'GI.Gtk.Objects.Clipboard.Clipboard'
        -> Maybe T.Text
        -- ^ /@text@/: the text received, as a UTF-8 encoded string, or
        --   'P.Nothing' if retrieving the data failed.
        -> IO ()

    -- | A convenience synonym for @`Nothing` :: `Maybe` `ClipboardTextReceivedFunc`@.
    noClipboardTextReceivedFunc :: Maybe ClipboardTextReceivedFunc
    noClipboardTextReceivedFunc :: Maybe ClipboardTextReceivedFunc
    noClipboardTextReceivedFunc = Maybe ClipboardTextReceivedFunc
    forall a. Maybe a
    Nothing

    -- | A function to be called when the results of 'GI.Gtk.Objects.Clipboard.clipboardRequestText'
    -- are received, or when the request fails.
    type ClipboardTextReceivedFunc_WithClosures =
        Gtk.Clipboard.Clipboard
        -- ^ /@clipboard@/: the t'GI.Gtk.Objects.Clipboard.Clipboard'
        -> Maybe T.Text
        -- ^ /@text@/: the text received, as a UTF-8 encoded string, or
        --   'P.Nothing' if retrieving the data failed.
        -> Ptr ()
        -- ^ /@data@/: the /@userData@/ supplied to
        --   'GI.Gtk.Objects.Clipboard.clipboardRequestText'.
        -> IO ()

    -- | A convenience synonym for @`Nothing` :: `Maybe` `ClipboardTextReceivedFunc_WithClosures`@.
    noClipboardTextReceivedFunc_WithClosures :: Maybe ClipboardTextReceivedFunc_WithClosures
    noClipboardTextReceivedFunc_WithClosures :: Maybe ClipboardTextReceivedFunc_WithClosures
    noClipboardTextReceivedFunc_WithClosures = Maybe ClipboardTextReceivedFunc_WithClosures
    forall a. Maybe a
    Nothing

    -- | A simple wrapper that ignores the closure arguments.
    drop_closures_ClipboardTextReceivedFunc :: ClipboardTextReceivedFunc -> ClipboardTextReceivedFunc_WithClosures
    drop_closures_ClipboardTextReceivedFunc :: ClipboardTextReceivedFunc -> ClipboardTextReceivedFunc_WithClosures
    drop_closures_ClipboardTextReceivedFunc ClipboardTextReceivedFunc
    _f Clipboard
    clipboard Maybe Text
    text Ptr ()
    _ = ClipboardTextReceivedFunc
    _f Clipboard
    clipboard Maybe Text
    text

    -- | Wrap the callback into a `GClosure`.
    genClosure_ClipboardTextReceivedFunc :: MonadIO m => ClipboardTextReceivedFunc -> m (GClosure C_ClipboardTextReceivedFunc)
    genClosure_ClipboardTextReceivedFunc :: forall (m :: * -> *).
    MonadIO m =>
    ClipboardTextReceivedFunc
    -> m (GClosure C_ClipboardTextReceivedFunc)
    genClosure_ClipboardTextReceivedFunc ClipboardTextReceivedFunc
    cb = IO (GClosure C_ClipboardTextReceivedFunc)
    -> m (GClosure C_ClipboardTextReceivedFunc)
    forall a. IO a -> m a
    forall (m :: * -> *) a. MonadIO m => IO a -> m a
    liftIO (IO (GClosure C_ClipboardTextReceivedFunc)
     -> m (GClosure C_ClipboardTextReceivedFunc))
    -> IO (GClosure C_ClipboardTextReceivedFunc)
    -> m (GClosure C_ClipboardTextReceivedFunc)
    forall a b. (a -> b) -> a -> b
    $ do
        let cb' :: ClipboardTextReceivedFunc_WithClosures
    cb' = ClipboardTextReceivedFunc -> ClipboardTextReceivedFunc_WithClosures
    drop_closures_ClipboardTextReceivedFunc ClipboardTextReceivedFunc
    cb
        let cb'' :: C_ClipboardTextReceivedFunc
    cb'' = Maybe (Ptr (FunPtr C_ClipboardTextReceivedFunc))
    -> ClipboardTextReceivedFunc_WithClosures
    -> C_ClipboardTextReceivedFunc
    wrap_ClipboardTextReceivedFunc Maybe (Ptr (FunPtr C_ClipboardTextReceivedFunc))
    forall a. Maybe a
    Nothing ClipboardTextReceivedFunc_WithClosures
    cb'
        C_ClipboardTextReceivedFunc
    -> IO (FunPtr C_ClipboardTextReceivedFunc)
    mk_ClipboardTextReceivedFunc C_ClipboardTextReceivedFunc
    cb'' IO (FunPtr C_ClipboardTextReceivedFunc)
    -> (FunPtr C_ClipboardTextReceivedFunc
        -> IO (GClosure C_ClipboardTextReceivedFunc))
    -> IO (GClosure C_ClipboardTextReceivedFunc)
    forall a b. IO a -> (a -> IO b) -> IO b
    forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
    >>= FunPtr C_ClipboardTextReceivedFunc
    -> IO (GClosure C_ClipboardTextReceivedFunc)
    forall (m :: * -> *) a. MonadIO m => FunPtr a -> m (GClosure a)
    B.GClosure.newGClosure

    -- | Wrap a `ClipboardTextReceivedFunc` into a `C_ClipboardTextReceivedFunc`.
    wrap_ClipboardTextReceivedFunc ::
        Maybe (Ptr (FunPtr C_ClipboardTextReceivedFunc)) ->
        ClipboardTextReceivedFunc_WithClosures ->
        C_ClipboardTextReceivedFunc
    wrap_ClipboardTextReceivedFunc :: Maybe (Ptr (FunPtr C_ClipboardTextReceivedFunc))
    -> ClipboardTextReceivedFunc_WithClosures
    -> C_ClipboardTextReceivedFunc
    wrap_ClipboardTextReceivedFunc Maybe (Ptr (FunPtr C_ClipboardTextReceivedFunc))
    gi'funptrptr ClipboardTextReceivedFunc_WithClosures
    gi'cb Ptr Clipboard
    clipboard CString
    text Ptr ()
    data_ = do
        clipboard' <- ((ManagedPtr Clipboard -> Clipboard)
    -> Ptr Clipboard -> IO Clipboard
    forall a b.
    (HasCallStack, GObject a, GObject b) =>
    (ManagedPtr a -> a) -> Ptr b -> IO a
    newObject ManagedPtr Clipboard -> Clipboard
    Gtk.Clipboard.Clipboard) Ptr Clipboard
    clipboard
        maybeText <-
            if text == FP.nullPtr
            then return Nothing
            else do
                text' <- cstringToText text
                return $ Just text'
        gi'cb  clipboard' maybeText data_
        maybeReleaseFunPtr gi'funptrptr

    -- callback ClipboardTargetsReceivedFunc
    {- Callable
      { returnType = Nothing
      , returnMayBeNull = False
      , returnTransfer = TransferNothing
      , returnDocumentation =
          Documentation { rawDocText = Nothing , sinceVersion = Nothing }
      , args =
          [ Arg
              { argCName = "clipboard"
              , argType =
                  TInterface Name { namespace = "Gtk" , name = "Clipboard" }
              , argCType = Just "GtkClipboard*"
              , direction = DirectionIn
              , mayBeNull = False
              , argDoc =
                  Documentation
                    { rawDocText = Just "the #GtkClipboard" , sinceVersion = Nothing }
              , argScope = ScopeTypeInvalid
              , argClosure = -1
              , argDestroy = -1
              , argCallerAllocates = False
              , argCallbackUserData = False
              , transfer = TransferNothing
              }
          , Arg
              { argCName = "atoms"
              , argType =
                  TCArray
                    False
                    (-1)
                    2
                    (TInterface Name { namespace = "Gdk" , name = "Atom" })
              , argCType = Just "GdkAtom*"
              , direction = DirectionIn
              , mayBeNull = True
              , argDoc =
                  Documentation
                    { rawDocText =
                        Just
                          "the supported targets,\n  as array of #GdkAtom, or %NULL if retrieving the data failed."
                    , sinceVersion = Nothing
                    }
              , argScope = ScopeTypeInvalid
              , argClosure = -1
              , argDestroy = -1
              , argCallerAllocates = False
              , argCallbackUserData = False
              , transfer = TransferNothing
              }
          , Arg
              { argCName = "n_atoms"
              , argType = TBasicType TInt
              , argCType = Just "gint"
              , direction = DirectionIn
              , mayBeNull = False
              , argDoc =
                  Documentation
                    { rawDocText = Just "the length of the @atoms array."
                    , sinceVersion = Nothing
                    }
              , argScope = ScopeTypeInvalid
              , argClosure = -1
              , argDestroy = -1
              , argCallerAllocates = False
              , argCallbackUserData = False
              , transfer = TransferNothing
              }
          , Arg
              { argCName = "data"
              , argType = TBasicType TPtr
              , argCType = Just "gpointer"
              , direction = DirectionIn
              , mayBeNull = True
              , argDoc =
                  Documentation
                    { rawDocText =
                        Just
                          "the @user_data supplied to\n  gtk_clipboard_request_targets()."
                    , sinceVersion = Nothing
                    }
              , argScope = ScopeTypeInvalid
              , argClosure = -1
              , argDestroy = -1
              , argCallerAllocates = False
              , argCallbackUserData = True
              , transfer = TransferNothing
              }
          ]
      , skipReturn = False
      , callableThrows = False
      , callableDeprecated = Nothing
      , callableDocumentation =
          Documentation
            { rawDocText =
                Just
                  "A function to be called when the results of gtk_clipboard_request_targets()\nare received, or when the request fails."
            , sinceVersion = Just "2.4"
            }
      , callableResolvable = Nothing
      }
    -}
    -- | Type for the callback on the (unwrapped) C side.
    type C_ClipboardTargetsReceivedFunc =
        Ptr Gtk.Clipboard.Clipboard ->
        Ptr (Ptr Gdk.Atom.Atom) ->
        Int32 ->
        Ptr () ->
        IO ()

    -- Args: [ Arg
    --           { argCName = "clipboard"
    --           , argType =
    --               TInterface Name { namespace = "Gtk" , name = "Clipboard" }
    --           , argCType = Just "GtkClipboard*"
    --           , direction = DirectionIn
    --           , mayBeNull = False
    --           , argDoc =
    --               Documentation
    --                 { rawDocText = Just "the #GtkClipboard" , sinceVersion = Nothing }
    --           , argScope = ScopeTypeInvalid
    --           , argClosure = -1
    --           , argDestroy = -1
    --           , argCallerAllocates = False
    --           , argCallbackUserData = False
    --           , transfer = TransferNothing
    --           }
    --       , Arg
    --           { argCName = "atoms"
    --           , argType =
    --               TCArray
    --                 False
    --                 (-1)
    --                 2
    --                 (TInterface Name { namespace = "Gdk" , name = "Atom" })
    --           , argCType = Just "GdkAtom*"
    --           , direction = DirectionIn
    --           , mayBeNull = True
    --           , argDoc =
    --               Documentation
    --                 { rawDocText =
    --                     Just
    --                       "the supported targets,\n  as array of #GdkAtom, or %NULL if retrieving the data failed."
    --                 , sinceVersion = Nothing
    --                 }
    --           , argScope = ScopeTypeInvalid
    --           , argClosure = -1
    --           , argDestroy = -1
    --           , argCallerAllocates = False
    --           , argCallbackUserData = False
    --           , transfer = TransferNothing
    --           }
    --       , Arg
    --           { argCName = "n_atoms"
    --           , argType = TBasicType TInt
    --           , argCType = Just "gint"
    --           , direction = DirectionIn
    --           , mayBeNull = False
    --           , argDoc =
    --               Documentation
    --                 { rawDocText = Just "the length of the @atoms array."
    --                 , sinceVersion = Nothing
    --                 }
    --           , argScope = ScopeTypeInvalid
    --           , argClosure = -1
    --           , argDestroy = -1
    --           , argCallerAllocates = False
    --           , argCallbackUserData = False
    --           , transfer = TransferNothing
    --           }
    --       , Arg
    --           { argCName = "data"
    --           , argType = TBasicType TPtr
    --           , argCType = Just "gpointer"
    --           , direction = DirectionIn
    --           , mayBeNull = True
    --           , argDoc =
    --               Documentation
    --                 { rawDocText =
    --                     Just
    --                       "the @user_data supplied to\n  gtk_clipboard_request_targets()."
    --                 , sinceVersion = Nothing
    --                 }
    --           , argScope = ScopeTypeInvalid
    --           , argClosure = -1
    --           , argDestroy = -1
    --           , argCallerAllocates = False
    --           , argCallbackUserData = True
    --           , transfer = TransferNothing
    --           }
    --       ]
    -- Lengths: [ Arg
    --              { argCName = "n_atoms"
    --              , argType = TBasicType TInt
    --              , argCType = Just "gint"
    --              , direction = DirectionIn
    --              , mayBeNull = False
    --              , argDoc =
    --                  Documentation
    --                    { rawDocText = Just "the length of the @atoms array."
    --                    , sinceVersion = Nothing
    --                    }
    --              , argScope = ScopeTypeInvalid
    --              , argClosure = -1
    --              , argDestroy = -1
    --              , argCallerAllocates = False
    --              , argCallbackUserData = False
    --              , transfer = TransferNothing
    --              }
    --          ]
    -- returnType: Nothing
    -- throws : False
    -- Skip return : False

    foreign import ccall "dynamic" __dynamic_C_ClipboardTargetsReceivedFunc :: FunPtr C_ClipboardTargetsReceivedFunc -> C_ClipboardTargetsReceivedFunc

    -- | Given a pointer to a foreign C function, wrap it into a function callable from Haskell.
    dynamic_ClipboardTargetsReceivedFunc ::
        (B.CallStack.HasCallStack, MonadIO m, Gtk.Clipboard.IsClipboard a) =>
        FunPtr C_ClipboardTargetsReceivedFunc
        -> a
        -- ^ /@clipboard@/: the t'GI.Gtk.Objects.Clipboard.Clipboard'
        -> Maybe ([Gdk.Atom.Atom])
        -- ^ /@atoms@/: the supported targets,
        --   as array of t'GI.Gdk.Structs.Atom.Atom', or 'P.Nothing' if retrieving the data failed.
        -> Ptr ()
        -- ^ /@data@/: the /@userData@/ supplied to
        --   'GI.Gtk.Objects.Clipboard.clipboardRequestTargets'.
        -> m ()
    dynamic_ClipboardTargetsReceivedFunc :: forall (m :: * -> *) a.
    (HasCallStack, MonadIO m, IsClipboard a) =>
    FunPtr C_ClipboardTargetsReceivedFunc
    -> a -> Maybe [Atom] -> Ptr () -> m ()
    dynamic_ClipboardTargetsReceivedFunc FunPtr C_ClipboardTargetsReceivedFunc
    __funPtr a
    clipboard Maybe [Atom]
    atoms Ptr ()
    data_ = IO () -> m ()
    forall a. IO a -> m a
    forall (m :: * -> *) a. MonadIO m => IO a -> m a
    liftIO (IO () -> m ()) -> IO () -> m ()
    forall a b. (a -> b) -> a -> b
    $ do
        let nAtoms :: Int32
    nAtoms = case Maybe [Atom]
    atoms of
                Maybe [Atom]
    Nothing -> Int32
    0
                Just [Atom]
    jAtoms -> Int -> Int32
    forall a b. (Integral a, Num b) => a -> b
    fromIntegral (Int -> Int32) -> Int -> Int32
    forall a b. (a -> b) -> a -> b
    $ [Atom] -> Int
    forall a. [a] -> Int
    forall (t :: * -> *) a. Foldable t => t a -> Int
    P.length [Atom]
    jAtoms
        clipboard' <- a -> IO (Ptr Clipboard)
    forall a b. (HasCallStack, ManagedPtrNewtype a) => a -> IO (Ptr b)
    unsafeManagedPtrCastPtr a
    clipboard
        maybeAtoms <- case atoms of
            Maybe [Atom]
    Nothing -> Ptr (Ptr Atom) -> IO (Ptr (Ptr Atom))
    forall a. a -> IO a
    forall (m :: * -> *) a. Monad m => a -> m a
    return Ptr (Ptr Atom)
    forall a. Ptr a
    FP.nullPtr
            Just [Atom]
    jAtoms -> do
                jAtoms' <- (Atom -> IO (Ptr Atom)) -> [Atom] -> IO [Ptr Atom]
    forall (t :: * -> *) (m :: * -> *) a b.
    (Traversable t, Monad m) =>
    (a -> m b) -> t a -> m (t b)
    forall (m :: * -> *) a b. Monad m => (a -> m b) -> [a] -> m [b]
    mapM Atom -> IO (Ptr Atom)
    forall a. (HasCallStack, ManagedPtrNewtype a) => a -> IO (Ptr a)
    unsafeManagedPtrGetPtr [Atom]
    jAtoms
                jAtoms'' <- packPtrArray jAtoms'
                return jAtoms''
        (__dynamic_C_ClipboardTargetsReceivedFunc __funPtr) clipboard' maybeAtoms nAtoms data_
        touchManagedPtr clipboard
        whenJust atoms (mapM_ touchManagedPtr)
        freeMem maybeAtoms
        return ()

    -- | Generate a function pointer callable from C code, from a `C_ClipboardTargetsReceivedFunc`.
    foreign import ccall "wrapper"
        mk_ClipboardTargetsReceivedFunc :: C_ClipboardTargetsReceivedFunc -> IO (FunPtr C_ClipboardTargetsReceivedFunc)

    -- | A function to be called when the results of 'GI.Gtk.Objects.Clipboard.clipboardRequestTargets'
    -- are received, or when the request fails.
    --
    -- /Since: 2.4/
    type ClipboardTargetsReceivedFunc =
        Gtk.Clipboard.Clipboard
        -- ^ /@clipboard@/: the t'GI.Gtk.Objects.Clipboard.Clipboard'
        -> Maybe [Gdk.Atom.Atom]
        -- ^ /@atoms@/: the supported targets,
        --   as array of t'GI.Gdk.Structs.Atom.Atom', or 'P.Nothing' if retrieving the data failed.
        -> IO ()

    -- | A convenience synonym for @`Nothing` :: `Maybe` `ClipboardTargetsReceivedFunc`@.
    noClipboardTargetsReceivedFunc :: Maybe ClipboardTargetsReceivedFunc
    noClipboardTargetsReceivedFunc :: Maybe ClipboardTargetsReceivedFunc
    noClipboardTargetsReceivedFunc = Maybe ClipboardTargetsReceivedFunc
    forall a. Maybe a
    Nothing

    -- | A function to be called when the results of 'GI.Gtk.Objects.Clipboard.clipboardRequestTargets'
    -- are received, or when the request fails.
    --
    -- /Since: 2.4/
    type ClipboardTargetsReceivedFunc_WithClosures =
        Gtk.Clipboard.Clipboard
        -- ^ /@clipboard@/: the t'GI.Gtk.Objects.Clipboard.Clipboard'
        -> Maybe [Gdk.Atom.Atom]
        -- ^ /@atoms@/: the supported targets,
        --   as array of t'GI.Gdk.Structs.Atom.Atom', or 'P.Nothing' if retrieving the data failed.
        -> Ptr ()
        -- ^ /@data@/: the /@userData@/ supplied to
        --   'GI.Gtk.Objects.Clipboard.clipboardRequestTargets'.
        -> IO ()

    -- | A convenience synonym for @`Nothing` :: `Maybe` `ClipboardTargetsReceivedFunc_WithClosures`@.
    noClipboardTargetsReceivedFunc_WithClosures :: Maybe ClipboardTargetsReceivedFunc_WithClosures
    noClipboardTargetsReceivedFunc_WithClosures :: Maybe ClipboardTargetsReceivedFunc_WithClosures
    noClipboardTargetsReceivedFunc_WithClosures = Maybe ClipboardTargetsReceivedFunc_WithClosures
    forall a. Maybe a
    Nothing

    -- | A simple wrapper that ignores the closure arguments.
    drop_closures_ClipboardTargetsReceivedFunc :: ClipboardTargetsReceivedFunc -> ClipboardTargetsReceivedFunc_WithClosures
    drop_closures_ClipboardTargetsReceivedFunc :: ClipboardTargetsReceivedFunc
    -> ClipboardTargetsReceivedFunc_WithClosures
    drop_closures_ClipboardTargetsReceivedFunc ClipboardTargetsReceivedFunc
    _f Clipboard
    clipboard Maybe [Atom]
    atoms Ptr ()
    _ = ClipboardTargetsReceivedFunc
    _f Clipboard
    clipboard Maybe [Atom]
    atoms

    -- | Wrap the callback into a `GClosure`.
    genClosure_ClipboardTargetsReceivedFunc :: MonadIO m => ClipboardTargetsReceivedFunc -> m (GClosure C_ClipboardTargetsReceivedFunc)
    genClosure_ClipboardTargetsReceivedFunc :: forall (m :: * -> *).
    MonadIO m =>
    ClipboardTargetsReceivedFunc
    -> m (GClosure C_ClipboardTargetsReceivedFunc)
    genClosure_ClipboardTargetsReceivedFunc ClipboardTargetsReceivedFunc
    cb = IO (GClosure C_ClipboardTargetsReceivedFunc)
    -> m (GClosure C_ClipboardTargetsReceivedFunc)
    forall a. IO a -> m a
    forall (m :: * -> *) a. MonadIO m => IO a -> m a
    liftIO (IO (GClosure C_ClipboardTargetsReceivedFunc)
     -> m (GClosure C_ClipboardTargetsReceivedFunc))
    -> IO (GClosure C_ClipboardTargetsReceivedFunc)
    -> m (GClosure C_ClipboardTargetsReceivedFunc)
    forall a b. (a -> b) -> a -> b
    $ do
        let cb' :: ClipboardTargetsReceivedFunc_WithClosures
    cb' = ClipboardTargetsReceivedFunc
    -> ClipboardTargetsReceivedFunc_WithClosures
    drop_closures_ClipboardTargetsReceivedFunc ClipboardTargetsReceivedFunc
    cb
        let cb'' :: C_ClipboardTargetsReceivedFunc
    cb'' = Maybe (Ptr (FunPtr C_ClipboardTargetsReceivedFunc))
    -> ClipboardTargetsReceivedFunc_WithClosures
    -> C_ClipboardTargetsReceivedFunc
    wrap_ClipboardTargetsReceivedFunc Maybe (Ptr (FunPtr C_ClipboardTargetsReceivedFunc))
    forall a. Maybe a
    Nothing ClipboardTargetsReceivedFunc_WithClosures
    cb'
        C_ClipboardTargetsReceivedFunc
    -> IO (FunPtr C_ClipboardTargetsReceivedFunc)
    mk_ClipboardTargetsReceivedFunc C_ClipboardTargetsReceivedFunc
    cb'' IO (FunPtr C_ClipboardTargetsReceivedFunc)
    -> (FunPtr C_ClipboardTargetsReceivedFunc
        -> IO (GClosure C_ClipboardTargetsReceivedFunc))
    -> IO (GClosure C_ClipboardTargetsReceivedFunc)
    forall a b. IO a -> (a -> IO b) -> IO b
    forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
    >>= FunPtr C_ClipboardTargetsReceivedFunc
    -> IO (GClosure C_ClipboardTargetsReceivedFunc)
    forall (m :: * -> *) a. MonadIO m => FunPtr a -> m (GClosure a)
    B.GClosure.newGClosure

    -- | Wrap a `ClipboardTargetsReceivedFunc` into a `C_ClipboardTargetsReceivedFunc`.
    wrap_ClipboardTargetsReceivedFunc ::
        Maybe (Ptr (FunPtr C_ClipboardTargetsReceivedFunc)) ->
        ClipboardTargetsReceivedFunc_WithClosures ->
        C_ClipboardTargetsReceivedFunc
    wrap_ClipboardTargetsReceivedFunc :: Maybe (Ptr (FunPtr C_ClipboardTargetsReceivedFunc))
    -> ClipboardTargetsReceivedFunc_WithClosures
    -> C_ClipboardTargetsReceivedFunc
    wrap_ClipboardTargetsReceivedFunc Maybe (Ptr (FunPtr C_ClipboardTargetsReceivedFunc))
    gi'funptrptr ClipboardTargetsReceivedFunc_WithClosures
    gi'cb Ptr Clipboard
    clipboard Ptr (Ptr Atom)
    atoms Int32
    nAtoms Ptr ()
    data_ = do
        clipboard' <- ((ManagedPtr Clipboard -> Clipboard)
    -> Ptr Clipboard -> IO Clipboard
    forall a b.
    (HasCallStack, GObject a, GObject b) =>
    (ManagedPtr a -> a) -> Ptr b -> IO a
    newObject ManagedPtr Clipboard -> Clipboard
    Gtk.Clipboard.Clipboard) Ptr Clipboard
    clipboard
        maybeAtoms <-
            if atoms == FP.nullPtr
            then return Nothing
            else do
                atoms' <- (unpackPtrArrayWithLength nAtoms) atoms
                atoms'' <- mapM (newPtr Gdk.Atom.Atom) atoms'
                return $ Just atoms''
        gi'cb  clipboard' maybeAtoms data_
        maybeReleaseFunPtr gi'funptrptr

    -- callback ClipboardRichTextReceivedFunc
    {- Callable
      { returnType = Nothing
      , returnMayBeNull = False
      , returnTransfer = TransferNothing
      , returnDocumentation =
          Documentation { rawDocText = Nothing , sinceVersion = Nothing }
      , args =
          [ Arg
              { argCName = "clipboard"
              , argType =
                  TInterface Name { namespace = "Gtk" , name = "Clipboard" }
              , argCType = Just "GtkClipboard*"
              , direction = DirectionIn
              , mayBeNull = False
              , argDoc =
                  Documentation
                    { rawDocText = Just "the #GtkClipboard" , sinceVersion = Nothing }
              , argScope = ScopeTypeInvalid
              , argClosure = -1
              , argDestroy = -1
              , argCallerAllocates = False
              , argCallbackUserData = False
              , transfer = TransferNothing
              }
          , Arg
              { argCName = "format"
              , argType = TInterface Name { namespace = "Gdk" , name = "Atom" }
              , argCType = Just "GdkAtom"
              , direction = DirectionIn
              , mayBeNull = False
              , argDoc =
                  Documentation
                    { rawDocText = Just "The format of the rich text"
                    , sinceVersion = Nothing
                    }
              , argScope = ScopeTypeInvalid
              , argClosure = -1
              , argDestroy = -1
              , argCallerAllocates = False
              , argCallbackUserData = False
              , transfer = TransferNothing
              }
          , Arg
              { argCName = "text"
              , argType = TBasicType TUTF8
              , argCType = Just "const guint8*"
              , direction = DirectionIn
              , mayBeNull = True
              , argDoc =
                  Documentation
                    { rawDocText =
                        Just
                          "the rich text received, as\n  a UTF-8 encoded string, or %NULL if retrieving the data failed."
                    , sinceVersion = Nothing
                    }
              , argScope = ScopeTypeInvalid
              , argClosure = -1
              , argDestroy = -1
              , argCallerAllocates = False
              , argCallbackUserData = False
              , transfer = TransferNothing
              }
          , Arg
              { argCName = "length"
              , argType = TBasicType TSize
              , argCType = Just "gsize"
              , direction = DirectionIn
              , mayBeNull = False
              , argDoc =
                  Documentation
                    { rawDocText = Just "Length of the text."
                    , sinceVersion = Nothing
                    }
              , argScope = ScopeTypeInvalid
              , argClosure = -1
              , argDestroy = -1
              , argCallerAllocates = False
              , argCallbackUserData = False
              , transfer = TransferNothing
              }
          , Arg
              { argCName = "data"
              , argType = TBasicType TPtr
              , argCType = Just "gpointer"
              , direction = DirectionIn
              , mayBeNull = True
              , argDoc =
                  Documentation
                    { rawDocText =
                        Just
                          "the @user_data supplied to\n  gtk_clipboard_request_rich_text()."
                    , sinceVersion = Nothing
                    }
              , argScope = ScopeTypeInvalid
              , argClosure = -1
              , argDestroy = -1
              , argCallerAllocates = False
              , argCallbackUserData = True
              , transfer = TransferNothing
              }
          ]
      , skipReturn = False
      , callableThrows = False
      , callableDeprecated = Nothing
      , callableDocumentation =
          Documentation
            { rawDocText =
                Just
                  "A function to be called when the results of\ngtk_clipboard_request_rich_text() are received, or when the request\nfails."
            , sinceVersion = Just "2.10"
            }
      , callableResolvable = Nothing
      }
    -}
    -- | Type for the callback on the (unwrapped) C side.
    type C_ClipboardRichTextReceivedFunc =
        Ptr Gtk.Clipboard.Clipboard ->
        Ptr Gdk.Atom.Atom ->
        CString ->
        FCT.CSize ->
        Ptr () ->
        IO ()

    -- Args: [ Arg
    --           { argCName = "clipboard"
    --           , argType =
    --               TInterface Name { namespace = "Gtk" , name = "Clipboard" }
    --           , argCType = Just "GtkClipboard*"
    --           , direction = DirectionIn
    --           , mayBeNull = False
    --           , argDoc =
    --               Documentation
    --                 { rawDocText = Just "the #GtkClipboard" , sinceVersion = Nothing }
    --           , argScope = ScopeTypeInvalid
    --           , argClosure = -1
    --           , argDestroy = -1
    --           , argCallerAllocates = False
    --           , argCallbackUserData = False
    --           , transfer = TransferNothing
    --           }
    --       , Arg
    --           { argCName = "format"
    --           , argType = TInterface Name { namespace = "Gdk" , name = "Atom" }
    --           , argCType = Just "GdkAtom"
    --           , direction = DirectionIn
    --           , mayBeNull = False
    --           , argDoc =
    --               Documentation
    --                 { rawDocText = Just "The format of the rich text"
    --                 , sinceVersion = Nothing
    --                 }
    --           , argScope = ScopeTypeInvalid
    --           , argClosure = -1
    --           , argDestroy = -1
    --           , argCallerAllocates = False
    --           , argCallbackUserData = False
    --           , transfer = TransferNothing
    --           }
    --       , Arg
    --           { argCName = "text"
    --           , argType = TBasicType TUTF8
    --           , argCType = Just "const guint8*"
    --           , direction = DirectionIn
    --           , mayBeNull = True
    --           , argDoc =
    --               Documentation
    --                 { rawDocText =
    --                     Just
    --                       "the rich text received, as\n  a UTF-8 encoded string, or %NULL if retrieving the data failed."
    --                 , sinceVersion = Nothing
    --                 }
    --           , argScope = ScopeTypeInvalid
    --           , argClosure = -1
    --           , argDestroy = -1
    --           , argCallerAllocates = False
    --           , argCallbackUserData = False
    --           , transfer = TransferNothing
    --           }
    --       , Arg
    --           { argCName = "length"
    --           , argType = TBasicType TSize
    --           , argCType = Just "gsize"
    --           , direction = DirectionIn
    --           , mayBeNull = False
    --           , argDoc =
    --               Documentation
    --                 { rawDocText = Just "Length of the text."
    --                 , sinceVersion = Nothing
    --                 }
    --           , argScope = ScopeTypeInvalid
    --           , argClosure = -1
    --           , argDestroy = -1
    --           , argCallerAllocates = False
    --           , argCallbackUserData = False
    --           , transfer = TransferNothing
    --           }
    --       , Arg
    --           { argCName = "data"
    --           , argType = TBasicType TPtr
    --           , argCType = Just "gpointer"
    --           , direction = DirectionIn
    --           , mayBeNull = True
    --           , argDoc =
    --               Documentation
    --                 { rawDocText =
    --                     Just
    --                       "the @user_data supplied to\n  gtk_clipboard_request_rich_text()."
    --                 , sinceVersion = Nothing
    --                 }
    --           , argScope = ScopeTypeInvalid
    --           , argClosure = -1
    --           , argDestroy = -1
    --           , argCallerAllocates = False
    --           , argCallbackUserData = True
    --           , transfer = TransferNothing
    --           }
    --       ]
    -- Lengths: []
    -- returnType: Nothing
    -- throws : False
    -- Skip return : False

    foreign import ccall "dynamic" __dynamic_C_ClipboardRichTextReceivedFunc :: FunPtr C_ClipboardRichTextReceivedFunc -> C_ClipboardRichTextReceivedFunc

    -- | Given a pointer to a foreign C function, wrap it into a function callable from Haskell.
    dynamic_ClipboardRichTextReceivedFunc ::
        (B.CallStack.HasCallStack, MonadIO m, Gtk.Clipboard.IsClipboard a) =>
        FunPtr C_ClipboardRichTextReceivedFunc
        -> a
        -- ^ /@clipboard@/: the t'GI.Gtk.Objects.Clipboard.Clipboard'
        -> Gdk.Atom.Atom
        -- ^ /@format@/: The format of the rich text
        -> Maybe (T.Text)
        -- ^ /@text@/: the rich text received, as
        --   a UTF-8 encoded string, or 'P.Nothing' if retrieving the data failed.
        -> FCT.CSize
        -- ^ /@length@/: Length of the text.
        -> Ptr ()
        -- ^ /@data@/: the /@userData@/ supplied to
        --   'GI.Gtk.Objects.Clipboard.clipboardRequestRichText'.
        -> m ()
    dynamic_ClipboardRichTextReceivedFunc :: forall (m :: * -> *) a.
    (HasCallStack, MonadIO m, IsClipboard a) =>
    FunPtr C_ClipboardRichTextReceivedFunc
    -> a -> Atom -> Maybe Text -> CSize -> Ptr () -> m ()
    dynamic_ClipboardRichTextReceivedFunc FunPtr C_ClipboardRichTextReceivedFunc
    __funPtr a
    clipboard Atom
    format Maybe Text
    text CSize
    length_ Ptr ()
    data_ = IO () -> m ()
    forall a. IO a -> m a
    forall (m :: * -> *) a. MonadIO m => IO a -> m a
    liftIO (IO () -> m ()) -> IO () -> m ()
    forall a b. (a -> b) -> a -> b
    $ do
        clipboard' <- a -> IO (Ptr Clipboard)
    forall a b. (HasCallStack, ManagedPtrNewtype a) => a -> IO (Ptr b)
    unsafeManagedPtrCastPtr a
    clipboard
        format' <- unsafeManagedPtrGetPtr format
        maybeText <- case text of
            Maybe Text
    Nothing -> CString -> IO CString
    forall a. a -> IO a
    forall (m :: * -> *) a. Monad m => a -> m a
    return CString
    forall a. Ptr a
    FP.nullPtr
            Just Text
    jText -> do
                jText' <- Text -> IO CString
    textToCString Text
    jText
                return jText'
        (__dynamic_C_ClipboardRichTextReceivedFunc __funPtr) clipboard' format' maybeText length_ data_
        touchManagedPtr clipboard
        touchManagedPtr format
        freeMem maybeText
        return ()

    -- | Generate a function pointer callable from C code, from a `C_ClipboardRichTextReceivedFunc`.
    foreign import ccall "wrapper"
        mk_ClipboardRichTextReceivedFunc :: C_ClipboardRichTextReceivedFunc -> IO (FunPtr C_ClipboardRichTextReceivedFunc)

    -- | A function to be called when the results of
    -- 'GI.Gtk.Objects.Clipboard.clipboardRequestRichText' are received, or when the request
    -- fails.
    --
    -- /Since: 2.10/
    type ClipboardRichTextReceivedFunc =
        Gtk.Clipboard.Clipboard
        -- ^ /@clipboard@/: the t'GI.Gtk.Objects.Clipboard.Clipboard'
        -> Gdk.Atom.Atom
        -- ^ /@format@/: The format of the rich text
        -> Maybe T.Text
        -- ^ /@text@/: the rich text received, as
        --   a UTF-8 encoded string, or 'P.Nothing' if retrieving the data failed.
        -> FCT.CSize
        -- ^ /@length@/: Length of the text.
        -> IO ()

    -- | A convenience synonym for @`Nothing` :: `Maybe` `ClipboardRichTextReceivedFunc`@.
    noClipboardRichTextReceivedFunc :: Maybe ClipboardRichTextReceivedFunc
    noClipboardRichTextReceivedFunc :: Maybe ClipboardRichTextReceivedFunc
    noClipboardRichTextReceivedFunc = Maybe ClipboardRichTextReceivedFunc
    forall a. Maybe a
    Nothing

    -- | A function to be called when the results of
    -- 'GI.Gtk.Objects.Clipboard.clipboardRequestRichText' are received, or when the request
    -- fails.
    --
    -- /Since: 2.10/
    type ClipboardRichTextReceivedFunc_WithClosures =
        Gtk.Clipboard.Clipboard
        -- ^ /@clipboard@/: the t'GI.Gtk.Objects.Clipboard.Clipboard'
        -> Gdk.Atom.Atom
        -- ^ /@format@/: The format of the rich text
        -> Maybe T.Text
        -- ^ /@text@/: the rich text received, as
        --   a UTF-8 encoded string, or 'P.Nothing' if retrieving the data failed.
        -> FCT.CSize
        -- ^ /@length@/: Length of the text.
        -> Ptr ()
        -- ^ /@data@/: the /@userData@/ supplied to
        --   'GI.Gtk.Objects.Clipboard.clipboardRequestRichText'.
        -> IO ()

    -- | A convenience synonym for @`Nothing` :: `Maybe` `ClipboardRichTextReceivedFunc_WithClosures`@.
    noClipboardRichTextReceivedFunc_WithClosures :: Maybe ClipboardRichTextReceivedFunc_WithClosures
    noClipboardRichTextReceivedFunc_WithClosures :: Maybe ClipboardRichTextReceivedFunc_WithClosures
    noClipboardRichTextReceivedFunc_WithClosures = Maybe ClipboardRichTextReceivedFunc_WithClosures
    forall a. Maybe a
    Nothing

    -- | A simple wrapper that ignores the closure arguments.
    drop_closures_ClipboardRichTextReceivedFunc :: ClipboardRichTextReceivedFunc -> ClipboardRichTextReceivedFunc_WithClosures
    drop_closures_ClipboardRichTextReceivedFunc :: ClipboardRichTextReceivedFunc
    -> ClipboardRichTextReceivedFunc_WithClosures
    drop_closures_ClipboardRichTextReceivedFunc ClipboardRichTextReceivedFunc
    _f Clipboard
    clipboard Atom
    format Maybe Text
    text CSize
    length_ Ptr ()
    _ = ClipboardRichTextReceivedFunc
    _f Clipboard
    clipboard Atom
    format Maybe Text
    text CSize
    length_

    -- | Wrap the callback into a `GClosure`.
    genClosure_ClipboardRichTextReceivedFunc :: MonadIO m => ClipboardRichTextReceivedFunc -> m (GClosure C_ClipboardRichTextReceivedFunc)
    genClosure_ClipboardRichTextReceivedFunc :: forall (m :: * -> *).
    MonadIO m =>
    ClipboardRichTextReceivedFunc
    -> m (GClosure C_ClipboardRichTextReceivedFunc)
    genClosure_ClipboardRichTextReceivedFunc ClipboardRichTextReceivedFunc
    cb = IO (GClosure C_ClipboardRichTextReceivedFunc)
    -> m (GClosure C_ClipboardRichTextReceivedFunc)
    forall a. IO a -> m a
    forall (m :: * -> *) a. MonadIO m => IO a -> m a
    liftIO (IO (GClosure C_ClipboardRichTextReceivedFunc)
     -> m (GClosure C_ClipboardRichTextReceivedFunc))
    -> IO (GClosure C_ClipboardRichTextReceivedFunc)
    -> m (GClosure C_ClipboardRichTextReceivedFunc)
    forall a b. (a -> b) -> a -> b
    $ do
        let cb' :: ClipboardRichTextReceivedFunc_WithClosures
    cb' = ClipboardRichTextReceivedFunc
    -> ClipboardRichTextReceivedFunc_WithClosures
    drop_closures_ClipboardRichTextReceivedFunc ClipboardRichTextReceivedFunc
    cb
        let cb'' :: C_ClipboardRichTextReceivedFunc
    cb'' = Maybe (Ptr (FunPtr C_ClipboardRichTextReceivedFunc))
    -> ClipboardRichTextReceivedFunc_WithClosures
    -> C_ClipboardRichTextReceivedFunc
    wrap_ClipboardRichTextReceivedFunc Maybe (Ptr (FunPtr C_ClipboardRichTextReceivedFunc))
    forall a. Maybe a
    Nothing ClipboardRichTextReceivedFunc_WithClosures
    cb'
        C_ClipboardRichTextReceivedFunc
    -> IO (FunPtr C_ClipboardRichTextReceivedFunc)
    mk_ClipboardRichTextReceivedFunc C_ClipboardRichTextReceivedFunc
    cb'' IO (FunPtr C_ClipboardRichTextReceivedFunc)
    -> (FunPtr C_ClipboardRichTextReceivedFunc
        -> IO (GClosure C_ClipboardRichTextReceivedFunc))
    -> IO (GClosure C_ClipboardRichTextReceivedFunc)
    forall a b. IO a -> (a -> IO b) -> IO b
    forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
    >>= FunPtr C_ClipboardRichTextReceivedFunc
    -> IO (GClosure C_ClipboardRichTextReceivedFunc)
    forall (m :: * -> *) a. MonadIO m => FunPtr a -> m (GClosure a)
    B.GClosure.newGClosure

    -- | Wrap a `ClipboardRichTextReceivedFunc` into a `C_ClipboardRichTextReceivedFunc`.
    wrap_ClipboardRichTextReceivedFunc ::
        Maybe (Ptr (FunPtr C_ClipboardRichTextReceivedFunc)) ->
        ClipboardRichTextReceivedFunc_WithClosures ->
        C_ClipboardRichTextReceivedFunc
    wrap_ClipboardRichTextReceivedFunc :: Maybe (Ptr (FunPtr C_ClipboardRichTextReceivedFunc))
    -> ClipboardRichTextReceivedFunc_WithClosures
    -> C_ClipboardRichTextReceivedFunc
    wrap_ClipboardRichTextReceivedFunc Maybe (Ptr (FunPtr C_ClipboardRichTextReceivedFunc))
    gi'funptrptr ClipboardRichTextReceivedFunc_WithClosures
    gi'cb Ptr Clipboard
    clipboard Ptr Atom
    format CString
    text CSize
    length_ Ptr ()
    data_ = do
        clipboard' <- ((ManagedPtr Clipboard -> Clipboard)
    -> Ptr Clipboard -> IO Clipboard
    forall a b.
    (HasCallStack, GObject a, GObject b) =>
    (ManagedPtr a -> a) -> Ptr b -> IO a
    newObject ManagedPtr Clipboard -> Clipboard
    Gtk.Clipboard.Clipboard) Ptr Clipboard
    clipboard
        format' <- (newPtr Gdk.Atom.Atom) format
        maybeText <-
            if text == FP.nullPtr
            then return Nothing
            else do
                text' <- cstringToText text
                return $ Just text'
        gi'cb  clipboard' format' maybeText length_ data_
        maybeReleaseFunPtr gi'funptrptr

    -- callback ClipboardReceivedFunc
    {- Callable
      { returnType = Nothing
      , returnMayBeNull = False
      , returnTransfer = TransferNothing
      , returnDocumentation =
          Documentation { rawDocText = Nothing , sinceVersion = Nothing }
      , args =
          [ Arg
              { argCName = "clipboard"
              , argType =
                  TInterface Name { namespace = "Gtk" , name = "Clipboard" }
              , argCType = Just "GtkClipboard*"
              , direction = DirectionIn
              , mayBeNull = False
              , argDoc =
                  Documentation
                    { rawDocText = Just "the #GtkClipboard" , sinceVersion = Nothing }
              , argScope = ScopeTypeInvalid
              , argClosure = -1
              , argDestroy = -1
              , argCallerAllocates = False
              , argCallbackUserData = False
              , transfer = TransferNothing
              }
          , Arg
              { argCName = "selection_data"
              , argType =
                  TInterface Name { namespace = "Gtk" , name = "SelectionData" }
              , argCType = Just "GtkSelectionData*"
              , direction = DirectionIn
              , mayBeNull = False
              , argDoc =
                  Documentation
                    { rawDocText =
                        Just
                          "a #GtkSelectionData containing the data was received.\n  If retrieving the data failed, then then length field\n  of @selection_data will be negative."
                    , sinceVersion = Nothing
                    }
              , argScope = ScopeTypeInvalid
              , argClosure = -1
              , argDestroy = -1
              , argCallerAllocates = False
              , argCallbackUserData = False
              , transfer = TransferNothing
              }
          , Arg
              { argCName = "data"
              , argType = TBasicType TPtr
              , argCType = Just "gpointer"
              , direction = DirectionIn
              , mayBeNull = True
              , argDoc =
                  Documentation
                    { rawDocText =
                        Just
                          "the @user_data supplied to\n  gtk_clipboard_request_contents()."
                    , sinceVersion = Nothing
                    }
              , argScope = ScopeTypeInvalid
              , argClosure = -1
              , argDestroy = -1
              , argCallerAllocates = False
              , argCallbackUserData = True
              , transfer = TransferNothing
              }
          ]
      , skipReturn = False
      , callableThrows = False
      , callableDeprecated = Nothing
      , callableDocumentation =
          Documentation
            { rawDocText =
                Just
                  "A function to be called when the results of gtk_clipboard_request_contents()\nare received, or when the request fails."
            , sinceVersion = Nothing
            }
      , callableResolvable = Nothing
      }
    -}
    -- | Type for the callback on the (unwrapped) C side.
    type C_ClipboardReceivedFunc =
        Ptr Gtk.Clipboard.Clipboard ->
        Ptr Gtk.SelectionData.SelectionData ->
        Ptr () ->
        IO ()

    -- Args: [ Arg
    --           { argCName = "clipboard"
    --           , argType =
    --               TInterface Name { namespace = "Gtk" , name = "Clipboard" }
    --           , argCType = Just "GtkClipboard*"
    --           , direction = DirectionIn
    --           , mayBeNull = False
    --           , argDoc =
    --               Documentation
    --                 { rawDocText = Just "the #GtkClipboard" , sinceVersion = Nothing }
    --           , argScope = ScopeTypeInvalid
    --           , argClosure = -1
    --           , argDestroy = -1
    --           , argCallerAllocates = False
    --           , argCallbackUserData = False
    --           , transfer = TransferNothing
    --           }
    --       , Arg
    --           { argCName = "selection_data"
    --           , argType =
    --               TInterface Name { namespace = "Gtk" , name = "SelectionData" }
    --           , argCType = Just "GtkSelectionData*"
    --           , direction = DirectionIn
    --           , mayBeNull = False
    --           , argDoc =
    --               Documentation
    --                 { rawDocText =
    --                     Just
    --                       "a #GtkSelectionData containing the data was received.\n  If retrieving the data failed, then then length field\n  of @selection_data will be negative."
    --                 , sinceVersion = Nothing
    --                 }
    --           , argScope = ScopeTypeInvalid
    --           , argClosure = -1
    --           , argDestroy = -1
    --           , argCallerAllocates = False
    --           , argCallbackUserData = False
    --           , transfer = TransferNothing
    --           }
    --       , Arg
    --           { argCName = "data"
    --           , argType = TBasicType TPtr
    --           , argCType = Just "gpointer"
    --           , direction = DirectionIn
    --           , mayBeNull = True
    --           , argDoc =
    --               Documentation
    --                 { rawDocText =
    --                     Just
    --                       "the @user_data supplied to\n  gtk_clipboard_request_contents()."
    --                 , sinceVersion = Nothing
    --                 }
    --           , argScope = ScopeTypeInvalid
    --           , argClosure = -1
    --           , argDestroy = -1
    --           , argCallerAllocates = False
    --           , argCallbackUserData = True
    --           , transfer = TransferNothing
    --           }
    --       ]
    -- Lengths: []
    -- returnType: Nothing
    -- throws : False
    -- Skip return : False

    foreign import ccall "dynamic" __dynamic_C_ClipboardReceivedFunc :: FunPtr C_ClipboardReceivedFunc -> C_ClipboardReceivedFunc

    -- | Given a pointer to a foreign C function, wrap it into a function callable from Haskell.
    dynamic_ClipboardReceivedFunc ::
        (B.CallStack.HasCallStack, MonadIO m, Gtk.Clipboard.IsClipboard a) =>
        FunPtr C_ClipboardReceivedFunc
        -> a
        -- ^ /@clipboard@/: the t'GI.Gtk.Objects.Clipboard.Clipboard'
        -> Gtk.SelectionData.SelectionData
        -- ^ /@selectionData@/: a t'GI.Gtk.Structs.SelectionData.SelectionData' containing the data was received.
        --   If retrieving the data failed, then then length field
        --   of /@selectionData@/ will be negative.
        -> Ptr ()
        -- ^ /@data@/: the /@userData@/ supplied to
        --   'GI.Gtk.Objects.Clipboard.clipboardRequestContents'.
        -> m ()
    dynamic_ClipboardReceivedFunc :: forall (m :: * -> *) a.
    (HasCallStack, MonadIO m, IsClipboard a) =>
    FunPtr C_ClipboardReceivedFunc
    -> a -> SelectionData -> Ptr () -> m ()
    dynamic_ClipboardReceivedFunc FunPtr C_ClipboardReceivedFunc
    __funPtr a
    clipboard SelectionData
    selectionData Ptr ()
    data_ = IO () -> m ()
    forall a. IO a -> m a
    forall (m :: * -> *) a. MonadIO m => IO a -> m a
    liftIO (IO () -> m ()) -> IO () -> m ()
    forall a b. (a -> b) -> a -> b
    $ do
        clipboard' <- a -> IO (Ptr Clipboard)
    forall a b. (HasCallStack, ManagedPtrNewtype a) => a -> IO (Ptr b)
    unsafeManagedPtrCastPtr a
    clipboard
        selectionData' <- unsafeManagedPtrGetPtr selectionData
        (__dynamic_C_ClipboardReceivedFunc __funPtr) clipboard' selectionData' data_
        touchManagedPtr clipboard
        touchManagedPtr selectionData
        return ()

    -- | Generate a function pointer callable from C code, from a `C_ClipboardReceivedFunc`.
    foreign import ccall "wrapper"
        mk_ClipboardReceivedFunc :: C_ClipboardReceivedFunc -> IO (FunPtr C_ClipboardReceivedFunc)

    -- | A function to be called when the results of 'GI.Gtk.Objects.Clipboard.clipboardRequestContents'
    -- are received, or when the request fails.
    type ClipboardReceivedFunc =
        Gtk.Clipboard.Clipboard
        -- ^ /@clipboard@/: the t'GI.Gtk.Objects.Clipboard.Clipboard'
        -> Gtk.SelectionData.SelectionData
        -- ^ /@selectionData@/: a t'GI.Gtk.Structs.SelectionData.SelectionData' containing the data was received.
        --   If retrieving the data failed, then then length field
        --   of /@selectionData@/ will be negative.
        -> IO ()

    -- | A convenience synonym for @`Nothing` :: `Maybe` `ClipboardReceivedFunc`@.
    noClipboardReceivedFunc :: Maybe ClipboardReceivedFunc
    noClipboardReceivedFunc :: Maybe ClipboardReceivedFunc
    noClipboardReceivedFunc = Maybe ClipboardReceivedFunc
    forall a. Maybe a
    Nothing

    -- | A function to be called when the results of 'GI.Gtk.Objects.Clipboard.clipboardRequestContents'
    -- are received, or when the request fails.
    type ClipboardReceivedFunc_WithClosures =
        Gtk.Clipboard.Clipboard
        -- ^ /@clipboard@/: the t'GI.Gtk.Objects.Clipboard.Clipboard'
        -> Gtk.SelectionData.SelectionData
        -- ^ /@selectionData@/: a t'GI.Gtk.Structs.SelectionData.SelectionData' containing the data was received.
        --   If retrieving the data failed, then then length field
        --   of /@selectionData@/ will be negative.
        -> Ptr ()
        -- ^ /@data@/: the /@userData@/ supplied to
        --   'GI.Gtk.Objects.Clipboard.clipboardRequestContents'.
        -> IO ()

    -- | A convenience synonym for @`Nothing` :: `Maybe` `ClipboardReceivedFunc_WithClosures`@.
    noClipboardReceivedFunc_WithClosures :: Maybe ClipboardReceivedFunc_WithClosures
    noClipboardReceivedFunc_WithClosures :: Maybe ClipboardReceivedFunc_WithClosures
    noClipboardReceivedFunc_WithClosures = Maybe ClipboardReceivedFunc_WithClosures
    forall a. Maybe a
    Nothing

    -- | A simple wrapper that ignores the closure arguments.
    drop_closures_ClipboardReceivedFunc :: ClipboardReceivedFunc -> ClipboardReceivedFunc_WithClosures
    drop_closures_ClipboardReceivedFunc :: ClipboardReceivedFunc -> ClipboardReceivedFunc_WithClosures
    drop_closures_ClipboardReceivedFunc ClipboardReceivedFunc
    _f Clipboard
    clipboard SelectionData
    selectionData Ptr ()
    _ = ClipboardReceivedFunc
    _f Clipboard
    clipboard SelectionData
    selectionData

    -- | Wrap the callback into a `GClosure`.
    genClosure_ClipboardReceivedFunc :: MonadIO m => ClipboardReceivedFunc -> m (GClosure C_ClipboardReceivedFunc)
    genClosure_ClipboardReceivedFunc :: forall (m :: * -> *).
    MonadIO m =>
    ClipboardReceivedFunc -> m (GClosure C_ClipboardReceivedFunc)
    genClosure_ClipboardReceivedFunc ClipboardReceivedFunc
    cb = IO (GClosure C_ClipboardReceivedFunc)
    -> m (GClosure C_ClipboardReceivedFunc)
    forall a. IO a -> m a
    forall (m :: * -> *) a. MonadIO m => IO a -> m a
    liftIO (IO (GClosure C_ClipboardReceivedFunc)
     -> m (GClosure C_ClipboardReceivedFunc))
    -> IO (GClosure C_ClipboardReceivedFunc)
    -> m (GClosure C_ClipboardReceivedFunc)
    forall a b. (a -> b) -> a -> b
    $ do
        let cb' :: ClipboardReceivedFunc_WithClosures
    cb' = ClipboardReceivedFunc -> ClipboardReceivedFunc_WithClosures
    drop_closures_ClipboardReceivedFunc ClipboardReceivedFunc
    cb
        let cb'' :: C_ClipboardReceivedFunc
    cb'' = Maybe (Ptr (FunPtr C_ClipboardReceivedFunc))
    -> ClipboardReceivedFunc_WithClosures -> C_ClipboardReceivedFunc
    wrap_ClipboardReceivedFunc Maybe (Ptr (FunPtr C_ClipboardReceivedFunc))
    forall a. Maybe a
    Nothing ClipboardReceivedFunc_WithClosures
    cb'
        C_ClipboardReceivedFunc -> IO (FunPtr C_ClipboardReceivedFunc)
    mk_ClipboardReceivedFunc C_ClipboardReceivedFunc
    cb'' IO (FunPtr C_ClipboardReceivedFunc)
    -> (FunPtr C_ClipboardReceivedFunc
        -> IO (GClosure C_ClipboardReceivedFunc))
    -> IO (GClosure C_ClipboardReceivedFunc)
    forall a b. IO a -> (a -> IO b) -> IO b
    forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
    >>= FunPtr C_ClipboardReceivedFunc
    -> IO (GClosure C_ClipboardReceivedFunc)
    forall (m :: * -> *) a. MonadIO m => FunPtr a -> m (GClosure a)
    B.GClosure.newGClosure

    -- | Wrap a `ClipboardReceivedFunc` into a `C_ClipboardReceivedFunc`.
    wrap_ClipboardReceivedFunc ::
        Maybe (Ptr (FunPtr C_ClipboardReceivedFunc)) ->
        ClipboardReceivedFunc_WithClosures ->
        C_ClipboardReceivedFunc
    wrap_ClipboardReceivedFunc :: Maybe (Ptr (FunPtr C_ClipboardReceivedFunc))
    -> ClipboardReceivedFunc_WithClosures -> C_ClipboardReceivedFunc
    wrap_ClipboardReceivedFunc Maybe (Ptr (FunPtr C_ClipboardReceivedFunc))
    gi'funptrptr ClipboardReceivedFunc_WithClosures
    gi'cb Ptr Clipboard
    clipboard Ptr SelectionData
    selectionData Ptr ()
    data_ = do
        clipboard' <- ((ManagedPtr Clipboard -> Clipboard)
    -> Ptr Clipboard -> IO Clipboard
    forall a b.
    (HasCallStack, GObject a, GObject b) =>
    (ManagedPtr a -> a) -> Ptr b -> IO a
    newObject ManagedPtr Clipboard -> Clipboard
    Gtk.Clipboard.Clipboard) Ptr Clipboard
    clipboard
        B.ManagedPtr.withTransient  selectionData $ \SelectionData
    selectionData' -> do
            ClipboardReceivedFunc_WithClosures
    gi'cb  Clipboard
    clipboard' SelectionData
    selectionData' Ptr ()
    data_
            Maybe (Ptr (FunPtr C_ClipboardReceivedFunc)) -> IO ()
    forall a. Maybe (Ptr (FunPtr a)) -> IO ()
    maybeReleaseFunPtr Maybe (Ptr (FunPtr C_ClipboardReceivedFunc))
    gi'funptrptr

    -- callback ClipboardImageReceivedFunc
    {- Callable
      { returnType = Nothing
      , returnMayBeNull = False
      , returnTransfer = TransferNothing
      , returnDocumentation =
          Documentation { rawDocText = Nothing , sinceVersion = Nothing }
      , args =
          [ Arg
              { argCName = "clipboard"
              , argType =
                  TInterface Name { namespace = "Gtk" , name = "Clipboard" }
              , argCType = Just "GtkClipboard*"
              , direction = DirectionIn
              , mayBeNull = False
              , argDoc =
                  Documentation
                    { rawDocText = Just "the #GtkClipboard" , sinceVersion = Nothing }
              , argScope = ScopeTypeInvalid
              , argClosure = -1
              , argDestroy = -1
              , argCallerAllocates = False
              , argCallbackUserData = False
              , transfer = TransferNothing
              }
          , Arg
              { argCName = "pixbuf"
              , argType =
                  TInterface Name { namespace = "GdkPixbuf" , name = "Pixbuf" }
              , argCType = Just "GdkPixbuf*"
              , direction = DirectionIn
              , mayBeNull = True
              , argDoc =
                  Documentation
                    { rawDocText = Just "the received image" , sinceVersion = Nothing }
              , argScope = ScopeTypeInvalid
              , argClosure = -1
              , argDestroy = -1
              , argCallerAllocates = False
              , argCallbackUserData = False
              , transfer = TransferNothing
              }
          , Arg
              { argCName = "data"
              , argType = TBasicType TPtr
              , argCType = Just "gpointer"
              , direction = DirectionIn
              , mayBeNull = True
              , argDoc =
                  Documentation
                    { rawDocText =
                        Just "the @user_data supplied to\n  gtk_clipboard_request_image()."
                    , sinceVersion = Nothing
                    }
              , argScope = ScopeTypeInvalid
              , argClosure = -1
              , argDestroy = -1
              , argCallerAllocates = False
              , argCallbackUserData = True
              , transfer = TransferNothing
              }
          ]
      , skipReturn = False
      , callableThrows = False
      , callableDeprecated = Nothing
      , callableDocumentation =
          Documentation
            { rawDocText =
                Just
                  "A function to be called when the results of gtk_clipboard_request_image()\nare received, or when the request fails."
            , sinceVersion = Just "2.6"
            }
      , callableResolvable = Nothing
      }
    -}
    -- | Type for the callback on the (unwrapped) C side.
    type C_ClipboardImageReceivedFunc =
        Ptr Gtk.Clipboard.Clipboard ->
        Ptr GdkPixbuf.Pixbuf.Pixbuf ->
        Ptr () ->
        IO ()

    -- Args: [ Arg
    --           { argCName = "clipboard"
    --           , argType =
    --               TInterface Name { namespace = "Gtk" , name = "Clipboard" }
    --           , argCType = Just "GtkClipboard*"
    --           , direction = DirectionIn
    --           , mayBeNull = False
    --           , argDoc =
    --               Documentation
    --                 { rawDocText = Just "the #GtkClipboard" , sinceVersion = Nothing }
    --           , argScope = ScopeTypeInvalid
    --           , argClosure = -1
    --           , argDestroy = -1
    --           , argCallerAllocates = False
    --           , argCallbackUserData = False
    --           , transfer = TransferNothing
    --           }
    --       , Arg
    --           { argCName = "pixbuf"
    --           , argType =
    --               TInterface Name { namespace = "GdkPixbuf" , name = "Pixbuf" }
    --           , argCType = Just "GdkPixbuf*"
    --           , direction = DirectionIn
    --           , mayBeNull = True
    --           , argDoc =
    --               Documentation
    --                 { rawDocText = Just "the received image" , sinceVersion = Nothing }
    --           , argScope = ScopeTypeInvalid
    --           , argClosure = -1
    --           , argDestroy = -1
    --           , argCallerAllocates = False
    --           , argCallbackUserData = False
    --           , transfer = TransferNothing
    --           }
    --       , Arg
    --           { argCName = "data"
    --           , argType = TBasicType TPtr
    --           , argCType = Just "gpointer"
    --           , direction = DirectionIn
    --           , mayBeNull = True
    --           , argDoc =
    --               Documentation
    --                 { rawDocText =
    --                     Just "the @user_data supplied to\n  gtk_clipboard_request_image()."
    --                 , sinceVersion = Nothing
    --                 }
    --           , argScope = ScopeTypeInvalid
    --           , argClosure = -1
    --           , argDestroy = -1
    --           , argCallerAllocates = False
    --           , argCallbackUserData = True
    --           , transfer = TransferNothing
    --           }
    --       ]
    -- Lengths: []
    -- returnType: Nothing
    -- throws : False
    -- Skip return : False

    foreign import ccall "dynamic" __dynamic_C_ClipboardImageReceivedFunc :: FunPtr C_ClipboardImageReceivedFunc -> C_ClipboardImageReceivedFunc

    -- | Given a pointer to a foreign C function, wrap it into a function callable from Haskell.
    dynamic_ClipboardImageReceivedFunc ::
        (B.CallStack.HasCallStack, MonadIO m, Gtk.Clipboard.IsClipboard a, GdkPixbuf.Pixbuf.IsPixbuf b) =>
        FunPtr C_ClipboardImageReceivedFunc
        -> a
        -- ^ /@clipboard@/: the t'GI.Gtk.Objects.Clipboard.Clipboard'
        -> Maybe (b)
        -- ^ /@pixbuf@/: the received image
        -> Ptr ()
        -- ^ /@data@/: the /@userData@/ supplied to
        --   'GI.Gtk.Objects.Clipboard.clipboardRequestImage'.
        -> m ()
    dynamic_ClipboardImageReceivedFunc :: forall (m :: * -> *) a b.
    (HasCallStack, MonadIO m, IsClipboard a, IsPixbuf b) =>
    FunPtr C_ClipboardImageReceivedFunc
    -> a -> Maybe b -> Ptr () -> m ()
    dynamic_ClipboardImageReceivedFunc FunPtr C_ClipboardImageReceivedFunc
    __funPtr a
    clipboard Maybe b
    pixbuf Ptr ()
    data_ = IO () -> m ()
    forall a. IO a -> m a
    forall (m :: * -> *) a. MonadIO m => IO a -> m a
    liftIO (IO () -> m ()) -> IO () -> m ()
    forall a b. (a -> b) -> a -> b
    $ do
        clipboard' <- a -> IO (Ptr Clipboard)
    forall a b. (HasCallStack, ManagedPtrNewtype a) => a -> IO (Ptr b)
    unsafeManagedPtrCastPtr a
    clipboard
        maybePixbuf <- case pixbuf of
            Maybe b
    Nothing -> Ptr Pixbuf -> IO (Ptr Pixbuf)
    forall a. a -> IO a
    forall (m :: * -> *) a. Monad m => a -> m a
    return Ptr Pixbuf
    forall a. Ptr a
    FP.nullPtr
            Just b
    jPixbuf -> do
                jPixbuf' <- b -> IO (Ptr Pixbuf)
    forall a b. (HasCallStack, ManagedPtrNewtype a) => a -> IO (Ptr b)
    unsafeManagedPtrCastPtr b
    jPixbuf
                return jPixbuf'
        (__dynamic_C_ClipboardImageReceivedFunc __funPtr) clipboard' maybePixbuf data_
        touchManagedPtr clipboard
        whenJust pixbuf touchManagedPtr
        return ()

    -- | Generate a function pointer callable from C code, from a `C_ClipboardImageReceivedFunc`.
    foreign import ccall "wrapper"
        mk_ClipboardImageReceivedFunc :: C_ClipboardImageReceivedFunc -> IO (FunPtr C_ClipboardImageReceivedFunc)

    -- | A function to be called when the results of 'GI.Gtk.Objects.Clipboard.clipboardRequestImage'
    -- are received, or when the request fails.
    --
    -- /Since: 2.6/
    type ClipboardImageReceivedFunc =
        Gtk.Clipboard.Clipboard
        -- ^ /@clipboard@/: the t'GI.Gtk.Objects.Clipboard.Clipboard'
        -> Maybe GdkPixbuf.Pixbuf.Pixbuf
        -- ^ /@pixbuf@/: the received image
        -> IO ()

    -- | A convenience synonym for @`Nothing` :: `Maybe` `ClipboardImageReceivedFunc`@.
    noClipboardImageReceivedFunc :: Maybe ClipboardImageReceivedFunc
    noClipboardImageReceivedFunc :: Maybe ClipboardImageReceivedFunc
    noClipboardImageReceivedFunc = Maybe ClipboardImageReceivedFunc
    forall a. Maybe a
    Nothing

    -- | A function to be called when the results of 'GI.Gtk.Objects.Clipboard.clipboardRequestImage'
    -- are received, or when the request fails.
    --
    -- /Since: 2.6/
    type ClipboardImageReceivedFunc_WithClosures =
        Gtk.Clipboard.Clipboard
        -- ^ /@clipboard@/: the t'GI.Gtk.Objects.Clipboard.Clipboard'
        -> Maybe GdkPixbuf.Pixbuf.Pixbuf
        -- ^ /@pixbuf@/: the received image
        -> Ptr ()
        -- ^ /@data@/: the /@userData@/ supplied to
        --   'GI.Gtk.Objects.Clipboard.clipboardRequestImage'.
        -> IO ()

    -- | A convenience synonym for @`Nothing` :: `Maybe` `ClipboardImageReceivedFunc_WithClosures`@.
    noClipboardImageReceivedFunc_WithClosures :: Maybe ClipboardImageReceivedFunc_WithClosures
    noClipboardImageReceivedFunc_WithClosures :: Maybe ClipboardImageReceivedFunc_WithClosures
    noClipboardImageReceivedFunc_WithClosures = Maybe ClipboardImageReceivedFunc_WithClosures
    forall a. Maybe a
    Nothing

    -- | A simple wrapper that ignores the closure arguments.
    drop_closures_ClipboardImageReceivedFunc :: ClipboardImageReceivedFunc -> ClipboardImageReceivedFunc_WithClosures
    drop_closures_ClipboardImageReceivedFunc :: ClipboardImageReceivedFunc
    -> ClipboardImageReceivedFunc_WithClosures
    drop_closures_ClipboardImageReceivedFunc ClipboardImageReceivedFunc
    _f Clipboard
    clipboard Maybe Pixbuf
    pixbuf Ptr ()
    _ = ClipboardImageReceivedFunc
    _f Clipboard
    clipboard Maybe Pixbuf
    pixbuf

    -- | Wrap the callback into a `GClosure`.
    genClosure_ClipboardImageReceivedFunc :: MonadIO m => ClipboardImageReceivedFunc -> m (GClosure C_ClipboardImageReceivedFunc)
    genClosure_ClipboardImageReceivedFunc :: forall (m :: * -> *).
    MonadIO m =>
    ClipboardImageReceivedFunc
    -> m (GClosure C_ClipboardImageReceivedFunc)
    genClosure_ClipboardImageReceivedFunc ClipboardImageReceivedFunc
    cb = IO (GClosure C_ClipboardImageReceivedFunc)
    -> m (GClosure C_ClipboardImageReceivedFunc)
    forall a. IO a -> m a
    forall (m :: * -> *) a. MonadIO m => IO a -> m a
    liftIO (IO (GClosure C_ClipboardImageReceivedFunc)
     -> m (GClosure C_ClipboardImageReceivedFunc))
    -> IO (GClosure C_ClipboardImageReceivedFunc)
    -> m (GClosure C_ClipboardImageReceivedFunc)
    forall a b. (a -> b) -> a -> b
    $ do
        let cb' :: ClipboardImageReceivedFunc_WithClosures
    cb' = ClipboardImageReceivedFunc
    -> ClipboardImageReceivedFunc_WithClosures
    drop_closures_ClipboardImageReceivedFunc ClipboardImageReceivedFunc
    cb
        let cb'' :: C_ClipboardImageReceivedFunc
    cb'' = Maybe (Ptr (FunPtr C_ClipboardImageReceivedFunc))
    -> ClipboardImageReceivedFunc_WithClosures
    -> C_ClipboardImageReceivedFunc
    wrap_ClipboardImageReceivedFunc Maybe (Ptr (FunPtr C_ClipboardImageReceivedFunc))
    forall a. Maybe a
    Nothing ClipboardImageReceivedFunc_WithClosures
    cb'
        C_ClipboardImageReceivedFunc
    -> IO (FunPtr C_ClipboardImageReceivedFunc)
    mk_ClipboardImageReceivedFunc C_ClipboardImageReceivedFunc
    cb'' IO (FunPtr C_ClipboardImageReceivedFunc)
    -> (FunPtr C_ClipboardImageReceivedFunc
        -> IO (GClosure C_ClipboardImageReceivedFunc))
    -> IO (GClosure C_ClipboardImageReceivedFunc)
    forall a b. IO a -> (a -> IO b) -> IO b
    forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
    >>= FunPtr C_ClipboardImageReceivedFunc
    -> IO (GClosure C_ClipboardImageReceivedFunc)
    forall (m :: * -> *) a. MonadIO m => FunPtr a -> m (GClosure a)
    B.GClosure.newGClosure

    -- | Wrap a `ClipboardImageReceivedFunc` into a `C_ClipboardImageReceivedFunc`.
    wrap_ClipboardImageReceivedFunc ::
        Maybe (Ptr (FunPtr C_ClipboardImageReceivedFunc)) ->
        ClipboardImageReceivedFunc_WithClosures ->
        C_ClipboardImageReceivedFunc
    wrap_ClipboardImageReceivedFunc :: Maybe (Ptr (FunPtr C_ClipboardImageReceivedFunc))
    -> ClipboardImageReceivedFunc_WithClosures
    -> C_ClipboardImageReceivedFunc
    wrap_ClipboardImageReceivedFunc Maybe (Ptr (FunPtr C_ClipboardImageReceivedFunc))
    gi'funptrptr ClipboardImageReceivedFunc_WithClosures
    gi'cb Ptr Clipboard
    clipboard Ptr Pixbuf
    pixbuf Ptr ()
    data_ = do
        clipboard' <- ((ManagedPtr Clipboard -> Clipboard)
    -> Ptr Clipboard -> IO Clipboard
    forall a b.
    (HasCallStack, GObject a, GObject b) =>
    (ManagedPtr a -> a) -> Ptr b -> IO a
    newObject ManagedPtr Clipboard -> Clipboard
    Gtk.Clipboard.Clipboard) Ptr Clipboard
    clipboard
        maybePixbuf <-
            if pixbuf == FP.nullPtr
            then return Nothing
            else do
                pixbuf' <- (newObject GdkPixbuf.Pixbuf.Pixbuf) pixbuf
                return $ Just pixbuf'
        gi'cb  clipboard' maybePixbuf data_
        maybeReleaseFunPtr gi'funptrptr

    -- callback ClipboardGetFunc
    {- Callable
      { returnType = Nothing
      , returnMayBeNull = False
      , returnTransfer = TransferNothing
      , returnDocumentation =
          Documentation { rawDocText = Nothing , sinceVersion = Nothing }
      , args =
          [ Arg
              { argCName = "clipboard"
              , argType =
                  TInterface Name { namespace = "Gtk" , name = "Clipboard" }
              , argCType = Just "GtkClipboard*"
              , direction = DirectionIn
              , mayBeNull = False
              , argDoc =
                  Documentation
                    { rawDocText = Just "the #GtkClipboard" , sinceVersion = Nothing }
              , argScope = ScopeTypeInvalid
              , argClosure = -1
              , argDestroy = -1
              , argCallerAllocates = False
              , argCallbackUserData = False
              , transfer = TransferNothing
              }
          , Arg
              { argCName = "selection_data"
              , argType =
                  TInterface Name { namespace = "Gtk" , name = "SelectionData" }
              , argCType = Just "GtkSelectionData*"
              , direction = DirectionIn
              , mayBeNull = False
              , argDoc =
                  Documentation
                    { rawDocText =
                        Just
                          "a #GtkSelectionData argument in which the requested\n  data should be stored."
                    , sinceVersion = Nothing
                    }
              , argScope = ScopeTypeInvalid
              , argClosure = -1
              , argDestroy = -1
              , argCallerAllocates = False
              , argCallbackUserData = False
              , transfer = TransferNothing
              }
          , Arg
              { argCName = "info"
              , argType = TBasicType TUInt
              , argCType = Just "guint"
              , direction = DirectionIn
              , mayBeNull = False
              , argDoc =
                  Documentation
                    { rawDocText =
                        Just
                          "the info field corresponding to the requested target from the\n  #GtkTargetEntry array passed to gtk_clipboard_set_with_data() or\n  gtk_clipboard_set_with_owner()."
                    , sinceVersion = Nothing
                    }
              , argScope = ScopeTypeInvalid
              , argClosure = -1
              , argDestroy = -1
              , argCallerAllocates = False
              , argCallbackUserData = False
              , transfer = TransferNothing
              }
          , Arg
              { argCName = "user_data_or_owner"
              , argType = TBasicType TPtr
              , argCType = Just "gpointer"
              , direction = DirectionIn
              , mayBeNull = True
              , argDoc =
                  Documentation
                    { rawDocText =
                        Just
                          "the @user_data argument passed to\n  gtk_clipboard_set_with_data(), or the @owner argument passed to\n  gtk_clipboard_set_with_owner()"
                    , sinceVersion = Nothing
                    }
              , argScope = ScopeTypeInvalid
              , argClosure = -1
              , argDestroy = -1
              , argCallerAllocates = False
              , argCallbackUserData = False
              , transfer = TransferNothing
              }
          ]
      , skipReturn = False
      , callableThrows = False
      , callableDeprecated = Nothing
      , callableDocumentation =
          Documentation
            { rawDocText =
                Just
                  "A function that will be called to provide the contents of the selection.\nIf multiple types of data were advertised, the requested type can\nbe determined from the @info parameter or by checking the target field\nof @selection_data. If the data could successfully be converted into\nthen it should be stored into the @selection_data object by\ncalling gtk_selection_data_set() (or related functions such\nas gtk_selection_data_set_text()). If no data is set, the requestor\nwill be informed that the attempt to get the data failed."
            , sinceVersion = Nothing
            }
      , callableResolvable = Nothing
      }
    -}
    -- | Type for the callback on the (unwrapped) C side.
    type C_ClipboardGetFunc =
        Ptr Gtk.Clipboard.Clipboard ->
        Ptr Gtk.SelectionData.SelectionData ->
        Word32 ->
        Ptr () ->
        IO ()

    -- Args: [ Arg
    --           { argCName = "clipboard"
    --           , argType =
    --               TInterface Name { namespace = "Gtk" , name = "Clipboard" }
    --           , argCType = Just "GtkClipboard*"
    --           , direction = DirectionIn
    --           , mayBeNull = False
    --           , argDoc =
    --               Documentation
    --                 { rawDocText = Just "the #GtkClipboard" , sinceVersion = Nothing }
    --           , argScope = ScopeTypeInvalid
    --           , argClosure = -1
    --           , argDestroy = -1
    --           , argCallerAllocates = False
    --           , argCallbackUserData = False
    --           , transfer = TransferNothing
    --           }
    --       , Arg
    --           { argCName = "selection_data"
    --           , argType =
    --               TInterface Name { namespace = "Gtk" , name = "SelectionData" }
    --           , argCType = Just "GtkSelectionData*"
    --           , direction = DirectionIn
    --           , mayBeNull = False
    --           , argDoc =
    --               Documentation
    --                 { rawDocText =
    --                     Just
    --                       "a #GtkSelectionData argument in which the requested\n  data should be stored."
    --                 , sinceVersion = Nothing
    --                 }
    --           , argScope = ScopeTypeInvalid
    --           , argClosure = -1
    --           , argDestroy = -1
    --           , argCallerAllocates = False
    --           , argCallbackUserData = False
    --           , transfer = TransferNothing
    --           }
    --       , Arg
    --           { argCName = "info"
    --           , argType = TBasicType TUInt
    --           , argCType = Just "guint"
    --           , direction = DirectionIn
    --           , mayBeNull = False
    --           , argDoc =
    --               Documentation
    --                 { rawDocText =
    --                     Just
    --                       "the info field corresponding to the requested target from the\n  #GtkTargetEntry array passed to gtk_clipboard_set_with_data() or\n  gtk_clipboard_set_with_owner()."
    --                 , sinceVersion = Nothing
    --                 }
    --           , argScope = ScopeTypeInvalid
    --           , argClosure = -1
    --           , argDestroy = -1
    --           , argCallerAllocates = False
    --           , argCallbackUserData = False
    --           , transfer = TransferNothing
    --           }
    --       , Arg
    --           { argCName = "user_data_or_owner"
    --           , argType = TBasicType TPtr
    --           , argCType = Just "gpointer"
    --           , direction = DirectionIn
    --           , mayBeNull = True
    --           , argDoc =
    --               Documentation
    --                 { rawDocText =
    --                     Just
    --                       "the @user_data argument passed to\n  gtk_clipboard_set_with_data(), or the @owner argument passed to\n  gtk_clipboard_set_with_owner()"
    --                 , sinceVersion = Nothing
    --                 }
    --           , argScope = ScopeTypeInvalid
    --           , argClosure = -1
    --           , argDestroy = -1
    --           , argCallerAllocates = False
    --           , argCallbackUserData = False
    --           , transfer = TransferNothing
    --           }
    --       ]
    -- Lengths: []
    -- returnType: Nothing
    -- throws : False
    -- Skip return : False

    foreign import ccall "dynamic" __dynamic_C_ClipboardGetFunc :: FunPtr C_ClipboardGetFunc -> C_ClipboardGetFunc

    -- | Given a pointer to a foreign C function, wrap it into a function callable from Haskell.
    dynamic_ClipboardGetFunc ::
        (B.CallStack.HasCallStack, MonadIO m, Gtk.Clipboard.IsClipboard a) =>
        FunPtr C_ClipboardGetFunc
        -> a
        -- ^ /@clipboard@/: the t'GI.Gtk.Objects.Clipboard.Clipboard'
        -> Gtk.SelectionData.SelectionData
        -- ^ /@selectionData@/: a t'GI.Gtk.Structs.SelectionData.SelectionData' argument in which the requested
        --   data should be stored.
        -> Word32
        -- ^ /@info@/: the info field corresponding to the requested target from the
        --   t'GI.Gtk.Structs.TargetEntry.TargetEntry' array passed to @/gtk_clipboard_set_with_data()/@ or
        --   @/gtk_clipboard_set_with_owner()/@.
        -> Ptr ()
        -- ^ /@userDataOrOwner@/: the /@userData@/ argument passed to
        --   @/gtk_clipboard_set_with_data()/@, or the /@owner@/ argument passed to
        --   @/gtk_clipboard_set_with_owner()/@
        -> m ()
    dynamic_ClipboardGetFunc :: forall (m :: * -> *) a.
    (HasCallStack, MonadIO m, IsClipboard a) =>
    FunPtr C_ClipboardGetFunc
    -> a -> SelectionData -> Word32 -> Ptr () -> m ()
    dynamic_ClipboardGetFunc FunPtr C_ClipboardGetFunc
    __funPtr a
    clipboard SelectionData
    selectionData Word32
    info Ptr ()
    userDataOrOwner = IO () -> m ()
    forall a. IO a -> m a
    forall (m :: * -> *) a. MonadIO m => IO a -> m a
    liftIO (IO () -> m ()) -> IO () -> m ()
    forall a b. (a -> b) -> a -> b
    $ do
        clipboard' <- a -> IO (Ptr Clipboard)
    forall a b. (HasCallStack, ManagedPtrNewtype a) => a -> IO (Ptr b)
    unsafeManagedPtrCastPtr a
    clipboard
        selectionData' <- unsafeManagedPtrGetPtr selectionData
        (__dynamic_C_ClipboardGetFunc __funPtr) clipboard' selectionData' info userDataOrOwner
        touchManagedPtr clipboard
        touchManagedPtr selectionData
        return ()

    -- | Generate a function pointer callable from C code, from a `C_ClipboardGetFunc`.
    foreign import ccall "wrapper"
        mk_ClipboardGetFunc :: C_ClipboardGetFunc -> IO (FunPtr C_ClipboardGetFunc)

    -- | A function that will be called to provide the contents of the selection.
    -- If multiple types of data were advertised, the requested type can
    -- be determined from the /@info@/ parameter or by checking the target field
    -- of /@selectionData@/. If the data could successfully be converted into
    -- then it should be stored into the /@selectionData@/ object by
    -- calling 'GI.Gtk.Structs.SelectionData.selectionDataSet' (or related functions such
    -- as 'GI.Gtk.Structs.SelectionData.selectionDataSetText'). If no data is set, the requestor
    -- will be informed that the attempt to get the data failed.
    type ClipboardGetFunc =
        Gtk.Clipboard.Clipboard
        -- ^ /@clipboard@/: the t'GI.Gtk.Objects.Clipboard.Clipboard'
        -> Gtk.SelectionData.SelectionData
        -- ^ /@selectionData@/: a t'GI.Gtk.Structs.SelectionData.SelectionData' argument in which the requested
        --   data should be stored.
        -> Word32
        -- ^ /@info@/: the info field corresponding to the requested target from the
        --   t'GI.Gtk.Structs.TargetEntry.TargetEntry' array passed to @/gtk_clipboard_set_with_data()/@ or
        --   @/gtk_clipboard_set_with_owner()/@.
        -> Ptr ()
        -- ^ /@userDataOrOwner@/: the /@userData@/ argument passed to
        --   @/gtk_clipboard_set_with_data()/@, or the /@owner@/ argument passed to
        --   @/gtk_clipboard_set_with_owner()/@
        -> IO ()

    -- | A convenience synonym for @`Nothing` :: `Maybe` `ClipboardGetFunc`@.
    noClipboardGetFunc :: Maybe ClipboardGetFunc
    noClipboardGetFunc :: Maybe ClipboardGetFunc
    noClipboardGetFunc = Maybe ClipboardGetFunc
    forall a. Maybe a
    Nothing

    -- | Wrap the callback into a `GClosure`.
    genClosure_ClipboardGetFunc :: MonadIO m => ClipboardGetFunc -> m (GClosure C_ClipboardGetFunc)
    genClosure_ClipboardGetFunc :: forall (m :: * -> *).
    MonadIO m =>
    ClipboardGetFunc -> m (GClosure C_ClipboardGetFunc)
    genClosure_ClipboardGetFunc ClipboardGetFunc
    cb = IO (GClosure C_ClipboardGetFunc) -> m (GClosure C_ClipboardGetFunc)
    forall a. IO a -> m a
    forall (m :: * -> *) a. MonadIO m => IO a -> m a
    liftIO (IO (GClosure C_ClipboardGetFunc)
     -> m (GClosure C_ClipboardGetFunc))
    -> IO (GClosure C_ClipboardGetFunc)
    -> m (GClosure C_ClipboardGetFunc)
    forall a b. (a -> b) -> a -> b
    $ do
        let cb' :: C_ClipboardGetFunc
    cb' = Maybe (Ptr (FunPtr C_ClipboardGetFunc))
    -> ClipboardGetFunc -> C_ClipboardGetFunc
    wrap_ClipboardGetFunc Maybe (Ptr (FunPtr C_ClipboardGetFunc))
    forall a. Maybe a
    Nothing ClipboardGetFunc
    cb
        C_ClipboardGetFunc -> IO (FunPtr C_ClipboardGetFunc)
    mk_ClipboardGetFunc C_ClipboardGetFunc
    cb' IO (FunPtr C_ClipboardGetFunc)
    -> (FunPtr C_ClipboardGetFunc -> IO (GClosure C_ClipboardGetFunc))
    -> IO (GClosure C_ClipboardGetFunc)
    forall a b. IO a -> (a -> IO b) -> IO b
    forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
    >>= FunPtr C_ClipboardGetFunc -> IO (GClosure C_ClipboardGetFunc)
    forall (m :: * -> *) a. MonadIO m => FunPtr a -> m (GClosure a)
    B.GClosure.newGClosure

    -- | Wrap a `ClipboardGetFunc` into a `C_ClipboardGetFunc`.
    wrap_ClipboardGetFunc ::
        Maybe (Ptr (FunPtr C_ClipboardGetFunc)) ->
        ClipboardGetFunc ->
        C_ClipboardGetFunc
    wrap_ClipboardGetFunc :: Maybe (Ptr (FunPtr C_ClipboardGetFunc))
    -> ClipboardGetFunc -> C_ClipboardGetFunc
    wrap_ClipboardGetFunc Maybe (Ptr (FunPtr C_ClipboardGetFunc))
    gi'funptrptr ClipboardGetFunc
    gi'cb Ptr Clipboard
    clipboard Ptr SelectionData
    selectionData Word32
    info Ptr ()
    userDataOrOwner = do
        clipboard' <- ((ManagedPtr Clipboard -> Clipboard)
    -> Ptr Clipboard -> IO Clipboard
    forall a b.
    (HasCallStack, GObject a, GObject b) =>
    (ManagedPtr a -> a) -> Ptr b -> IO a
    newObject ManagedPtr Clipboard -> Clipboard
    Gtk.Clipboard.Clipboard) Ptr Clipboard
    clipboard
        B.ManagedPtr.withTransient  selectionData $ \SelectionData
    selectionData' -> do
            ClipboardGetFunc
    gi'cb  Clipboard
    clipboard' SelectionData
    selectionData' Word32
    info Ptr ()
    userDataOrOwner
            Maybe (Ptr (FunPtr C_ClipboardGetFunc)) -> IO ()
    forall a. Maybe (Ptr (FunPtr a)) -> IO ()
    maybeReleaseFunPtr Maybe (Ptr (FunPtr C_ClipboardGetFunc))
    gi'funptrptr

    -- callback ClipboardClearFunc
    {- Callable
      { returnType = Nothing
      , returnMayBeNull = False
      , returnTransfer = TransferNothing
      , returnDocumentation =
          Documentation { rawDocText = Nothing , sinceVersion = Nothing }
      , args =
          [ Arg
              { argCName = "clipboard"
              , argType =
                  TInterface Name { namespace = "Gtk" , name = "Clipboard" }
              , argCType = Just "GtkClipboard*"
              , direction = DirectionIn
              , mayBeNull = False
              , argDoc =
                  Documentation
                    { rawDocText = Just "the #GtkClipboard" , sinceVersion = Nothing }
              , argScope = ScopeTypeInvalid
              , argClosure = -1
              , argDestroy = -1
              , argCallerAllocates = False
              , argCallbackUserData = False
              , transfer = TransferNothing
              }
          , Arg
              { argCName = "user_data_or_owner"
              , argType = TBasicType TPtr
              , argCType = Just "gpointer"
              , direction = DirectionIn
              , mayBeNull = True
              , argDoc =
                  Documentation
                    { rawDocText =
                        Just
                          "the @user_data argument passed to gtk_clipboard_set_with_data(),\n  or the @owner argument passed to gtk_clipboard_set_with_owner()"
                    , sinceVersion = Nothing
                    }
              , argScope = ScopeTypeInvalid
              , argClosure = -1
              , argDestroy = -1
              , argCallerAllocates = False
              , argCallbackUserData = False
              , transfer = TransferNothing
              }
          ]
      , skipReturn = False
      , callableThrows = False
      , callableDeprecated = Nothing
      , callableDocumentation =
          Documentation
            { rawDocText =
                Just
                  "A function that will be called when the contents of the clipboard are changed\nor cleared. Once this has called, the @user_data_or_owner argument\nwill not be used again."
            , sinceVersion = Nothing
            }
      , callableResolvable = Nothing
      }
    -}
    -- | Type for the callback on the (unwrapped) C side.
    type C_ClipboardClearFunc =
        Ptr Gtk.Clipboard.Clipboard ->
        Ptr () ->
        IO ()

    -- Args: [ Arg
    --           { argCName = "clipboard"
    --           , argType =
    --               TInterface Name { namespace = "Gtk" , name = "Clipboard" }
    --           , argCType = Just "GtkClipboard*"
    --           , direction = DirectionIn
    --           , mayBeNull = False
    --           , argDoc =
    --               Documentation
    --                 { rawDocText = Just "the #GtkClipboard" , sinceVersion = Nothing }
    --           , argScope = ScopeTypeInvalid
    --           , argClosure = -1
    --           , argDestroy = -1
    --           , argCallerAllocates = False
    --           , argCallbackUserData = False
    --           , transfer = TransferNothing
    --           }
    --       , Arg
    --           { argCName = "user_data_or_owner"
    --           , argType = TBasicType TPtr
    --           , argCType = Just "gpointer"
    --           , direction = DirectionIn
    --           , mayBeNull = True
    --           , argDoc =
    --               Documentation
    --                 { rawDocText =
    --                     Just
    --                       "the @user_data argument passed to gtk_clipboard_set_with_data(),\n  or the @owner argument passed to gtk_clipboard_set_with_owner()"
    --                 , sinceVersion = Nothing
    --                 }
    --           , argScope = ScopeTypeInvalid
    --           , argClosure = -1
    --           , argDestroy = -1
    --           , argCallerAllocates = False
    --           , argCallbackUserData = False
    --           , transfer = TransferNothing
    --           }
    --       ]
    -- Lengths: []
    -- returnType: Nothing
    -- throws : False
    -- Skip return : False

    foreign import ccall "dynamic" __dynamic_C_ClipboardClearFunc :: FunPtr C_ClipboardClearFunc -> C_ClipboardClearFunc

    -- | Given a pointer to a foreign C function, wrap it into a function callable from Haskell.
    dynamic_ClipboardClearFunc ::
        (B.CallStack.HasCallStack, MonadIO m, Gtk.Clipboard.IsClipboard a) =>
        FunPtr C_ClipboardClearFunc
        -> a
        -- ^ /@clipboard@/: the t'GI.Gtk.Objects.Clipboard.Clipboard'
        -> Ptr ()
        -- ^ /@userDataOrOwner@/: the /@userData@/ argument passed to @/gtk_clipboard_set_with_data()/@,
        --   or the /@owner@/ argument passed to @/gtk_clipboard_set_with_owner()/@
        -> m ()
    dynamic_ClipboardClearFunc :: forall (m :: * -> *) a.
    (HasCallStack, MonadIO m, IsClipboard a) =>
    FunPtr C_ClipboardClearFunc -> a -> Ptr () -> m ()
    dynamic_ClipboardClearFunc FunPtr C_ClipboardClearFunc
    __funPtr a
    clipboard Ptr ()
    userDataOrOwner = IO () -> m ()
    forall a. IO a -> m a
    forall (m :: * -> *) a. MonadIO m => IO a -> m a
    liftIO (IO () -> m ()) -> IO () -> m ()
    forall a b. (a -> b) -> a -> b
    $ do
        clipboard' <- a -> IO (Ptr Clipboard)
    forall a b. (HasCallStack, ManagedPtrNewtype a) => a -> IO (Ptr b)
    unsafeManagedPtrCastPtr a
    clipboard
        (__dynamic_C_ClipboardClearFunc __funPtr) clipboard' userDataOrOwner
        touchManagedPtr clipboard
        return ()

    -- | Generate a function pointer callable from C code, from a `C_ClipboardClearFunc`.
    foreign import ccall "wrapper"
        mk_ClipboardClearFunc :: C_ClipboardClearFunc -> IO (FunPtr C_ClipboardClearFunc)

    -- | A function that will be called when the contents of the clipboard are changed
    -- or cleared. Once this has called, the /@userDataOrOwner@/ argument
    -- will not be used again.
    type ClipboardClearFunc =
        Gtk.Clipboard.Clipboard
        -- ^ /@clipboard@/: the t'GI.Gtk.Objects.Clipboard.Clipboard'
        -> Ptr ()
        -- ^ /@userDataOrOwner@/: the /@userData@/ argument passed to @/gtk_clipboard_set_with_data()/@,
        --   or the /@owner@/ argument passed to @/gtk_clipboard_set_with_owner()/@
        -> IO ()

    -- | A convenience synonym for @`Nothing` :: `Maybe` `ClipboardClearFunc`@.
    noClipboardClearFunc :: Maybe ClipboardClearFunc
    noClipboardClearFunc :: Maybe ClipboardClearFunc
    noClipboardClearFunc = Maybe ClipboardClearFunc
    forall a. Maybe a
    Nothing

    -- | Wrap the callback into a `GClosure`.
    genClosure_ClipboardClearFunc :: MonadIO m => ClipboardClearFunc -> m (GClosure C_ClipboardClearFunc)
    genClosure_ClipboardClearFunc :: forall (m :: * -> *).
    MonadIO m =>
    ClipboardClearFunc -> m (GClosure C_ClipboardClearFunc)
    genClosure_ClipboardClearFunc ClipboardClearFunc
    cb = IO (GClosure C_ClipboardClearFunc)
    -> m (GClosure C_ClipboardClearFunc)
    forall a. IO a -> m a
    forall (m :: * -> *) a. MonadIO m => IO a -> m a
    liftIO (IO (GClosure C_ClipboardClearFunc)
     -> m (GClosure C_ClipboardClearFunc))
    -> IO (GClosure C_ClipboardClearFunc)
    -> m (GClosure C_ClipboardClearFunc)
    forall a b. (a -> b) -> a -> b
    $ do
        let cb' :: C_ClipboardClearFunc
    cb' = Maybe (Ptr (FunPtr C_ClipboardClearFunc))
    -> ClipboardClearFunc -> C_ClipboardClearFunc
    wrap_ClipboardClearFunc Maybe (Ptr (FunPtr C_ClipboardClearFunc))
    forall a. Maybe a
    Nothing ClipboardClearFunc
    cb
        C_ClipboardClearFunc -> IO (FunPtr C_ClipboardClearFunc)
    mk_ClipboardClearFunc C_ClipboardClearFunc
    cb' IO (FunPtr C_ClipboardClearFunc)
    -> (FunPtr C_ClipboardClearFunc
        -> IO (GClosure C_ClipboardClearFunc))
    -> IO (GClosure C_ClipboardClearFunc)
    forall a b. IO a -> (a -> IO b) -> IO b
    forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
    >>= FunPtr C_ClipboardClearFunc -> IO (GClosure C_ClipboardClearFunc)
    forall (m :: * -> *) a. MonadIO m => FunPtr a -> m (GClosure a)
    B.GClosure.newGClosure

    -- | Wrap a `ClipboardClearFunc` into a `C_ClipboardClearFunc`.
    wrap_ClipboardClearFunc ::
        Maybe (Ptr (FunPtr C_ClipboardClearFunc)) ->
        ClipboardClearFunc ->
        C_ClipboardClearFunc
    wrap_ClipboardClearFunc :: Maybe (Ptr (FunPtr C_ClipboardClearFunc))
    -> ClipboardClearFunc -> C_ClipboardClearFunc
    wrap_ClipboardClearFunc Maybe (Ptr (FunPtr C_ClipboardClearFunc))
    gi'funptrptr ClipboardClearFunc
    gi'cb Ptr Clipboard
    clipboard Ptr ()
    userDataOrOwner = do
        clipboard' <- ((ManagedPtr Clipboard -> Clipboard)
    -> Ptr Clipboard -> IO Clipboard
    forall a b.
    (HasCallStack, GObject a, GObject b) =>
    (ManagedPtr a -> a) -> Ptr b -> IO a
    newObject ManagedPtr Clipboard -> Clipboard
    Gtk.Clipboard.Clipboard) Ptr Clipboard
    clipboard
        gi'cb  clipboard' userDataOrOwner
        maybeReleaseFunPtr gi'funptrptr

    -- callback CellLayoutDataFunc
    {- Callable
      { returnType = Nothing
      , returnMayBeNull = False
      , returnTransfer = TransferNothing
      , returnDocumentation =
          Documentation { rawDocText = Nothing , sinceVersion = Nothing }
      , args =
          [ Arg
              { argCName = "cell_layout"
              , argType =
                  TInterface Name { namespace = "Gtk" , name = "CellLayout" }
              , argCType = Just "GtkCellLayout*"
              , direction = DirectionIn
              , mayBeNull = False
              , argDoc =
                  Documentation
                    { rawDocText = Just "a #GtkCellLayout" , sinceVersion = Nothing }
              , argScope = ScopeTypeInvalid
              , argClosure = -1
              , argDestroy = -1
              , argCallerAllocates = False
              , argCallbackUserData = False
              , transfer = TransferNothing
              }
          , Arg
              { argCName = "cell"
              , argType =
                  TInterface Name { namespace = "Gtk" , name = "CellRenderer" }
              , argCType = Just "GtkCellRenderer*"
              , direction = DirectionIn
              , mayBeNull = False
              , argDoc =
                  Documentation
                    { rawDocText = Just "the cell renderer whose value is to be set"
                    , sinceVersion = Nothing
                    }
              , argScope = ScopeTypeInvalid
              , argClosure = -1
              , argDestroy = -1
              , argCallerAllocates = False
              , argCallbackUserData = False
              , transfer = TransferNothing
              }
          , Arg
              { argCName = "tree_model"
              , argType =
                  TInterface Name { namespace = "Gtk" , name = "TreeModel" }
              , argCType = Just "GtkTreeModel*"
              , direction = DirectionIn
              , mayBeNull = False
              , argDoc =
                  Documentation
                    { rawDocText = Just "the model" , sinceVersion = Nothing }
              , argScope = ScopeTypeInvalid
              , argClosure = -1
              , argDestroy = -1
              , argCallerAllocates = False
              , argCallbackUserData = False
              , transfer = TransferNothing
              }
          , Arg
              { argCName = "iter"
              , argType =
                  TInterface Name { namespace = "Gtk" , name = "TreeIter" }
              , argCType = Just "GtkTreeIter*"
              , direction = DirectionIn
              , mayBeNull = False
              , argDoc =
                  Documentation
                    { rawDocText =
                        Just "a #GtkTreeIter indicating the row to set the value for"
                    , sinceVersion = Nothing
                    }
              , argScope = ScopeTypeInvalid
              , argClosure = -1
              , argDestroy = -1
              , argCallerAllocates = False
              , argCallbackUserData = False
              , transfer = TransferNothing
              }
          , Arg
              { argCName = "data"
              , argType = TBasicType TPtr
              , argCType = Just "gpointer"
              , direction = DirectionIn
              , mayBeNull = True
              , argDoc =
                  Documentation
                    { rawDocText =
                        Just "user data passed to gtk_cell_layout_set_cell_data_func()"
                    , sinceVersion = Nothing
                    }
              , argScope = ScopeTypeInvalid
              , argClosure = -1
              , argDestroy = -1
              , argCallerAllocates = False
              , argCallbackUserData = True
              , transfer = TransferNothing
              }
          ]
      , skipReturn = False
      , callableThrows = False
      , callableDeprecated = Nothing
      , callableDocumentation =
          Documentation
            { rawDocText =
                Just
                  "A function which should set the value of @cell_layout\8217s cell renderer(s)\nas appropriate."
            , sinceVersion = Nothing
            }
      , callableResolvable = Nothing
      }
    -}
    -- | Type for the callback on the (unwrapped) C side.
    type C_CellLayoutDataFunc =
        Ptr Gtk.CellLayout.CellLayout ->
        Ptr Gtk.CellRenderer.CellRenderer ->
        Ptr Gtk.TreeModel.TreeModel ->
        Ptr Gtk.TreeIter.TreeIter ->
        Ptr () ->
        IO ()

    -- Args: [ Arg
    --           { argCName = "cell_layout"
    --           , argType =
    --               TInterface Name { namespace = "Gtk" , name = "CellLayout" }
    --           , argCType = Just "GtkCellLayout*"
    --           , direction = DirectionIn
    --           , mayBeNull = False
    --           , argDoc =
    --               Documentation
    --                 { rawDocText = Just "a #GtkCellLayout" , sinceVersion = Nothing }
    --           , argScope = ScopeTypeInvalid
    --           , argClosure = -1
    --           , argDestroy = -1
    --           , argCallerAllocates = False
    --           , argCallbackUserData = False
    --           , transfer = TransferNothing
    --           }
    --       , Arg
    --           { argCName = "cell"
    --           , argType =
    --               TInterface Name { namespace = "Gtk" , name = "CellRenderer" }
    --           , argCType = Just "GtkCellRenderer*"
    --           , direction = DirectionIn
    --           , mayBeNull = False
    --           , argDoc =
    --               Documentation
    --                 { rawDocText = Just "the cell renderer whose value is to be set"
    --                 , sinceVersion = Nothing
    --                 }
    --           , argScope = ScopeTypeInvalid
    --           , argClosure = -1
    --           , argDestroy = -1
    --           , argCallerAllocates = False
    --           , argCallbackUserData = False
    --           , transfer = TransferNothing
    --           }
    --       , Arg
    --           { argCName = "tree_model"
    --           , argType =
    --               TInterface Name { namespace = "Gtk" , name = "TreeModel" }
    --           , argCType = Just "GtkTreeModel*"
    --           , direction = DirectionIn
    --           , mayBeNull = False
    --           , argDoc =
    --               Documentation
    --                 { rawDocText = Just "the model" , sinceVersion = Nothing }
    --           , argScope = ScopeTypeInvalid
    --           , argClosure = -1
    --           , argDestroy = -1
    --           , argCallerAllocates = False
    --           , argCallbackUserData = False
    --           , transfer = TransferNothing
    --           }
    --       , Arg
    --           { argCName = "iter"
    --           , argType =
    --               TInterface Name { namespace = "Gtk" , name = "TreeIter" }
    --           , argCType = Just "GtkTreeIter*"
    --           , direction = DirectionIn
    --           , mayBeNull = False
    --           , argDoc =
    --               Documentation
    --                 { rawDocText =
    --                     Just "a #GtkTreeIter indicating the row to set the value for"
    --                 , sinceVersion = Nothing
    --                 }
    --           , argScope = ScopeTypeInvalid
    --           , argClosure = -1
    --           , argDestroy = -1
    --           , argCallerAllocates = False
    --           , argCallbackUserData = False
    --           , transfer = TransferNothing
    --           }
    --       , Arg
    --           { argCName = "data"
    --           , argType = TBasicType TPtr
    --           , argCType = Just "gpointer"
    --           , direction = DirectionIn
    --           , mayBeNull = True
    --           , argDoc =
    --               Documentation
    --                 { rawDocText =
    --                     Just "user data passed to gtk_cell_layout_set_cell_data_func()"
    --                 , sinceVersion = Nothing
    --                 }
    --           , argScope = ScopeTypeInvalid
    --           , argClosure = -1
    --           , argDestroy = -1
    --           , argCallerAllocates = False
    --           , argCallbackUserData = True
    --           , transfer = TransferNothing
    --           }
    --       ]
    -- Lengths: []
    -- returnType: Nothing
    -- throws : False
    -- Skip return : False

    foreign import ccall "dynamic" __dynamic_C_CellLayoutDataFunc :: FunPtr C_CellLayoutDataFunc -> C_CellLayoutDataFunc

    -- | Given a pointer to a foreign C function, wrap it into a function callable from Haskell.
    dynamic_CellLayoutDataFunc ::
        (B.CallStack.HasCallStack, MonadIO m, Gtk.CellLayout.IsCellLayout a, Gtk.CellRenderer.IsCellRenderer b, Gtk.TreeModel.IsTreeModel c) =>
        FunPtr C_CellLayoutDataFunc
        -> a
        -- ^ /@cellLayout@/: a t'GI.Gtk.Interfaces.CellLayout.CellLayout'
        -> b
        -- ^ /@cell@/: the cell renderer whose value is to be set
        -> c
        -- ^ /@treeModel@/: the model
        -> Gtk.TreeIter.TreeIter
        -- ^ /@iter@/: a t'GI.Gtk.Structs.TreeIter.TreeIter' indicating the row to set the value for
        -> Ptr ()
        -- ^ /@data@/: user data passed to 'GI.Gtk.Interfaces.CellLayout.cellLayoutSetCellDataFunc'
        -> m ()
    dynamic_CellLayoutDataFunc :: forall (m :: * -> *) a b c.
    (HasCallStack, MonadIO m, IsCellLayout a, IsCellRenderer b,
     IsTreeModel c) =>
    FunPtr C_CellLayoutDataFunc
    -> a -> b -> c -> TreeIter -> Ptr () -> m ()
    dynamic_CellLayoutDataFunc FunPtr C_CellLayoutDataFunc
    __funPtr a
    cellLayout b
    cell c
    treeModel TreeIter
    iter Ptr ()
    data_ = IO () -> m ()
    forall a. IO a -> m a
    forall (m :: * -> *) a. MonadIO m => IO a -> m a
    liftIO (IO () -> m ()) -> IO () -> m ()
    forall a b. (a -> b) -> a -> b
    $ do
        cellLayout' <- a -> IO (Ptr CellLayout)
    forall a b. (HasCallStack, ManagedPtrNewtype a) => a -> IO (Ptr b)
    unsafeManagedPtrCastPtr a
    cellLayout
        cell' <- unsafeManagedPtrCastPtr cell
        treeModel' <- unsafeManagedPtrCastPtr treeModel
        iter' <- unsafeManagedPtrGetPtr iter
        (__dynamic_C_CellLayoutDataFunc __funPtr) cellLayout' cell' treeModel' iter' data_
        touchManagedPtr cellLayout
        touchManagedPtr cell
        touchManagedPtr treeModel
        touchManagedPtr iter
        return ()

    -- | Generate a function pointer callable from C code, from a `C_CellLayoutDataFunc`.
    foreign import ccall "wrapper"
        mk_CellLayoutDataFunc :: C_CellLayoutDataFunc -> IO (FunPtr C_CellLayoutDataFunc)

    -- | A function which should set the value of /@cellLayout@/’s cell renderer(s)
    -- as appropriate.
    type CellLayoutDataFunc =
        Gtk.CellLayout.CellLayout
        -- ^ /@cellLayout@/: a t'GI.Gtk.Interfaces.CellLayout.CellLayout'
        -> Gtk.CellRenderer.CellRenderer
        -- ^ /@cell@/: the cell renderer whose value is to be set
        -> Gtk.TreeModel.TreeModel
        -- ^ /@treeModel@/: the model
        -> Gtk.TreeIter.TreeIter
        -- ^ /@iter@/: a t'GI.Gtk.Structs.TreeIter.TreeIter' indicating the row to set the value for
        -> IO ()

    -- | A convenience synonym for @`Nothing` :: `Maybe` `CellLayoutDataFunc`@.
    noCellLayoutDataFunc :: Maybe CellLayoutDataFunc
    noCellLayoutDataFunc :: Maybe CellLayoutDataFunc
    noCellLayoutDataFunc = Maybe CellLayoutDataFunc
    forall a. Maybe a
    Nothing

    -- | A function which should set the value of /@cellLayout@/’s cell renderer(s)
    -- as appropriate.
    type CellLayoutDataFunc_WithClosures =
        Gtk.CellLayout.CellLayout
        -- ^ /@cellLayout@/: a t'GI.Gtk.Interfaces.CellLayout.CellLayout'
        -> Gtk.CellRenderer.CellRenderer
        -- ^ /@cell@/: the cell renderer whose value is to be set
        -> Gtk.TreeModel.TreeModel
        -- ^ /@treeModel@/: the model
        -> Gtk.TreeIter.TreeIter
        -- ^ /@iter@/: a t'GI.Gtk.Structs.TreeIter.TreeIter' indicating the row to set the value for
        -> Ptr ()
        -- ^ /@data@/: user data passed to 'GI.Gtk.Interfaces.CellLayout.cellLayoutSetCellDataFunc'
        -> IO ()

    -- | A convenience synonym for @`Nothing` :: `Maybe` `CellLayoutDataFunc_WithClosures`@.
    noCellLayoutDataFunc_WithClosures :: Maybe CellLayoutDataFunc_WithClosures
    noCellLayoutDataFunc_WithClosures :: Maybe CellLayoutDataFunc_WithClosures
    noCellLayoutDataFunc_WithClosures = Maybe CellLayoutDataFunc_WithClosures
    forall a. Maybe a
    Nothing

    -- | A simple wrapper that ignores the closure arguments.
    drop_closures_CellLayoutDataFunc :: CellLayoutDataFunc -> CellLayoutDataFunc_WithClosures
    drop_closures_CellLayoutDataFunc :: CellLayoutDataFunc -> CellLayoutDataFunc_WithClosures
    drop_closures_CellLayoutDataFunc CellLayoutDataFunc
    _f CellLayout
    cellLayout CellRenderer
    cell TreeModel
    treeModel TreeIter
    iter Ptr ()
    _ = CellLayoutDataFunc
    _f CellLayout
    cellLayout CellRenderer
    cell TreeModel
    treeModel TreeIter
    iter

    -- | Wrap the callback into a `GClosure`.
    genClosure_CellLayoutDataFunc :: MonadIO m => CellLayoutDataFunc -> m (GClosure C_CellLayoutDataFunc)
    genClosure_CellLayoutDataFunc :: forall (m :: * -> *).
    MonadIO m =>
    CellLayoutDataFunc -> m (GClosure C_CellLayoutDataFunc)
    genClosure_CellLayoutDataFunc CellLayoutDataFunc
    cb = IO (GClosure C_CellLayoutDataFunc)
    -> m (GClosure C_CellLayoutDataFunc)
    forall a. IO a -> m a
    forall (m :: * -> *) a. MonadIO m => IO a -> m a
    liftIO (IO (GClosure C_CellLayoutDataFunc)
     -> m (GClosure C_CellLayoutDataFunc))
    -> IO (GClosure C_CellLayoutDataFunc)
    -> m (GClosure C_CellLayoutDataFunc)
    forall a b. (a -> b) -> a -> b
    $ do
        let cb' :: CellLayoutDataFunc_WithClosures
    cb' = CellLayoutDataFunc -> CellLayoutDataFunc_WithClosures
    drop_closures_CellLayoutDataFunc CellLayoutDataFunc
    cb
        let cb'' :: C_CellLayoutDataFunc
    cb'' = Maybe (Ptr (FunPtr C_CellLayoutDataFunc))
    -> CellLayoutDataFunc_WithClosures -> C_CellLayoutDataFunc
    wrap_CellLayoutDataFunc Maybe (Ptr (FunPtr C_CellLayoutDataFunc))
    forall a. Maybe a
    Nothing CellLayoutDataFunc_WithClosures
    cb'
        C_CellLayoutDataFunc -> IO (FunPtr C_CellLayoutDataFunc)
    mk_CellLayoutDataFunc C_CellLayoutDataFunc
    cb'' IO (FunPtr C_CellLayoutDataFunc)
    -> (FunPtr C_CellLayoutDataFunc
        -> IO (GClosure C_CellLayoutDataFunc))
    -> IO (GClosure C_CellLayoutDataFunc)
    forall a b. IO a -> (a -> IO b) -> IO b
    forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
    >>= FunPtr C_CellLayoutDataFunc -> IO (GClosure C_CellLayoutDataFunc)
    forall (m :: * -> *) a. MonadIO m => FunPtr a -> m (GClosure a)
    B.GClosure.newGClosure

    -- | Wrap a `CellLayoutDataFunc` into a `C_CellLayoutDataFunc`.
    wrap_CellLayoutDataFunc ::
        Maybe (Ptr (FunPtr C_CellLayoutDataFunc)) ->
        CellLayoutDataFunc_WithClosures ->
        C_CellLayoutDataFunc
    wrap_CellLayoutDataFunc :: Maybe (Ptr (FunPtr C_CellLayoutDataFunc))
    -> CellLayoutDataFunc_WithClosures -> C_CellLayoutDataFunc
    wrap_CellLayoutDataFunc Maybe (Ptr (FunPtr C_CellLayoutDataFunc))
    gi'funptrptr CellLayoutDataFunc_WithClosures
    gi'cb Ptr CellLayout
    cellLayout Ptr CellRenderer
    cell Ptr TreeModel
    treeModel Ptr TreeIter
    iter Ptr ()
    data_ = do
        cellLayout' <- ((ManagedPtr CellLayout -> CellLayout)
    -> Ptr CellLayout -> IO CellLayout
    forall a b.
    (HasCallStack, GObject a, GObject b) =>
    (ManagedPtr a -> a) -> Ptr b -> IO a
    newObject ManagedPtr CellLayout -> CellLayout
    Gtk.CellLayout.CellLayout) Ptr CellLayout
    cellLayout
        cell' <- (newObject Gtk.CellRenderer.CellRenderer) cell
        treeModel' <- (newObject Gtk.TreeModel.TreeModel) treeModel
        B.ManagedPtr.withTransient  iter $ \TreeIter
    iter' -> do
            CellLayoutDataFunc_WithClosures
    gi'cb  CellLayout
    cellLayout' CellRenderer
    cell' TreeModel
    treeModel' TreeIter
    iter' Ptr ()
    data_
            Maybe (Ptr (FunPtr C_CellLayoutDataFunc)) -> IO ()
    forall a. Maybe (Ptr (FunPtr a)) -> IO ()
    maybeReleaseFunPtr Maybe (Ptr (FunPtr C_CellLayoutDataFunc))
    gi'funptrptr

    -- callback CellCallback
    {- Callable
      { returnType = Just (TBasicType TBoolean)
      , returnMayBeNull = False
      , returnTransfer = TransferNothing
      , returnDocumentation =
          Documentation
            { rawDocText = Just "%TRUE to stop iterating over cells."
            , sinceVersion = Nothing
            }
      , args =
          [ Arg
              { argCName = "renderer"
              , argType =
                  TInterface Name { namespace = "Gtk" , name = "CellRenderer" }
              , argCType = Just "GtkCellRenderer*"
              , direction = DirectionIn
              , mayBeNull = False
              , argDoc =
                  Documentation
                    { rawDocText = Just "the cell renderer to operate on"
                    , sinceVersion = Nothing
                    }
              , argScope = ScopeTypeInvalid
              , argClosure = -1
              , argDestroy = -1
              , argCallerAllocates = False
              , argCallbackUserData = False
              , transfer = TransferNothing
              }
          , Arg
              { argCName = "data"
              , argType = TBasicType TPtr
              , argCType = Just "gpointer"
              , direction = DirectionIn
              , mayBeNull = True
              , argDoc =
                  Documentation
                    { rawDocText = Just "user-supplied data" , sinceVersion = Nothing }
              , argScope = ScopeTypeInvalid
              , argClosure = -1
              , argDestroy = -1
              , argCallerAllocates = False
              , argCallbackUserData = True
              , transfer = TransferNothing
              }
          ]
      , skipReturn = False
      , callableThrows = False
      , callableDeprecated = Nothing
      , callableDocumentation =
          Documentation
            { rawDocText =
                Just
                  "The type of the callback functions used for iterating over\nthe cell renderers of a #GtkCellArea, see gtk_cell_area_foreach()."
            , sinceVersion = Nothing
            }
      , callableResolvable = Nothing
      }
    -}
    -- | Type for the callback on the (unwrapped) C side.
    type C_CellCallback =
        Ptr Gtk.CellRenderer.CellRenderer ->
        Ptr () ->
        IO CInt

    -- Args: [ Arg
    --           { argCName = "renderer"
    --           , argType =
    --               TInterface Name { namespace = "Gtk" , name = "CellRenderer" }
    --           , argCType = Just "GtkCellRenderer*"
    --           , direction = DirectionIn
    --           , mayBeNull = False
    --           , argDoc =
    --               Documentation
    --                 { rawDocText = Just "the cell renderer to operate on"
    --                 , sinceVersion = Nothing
    --                 }
    --           , argScope = ScopeTypeInvalid
    --           , argClosure = -1
    --           , argDestroy = -1
    --           , argCallerAllocates = False
    --           , argCallbackUserData = False
    --           , transfer = TransferNothing
    --           }
    --       , Arg
    --           { argCName = "data"
    --           , argType = TBasicType TPtr
    --           , argCType = Just "gpointer"
    --           , direction = DirectionIn
    --           , mayBeNull = True
    --           , argDoc =
    --               Documentation
    --                 { rawDocText = Just "user-supplied data" , sinceVersion = Nothing }
    --           , argScope = ScopeTypeInvalid
    --           , argClosure = -1
    --           , argDestroy = -1
    --           , argCallerAllocates = False
    --           , argCallbackUserData = True
    --           , transfer = TransferNothing
    --           }
    --       ]
    -- Lengths: []
    -- returnType: Just (TBasicType TBoolean)
    -- throws : False
    -- Skip return : False

    foreign import ccall "dynamic" __dynamic_C_CellCallback :: FunPtr C_CellCallback -> C_CellCallback

    -- | Given a pointer to a foreign C function, wrap it into a function callable from Haskell.
    dynamic_CellCallback ::
        (B.CallStack.HasCallStack, MonadIO m, Gtk.CellRenderer.IsCellRenderer a) =>
        FunPtr C_CellCallback
        -> a
        -- ^ /@renderer@/: the cell renderer to operate on
        -> Ptr ()
        -- ^ /@data@/: user-supplied data
        -> m Bool
        -- ^ __Returns:__ 'P.True' to stop iterating over cells.
    dynamic_CellCallback :: forall (m :: * -> *) a.
    (HasCallStack, MonadIO m, IsCellRenderer a) =>
    FunPtr C_CellCallback -> a -> Ptr () -> m Bool
    dynamic_CellCallback FunPtr C_CellCallback
    __funPtr a
    renderer Ptr ()
    data_ = IO Bool -> m Bool
    forall a. IO a -> m a
    forall (m :: * -> *) a. MonadIO m => IO a -> m a
    liftIO (IO Bool -> m Bool) -> IO Bool -> m Bool
    forall a b. (a -> b) -> a -> b
    $ do
        renderer' <- a -> IO (Ptr CellRenderer)
    forall a b. (HasCallStack, ManagedPtrNewtype a) => a -> IO (Ptr b)
    unsafeManagedPtrCastPtr a
    renderer
        result <- (__dynamic_C_CellCallback __funPtr) renderer' data_
        let result' = (CInt -> CInt -> Bool
    forall a. Eq a => a -> a -> Bool
    /= CInt
    0) CInt
    result
        touchManagedPtr renderer
        return result'

    -- | Generate a function pointer callable from C code, from a `C_CellCallback`.
    foreign import ccall "wrapper"
        mk_CellCallback :: C_CellCallback -> IO (FunPtr C_CellCallback)

    -- | The type of the callback functions used for iterating over
    -- the cell renderers of a t'GI.Gtk.Objects.CellArea.CellArea', see 'GI.Gtk.Objects.CellArea.cellAreaForeach'.
    type CellCallback =
        Gtk.CellRenderer.CellRenderer
        -- ^ /@renderer@/: the cell renderer to operate on
        -> IO Bool
        -- ^ __Returns:__ 'P.True' to stop iterating over cells.

    -- | A convenience synonym for @`Nothing` :: `Maybe` `CellCallback`@.
    noCellCallback :: Maybe CellCallback
    noCellCallback :: Maybe CellCallback
    noCellCallback = Maybe CellCallback
    forall a. Maybe a
    Nothing

    -- | The type of the callback functions used for iterating over
    -- the cell renderers of a t'GI.Gtk.Objects.CellArea.CellArea', see 'GI.Gtk.Objects.CellArea.cellAreaForeach'.
    type CellCallback_WithClosures =
        Gtk.CellRenderer.CellRenderer
        -- ^ /@renderer@/: the cell renderer to operate on
        -> Ptr ()
        -- ^ /@data@/: user-supplied data
        -> IO Bool
        -- ^ __Returns:__ 'P.True' to stop iterating over cells.

    -- | A convenience synonym for @`Nothing` :: `Maybe` `CellCallback_WithClosures`@.
    noCellCallback_WithClosures :: Maybe CellCallback_WithClosures
    noCellCallback_WithClosures :: Maybe CellCallback_WithClosures
    noCellCallback_WithClosures = Maybe CellCallback_WithClosures
    forall a. Maybe a
    Nothing

    -- | A simple wrapper that ignores the closure arguments.
    drop_closures_CellCallback :: CellCallback -> CellCallback_WithClosures
    drop_closures_CellCallback :: CellCallback -> CellCallback_WithClosures
    drop_closures_CellCallback CellCallback
    _f CellRenderer
    renderer Ptr ()
    _ = CellCallback
    _f CellRenderer
    renderer

    -- | Wrap the callback into a `GClosure`.
    genClosure_CellCallback :: MonadIO m => CellCallback -> m (GClosure C_CellCallback)
    genClosure_CellCallback :: forall (m :: * -> *).
    MonadIO m =>
    CellCallback -> m (GClosure C_CellCallback)
    genClosure_CellCallback CellCallback
    cb = IO (GClosure C_CellCallback) -> m (GClosure C_CellCallback)
    forall a. IO a -> m a
    forall (m :: * -> *) a. MonadIO m => IO a -> m a
    liftIO (IO (GClosure C_CellCallback) -> m (GClosure C_CellCallback))
    -> IO (GClosure C_CellCallback) -> m (GClosure C_CellCallback)
    forall a b. (a -> b) -> a -> b
    $ do
        let cb' :: CellCallback_WithClosures
    cb' = CellCallback -> CellCallback_WithClosures
    drop_closures_CellCallback CellCallback
    cb
        let cb'' :: C_CellCallback
    cb'' = Maybe (Ptr (FunPtr C_CellCallback))
    -> CellCallback_WithClosures -> C_CellCallback
    wrap_CellCallback Maybe (Ptr (FunPtr C_CellCallback))
    forall a. Maybe a
    Nothing CellCallback_WithClosures
    cb'
        C_CellCallback -> IO (FunPtr C_CellCallback)
    mk_CellCallback C_CellCallback
    cb'' IO (FunPtr C_CellCallback)
    -> (FunPtr C_CellCallback -> IO (GClosure C_CellCallback))
    -> IO (GClosure C_CellCallback)
    forall a b. IO a -> (a -> IO b) -> IO b
    forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
    >>= FunPtr C_CellCallback -> IO (GClosure C_CellCallback)
    forall (m :: * -> *) a. MonadIO m => FunPtr a -> m (GClosure a)
    B.GClosure.newGClosure

    -- | Wrap a `CellCallback` into a `C_CellCallback`.
    wrap_CellCallback ::
        Maybe (Ptr (FunPtr C_CellCallback)) ->
        CellCallback_WithClosures ->
        C_CellCallback
    wrap_CellCallback :: Maybe (Ptr (FunPtr C_CellCallback))
    -> CellCallback_WithClosures -> C_CellCallback
    wrap_CellCallback Maybe (Ptr (FunPtr C_CellCallback))
    gi'funptrptr CellCallback_WithClosures
    gi'cb Ptr CellRenderer
    renderer Ptr ()
    data_ = do
        renderer' <- ((ManagedPtr CellRenderer -> CellRenderer)
    -> Ptr CellRenderer -> IO CellRenderer
    forall a b.
    (HasCallStack, GObject a, GObject b) =>
    (ManagedPtr a -> a) -> Ptr b -> IO a
    newObject ManagedPtr CellRenderer -> CellRenderer
    Gtk.CellRenderer.CellRenderer) Ptr CellRenderer
    renderer
        result <- gi'cb  renderer' data_
        maybeReleaseFunPtr gi'funptrptr
        let result' = (Int -> CInt
    forall a b. (Integral a, Num b) => a -> b
    P.fromIntegral (Int -> CInt) -> (Bool -> Int) -> Bool -> CInt
    forall b c a. (b -> c) -> (a -> b) -> a -> c
    . Bool -> Int
    forall a. Enum a => a -> Int
    P.fromEnum) Bool
    result
        return result'

    -- callback CellAllocCallback
    {- Callable
      { returnType = Just (TBasicType TBoolean)
      , returnMayBeNull = False
      , returnTransfer = TransferNothing
      , returnDocumentation =
          Documentation
            { rawDocText = Just "%TRUE to stop iterating over cells."
            , sinceVersion = Nothing
            }
      , args =
          [ Arg
              { argCName = "renderer"
              , argType =
                  TInterface Name { namespace = "Gtk" , name = "CellRenderer" }
              , argCType = Just "GtkCellRenderer*"
              , direction = DirectionIn
              , mayBeNull = False
              , argDoc =
                  Documentation
                    { rawDocText = Just "the cell renderer to operate on"
                    , sinceVersion = Nothing
                    }
              , argScope = ScopeTypeInvalid
              , argClosure = -1
              , argDestroy = -1
              , argCallerAllocates = False
              , argCallbackUserData = False
              , transfer = TransferNothing
              }
          , Arg
              { argCName = "cell_area"
              , argType =
                  TInterface Name { namespace = "Gdk" , name = "Rectangle" }
              , argCType = Just "const GdkRectangle*"
              , direction = DirectionIn
              , mayBeNull = False
              , argDoc =
                  Documentation
                    { rawDocText =
                        Just
                          "the area allocated to @renderer inside the rectangle\n    provided to gtk_cell_area_foreach_alloc()."
                    , sinceVersion = Nothing
                    }
              , argScope = ScopeTypeInvalid
              , argClosure = -1
              , argDestroy = -1
              , argCallerAllocates = False
              , argCallbackUserData = False
              , transfer = TransferNothing
              }
          , Arg
              { argCName = "cell_background"
              , argType =
                  TInterface Name { namespace = "Gdk" , name = "Rectangle" }
              , argCType = Just "const GdkRectangle*"
              , direction = DirectionIn
              , mayBeNull = False
              , argDoc =
                  Documentation
                    { rawDocText =
                        Just
                          "the background area for @renderer inside the\n    background area provided to gtk_cell_area_foreach_alloc()."
                    , sinceVersion = Nothing
                    }
              , argScope = ScopeTypeInvalid
              , argClosure = -1
              , argDestroy = -1
              , argCallerAllocates = False
              , argCallbackUserData = False
              , transfer = TransferNothing
              }
          , Arg
              { argCName = "data"
              , argType = TBasicType TPtr
              , argCType = Just "gpointer"
              , direction = DirectionIn
              , mayBeNull = True
              , argDoc =
                  Documentation
                    { rawDocText = Just "user-supplied data" , sinceVersion = Nothing }
              , argScope = ScopeTypeInvalid
              , argClosure = -1
              , argDestroy = -1
              , argCallerAllocates = False
              , argCallbackUserData = True
              , transfer = TransferNothing
              }
          ]
      , skipReturn = False
      , callableThrows = False
      , callableDeprecated = Nothing
      , callableDocumentation =
          Documentation
            { rawDocText =
                Just
                  "The type of the callback functions used for iterating over the\ncell renderers and their allocated areas inside a #GtkCellArea,\nsee gtk_cell_area_foreach_alloc()."
            , sinceVersion = Nothing
            }
      , callableResolvable = Nothing
      }
    -}
    -- | Type for the callback on the (unwrapped) C side.
    type C_CellAllocCallback =
        Ptr Gtk.CellRenderer.CellRenderer ->
        Ptr Gdk.Rectangle.Rectangle ->
        Ptr Gdk.Rectangle.Rectangle ->
        Ptr () ->
        IO CInt

    -- Args: [ Arg
    --           { argCName = "renderer"
    --           , argType =
    --               TInterface Name { namespace = "Gtk" , name = "CellRenderer" }
    --           , argCType = Just "GtkCellRenderer*"
    --           , direction = DirectionIn
    --           , mayBeNull = False
    --           , argDoc =
    --               Documentation
    --                 { rawDocText = Just "the cell renderer to operate on"
    --                 , sinceVersion = Nothing
    --                 }
    --           , argScope = ScopeTypeInvalid
    --           , argClosure = -1
    --           , argDestroy = -1
    --           , argCallerAllocates = False
    --           , argCallbackUserData = False
    --           , transfer = TransferNothing
    --           }
    --       , Arg
    --           { argCName = "cell_area"
    --           , argType =
    --               TInterface Name { namespace = "Gdk" , name = "Rectangle" }
    --           , argCType = Just "const GdkRectangle*"
    --           , direction = DirectionIn
    --           , mayBeNull = False
    --           , argDoc =
    --               Documentation
    --                 { rawDocText =
    --                     Just
    --                       "the area allocated to @renderer inside the rectangle\n    provided to gtk_cell_area_foreach_alloc()."
    --                 , sinceVersion = Nothing
    --                 }
    --           , argScope = ScopeTypeInvalid
    --           , argClosure = -1
    --           , argDestroy = -1
    --           , argCallerAllocates = False
    --           , argCallbackUserData = False
    --           , transfer = TransferNothing
    --           }
    --       , Arg
    --           { argCName = "cell_background"
    --           , argType =
    --               TInterface Name { namespace = "Gdk" , name = "Rectangle" }
    --           , argCType = Just "const GdkRectangle*"
    --           , direction = DirectionIn
    --           , mayBeNull = False
    --           , argDoc =
    --               Documentation
    --                 { rawDocText =
    --                     Just
    --                       "the background area for @renderer inside the\n    background area provided to gtk_cell_area_foreach_alloc()."
    --                 , sinceVersion = Nothing
    --                 }
    --           , argScope = ScopeTypeInvalid
    --           , argClosure = -1
    --           , argDestroy = -1
    --           , argCallerAllocates = False
    --           , argCallbackUserData = False
    --           , transfer = TransferNothing
    --           }
    --       , Arg
    --           { argCName = "data"
    --           , argType = TBasicType TPtr
    --           , argCType = Just "gpointer"
    --           , direction = DirectionIn
    --           , mayBeNull = True
    --           , argDoc =
    --               Documentation
    --                 { rawDocText = Just "user-supplied data" , sinceVersion = Nothing }
    --           , argScope = ScopeTypeInvalid
    --           , argClosure = -1
    --           , argDestroy = -1
    --           , argCallerAllocates = False
    --           , argCallbackUserData = True
    --           , transfer = TransferNothing
    --           }
    --       ]
    -- Lengths: []
    -- returnType: Just (TBasicType TBoolean)
    -- throws : False
    -- Skip return : False

    foreign import ccall "dynamic" __dynamic_C_CellAllocCallback :: FunPtr C_CellAllocCallback -> C_CellAllocCallback

    -- | Given a pointer to a foreign C function, wrap it into a function callable from Haskell.
    dynamic_CellAllocCallback ::
        (B.CallStack.HasCallStack, MonadIO m, Gtk.CellRenderer.IsCellRenderer a) =>
        FunPtr C_CellAllocCallback
        -> a
        -- ^ /@renderer@/: the cell renderer to operate on
        -> Gdk.Rectangle.Rectangle
        -- ^ /@cellArea@/: the area allocated to /@renderer@/ inside the rectangle
        --     provided to 'GI.Gtk.Objects.CellArea.cellAreaForeachAlloc'.
        -> Gdk.Rectangle.Rectangle
        -- ^ /@cellBackground@/: the background area for /@renderer@/ inside the
        --     background area provided to 'GI.Gtk.Objects.CellArea.cellAreaForeachAlloc'.
        -> Ptr ()
        -- ^ /@data@/: user-supplied data
        -> m Bool
        -- ^ __Returns:__ 'P.True' to stop iterating over cells.
    dynamic_CellAllocCallback :: forall (m :: * -> *) a.
    (HasCallStack, MonadIO m, IsCellRenderer a) =>
    FunPtr C_CellAllocCallback
    -> a -> Rectangle -> Rectangle -> Ptr () -> m Bool
    dynamic_CellAllocCallback FunPtr C_CellAllocCallback
    __funPtr a
    renderer Rectangle
    cellArea Rectangle
    cellBackground Ptr ()
    data_ = IO Bool -> m Bool
    forall a. IO a -> m a
    forall (m :: * -> *) a. MonadIO m => IO a -> m a
    liftIO (IO Bool -> m Bool) -> IO Bool -> m Bool
    forall a b. (a -> b) -> a -> b
    $ do
        renderer' <- a -> IO (Ptr CellRenderer)
    forall a b. (HasCallStack, ManagedPtrNewtype a) => a -> IO (Ptr b)
    unsafeManagedPtrCastPtr a
    renderer
        cellArea' <- unsafeManagedPtrGetPtr cellArea
        cellBackground' <- unsafeManagedPtrGetPtr cellBackground
        result <- (__dynamic_C_CellAllocCallback __funPtr) renderer' cellArea' cellBackground' data_
        let result' = (CInt -> CInt -> Bool
    forall a. Eq a => a -> a -> Bool
    /= CInt
    0) CInt
    result
        touchManagedPtr renderer
        touchManagedPtr cellArea
        touchManagedPtr cellBackground
        return result'

    -- | Generate a function pointer callable from C code, from a `C_CellAllocCallback`.
    foreign import ccall "wrapper"
        mk_CellAllocCallback :: C_CellAllocCallback -> IO (FunPtr C_CellAllocCallback)

    -- | The type of the callback functions used for iterating over the
    -- cell renderers and their allocated areas inside a t'GI.Gtk.Objects.CellArea.CellArea',
    -- see 'GI.Gtk.Objects.CellArea.cellAreaForeachAlloc'.
    type CellAllocCallback =
        Gtk.CellRenderer.CellRenderer
        -- ^ /@renderer@/: the cell renderer to operate on
        -> Gdk.Rectangle.Rectangle
        -- ^ /@cellArea@/: the area allocated to /@renderer@/ inside the rectangle
        --     provided to 'GI.Gtk.Objects.CellArea.cellAreaForeachAlloc'.
        -> Gdk.Rectangle.Rectangle
        -- ^ /@cellBackground@/: the background area for /@renderer@/ inside the
        --     background area provided to 'GI.Gtk.Objects.CellArea.cellAreaForeachAlloc'.
        -> IO Bool
        -- ^ __Returns:__ 'P.True' to stop iterating over cells.

    -- | A convenience synonym for @`Nothing` :: `Maybe` `CellAllocCallback`@.
    noCellAllocCallback :: Maybe CellAllocCallback
    noCellAllocCallback :: Maybe CellAllocCallback
    noCellAllocCallback = Maybe CellAllocCallback
    forall a. Maybe a
    Nothing

    -- | The type of the callback functions used for iterating over the
    -- cell renderers and their allocated areas inside a t'GI.Gtk.Objects.CellArea.CellArea',
    -- see 'GI.Gtk.Objects.CellArea.cellAreaForeachAlloc'.
    type CellAllocCallback_WithClosures =
        Gtk.CellRenderer.CellRenderer
        -- ^ /@renderer@/: the cell renderer to operate on
        -> Gdk.Rectangle.Rectangle
        -- ^ /@cellArea@/: the area allocated to /@renderer@/ inside the rectangle
        --     provided to 'GI.Gtk.Objects.CellArea.cellAreaForeachAlloc'.
        -> Gdk.Rectangle.Rectangle
        -- ^ /@cellBackground@/: the background area for /@renderer@/ inside the
        --     background area provided to 'GI.Gtk.Objects.CellArea.cellAreaForeachAlloc'.
        -> Ptr ()
        -- ^ /@data@/: user-supplied data
        -> IO Bool
        -- ^ __Returns:__ 'P.True' to stop iterating over cells.

    -- | A convenience synonym for @`Nothing` :: `Maybe` `CellAllocCallback_WithClosures`@.
    noCellAllocCallback_WithClosures :: Maybe CellAllocCallback_WithClosures
    noCellAllocCallback_WithClosures :: Maybe CellAllocCallback_WithClosures
    noCellAllocCallback_WithClosures = Maybe CellAllocCallback_WithClosures
    forall a. Maybe a
    Nothing

    -- | A simple wrapper that ignores the closure arguments.
    drop_closures_CellAllocCallback :: CellAllocCallback -> CellAllocCallback_WithClosures
    drop_closures_CellAllocCallback :: CellAllocCallback -> CellAllocCallback_WithClosures
    drop_closures_CellAllocCallback CellAllocCallback
    _f CellRenderer
    renderer Rectangle
    cellArea Rectangle
    cellBackground Ptr ()
    _ = CellAllocCallback
    _f CellRenderer
    renderer Rectangle
    cellArea Rectangle
    cellBackground

    -- | Wrap the callback into a `GClosure`.
    genClosure_CellAllocCallback :: MonadIO m => CellAllocCallback -> m (GClosure C_CellAllocCallback)
    genClosure_CellAllocCallback :: forall (m :: * -> *).
    MonadIO m =>
    CellAllocCallback -> m (GClosure C_CellAllocCallback)
    genClosure_CellAllocCallback CellAllocCallback
    cb = IO (GClosure C_CellAllocCallback)
    -> m (GClosure C_CellAllocCallback)
    forall a. IO a -> m a
    forall (m :: * -> *) a. MonadIO m => IO a -> m a
    liftIO (IO (GClosure C_CellAllocCallback)
     -> m (GClosure C_CellAllocCallback))
    -> IO (GClosure C_CellAllocCallback)
    -> m (GClosure C_CellAllocCallback)
    forall a b. (a -> b) -> a -> b
    $ do
        let cb' :: CellAllocCallback_WithClosures
    cb' = CellAllocCallback -> CellAllocCallback_WithClosures
    drop_closures_CellAllocCallback CellAllocCallback
    cb
        let cb'' :: C_CellAllocCallback
    cb'' = Maybe (Ptr (FunPtr C_CellAllocCallback))
    -> CellAllocCallback_WithClosures -> C_CellAllocCallback
    wrap_CellAllocCallback Maybe (Ptr (FunPtr C_CellAllocCallback))
    forall a. Maybe a
    Nothing CellAllocCallback_WithClosures
    cb'
        C_CellAllocCallback -> IO (FunPtr C_CellAllocCallback)
    mk_CellAllocCallback C_CellAllocCallback
    cb'' IO (FunPtr C_CellAllocCallback)
    -> (FunPtr C_CellAllocCallback
        -> IO (GClosure C_CellAllocCallback))
    -> IO (GClosure C_CellAllocCallback)
    forall a b. IO a -> (a -> IO b) -> IO b
    forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
    >>= FunPtr C_CellAllocCallback -> IO (GClosure C_CellAllocCallback)
    forall (m :: * -> *) a. MonadIO m => FunPtr a -> m (GClosure a)
    B.GClosure.newGClosure

    -- | Wrap a `CellAllocCallback` into a `C_CellAllocCallback`.
    wrap_CellAllocCallback ::
        Maybe (Ptr (FunPtr C_CellAllocCallback)) ->
        CellAllocCallback_WithClosures ->
        C_CellAllocCallback
    wrap_CellAllocCallback :: Maybe (Ptr (FunPtr C_CellAllocCallback))
    -> CellAllocCallback_WithClosures -> C_CellAllocCallback
    wrap_CellAllocCallback Maybe (Ptr (FunPtr C_CellAllocCallback))
    gi'funptrptr CellAllocCallback_WithClosures
    gi'cb Ptr CellRenderer
    renderer Ptr Rectangle
    cellArea Ptr Rectangle
    cellBackground Ptr ()
    data_ = do
        renderer' <- ((ManagedPtr CellRenderer -> CellRenderer)
    -> Ptr CellRenderer -> IO CellRenderer
    forall a b.
    (HasCallStack, GObject a, GObject b) =>
    (ManagedPtr a -> a) -> Ptr b -> IO a
    newObject ManagedPtr CellRenderer -> CellRenderer
    Gtk.CellRenderer.CellRenderer) Ptr CellRenderer
    renderer
        B.ManagedPtr.withTransient  cellArea $ \Rectangle
    cellArea' -> do
            Ptr Rectangle -> (Rectangle -> IO CInt) -> IO CInt
    forall a b.
    (HasCallStack, ManagedPtrNewtype a) =>
    Ptr a -> (a -> IO b) -> IO b
    B.ManagedPtr.withTransient  Ptr Rectangle
    cellBackground ((Rectangle -> IO CInt) -> IO CInt)
    -> (Rectangle -> IO CInt) -> IO CInt
    forall a b. (a -> b) -> a -> b
    $ \Rectangle
    cellBackground' -> do
                result <- CellAllocCallback_WithClosures
    gi'cb  CellRenderer
    renderer' Rectangle
    cellArea' Rectangle
    cellBackground' Ptr ()
    data_
                maybeReleaseFunPtr gi'funptrptr
                let result' = (Int -> CInt
    forall a b. (Integral a, Num b) => a -> b
    P.fromIntegral (Int -> CInt) -> (Bool -> Int) -> Bool -> CInt
    forall b c a. (b -> c) -> (a -> b) -> a -> c
    . Bool -> Int
    forall a. Enum a => a -> Int
    P.fromEnum) Bool
    result
                return result'

    -- callback Callback
    {- Callable
      { returnType = Nothing
      , returnMayBeNull = False
      , returnTransfer = TransferNothing
      , returnDocumentation =
          Documentation { rawDocText = Nothing , sinceVersion = Nothing }
      , args =
          [ Arg
              { argCName = "widget"
              , argType = TInterface Name { namespace = "Gtk" , name = "Widget" }
              , argCType = Just "GtkWidget*"
              , direction = DirectionIn
              , mayBeNull = False
              , argDoc =
                  Documentation
                    { rawDocText = Just "the widget to operate on"
                    , sinceVersion = Nothing
                    }
              , argScope = ScopeTypeInvalid
              , argClosure = -1
              , argDestroy = -1
              , argCallerAllocates = False
              , argCallbackUserData = False
              , transfer = TransferNothing
              }
          , Arg
              { argCName = "data"
              , argType = TBasicType TPtr
              , argCType = Just "gpointer"
              , direction = DirectionIn
              , mayBeNull = True
              , argDoc =
                  Documentation
                    { rawDocText = Just "user-supplied data" , sinceVersion = Nothing }
              , argScope = ScopeTypeInvalid
              , argClosure = -1
              , argDestroy = -1
              , argCallerAllocates = False
              , argCallbackUserData = True
              , transfer = TransferNothing
              }
          ]
      , skipReturn = False
      , callableThrows = False
      , callableDeprecated = Nothing
      , callableDocumentation =
          Documentation
            { rawDocText =
                Just
                  "The type of the callback functions used for e.g. iterating over\nthe children of a container, see gtk_container_foreach()."
            , sinceVersion = Nothing
            }
      , callableResolvable = Nothing
      }
    -}
    -- | Type for the callback on the (unwrapped) C side.
    type C_Callback =
        Ptr Gtk.Widget.Widget ->
        Ptr () ->
        IO ()

    -- Args: [ Arg
    --           { argCName = "widget"
    --           , argType = TInterface Name { namespace = "Gtk" , name = "Widget" }
    --           , argCType = Just "GtkWidget*"
    --           , direction = DirectionIn
    --           , mayBeNull = False
    --           , argDoc =
    --               Documentation
    --                 { rawDocText = Just "the widget to operate on"
    --                 , sinceVersion = Nothing
    --                 }
    --           , argScope = ScopeTypeInvalid
    --           , argClosure = -1
    --           , argDestroy = -1
    --           , argCallerAllocates = False
    --           , argCallbackUserData = False
    --           , transfer = TransferNothing
    --           }
    --       , Arg
    --           { argCName = "data"
    --           , argType = TBasicType TPtr
    --           , argCType = Just "gpointer"
    --           , direction = DirectionIn
    --           , mayBeNull = True
    --           , argDoc =
    --               Documentation
    --                 { rawDocText = Just "user-supplied data" , sinceVersion = Nothing }
    --           , argScope = ScopeTypeInvalid
    --           , argClosure = -1
    --           , argDestroy = -1
    --           , argCallerAllocates = False
    --           , argCallbackUserData = True
    --           , transfer = TransferNothing
    --           }
    --       ]
    -- Lengths: []
    -- returnType: Nothing
    -- throws : False
    -- Skip return : False

    foreign import ccall "dynamic" __dynamic_C_Callback :: FunPtr C_Callback -> C_Callback

    -- | Given a pointer to a foreign C function, wrap it into a function callable from Haskell.
    dynamic_Callback ::
        (B.CallStack.HasCallStack, MonadIO m, Gtk.Widget.IsWidget a) =>
        FunPtr C_Callback
        -> a
        -- ^ /@widget@/: the widget to operate on
        -> Ptr ()
        -- ^ /@data@/: user-supplied data
        -> m ()
    dynamic_Callback :: forall (m :: * -> *) a.
    (HasCallStack, MonadIO m, IsWidget a) =>
    FunPtr C_Callback -> a -> Ptr () -> m ()
    dynamic_Callback FunPtr C_Callback
    __funPtr a
    widget Ptr ()
    data_ = IO () -> m ()
    forall a. IO a -> m a
    forall (m :: * -> *) a. MonadIO m => IO a -> m a
    liftIO (IO () -> m ()) -> IO () -> m ()
    forall a b. (a -> b) -> a -> b
    $ do
        widget' <- a -> IO (Ptr Widget)
    forall a b. (HasCallStack, ManagedPtrNewtype a) => a -> IO (Ptr b)
    unsafeManagedPtrCastPtr a
    widget
        (__dynamic_C_Callback __funPtr) widget' data_
        touchManagedPtr widget
        return ()

    -- | Generate a function pointer callable from C code, from a `C_Callback`.
    foreign import ccall "wrapper"
        mk_Callback :: C_Callback -> IO (FunPtr C_Callback)

    -- | The type of the callback functions used for e.g. iterating over
    -- the children of a container, see 'GI.Gtk.Objects.Container.containerForeach'.
    type Callback =
        Gtk.Widget.Widget
        -- ^ /@widget@/: the widget to operate on
        -> IO ()

    -- | A convenience synonym for @`Nothing` :: `Maybe` `Callback`@.
    noCallback :: Maybe Callback
    noCallback :: Maybe WidgetClassUnrealizeFieldCallback
    noCallback = Maybe WidgetClassUnrealizeFieldCallback
    forall a. Maybe a
    Nothing

    -- | The type of the callback functions used for e.g. iterating over
    -- the children of a container, see 'GI.Gtk.Objects.Container.containerForeach'.
    type Callback_WithClosures =
        Gtk.Widget.Widget
        -- ^ /@widget@/: the widget to operate on
        -> Ptr ()
        -- ^ /@data@/: user-supplied data
        -> IO ()

    -- | A convenience synonym for @`Nothing` :: `Maybe` `Callback_WithClosures`@.
    noCallback_WithClosures :: Maybe Callback_WithClosures
    noCallback_WithClosures :: Maybe Callback_WithClosures
    noCallback_WithClosures = Maybe Callback_WithClosures
    forall a. Maybe a
    Nothing

    -- | A simple wrapper that ignores the closure arguments.
    drop_closures_Callback :: Callback -> Callback_WithClosures
    drop_closures_Callback :: WidgetClassUnrealizeFieldCallback -> Callback_WithClosures
    drop_closures_Callback WidgetClassUnrealizeFieldCallback
    _f Widget
    widget Ptr ()
    _ = WidgetClassUnrealizeFieldCallback
    _f Widget
    widget

    -- | Wrap the callback into a `GClosure`.
    genClosure_Callback :: MonadIO m => Callback -> m (GClosure C_Callback)
    genClosure_Callback :: forall (m :: * -> *).
    MonadIO m =>
    WidgetClassUnrealizeFieldCallback -> m (GClosure C_Callback)
    genClosure_Callback WidgetClassUnrealizeFieldCallback
    cb = IO (GClosure C_Callback) -> m (GClosure C_Callback)
    forall a. IO a -> m a
    forall (m :: * -> *) a. MonadIO m => IO a -> m a
    liftIO (IO (GClosure C_Callback) -> m (GClosure C_Callback))
    -> IO (GClosure C_Callback) -> m (GClosure C_Callback)
    forall a b. (a -> b) -> a -> b
    $ do
        let cb' :: Callback_WithClosures
    cb' = WidgetClassUnrealizeFieldCallback -> Callback_WithClosures
    drop_closures_Callback WidgetClassUnrealizeFieldCallback
    cb
        let cb'' :: C_Callback
    cb'' = Maybe (Ptr (FunPtr C_Callback))
    -> Callback_WithClosures -> C_Callback
    wrap_Callback Maybe (Ptr (FunPtr C_Callback))
    forall a. Maybe a
    Nothing Callback_WithClosures
    cb'
        C_Callback -> IO (FunPtr C_Callback)
    mk_Callback C_Callback
    cb'' IO (FunPtr C_Callback)
    -> (FunPtr C_Callback -> IO (GClosure C_Callback))
    -> IO (GClosure C_Callback)
    forall a b. IO a -> (a -> IO b) -> IO b
    forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
    >>= FunPtr C_Callback -> IO (GClosure C_Callback)
    forall (m :: * -> *) a. MonadIO m => FunPtr a -> m (GClosure a)
    B.GClosure.newGClosure

    -- | Wrap a `Callback` into a `C_Callback`.
    wrap_Callback ::
        Maybe (Ptr (FunPtr C_Callback)) ->
        Callback_WithClosures ->
        C_Callback
    wrap_Callback :: Maybe (Ptr (FunPtr C_Callback))
    -> Callback_WithClosures -> C_Callback
    wrap_Callback Maybe (Ptr (FunPtr C_Callback))
    gi'funptrptr Callback_WithClosures
    gi'cb Ptr Widget
    widget Ptr ()
    data_ = do
        widget' <- ((ManagedPtr Widget -> Widget) -> Ptr Widget -> IO Widget
    forall a b.
    (HasCallStack, GObject a, GObject b) =>
    (ManagedPtr a -> a) -> Ptr b -> IO a
    newObject ManagedPtr Widget -> Widget
    Gtk.Widget.Widget) Ptr Widget
    widget
        gi'cb  widget' data_
        maybeReleaseFunPtr gi'funptrptr

    -- callback CalendarDetailFunc
    {- Callable
      { returnType = Just (TBasicType TUTF8)
      , returnMayBeNull = True
      , returnTransfer = TransferEverything
      , returnDocumentation =
          Documentation
            { rawDocText =
                Just
                  "Newly allocated string with Pango markup\n    with details for the specified day or %NULL."
            , sinceVersion = Nothing
            }
      , args =
          [ Arg
              { argCName = "calendar"
              , argType =
                  TInterface Name { namespace = "Gtk" , name = "Calendar" }
              , argCType = Just "GtkCalendar*"
              , direction = DirectionIn
              , mayBeNull = False
              , argDoc =
                  Documentation
                    { rawDocText = Just "a #GtkCalendar." , sinceVersion = Nothing }
              , argScope = ScopeTypeInvalid
              , argClosure = -1
              , argDestroy = -1
              , argCallerAllocates = False
              , argCallbackUserData = False
              , transfer = TransferNothing
              }
          , Arg
              { argCName = "year"
              , argType = TBasicType TUInt
              , argCType = Just "guint"
              , direction = DirectionIn
              , mayBeNull = False
              , argDoc =
                  Documentation
                    { rawDocText = Just "the year for which details are needed."
                    , sinceVersion = Nothing
                    }
              , argScope = ScopeTypeInvalid
              , argClosure = -1
              , argDestroy = -1
              , argCallerAllocates = False
              , argCallbackUserData = False
              , transfer = TransferNothing
              }
          , Arg
              { argCName = "month"
              , argType = TBasicType TUInt
              , argCType = Just "guint"
              , direction = DirectionIn
              , mayBeNull = False
              , argDoc =
                  Documentation
                    { rawDocText = Just "the month for which details are needed."
                    , sinceVersion = Nothing
                    }
              , argScope = ScopeTypeInvalid
              , argClosure = -1
              , argDestroy = -1
              , argCallerAllocates = False
              , argCallbackUserData = False
              , transfer = TransferNothing
              }
          , Arg
              { argCName = "day"
              , argType = TBasicType TUInt
              , argCType = Just "guint"
              , direction = DirectionIn
              , mayBeNull = False
              , argDoc =
                  Documentation
                    { rawDocText =
                        Just "the day of @month for which details are needed."
                    , sinceVersion = Nothing
                    }
              , argScope = ScopeTypeInvalid
              , argClosure = -1
              , argDestroy = -1
              , argCallerAllocates = False
              , argCallbackUserData = False
              , transfer = TransferNothing
              }
          , Arg
              { argCName = "user_data"
              , argType = TBasicType TPtr
              , argCType = Just "gpointer"
              , direction = DirectionIn
              , mayBeNull = True
              , argDoc =
                  Documentation
                    { rawDocText =
                        Just "the data passed with gtk_calendar_set_detail_func()."
                    , sinceVersion = Nothing
                    }
              , argScope = ScopeTypeInvalid
              , argClosure = -1
              , argDestroy = -1
              , argCallerAllocates = False
              , argCallbackUserData = True
              , transfer = TransferNothing
              }
          ]
      , skipReturn = False
      , callableThrows = False
      , callableDeprecated = Nothing
      , callableDocumentation =
          Documentation
            { rawDocText =
                Just
                  "This kind of functions provide Pango markup with detail information for the\nspecified day. Examples for such details are holidays or appointments. The\nfunction returns %NULL when no information is available."
            , sinceVersion = Just "2.14"
            }
      , callableResolvable = Nothing
      }
    -}
    -- | Type for the callback on the (unwrapped) C side.
    type C_CalendarDetailFunc =
        Ptr Gtk.Calendar.Calendar ->
        Word32 ->
        Word32 ->
        Word32 ->
        Ptr () ->
        IO CString

    -- Args: [ Arg
    --           { argCName = "calendar"
    --           , argType =
    --               TInterface Name { namespace = "Gtk" , name = "Calendar" }
    --           , argCType = Just "GtkCalendar*"
    --           , direction = DirectionIn
    --           , mayBeNull = False
    --           , argDoc =
    --               Documentation
    --                 { rawDocText = Just "a #GtkCalendar." , sinceVersion = Nothing }
    --           , argScope = ScopeTypeInvalid
    --           , argClosure = -1
    --           , argDestroy = -1
    --           , argCallerAllocates = False
    --           , argCallbackUserData = False
    --           , transfer = TransferNothing
    --           }
    --       , Arg
    --           { argCName = "year"
    --           , argType = TBasicType TUInt
    --           , argCType = Just "guint"
    --           , direction = DirectionIn
    --           , mayBeNull = False
    --           , argDoc =
    --               Documentation
    --                 { rawDocText = Just "the year for which details are needed."
    --                 , sinceVersion = Nothing
    --                 }
    --           , argScope = ScopeTypeInvalid
    --           , argClosure = -1
    --           , argDestroy = -1
    --           , argCallerAllocates = False
    --           , argCallbackUserData = False
    --           , transfer = TransferNothing
    --           }
    --       , Arg
    --           { argCName = "month"
    --           , argType = TBasicType TUInt
    --           , argCType = Just "guint"
    --           , direction = DirectionIn
    --           , mayBeNull = False
    --           , argDoc =
    --               Documentation
    --                 { rawDocText = Just "the month for which details are needed."
    --                 , sinceVersion = Nothing
    --                 }
    --           , argScope = ScopeTypeInvalid
    --           , argClosure = -1
    --           , argDestroy = -1
    --           , argCallerAllocates = False
    --           , argCallbackUserData = False
    --           , transfer = TransferNothing
    --           }
    --       , Arg
    --           { argCName = "day"
    --           , argType = TBasicType TUInt
    --           , argCType = Just "guint"
    --           , direction = DirectionIn
    --           , mayBeNull = False
    --           , argDoc =
    --               Documentation
    --                 { rawDocText =
    --                     Just "the day of @month for which details are needed."
    --                 , sinceVersion = Nothing
    --                 }
    --           , argScope = ScopeTypeInvalid
    --           , argClosure = -1
    --           , argDestroy = -1
    --           , argCallerAllocates = False
    --           , argCallbackUserData = False
    --           , transfer = TransferNothing
    --           }
    --       , Arg
    --           { argCName = "user_data"
    --           , argType = TBasicType TPtr
    --           , argCType = Just "gpointer"
    --           , direction = DirectionIn
    --           , mayBeNull = True
    --           , argDoc =
    --               Documentation
    --                 { rawDocText =
    --                     Just "the data passed with gtk_calendar_set_detail_func()."
    --                 , sinceVersion = Nothing
    --                 }
    --           , argScope = ScopeTypeInvalid
    --           , argClosure = -1
    --           , argDestroy = -1
    --           , argCallerAllocates = False
    --           , argCallbackUserData = True
    --           , transfer = TransferNothing
    --           }
    --       ]
    -- Lengths: []
    -- returnType: Just (TBasicType TUTF8)
    -- throws : False
    -- Skip return : False

    foreign import ccall "dynamic" __dynamic_C_CalendarDetailFunc :: FunPtr C_CalendarDetailFunc -> C_CalendarDetailFunc

    -- | Given a pointer to a foreign C function, wrap it into a function callable from Haskell.
    dynamic_CalendarDetailFunc ::
        (B.CallStack.HasCallStack, MonadIO m, Gtk.Calendar.IsCalendar a) =>
        FunPtr C_CalendarDetailFunc
        -> a
        -- ^ /@calendar@/: a t'GI.Gtk.Objects.Calendar.Calendar'.
        -> Word32
        -- ^ /@year@/: the year for which details are needed.
        -> Word32
        -- ^ /@month@/: the month for which details are needed.
        -> Word32
        -- ^ /@day@/: the day of /@month@/ for which details are needed.
        -> Ptr ()
        -- ^ /@userData@/: the data passed with 'GI.Gtk.Objects.Calendar.calendarSetDetailFunc'.
        -> m (Maybe T.Text)
        -- ^ __Returns:__ Newly allocated string with Pango markup
        --     with details for the specified day or 'P.Nothing'.
    dynamic_CalendarDetailFunc :: forall (m :: * -> *) a.
    (HasCallStack, MonadIO m, IsCalendar a) =>
    FunPtr C_CalendarDetailFunc
    -> a -> Word32 -> Word32 -> Word32 -> Ptr () -> m (Maybe Text)
    dynamic_CalendarDetailFunc FunPtr C_CalendarDetailFunc
    __funPtr a
    calendar Word32
    year Word32
    month Word32
    day Ptr ()
    userData = IO (Maybe Text) -> m (Maybe Text)
    forall a. IO a -> m a
    forall (m :: * -> *) a. MonadIO m => IO a -> m a
    liftIO (IO (Maybe Text) -> m (Maybe Text))
    -> IO (Maybe Text) -> m (Maybe Text)
    forall a b. (a -> b) -> a -> b
    $ do
        calendar' <- a -> IO (Ptr Calendar)
    forall a b. (HasCallStack, ManagedPtrNewtype a) => a -> IO (Ptr b)
    unsafeManagedPtrCastPtr a
    calendar
        result <- (__dynamic_C_CalendarDetailFunc __funPtr) calendar' year month day userData
        maybeResult <- convertIfNonNull result $ \CString
    result' -> do
            result'' <- HasCallStack => CString -> IO Text
    CString -> IO Text
    cstringToText CString
    result'
            freeMem result'
            return result''
        touchManagedPtr calendar
        return maybeResult

    -- | Generate a function pointer callable from C code, from a `C_CalendarDetailFunc`.
    foreign import ccall "wrapper"
        mk_CalendarDetailFunc :: C_CalendarDetailFunc -> IO (FunPtr C_CalendarDetailFunc)

    -- | This kind of functions provide Pango markup with detail information for the
    -- specified day. Examples for such details are holidays or appointments. The
    -- function returns 'P.Nothing' when no information is available.
    --
    -- /Since: 2.14/
    type CalendarDetailFunc =
        Gtk.Calendar.Calendar
        -- ^ /@calendar@/: a t'GI.Gtk.Objects.Calendar.Calendar'.
        -> Word32
        -- ^ /@year@/: the year for which details are needed.
        -> Word32
        -- ^ /@month@/: the month for which details are needed.
        -> Word32
        -- ^ /@day@/: the day of /@month@/ for which details are needed.
        -> IO (Maybe T.Text)
        -- ^ __Returns:__ Newly allocated string with Pango markup
        --     with details for the specified day or 'P.Nothing'.

    -- | A convenience synonym for @`Nothing` :: `Maybe` `CalendarDetailFunc`@.
    noCalendarDetailFunc :: Maybe CalendarDetailFunc
    noCalendarDetailFunc :: Maybe CalendarDetailFunc
    noCalendarDetailFunc = Maybe CalendarDetailFunc
    forall a. Maybe a
    Nothing

    -- | This kind of functions provide Pango markup with detail information for the
    -- specified day. Examples for such details are holidays or appointments. The
    -- function returns 'P.Nothing' when no information is available.
    --
    -- /Since: 2.14/
    type CalendarDetailFunc_WithClosures =
        Gtk.Calendar.Calendar
        -- ^ /@calendar@/: a t'GI.Gtk.Objects.Calendar.Calendar'.
        -> Word32
        -- ^ /@year@/: the year for which details are needed.
        -> Word32
        -- ^ /@month@/: the month for which details are needed.
        -> Word32
        -- ^ /@day@/: the day of /@month@/ for which details are needed.
        -> Ptr ()
        -- ^ /@userData@/: the data passed with 'GI.Gtk.Objects.Calendar.calendarSetDetailFunc'.
        -> IO (Maybe T.Text)
        -- ^ __Returns:__ Newly allocated string with Pango markup
        --     with details for the specified day or 'P.Nothing'.

    -- | A convenience synonym for @`Nothing` :: `Maybe` `CalendarDetailFunc_WithClosures`@.
    noCalendarDetailFunc_WithClosures :: Maybe CalendarDetailFunc_WithClosures
    noCalendarDetailFunc_WithClosures :: Maybe CalendarDetailFunc_WithClosures
    noCalendarDetailFunc_WithClosures = Maybe CalendarDetailFunc_WithClosures
    forall a. Maybe a
    Nothing

    -- | A simple wrapper that ignores the closure arguments.
    drop_closures_CalendarDetailFunc :: CalendarDetailFunc -> CalendarDetailFunc_WithClosures
    drop_closures_CalendarDetailFunc :: CalendarDetailFunc -> CalendarDetailFunc_WithClosures
    drop_closures_CalendarDetailFunc CalendarDetailFunc
    _f Calendar
    calendar Word32
    year Word32
    month Word32
    day Ptr ()
    _ = CalendarDetailFunc
    _f Calendar
    calendar Word32
    year Word32
    month Word32
    day

    -- | Wrap the callback into a `GClosure`.
    genClosure_CalendarDetailFunc :: MonadIO m => CalendarDetailFunc -> m (GClosure C_CalendarDetailFunc)
    genClosure_CalendarDetailFunc :: forall (m :: * -> *).
    MonadIO m =>
    CalendarDetailFunc -> m (GClosure C_CalendarDetailFunc)
    genClosure_CalendarDetailFunc CalendarDetailFunc
    cb = IO (GClosure C_CalendarDetailFunc)
    -> m (GClosure C_CalendarDetailFunc)
    forall a. IO a -> m a
    forall (m :: * -> *) a. MonadIO m => IO a -> m a
    liftIO (IO (GClosure C_CalendarDetailFunc)
     -> m (GClosure C_CalendarDetailFunc))
    -> IO (GClosure C_CalendarDetailFunc)
    -> m (GClosure C_CalendarDetailFunc)
    forall a b. (a -> b) -> a -> b
    $ do
        let cb' :: CalendarDetailFunc_WithClosures
    cb' = CalendarDetailFunc -> CalendarDetailFunc_WithClosures
    drop_closures_CalendarDetailFunc CalendarDetailFunc
    cb
        let cb'' :: C_CalendarDetailFunc
    cb'' = Maybe (Ptr (FunPtr C_CalendarDetailFunc))
    -> CalendarDetailFunc_WithClosures -> C_CalendarDetailFunc
    wrap_CalendarDetailFunc Maybe (Ptr (FunPtr C_CalendarDetailFunc))
    forall a. Maybe a
    Nothing CalendarDetailFunc_WithClosures
    cb'
        C_CalendarDetailFunc -> IO (FunPtr C_CalendarDetailFunc)
    mk_CalendarDetailFunc C_CalendarDetailFunc
    cb'' IO (FunPtr C_CalendarDetailFunc)
    -> (FunPtr C_CalendarDetailFunc
        -> IO (GClosure C_CalendarDetailFunc))
    -> IO (GClosure C_CalendarDetailFunc)
    forall a b. IO a -> (a -> IO b) -> IO b
    forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
    >>= FunPtr C_CalendarDetailFunc -> IO (GClosure C_CalendarDetailFunc)
    forall (m :: * -> *) a. MonadIO m => FunPtr a -> m (GClosure a)
    B.GClosure.newGClosure

    -- | Wrap a `CalendarDetailFunc` into a `C_CalendarDetailFunc`.
    wrap_CalendarDetailFunc ::
        Maybe (Ptr (FunPtr C_CalendarDetailFunc)) ->
        CalendarDetailFunc_WithClosures ->
        C_CalendarDetailFunc
    wrap_CalendarDetailFunc :: Maybe (Ptr (FunPtr C_CalendarDetailFunc))
    -> CalendarDetailFunc_WithClosures -> C_CalendarDetailFunc
    wrap_CalendarDetailFunc Maybe (Ptr (FunPtr C_CalendarDetailFunc))
    gi'funptrptr CalendarDetailFunc_WithClosures
    gi'cb Ptr Calendar
    calendar Word32
    year Word32
    month Word32
    day Ptr ()
    userData = do
        calendar' <- ((ManagedPtr Calendar -> Calendar) -> Ptr Calendar -> IO Calendar
    forall a b.
    (HasCallStack, GObject a, GObject b) =>
    (ManagedPtr a -> a) -> Ptr b -> IO a
    newObject ManagedPtr Calendar -> Calendar
    Gtk.Calendar.Calendar) Ptr Calendar
    calendar
        result <- gi'cb  calendar' year month day userData
        maybeReleaseFunPtr gi'funptrptr
        maybeM FP.nullPtr result $ \Text
    result' -> do
            result'' <- Text -> IO CString
    textToCString Text
    result'
            return result''

    -- callback BuilderConnectFunc
    {- Callable
      { returnType = Nothing
      , returnMayBeNull = False
      , returnTransfer = TransferNothing
      , returnDocumentation =
          Documentation { rawDocText = Nothing , sinceVersion = Nothing }
      , args =
          [ Arg
              { argCName = "builder"
              , argType =
                  TInterface Name { namespace = "Gtk" , name = "Builder" }
              , argCType = Just "GtkBuilder*"
              , direction = DirectionIn
              , mayBeNull = False
              , argDoc =
                  Documentation
                    { rawDocText = Just "a #GtkBuilder" , sinceVersion = Nothing }
              , argScope = ScopeTypeInvalid
              , argClosure = -1
              , argDestroy = -1
              , argCallerAllocates = False
              , argCallbackUserData = False
              , transfer = TransferNothing
              }
          , Arg
              { argCName = "object"
              , argType =
                  TInterface Name { namespace = "GObject" , name = "Object" }
              , argCType = Just "GObject*"
              , direction = DirectionIn
              , mayBeNull = False
              , argDoc =
                  Documentation
                    { rawDocText = Just "object to connect a signal to"
                    , sinceVersion = Nothing
                    }
              , argScope = ScopeTypeInvalid
              , argClosure = -1
              , argDestroy = -1
              , argCallerAllocates = False
              , argCallbackUserData = False
              , transfer = TransferNothing
              }
          , Arg
              { argCName = "signal_name"
              , argType = TBasicType TUTF8
              , argCType = Just "const gchar*"
              , direction = DirectionIn
              , mayBeNull = False
              , argDoc =
                  Documentation
                    { rawDocText = Just "name of the signal" , sinceVersion = Nothing }
              , argScope = ScopeTypeInvalid
              , argClosure = -1
              , argDestroy = -1
              , argCallerAllocates = False
              , argCallbackUserData = False
              , transfer = TransferNothing
              }
          , Arg
              { argCName = "handler_name"
              , argType = TBasicType TUTF8
              , argCType = Just "const gchar*"
              , direction = DirectionIn
              , mayBeNull = False
              , argDoc =
                  Documentation
                    { rawDocText = Just "name of the handler"
                    , sinceVersion = Nothing
                    }
              , argScope = ScopeTypeInvalid
              , argClosure = -1
              , argDestroy = -1
              , argCallerAllocates = False
              , argCallbackUserData = False
              , transfer = TransferNothing
              }
          , Arg
              { argCName = "connect_object"
              , argType =
                  TInterface Name { namespace = "GObject" , name = "Object" }
              , argCType = Just "GObject*"
              , direction = DirectionIn
              , mayBeNull = True
              , argDoc =
                  Documentation
                    { rawDocText =
                        Just "a #GObject, if non-%NULL, use g_signal_connect_object()"
                    , sinceVersion = Nothing
                    }
              , argScope = ScopeTypeInvalid
              , argClosure = -1
              , argDestroy = -1
              , argCallerAllocates = False
              , argCallbackUserData = False
              , transfer = TransferNothing
              }
          , Arg
              { argCName = "flags"
              , argType =
                  TInterface Name { namespace = "GObject" , name = "ConnectFlags" }
              , argCType = Just "GConnectFlags"
              , direction = DirectionIn
              , mayBeNull = False
              , argDoc =
                  Documentation
                    { rawDocText = Just "#GConnectFlags to use"
                    , sinceVersion = Nothing
                    }
              , argScope = ScopeTypeInvalid
              , argClosure = -1
              , argDestroy = -1
              , argCallerAllocates = False
              , argCallbackUserData = False
              , transfer = TransferNothing
              }
          , Arg
              { argCName = "user_data"
              , argType = TBasicType TPtr
              , argCType = Just "gpointer"
              , direction = DirectionIn
              , mayBeNull = True
              , argDoc =
                  Documentation
                    { rawDocText = Just "user data" , sinceVersion = Nothing }
              , argScope = ScopeTypeInvalid
              , argClosure = -1
              , argDestroy = -1
              , argCallerAllocates = False
              , argCallbackUserData = True
              , transfer = TransferNothing
              }
          ]
      , skipReturn = False
      , callableThrows = False
      , callableDeprecated = Nothing
      , callableDocumentation =
          Documentation
            { rawDocText =
                Just
                  "This is the signature of a function used to connect signals.  It is used\nby the gtk_builder_connect_signals() and gtk_builder_connect_signals_full()\nmethods.  It is mainly intended for interpreted language bindings, but\ncould be useful where the programmer wants more control over the signal\nconnection process. Note that this function can only be called once,\nsubsequent calls will do nothing."
            , sinceVersion = Just "2.12"
            }
      , callableResolvable = Nothing
      }
    -}
    -- | Type for the callback on the (unwrapped) C side.
    type C_BuilderConnectFunc =
        Ptr Gtk.Builder.Builder ->
        Ptr GObject.Object.Object ->
        CString ->
        CString ->
        Ptr GObject.Object.Object ->
        CUInt ->
        Ptr () ->
        IO ()

    -- Args: [ Arg
    --           { argCName = "builder"
    --           , argType =
    --               TInterface Name { namespace = "Gtk" , name = "Builder" }
    --           , argCType = Just "GtkBuilder*"
    --           , direction = DirectionIn
    --           , mayBeNull = False
    --           , argDoc =
    --               Documentation
    --                 { rawDocText = Just "a #GtkBuilder" , sinceVersion = Nothing }
    --           , argScope = ScopeTypeInvalid
    --           , argClosure = -1
    --           , argDestroy = -1
    --           , argCallerAllocates = False
    --           , argCallbackUserData = False
    --           , transfer = TransferNothing
    --           }
    --       , Arg
    --           { argCName = "object"
    --           , argType =
    --               TInterface Name { namespace = "GObject" , name = "Object" }
    --           , argCType = Just "GObject*"
    --           , direction = DirectionIn
    --           , mayBeNull = False
    --           , argDoc =
    --               Documentation
    --                 { rawDocText = Just "object to connect a signal to"
    --                 , sinceVersion = Nothing
    --                 }
    --           , argScope = ScopeTypeInvalid
    --           , argClosure = -1
    --           , argDestroy = -1
    --           , argCallerAllocates = False
    --           , argCallbackUserData = False
    --           , transfer = TransferNothing
    --           }
    --       , Arg
    --           { argCName = "signal_name"
    --           , argType = TBasicType TUTF8
    --           , argCType = Just "const gchar*"
    --           , direction = DirectionIn
    --           , mayBeNull = False
    --           , argDoc =
    --               Documentation
    --                 { rawDocText = Just "name of the signal" , sinceVersion = Nothing }
    --           , argScope = ScopeTypeInvalid
    --           , argClosure = -1
    --           , argDestroy = -1
    --           , argCallerAllocates = False
    --           , argCallbackUserData = False
    --           , transfer = TransferNothing
    --           }
    --       , Arg
    --           { argCName = "handler_name"
    --           , argType = TBasicType TUTF8
    --           , argCType = Just "const gchar*"
    --           , direction = DirectionIn
    --           , mayBeNull = False
    --           , argDoc =
    --               Documentation
    --                 { rawDocText = Just "name of the handler"
    --                 , sinceVersion = Nothing
    --                 }
    --           , argScope = ScopeTypeInvalid
    --           , argClosure = -1
    --           , argDestroy = -1
    --           , argCallerAllocates = False
    --           , argCallbackUserData = False
    --           , transfer = TransferNothing
    --           }
    --       , Arg
    --           { argCName = "connect_object"
    --           , argType =
    --               TInterface Name { namespace = "GObject" , name = "Object" }
    --           , argCType = Just "GObject*"
    --           , direction = DirectionIn
    --           , mayBeNull = True
    --           , argDoc =
    --               Documentation
    --                 { rawDocText =
    --                     Just "a #GObject, if non-%NULL, use g_signal_connect_object()"
    --                 , sinceVersion = Nothing
    --                 }
    --           , argScope = ScopeTypeInvalid
    --           , argClosure = -1
    --           , argDestroy = -1
    --           , argCallerAllocates = False
    --           , argCallbackUserData = False
    --           , transfer = TransferNothing
    --           }
    --       , Arg
    --           { argCName = "flags"
    --           , argType =
    --               TInterface Name { namespace = "GObject" , name = "ConnectFlags" }
    --           , argCType = Just "GConnectFlags"
    --           , direction = DirectionIn
    --           , mayBeNull = False
    --           , argDoc =
    --               Documentation
    --                 { rawDocText = Just "#GConnectFlags to use"
    --                 , sinceVersion = Nothing
    --                 }
    --           , argScope = ScopeTypeInvalid
    --           , argClosure = -1
    --           , argDestroy = -1
    --           , argCallerAllocates = False
    --           , argCallbackUserData = False
    --           , transfer = TransferNothing
    --           }
    --       , Arg
    --           { argCName = "user_data"
    --           , argType = TBasicType TPtr
    --           , argCType = Just "gpointer"
    --           , direction = DirectionIn
    --           , mayBeNull = True
    --           , argDoc =
    --               Documentation
    --                 { rawDocText = Just "user data" , sinceVersion = Nothing }
    --           , argScope = ScopeTypeInvalid
    --           , argClosure = -1
    --           , argDestroy = -1
    --           , argCallerAllocates = False
    --           , argCallbackUserData = True
    --           , transfer = TransferNothing
    --           }
    --       ]
    -- Lengths: []
    -- returnType: Nothing
    -- throws : False
    -- Skip return : False

    foreign import ccall "dynamic" __dynamic_C_BuilderConnectFunc :: FunPtr C_BuilderConnectFunc -> C_BuilderConnectFunc

    -- | Given a pointer to a foreign C function, wrap it into a function callable from Haskell.
    dynamic_BuilderConnectFunc ::
        (B.CallStack.HasCallStack, MonadIO m, Gtk.Builder.IsBuilder a, GObject.Object.IsObject b, GObject.Object.IsObject c) =>
        FunPtr C_BuilderConnectFunc
        -> a
        -- ^ /@builder@/: a t'GI.Gtk.Objects.Builder.Builder'
        -> b
        -- ^ /@object@/: object to connect a signal to
        -> T.Text
        -- ^ /@signalName@/: name of the signal
        -> T.Text
        -- ^ /@handlerName@/: name of the handler
        -> Maybe (c)
        -- ^ /@connectObject@/: a t'GI.GObject.Objects.Object.Object', if non-'P.Nothing', use @/g_signal_connect_object()/@
        -> [GObject.Flags.ConnectFlags]
        -- ^ /@flags@/: t'GI.GObject.Flags.ConnectFlags' to use
        -> Ptr ()
        -- ^ /@userData@/: user data
        -> m ()
    dynamic_BuilderConnectFunc :: forall (m :: * -> *) a b c.
    (HasCallStack, MonadIO m, IsBuilder a, IsObject b, IsObject c) =>
    FunPtr C_BuilderConnectFunc
    -> a
    -> b
    -> Text
    -> Text
    -> Maybe c
    -> [ConnectFlags]
    -> Ptr ()
    -> m ()
    dynamic_BuilderConnectFunc FunPtr C_BuilderConnectFunc
    __funPtr a
    builder b
    object Text
    signalName Text
    handlerName Maybe c
    connectObject [ConnectFlags]
    flags Ptr ()
    userData = IO () -> m ()
    forall a. IO a -> m a
    forall (m :: * -> *) a. MonadIO m => IO a -> m a
    liftIO (IO () -> m ()) -> IO () -> m ()
    forall a b. (a -> b) -> a -> b
    $ do
        builder' <- a -> IO (Ptr Builder)
    forall a b. (HasCallStack, ManagedPtrNewtype a) => a -> IO (Ptr b)
    unsafeManagedPtrCastPtr a
    builder
        object' <- unsafeManagedPtrCastPtr object
        signalName' <- textToCString signalName
        handlerName' <- textToCString handlerName
        maybeConnectObject <- case connectObject of
            Maybe c
    Nothing -> Ptr Object -> IO (Ptr Object)
    forall a. a -> IO a
    forall (m :: * -> *) a. Monad m => a -> m a
    return Ptr Object
    forall a. Ptr a
    FP.nullPtr
            Just c
    jConnectObject -> do
                jConnectObject' <- c -> IO (Ptr Object)
    forall a b. (HasCallStack, ManagedPtrNewtype a) => a -> IO (Ptr b)
    unsafeManagedPtrCastPtr c
    jConnectObject
                return jConnectObject'
        let flags' = [ConnectFlags] -> CUInt
    forall b a. (Num b, IsGFlag a) => [a] -> b
    gflagsToWord [ConnectFlags]
    flags
        (__dynamic_C_BuilderConnectFunc __funPtr) builder' object' signalName' handlerName' maybeConnectObject flags' userData
        touchManagedPtr builder
        touchManagedPtr object
        whenJust connectObject touchManagedPtr
        freeMem signalName'
        freeMem handlerName'
        return ()

    -- | Generate a function pointer callable from C code, from a `C_BuilderConnectFunc`.
    foreign import ccall "wrapper"
        mk_BuilderConnectFunc :: C_BuilderConnectFunc -> IO (FunPtr C_BuilderConnectFunc)

    -- | This is the signature of a function used to connect signals.  It is used
    -- by the 'GI.Gtk.Objects.Builder.builderConnectSignals' and 'GI.Gtk.Objects.Builder.builderConnectSignalsFull'
    -- methods.  It is mainly intended for interpreted language bindings, but
    -- could be useful where the programmer wants more control over the signal
    -- connection process. Note that this function can only be called once,
    -- subsequent calls will do nothing.
    --
    -- /Since: 2.12/
    type BuilderConnectFunc =
        Gtk.Builder.Builder
        -- ^ /@builder@/: a t'GI.Gtk.Objects.Builder.Builder'
        -> GObject.Object.Object
        -- ^ /@object@/: object to connect a signal to
        -> T.Text
        -- ^ /@signalName@/: name of the signal
        -> T.Text
        -- ^ /@handlerName@/: name of the handler
        -> Maybe GObject.Object.Object
        -- ^ /@connectObject@/: a t'GI.GObject.Objects.Object.Object', if non-'P.Nothing', use @/g_signal_connect_object()/@
        -> [GObject.Flags.ConnectFlags]
        -- ^ /@flags@/: t'GI.GObject.Flags.ConnectFlags' to use
        -> IO ()

    -- | A convenience synonym for @`Nothing` :: `Maybe` `BuilderConnectFunc`@.
    noBuilderConnectFunc :: Maybe BuilderConnectFunc
    noBuilderConnectFunc :: Maybe BuilderConnectFunc
    noBuilderConnectFunc = Maybe BuilderConnectFunc
    forall a. Maybe a
    Nothing

    -- | This is the signature of a function used to connect signals.  It is used
    -- by the 'GI.Gtk.Objects.Builder.builderConnectSignals' and 'GI.Gtk.Objects.Builder.builderConnectSignalsFull'
    -- methods.  It is mainly intended for interpreted language bindings, but
    -- could be useful where the programmer wants more control over the signal
    -- connection process. Note that this function can only be called once,
    -- subsequent calls will do nothing.
    --
    -- /Since: 2.12/
    type BuilderConnectFunc_WithClosures =
        Gtk.Builder.Builder
        -- ^ /@builder@/: a t'GI.Gtk.Objects.Builder.Builder'
        -> GObject.Object.Object
        -- ^ /@object@/: object to connect a signal to
        -> T.Text
        -- ^ /@signalName@/: name of the signal
        -> T.Text
        -- ^ /@handlerName@/: name of the handler
        -> Maybe GObject.Object.Object
        -- ^ /@connectObject@/: a t'GI.GObject.Objects.Object.Object', if non-'P.Nothing', use @/g_signal_connect_object()/@
        -> [GObject.Flags.ConnectFlags]
        -- ^ /@flags@/: t'GI.GObject.Flags.ConnectFlags' to use
        -> Ptr ()
        -- ^ /@userData@/: user data
        -> IO ()

    -- | A convenience synonym for @`Nothing` :: `Maybe` `BuilderConnectFunc_WithClosures`@.
    noBuilderConnectFunc_WithClosures :: Maybe BuilderConnectFunc_WithClosures
    noBuilderConnectFunc_WithClosures :: Maybe BuilderConnectFunc_WithClosures
    noBuilderConnectFunc_WithClosures = Maybe BuilderConnectFunc_WithClosures
    forall a. Maybe a
    Nothing

    -- | A simple wrapper that ignores the closure arguments.
    drop_closures_BuilderConnectFunc :: BuilderConnectFunc -> BuilderConnectFunc_WithClosures
    drop_closures_BuilderConnectFunc :: BuilderConnectFunc -> BuilderConnectFunc_WithClosures
    drop_closures_BuilderConnectFunc BuilderConnectFunc
    _f Builder
    builder Object
    object Text
    signalName Text
    handlerName Maybe Object
    connectObject [ConnectFlags]
    flags Ptr ()
    _ = BuilderConnectFunc
    _f Builder
    builder Object
    object Text
    signalName Text
    handlerName Maybe Object
    connectObject [ConnectFlags]
    flags

    -- | Wrap the callback into a `GClosure`.
    genClosure_BuilderConnectFunc :: MonadIO m => BuilderConnectFunc -> m (GClosure C_BuilderConnectFunc)
    genClosure_BuilderConnectFunc :: forall (m :: * -> *).
    MonadIO m =>
    BuilderConnectFunc -> m (GClosure C_BuilderConnectFunc)
    genClosure_BuilderConnectFunc BuilderConnectFunc
    cb = IO (GClosure C_BuilderConnectFunc)
    -> m (GClosure C_BuilderConnectFunc)
    forall a. IO a -> m a
    forall (m :: * -> *) a. MonadIO m => IO a -> m a
    liftIO (IO (GClosure C_BuilderConnectFunc)
     -> m (GClosure C_BuilderConnectFunc))
    -> IO (GClosure C_BuilderConnectFunc)
    -> m (GClosure C_BuilderConnectFunc)
    forall a b. (a -> b) -> a -> b
    $ do
        let cb' :: BuilderConnectFunc_WithClosures
    cb' = BuilderConnectFunc -> BuilderConnectFunc_WithClosures
    drop_closures_BuilderConnectFunc BuilderConnectFunc
    cb
        let cb'' :: C_BuilderConnectFunc
    cb'' = Maybe (Ptr (FunPtr C_BuilderConnectFunc))
    -> BuilderConnectFunc_WithClosures -> C_BuilderConnectFunc
    wrap_BuilderConnectFunc Maybe (Ptr (FunPtr C_BuilderConnectFunc))
    forall a. Maybe a
    Nothing BuilderConnectFunc_WithClosures
    cb'
        C_BuilderConnectFunc -> IO (FunPtr C_BuilderConnectFunc)
    mk_BuilderConnectFunc C_BuilderConnectFunc
    cb'' IO (FunPtr C_BuilderConnectFunc)
    -> (FunPtr C_BuilderConnectFunc
        -> IO (GClosure C_BuilderConnectFunc))
    -> IO (GClosure C_BuilderConnectFunc)
    forall a b. IO a -> (a -> IO b) -> IO b
    forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
    >>= FunPtr C_BuilderConnectFunc -> IO (GClosure C_BuilderConnectFunc)
    forall (m :: * -> *) a. MonadIO m => FunPtr a -> m (GClosure a)
    B.GClosure.newGClosure

    -- | Wrap a `BuilderConnectFunc` into a `C_BuilderConnectFunc`.
    wrap_BuilderConnectFunc ::
        Maybe (Ptr (FunPtr C_BuilderConnectFunc)) ->
        BuilderConnectFunc_WithClosures ->
        C_BuilderConnectFunc
    wrap_BuilderConnectFunc :: Maybe (Ptr (FunPtr C_BuilderConnectFunc))
    -> BuilderConnectFunc_WithClosures -> C_BuilderConnectFunc
    wrap_BuilderConnectFunc Maybe (Ptr (FunPtr C_BuilderConnectFunc))
    gi'funptrptr BuilderConnectFunc_WithClosures
    gi'cb Ptr Builder
    builder Ptr Object
    object CString
    signalName CString
    handlerName Ptr Object
    connectObject CUInt
    flags Ptr ()
    userData = do
        builder' <- ((ManagedPtr Builder -> Builder) -> Ptr Builder -> IO Builder
    forall a b.
    (HasCallStack, GObject a, GObject b) =>
    (ManagedPtr a -> a) -> Ptr b -> IO a
    newObject ManagedPtr Builder -> Builder
    Gtk.Builder.Builder) Ptr Builder
    builder
        object' <- (newObject GObject.Object.Object) object
        signalName' <- cstringToText signalName
        handlerName' <- cstringToText handlerName
        maybeConnectObject <-
            if connectObject == FP.nullPtr
            then return Nothing
            else do
                connectObject' <- (newObject GObject.Object.Object) connectObject
                return $ Just connectObject'
        let flags' = CUInt -> [ConnectFlags]
    forall a b. (Storable a, Integral a, Bits a, IsGFlag b) => a -> [b]
    wordToGFlags CUInt
    flags
        gi'cb  builder' object' signalName' handlerName' maybeConnectObject flags' userData
        maybeReleaseFunPtr gi'funptrptr

    -- callback AssistantPageFunc
    {- Callable
      { returnType = Just (TBasicType TInt)
      , returnMayBeNull = False
      , returnTransfer = TransferNothing
      , returnDocumentation =
          Documentation
            { rawDocText = Just "The next page number."
            , sinceVersion = Nothing
            }
      , args =
          [ Arg
              { argCName = "current_page"
              , argType = TBasicType TInt
              , argCType = Just "gint"
              , direction = DirectionIn
              , mayBeNull = False
              , argDoc =
                  Documentation
                    { rawDocText =
                        Just "The page number used to calculate the next page."
                    , sinceVersion = Nothing
                    }
              , argScope = ScopeTypeInvalid
              , argClosure = -1
              , argDestroy = -1
              , argCallerAllocates = False
              , argCallbackUserData = False
              , transfer = TransferNothing
              }
          , Arg
              { argCName = "data"
              , argType = TBasicType TPtr
              , argCType = Just "gpointer"
              , direction = DirectionIn
              , mayBeNull = True
              , argDoc =
                  Documentation
                    { rawDocText = Just "user data." , sinceVersion = Nothing }
              , argScope = ScopeTypeInvalid
              , argClosure = -1
              , argDestroy = -1
              , argCallerAllocates = False
              , argCallbackUserData = True
              , transfer = TransferNothing
              }
          ]
      , skipReturn = False
      , callableThrows = False
      , callableDeprecated = Nothing
      , callableDocumentation =
          Documentation
            { rawDocText =
                Just
                  "A function used by gtk_assistant_set_forward_page_func() to know which\nis the next page given a current one. It\8217s called both for computing the\nnext page when the user presses the \8220forward\8221 button and for handling\nthe behavior of the \8220last\8221 button."
            , sinceVersion = Nothing
            }
      , callableResolvable = Nothing
      }
    -}
    -- | Type for the callback on the (unwrapped) C side.
    type C_AssistantPageFunc =
        Int32 ->
        Ptr () ->
        IO Int32

    -- Args: [ Arg
    --           { argCName = "current_page"
    --           , argType = TBasicType TInt
    --           , argCType = Just "gint"
    --           , direction = DirectionIn
    --           , mayBeNull = False
    --           , argDoc =
    --               Documentation
    --                 { rawDocText =
    --                     Just "The page number used to calculate the next page."
    --                 , sinceVersion = Nothing
    --                 }
    --           , argScope = ScopeTypeInvalid
    --           , argClosure = -1
    --           , argDestroy = -1
    --           , argCallerAllocates = False
    --           , argCallbackUserData = False
    --           , transfer = TransferNothing
    --           }
    --       , Arg
    --           { argCName = "data"
    --           , argType = TBasicType TPtr
    --           , argCType = Just "gpointer"
    --           , direction = DirectionIn
    --           , mayBeNull = True
    --           , argDoc =
    --               Documentation
    --                 { rawDocText = Just "user data." , sinceVersion = Nothing }
    --           , argScope = ScopeTypeInvalid
    --           , argClosure = -1
    --           , argDestroy = -1
    --           , argCallerAllocates = False
    --           , argCallbackUserData = True
    --           , transfer = TransferNothing
    --           }
    --       ]
    -- Lengths: []
    -- returnType: Just (TBasicType TInt)
    -- throws : False
    -- Skip return : False

    foreign import ccall "dynamic" __dynamic_C_AssistantPageFunc :: FunPtr C_AssistantPageFunc -> C_AssistantPageFunc

    -- | Given a pointer to a foreign C function, wrap it into a function callable from Haskell.
    dynamic_AssistantPageFunc ::
        (B.CallStack.HasCallStack, MonadIO m) =>
        FunPtr C_AssistantPageFunc
        -> Int32
        -- ^ /@currentPage@/: The page number used to calculate the next page.
        -> Ptr ()
        -- ^ /@data@/: user data.
        -> m Int32
        -- ^ __Returns:__ The next page number.
    dynamic_AssistantPageFunc :: forall (m :: * -> *).
    (HasCallStack, MonadIO m) =>
    FunPtr C_AssistantPageFunc -> Int32 -> Ptr () -> m Int32
    dynamic_AssistantPageFunc FunPtr C_AssistantPageFunc
    __funPtr Int32
    currentPage Ptr ()
    data_ = IO Int32 -> m Int32
    forall a. IO a -> m a
    forall (m :: * -> *) a. MonadIO m => IO a -> m a
    liftIO (IO Int32 -> m Int32) -> IO Int32 -> m Int32
    forall a b. (a -> b) -> a -> b
    $ do
        result <- (FunPtr C_AssistantPageFunc -> C_AssistantPageFunc
    __dynamic_C_AssistantPageFunc FunPtr C_AssistantPageFunc
    __funPtr) Int32
    currentPage Ptr ()
    data_
        return result

    -- | Generate a function pointer callable from C code, from a `C_AssistantPageFunc`.
    foreign import ccall "wrapper"
        mk_AssistantPageFunc :: C_AssistantPageFunc -> IO (FunPtr C_AssistantPageFunc)

    -- | A function used by 'GI.Gtk.Objects.Assistant.assistantSetForwardPageFunc' to know which
    -- is the next page given a current one. It’s called both for computing the
    -- next page when the user presses the “forward” button and for handling
    -- the behavior of the “last” button.
    type AssistantPageFunc =
        Int32
        -- ^ /@currentPage@/: The page number used to calculate the next page.
        -> IO Int32
        -- ^ __Returns:__ The next page number.

    -- | A convenience synonym for @`Nothing` :: `Maybe` `AssistantPageFunc`@.
    noAssistantPageFunc :: Maybe AssistantPageFunc
    noAssistantPageFunc :: Maybe (Int32 -> IO Int32)
    noAssistantPageFunc = Maybe (Int32 -> IO Int32)
    forall a. Maybe a
    Nothing

    -- | A function used by 'GI.Gtk.Objects.Assistant.assistantSetForwardPageFunc' to know which
    -- is the next page given a current one. It’s called both for computing the
    -- next page when the user presses the “forward” button and for handling
    -- the behavior of the “last” button.
    type AssistantPageFunc_WithClosures =
        Int32
        -- ^ /@currentPage@/: The page number used to calculate the next page.
        -> Ptr ()
        -- ^ /@data@/: user data.
        -> IO Int32
        -- ^ __Returns:__ The next page number.

    -- | A convenience synonym for @`Nothing` :: `Maybe` `AssistantPageFunc_WithClosures`@.
    noAssistantPageFunc_WithClosures :: Maybe AssistantPageFunc_WithClosures
    noAssistantPageFunc_WithClosures :: Maybe C_AssistantPageFunc
    noAssistantPageFunc_WithClosures = Maybe C_AssistantPageFunc
    forall a. Maybe a
    Nothing

    -- | A simple wrapper that ignores the closure arguments.
    drop_closures_AssistantPageFunc :: AssistantPageFunc -> AssistantPageFunc_WithClosures
    drop_closures_AssistantPageFunc :: (Int32 -> IO Int32) -> C_AssistantPageFunc
    drop_closures_AssistantPageFunc Int32 -> IO Int32
    _f Int32
    currentPage Ptr ()
    _ = Int32 -> IO Int32
    _f Int32
    currentPage

    -- | Wrap the callback into a `GClosure`.
    genClosure_AssistantPageFunc :: MonadIO m => AssistantPageFunc -> m (GClosure C_AssistantPageFunc)
    genClosure_AssistantPageFunc :: forall (m :: * -> *).
    MonadIO m =>
    (Int32 -> IO Int32) -> m (GClosure C_AssistantPageFunc)
    genClosure_AssistantPageFunc Int32 -> IO Int32
    cb = IO (GClosure C_AssistantPageFunc)
    -> m (GClosure C_AssistantPageFunc)
    forall a. IO a -> m a
    forall (m :: * -> *) a. MonadIO m => IO a -> m a
    liftIO (IO (GClosure C_AssistantPageFunc)
     -> m (GClosure C_AssistantPageFunc))
    -> IO (GClosure C_AssistantPageFunc)
    -> m (GClosure C_AssistantPageFunc)
    forall a b. (a -> b) -> a -> b
    $ do
        let cb' :: C_AssistantPageFunc
    cb' = (Int32 -> IO Int32) -> C_AssistantPageFunc
    drop_closures_AssistantPageFunc Int32 -> IO Int32
    cb
        let cb'' :: C_AssistantPageFunc
    cb'' = Maybe (Ptr (FunPtr C_AssistantPageFunc))
    -> C_AssistantPageFunc -> C_AssistantPageFunc
    wrap_AssistantPageFunc Maybe (Ptr (FunPtr C_AssistantPageFunc))
    forall a. Maybe a
    Nothing C_AssistantPageFunc
    cb'
        C_AssistantPageFunc -> IO (FunPtr C_AssistantPageFunc)
    mk_AssistantPageFunc C_AssistantPageFunc
    cb'' IO (FunPtr C_AssistantPageFunc)
    -> (FunPtr C_AssistantPageFunc
        -> IO (GClosure C_AssistantPageFunc))
    -> IO (GClosure C_AssistantPageFunc)
    forall a b. IO a -> (a -> IO b) -> IO b
    forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
    >>= FunPtr C_AssistantPageFunc -> IO (GClosure C_AssistantPageFunc)
    forall (m :: * -> *) a. MonadIO m => FunPtr a -> m (GClosure a)
    B.GClosure.newGClosure

    -- | Wrap a `AssistantPageFunc` into a `C_AssistantPageFunc`.
    wrap_AssistantPageFunc ::
        Maybe (Ptr (FunPtr C_AssistantPageFunc)) ->
        AssistantPageFunc_WithClosures ->
        C_AssistantPageFunc
    wrap_AssistantPageFunc :: Maybe (Ptr (FunPtr C_AssistantPageFunc))
    -> C_AssistantPageFunc -> C_AssistantPageFunc
    wrap_AssistantPageFunc Maybe (Ptr (FunPtr C_AssistantPageFunc))
    gi'funptrptr C_AssistantPageFunc
    gi'cb Int32
    currentPage Ptr ()
    data_ = do
        result <- C_AssistantPageFunc
    gi'cb  Int32
    currentPage Ptr ()
    data_
        maybeReleaseFunPtr gi'funptrptr
        return result

    -- callback ActionableInterfaceSetActionTargetValueFieldCallback
    {- Callable
      { returnType = Nothing
      , returnMayBeNull = False
      , returnTransfer = TransferNothing
      , returnDocumentation =
          Documentation { rawDocText = Nothing , sinceVersion = Nothing }
      , args =
          [ Arg
              { argCName = "actionable"
              , argType =
                  TInterface Name { namespace = "Gtk" , name = "Actionable" }
              , argCType = Just "GtkActionable*"
              , direction = DirectionIn
              , mayBeNull = False
              , argDoc =
                  Documentation
                    { rawDocText = Just "a #GtkActionable widget"
                    , sinceVersion = Nothing
                    }
              , argScope = ScopeTypeInvalid
              , argClosure = -1
              , argDestroy = -1
              , argCallerAllocates = False
              , argCallbackUserData = False
              , transfer = TransferNothing
              }
          , Arg
              { argCName = "target_value"
              , argType = TVariant
              , argCType = Just "GVariant*"
              , direction = DirectionIn
              , mayBeNull = True
              , argDoc =
                  Documentation
                    { rawDocText =
                        Just "a #GVariant to set as the target value, or %NULL"
                    , sinceVersion = Nothing
                    }
              , argScope = ScopeTypeInvalid
              , argClosure = -1
              , argDestroy = -1
              , argCallerAllocates = False
              , argCallbackUserData = False
              , transfer = TransferNothing
              }
          ]
      , skipReturn = False
      , callableThrows = False
      , callableDeprecated = Nothing
      , callableDocumentation =
          Documentation { rawDocText = Nothing , sinceVersion = Nothing }
      , callableResolvable = Nothing
      }
    -}
    -- | Type for the callback on the (unwrapped) C side.
    type C_ActionableInterfaceSetActionTargetValueFieldCallback =
        Ptr Gtk.Actionable.Actionable ->
        Ptr GVariant ->
        IO ()

    -- Args: [ Arg
    --           { argCName = "actionable"
    --           , argType =
    --               TInterface Name { namespace = "Gtk" , name = "Actionable" }
    --           , argCType = Just "GtkActionable*"
    --           , direction = DirectionIn
    --           , mayBeNull = False
    --           , argDoc =
    --               Documentation
    --                 { rawDocText = Just "a #GtkActionable widget"
    --                 , sinceVersion = Nothing
    --                 }
    --           , argScope = ScopeTypeInvalid
    --           , argClosure = -1
    --           , argDestroy = -1
    --           , argCallerAllocates = False
    --           , argCallbackUserData = False
    --           , transfer = TransferNothing
    --           }
    --       , Arg
    --           { argCName = "target_value"
    --           , argType = TVariant
    --           , argCType = Just "GVariant*"
    --           , direction = DirectionIn
    --           , mayBeNull = True
    --           , argDoc =
    --               Documentation
    --                 { rawDocText =
    --                     Just "a #GVariant to set as the target value, or %NULL"
    --                 , sinceVersion = Nothing
    --                 }
    --           , argScope = ScopeTypeInvalid
    --           , argClosure = -1
    --           , argDestroy = -1
    --           , argCallerAllocates = False
    --           , argCallbackUserData = False
    --           , transfer = TransferNothing
    --           }
    --       ]
    -- Lengths: []
    -- returnType: Nothing
    -- throws : False
    -- Skip return : False

    foreign import ccall "dynamic" __dynamic_C_ActionableInterfaceSetActionTargetValueFieldCallback :: FunPtr C_ActionableInterfaceSetActionTargetValueFieldCallback -> C_ActionableInterfaceSetActionTargetValueFieldCallback

    -- | Given a pointer to a foreign C function, wrap it into a function callable from Haskell.
    dynamic_ActionableInterfaceSetActionTargetValueFieldCallback ::
        (B.CallStack.HasCallStack, MonadIO m, Gtk.Actionable.IsActionable a) =>
        FunPtr C_ActionableInterfaceSetActionTargetValueFieldCallback
        -> a
        -- ^ /@actionable@/: a t'GI.Gtk.Interfaces.Actionable.Actionable' widget
        -> Maybe (GVariant)
        -- ^ /@targetValue@/: a t'GVariant' to set as the target value, or 'P.Nothing'
        -> m ()
    dynamic_ActionableInterfaceSetActionTargetValueFieldCallback :: forall (m :: * -> *) a.
    (HasCallStack, MonadIO m, IsActionable a) =>
    FunPtr C_ActionableInterfaceSetActionTargetValueFieldCallback
    -> a -> Maybe GVariant -> m ()
    dynamic_ActionableInterfaceSetActionTargetValueFieldCallback FunPtr C_ActionableInterfaceSetActionTargetValueFieldCallback
    __funPtr a
    actionable Maybe GVariant
    targetValue = IO () -> m ()
    forall a. IO a -> m a
    forall (m :: * -> *) a. MonadIO m => IO a -> m a
    liftIO (IO () -> m ()) -> IO () -> m ()
    forall a b. (a -> b) -> a -> b
    $ do
        actionable' <- a -> IO (Ptr Actionable)
    forall a b. (HasCallStack, ManagedPtrNewtype a) => a -> IO (Ptr b)
    unsafeManagedPtrCastPtr a
    actionable
        maybeTargetValue <- case targetValue of
            Maybe GVariant
    Nothing -> Ptr GVariant -> IO (Ptr GVariant)
    forall a. a -> IO a
    forall (m :: * -> *) a. Monad m => a -> m a
    return Ptr GVariant
    forall a. Ptr a
    FP.nullPtr
            Just GVariant
    jTargetValue -> do
                jTargetValue' <- GVariant -> IO (Ptr GVariant)
    forall a. (HasCallStack, ManagedPtrNewtype a) => a -> IO (Ptr a)
    unsafeManagedPtrGetPtr GVariant
    jTargetValue
                return jTargetValue'
        (__dynamic_C_ActionableInterfaceSetActionTargetValueFieldCallback __funPtr) actionable' maybeTargetValue
        touchManagedPtr actionable
        whenJust targetValue touchManagedPtr
        return ()

    -- | Generate a function pointer callable from C code, from a `C_ActionableInterfaceSetActionTargetValueFieldCallback`.
    foreign import ccall "wrapper"
        mk_ActionableInterfaceSetActionTargetValueFieldCallback :: C_ActionableInterfaceSetActionTargetValueFieldCallback -> IO (FunPtr C_ActionableInterfaceSetActionTargetValueFieldCallback)

    -- | /No description available in the introspection data./
    type ActionableInterfaceSetActionTargetValueFieldCallback =
        Gtk.Actionable.Actionable
        -- ^ /@actionable@/: a t'GI.Gtk.Interfaces.Actionable.Actionable' widget
        -> Maybe GVariant
        -- ^ /@targetValue@/: a t'GVariant' to set as the target value, or 'P.Nothing'
        -> IO ()

    -- | A convenience synonym for @`Nothing` :: `Maybe` `ActionableInterfaceSetActionTargetValueFieldCallback`@.
    noActionableInterfaceSetActionTargetValueFieldCallback :: Maybe ActionableInterfaceSetActionTargetValueFieldCallback
    noActionableInterfaceSetActionTargetValueFieldCallback :: Maybe ActionableInterfaceSetActionTargetValueFieldCallback
    noActionableInterfaceSetActionTargetValueFieldCallback = Maybe ActionableInterfaceSetActionTargetValueFieldCallback
    forall a. Maybe a
    Nothing

    -- | Wrap the callback into a `GClosure`.
    genClosure_ActionableInterfaceSetActionTargetValueFieldCallback :: MonadIO m => ActionableInterfaceSetActionTargetValueFieldCallback -> m (GClosure C_ActionableInterfaceSetActionTargetValueFieldCallback)
    genClosure_ActionableInterfaceSetActionTargetValueFieldCallback :: forall (m :: * -> *).
    MonadIO m =>
    ActionableInterfaceSetActionTargetValueFieldCallback
    -> m (GClosure
            C_ActionableInterfaceSetActionTargetValueFieldCallback)
    genClosure_ActionableInterfaceSetActionTargetValueFieldCallback ActionableInterfaceSetActionTargetValueFieldCallback
    cb = IO
      (GClosure C_ActionableInterfaceSetActionTargetValueFieldCallback)
    -> m (GClosure
            C_ActionableInterfaceSetActionTargetValueFieldCallback)
    forall a. IO a -> m a
    forall (m :: * -> *) a. MonadIO m => IO a -> m a
    liftIO (IO
       (GClosure C_ActionableInterfaceSetActionTargetValueFieldCallback)
     -> m (GClosure
             C_ActionableInterfaceSetActionTargetValueFieldCallback))
    -> IO
         (GClosure C_ActionableInterfaceSetActionTargetValueFieldCallback)
    -> m (GClosure
            C_ActionableInterfaceSetActionTargetValueFieldCallback)
    forall a b. (a -> b) -> a -> b
    $ do
        let cb' :: C_ActionableInterfaceSetActionTargetValueFieldCallback
    cb' = Maybe
      (Ptr
         (FunPtr C_ActionableInterfaceSetActionTargetValueFieldCallback))
    -> ActionableInterfaceSetActionTargetValueFieldCallback
    -> C_ActionableInterfaceSetActionTargetValueFieldCallback
    wrap_ActionableInterfaceSetActionTargetValueFieldCallback Maybe
      (Ptr
         (FunPtr C_ActionableInterfaceSetActionTargetValueFieldCallback))
    forall a. Maybe a
    Nothing ActionableInterfaceSetActionTargetValueFieldCallback
    cb
        C_ActionableInterfaceSetActionTargetValueFieldCallback
    -> IO
         (FunPtr C_ActionableInterfaceSetActionTargetValueFieldCallback)
    mk_ActionableInterfaceSetActionTargetValueFieldCallback C_ActionableInterfaceSetActionTargetValueFieldCallback
    cb' IO (FunPtr C_ActionableInterfaceSetActionTargetValueFieldCallback)
    -> (FunPtr C_ActionableInterfaceSetActionTargetValueFieldCallback
        -> IO
             (GClosure C_ActionableInterfaceSetActionTargetValueFieldCallback))
    -> IO
         (GClosure C_ActionableInterfaceSetActionTargetValueFieldCallback)
    forall a b. IO a -> (a -> IO b) -> IO b
    forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
    >>= FunPtr C_ActionableInterfaceSetActionTargetValueFieldCallback
    -> IO
         (GClosure C_ActionableInterfaceSetActionTargetValueFieldCallback)
    forall (m :: * -> *) a. MonadIO m => FunPtr a -> m (GClosure a)
    B.GClosure.newGClosure

    -- | Wrap a `ActionableInterfaceSetActionTargetValueFieldCallback` into a `C_ActionableInterfaceSetActionTargetValueFieldCallback`.
    wrap_ActionableInterfaceSetActionTargetValueFieldCallback ::
        Maybe (Ptr (FunPtr C_ActionableInterfaceSetActionTargetValueFieldCallback)) ->
        ActionableInterfaceSetActionTargetValueFieldCallback ->
        C_ActionableInterfaceSetActionTargetValueFieldCallback
    wrap_ActionableInterfaceSetActionTargetValueFieldCallback :: Maybe
      (Ptr
         (FunPtr C_ActionableInterfaceSetActionTargetValueFieldCallback))
    -> ActionableInterfaceSetActionTargetValueFieldCallback
    -> C_ActionableInterfaceSetActionTargetValueFieldCallback
    wrap_ActionableInterfaceSetActionTargetValueFieldCallback Maybe
      (Ptr
         (FunPtr C_ActionableInterfaceSetActionTargetValueFieldCallback))
    gi'funptrptr ActionableInterfaceSetActionTargetValueFieldCallback
    gi'cb Ptr Actionable
    actionable Ptr GVariant
    targetValue = do
        actionable' <- ((ManagedPtr Actionable -> Actionable)
    -> Ptr Actionable -> IO Actionable
    forall a b.
    (HasCallStack, GObject a, GObject b) =>
    (ManagedPtr a -> a) -> Ptr b -> IO a
    newObject ManagedPtr Actionable -> Actionable
    Gtk.Actionable.Actionable) Ptr Actionable
    actionable
        maybeTargetValue <-
            if targetValue == FP.nullPtr
            then return Nothing
            else do
                targetValue' <- B.GVariant.newGVariantFromPtr targetValue
                return $ Just targetValue'
        gi'cb  actionable' maybeTargetValue
        maybeReleaseFunPtr gi'funptrptr

    -- callback ActionableInterfaceSetActionNameFieldCallback
    {- Callable
      { returnType = Nothing
      , returnMayBeNull = False
      , returnTransfer = TransferNothing
      , returnDocumentation =
          Documentation { rawDocText = Nothing , sinceVersion = Nothing }
      , args =
          [ Arg
              { argCName = "actionable"
              , argType =
                  TInterface Name { namespace = "Gtk" , name = "Actionable" }
              , argCType = Just "GtkActionable*"
              , direction = DirectionIn
              , mayBeNull = False
              , argDoc =
                  Documentation
                    { rawDocText = Just "a #GtkActionable widget"
                    , sinceVersion = Nothing
                    }
              , argScope = ScopeTypeInvalid
              , argClosure = -1
              , argDestroy = -1
              , argCallerAllocates = False
              , argCallbackUserData = False
              , transfer = TransferNothing
              }
          , Arg
              { argCName = "action_name"
              , argType = TBasicType TUTF8
              , argCType = Just "const gchar*"
              , direction = DirectionIn
              , mayBeNull = True
              , argDoc =
                  Documentation
                    { rawDocText = Just "an action name, or %NULL"
                    , sinceVersion = Nothing
                    }
              , argScope = ScopeTypeInvalid
              , argClosure = -1
              , argDestroy = -1
              , argCallerAllocates = False
              , argCallbackUserData = False
              , transfer = TransferNothing
              }
          ]
      , skipReturn = False
      , callableThrows = False
      , callableDeprecated = Nothing
      , callableDocumentation =
          Documentation { rawDocText = Nothing , sinceVersion = Nothing }
      , callableResolvable = Nothing
      }
    -}
    -- | Type for the callback on the (unwrapped) C side.
    type C_ActionableInterfaceSetActionNameFieldCallback =
        Ptr Gtk.Actionable.Actionable ->
        CString ->
        IO ()

    -- Args: [ Arg
    --           { argCName = "actionable"
    --           , argType =
    --               TInterface Name { namespace = "Gtk" , name = "Actionable" }
    --           , argCType = Just "GtkActionable*"
    --           , direction = DirectionIn
    --           , mayBeNull = False
    --           , argDoc =
    --               Documentation
    --                 { rawDocText = Just "a #GtkActionable widget"
    --                 , sinceVersion = Nothing
    --                 }
    --           , argScope = ScopeTypeInvalid
    --           , argClosure = -1
    --           , argDestroy = -1
    --           , argCallerAllocates = False
    --           , argCallbackUserData = False
    --           , transfer = TransferNothing
    --           }
    --       , Arg
    --           { argCName = "action_name"
    --           , argType = TBasicType TUTF8
    --           , argCType = Just "const gchar*"
    --           , direction = DirectionIn
    --           , mayBeNull = True
    --           , argDoc =
    --               Documentation
    --                 { rawDocText = Just "an action name, or %NULL"
    --                 , sinceVersion = Nothing
    --                 }
    --           , argScope = ScopeTypeInvalid
    --           , argClosure = -1
    --           , argDestroy = -1
    --           , argCallerAllocates = False
    --           , argCallbackUserData = False
    --           , transfer = TransferNothing
    --           }
    --       ]
    -- Lengths: []
    -- returnType: Nothing
    -- throws : False
    -- Skip return : False

    foreign import ccall "dynamic" __dynamic_C_ActionableInterfaceSetActionNameFieldCallback :: FunPtr C_ActionableInterfaceSetActionNameFieldCallback -> C_ActionableInterfaceSetActionNameFieldCallback

    -- | Given a pointer to a foreign C function, wrap it into a function callable from Haskell.
    dynamic_ActionableInterfaceSetActionNameFieldCallback ::
        (B.CallStack.HasCallStack, MonadIO m, Gtk.Actionable.IsActionable a) =>
        FunPtr C_ActionableInterfaceSetActionNameFieldCallback
        -> a
        -- ^ /@actionable@/: a t'GI.Gtk.Interfaces.Actionable.Actionable' widget
        -> Maybe (T.Text)
        -- ^ /@actionName@/: an action name, or 'P.Nothing'
        -> m ()
    dynamic_ActionableInterfaceSetActionNameFieldCallback :: forall (m :: * -> *) a.
    (HasCallStack, MonadIO m, IsActionable a) =>
    FunPtr C_ActionableInterfaceSetActionNameFieldCallback
    -> a -> Maybe Text -> m ()
    dynamic_ActionableInterfaceSetActionNameFieldCallback FunPtr C_ActionableInterfaceSetActionNameFieldCallback
    __funPtr a
    actionable Maybe Text
    actionName = IO () -> m ()
    forall a. IO a -> m a
    forall (m :: * -> *) a. MonadIO m => IO a -> m a
    liftIO (IO () -> m ()) -> IO () -> m ()
    forall a b. (a -> b) -> a -> b
    $ do
        actionable' <- a -> IO (Ptr Actionable)
    forall a b. (HasCallStack, ManagedPtrNewtype a) => a -> IO (Ptr b)
    unsafeManagedPtrCastPtr a
    actionable
        maybeActionName <- case actionName of
            Maybe Text
    Nothing -> CString -> IO CString
    forall a. a -> IO a
    forall (m :: * -> *) a. Monad m => a -> m a
    return CString
    forall a. Ptr a
    FP.nullPtr
            Just Text
    jActionName -> do
                jActionName' <- Text -> IO CString
    textToCString Text
    jActionName
                return jActionName'
        (__dynamic_C_ActionableInterfaceSetActionNameFieldCallback __funPtr) actionable' maybeActionName
        touchManagedPtr actionable
        freeMem maybeActionName
        return ()

    -- | Generate a function pointer callable from C code, from a `C_ActionableInterfaceSetActionNameFieldCallback`.
    foreign import ccall "wrapper"
        mk_ActionableInterfaceSetActionNameFieldCallback :: C_ActionableInterfaceSetActionNameFieldCallback -> IO (FunPtr C_ActionableInterfaceSetActionNameFieldCallback)

    -- | /No description available in the introspection data./
    type ActionableInterfaceSetActionNameFieldCallback =
        Gtk.Actionable.Actionable
        -- ^ /@actionable@/: a t'GI.Gtk.Interfaces.Actionable.Actionable' widget
        -> Maybe T.Text
        -- ^ /@actionName@/: an action name, or 'P.Nothing'
        -> IO ()

    -- | A convenience synonym for @`Nothing` :: `Maybe` `ActionableInterfaceSetActionNameFieldCallback`@.
    noActionableInterfaceSetActionNameFieldCallback :: Maybe ActionableInterfaceSetActionNameFieldCallback
    noActionableInterfaceSetActionNameFieldCallback :: Maybe ActionableInterfaceSetActionNameFieldCallback
    noActionableInterfaceSetActionNameFieldCallback = Maybe ActionableInterfaceSetActionNameFieldCallback
    forall a. Maybe a
    Nothing

    -- | Wrap the callback into a `GClosure`.
    genClosure_ActionableInterfaceSetActionNameFieldCallback :: MonadIO m => ActionableInterfaceSetActionNameFieldCallback -> m (GClosure C_ActionableInterfaceSetActionNameFieldCallback)
    genClosure_ActionableInterfaceSetActionNameFieldCallback :: forall (m :: * -> *).
    MonadIO m =>
    ActionableInterfaceSetActionNameFieldCallback
    -> m (GClosure C_ActionableInterfaceSetActionNameFieldCallback)
    genClosure_ActionableInterfaceSetActionNameFieldCallback ActionableInterfaceSetActionNameFieldCallback
    cb = IO (GClosure C_ActionableInterfaceSetActionNameFieldCallback)
    -> m (GClosure C_ActionableInterfaceSetActionNameFieldCallback)
    forall a. IO a -> m a
    forall (m :: * -> *) a. MonadIO m => IO a -> m a
    liftIO (IO (GClosure C_ActionableInterfaceSetActionNameFieldCallback)
     -> m (GClosure C_ActionableInterfaceSetActionNameFieldCallback))
    -> IO (GClosure C_ActionableInterfaceSetActionNameFieldCallback)
    -> m (GClosure C_ActionableInterfaceSetActionNameFieldCallback)
    forall a b. (a -> b) -> a -> b
    $ do
        let cb' :: C_ActionableInterfaceSetActionNameFieldCallback
    cb' = Maybe
      (Ptr (FunPtr C_ActionableInterfaceSetActionNameFieldCallback))
    -> ActionableInterfaceSetActionNameFieldCallback
    -> C_ActionableInterfaceSetActionNameFieldCallback
    wrap_ActionableInterfaceSetActionNameFieldCallback Maybe
      (Ptr (FunPtr C_ActionableInterfaceSetActionNameFieldCallback))
    forall a. Maybe a
    Nothing ActionableInterfaceSetActionNameFieldCallback
    cb
        C_ActionableInterfaceSetActionNameFieldCallback
    -> IO (FunPtr C_ActionableInterfaceSetActionNameFieldCallback)
    mk_ActionableInterfaceSetActionNameFieldCallback C_ActionableInterfaceSetActionNameFieldCallback
    cb' IO (FunPtr C_ActionableInterfaceSetActionNameFieldCallback)
    -> (FunPtr C_ActionableInterfaceSetActionNameFieldCallback
        -> IO (GClosure C_ActionableInterfaceSetActionNameFieldCallback))
    -> IO (GClosure C_ActionableInterfaceSetActionNameFieldCallback)
    forall a b. IO a -> (a -> IO b) -> IO b
    forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
    >>= FunPtr C_ActionableInterfaceSetActionNameFieldCallback
    -> IO (GClosure C_ActionableInterfaceSetActionNameFieldCallback)
    forall (m :: * -> *) a. MonadIO m => FunPtr a -> m (GClosure a)
    B.GClosure.newGClosure

    -- | Wrap a `ActionableInterfaceSetActionNameFieldCallback` into a `C_ActionableInterfaceSetActionNameFieldCallback`.
    wrap_ActionableInterfaceSetActionNameFieldCallback ::
        Maybe (Ptr (FunPtr C_ActionableInterfaceSetActionNameFieldCallback)) ->
        ActionableInterfaceSetActionNameFieldCallback ->
        C_ActionableInterfaceSetActionNameFieldCallback
    wrap_ActionableInterfaceSetActionNameFieldCallback :: Maybe
      (Ptr (FunPtr C_ActionableInterfaceSetActionNameFieldCallback))
    -> ActionableInterfaceSetActionNameFieldCallback
    -> C_ActionableInterfaceSetActionNameFieldCallback
    wrap_ActionableInterfaceSetActionNameFieldCallback Maybe
      (Ptr (FunPtr C_ActionableInterfaceSetActionNameFieldCallback))
    gi'funptrptr ActionableInterfaceSetActionNameFieldCallback
    gi'cb Ptr Actionable
    actionable CString
    actionName = do
        actionable' <- ((ManagedPtr Actionable -> Actionable)
    -> Ptr Actionable -> IO Actionable
    forall a b.
    (HasCallStack, GObject a, GObject b) =>
    (ManagedPtr a -> a) -> Ptr b -> IO a
    newObject ManagedPtr Actionable -> Actionable
    Gtk.Actionable.Actionable) Ptr Actionable
    actionable
        maybeActionName <-
            if actionName == FP.nullPtr
            then return Nothing
            else do
                actionName' <- cstringToText actionName
                return $ Just actionName'
        gi'cb  actionable' maybeActionName
        maybeReleaseFunPtr gi'funptrptr

    -- callback ActionableInterfaceGetActionTargetValueFieldCallback
    {- Callable
      { returnType = Just TVariant
      , returnMayBeNull = False
      , returnTransfer = TransferNothing
      , returnDocumentation =
          Documentation
            { rawDocText = Just "the current target value"
            , sinceVersion = Nothing
            }
      , args =
          [ Arg
              { argCName = "actionable"
              , argType =
                  TInterface Name { namespace = "Gtk" , name = "Actionable" }
              , argCType = Just "GtkActionable*"
              , direction = DirectionIn
              , mayBeNull = False
              , argDoc =
                  Documentation
                    { rawDocText = Just "a #GtkActionable widget"
                    , sinceVersion = Nothing
                    }
              , argScope = ScopeTypeInvalid
              , argClosure = -1
              , argDestroy = -1
              , argCallerAllocates = False
              , argCallbackUserData = False
              , transfer = TransferNothing
              }
          ]
      , skipReturn = False
      , callableThrows = False
      , callableDeprecated = Nothing
      , callableDocumentation =
          Documentation { rawDocText = Nothing , sinceVersion = Nothing }
      , callableResolvable = Nothing
      }
    -}
    -- | Type for the callback on the (unwrapped) C side.
    type C_ActionableInterfaceGetActionTargetValueFieldCallback =
        Ptr Gtk.Actionable.Actionable ->
        IO (Ptr GVariant)

    -- Args: [ Arg
    --           { argCName = "actionable"
    --           , argType =
    --               TInterface Name { namespace = "Gtk" , name = "Actionable" }
    --           , argCType = Just "GtkActionable*"
    --           , direction = DirectionIn
    --           , mayBeNull = False
    --           , argDoc =
    --               Documentation
    --                 { rawDocText = Just "a #GtkActionable widget"
    --                 , sinceVersion = Nothing
    --                 }
    --           , argScope = ScopeTypeInvalid
    --           , argClosure = -1
    --           , argDestroy = -1
    --           , argCallerAllocates = False
    --           , argCallbackUserData = False
    --           , transfer = TransferNothing
    --           }
    --       ]
    -- Lengths: []
    -- returnType: Just TVariant
    -- throws : False
    -- Skip return : False

    foreign import ccall "dynamic" __dynamic_C_ActionableInterfaceGetActionTargetValueFieldCallback :: FunPtr C_ActionableInterfaceGetActionTargetValueFieldCallback -> C_ActionableInterfaceGetActionTargetValueFieldCallback

    -- | Given a pointer to a foreign C function, wrap it into a function callable from Haskell.
    dynamic_ActionableInterfaceGetActionTargetValueFieldCallback ::
        (B.CallStack.HasCallStack, MonadIO m, Gtk.Actionable.IsActionable a) =>
        FunPtr C_ActionableInterfaceGetActionTargetValueFieldCallback
        -> a
        -- ^ /@actionable@/: a t'GI.Gtk.Interfaces.Actionable.Actionable' widget
        -> m GVariant
        -- ^ __Returns:__ the current target value
    dynamic_ActionableInterfaceGetActionTargetValueFieldCallback :: forall (m :: * -> *) a.
    (HasCallStack, MonadIO m, IsActionable a) =>
    FunPtr C_ActionableInterfaceGetActionTargetValueFieldCallback
    -> a -> m GVariant
    dynamic_ActionableInterfaceGetActionTargetValueFieldCallback FunPtr C_ActionableInterfaceGetActionTargetValueFieldCallback
    __funPtr a
    actionable = IO GVariant -> m GVariant
    forall a. IO a -> m a
    forall (m :: * -> *) a. MonadIO m => IO a -> m a
    liftIO (IO GVariant -> m GVariant) -> IO GVariant -> m GVariant
    forall a b. (a -> b) -> a -> b
    $ do
        actionable' <- a -> IO (Ptr Actionable)
    forall a b. (HasCallStack, ManagedPtrNewtype a) => a -> IO (Ptr b)
    unsafeManagedPtrCastPtr a
    actionable
        result <- (__dynamic_C_ActionableInterfaceGetActionTargetValueFieldCallback __funPtr) actionable'
        checkUnexpectedReturnNULL "actionableInterfaceGetActionTargetValueFieldCallback" result
        result' <- B.GVariant.newGVariantFromPtr result
        touchManagedPtr actionable
        return result'

    -- | Generate a function pointer callable from C code, from a `C_ActionableInterfaceGetActionTargetValueFieldCallback`.
    foreign import ccall "wrapper"
        mk_ActionableInterfaceGetActionTargetValueFieldCallback :: C_ActionableInterfaceGetActionTargetValueFieldCallback -> IO (FunPtr C_ActionableInterfaceGetActionTargetValueFieldCallback)

    -- | /No description available in the introspection data./
    type ActionableInterfaceGetActionTargetValueFieldCallback =
        Gtk.Actionable.Actionable
        -- ^ /@actionable@/: a t'GI.Gtk.Interfaces.Actionable.Actionable' widget
        -> IO GVariant
        -- ^ __Returns:__ the current target value

    -- | A convenience synonym for @`Nothing` :: `Maybe` `ActionableInterfaceGetActionTargetValueFieldCallback`@.
    noActionableInterfaceGetActionTargetValueFieldCallback :: Maybe ActionableInterfaceGetActionTargetValueFieldCallback
    noActionableInterfaceGetActionTargetValueFieldCallback :: Maybe ActionableInterfaceGetActionTargetValueFieldCallback
    noActionableInterfaceGetActionTargetValueFieldCallback = Maybe ActionableInterfaceGetActionTargetValueFieldCallback
    forall a. Maybe a
    Nothing

    -- | Wrap the callback into a `GClosure`.
    genClosure_ActionableInterfaceGetActionTargetValueFieldCallback :: MonadIO m => ActionableInterfaceGetActionTargetValueFieldCallback -> m (GClosure C_ActionableInterfaceGetActionTargetValueFieldCallback)
    genClosure_ActionableInterfaceGetActionTargetValueFieldCallback :: forall (m :: * -> *).
    MonadIO m =>
    ActionableInterfaceGetActionTargetValueFieldCallback
    -> m (GClosure
            C_ActionableInterfaceGetActionTargetValueFieldCallback)
    genClosure_ActionableInterfaceGetActionTargetValueFieldCallback ActionableInterfaceGetActionTargetValueFieldCallback
    cb = IO
      (GClosure C_ActionableInterfaceGetActionTargetValueFieldCallback)
    -> m (GClosure
            C_ActionableInterfaceGetActionTargetValueFieldCallback)
    forall a. IO a -> m a
    forall (m :: * -> *) a. MonadIO m => IO a -> m a
    liftIO (IO
       (GClosure C_ActionableInterfaceGetActionTargetValueFieldCallback)
     -> m (GClosure
             C_ActionableInterfaceGetActionTargetValueFieldCallback))
    -> IO
         (GClosure C_ActionableInterfaceGetActionTargetValueFieldCallback)
    -> m (GClosure
            C_ActionableInterfaceGetActionTargetValueFieldCallback)
    forall a b. (a -> b) -> a -> b
    $ do
        let cb' :: C_ActionableInterfaceGetActionTargetValueFieldCallback
    cb' = Maybe
      (Ptr
         (FunPtr C_ActionableInterfaceGetActionTargetValueFieldCallback))
    -> ActionableInterfaceGetActionTargetValueFieldCallback
    -> C_ActionableInterfaceGetActionTargetValueFieldCallback
    wrap_ActionableInterfaceGetActionTargetValueFieldCallback Maybe
      (Ptr
         (FunPtr C_ActionableInterfaceGetActionTargetValueFieldCallback))
    forall a. Maybe a
    Nothing ActionableInterfaceGetActionTargetValueFieldCallback
    cb
        C_ActionableInterfaceGetActionTargetValueFieldCallback
    -> IO
         (FunPtr C_ActionableInterfaceGetActionTargetValueFieldCallback)
    mk_ActionableInterfaceGetActionTargetValueFieldCallback C_ActionableInterfaceGetActionTargetValueFieldCallback
    cb' IO (FunPtr C_ActionableInterfaceGetActionTargetValueFieldCallback)
    -> (FunPtr C_ActionableInterfaceGetActionTargetValueFieldCallback
        -> IO
             (GClosure C_ActionableInterfaceGetActionTargetValueFieldCallback))
    -> IO
         (GClosure C_ActionableInterfaceGetActionTargetValueFieldCallback)
    forall a b. IO a -> (a -> IO b) -> IO b
    forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
    >>= FunPtr C_ActionableInterfaceGetActionTargetValueFieldCallback
    -> IO
         (GClosure C_ActionableInterfaceGetActionTargetValueFieldCallback)
    forall (m :: * -> *) a. MonadIO m => FunPtr a -> m (GClosure a)
    B.GClosure.newGClosure

    -- | Wrap a `ActionableInterfaceGetActionTargetValueFieldCallback` into a `C_ActionableInterfaceGetActionTargetValueFieldCallback`.
    wrap_ActionableInterfaceGetActionTargetValueFieldCallback ::
        Maybe (Ptr (FunPtr C_ActionableInterfaceGetActionTargetValueFieldCallback)) ->
        ActionableInterfaceGetActionTargetValueFieldCallback ->
        C_ActionableInterfaceGetActionTargetValueFieldCallback
    wrap_ActionableInterfaceGetActionTargetValueFieldCallback :: Maybe
      (Ptr
         (FunPtr C_ActionableInterfaceGetActionTargetValueFieldCallback))
    -> ActionableInterfaceGetActionTargetValueFieldCallback
    -> C_ActionableInterfaceGetActionTargetValueFieldCallback
    wrap_ActionableInterfaceGetActionTargetValueFieldCallback Maybe
      (Ptr
         (FunPtr C_ActionableInterfaceGetActionTargetValueFieldCallback))
    gi'funptrptr ActionableInterfaceGetActionTargetValueFieldCallback
    gi'cb Ptr Actionable
    actionable = do
        actionable' <- ((ManagedPtr Actionable -> Actionable)
    -> Ptr Actionable -> IO Actionable
    forall a b.
    (HasCallStack, GObject a, GObject b) =>
    (ManagedPtr a -> a) -> Ptr b -> IO a
    newObject ManagedPtr Actionable -> Actionable
    Gtk.Actionable.Actionable) Ptr Actionable
    actionable
        result <- gi'cb  actionable'
        maybeReleaseFunPtr gi'funptrptr
        result' <- unsafeManagedPtrGetPtr result
        return result'

    -- callback ActionableInterfaceGetActionNameFieldCallback
    {- Callable
      { returnType = Just (TBasicType TUTF8)
      , returnMayBeNull = True
      , returnTransfer = TransferNothing
      , returnDocumentation =
          Documentation
            { rawDocText = Just "the action name, or %NULL if none is set"
            , sinceVersion = Nothing
            }
      , args =
          [ Arg
              { argCName = "actionable"
              , argType =
                  TInterface Name { namespace = "Gtk" , name = "Actionable" }
              , argCType = Just "GtkActionable*"
              , direction = DirectionIn
              , mayBeNull = False
              , argDoc =
                  Documentation
                    { rawDocText = Just "a #GtkActionable widget"
                    , sinceVersion = Nothing
                    }
              , argScope = ScopeTypeInvalid
              , argClosure = -1
              , argDestroy = -1
              , argCallerAllocates = False
              , argCallbackUserData = False
              , transfer = TransferNothing
              }
          ]
      , skipReturn = False
      , callableThrows = False
      , callableDeprecated = Nothing
      , callableDocumentation =
          Documentation { rawDocText = Nothing , sinceVersion = Nothing }
      , callableResolvable = Nothing
      }
    -}
    -- | Type for the callback on the (unwrapped) C side.
    type C_ActionableInterfaceGetActionNameFieldCallback =
        Ptr Gtk.Actionable.Actionable ->
        IO CString

    -- Args: [ Arg
    --           { argCName = "actionable"
    --           , argType =
    --               TInterface Name { namespace = "Gtk" , name = "Actionable" }
    --           , argCType = Just "GtkActionable*"
    --           , direction = DirectionIn
    --           , mayBeNull = False
    --           , argDoc =
    --               Documentation
    --                 { rawDocText = Just "a #GtkActionable widget"
    --                 , sinceVersion = Nothing
    --                 }
    --           , argScope = ScopeTypeInvalid
    --           , argClosure = -1
    --           , argDestroy = -1
    --           , argCallerAllocates = False
    --           , argCallbackUserData = False
    --           , transfer = TransferNothing
    --           }
    --       ]
    -- Lengths: []
    -- returnType: Just (TBasicType TUTF8)
    -- throws : False
    -- Skip return : False

    foreign import ccall "dynamic" __dynamic_C_ActionableInterfaceGetActionNameFieldCallback :: FunPtr C_ActionableInterfaceGetActionNameFieldCallback -> C_ActionableInterfaceGetActionNameFieldCallback

    -- | Given a pointer to a foreign C function, wrap it into a function callable from Haskell.
    dynamic_ActionableInterfaceGetActionNameFieldCallback ::
        (B.CallStack.HasCallStack, MonadIO m, Gtk.Actionable.IsActionable a) =>
        FunPtr C_ActionableInterfaceGetActionNameFieldCallback
        -> a
        -- ^ /@actionable@/: a t'GI.Gtk.Interfaces.Actionable.Actionable' widget
        -> m (Maybe T.Text)
        -- ^ __Returns:__ the action name, or 'P.Nothing' if none is set
    dynamic_ActionableInterfaceGetActionNameFieldCallback :: forall (m :: * -> *) a.
    (HasCallStack, MonadIO m, IsActionable a) =>
    FunPtr C_ActionableInterfaceGetActionNameFieldCallback
    -> a -> m (Maybe Text)
    dynamic_ActionableInterfaceGetActionNameFieldCallback FunPtr C_ActionableInterfaceGetActionNameFieldCallback
    __funPtr a
    actionable = IO (Maybe Text) -> m (Maybe Text)
    forall a. IO a -> m a
    forall (m :: * -> *) a. MonadIO m => IO a -> m a
    liftIO (IO (Maybe Text) -> m (Maybe Text))
    -> IO (Maybe Text) -> m (Maybe Text)
    forall a b. (a -> b) -> a -> b
    $ do
        actionable' <- a -> IO (Ptr Actionable)
    forall a b. (HasCallStack, ManagedPtrNewtype a) => a -> IO (Ptr b)
    unsafeManagedPtrCastPtr a
    actionable
        result <- (__dynamic_C_ActionableInterfaceGetActionNameFieldCallback __funPtr) actionable'
        maybeResult <- convertIfNonNull result $ \CString
    result' -> do
            result'' <- HasCallStack => CString -> IO Text
    CString -> IO Text
    cstringToText CString
    result'
            return result''
        touchManagedPtr actionable
        return maybeResult

    -- | Generate a function pointer callable from C code, from a `C_ActionableInterfaceGetActionNameFieldCallback`.
    foreign import ccall "wrapper"
        mk_ActionableInterfaceGetActionNameFieldCallback :: C_ActionableInterfaceGetActionNameFieldCallback -> IO (FunPtr C_ActionableInterfaceGetActionNameFieldCallback)

    -- | /No description available in the introspection data./
    type ActionableInterfaceGetActionNameFieldCallback =
        Gtk.Actionable.Actionable
        -- ^ /@actionable@/: a t'GI.Gtk.Interfaces.Actionable.Actionable' widget
        -> IO (Maybe T.Text)
        -- ^ __Returns:__ the action name, or 'P.Nothing' if none is set

    -- | A convenience synonym for @`Nothing` :: `Maybe` `ActionableInterfaceGetActionNameFieldCallback`@.
    noActionableInterfaceGetActionNameFieldCallback :: Maybe ActionableInterfaceGetActionNameFieldCallback
    noActionableInterfaceGetActionNameFieldCallback :: Maybe ActionableInterfaceGetActionNameFieldCallback
    noActionableInterfaceGetActionNameFieldCallback = Maybe ActionableInterfaceGetActionNameFieldCallback
    forall a. Maybe a
    Nothing

    -- | Wrap the callback into a `GClosure`.
    genClosure_ActionableInterfaceGetActionNameFieldCallback :: MonadIO m => ActionableInterfaceGetActionNameFieldCallback -> m (GClosure C_ActionableInterfaceGetActionNameFieldCallback)
    genClosure_ActionableInterfaceGetActionNameFieldCallback :: forall (m :: * -> *).
    MonadIO m =>
    ActionableInterfaceGetActionNameFieldCallback
    -> m (GClosure C_ActionableInterfaceGetActionNameFieldCallback)
    genClosure_ActionableInterfaceGetActionNameFieldCallback ActionableInterfaceGetActionNameFieldCallback
    cb = IO (GClosure C_ActionableInterfaceGetActionNameFieldCallback)
    -> m (GClosure C_ActionableInterfaceGetActionNameFieldCallback)
    forall a. IO a -> m a
    forall (m :: * -> *) a. MonadIO m => IO a -> m a
    liftIO (IO (GClosure C_ActionableInterfaceGetActionNameFieldCallback)
     -> m (GClosure C_ActionableInterfaceGetActionNameFieldCallback))
    -> IO (GClosure C_ActionableInterfaceGetActionNameFieldCallback)
    -> m (GClosure C_ActionableInterfaceGetActionNameFieldCallback)
    forall a b. (a -> b) -> a -> b
    $ do
        let cb' :: C_ActionableInterfaceGetActionNameFieldCallback
    cb' = Maybe
      (Ptr (FunPtr C_ActionableInterfaceGetActionNameFieldCallback))
    -> ActionableInterfaceGetActionNameFieldCallback
    -> C_ActionableInterfaceGetActionNameFieldCallback
    wrap_ActionableInterfaceGetActionNameFieldCallback Maybe
      (Ptr (FunPtr C_ActionableInterfaceGetActionNameFieldCallback))
    forall a. Maybe a
    Nothing ActionableInterfaceGetActionNameFieldCallback
    cb
        C_ActionableInterfaceGetActionNameFieldCallback
    -> IO (FunPtr C_ActionableInterfaceGetActionNameFieldCallback)
    mk_ActionableInterfaceGetActionNameFieldCallback C_ActionableInterfaceGetActionNameFieldCallback
    cb' IO (FunPtr C_ActionableInterfaceGetActionNameFieldCallback)
    -> (FunPtr C_ActionableInterfaceGetActionNameFieldCallback
        -> IO (GClosure C_ActionableInterfaceGetActionNameFieldCallback))
    -> IO (GClosure C_ActionableInterfaceGetActionNameFieldCallback)
    forall a b. IO a -> (a -> IO b) -> IO b
    forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
    >>= FunPtr C_ActionableInterfaceGetActionNameFieldCallback
    -> IO (GClosure C_ActionableInterfaceGetActionNameFieldCallback)
    forall (m :: * -> *) a. MonadIO m => FunPtr a -> m (GClosure a)
    B.GClosure.newGClosure

    -- | Wrap a `ActionableInterfaceGetActionNameFieldCallback` into a `C_ActionableInterfaceGetActionNameFieldCallback`.
    wrap_ActionableInterfaceGetActionNameFieldCallback ::
        Maybe (Ptr (FunPtr C_ActionableInterfaceGetActionNameFieldCallback)) ->
        ActionableInterfaceGetActionNameFieldCallback ->
        C_ActionableInterfaceGetActionNameFieldCallback
    wrap_ActionableInterfaceGetActionNameFieldCallback :: Maybe
      (Ptr (FunPtr C_ActionableInterfaceGetActionNameFieldCallback))
    -> ActionableInterfaceGetActionNameFieldCallback
    -> C_ActionableInterfaceGetActionNameFieldCallback
    wrap_ActionableInterfaceGetActionNameFieldCallback Maybe
      (Ptr (FunPtr C_ActionableInterfaceGetActionNameFieldCallback))
    gi'funptrptr ActionableInterfaceGetActionNameFieldCallback
    gi'cb Ptr Actionable
    actionable = do
        actionable' <- ((ManagedPtr Actionable -> Actionable)
    -> Ptr Actionable -> IO Actionable
    forall a b.
    (HasCallStack, GObject a, GObject b) =>
    (ManagedPtr a -> a) -> Ptr b -> IO a
    newObject ManagedPtr Actionable -> Actionable
    Gtk.Actionable.Actionable) Ptr Actionable
    actionable
        result <- gi'cb  actionable'
        maybeReleaseFunPtr gi'funptrptr
        maybeM FP.nullPtr result $ \Text
    result' -> do
            result'' <- Text -> IO CString
    textToCString Text
    result'
            return result''

    -- callback AccelMapForeach
    {- Callable
      { returnType = Nothing
      , returnMayBeNull = False
      , returnTransfer = TransferNothing
      , returnDocumentation =
          Documentation { rawDocText = Nothing , sinceVersion = Nothing }
      , args =
          [ Arg
              { argCName = "data"
              , argType = TBasicType TPtr
              , argCType = Just "gpointer"
              , direction = DirectionIn
              , mayBeNull = True
              , argDoc =
                  Documentation
                    { rawDocText =
                        Just
                          "User data passed to gtk_accel_map_foreach() or\n gtk_accel_map_foreach_unfiltered()"
                    , sinceVersion = Nothing
                    }
              , argScope = ScopeTypeInvalid
              , argClosure = -1
              , argDestroy = -1
              , argCallerAllocates = False
              , argCallbackUserData = False
              , transfer = TransferNothing
              }
          , Arg
              { argCName = "accel_path"
              , argType = TBasicType TUTF8
              , argCType = Just "const gchar*"
              , direction = DirectionIn
              , mayBeNull = False
              , argDoc =
                  Documentation
                    { rawDocText = Just "Accel path of the current accelerator"
                    , sinceVersion = Nothing
                    }
              , argScope = ScopeTypeInvalid
              , argClosure = -1
              , argDestroy = -1
              , argCallerAllocates = False
              , argCallbackUserData = False
              , transfer = TransferNothing
              }
          , Arg
              { argCName = "accel_key"
              , argType = TBasicType TUInt
              , argCType = Just "guint"
              , direction = DirectionIn
              , mayBeNull = False
              , argDoc =
                  Documentation
                    { rawDocText = Just "Key of the current accelerator"
                    , sinceVersion = Nothing
                    }
              , argScope = ScopeTypeInvalid
              , argClosure = -1
              , argDestroy = -1
              , argCallerAllocates = False
              , argCallbackUserData = False
              , transfer = TransferNothing
              }
          , Arg
              { argCName = "accel_mods"
              , argType =
                  TInterface Name { namespace = "Gdk" , name = "ModifierType" }
              , argCType = Just "GdkModifierType"
              , direction = DirectionIn
              , mayBeNull = False
              , argDoc =
                  Documentation
                    { rawDocText = Just "Modifiers of the current accelerator"
                    , sinceVersion = Nothing
                    }
              , argScope = ScopeTypeInvalid
              , argClosure = -1
              , argDestroy = -1
              , argCallerAllocates = False
              , argCallbackUserData = False
              , transfer = TransferNothing
              }
          , Arg
              { argCName = "changed"
              , argType = TBasicType TBoolean
              , argCType = Just "gboolean"
              , direction = DirectionIn
              , mayBeNull = False
              , argDoc =
                  Documentation
                    { rawDocText =
                        Just
                          "Changed flag of the accelerator (if %TRUE, accelerator has changed\n during runtime and would need to be saved during an accelerator dump)"
                    , sinceVersion = Nothing
                    }
              , argScope = ScopeTypeInvalid
              , argClosure = -1
              , argDestroy = -1
              , argCallerAllocates = False
              , argCallbackUserData = False
              , transfer = TransferNothing
              }
          ]
      , skipReturn = False
      , callableThrows = False
      , callableDeprecated = Nothing
      , callableDocumentation =
          Documentation { rawDocText = Nothing , sinceVersion = Nothing }
      , callableResolvable = Nothing
      }
    -}
    -- | Type for the callback on the (unwrapped) C side.
    type C_AccelMapForeach =
        Ptr () ->
        CString ->
        Word32 ->
        CUInt ->
        CInt ->
        IO ()

    -- Args: [ Arg
    --           { argCName = "data"
    --           , argType = TBasicType TPtr
    --           , argCType = Just "gpointer"
    --           , direction = DirectionIn
    --           , mayBeNull = True
    --           , argDoc =
    --               Documentation
    --                 { rawDocText =
    --                     Just
    --                       "User data passed to gtk_accel_map_foreach() or\n gtk_accel_map_foreach_unfiltered()"
    --                 , sinceVersion = Nothing
    --                 }
    --           , argScope = ScopeTypeInvalid
    --           , argClosure = -1
    --           , argDestroy = -1
    --           , argCallerAllocates = False
    --           , argCallbackUserData = False
    --           , transfer = TransferNothing
    --           }
    --       , Arg
    --           { argCName = "accel_path"
    --           , argType = TBasicType TUTF8
    --           , argCType = Just "const gchar*"
    --           , direction = DirectionIn
    --           , mayBeNull = False
    --           , argDoc =
    --               Documentation
    --                 { rawDocText = Just "Accel path of the current accelerator"
    --                 , sinceVersion = Nothing
    --                 }
    --           , argScope = ScopeTypeInvalid
    --           , argClosure = -1
    --           , argDestroy = -1
    --           , argCallerAllocates = False
    --           , argCallbackUserData = False
    --           , transfer = TransferNothing
    --           }
    --       , Arg
    --           { argCName = "accel_key"
    --           , argType = TBasicType TUInt
    --           , argCType = Just "guint"
    --           , direction = DirectionIn
    --           , mayBeNull = False
    --           , argDoc =
    --               Documentation
    --                 { rawDocText = Just "Key of the current accelerator"
    --                 , sinceVersion = Nothing
    --                 }
    --           , argScope = ScopeTypeInvalid
    --           , argClosure = -1
    --           , argDestroy = -1
    --           , argCallerAllocates = False
    --           , argCallbackUserData = False
    --           , transfer = TransferNothing
    --           }
    --       , Arg
    --           { argCName = "accel_mods"
    --           , argType =
    --               TInterface Name { namespace = "Gdk" , name = "ModifierType" }
    --           , argCType = Just "GdkModifierType"
    --           , direction = DirectionIn
    --           , mayBeNull = False
    --           , argDoc =
    --               Documentation
    --                 { rawDocText = Just "Modifiers of the current accelerator"
    --                 , sinceVersion = Nothing
    --                 }
    --           , argScope = ScopeTypeInvalid
    --           , argClosure = -1
    --           , argDestroy = -1
    --           , argCallerAllocates = False
    --           , argCallbackUserData = False
    --           , transfer = TransferNothing
    --           }
    --       , Arg
    --           { argCName = "changed"
    --           , argType = TBasicType TBoolean
    --           , argCType = Just "gboolean"
    --           , direction = DirectionIn
    --           , mayBeNull = False
    --           , argDoc =
    --               Documentation
    --                 { rawDocText =
    --                     Just
    --                       "Changed flag of the accelerator (if %TRUE, accelerator has changed\n during runtime and would need to be saved during an accelerator dump)"
    --                 , sinceVersion = Nothing
    --                 }
    --           , argScope = ScopeTypeInvalid
    --           , argClosure = -1
    --           , argDestroy = -1
    --           , argCallerAllocates = False
    --           , argCallbackUserData = False
    --           , transfer = TransferNothing
    --           }
    --       ]
    -- Lengths: []
    -- returnType: Nothing
    -- throws : False
    -- Skip return : False

    foreign import ccall "dynamic" __dynamic_C_AccelMapForeach :: FunPtr C_AccelMapForeach -> C_AccelMapForeach

    -- | Given a pointer to a foreign C function, wrap it into a function callable from Haskell.
    dynamic_AccelMapForeach ::
        (B.CallStack.HasCallStack, MonadIO m) =>
        FunPtr C_AccelMapForeach
        -> Ptr ()
        -- ^ /@data@/: User data passed to 'GI.Gtk.Objects.AccelMap.accelMapForeach' or
        --  'GI.Gtk.Objects.AccelMap.accelMapForeachUnfiltered'
        -> T.Text
        -- ^ /@accelPath@/: Accel path of the current accelerator
        -> Word32
        -- ^ /@accelKey@/: Key of the current accelerator
        -> [Gdk.Flags.ModifierType]
        -- ^ /@accelMods@/: Modifiers of the current accelerator
        -> Bool
        -- ^ /@changed@/: Changed flag of the accelerator (if 'P.True', accelerator has changed
        --  during runtime and would need to be saved during an accelerator dump)
        -> m ()
    dynamic_AccelMapForeach :: forall (m :: * -> *).
    (HasCallStack, MonadIO m) =>
    FunPtr C_AccelMapForeach
    -> Ptr () -> Text -> Word32 -> [ModifierType] -> Bool -> m ()
    dynamic_AccelMapForeach FunPtr C_AccelMapForeach
    __funPtr Ptr ()
    data_ Text
    accelPath Word32
    accelKey [ModifierType]
    accelMods Bool
    changed = IO () -> m ()
    forall a. IO a -> m a
    forall (m :: * -> *) a. MonadIO m => IO a -> m a
    liftIO (IO () -> m ()) -> IO () -> m ()
    forall a b. (a -> b) -> a -> b
    $ do
        accelPath' <- Text -> IO CString
    textToCString Text
    accelPath
        let accelMods' = [ModifierType] -> CUInt
    forall b a. (Num b, IsGFlag a) => [a] -> b
    gflagsToWord [ModifierType]
    accelMods
        let changed' = (Int -> CInt
    forall a b. (Integral a, Num b) => a -> b
    P.fromIntegral (Int -> CInt) -> (Bool -> Int) -> Bool -> CInt
    forall b c a. (b -> c) -> (a -> b) -> a -> c
    . Bool -> Int
    forall a. Enum a => a -> Int
    P.fromEnum) Bool
    changed
        (__dynamic_C_AccelMapForeach __funPtr) data_ accelPath' accelKey accelMods' changed'
        freeMem accelPath'
        return ()

    -- | Generate a function pointer callable from C code, from a `C_AccelMapForeach`.
    foreign import ccall "wrapper"
        mk_AccelMapForeach :: C_AccelMapForeach -> IO (FunPtr C_AccelMapForeach)

    -- | /No description available in the introspection data./
    type AccelMapForeach =
        Ptr ()
        -- ^ /@data@/: User data passed to 'GI.Gtk.Objects.AccelMap.accelMapForeach' or
        --  'GI.Gtk.Objects.AccelMap.accelMapForeachUnfiltered'
        -> T.Text
        -- ^ /@accelPath@/: Accel path of the current accelerator
        -> Word32
        -- ^ /@accelKey@/: Key of the current accelerator
        -> [Gdk.Flags.ModifierType]
        -- ^ /@accelMods@/: Modifiers of the current accelerator
        -> Bool
        -- ^ /@changed@/: Changed flag of the accelerator (if 'P.True', accelerator has changed
        --  during runtime and would need to be saved during an accelerator dump)
        -> IO ()

    -- | A convenience synonym for @`Nothing` :: `Maybe` `AccelMapForeach`@.
    noAccelMapForeach :: Maybe AccelMapForeach
    noAccelMapForeach :: Maybe AccelMapForeach
    noAccelMapForeach = Maybe AccelMapForeach
    forall a. Maybe a
    Nothing

    -- | Wrap the callback into a `GClosure`.
    genClosure_AccelMapForeach :: MonadIO m => AccelMapForeach -> m (GClosure C_AccelMapForeach)
    genClosure_AccelMapForeach :: forall (m :: * -> *).
    MonadIO m =>
    AccelMapForeach -> m (GClosure C_AccelMapForeach)
    genClosure_AccelMapForeach AccelMapForeach
    cb = IO (GClosure C_AccelMapForeach) -> m (GClosure C_AccelMapForeach)
    forall a. IO a -> m a
    forall (m :: * -> *) a. MonadIO m => IO a -> m a
    liftIO (IO (GClosure C_AccelMapForeach) -> m (GClosure C_AccelMapForeach))
    -> IO (GClosure C_AccelMapForeach)
    -> m (GClosure C_AccelMapForeach)
    forall a b. (a -> b) -> a -> b
    $ do
        let cb' :: C_AccelMapForeach
    cb' = Maybe (Ptr (FunPtr C_AccelMapForeach))
    -> AccelMapForeach -> C_AccelMapForeach
    wrap_AccelMapForeach Maybe (Ptr (FunPtr C_AccelMapForeach))
    forall a. Maybe a
    Nothing AccelMapForeach
    cb
        C_AccelMapForeach -> IO (FunPtr C_AccelMapForeach)
    mk_AccelMapForeach C_AccelMapForeach
    cb' IO (FunPtr C_AccelMapForeach)
    -> (FunPtr C_AccelMapForeach -> IO (GClosure C_AccelMapForeach))
    -> IO (GClosure C_AccelMapForeach)
    forall a b. IO a -> (a -> IO b) -> IO b
    forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
    >>= FunPtr C_AccelMapForeach -> IO (GClosure C_AccelMapForeach)
    forall (m :: * -> *) a. MonadIO m => FunPtr a -> m (GClosure a)
    B.GClosure.newGClosure

    -- | Wrap a `AccelMapForeach` into a `C_AccelMapForeach`.
    wrap_AccelMapForeach ::
        Maybe (Ptr (FunPtr C_AccelMapForeach)) ->
        AccelMapForeach ->
        C_AccelMapForeach
    wrap_AccelMapForeach :: Maybe (Ptr (FunPtr C_AccelMapForeach))
    -> AccelMapForeach -> C_AccelMapForeach
    wrap_AccelMapForeach Maybe (Ptr (FunPtr C_AccelMapForeach))
    gi'funptrptr AccelMapForeach
    gi'cb Ptr ()
    data_ CString
    accelPath Word32
    accelKey CUInt
    accelMods CInt
    changed = do
        accelPath' <- HasCallStack => CString -> IO Text
    CString -> IO Text
    cstringToText CString
    accelPath
        let accelMods' = CUInt -> [ModifierType]
    forall a b. (Storable a, Integral a, Bits a, IsGFlag b) => a -> [b]
    wordToGFlags CUInt
    accelMods
        let changed' = (CInt -> CInt -> Bool
    forall a. Eq a => a -> a -> Bool
    /= CInt
    0) CInt
    changed
        gi'cb  data_ accelPath' accelKey accelMods' changed'
        maybeReleaseFunPtr gi'funptrptr

    -- callback AccelGroupFindFunc
    {- Callable
      { returnType = Just (TBasicType TBoolean)
      , returnMayBeNull = False
      , returnTransfer = TransferNothing
      , returnDocumentation =
          Documentation { rawDocText = Nothing , sinceVersion = Nothing }
      , args =
          [ Arg
              { argCName = "key"
              , argType =
                  TInterface Name { namespace = "Gtk" , name = "AccelKey" }
              , argCType = Just "GtkAccelKey*"
              , direction = DirectionIn
              , mayBeNull = False
              , argDoc =
                  Documentation { rawDocText = Nothing , sinceVersion = Nothing }
              , argScope = ScopeTypeInvalid
              , argClosure = -1
              , argDestroy = -1
              , argCallerAllocates = False
              , argCallbackUserData = False
              , transfer = TransferNothing
              }
          , Arg
              { argCName = "closure"
              , argType = TGClosure Nothing
              , argCType = Just "GClosure*"
              , direction = DirectionIn
              , mayBeNull = False
              , argDoc =
                  Documentation { rawDocText = Nothing , sinceVersion = Nothing }
              , argScope = ScopeTypeInvalid
              , argClosure = -1
              , argDestroy = -1
              , argCallerAllocates = False
              , argCallbackUserData = False
              , transfer = TransferNothing
              }
          , Arg
              { argCName = "data"
              , argType = TBasicType TPtr
              , argCType = Just "gpointer"
              , direction = DirectionIn
              , mayBeNull = True
              , argDoc =
                  Documentation { rawDocText = Nothing , sinceVersion = Nothing }
              , argScope = ScopeTypeInvalid
              , argClosure = -1
              , argDestroy = -1
              , argCallerAllocates = False
              , argCallbackUserData = True
              , transfer = TransferNothing
              }
          ]
      , skipReturn = False
      , callableThrows = False
      , callableDeprecated = Nothing
      , callableDocumentation =
          Documentation { rawDocText = Nothing , sinceVersion = Just "2.2" }
      , callableResolvable = Nothing
      }
    -}
    -- | Type for the callback on the (unwrapped) C side.
    type C_AccelGroupFindFunc =
        Ptr Gtk.AccelKey.AccelKey ->
        Ptr (GClosure ()) ->
        Ptr () ->
        IO CInt

    -- Args: [ Arg
    --           { argCName = "key"
    --           , argType =
    --               TInterface Name { namespace = "Gtk" , name = "AccelKey" }
    --           , argCType = Just "GtkAccelKey*"
    --           , direction = DirectionIn
    --           , mayBeNull = False
    --           , argDoc =
    --               Documentation { rawDocText = Nothing , sinceVersion = Nothing }
    --           , argScope = ScopeTypeInvalid
    --           , argClosure = -1
    --           , argDestroy = -1
    --           , argCallerAllocates = False
    --           , argCallbackUserData = False
    --           , transfer = TransferNothing
    --           }
    --       , Arg
    --           { argCName = "closure"
    --           , argType = TGClosure Nothing
    --           , argCType = Just "GClosure*"
    --           , direction = DirectionIn
    --           , mayBeNull = False
    --           , argDoc =
    --               Documentation { rawDocText = Nothing , sinceVersion = Nothing }
    --           , argScope = ScopeTypeInvalid
    --           , argClosure = -1
    --           , argDestroy = -1
    --           , argCallerAllocates = False
    --           , argCallbackUserData = False
    --           , transfer = TransferNothing
    --           }
    --       , Arg
    --           { argCName = "data"
    --           , argType = TBasicType TPtr
    --           , argCType = Just "gpointer"
    --           , direction = DirectionIn
    --           , mayBeNull = True
    --           , argDoc =
    --               Documentation { rawDocText = Nothing , sinceVersion = Nothing }
    --           , argScope = ScopeTypeInvalid
    --           , argClosure = -1
    --           , argDestroy = -1
    --           , argCallerAllocates = False
    --           , argCallbackUserData = True
    --           , transfer = TransferNothing
    --           }
    --       ]
    -- Lengths: []
    -- returnType: Just (TBasicType TBoolean)
    -- throws : False
    -- Skip return : False

    foreign import ccall "dynamic" __dynamic_C_AccelGroupFindFunc :: FunPtr C_AccelGroupFindFunc -> C_AccelGroupFindFunc

    -- | Given a pointer to a foreign C function, wrap it into a function callable from Haskell.
    dynamic_AccelGroupFindFunc ::
        (B.CallStack.HasCallStack, MonadIO m) =>
        FunPtr C_AccelGroupFindFunc
        -> Gtk.AccelKey.AccelKey
        -> GClosure a
        -> Ptr ()
        -> m Bool
    dynamic_AccelGroupFindFunc :: forall (m :: * -> *) a.
    (HasCallStack, MonadIO m) =>
    FunPtr C_AccelGroupFindFunc
    -> AccelKey -> GClosure a -> Ptr () -> m Bool
    dynamic_AccelGroupFindFunc FunPtr C_AccelGroupFindFunc
    __funPtr AccelKey
    key GClosure a
    closure Ptr ()
    data_ = IO Bool -> m Bool
    forall a. IO a -> m a
    forall (m :: * -> *) a. MonadIO m => IO a -> m a
    liftIO (IO Bool -> m Bool) -> IO Bool -> m Bool
    forall a b. (a -> b) -> a -> b
    $ do
        key' <- AccelKey -> IO (Ptr AccelKey)
    forall a. (HasCallStack, ManagedPtrNewtype a) => a -> IO (Ptr a)
    unsafeManagedPtrGetPtr AccelKey
    key
        closure' <- unsafeManagedPtrCastPtr closure
        result <- (__dynamic_C_AccelGroupFindFunc __funPtr) key' closure' data_
        let result' = (CInt -> CInt -> Bool
    forall a. Eq a => a -> a -> Bool
    /= CInt
    0) CInt
    result
        touchManagedPtr key
        touchManagedPtr closure
        return result'

    -- | Generate a function pointer callable from C code, from a `C_AccelGroupFindFunc`.
    foreign import ccall "wrapper"
        mk_AccelGroupFindFunc :: C_AccelGroupFindFunc -> IO (FunPtr C_AccelGroupFindFunc)

    -- | /No description available in the introspection data./
    --
    -- /Since: 2.2/
    type AccelGroupFindFunc =
        Gtk.AccelKey.AccelKey
        -> GClosure ()
        -> IO Bool

    -- | A convenience synonym for @`Nothing` :: `Maybe` `AccelGroupFindFunc`@.
    noAccelGroupFindFunc :: Maybe AccelGroupFindFunc
    noAccelGroupFindFunc :: Maybe AccelGroupFindFunc
    noAccelGroupFindFunc = Maybe AccelGroupFindFunc
    forall a. Maybe a
    Nothing

    -- | /No description available in the introspection data./
    --
    -- /Since: 2.2/
    type AccelGroupFindFunc_WithClosures =
        Gtk.AccelKey.AccelKey
        -> GClosure ()
        -> Ptr ()
        -> IO Bool

    -- | A convenience synonym for @`Nothing` :: `Maybe` `AccelGroupFindFunc_WithClosures`@.
    noAccelGroupFindFunc_WithClosures :: Maybe AccelGroupFindFunc_WithClosures
    noAccelGroupFindFunc_WithClosures :: Maybe AccelGroupFindFunc_WithClosures
    noAccelGroupFindFunc_WithClosures = Maybe AccelGroupFindFunc_WithClosures
    forall a. Maybe a
    Nothing

    -- | A simple wrapper that ignores the closure arguments.
    drop_closures_AccelGroupFindFunc :: AccelGroupFindFunc -> AccelGroupFindFunc_WithClosures
    drop_closures_AccelGroupFindFunc :: AccelGroupFindFunc -> AccelGroupFindFunc_WithClosures
    drop_closures_AccelGroupFindFunc AccelGroupFindFunc
    _f AccelKey
    key GClosure ()
    closure Ptr ()
    _ = AccelGroupFindFunc
    _f AccelKey
    key GClosure ()
    closure

    -- | Wrap the callback into a `GClosure`.
    genClosure_AccelGroupFindFunc :: MonadIO m => AccelGroupFindFunc -> m (GClosure C_AccelGroupFindFunc)
    genClosure_AccelGroupFindFunc :: forall (m :: * -> *).
    MonadIO m =>
    AccelGroupFindFunc -> m (GClosure C_AccelGroupFindFunc)
    genClosure_AccelGroupFindFunc AccelGroupFindFunc
    cb = IO (GClosure C_AccelGroupFindFunc)
    -> m (GClosure C_AccelGroupFindFunc)
    forall a. IO a -> m a
    forall (m :: * -> *) a. MonadIO m => IO a -> m a
    liftIO (IO (GClosure C_AccelGroupFindFunc)
     -> m (GClosure C_AccelGroupFindFunc))
    -> IO (GClosure C_AccelGroupFindFunc)
    -> m (GClosure C_AccelGroupFindFunc)
    forall a b. (a -> b) -> a -> b
    $ do
        let cb' :: AccelGroupFindFunc_WithClosures
    cb' = AccelGroupFindFunc -> AccelGroupFindFunc_WithClosures
    drop_closures_AccelGroupFindFunc AccelGroupFindFunc
    cb
        let cb'' :: C_AccelGroupFindFunc
    cb'' = Maybe (Ptr (FunPtr C_AccelGroupFindFunc))
    -> AccelGroupFindFunc_WithClosures -> C_AccelGroupFindFunc
    wrap_AccelGroupFindFunc Maybe (Ptr (FunPtr C_AccelGroupFindFunc))
    forall a. Maybe a
    Nothing AccelGroupFindFunc_WithClosures
    cb'
        C_AccelGroupFindFunc -> IO (FunPtr C_AccelGroupFindFunc)
    mk_AccelGroupFindFunc C_AccelGroupFindFunc
    cb'' IO (FunPtr C_AccelGroupFindFunc)
    -> (FunPtr C_AccelGroupFindFunc
        -> IO (GClosure C_AccelGroupFindFunc))
    -> IO (GClosure C_AccelGroupFindFunc)
    forall a b. IO a -> (a -> IO b) -> IO b
    forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
    >>= FunPtr C_AccelGroupFindFunc -> IO (GClosure C_AccelGroupFindFunc)
    forall (m :: * -> *) a. MonadIO m => FunPtr a -> m (GClosure a)
    B.GClosure.newGClosure

    -- | Wrap a `AccelGroupFindFunc` into a `C_AccelGroupFindFunc`.
    wrap_AccelGroupFindFunc ::
        Maybe (Ptr (FunPtr C_AccelGroupFindFunc)) ->
        AccelGroupFindFunc_WithClosures ->
        C_AccelGroupFindFunc
    wrap_AccelGroupFindFunc :: Maybe (Ptr (FunPtr C_AccelGroupFindFunc))
    -> AccelGroupFindFunc_WithClosures -> C_AccelGroupFindFunc
    wrap_AccelGroupFindFunc Maybe (Ptr (FunPtr C_AccelGroupFindFunc))
    gi'funptrptr AccelGroupFindFunc_WithClosures
    gi'cb Ptr AccelKey
    key Ptr (GClosure ())
    closure Ptr ()
    data_ = do
        key' <- ((ManagedPtr AccelKey -> AccelKey) -> Ptr AccelKey -> IO AccelKey
    forall a.
    (HasCallStack, BoxedPtr a) =>
    (ManagedPtr a -> a) -> Ptr a -> IO a
    newPtr ManagedPtr AccelKey -> AccelKey
    Gtk.AccelKey.AccelKey) Ptr AccelKey
    key
        closure' <- (B.GClosure.newGClosureFromPtr . FP.castPtr) closure
        result <- gi'cb  key' closure' data_
        maybeReleaseFunPtr gi'funptrptr
        let result' = (Int -> CInt
    forall a b. (Integral a, Num b) => a -> b
    P.fromIntegral (Int -> CInt) -> (Bool -> Int) -> Bool -> CInt
    forall b c a. (b -> c) -> (a -> b) -> a -> c
    . Bool -> Int
    forall a. Enum a => a -> Int
    P.fromEnum) Bool
    result
        return result'

    -- callback AccelGroupActivate
    {- Callable
      { returnType = Just (TBasicType TBoolean)
      , returnMayBeNull = False
      , returnTransfer = TransferNothing
      , returnDocumentation =
          Documentation { rawDocText = Nothing , sinceVersion = Nothing }
      , args =
          [ Arg
              { argCName = "accel_group"
              , argType =
                  TInterface Name { namespace = "Gtk" , name = "AccelGroup" }
              , argCType = Just "GtkAccelGroup*"
              , direction = DirectionIn
              , mayBeNull = False
              , argDoc =
                  Documentation { rawDocText = Nothing , sinceVersion = Nothing }
              , argScope = ScopeTypeInvalid
              , argClosure = -1
              , argDestroy = -1
              , argCallerAllocates = False
              , argCallbackUserData = False
              , transfer = TransferNothing
              }
          , Arg
              { argCName = "acceleratable"
              , argType =
                  TInterface Name { namespace = "GObject" , name = "Object" }
              , argCType = Just "GObject*"
              , direction = DirectionIn
              , mayBeNull = False
              , argDoc =
                  Documentation { rawDocText = Nothing , sinceVersion = Nothing }
              , argScope = ScopeTypeInvalid
              , argClosure = -1
              , argDestroy = -1
              , argCallerAllocates = False
              , argCallbackUserData = False
              , transfer = TransferNothing
              }
          , Arg
              { argCName = "keyval"
              , argType = TBasicType TUInt
              , argCType = Just "guint"
              , direction = DirectionIn
              , mayBeNull = False
              , argDoc =
                  Documentation { rawDocText = Nothing , sinceVersion = Nothing }
              , argScope = ScopeTypeInvalid
              , argClosure = -1
              , argDestroy = -1
              , argCallerAllocates = False
              , argCallbackUserData = False
              , transfer = TransferNothing
              }
          , Arg
              { argCName = "modifier"
              , argType =
                  TInterface Name { namespace = "Gdk" , name = "ModifierType" }
              , argCType = Just "GdkModifierType"
              , direction = DirectionIn
              , mayBeNull = False
              , argDoc =
                  Documentation { rawDocText = Nothing , sinceVersion = Nothing }
              , argScope = ScopeTypeInvalid
              , argClosure = -1
              , argDestroy = -1
              , argCallerAllocates = False
              , argCallbackUserData = False
              , transfer = TransferNothing
              }
          ]
      , skipReturn = False
      , callableThrows = False
      , callableDeprecated = Nothing
      , callableDocumentation =
          Documentation { rawDocText = Nothing , sinceVersion = Nothing }
      , callableResolvable = Nothing
      }
    -}
    -- | Type for the callback on the (unwrapped) C side.
    type C_AccelGroupActivate =
        Ptr Gtk.AccelGroup.AccelGroup ->
        Ptr GObject.Object.Object ->
        Word32 ->
        CUInt ->
        IO CInt

    -- Args: [ Arg
    --           { argCName = "accel_group"
    --           , argType =
    --               TInterface Name { namespace = "Gtk" , name = "AccelGroup" }
    --           , argCType = Just "GtkAccelGroup*"
    --           , direction = DirectionIn
    --           , mayBeNull = False
    --           , argDoc =
    --               Documentation { rawDocText = Nothing , sinceVersion = Nothing }
    --           , argScope = ScopeTypeInvalid
    --           , argClosure = -1
    --           , argDestroy = -1
    --           , argCallerAllocates = False
    --           , argCallbackUserData = False
    --           , transfer = TransferNothing
    --           }
    --       , Arg
    --           { argCName = "acceleratable"
    --           , argType =
    --               TInterface Name { namespace = "GObject" , name = "Object" }
    --           , argCType = Just "GObject*"
    --           , direction = DirectionIn
    --           , mayBeNull = False
    --           , argDoc =
    --               Documentation { rawDocText = Nothing , sinceVersion = Nothing }
    --           , argScope = ScopeTypeInvalid
    --           , argClosure = -1
    --           , argDestroy = -1
    --           , argCallerAllocates = False
    --           , argCallbackUserData = False
    --           , transfer = TransferNothing
    --           }
    --       , Arg
    --           { argCName = "keyval"
    --           , argType = TBasicType TUInt
    --           , argCType = Just "guint"
    --           , direction = DirectionIn
    --           , mayBeNull = False
    --           , argDoc =
    --               Documentation { rawDocText = Nothing , sinceVersion = Nothing }
    --           , argScope = ScopeTypeInvalid
    --           , argClosure = -1
    --           , argDestroy = -1
    --           , argCallerAllocates = False
    --           , argCallbackUserData = False
    --           , transfer = TransferNothing
    --           }
    --       , Arg
    --           { argCName = "modifier"
    --           , argType =
    --               TInterface Name { namespace = "Gdk" , name = "ModifierType" }
    --           , argCType = Just "GdkModifierType"
    --           , direction = DirectionIn
    --           , mayBeNull = False
    --           , argDoc =
    --               Documentation { rawDocText = Nothing , sinceVersion = Nothing }
    --           , argScope = ScopeTypeInvalid
    --           , argClosure = -1
    --           , argDestroy = -1
    --           , argCallerAllocates = False
    --           , argCallbackUserData = False
    --           , transfer = TransferNothing
    --           }
    --       ]
    -- Lengths: []
    -- returnType: Just (TBasicType TBoolean)
    -- throws : False
    -- Skip return : False

    foreign import ccall "dynamic" __dynamic_C_AccelGroupActivate :: FunPtr C_AccelGroupActivate -> C_AccelGroupActivate

    -- | Given a pointer to a foreign C function, wrap it into a function callable from Haskell.
    dynamic_AccelGroupActivate ::
        (B.CallStack.HasCallStack, MonadIO m, Gtk.AccelGroup.IsAccelGroup a, GObject.Object.IsObject b) =>
        FunPtr C_AccelGroupActivate
        -> a
        -> b
        -> Word32
        -> [Gdk.Flags.ModifierType]
        -> m Bool
    dynamic_AccelGroupActivate :: forall (m :: * -> *) a b.
    (HasCallStack, MonadIO m, IsAccelGroup a, IsObject b) =>
    FunPtr C_AccelGroupActivate
    -> a -> b -> Word32 -> [ModifierType] -> m Bool
    dynamic_AccelGroupActivate FunPtr C_AccelGroupActivate
    __funPtr a
    accelGroup b
    acceleratable Word32
    keyval [ModifierType]
    modifier = IO Bool -> m Bool
    forall a. IO a -> m a
    forall (m :: * -> *) a. MonadIO m => IO a -> m a
    liftIO (IO Bool -> m Bool) -> IO Bool -> m Bool
    forall a b. (a -> b) -> a -> b
    $ do
        accelGroup' <- a -> IO (Ptr AccelGroup)
    forall a b. (HasCallStack, ManagedPtrNewtype a) => a -> IO (Ptr b)
    unsafeManagedPtrCastPtr a
    accelGroup
        acceleratable' <- unsafeManagedPtrCastPtr acceleratable
        let modifier' = [ModifierType] -> CUInt
    forall b a. (Num b, IsGFlag a) => [a] -> b
    gflagsToWord [ModifierType]
    modifier
        result <- (__dynamic_C_AccelGroupActivate __funPtr) accelGroup' acceleratable' keyval modifier'
        let result' = (CInt -> CInt -> Bool
    forall a. Eq a => a -> a -> Bool
    /= CInt
    0) CInt
    result
        touchManagedPtr accelGroup
        touchManagedPtr acceleratable
        return result'

    -- | Generate a function pointer callable from C code, from a `C_AccelGroupActivate`.
    foreign import ccall "wrapper"
        mk_AccelGroupActivate :: C_AccelGroupActivate -> IO (FunPtr C_AccelGroupActivate)

    -- | /No description available in the introspection data./
    type AccelGroupActivate =
        Gtk.AccelGroup.AccelGroup
        -> GObject.Object.Object
        -> Word32
        -> [Gdk.Flags.ModifierType]
        -> IO Bool

    -- | A convenience synonym for @`Nothing` :: `Maybe` `AccelGroupActivate`@.
    noAccelGroupActivate :: Maybe AccelGroupActivate
    noAccelGroupActivate :: Maybe AccelGroupActivate
    noAccelGroupActivate = Maybe AccelGroupActivate
    forall a. Maybe a
    Nothing

    -- | Wrap the callback into a `GClosure`.
    genClosure_AccelGroupActivate :: MonadIO m => AccelGroupActivate -> m (GClosure C_AccelGroupActivate)
    genClosure_AccelGroupActivate :: forall (m :: * -> *).
    MonadIO m =>
    AccelGroupActivate -> m (GClosure C_AccelGroupActivate)
    genClosure_AccelGroupActivate AccelGroupActivate
    cb = IO (GClosure C_AccelGroupActivate)
    -> m (GClosure C_AccelGroupActivate)
    forall a. IO a -> m a
    forall (m :: * -> *) a. MonadIO m => IO a -> m a
    liftIO (IO (GClosure C_AccelGroupActivate)
     -> m (GClosure C_AccelGroupActivate))
    -> IO (GClosure C_AccelGroupActivate)
    -> m (GClosure C_AccelGroupActivate)
    forall a b. (a -> b) -> a -> b
    $ do
        let cb' :: C_AccelGroupActivate
    cb' = Maybe (Ptr (FunPtr C_AccelGroupActivate))
    -> AccelGroupActivate -> C_AccelGroupActivate
    wrap_AccelGroupActivate Maybe (Ptr (FunPtr C_AccelGroupActivate))
    forall a. Maybe a
    Nothing AccelGroupActivate
    cb
        C_AccelGroupActivate -> IO (FunPtr C_AccelGroupActivate)
    mk_AccelGroupActivate C_AccelGroupActivate
    cb' IO (FunPtr C_AccelGroupActivate)
    -> (FunPtr C_AccelGroupActivate
        -> IO (GClosure C_AccelGroupActivate))
    -> IO (GClosure C_AccelGroupActivate)
    forall a b. IO a -> (a -> IO b) -> IO b
    forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
    >>= FunPtr C_AccelGroupActivate -> IO (GClosure C_AccelGroupActivate)
    forall (m :: * -> *) a. MonadIO m => FunPtr a -> m (GClosure a)
    B.GClosure.newGClosure

    -- | Wrap a `AccelGroupActivate` into a `C_AccelGroupActivate`.
    wrap_AccelGroupActivate ::
        Maybe (Ptr (FunPtr C_AccelGroupActivate)) ->
        AccelGroupActivate ->
        C_AccelGroupActivate
    wrap_AccelGroupActivate :: Maybe (Ptr (FunPtr C_AccelGroupActivate))
    -> AccelGroupActivate -> C_AccelGroupActivate
    wrap_AccelGroupActivate Maybe (Ptr (FunPtr C_AccelGroupActivate))
    gi'funptrptr AccelGroupActivate
    gi'cb Ptr AccelGroup
    accelGroup Ptr Object
    acceleratable Word32
    keyval CUInt
    modifier = do
        accelGroup' <- ((ManagedPtr AccelGroup -> AccelGroup)
    -> Ptr AccelGroup -> IO AccelGroup
    forall a b.
    (HasCallStack, GObject a, GObject b) =>
    (ManagedPtr a -> a) -> Ptr b -> IO a
    newObject ManagedPtr AccelGroup -> AccelGroup
    Gtk.AccelGroup.AccelGroup) Ptr AccelGroup
    accelGroup
        acceleratable' <- (newObject GObject.Object.Object) acceleratable
        let modifier' = CUInt -> [ModifierType]
    forall a b. (Storable a, Integral a, Bits a, IsGFlag b) => a -> [b]
    wordToGFlags CUInt
    modifier
        result <- gi'cb  accelGroup' acceleratable' keyval modifier'
        maybeReleaseFunPtr gi'funptrptr
        let result' = (Int -> CInt
    forall a b. (Integral a, Num b) => a -> b
    P.fromIntegral (Int -> CInt) -> (Bool -> Int) -> Bool -> CInt
    forall b c a. (b -> c) -> (a -> b) -> a -> c
    . Bool -> Int
    forall a. Enum a => a -> Int
    P.fromEnum) Bool
    result
        return result'