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

    Zlib decompression
    -}

    #define ENABLE_OVERLOADING \
           (!defined(__HADDOCK_VERSION__))

    module GI.Gio.Objects.ZlibCompressor
        (

    -- * Exported types
        ZlibCompressor(..)                      ,
        IsZlibCompressor                        ,
        toZlibCompressor                        ,
        noZlibCompressor                        ,

     -- * Methods
    -- ** getFileInfo #method:getFileInfo#

    #if ENABLE_OVERLOADING
        ZlibCompressorGetFileInfoMethodInfo     ,
    #endif
        zlibCompressorGetFileInfo               ,

    -- ** new #method:new#

        zlibCompressorNew                       ,

    -- ** setFileInfo #method:setFileInfo#

    #if ENABLE_OVERLOADING
        ZlibCompressorSetFileInfoMethodInfo     ,
    #endif
        zlibCompressorSetFileInfo               ,

     -- * Properties
    -- ** fileInfo #attr:fileInfo#
    {- | If set to a non-'Nothing' 'GI.Gio.Objects.FileInfo.FileInfo' object, and 'GI.Gio.Objects.ZlibCompressor.ZlibCompressor':@/format/@ is
    'GI.Gio.Enums.ZlibCompressorFormatGzip', the compressor will write the file name
    and modification time from the file info to the GZIP header.

    /Since: 2.26/
    -}
    #if ENABLE_OVERLOADING
        ZlibCompressorFileInfoPropertyInfo      ,
    #endif
        clearZlibCompressorFileInfo             ,
        constructZlibCompressorFileInfo         ,
        getZlibCompressorFileInfo               ,
        setZlibCompressorFileInfo               ,
    #if ENABLE_OVERLOADING
        zlibCompressorFileInfo                  ,
    #endif

    -- ** format #attr:format#
    {- | /No description available in the introspection data./
    -}
    #if ENABLE_OVERLOADING
        ZlibCompressorFormatPropertyInfo        ,
    #endif
        constructZlibCompressorFormat           ,
        getZlibCompressorFormat                 ,
    #if ENABLE_OVERLOADING
        zlibCompressorFormat                    ,
    #endif

    -- ** level #attr:level#
    {- | /No description available in the introspection data./
    -}
    #if ENABLE_OVERLOADING
        ZlibCompressorLevelPropertyInfo         ,
    #endif
        constructZlibCompressorLevel            ,
        getZlibCompressorLevel                  ,
    #if ENABLE_OVERLOADING
        zlibCompressorLevel                     ,
    #endif

        ) where

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

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

    import qualified GI.GObject.Objects.Object as GObject.Object
    import {-# SOURCE #-} qualified GI.Gio.Enums as Gio.Enums
    import {-# SOURCE #-} qualified GI.Gio.Interfaces.Converter as Gio.Converter
    import {-# SOURCE #-} qualified GI.Gio.Objects.FileInfo as Gio.FileInfo

    -- | Memory-managed wrapper type.
    newtype ZlibCompressor = ZlibCompressor (ManagedPtr ZlibCompressor)
    foreign import ccall "g_zlib_compressor_get_type"
        c_g_zlib_compressor_get_type :: IO GType

    instance GObject ZlibCompressor where
        gobjectType _ = c_g_zlib_compressor_get_type

    -- | Type class for types which can be safely cast to `ZlibCompressor`, for instance with `toZlibCompressor`.
    class GObject o => IsZlibCompressor o
    #if MIN_VERSION_base(4,9,0)
    instance {-# OVERLAPPABLE #-} (GObject a, O.UnknownAncestorError ZlibCompressor a) =>
        IsZlibCompressor a
    #endif
    instance IsZlibCompressor ZlibCompressor
    instance GObject.Object.IsObject ZlibCompressor
    instance Gio.Converter.IsConverter ZlibCompressor

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

    -- | A convenience alias for `Nothing` :: `Maybe` `ZlibCompressor`.
    noZlibCompressor :: Maybe ZlibCompressor
    noZlibCompressor = Nothing

    #if ENABLE_OVERLOADING
    type family ResolveZlibCompressorMethod (t :: Symbol) (o :: *) :: * where
        ResolveZlibCompressorMethod "bindProperty" o = GObject.Object.ObjectBindPropertyMethodInfo
        ResolveZlibCompressorMethod "bindPropertyFull" o = GObject.Object.ObjectBindPropertyFullMethodInfo
        ResolveZlibCompressorMethod "convert" o = Gio.Converter.ConverterConvertMethodInfo
        ResolveZlibCompressorMethod "forceFloating" o = GObject.Object.ObjectForceFloatingMethodInfo
        ResolveZlibCompressorMethod "freezeNotify" o = GObject.Object.ObjectFreezeNotifyMethodInfo
        ResolveZlibCompressorMethod "getv" o = GObject.Object.ObjectGetvMethodInfo
        ResolveZlibCompressorMethod "isFloating" o = GObject.Object.ObjectIsFloatingMethodInfo
        ResolveZlibCompressorMethod "notify" o = GObject.Object.ObjectNotifyMethodInfo
        ResolveZlibCompressorMethod "notifyByPspec" o = GObject.Object.ObjectNotifyByPspecMethodInfo
        ResolveZlibCompressorMethod "ref" o = GObject.Object.ObjectRefMethodInfo
        ResolveZlibCompressorMethod "refSink" o = GObject.Object.ObjectRefSinkMethodInfo
        ResolveZlibCompressorMethod "reset" o = Gio.Converter.ConverterResetMethodInfo
        ResolveZlibCompressorMethod "runDispose" o = GObject.Object.ObjectRunDisposeMethodInfo
        ResolveZlibCompressorMethod "stealData" o = GObject.Object.ObjectStealDataMethodInfo
        ResolveZlibCompressorMethod "stealQdata" o = GObject.Object.ObjectStealQdataMethodInfo
        ResolveZlibCompressorMethod "thawNotify" o = GObject.Object.ObjectThawNotifyMethodInfo
        ResolveZlibCompressorMethod "unref" o = GObject.Object.ObjectUnrefMethodInfo
        ResolveZlibCompressorMethod "watchClosure" o = GObject.Object.ObjectWatchClosureMethodInfo
        ResolveZlibCompressorMethod "getData" o = GObject.Object.ObjectGetDataMethodInfo
        ResolveZlibCompressorMethod "getFileInfo" o = ZlibCompressorGetFileInfoMethodInfo
        ResolveZlibCompressorMethod "getProperty" o = GObject.Object.ObjectGetPropertyMethodInfo
        ResolveZlibCompressorMethod "getQdata" o = GObject.Object.ObjectGetQdataMethodInfo
        ResolveZlibCompressorMethod "setData" o = GObject.Object.ObjectSetDataMethodInfo
        ResolveZlibCompressorMethod "setFileInfo" o = ZlibCompressorSetFileInfoMethodInfo
        ResolveZlibCompressorMethod "setProperty" o = GObject.Object.ObjectSetPropertyMethodInfo
        ResolveZlibCompressorMethod l o = O.MethodResolutionFailed l o

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

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

    #endif

    -- VVV Prop "file-info"
       -- Type: TInterface (Name {namespace = "Gio", name = "FileInfo"})
       -- Flags: [PropertyReadable,PropertyWritable]
       -- Nullable: (Just False,Just True)

    {- |
    Get the value of the “@file-info@” property.
    When <https://github.com/haskell-gi/haskell-gi/wiki/Overloading overloading> is enabled, this is equivalent to

    @
    'Data.GI.Base.Attributes.get' zlibCompressor #fileInfo
    @
    -}
    getZlibCompressorFileInfo :: (MonadIO m, IsZlibCompressor o) => o -> m Gio.FileInfo.FileInfo
    getZlibCompressorFileInfo obj = liftIO $ checkUnexpectedNothing "getZlibCompressorFileInfo" $ getObjectPropertyObject obj "file-info" Gio.FileInfo.FileInfo

    {- |
    Set the value of the “@file-info@” property.
    When <https://github.com/haskell-gi/haskell-gi/wiki/Overloading overloading> is enabled, this is equivalent to

    @
    'Data.GI.Base.Attributes.set' zlibCompressor [ #fileInfo 'Data.GI.Base.Attributes.:=' value ]
    @
    -}
    setZlibCompressorFileInfo :: (MonadIO m, IsZlibCompressor o, Gio.FileInfo.IsFileInfo a) => o -> a -> m ()
    setZlibCompressorFileInfo obj val = liftIO $ setObjectPropertyObject obj "file-info" (Just val)

    {- |
    Construct a `GValueConstruct` with valid value for the “@file-info@” property. This is rarely needed directly, but it is used by `Data.GI.Base.Constructible.new`.
    -}
    constructZlibCompressorFileInfo :: (IsZlibCompressor o, Gio.FileInfo.IsFileInfo a) => a -> IO (GValueConstruct o)
    constructZlibCompressorFileInfo val = constructObjectPropertyObject "file-info" (Just val)

    {- |
    Set the value of the “@file-info@” property to `Nothing`.
    When <https://github.com/haskell-gi/haskell-gi/wiki/Overloading overloading> is enabled, this is equivalent to

    @
    'Data.GI.Base.Attributes.clear' #fileInfo
    @
    -}
    clearZlibCompressorFileInfo :: (MonadIO m, IsZlibCompressor o) => o -> m ()
    clearZlibCompressorFileInfo obj = liftIO $ setObjectPropertyObject obj "file-info" (Nothing :: Maybe Gio.FileInfo.FileInfo)

    #if ENABLE_OVERLOADING
    data ZlibCompressorFileInfoPropertyInfo
    instance AttrInfo ZlibCompressorFileInfoPropertyInfo where
        type AttrAllowedOps ZlibCompressorFileInfoPropertyInfo = '[ 'AttrSet, 'AttrConstruct, 'AttrGet, 'AttrClear]
        type AttrSetTypeConstraint ZlibCompressorFileInfoPropertyInfo = Gio.FileInfo.IsFileInfo
        type AttrBaseTypeConstraint ZlibCompressorFileInfoPropertyInfo = IsZlibCompressor
        type AttrGetType ZlibCompressorFileInfoPropertyInfo = Gio.FileInfo.FileInfo
        type AttrLabel ZlibCompressorFileInfoPropertyInfo = "file-info"
        type AttrOrigin ZlibCompressorFileInfoPropertyInfo = ZlibCompressor
        attrGet _ = getZlibCompressorFileInfo
        attrSet _ = setZlibCompressorFileInfo
        attrConstruct _ = constructZlibCompressorFileInfo
        attrClear _ = clearZlibCompressorFileInfo
    #endif

    -- VVV Prop "format"
       -- Type: TInterface (Name {namespace = "Gio", name = "ZlibCompressorFormat"})
       -- Flags: [PropertyReadable,PropertyWritable,PropertyConstructOnly]
       -- Nullable: (Nothing,Nothing)

    {- |
    Get the value of the “@format@” property.
    When <https://github.com/haskell-gi/haskell-gi/wiki/Overloading overloading> is enabled, this is equivalent to

    @
    'Data.GI.Base.Attributes.get' zlibCompressor #format
    @
    -}
    getZlibCompressorFormat :: (MonadIO m, IsZlibCompressor o) => o -> m Gio.Enums.ZlibCompressorFormat
    getZlibCompressorFormat obj = liftIO $ getObjectPropertyEnum obj "format"

    {- |
    Construct a `GValueConstruct` with valid value for the “@format@” property. This is rarely needed directly, but it is used by `Data.GI.Base.Constructible.new`.
    -}
    constructZlibCompressorFormat :: (IsZlibCompressor o) => Gio.Enums.ZlibCompressorFormat -> IO (GValueConstruct o)
    constructZlibCompressorFormat val = constructObjectPropertyEnum "format" val

    #if ENABLE_OVERLOADING
    data ZlibCompressorFormatPropertyInfo
    instance AttrInfo ZlibCompressorFormatPropertyInfo where
        type AttrAllowedOps ZlibCompressorFormatPropertyInfo = '[ 'AttrConstruct, 'AttrGet]
        type AttrSetTypeConstraint ZlibCompressorFormatPropertyInfo = (~) Gio.Enums.ZlibCompressorFormat
        type AttrBaseTypeConstraint ZlibCompressorFormatPropertyInfo = IsZlibCompressor
        type AttrGetType ZlibCompressorFormatPropertyInfo = Gio.Enums.ZlibCompressorFormat
        type AttrLabel ZlibCompressorFormatPropertyInfo = "format"
        type AttrOrigin ZlibCompressorFormatPropertyInfo = ZlibCompressor
        attrGet _ = getZlibCompressorFormat
        attrSet _ = undefined
        attrConstruct _ = constructZlibCompressorFormat
        attrClear _ = undefined
    #endif

    -- VVV Prop "level"
       -- Type: TBasicType TInt
       -- Flags: [PropertyReadable,PropertyWritable,PropertyConstructOnly]
       -- Nullable: (Nothing,Nothing)

    {- |
    Get the value of the “@level@” property.
    When <https://github.com/haskell-gi/haskell-gi/wiki/Overloading overloading> is enabled, this is equivalent to

    @
    'Data.GI.Base.Attributes.get' zlibCompressor #level
    @
    -}
    getZlibCompressorLevel :: (MonadIO m, IsZlibCompressor o) => o -> m Int32
    getZlibCompressorLevel obj = liftIO $ getObjectPropertyInt32 obj "level"

    {- |
    Construct a `GValueConstruct` with valid value for the “@level@” property. This is rarely needed directly, but it is used by `Data.GI.Base.Constructible.new`.
    -}
    constructZlibCompressorLevel :: (IsZlibCompressor o) => Int32 -> IO (GValueConstruct o)
    constructZlibCompressorLevel val = constructObjectPropertyInt32 "level" val

    #if ENABLE_OVERLOADING
    data ZlibCompressorLevelPropertyInfo
    instance AttrInfo ZlibCompressorLevelPropertyInfo where
        type AttrAllowedOps ZlibCompressorLevelPropertyInfo = '[ 'AttrConstruct, 'AttrGet]
        type AttrSetTypeConstraint ZlibCompressorLevelPropertyInfo = (~) Int32
        type AttrBaseTypeConstraint ZlibCompressorLevelPropertyInfo = IsZlibCompressor
        type AttrGetType ZlibCompressorLevelPropertyInfo = Int32
        type AttrLabel ZlibCompressorLevelPropertyInfo = "level"
        type AttrOrigin ZlibCompressorLevelPropertyInfo = ZlibCompressor
        attrGet _ = getZlibCompressorLevel
        attrSet _ = undefined
        attrConstruct _ = constructZlibCompressorLevel
        attrClear _ = undefined
    #endif

    #if ENABLE_OVERLOADING
    instance O.HasAttributeList ZlibCompressor
    type instance O.AttributeList ZlibCompressor = ZlibCompressorAttributeList
    type ZlibCompressorAttributeList = ('[ '("fileInfo", ZlibCompressorFileInfoPropertyInfo), '("format", ZlibCompressorFormatPropertyInfo), '("level", ZlibCompressorLevelPropertyInfo)] :: [(Symbol, *)])
    #endif

    #if ENABLE_OVERLOADING
    zlibCompressorFileInfo :: AttrLabelProxy "fileInfo"
    zlibCompressorFileInfo = AttrLabelProxy

    zlibCompressorFormat :: AttrLabelProxy "format"
    zlibCompressorFormat = AttrLabelProxy

    zlibCompressorLevel :: AttrLabelProxy "level"
    zlibCompressorLevel = AttrLabelProxy

    #endif

    #if ENABLE_OVERLOADING
    type instance O.SignalList ZlibCompressor = ZlibCompressorSignalList
    type ZlibCompressorSignalList = ('[ '("notify", GObject.Object.ObjectNotifySignalInfo)] :: [(Symbol, *)])

    #endif

    -- method ZlibCompressor::new
    -- method type : Constructor
    -- Args : [Arg {argCName = "format", argType = TInterface (Name {namespace = "Gio", name = "ZlibCompressorFormat"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "The format to use for the compressed data", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "level", argType = TBasicType TInt, direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "compression level (0-9), -1 for default", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
    -- Lengths : []
    -- returnType : Just (TInterface (Name {namespace = "Gio", name = "ZlibCompressor"}))
    -- throws : False
    -- Skip return : False

    foreign import ccall "g_zlib_compressor_new" g_zlib_compressor_new ::
        CUInt ->                                -- format : TInterface (Name {namespace = "Gio", name = "ZlibCompressorFormat"})
        Int32 ->                                -- level : TBasicType TInt
        IO (Ptr ZlibCompressor)

    {- |
    Creates a new 'GI.Gio.Objects.ZlibCompressor.ZlibCompressor'.

    /Since: 2.24/
    -}
    zlibCompressorNew ::
        (B.CallStack.HasCallStack, MonadIO m) =>
        Gio.Enums.ZlibCompressorFormat
        {- ^ /@format@/: The format to use for the compressed data -}
        -> Int32
        {- ^ /@level@/: compression level (0-9), -1 for default -}
        -> m ZlibCompressor
        {- ^ __Returns:__ a new 'GI.Gio.Objects.ZlibCompressor.ZlibCompressor' -}
    zlibCompressorNew format level = liftIO $ do
        let format' = (fromIntegral . fromEnum) format
        result <- g_zlib_compressor_new format' level
        checkUnexpectedReturnNULL "zlibCompressorNew" result
        result' <- (wrapObject ZlibCompressor) result
        return result'

    #if ENABLE_OVERLOADING
    #endif

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

    foreign import ccall "g_zlib_compressor_get_file_info" g_zlib_compressor_get_file_info ::
        Ptr ZlibCompressor ->                   -- compressor : TInterface (Name {namespace = "Gio", name = "ZlibCompressor"})
        IO (Ptr Gio.FileInfo.FileInfo)

    {- |
    Returns the 'GI.Gio.Objects.ZlibCompressor.ZlibCompressor':@/file-info/@ property.

    /Since: 2.26/
    -}
    zlibCompressorGetFileInfo ::
        (B.CallStack.HasCallStack, MonadIO m, IsZlibCompressor a) =>
        a
        {- ^ /@compressor@/: a 'GI.Gio.Objects.ZlibCompressor.ZlibCompressor' -}
        -> m Gio.FileInfo.FileInfo
        {- ^ __Returns:__ a 'GI.Gio.Objects.FileInfo.FileInfo', or 'Nothing' -}
    zlibCompressorGetFileInfo compressor = liftIO $ do
        compressor' <- unsafeManagedPtrCastPtr compressor
        result <- g_zlib_compressor_get_file_info compressor'
        checkUnexpectedReturnNULL "zlibCompressorGetFileInfo" result
        result' <- (newObject Gio.FileInfo.FileInfo) result
        touchManagedPtr compressor
        return result'

    #if ENABLE_OVERLOADING
    data ZlibCompressorGetFileInfoMethodInfo
    instance (signature ~ (m Gio.FileInfo.FileInfo), MonadIO m, IsZlibCompressor a) => O.MethodInfo ZlibCompressorGetFileInfoMethodInfo a signature where
        overloadedMethod _ = zlibCompressorGetFileInfo

    #endif

    -- method ZlibCompressor::set_file_info
    -- method type : OrdinaryMethod
    -- Args : [Arg {argCName = "compressor", argType = TInterface (Name {namespace = "Gio", name = "ZlibCompressor"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #GZlibCompressor", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "file_info", argType = TInterface (Name {namespace = "Gio", name = "FileInfo"}), direction = DirectionIn, mayBeNull = True, argDoc = Documentation {rawDocText = Just "a #GFileInfo", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
    -- Lengths : []
    -- returnType : Nothing
    -- throws : False
    -- Skip return : False

    foreign import ccall "g_zlib_compressor_set_file_info" g_zlib_compressor_set_file_info ::
        Ptr ZlibCompressor ->                   -- compressor : TInterface (Name {namespace = "Gio", name = "ZlibCompressor"})
        Ptr Gio.FileInfo.FileInfo ->            -- file_info : TInterface (Name {namespace = "Gio", name = "FileInfo"})
        IO ()

    {- |
    Sets /@fileInfo@/ in /@compressor@/. If non-'Nothing', and /@compressor@/\'s
    'GI.Gio.Objects.ZlibCompressor.ZlibCompressor':@/format/@ property is 'GI.Gio.Enums.ZlibCompressorFormatGzip',
    it will be used to set the file name and modification time in
    the GZIP header of the compressed data.

    Note: it is an error to call this function while a compression is in
    progress; it may only be called immediately after creation of /@compressor@/,
    or after resetting it with 'GI.Gio.Interfaces.Converter.converterReset'.

    /Since: 2.26/
    -}
    zlibCompressorSetFileInfo ::
        (B.CallStack.HasCallStack, MonadIO m, IsZlibCompressor a, Gio.FileInfo.IsFileInfo b) =>
        a
        {- ^ /@compressor@/: a 'GI.Gio.Objects.ZlibCompressor.ZlibCompressor' -}
        -> Maybe (b)
        {- ^ /@fileInfo@/: a 'GI.Gio.Objects.FileInfo.FileInfo' -}
        -> m ()
    zlibCompressorSetFileInfo compressor fileInfo = liftIO $ do
        compressor' <- unsafeManagedPtrCastPtr compressor
        maybeFileInfo <- case fileInfo of
            Nothing -> return nullPtr
            Just jFileInfo -> do
                jFileInfo' <- unsafeManagedPtrCastPtr jFileInfo
                return jFileInfo'
        g_zlib_compressor_set_file_info compressor' maybeFileInfo
        touchManagedPtr compressor
        whenJust fileInfo touchManagedPtr
        return ()

    #if ENABLE_OVERLOADING
    data ZlibCompressorSetFileInfoMethodInfo
    instance (signature ~ (Maybe (b) -> m ()), MonadIO m, IsZlibCompressor a, Gio.FileInfo.IsFileInfo b) => O.MethodInfo ZlibCompressorSetFileInfoMethodInfo a signature where
        overloadedMethod _ = zlibCompressorSetFileInfo

    #endif