pub type GThreadGarbageHandler = Option<unsafe extern "C" fn(data: gpointer)>;