How would clients use this object directly? I don't particularly like the idea of mixing GObject reference/lifetime semantics and lifetime of debug options, so maybe you could just use an opaque struct with an explicit function that will free it and invoke the callback, or even a `GClosure`? Maybe I'm just missing something.