quote
$(Expr(:toplevel, quote
    begin
        gboxed_types = Any[]
    end
    begin
        struct _GskColorStop
            offset::Float32
            color::_GdkRGBA
        end
        mutable struct GskColorStop
            handle::Ptr{_GskColorStop}
        end
        unsafe_convert(::Type{Ptr{_GskColorStop}}, box::GskColorStop) = begin
                convert(Ptr{_GskColorStop}, box.handle)
            end
    end
    begin
        struct _GskParseLocation
            bytes::UInt64
            chars::UInt64
            lines::UInt64
            line_bytes::UInt64
            line_chars::UInt64
        end
        mutable struct GskParseLocation
            handle::Ptr{_GskParseLocation}
        end
        unsafe_convert(::Type{Ptr{_GskParseLocation}}, box::GskParseLocation) = begin
                convert(Ptr{_GskParseLocation}, box.handle)
            end
    end
    begin
        mutable struct GskRoundedRect
            handle::Ptr{GskRoundedRect}
        end
        const _GskRoundedRect = GskRoundedRect
    end
    mutable struct GskShaderArgsBuilder <: GBoxed
        handle::Ptr{GskShaderArgsBuilder}
        begin
            (GLib.g_type(::Type{T}) where T <: GskShaderArgsBuilder) = begin
                    ccall(("gsk_shader_args_builder_get_type", libgtk4), GType, ())
                end
            function GskShaderArgsBuilder(ref::Ptr{T}, own::Bool = false) where T <: GBoxed
                x = new(ref)
                if own
                    finalizer(x) do x
                        GLib.delboxed(x)
                    end
                end
                x
            end
            push!(gboxed_types, GskShaderArgsBuilder)
        end
    end
    begin
        struct _GskShadow
            color::_GdkRGBA
            dx::Float32
            dy::Float32
            radius::Float32
        end
        mutable struct GskShadow
            handle::Ptr{_GskShadow}
        end
        unsafe_convert(::Type{Ptr{_GskShadow}}, box::GskShadow) = begin
                convert(Ptr{_GskShadow}, box.handle)
            end
    end
    mutable struct GskTransform <: GBoxed
        handle::Ptr{GskTransform}
        begin
            (GLib.g_type(::Type{T}) where T <: GskTransform) = begin
                    ccall(("gsk_transform_get_type", libgtk4), GType, ())
                end
            function GskTransform(ref::Ptr{T}, own::Bool = false) where T <: GBoxed
                x = new(ref)
                if own
                    finalizer(x) do x
                        GLib.delboxed(x)
                    end
                end
                x
            end
            push!(gboxed_types, GskTransform)
        end
    end
    @doc "A color stop in a gradient node.\n \nDetails can be found in the [GTK docs](https://docs.gtk.org/gsk4/struct.ColorStop.html)." GskColorStop
    @doc "A location in a parse buffer.\n \nDetails can be found in the [GTK docs](https://docs.gtk.org/gsk4/struct.ParseLocation.html)." GskParseLocation
    @doc "A rectangular region with rounded corners.\n \nDetails can be found in the [GTK docs](https://docs.gtk.org/gsk4/struct.RoundedRect.html)." GskRoundedRect
    @doc "An object to build the uniforms data for a `GskGLShader`.\n \nDetails can be found in the [GTK docs](https://docs.gtk.org/gsk4/struct.ShaderArgsBuilder.html)." GskShaderArgsBuilder
    @doc "The shadow parameters in a shadow node.\n \nDetails can be found in the [GTK docs](https://docs.gtk.org/gsk4/struct.Shadow.html)." GskShadow
    @doc "`GskTransform` is an object to describe transform matrices.\n \nDetails can be found in the [GTK docs](https://docs.gtk.org/gsk4/struct.Transform.html)." GskTransform
    begin
        abstract type GskRenderer <: GObject end
        mutable struct GskRendererLeaf <: GskRenderer
            handle::Ptr{GObject}
            function GskRendererLeaf(handle::Ptr{GObject}, owns = false)
                if handle == C_NULL
                    error("Cannot construct GskRendererLeaf with a NULL pointer")
                end
                GLib.gobject_maybe_sink(handle, owns)
                return gobject_ref(new(handle))
            end
        end
        local kwargs
        function GskRendererLeaf(args...; kwargs...)
            w = GskRenderer(args...)
            setproperties!(w; kwargs...)
            w
        end
        gtype_wrapper_cache[:GskRenderer] = GskRendererLeaf
        function GskRenderer(args...; kwargs...)
            GskRendererLeaf(args...; kwargs...)
        end
    end
    begin
        abstract type GskBroadwayRenderer <: GskRenderer end
        mutable struct GskBroadwayRendererLeaf <: GskBroadwayRenderer
            handle::Ptr{GObject}
            function GskBroadwayRendererLeaf(handle::Ptr{GObject}, owns = false)
                if handle == C_NULL
                    error("Cannot construct GskBroadwayRendererLeaf with a NULL pointer")
                end
                GLib.gobject_maybe_sink(handle, owns)
                return gobject_ref(new(handle))
            end
        end
        local kwargs
        function GskBroadwayRendererLeaf(args...; kwargs...)
            w = GskBroadwayRenderer(args...)
            setproperties!(w; kwargs...)
            w
        end
        gtype_wrapper_cache[:GskBroadwayRenderer] = GskBroadwayRendererLeaf
        function GskBroadwayRenderer(args...; kwargs...)
            GskBroadwayRendererLeaf(args...; kwargs...)
        end
    end
    begin
        abstract type GskCairoRenderer <: GskRenderer end
        mutable struct GskCairoRendererLeaf <: GskCairoRenderer
            handle::Ptr{GObject}
            function GskCairoRendererLeaf(handle::Ptr{GObject}, owns = false)
                if handle == C_NULL
                    error("Cannot construct GskCairoRendererLeaf with a NULL pointer")
                end
                GLib.gobject_maybe_sink(handle, owns)
                return gobject_ref(new(handle))
            end
        end
        local kwargs
        function GskCairoRendererLeaf(args...; kwargs...)
            w = GskCairoRenderer(args...)
            setproperties!(w; kwargs...)
            w
        end
        gtype_wrapper_cache[:GskCairoRenderer] = GskCairoRendererLeaf
        function GskCairoRenderer(args...; kwargs...)
            GskCairoRendererLeaf(args...; kwargs...)
        end
    end
    begin
        abstract type GskGLRenderer <: GskRenderer end
        mutable struct GskGLRendererLeaf <: GskGLRenderer
            handle::Ptr{GObject}
            function GskGLRendererLeaf(handle::Ptr{GObject}, owns = false)
                if handle == C_NULL
                    error("Cannot construct GskGLRendererLeaf with a NULL pointer")
                end
                GLib.gobject_maybe_sink(handle, owns)
                return gobject_ref(new(handle))
            end
        end
        local kwargs
        function GskGLRendererLeaf(args...; kwargs...)
            w = GskGLRenderer(args...)
            setproperties!(w; kwargs...)
            w
        end
        gtype_wrapper_cache[:GskGLRenderer] = GskGLRendererLeaf
        function GskGLRenderer(args...; kwargs...)
            GskGLRendererLeaf(args...; kwargs...)
        end
    end
    begin
        abstract type GskGLShader <: GObject end
        mutable struct GskGLShaderLeaf <: GskGLShader
            handle::Ptr{GObject}
            function GskGLShaderLeaf(handle::Ptr{GObject}, owns = false)
                if handle == C_NULL
                    error("Cannot construct GskGLShaderLeaf with a NULL pointer")
                end
                GLib.gobject_maybe_sink(handle, owns)
                return gobject_ref(new(handle))
            end
        end
        local kwargs
        function GskGLShaderLeaf(args...; kwargs...)
            w = GskGLShader(args...)
            setproperties!(w; kwargs...)
            w
        end
        gtype_wrapper_cache[:GskGLShader] = GskGLShaderLeaf
        function GskGLShader(args...; kwargs...)
            GskGLShaderLeaf(args...; kwargs...)
        end
    end
    begin
        abstract type GskNglRenderer <: GskRenderer end
        mutable struct GskNglRendererLeaf <: GskNglRenderer
            handle::Ptr{GObject}
            function GskNglRendererLeaf(handle::Ptr{GObject}, owns = false)
                if handle == C_NULL
                    error("Cannot construct GskNglRendererLeaf with a NULL pointer")
                end
                GLib.gobject_maybe_sink(handle, owns)
                return gobject_ref(new(handle))
            end
        end
        local kwargs
        function GskNglRendererLeaf(args...; kwargs...)
            w = GskNglRenderer(args...)
            setproperties!(w; kwargs...)
            w
        end
        gtype_wrapper_cache[:GskNglRenderer] = GskNglRendererLeaf
        function GskNglRenderer(args...; kwargs...)
            GskNglRendererLeaf(args...; kwargs...)
        end
    end
    begin
        abstract type GskRenderNode end
        Base.convert(::Type{GskRenderNode}, ptr::Ptr{GskRenderNode}) = begin
                GskRenderNodeLeaf(ptr)
            end
        Base.unsafe_convert(::Type{Ptr{GskRenderNode}}, o::GskRenderNode) = begin
                o.handle
            end
    end
    begin
        mutable struct GskRenderNodeLeaf <: GskRenderNode
            handle::Ptr{GskRenderNode}
        end
    end
    @doc "A GSK renderer that is using cairo.\n \nDetails can be found in the [GTK docs](https://docs.gtk.org/gsk4/class.CairoRenderer.html)." GskCairoRenderer
    @doc "A `GskGLShader` is a snippet of GLSL that is meant to run in the\nfragment shader of the rendering pipeline.\n \nDetails can be found in the [GTK docs](https://docs.gtk.org/gsk4/class.GLShader.html)." GskGLShader
    @doc "`GskRenderNode` is the basic block in a scene graph to be\nrendered using [class@Gsk.Renderer].\n \nDetails can be found in the [GTK docs](https://docs.gtk.org/gsk4/class.RenderNode.html)." GskRenderNode
    @doc "`GskRenderer` is a class that renders a scene graph defined via a\ntree of [class@Gsk.RenderNode] instances.\n \nDetails can be found in the [GTK docs](https://docs.gtk.org/gsk4/class.Renderer.html)." GskRenderer
    export GskColorStop, _GskColorStop, GskParseLocation, _GskParseLocation, GskRoundedRect, _GskRoundedRect, GskShaderArgsBuilder, GskShadow, _GskShadow, GskTransform, GskBroadwayRenderer, GskCairoRenderer, GskGLRenderer, GskGLShader, GskNglRenderer, GskRenderNode, GskRenderer
end))
end
